Aspect-Level Sentiment Analysis Via Convolution over Dependency Tree 源码复现
Aspect-Level Sentiment Analysis Via Convolution over Dependency Tree 源码复现

Aspect-Level Sentiment Analysis Via Convolution over Dependency Tree 源码复现


论文是 Aspect-Level Sentiment Analysis Via Convolution over Dependency Tree,于2019年发表在EMNLP。

源码地址:https://github.com/Guangzidetiaoyue/CDT_ABSA

复现这篇论文源码的时候,走了很多弯路,故在此总结,给出快速而详细的解决方法。

10系显卡解决步骤

首先,10系显卡不局限于GTX1050至GTX1080ti,同时也包括诸如GTX1650\GTX1660等甜品卡。

源码中的环境要求是:

  • Python 3.6.8
  • PyTorch 1.0.0
  • CUDA 9.0

在anaconda中创建Python=3.6.8的虚拟环境。由于官方已经没有pytorch=1.0.0的安装命令,我们采用本地安装的方式。

安装教程:https://zhuanlan.zhihu.com/p/636607358

根据上面的教程依次安装torch和torchvision,并在虚拟环境中进行torch、cuda和cudnn的可用性测试。这里测试出cuda版本是10.0不要紧,仍能运行,因为笔者也是一样。

之后在pycharm中clone项目,选择刚刚创建好的虚拟环境,运行train.py,查看报错,预计会有3-4次缺包报错,缺什么包安装什么包即可。但是,在安装gensim包的时候,很有可能会报Microsoft Visual C++ 14.0 or greater is required的错误。

解决教程:https://zhuanlan.zhihu.com/p/471661231

根据上面的教程下载 Visual C++ Build Tools for Visual Studio 2015 with Update 3 的 DVD 文件(千万注意是DVD文件)。

继续安装gensim包即可成功,顺带将其他缺省包也下载好。

经过上面两步后,根据源码文件中 README.md 文件运行即可。注:.sh文件可在pycharm中指定git bush命令行运行。

40系显卡解决步骤

一开始笔者用40系显卡也是按照上述方式安装,但会运行超时后报错,一般会卡在下面这个位置:


运行不成功的原因是,40系显卡最低支持cuda11.3,所以不管是源码需求的cuda9.0还是10.0,40系显卡都不支持,跑代码跑不到GPU上,cuda使用率为0:


解决方法:

首先,在anaconda中创建Python=3.6.8的虚拟环境,之后在pytorch官网上用conda方式下载稳定的版本:


这里这么选择就可以,先不要问为什么,因为笔者是这样做的且成功了,后面会解释。另外,如果日后可能cuda会有更高版本,没有11.8的版本选择,选择最低的应该就可以。

安装好pytorch之后,查看cuda版本,会发现cuda版本自动变成了11.3。这里猜测可能是和python=3.6.8有关,自动降低了。


接着在此虚拟环境中进行torch、cuda和cudnn的可用性测试。参照:https://zhuanlan.zhihu.com/p/636607358 中测试步骤即可。

之后在pycharm中clone项目,选择刚刚创建好的虚拟环境,运行train.py,查看报错,预计会有3-4次缺包报错,缺什么包安装什么包即可。但是,在安装gensim包的时候,很有可能会报Microsoft Visual C++ 14.0 or greater is required的错误。

解决教程:https://zhuanlan.zhihu.com/p/471661231

根据上面的教程下载 Visual C++ Build Tools for Visual Studio 2015 with Update 3 的 DVD 文件(千万注意是DVD文件)。

继续安装gensim包即可成功,顺带将其他缺省包也下载好。

解决所有包的问题之后,会发现报新的错误:RuntimeError: ‘lengths’ argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor

报错的原因是pytorch 1.5以上Bi-LSTM升级了,实现方式有些许差别,但无需究其原理,解决方法如下:


经过上面的步骤,再根据源码文件中 README.md 文件运行即可。注:.sh文件可在pycharm中指定git bush命令行运行。

复现结果

经过不同的解决步骤后,成功运行的显示是:


且在运行过程中,cuda使用率有显著提升:


模型训练和测试结束后,以Rest14数据集为例,最优的测试精度和F1 Score对比如下:


我们发现测试精度甚至比论文数据更高,且F1 Score只有微小的差别。这说明我们的源码复现成功了。

注:

如果显卡是20/30系显卡,大致解决方法应该和上述40系方法差不多,根据上述思路具体问题具体分析即可。

一条评论

  1. Pingback:Dual Graph Convolutional Networks for Aspect-based Sentiment Analysis 源码复现 – 方堃的博客

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

index