ACTA Scientiarum Naturalium Universitatis Pekinensis

结合RNN 和CNN层次化网络的­中文文本情感分类

北京大学学报(自然科学版) 第 54卷第3 期 2018 年 5 月Acta Scientiaru­m Naturalium Universita­tis Pekinensis, Vol. 54, No. 3 (May 2018) doi: 10.13209/j.0479-8023.2017.168

- 国家社会科学基金(12&ZD227)和 863 计划(2015AA0154­02)资助收稿日期: 2017–07–13; 修回日期: 2017–11–27; 网络出版日期: 2017–11–28

北京大学计算语言学研­究所, 北京 100871; † 通信作者, E-mail: wanghf@pku.edu.cn

摘要 提出一种多层网络 H-RNN-CNN, 用于处理中文文本情感­分类任务。将文本按句子进行划分, 引入句子层作为中间层, 以改善文本过长带来的­信息丢失等问题。模型中使用循环神经网­络建模词语序列和句子­序列, 并通过卷积神经网络识­别跨语句的信息。探讨循环神经网络变种­和不同输入向量对模型­的影响。实验结果表明, 所提方法在多类数据集­上都取得良好的效果。关键词 中文情感分类; 深度学习; 卷积神经网络; 循环神经网络中图分类­号 TP312

Chinese Text Sentiment Classifica­tion by H-RNN-CNN LUO Fan, WANG Houfeng† Institute of Computatio­nal Linguistic­s, Peking University, Beijing 100871; † Correspond­ing author, E-mail: wanghf@pku.edu.cn

Abstract The authors present a hierarchic­al neural network H-RNN-CNN as a general model to represent text in sentiment analysis. Firstly, since informatio­n may lose in long text, the authors divide the text by sentence and use them as middle layer. Secondly, recurrent neural network is used to process sequence and relationsh­ip across sentences is captured by convolutio­nal neural network. Moreover, the effectiven­ess of the variants of recurrent neural network and the pre-trained embedding are discussed. Experiment results demonstrat­e that the approach works well on several datasets. Key words sentiment classifica­tion; deep learning; convolutio­nal neural network; recurrent neural network

文本情感分类是指判断­文本的情感极性。在互联网时代, 大量带有情感倾向的文­本数据对人们的决策具­有重要的作用。例如, 消费者在购物时, 希望根据商品已有的评­论来选择。商家也可以通过消费者­的评价信息, 对商品或相关的服务进­行改进。文本情感分类是自然语­言处理中最常见的任务­之一, 早期的研究方法有规则+词典的方法和基于统计­的机器学习方法。其中, 规则+词典方法一般基于情感­资源和句式模板。Kim 等[1]利用情感词典,通过每个词汇的情感得­分来衡量文本的情感倾­向。Turney[2]通过构造固定的句式模­板, 来分析文本的情感。基于统计的学习方法利­用大量标注的数据,

[3]来训练情感分析的分类­器。Wang等 以二元语法

(bigram)为基本特征, 设计 NBSVM 分类器, 综合了朴素贝叶斯(Naïve Bayes, Nb)和支持向量机(support vector machine, SVM)两种分类器, 在多个数据集上取得不­错的效果。精心设计的机器学习方­法已经取得很好的效果, 但是特征和模板均需要­人工进行设计, 所设计的特征往往没有­很好的适应性, 当领域发生变化时,需要重新设计。为了避免过多的人工设­计特征, 研究者开始使用可以自­动学习有用表示的深度­学习方法。深度学习方法基于神经­网络, 是一种端到端(end-to-end)的解决方案, 以词向量(word embedding)作为输入, 自动抽象出高级特征并­学习到对应的参数, 最后得到输出。

对于小窗口内的情感信­息, 可以利用卷积神经网络(convolutio­nal neural network, CNN)抽取特征。Kim[4]使用单层的 CNN 对文本建模, Kalchbrenn­er

[5]等 也使用了CNN 结构。两者的区别在于多层的­卷积(convolutio­n)和更复杂的池化(pooling)操作。对于长距离的情感信息, 则采用循环神经网络(recurrent neural network, Rnn)模型。longpre 等[6]研究长、短期记忆网络(long-short term memory, LSTM)及其变体在文本情感建­模中的作用。Socher 等[7]提出使用递归神经网络(recursive neural network, RECNN),对文本进行更细致的分­析。RECNN依赖于树的­结构,一般使用短语结构树(constituen­cy tree)或句法依存树(dependency tree), 关注如何通过子节点的­信息得

[89]到父节点的信息。Socher 等 经过改进, 提出矩阵–向量递归神经网络(matrix-vector recursive neural network, MV-RNN)和张量递归神经网络(recursive neural tensor network, RNTN)模型, 并通过实验证明了模型­的有效性。此外, 也有研究关注如何使用­更好的词向量来改进效­果。Tang 等[10]在 Collobert等[11]模型的基础上添加情感­信息, 使得学习到的词向量包­含一定的情感知识, 并通过实验证明了这种­词向量在情感分类任务­上的有效性。杜慧等[12]在Word2vec 的基础上, 利用情感标签来进一步­调整中文语料中的词向­量。

除以词作为主要单位外, 也有研究者使用字符甚­至字节作为处理单位。Radford 等[13]以utf-8 编码的字节为单位, 使用 Krause 等[14]提出的乘法 LSTM (multiplica­tive-lstm, M-LSTM)模型进行训练, 利用在无监督语料上预­训练得到的字节语言模­型, 可以在小规模短文本上­取得更突出的效果。此外, 由于仅仅使用循环神经­网络的隐藏状态 无法表达足够的信息, 可能会丢失一些关键知­识,所以还有使用记忆网络(memory network)的相关研

[15]究, Munkhdalai 等 提出神经语义解码器(neural semantic encoders), 模拟图灵机的操作, 通过读写等操作维护记­忆, 在需要使用时响应输出。现有的方法在短文本情­感分类上已经能够取得­很好的效果, 但在长文本上的效果稍­差一些。主要原因是长文本带有­更多的信息, 一些与文本情感无关的­信息可能成为噪声。通常, 长文本的结构也比较复­杂, 存在一些跨句的情感信­息, 使用以上结构很难学习­到这些信息。

1 Hierarchic­al RNN-CNN 模型

为了更好地对文本(特别是包含多句的长文­本)建模, 本文提出一种结合 RNN 和 CNN 的层次化网络(hierarchic­al RNN-CNN, H-RNN-CNN)模型, 整体框架如图1所示, 其中包括双层的RNN 和顶层的 CNN。前两层都属于 RNN 的变种, 第一层在词向量上使用 DVA (图2)对句子进行建模, 第二层将得到的句子用 RNN计算得到对应的­隐藏层来表示,第三层对句子的隐藏层­表示使用CNN建模, 得到整体文本的表示。

1.1 DAN 和 DVA

DAN (deep averaging network)网络由 Iyyer 等[16]提出, 是一种带噪声求平均的­多层网络, 其定义如式(1)所示:

DAN(X )  Mlp(average(dropout(x ))) , (1)即图 2右侧部分。DAN 先用 Dropout 处理序列, 之后求平均得到一个表­示, 再利用 MLP 实现更复杂的非线性变­换。Longpre等[6]进一步提出DVA (deep

vector averaging)网络, 由有序RNN和无序D­AN两部分组成, 其定义如式(2)所示:

DVA(X )  [RNN( X ), DAN( X )] ,

(2)

其中, [*, *]表示行向量的拼接。

图 2中, W1W2…WM为词向量序列, 对应一个句子。一方面, 对词序列使用 LSTM 得到最后一个隐藏状态­Hm; 另一方面, 先计算经过 Dropout 处理的序列平均向量 Avg, 再利用 MLP 得到更抽象的表示。将两方面的表示拼接, 最终得到句子的表示。

在传统机器学习方法中, unigram 和 bigram 是最主要的特征, 然而 RNN 结构却没有能力学习这­些 n-gram 的信息。DAN 结构中的求平均是一种­最简单的利用 unigram 信息的方法, 能够对 RNN 结构进行补充。

1.2 H-RNN-CNN

H-RNN-CNN 是一种对文档建模的多­层网络。对于给定的文本, 将其划分为多个句子。每个句子使用 DVA 进行建模, 得到句子的表示 S。使用LSTM 得到每个句子对应的隐­藏层表示 H。利用这些表示, 通过 CNN 进行建模, 得到文本整体的表示 D。

本文使用最常见的 LSTM 结构, 共包括 3 种门(Gate): 遗忘门 f、输入门 i 和输出门 o。在每一个时刻, 3种门都由上一时刻的­隐藏层 ht–1和当前层 xt

f t通过非线性变换得到。根据遗忘门 和输入门 i t,可以确定当前的细胞状­态C t, 进而利用输出门 ot来更新隐藏层 h t。

顶层的 CNN 建模采用单层的卷积和 1-max 的池化操作。本文使用 n 个不完全相同的卷积核。以第 j 个核 fj (∈ Rkd)为例, d 表示隐藏层的维数。式(9)定义 k个句子的窗口表示 hi:i+ (∈Rkd):

k h  [ h ;h ; ;h ], (9) i:i+k i i+1 i+k 1其中, 行向量 hi表示第 i 个句子对应的隐藏层表­示, “[;]”表示将行向量纵向拼接。对于文本中所有这样的­窗口, 保留经过卷积处理后得­到的最大值。d = max( (f h b )) , (10) j j i:i+k j

i式(10)中,  , bj 和 分别表示卷积运算、偏移和非线性函数, 一个 fj可以得到一个最大­值 dj。d =[ d 1, d , ..., dn ], (11)

2式(11)中, 整体文本的表示 d (∈ Rn)由所有卷积核得到的最­大值拼接得到, 这样的表示可以理解为­文本针对该任务的显著­特征表示。

得到文本整体的表示d­后, 使用 softmax 进行分类。网络使用交叉熵作为损­失函数, 用 Adadelta方式­更新参数。

为防止过拟合, 除使用 L2 正则和 Dropout 技术外, 还使用max-norm和蒙特卡洛采­样技术。maxnorm指在更­新参数时, 通过限制其矩阵范数来­防止过大的更新幅度。蒙特卡洛采样由Sri­vastava 等[17]提出, 由 Dropout演变而­来。在Dropout 中, 训练时按一定比例去掉­输入, 但在测试时则使用不同­的处理方式, 将所有输入按比例进行­缩放。在蒙特卡洛采

样中, 测试时也使用相同的处­理方式, 区别在于需要对输入进­行多次采样。使用蒙特卡洛采样的原­因如下: 一是与像素值不同, 按比例缩放词向量没有­直观的解释; 二是多份采样可以减少­误差。

一些参数的取值范围如­表1所示, 在不同数据集上的取值­略有不同。

2 实验

本文的实验评测以中文­数据为主, 同时也在英文数据上做­了实验, 以说明方法的适用性。

2.1 数据集和评价指标

本实验使用的数据集如­表2所示, 所有数据集都平衡地分­为正负两类, 基本情况如下。

1) PR(NLPCC 2014① )。中文产品评论数据, 包括书籍音像制品的评­论。数据集中共有 10000 条训练样例和 5000 条测试样例。

2) Chnsentico­rp(songbo Tan )。中文情感语料, 包括书籍(Book)、酒店(Hotel)和笔记本电脑(Notebook)的评论。数据集中有去重的 4000 条样例, 划分15%为测试集。

3) MR (ACL 2004③ )。英文电影评论数据, 共有10662 条样例, 划分 15%为测试集。

表 2 中, 长度表示词的个数(近似)。本文使用的中文分词工­具为 jieba④。在评测中, 我们使用F1值和准确­率(Acc)两种指标。

2.2 结果与分析

为了进一步测试方法的­有效性, 我们选择多个Base­line 进行比较。其中, CNN, LSTM 和 BI-LSTM分别为单层卷­积网络、单层循环网络和单层双­向循环网络。H-RNN 去掉了 H-RNN-CNN 顶层的 CNN结构。同时引用在相同数据集­上已有的代表性工作进­行比较。其中, Wang 等[18]在 NLPCC 2014 的该项评测上取得最好­的效果, 他们在 Mikolov 等[19]的Skip-gram 模型中, 将情感输出也作为目标­函数的一部分, 从而得到包含情感信息­的词向量, 最后将其用于 Svm。chnsentico­rp 数据集有多个版本(从领域、规模到是否去重都不同), 我们整理了 2012年以来最好的­一些使用单个分类器的­方法。Zhang

[20]等 利用句子的子串特征, 通过 KNN 和 Rocchio进行分­类。Luo 等[21]提出一种结合 DF 和 CHI 的特征选择技术 CDPNC, 使用 SVM 进行分类。Zhang

[22]等 使用 self-training 弱监督方法, 通过迭代, 不断更新整体效果。

我们在 5 组数据上做了实验, 结果如表 3 所示。在实验中, 我们实现的基于神经网­络的方法均以预训练好­的词向量作为输入。从表 3 可以看出, HRNN-CNN在多个数据集上­都取得最好的效果。

实验数据集有两个明显­的特性: 一是很多文本的情感信­息集中在小范围的上下­文中; 二是中文数据集文本的­长度较长, 相比之下, 英文文本要短很多。CNN 中卷积权值共享和池化­采样的特性有利于局部­信息的识别, 实验结果证明了这一点。特别是在较短的英文语­料中, 没有长文本带来的过多­噪声干扰, CNN 模型的效果比 LSTM 和 BI-LSTM 更好。LSTM的问题在于容­易忽视处于中间位置的­词语, 较难将情感信息完整地­传递下来。双向 LSTM注重同时参考­句首和句尾的信息, 因而能够纠正单向 LSTM 导致的一些错误。面对长文本, 与单层LSTM 相比, 多层的网络取得更好的­效果。多层的网络按照句子对­文本进行划分, 对于单个句子而言,较短的文本更容易提取­到关键的情感信息; 对于整体文本而言, 比在词语和在少量的句­子的建模容易得多。在语料中, 有些文本的情感信息对­相邻句子有一定的依赖­性, 句子级 CNN 结构的引入正是为了能­够学习到跨句子的信息。实验结果表明, 多加一层 CNN 结构, 效果有不到一个百分点­的提升。

我们还发现, 在情感分析任务上, 基于神经网络的方法并­不依赖于大量的标注文­本。在 Book, Hotel 和 Notebook 的训练集中, 样本总数不到 3000条, 使用神经网络的效果却­非常好。相比之下, 基于统计的机器学习方­法需要更大量的标注文­本。

本文还对 RNN 的变种做了实验, 结果如表所示。可以看出, 我们采用的 DVA+ MC (蒙特卡洛采样)取得更好的效果。使用 BI-GRU 替换 LSTM, 效果略微差一些, 不过, 由于门的数量减少, 速度有一些提升。单独使用 DVA 不一定更有效, 需要结合蒙特卡洛采样­技术。模型采用的噪声方式在­一定程度上相当于增加­训练文本, 整体而言, 增强了模型的泛化能力。

本文以 PR 数据集为例, 考察词向量、字向量和随机生成词向­量等不同输入对 H-RNN-CNN 模型的影响, 结果如表 5 所示。可以看出, 虽然字向量的效果不大­好, 但可以作为词向量的补­充, 在词向 量中增加字词信息取得­更好的效果。此外, 与微调预训练好的词向­量方法相比, 使用随机生成的词向量­方法效果稍差一些。原因可能是: 1) 数据集较小,很难直接训练出足够好­的向量, 而预训练的向量使用了­额外的非标注文本, 包含更多共现、相关的信息; 2) H-RNN-CNN 模型比较复杂, RNN 的结构也比较深, 加大了训练随机生成向­量的难度。字向量提升效果的原因­之一在于, 在中文处理中, 字也表达了相当的含义; 其次, 在分词过程中, 错误难以避免。单独使用字向量效果不­够理想的原因可能是部­分词(如外来词)以整体为单位, 不可划分, 并且词的歧义比字的歧­义更少, 一个字向量难以表达复­杂的多义信息。本文将字和词的向量表­示经过RNN结构处理, 再将特征表示进行拼接, 相当于补充了特征输入。

3 样例分析

样例 1 酒店设备陈旧, 服务差劲, 还不如二星级水准, 更令人郁闷的是我早晨­七点半下火车赶到酒店, 却被告知要到九点方能­入住, 否则就要加半天房租。结果为了避免挨冻, 多付了 250 元。结果携程还不算我的结­分。真是冤透了。

经过分词、分句等预处理, 样例 1 可以划分为以下 4个句子。

1) 酒店 设备陈旧, 服务 差劲, 还 不如 二星级 水准, 更 令人 郁闷 的 是 我 早晨 七点 半下火车 赶到 酒店, 却 被 告知 要 到 九点 方能 入住, 否则 就要 加 半天 房租。2) 结果 为了 避免 挨冻, 多付 了 250 元。3) 结果 携程 还 不算 我 的 结分。4) 真是 冤透 了。然后,对文本对进行补齐等处­理, 使得不同样例的文本都­有相同的句子数, 并且每个句子的词语数­也一致。尤其是需要使用 CNN 结构, 在文本前后都添加空句­子, 以便句首和句尾的卷积­操作。这些操作使得并行运算­变得更容易。本实验使用GPU

进行并行运算。由于 GPU 显存的限制, 需要调整批处理的大小­和文本的大小(句子长度和句子数)。对词语进行编号, 利用预训练好的词向量­进行映射,即可使用 H-RNN-CNN 模型。不同窗口大小的卷积核­能够学习到不同的特征。窗口大小为 1 的卷积核提取最多的是­第 4 句,其次为第 1 句, 共占 60%。通过分析可知, 第 4 句“真是 冤透了。”和第1句“酒店 设备陈旧, 服务差劲, 还 不如 二星级 水准, 更 令人 郁闷 的是我 早晨 七点 半 下 火车 赶到 酒店, 却被告知 要 到 九点 方 能 入 住, 否则 就要 加 半天房租。”确实表达了更突出的情­感倾向。窗口大小为 2的卷积核提取最多的­则是前两句(也占 60%),也的确对文本整体的负­面情感倾向起着重要的­作用。说明顶层CNN结构的­意义: 窗口大小为 1 的卷积核可以捕获重要­的句子, 无论句子位于文本的任­何位置, 窗口更大的卷积核也能­提取出相对重要的上下­文窗口。如果仅仅使用 RNN 结构, 这些重要特征相对不容­易提取。

我们还分析了主要错误, 其中多数同时包含褒贬­的文本, 例如样例 2 和样例 3。

样例2 酒店门口时条单行道, 外出有些不方便!其他还行

样例 2可以划分为以下两个­句子。1) 酒店 门口 时 条 单行道, 外出 有些 不方便! 2) 其他 还行样例 3 因为工作关系, 这里位置还是可以的,周围环境呢就不是很好, 房间还行, 干净就好。

样例 3可以划分为: 因为 工作 关系, 这里位置 还是 可以 的, 周围环境 呢 就 不是 很好, 房间 还 行, 干净 就 好。

样例 2 中, 文本划分后得到两个句­子, 分别表达贬义和褒义的­情感信息。在标注数据中的答案应­为褒义, 但模型将文本划分成贬­义。尽管样例 1 显示了CNN 结构提取特征的能力, 但仍然有一定的噪声干­扰, 特别是在窗口较小时噪­声更多。难点在于候选过多时噪­声也增加。样例 3 是更为常见的情况, 在一个句子而不是多个­句子中表达了两种情感,我们认为这些错误不一­定在于 CNN 结构, 底层的RNN 结构可能就很难对句子­的情感做出判断, 从而影响最终的预测。对于这种错误, 我们使用的长、短期记忆网络(LSTM)在理论上是能够处理的, 可以利用遗忘门(forget gate)等机制, 跟踪情感信息的变化。但是, 在实际上不容易训练而­导致过拟合。经过实验测试, 可以通过对门(gate)等进行正则化运算, 提高模型的泛化能力。

4 结语

文本情感分类是自然语­言处理的重要内容, 有广泛的应用需求。本文联合循环神经网络­和卷积神经网络, 提出多层网络模型 H-RNN-CNN。在模型中引入句子层, 并使用两层的 RNN 对文本建模,有助于长文本的情感倾­向判断。在此基础上, 通过CNN 来协助判断跨语句的信­息。在多个中文数据集上的­实验表明, 本文提出的模型取得较­好的结果,只在 Notebook 上的 Acc 略低于CNN模型。在英文数据 MR上的实验结果也超­过所有的基线系统。

在未来的工作中, 我们将研究如何在本框­架下进一步引入注意力­机制, 考察文本中不同句子对­文本情感分类的影响。此外, 针对小规模语料, 可能需要更多外部知识­的引入, 以无监督方式学习到的­词语、字符甚至字符知识也可­以成为研究的方向。

 ??  ?? 图 1 H-RNN-CNN 结构Fig. 1 H-RNN-CNN model architectu­re
图 1 H-RNN-CNN 结构Fig. 1 H-RNN-CNN model architectu­re
 ??  ?? 图 2 DVA 结构Fig. 2 DVA model architectu­re
图 2 DVA 结构Fig. 2 DVA model architectu­re
 ??  ??
 ??  ??
 ??  ??
 ??  ??
 ??  ??
 ??  ??
 ??  ??

Newspapers in Chinese (Simplified)

Newspapers from China