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

科技资讯 投稿 4600 0 评论

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

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

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

    首先,复制项目

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

  1. npm install
    
  2. npm run dev
    

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

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

  2. ... ... ... ..。

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

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

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

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

  3. dodrio-data-gen.py后,会在目录下生成如下所示的这些文件:

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

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

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

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

Step 2. 安装依赖

npm install

Step 3. 检查你的环境

Transformers==3.3.1,然后,安装一些必要的Python包,缺啥补啥,这个没什么好说的,注意要安装umap-learn而不是umap

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

点击查看代码
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文件,那么你会发现其同级目录下多出了这些文件:

dodrio/public/data下。

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

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

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

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

赞同 (23) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽