【Sentiment Analysis – Graph Based】
本节里面主要叙述的是一些使用图的概念进行处理的方法,包含了概率图模型进行处理、将句子转变成具有依赖关系的句法树的形式然后使用图神经网络等方法进行处理。当然也有将知识图谱嵌入的方法,但是这种方法可能就更适合某些存在大量的Priors的领域,对于一些普通的领域可能就没那么有用。
With Structure Information
Aspect-Specific Graph Convolutional Network
这是一种使用图卷积神经网络的方法进行处理的文章,对于图神经网络的介绍可以看我之前所写的一些笔记如
【Graph Neural Networks: A Review of Methods and Applications】
模型的结果如下所示
模型的主要流程就是将词向量丢进LSTM然后得到一些Hidden State再将这个Hidden State按照句法依存树(Syntactical Dependency Trees)的结构进行图卷积操作。
经过图卷积之后的结果,作者采用了一个Mask的操作,即将非Aspect的单词的Hidden State进行Mask,使其Value变成0,然后保持其他的单词的Hidden State不变,得到最后的Graph Based Representation.得到了这个表达之后,再与之前的初始的Hidden State一起计算一个Attention Score.具体的计算方法也就是简单点乘后获得其Attention的值,再通过Softmax得到最终的结果。
将Attention分配到左下角的初始Hidden State之中并作为最终的表示,然后就是通过MLP然后对于Sentiment进行预测的工作了。
Graph Attention Network
还有一种方法是直接使用Graph Attention Network,似乎就没有考虑Aspect的信息了,流程和上面的类似,也是通过句法解析器生成一颗句法依存树,再通过在这个句法生成树上面应用图卷积神经网络进行处理。这里的Attention就不再是Graph的结果与LSTM的结果之间计算出来的了,而是在Graph的各个节点之间直接计算获得的。
获得了最终表示之后可以直接传入MLP也可以传入LSTM之中,作者认为这里使用LSTM可以更好的捕获Aspect的信息,所以将其再利用LSTM进一步提取特征并进行最终的情感分类。
Conditional Random Field
假设训练集之中存在了$N$条句子,对于每一条句子,其中都有一些Aspect Terms以及一些Opinions Terms,目标可以看成是从句子之中寻找到这些Terms.经过抽象,可以看成是一个序列标注的任务,作者在这里借用了BIO的标注策略,分成了五类,分别是BA(Begin of Aspect),IA(Inside of Aspect)和BO,IO以及O(Others).
作者采用的方法叫做Recursive Neural CRFs(递归神经条件随机场?还挺霸气).其中包含了两个主要的部分,分别是一个DT-RNN(Dependency Tree-RNN)以获得词语的抽象表示,以及CRF层接收了抽象表示之后完成Label的任务。
比如这上面就是一个DT-RNN的结构,对于存在特殊的句法依赖的词语,会有一个特殊的线性变换将词向量转换成为一个Hidden State。比如说
$$h_I = f(W_{v} \cdot x_{I} +b)\\
h_{the} = f(W_{v} \cdot x_{the} +b)$$
但是对于一些其他的单词比如说
$$h_{food} = f(W_{v} \cdot x_{food}+W_{DET}\cdot h_{the} +b)\\
h_{like} = f(W_{v} \cdot x_{like} +W_{DOBJ} \cdot h_{food}+W_{NSUBJ}\cdot h_{I}+b)$$
通过这样的方法就获得了基于句法依存树的网络表示。然后将这个表示后面连接上一个CRF层就可以进行序列标注的任务了。这个的过程和Bi-LSTM+CRF进行POS的套路差不多,只不过将下面的Bi-LSTM层换成了DT-RNN层了,但是整体的思路还是一个类似的方向。
With Neighbor Information
和上面的深度学习的方法不同,感觉有点像Markov Random Field的意思了。借用周围的节点的信息帮助做出决策,作者设计了两种不同的算法,分别叫做OPTIM算法和RANK算法。
首先看OPTIM算法,其中假设一个图的表达是$G = (V,E)$,其中的$L$代表了标记数据(可以看成是Source Domain),而$U$是UnLabel的数据(可以看成是Target Domain)。而$x_{i}$可以看成是文档的表示,而$f(x_{i})$则是文档的真实的标签。对于每一个未经过分类的文档$x_{i}$都与其周围的$k$个最接近的已经被标记的Document $KNN_{L}(i)$相连接,他们的之间的边的强弱则是以一个Similarity$\omega_{ij}$进行表示。除了和已经被标记的Document相连接,每一个文档也会和其最接近的$k’$个未被标记的文档相连接。形式化表示可以看成
整个模型的优化目标可以写成
上面的损失函数还是有点复杂,自己也还是一直半解的。这里的$\hat{y_{i}}$在文章之中说的是Stands for Predicted rating of a document,这里的,$y_{i}$表示的是Given Rating of a document.$f(x_{i})$表示的是文章的True Label.第一项是对于有Truth Label的样本而言的,而后面的项都是对于没有Truth Label的样本而言的。后面里的第一项表示也是一个分类的结果的损失,而后面的后面两项则表示的是希望可以充分考虑到周围节点的情况,并且期望中心节点的Rating可以与周围节点的不大,用中国的古话来说,就是近朱者赤近墨者黑。
这是第一个算法,那么第二个算法叫做RANK算法。
这个的算法就有点像上面的GNN的算法了,也是通过迭代更新节点的表示然后再分类。只不过和GNN不同的是在这里对于有Label和无Label的样本进行分别考量了吧。
Probability Graph Model
Latent Variable Model
这篇文章做的不是Cross Domain的工作而是Bilingual Lexicon Induction的工作,也就是对于两种语言之中的词向量进行对齐,对于Cross Domain还是有很大的借鉴作用的。
该模型的模型主体是VAE模型,对于VAE模型的解释可以看我之前写的这VAE,大致的思想是将原始的数据压缩进一个Latent Space,再使用Latent Space之中的信息尽可能的多还原出原始的数据,将原始的数据记作是$x$,将Latent Space记作是$z$,那么VAE的目标就是最大化ELBO即
$$L_{\theta,\psi} = E_{q_{\psi}(z|x)}[\log p_{\theta}(x|z) ] – KL(q_{\psi}(z|x)||p_{0}(z))$$
作者假设Source Word和Target Word都是来自于同一个Latent Space,所以$z$就可以满足抽取共同的特征,并进行Lexicon Induction的作用。为了达成这样的一个目标,作者还使用了Adversarial Learning的方法进行处理。
在对抗训练之中,对于Source Space以及Target Space之中都有一个网络,分别记作是$\psi_{s}$以及$\psi_{t}$起到的作用是将他们丢进同样的Latent Space之中,而中间存在一个Binary Classier记作是$D$,他的作用是分辨两个语言的区别。
通过$\psi$可以将不同语言的单词都放进同一个空间之中而通过$D$可以Force这两个空间之中的单词对齐,因为对齐的过程可以看成是一个消除差异的过程,那么当分类器无法区别两个Latent表示的时候,可能也就代表对齐成功了吧。
Probabilistic Topic Models
这篇文章是为了获得Domain Specific的词汇表(Glossaries)而设计出的算法,大致的思想就是对于Seed Words进行拓展的方式。
对于给定的Domains $D=\{d_{1},\cdots ,d_{n}\}$,我们都可以生成一个Domain-Specific的词汇表,所谓的词汇表由两个部分组成,第一个是Domain Term $t$,第二个是其解释 Gloss $g$.他们组成了一个二元组的形式$(t,g)$.
首先拿到种子词和种子词的一个Generalization记作$(t_{j},h_{j})$然后利用强大的搜索引擎上网搜索,再把网上的出现的词语给加进待选池之中。然后使用Topic Model进行筛选,循环往复得到最后的结果。整篇文章还是偏工程类型,如果想拓展词库可以试试这样的方法。
Integrating Domain Knowledge
由于自己最近想要阅读的方向更多的是在Cross Domain Sentiment Analysis这一块,而这一块虽然蛮值得研究的,不过自己看的这些文章可能都是在关注于如何使用Twitter上面的Domain Knowledge和医疗或者生物领域如何使用一些Prior Knowledge对于模型进行改良,而非是关注于Cross Domain的这个Domain上面,所以我暂时不写这一部分的内容了,以后可以再补上这一块。相关的论文我也放在Reference之中了,有兴趣的可以自己翻看。
Comments
总体来说,使用基于图的算法都是以句法树作为基础然后使用Tree Based LSTM算法或者是GNN算法以应用这颗树。中间也有很多值得斟酌的技巧,而对于在概率图的角度来做的方法,自己见到了一个LDA的改良算法,看了半天发现其实也不是很具有普适性就也没放进正文之中。后面的概率图模型那一块我选择的两个算法,一个可以对于不同的Domain之间进行对齐,另外的一个工程味很重,也是蛮实用的一个算法,都可能会在后续研究中提供更多的帮助。
Reference
2012_Do neighbours help an exploration of graph-based algorithms for cross-domain sentiment classification_Ponomareva, Thelwall
2013_Exploiting domain knowledge in aspect extraction_Chen et al
2013_Growing multi-domain glossaries from a few seeds using probabilistic topic models_Faralli, Navigli
2016_Recursive Neural Conditional Random Fields for Aspect-based Sentiment Analysis_Wang et al
2018_Unsupervised Bilingual Lexicon Induction via Latent Variable Models_Dou, Zhou, Huang
2019_Aspect-based Sentiment Classification with Aspect-specific Graph Convolutional Networks_Zhang
2019_Biomedical Relation Classification by Single and Multiple source Domain Adaptation_Chakraborty
2019_Improving Multi-label Emotion Classification by Integrating both General and Domain Knowledge_Ying, Lu
2019_Incorporating Domain Knowledge into Medical NLI using Knowledge Graphs_Sharma, Jana
2019_Investigating Dynamic Routing in Tree-Structured LSTM for Sentiment Analysis_Wang et al
2019_Syntax-Aware Aspect Level Sentiment Classification with Graph Attention Networks_Carley
Comments
Leave a Comment