劲(很)霸(不)酷(好)炫(用)的NLP可视化包:Dodorio 使用指北

朋友们,朋友们,事情是这样的。最近心血来潮,突然想起很久以前看过的一个NLP可视化包。它的效果是下面这个样子:

劲(很)霸(不)酷(好)炫(用)的NLP可视化包:Dodorio 使用指北

在此之前,已经有一些文章从论文的角度对这个包进行了介绍,详情请见

推荐一个可交互的 Attention 可视化工具!我的Transformer可解释性有救啦?

当时我第一眼就被这个包的效果折服了,想着这么有意思的东西,我高低得去试一试,于是我怀着好奇的心点进了这个项目的github主页,作者给出的使用介绍很简单:

  1. 首先,复制项目

    git clone git@github.com:poloclub/dodrio.git

  2. 然后,进入项目目录,安装依赖

    npm install

  3. 最后,直接运行即可

    npm run dev

该项目会默认在localhost:5000创建一个本地服务,一旦运行完成且数据无误,就可以在本地看到上面炫酷的界面。

但事情远远没有那么简单,作者提供的模型只能解释其预先选择好的模型与数据集,要想真正用到自己的项目上,还需要对项目进行一定程度的客制化。于是大约在一年前,我尝试按照作者写在Readme中的方法,尝试将自己的模型与自己的数据集使用这个包进行可视化。殊不知,这对于我来说是噩梦的开始。在实验过程中,我遇到的困难包括且不仅限于以下几点:

  1. 该项目需要安装许多的依赖包,许多包存在着过期、更新等问题。同时,在本地部署时还会由于网络问题导致许多依赖无法正常安装。最重要的是,由于该包使用的Transformers版本是3.3.1,Python版本高于3.7将无法正常地安装与使用。

  2. 在远程服务器(例如Google Colab)等部署时,就不用担心出现网络问题导致的安装依赖失败,但由于服务是部署在本地,所以还需要使用nagrok、localtunnel等工具进行映射。

  3. 在data-generation.py中,除了修改模型与数据集外,一些函数的用法与位置也发生了改变,因此需要自己慢慢摸索与调试。

  4. ... ... ... ...

总之,之前尝试了很久之后还是没有结果,遂放弃。但是最近机缘巧合之中又接触到了这个包,恰逢《灌篮高手》上映,满腔热血无处释放,遂决定与这个磨人的包一教高下。

直言结论,仍然可以使用,并且可以针对本地模型与本地数据集进行客制化,以下列举调试过程中的一些重点:

  1. 首先确保环境中的Transformers==3.3.1,其次,请pip install umap-learn而不是pip install umap,并在dodrio-data-gen.py的开头使用import umap.umap_ as umap代替import umap

  2. 代码中存在大量的从checkpoint中导入模型,请根据实际需求注释掉或修改路径。

  3. 在运行dodrio-data-gen.py前,要先在其同级目录下创建outputs文件夹,同时,在outputs文件夹下创建你的模型名-attention-data文件夹(用来储存attention权重)

  4. 在运行dodrio-data-gen.py时,可能会遇到各种各样的报错,对此,耐心寻找原因,都不难改。

  5. 成功运行完dodrio-data-gen.py后,会在目录下生成如下所示的这些文件:
    image

  6. 最重要的是!!!!!!!项目从json文件中抽取数据时,在多个svelte文件中默认选择第1562个元素,但大多数情况下你的数据集中不一定有第1562项,因此你需要去多个文件中手动修改(当然也可以通过写config文件修改,但我是java小白,所以烦请大佬指导)

处理完以上这些步骤,就可以生成基于你自己模型与数据集的炫酷可视化图像了,效果如下:

劲(很)霸(不)酷(好)炫(用)的NLP可视化包:Dodorio 使用指北

## 好了,说了那么多,如果还是看不懂怎么办,这里附上我自己的傻瓜式教程:

Step 1. 下载项目(或者直接使用远程服务器也可以)

git clone git@github.com:poloclub/dodrio.git

Step 2. 安装依赖

npm install

Step 3. 检查你的环境

首先,要保证Python版本最好不大于3.7,以便安装Transformers==3.3.1,然后,安装一些必要的Python包,缺啥补啥,这个没什么好说的,注意要安装umap-learn而不是umap

Step 4. 进入dodrio文件夹修改data-generation/dodorio-data-gen.py文件:

首先,line65、line66、line71,line73分别修改你的标签数量、标签名、数据集名、要加载的Tokenizer;其次,line876左右,修改你的数据集地址,最好按照原数据集格式对你的数据集进行处理,我是这样做的:

点击查看代码
dataset_test = load_dataset('seamew/ChnSentiCorp', split='train[:20%]')
dataset_test = dataset_test.rename_columns({"text": "sentence"})
idx = range(len(dataset_test))
dataset_test = dataset_test.add_column("idx", idx)

其次,在dodorio-data-gen.py中,有许多:

点击查看代码
checkpoint = torch.load('./outputs/saved-bert-'  + dataset_name + '.pt')
my_model.load_state_dict(checkpoint['model'])

如果你本地有checkpoint,那么就改成你自己的地址,如果没有,就直接注释掉,代码中有较多处,建议直接搜索并修改。

Step 5. 在运行dodrio-data-gen.py前,要先在其同级目录下创建outputs文件夹,同时,在outputs文件夹下创建你的模型名-attention-data文件夹(用来储存attention权重)。到这里为止,你应该已经成功运行完了dodrio-data-gen.py文件,那么你会发现其同级目录下多出了这些文件:
image

然后,将生成的所有文件以及所有文件夹移到dodrio/public/data下。

Step 6. 然后,最重要的一步,打开dodrio/Main.svelte,修改文件中的文件路径(与你上一步中生成的文件名称对应):
image

Step 7. 恭喜你到了这一步,接下来,要修改这个粗心作者犯下的错误。在项目中,作者将示例文件的ID固定成了1562,但往往我们使用的样本并没有1562这个样本,于是请你点击进入longest-300-id.json文件中,查看你的数据集包含哪些样本,及其ID为多少,选择一个你想测试的句子,记住它的ID。这里我假设想要测试的句子ID为1。、

去github中搜索所有存在Instence以及1562的字段,然后将所有的1562替换成1即可。

原文链接:https://www.cnblogs.com/LAKan/p/17336902.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:劲(很)霸(不)酷(好)炫(用)的NLP可视化包:Dodorio 使用指北 - Python技术站

(0)
上一篇 2023年4月25日
下一篇 2023年4月25日

相关文章

  • 《基于深度学习的显著性目标检测综述》阅读笔记

    目录 基本信息 说明 主要收获 摘要 1 引言 2 基于深度学习的显著性目标检测方法 2.1 基于边界/语义增强的SOD 2.1.1 基于边界增强的SOD方法 2.1.2 基于语义增强的SOD方法 2.1.3 基于边界/语义增强的SOD方法 2.2 基于全局/局部结合的SOD 2.3 基于辅助网络的SOD 2.4 不同类型SOD方法分析比较 3 常用数据集及…

    目标检测 2023年4月8日
    00
  • 初学RNN(循环神经网络)

    为什么需要RNN 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y。将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特定的y。 其他神经网络前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。通常用在自然语言处理领域中,…

    2023年4月8日
    00
  • 转:25个Java机器学习工具和库

    转自:http://www.cnblogs.com/data2value/p/5419864.html 本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法。这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用。Weka包括一系列的工具,如数据预处理、分类、回归、聚类、关联规则以及可视化。 2.Mas…

    机器学习 2023年4月13日
    00
  • KL散度理解以及使用pytorch计算KL散度

    KL散度理解以及使用pytorch计算KL散度 计算例子:  

    2023年4月7日
    00
  • 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)

    一、卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络。使用数层卷积,而不是数层的矩阵相乘。在图像的处理过程中,每一张图片都可以看成一张“薄饼”,其中包括了图片的高度、宽度和深度(即颜色,用RGB表示)。 在不改变权重的情况下,把这个上方具有k个输出的小神经网络对应的小块滑遍整个图像,可以得到一个…

    2023年4月8日
    00
  • 【BZOJ4555】【TJOI2016】【HEOI2016】求和 (第二类斯特林数+NTT卷积)

    Description 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心。 现在他想计算这样一个函数的值: $$f(n)=\sum_{i=0}^n\sum_{j=0}^i S(i,j)\times 2^j\times(j!)$$ $S(i,j)$表示第二类斯特林数,递推公式为:$S(i,j)=j\times S(i-1,j)+S(i-1,j-1),1…

    卷积神经网络 2023年4月7日
    00
  • 大盘点!CVPR 2020目标检测论文精选

    本文为学习笔记 参与:王博kings,Sophia 最近结束的CVPR 2020在推动物体检测方面做出了巨大贡献。在本文中,我们将介绍一些特别令人印象深刻的论文。 1、A Hierarchical Graph Network for 3D Object Detection on Point Clouds(用于点云3D目标检测的分层图网络) HGNet包含三个…

    2023年4月8日
    00
  • 教会你使用AI绘画利器Stable Diffusion

    随着 stable-diffusion 的开源,让更多人有机会直接参与到 AI 绘画的创作中,相关的教程也如雨后春笋般的出现。可是目前我看到的教程同质性较高,通常只能称作为”使用流程讲解”,但是通常没有对其原理和逻辑进行深入说明。 所以本文的目的,是用尽可能少的废话,给大家补充一些重要的相关知识。对于”怎么用”这类的问题,通常有别人已经讲解过,我就不会过多赘…

    人工智能概论 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部