← 返回 PaperDaily 大模型与智能体

斯坦福2013年神作:递归张量网络把情感分析SOTA推到85.4%

被引9624次的NLP镇馆级论文,情感分析必读经典。斯坦福团队一口气端出两样硬货:215,154个短语级标注的Sentiment Treebank,以及把张量带进递归网络的RNTN,直接终结了“词袋模型统治情感分析”的时代。

斯坦福2013年神作:递归张量网络把情感分析SOTA推到85.4%
项目主页概览,展示了系统核心功能与模型介绍,以及进入实时演示的入口。
图:项目主页概览,展示了系统核心功能与模型介绍,以及进入实时演示的入口。

原论文信息如下:
论文标题:
Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank
发表日期:
2013年10月(EMNLP 2013)
发表单位:
斯坦福大学(Stanford University)
原文链接:
https://aclanthology.org/D13-1170.pdf
项目链接:
http://nlp.stanford.edu/sentiment
开源代码链接:
http://nlp.stanford.edu/sentiment
开源数据集链接:
http://nlp.stanford.edu/sentiment(Stanford Sentiment Treebank)
演示链接:
http://nlp.stanford.edu/sentiment(在线演示)
如果让一台机器读影评:“这部电影既不搞笑也不机智”,它会怎么判断?按词袋思路,这句话里“搞笑”和“机智”都是正向词,那应该是夸吧?——结果原作者其实在吐苦水:既不搞笑也不机智,基本等于烂片预定。这种“词都对,意思全反”的场景,恰恰是2013年那篇后来被引了9600多次的经典论文要正面硬刚的问题。
今天这篇回顾,龙哥带各位重温斯坦福团队在EMNLP 2013上提出的《Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank》。这篇论文一口气端出两样硬货:斯坦福情感树库(Stanford Sentiment Treebank),以及递归神经张量网络(Recursive Neural Tensor Network,简称RNTN)。前者是第一个给句法树每个节点都标注了细粒度情感的语料库,后者是那个时代最能打组合语义的模型。这两样东西凑一块,直接把单句正负情感分类的SOTA从80%推到了85.4%。
图1:RNTN在句法树每个节点上准确预测5类情感(从极负面到极正面),并且捕捉了否定词及其作用范围。
图1是论文原图。这颗句法树上的每个节点都被RNTN预测了一个从“––极负面”到“++极正面”的五档情感值,注意看“not only”那一支:整棵子树没有简单地把“funny”和“witty”当成褒义词叠加,而是把“not”的否定作用范围一路传递到父节点——这恰恰是词袋模型做不到的。理解了这个图,基本就理解了这篇论文为什么值9624次引用。

情感分析的新突破:递归神经张量网络

在深度学习还没统治NLP的2013年,情感分析的主流玩法是词袋模型(Bag of Words)——把句子里的词拆散,数一数哪些词出现了,然后交给朴素贝叶斯或者支持向量机分类。这种方法在长文档上效果还行,因为几万个词里总有几个“awesome”、“terrible”这种情感色彩强烈的词兜底;但到了短句、特别是带否定和转折的句子上,词袋模型就露馅了。它根本分不清“not good”和“good”的区别,更不可能理解“not bad”其实是在说“还行”。
当时学术界其实已经意识到这个问题:组合语义(Compositional Semantics)——即短语的意思由词义按照语法结构组合而成——是绕不开的方向。但做组合语义研究面临两个硬伤:一是没有一个足够大、标注足够细的数据集来支撑训练,二是没有一个足够强的组合函数模型。这篇论文给出的答案,就是Self-contained的“数据+模型”打包方案。
先说数据集。

斯坦福情感树库:首个全标注解析树语料

斯坦福团队从烂番茄网站上挑了大量电影评论句子,这些句子最初由Pang and Lee在2005年整理发布,一共10,662句,正负标签各半。论文用Stanford Parser把每句话解析成句法树,其中大约1,100句在解析时被切分成了多个句子,最终得到11,855个句子、215,154个短语。然后发动Amazon Mechanical Turk众包平台,让标注者对每个短语打分。
图3:标注界面。标注者用滑块选择情感倾向和强度。
图3是标注界面,滑块初始位置设在“中性”,有25个刻度。为了消除上下文干扰,每个标注任务里的短语都是从全库随机抽样的,不会连续出现同一句话里的前后短语,这样标注者看到“not bad”时不会因为刚标过“bad”而受引导。每个短语由3个人标注,最终聚合出情感标签。统计发现大部分标注者会滑到五个位置之一(负面、有点负面、中性、有点正面、正面),极少使用极值,也极少停在刻度之间,所以最终把25档粗粒化成5档,用细粒度情感分类(Fine-grained Sentiment Classification)来描述这个任务。
图2:不同长度n-gram的情感标注分布标准化直方图。较短的短语多为中性,较长短语分布更均匀。
图2展示了不同长度短语的情感分布:短短语以中性为主,随着短语长度增加,情感色彩越来越分化。这也是符合直觉的:单独一个“the”没有任何情感,但“the movie is a masterpiece”就很有倾向。这种标注密度是此前任何语料都没有的——以往的影评数据集只给整句打标签,从来没给句法树上的每个子短语都打标签。
有了这个语料,模型的训练和评测就完全不一样了:不只是看整句预测对不对,还能检查每个短语节点预测得准不准。也正是因为这个特性,后来无数工作把Stanford Sentiment Treebank当成了情感组合研究的标配基准,今天的BERT在SST-5上刷分时,用的还是这215,154个短语。

RNTN核心机制:张量层如何建模组合语义

数据之外,模型才是这篇论文的重头戏。先铺垫一下背景脉络。在RNTN出现之前,递归神经网络(Recursive Neural Network,简称RNN)已经提出,思路是:把句子解析成二叉树,每个词用d维向量表示,然后自底向上不断把两个孩子节点的向量合并成父节点向量。合并函数就是一个权重矩阵W作用于拼接向量,再经过非线性激活函数,通常用tanh:
标准RNN计算父节点向量的公式
这里的b和c是待合并的孩子节点向量,W是需要学习的权重矩阵。每个节点算出的向量再过一个softmax分类器预测情感标签。softmax分类器长这样:
softmax分类公式
其中W_s是分类权重矩阵,a是节点向量,输出是5个情感类别的概率分布。
图4:递归神经网络模型处理情感的方法示意:用组合函数g自底向上计算父向量,并逐节点用分类器预测。
图4就是这种递归模型的通用框架,变化只发生在“组合函数g”的选择上。当时比标准RNN更进阶的是MV-RNN(Matrix-Vector RNN,矩阵向量递归神经网络),它给每个词同时配一个向量和一个矩阵,让词向量和词的矩阵交叉相乘。这种设计虽然表现更好,但参数爆炸——词典里每个词都带一个d×d的矩阵,训练代价极高。
RNTN的想法非常直接:与其给每个词各配一套参数,不如设计一个固定大小、但能力更强的组合函数。它本质是在标准RNN的基础上加了一个双线性张量项,让两个输入向量在合并时先做一次充分的乘法交互,再拼接做线性变换。核心公式长这样:
RNTN计算父节点向量的公式
这里V是一个形状为2d×2d×d的张量。具体到每个输出维度i,就有一个独立的2d×2d的切片V[i],输入拼接向量会在该切片上做二次型运算。直观理解:张量的每个切片相当于一个“关系检测器”,负责捕捉两个孩子在某个语义维度上的交互模式。还是拿“not funny”举例,某个切片可能专门捕捉“否定词+正向形容词”这种组合,让父节点在计算时直接把情感极性翻转。
图5:递归神经张量网络的单层结构。每个虚线框代表d个张量切片中的一个,捕捉子节点对父节点的一种影响方式。
图5展示了这个张量层的内部结构。相比标准RNN中两个输入向量只能通过拼接和激活函数“隐式互动”,RNTN是显式地先做乘法交互,再融合。这种设计让模型在处理否定、转折等需要关注“词与词之间关系”的场景时,能力上限高出不少。
训练方面,论文在每个节点都用交叉熵损失监督,整体损失函数为:
损失函数公式
其中t是目标分布,y是模型预测分布,θ是所有参数,λ是正则化系数。训练使用AdaGrad优化器,词向量维度在25到35之间效果最好,大约3到5小时可收敛。值得一提的是,论文尝试过用两层非线性替代张量层,但优化困难且向量交互仍然太隐式,最终张量设计胜出。

实验验证:否定与转折的精准捕获

实验分两大块:整体精度评测和语言现象专项分析。对比模型包括朴素贝叶斯(NB)、支持向量机(SVM)、二元词袋朴素贝叶斯(BiNB)、词向量平均模型(VecAvg)、标准RNN、MV-RNN以及本文的RNTN,覆盖了从词袋到组合模型的完整光谱。数据划分为8544句训练、1101句开发、2210句测试;剔除中性句后,二分类实验对应6920/872/1821。
表1:五种与二分类任务下的准确率对比(%),分别报告整句(Root)和全部节点(All)结果。
表1是核心结果。几个关键数字:细粒度五分类全节点准确率方面,RNTN达到80.7%,比词袋基线最高值(VecAvg的73.3%)高出7.4个百分点;整句正负二分类上,RNTN达到85.4%,而此前最好的方法只有80%上下。注意RNN和MV-RNN也用了同样的树库数据,但RNTN在全部四项指标上都领先,说明优势确实来自张量组合函数,而不是单纯“数据变多了”。
图6:各n-gram长度上的细粒度情感分类准确率曲线。左图按n-gram长度分组;右图为累积准确率。
图6的准确率曲线更细致地展示了模型在各短语长度上的表现差异:递归模型在短短语上优势明显——因为2到4个词的短语恰恰是组合语义最密集的场景;词袋模型在较长短语上才慢慢追上,因为词多了以后凑统计量就相对容易。RNTN在所有n-gram长度上都压着其他模型。
泛化精度之外,论文还专门设计了两个针对语言现象的测试,这是真正让RNTN“封神”的地方。第一个是对比转折结构(Contrastive Conjunction):只挑“X but Y”形式的句子,要求模型同时正确判断X和Y各自的情感,以及整个转折结构的情感倾向。类似“这部电影很长,但很精彩”这种句式,转折词“but”之后的分句通常才是真正的情感落点。
图7:对“X but Y”转折结构正确预测的示例。
图7的例子里,前半句“very good”偏正面,后半句“the performances are uneven”偏负面,整句情感因为“but”的存在落在后半句上。RNTN在131个测试样本上拿到41%的准确率,MV-RNN、RNN和BiNB分别只有37%、36%和27%。
第二个是高层否定现象(High-level Negation),分两组测试。第一组是正句加否定词,比如“This movie is good”变“This movie is not good”,要求模型把情感从正面翻转为负面;第二组是负句加否定词,比如“The movie was terrible”变“The movie was not terrible”,注意:负句被否定后情感不一定变成正面,更合理的判断是“没那么坏了”,即情感应该减轻而非反转。
表2:否定检测准确率对比(%)。左列为正句被否定后的情感反转准确率,右列为负句被否定后正面激活提升的准确率。 图9:RNTN对正句/负句及其否定形式的预测示例。
表2的结果非常亮眼:正句否定反转上RNTN达到71.4%,MV-RNN只有52.4%;负句否定上RNTN达到81.8%,MV-RNN是54.6%。图9展示了具体预测样例,值得注意的是“not terrible”这种否定,RNTN把整句从负面修正为中性,符合人类语言直觉,而不是机械地把所有否定都变成极性反转。
图8:否定作用下情感激活值的变化。RNTN在两类否定上都朝正确方向调整了情感强度。
图8把两类否定实验中各模型对情感激活值的平均改变量可视化了出来。RNTN在正句否定上大幅降低正面激活,在负句否定上明显增加正面激活,方向完全符合人类直觉;而RNN和MV-RNN要么幅度不够,要么方向错了。这也是论文里最有说服力的一张图——它表明RNTN学到的不只是“见到否定词就翻转极性”这种粗糙规则,而是理解否定词与不同情感倾向短语组合后的语义变化。
另外补充一句:实验还观察了模型学到的n-gram情感映射,见下表:
表3:RNTN预测的最积极和最消极n-gram示例。
表3中,“not good”能出现在最消极n-gram列表里,说明模型真的学到了否定对情感的翻转作用。

总结与展望

用今天的眼光看,RNTN的结构算不上复杂,词向量维度也只有25到35,训练时间按小时算。但放在2013年,它的意义是双重的:一方面用树库解决了“训练数据不够细”的问题,另一方面用张量组合函数解决了“模型组合能力不够强”的问题。这两件事的组合,使它成为情感分析从词袋时代走向组合语义时代的一个标志性拐点。
这套方法后来在电商评论分析、舆情监控、影评推荐等场景都有落地空间。虽然现在BERT这类预训练模型用自注意力机制把上下文交互做得更充分,在SST-5上大幅超越了RNTN,但RNTN的“显式建模组合交互”思想并没有过时——今天很多结构化推理模型里,依然能看到类似“双线性交互张量”的变体在发挥作用。

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:
这篇论文到底在解决什么问题?斯坦福大学提出递归神经张量网络RNTN,并构建含21.5万短语级标注的Sentiment Treebank,将单句正负情感分类准确率从80%提升至85.4%,全短语五分类预测达80.7%,是首个能准确捕获否定与转折语义结构的深度模
这篇工作最值得看的点是什么?RNTN在细粒度情感分类所有短语上达到80.7%准确率,句子级正/负分类达到85.4%,均优于所有对比方法;在否定检测任务上显著优于基线方法。
这篇工作的边界或风险在哪里?优点:RNTN通过张量层直接建模子节点间的乘法交互,比标准RNN能更有效地捕获组合语义;在否定和转折等复杂语言现象上表现优异。缺点:张量参数导致计算复杂度较高;模型对树结构依赖性强,需要外部解析器提供句法树。
如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

龙哥点评

论文创新性分数:★★★★☆

提出递归神经张量网络(RNTN),利用张量层直接建模子节点间的乘法交互,在情感树库上实现细粒度情感组合学习。

实验合理度:★★★★☆

细粒度5分类准确率(所有短语和句子根节点)、二分类(正/负)准确率、否定检测准确率。

学术研究价值:★★★★☆

提出递归神经张量网络(RNTN),利用张量层直接建模子节点间的乘法交互,在情感树库上实现细粒度情感组合学习;更关键的是问题定义是否可复用到同类任务。

稳定性:★★★☆☆

现有材料未提供充分的极端条件、重复运行或扰动测试,稳定性暂按中性评价。

适应性以及泛化能力:★★★☆☆

现有材料未完整展示跨数据集、跨场景或分布外实验,泛化能力仍需进一步验证。

硬件需求及成本:★★★☆☆

训练时间约3-5小时(使用AdaGrad优化),未报告具体FLOPs。

复现难度:★★★☆☆

http://nlp.stanford.edu/sentiment

产品化成熟度:★★★☆☆

论文验证以研究实验为主,真实部署中的时延、成本、维护和异常场景仍需补充验证。

可能的问题:张量参数导致计算复杂度较高;模型对树结构依赖性强,需要外部解析器提供句法树。

主要参考文献

Socher, R., Perelygin, A., Wu, J. Y., Chuang, J., Manning, C. D., Ng, A. Y., & Potts, C. (2013). Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank. In Proceedings of EMNLP (pp. 1631–1642).
Pang, B., & Lee, L. (2005). Seeing Stars: Exploiting Class Relationships for Sentiment Categorization with Respect to Rating Scales. In Proceedings of ACL.
Socher, R., Huval, B., Manning, C. D., & Ng, A. Y. (2012). Semantic Compositionality through Recursive Matrix-Vector Spaces. In Proceedings of EMNLP.
Klein, D., & Manning, C. D. (2003). Accurate Unlexicalized Parsing. In Proceedings of ACL.
Duchi, J., Hazan, E., & Singer, Y. (2011). Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. Journal of Machine Learning Research.
项目主页与在线演示:http://nlp.stanford.edu/sentiment
论文原文:https://aclanthology.org/D13-1170.pdf

*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

end
情感分析想入门?语义组合玩不转?一个人啃论文太孤单,不如来龙哥读论文微信群,跟一群爱学习的小伙伴一起把经典论文嚼碎了咽下去!扫描下方二维码或添加龙哥助手微信号:kangjinlonghelper,备注:研究方向+地点+学校/公司+昵称,更快被通过哦~
wechat_helper dianzan

转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。