赞
踩
最近看了几篇nlp相关的顶会论文,又发现了一条提高文本分类精度的新思路,即增加外部的信息,就是这么简单的一句话,就蕴含了很丰富的道理,下面我来娓娓道来。
常规的处理自然语言的方法(无论是统计语言模型方法还是神经网络语言方法)所分析的对象都是一句话或者一篇文档,也就是说我们得到的关于某句话的所有信息只能全部来自于这句话的文本内容(传统的论文创新无非就是在处理这些文本的方式上进行改变,包括各种CNN和LSTM的处理结合方式)。
如果我们换个角度来思考问题,人类世界已经积累了很多外部的经验信息(比方说语法、词性),如果我们能在分析一句话的时候结合了人类总结的有用信息,无疑能够进一步提升文本的分类精度。下面我就来说一下这其中一篇比较有代表性的文章:《Linguistically Regularized LSTMs for Sentiment Classification》2017年的ACL。它加入的外部信息是 Linguistically。
这篇论文从语法的角度分析得到了几种对文本情感影响较大的关键词:情感词、否定词和程度副词。针对这些因素,以LSTM为主体模型,在最后的误差函数方面考虑了这些因素。具体细节如下:
首先我们来看看模型最终的误差函数:
E(Θ)=−∑iyilogpi+α∑i∑tLit+β(Θ)2
损失函数由三项组成,第一项很明显就是交叉熵,最后一项中的Θ
1 Non-Sentiment Regularizer (NSR)(无情感特性的规则项)
LNSRt=max(0,DKL(pt,pt−1)−M)
其中pt
DKL=12∑cl=1p(l)logq(l)+q(l)logp(l)
这里面的p(l)
2 Sentiment Regularizer (SR) (情感词)
pSRt−1=pt−1+Sc(xt)
LSRt=max(0,DKL(pt,pSRt−1)−M))
3 Negation Regularizer (NR) (否定词)
否定词相对于情感词就比较复杂了,文章中举了两个例子,”not good” “not bad” 同样使用的not否定词,但是最后对good和bad的情感shift是不一样的。为了解决这个问题,针对每一个否定词提出一个transformation矩阵Tm∈RC∗C
PNRt−1=softmax(Tj∗Pt−1)
PNRt+1=softmax(Tj∗Pt+1)
LNRt=min(max{0,DKL(pt,pNRt−1)−M},max{0,DKL(pt,pNRt+1)−M})
需要说明的是这个的pt−1是一个C维度的向量,乘上一个RC∗C矩阵之后,还是一个C维度的向量。外面的softmax其实就代表了一个归一化的操作,使得出的最终概率分布总和是1。如果最后的C维度向量为[X1,X2......XC],那么Xi使用softmax归一化后的结果Yi为:Yi=exp(Xi)∑Ck=1exp(Xk)
4 Intensity Regularizer (IR) (程度副词)
这个和第三部分的否定词有着相同的性质,也是一个程度副词对应一个transformation矩阵,细节和第三部分相同,就不再赘述了。
上述的考虑虽然合理,但是还存在一个问题,就是没有考虑程度副词和否定词改变句子情感的范围,也就是说其中Pt和Pt−1的对比是不太合适的。为了缓解这个问题,论文又给出了一种双向LSTM的策略,即从两个方向对句子进行建模。因为程度副词和否定词对句子情感极性的改变部位通常在改词的后面,我们用P→t代表正序的句子序列输入LSTM得出的结果,用P←t代表逆序的句子序列输入LSTM得出的结果。那么否定词和程度副词的公式就变成了:
P→t−1=softmax(Tj∗P→t−1)
P←t+1=softmax(Tj∗P←t+1)
Lt=min(max{0,DKL(pt,p→t−1)−M},max{0,DKL(pt,p←t+1)−M})
同理我们也可以改变NSR和SR部分的公式,由单向的改为双向的。
从整体上讲,这篇论文在做情感分类的时候考虑Linguistically信息的方式和一般的不太一样,他很巧妙的把Linguistically信息和损失函数结合在了一起,使其能够和模型一起进行训练。使模型在优化LSTM参数的时候能够更加的准确合理,的确是一个比较值得学习的新思路。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。