前
言
前一段时间收到了一个论文复现的任务,后来有点事情一直没分享。这里分享一下论文,以及自己的pytorch复现代码。
首先论文的任务是方面级情感分类,比如:给定句子"这里的饭很好吃,但是工作人员态度很差",这个句子对于"食物"这个aspect来说是积极的,对于"服务"这个aspect来说是消极的。这就是ABSA任务。
论文名:
Attention-based LSTM for Aspect-level Sentiment Classification
pytorch代码:
https://github.com/loganzhang1/Attention-based-LSTM-for-ABSA
![42fcce028c72d4798ed474df25a5c2c1.png](https://i-blog.csdnimg.cn/blog_migrate/f3257e4ea053034b910e6c695513fc83.png)
![8be784b867599b809fe0e2618d0b0be7.png](https://i-blog.csdnimg.cn/blog_migrate/63d56dbf66d27998c985f04911e95836.png)
思
想
这篇论文提出了一种基于Attention机制的LSTM模型用于ABSA任务。在ABSA任务中,Aspect信息是非常关键的,给定一个句子,考虑不同的aspect,可能会得出不同的情感类别。因此为了最好地利用aspect信息,这篇论文的作者提出了aspect embedding的想法,为每一个aspect学习一个向量。
因为标准的LSTM不能根据给定的aspect来检测序列的特定区域,为了改进这个问题,这篇论文的作者提出了Attention-based LSTM(AT-LSTM)架构,即在计算attention的时候将句子对应的aspect embedding与每个时间步的隐含层状态拼接起来计算attention值。AT-LSTM模型结构如下:
![280cfb73e3e6e3c0f336a2382f55a8d7.png](https://i-blog.csdnimg.cn/blog_migrate/7977ad585b031fe8bc2b8b2d275828eb.png)
为了更好地利用aspect信息,作者将aspect embedding向量嵌入到每个单词的词向量上,在每一个时间步同时输入词向量与aspect embedding。这样,在之后计算attention权重时,就可以建模单词与aspect之间的相关性。最终的模型Attention-based LSTM with Aspect Embedding(ATAE-LSTM)图如下:
![9c1c9125af3dcdf782f66a5d231be6f4.png](https://i-blog.csdnimg.cn/blog_migrate/852b3aeb381aaa46ab3139c12a01e5ac.png)
![3c115629eb0c5db29143b21d30f2b339.png](https://i-blog.csdnimg.cn/blog_migrate/b98cb90ed7b5ba705d6f0b6c5fcf4577.png)
复现最终结果为83.05%,比原文差1%。
![42fcce028c72d4798ed474df25a5c2c1.png](https://i-blog.csdnimg.cn/blog_migrate/f3257e4ea053034b910e6c695513fc83.png)
![8be784b867599b809fe0e2618d0b0be7.png](https://i-blog.csdnimg.cn/blog_migrate/63d56dbf66d27998c985f04911e95836.png)