编者按

文本情感分析是对带有主观感情色彩的文本进行分析、处理、归纳和推理的过程。互联网上每时每刻都会产生大量文本,这其中也包含大量的用户直接参与的、对人、事、物的主观评价信息,比如微博、论坛、汽车、购物评论等,这些评论信息往往表达了人们的各种主观情绪,如喜、怒、哀、乐,以及情感倾向性,如褒义、贬义等。基于此,潜在的用户就可以通过浏览和分析这些主观色彩的评论来了解大众舆论对于某一事件或产品的看法。

百分点认知智能实验室基于前沿的自然语言处理技术和实际的算法落地实践,真正实现了整体精度高、定制能力强的企业级情感分析架构。从单一模型到定制化模型演变、文本作用域优化、多模型(相关度)融合、灵活规则引擎、以及基于实体的情感倾向性判定,探索出了一套高精准、可定制、可干预的智能分析框架,为舆情客户提供了高效的预警研判服务。

本文作者:常全有 刘政


一、情感分析概述

文本情感分析,即 Sentiment Analysis(SA),又称意见挖掘或情绪倾向性分析。针对通用场景下带有主观描述的中文文本,自动判断该文本的情感极性类别并给出相应的置信度,情感极性分为积极、消极、中性等。

在文本分析的基础上,也衍生出了一系列细粒度的情感分析任务,如:

  • 基于方面的情感分析(ABSA):一般称作 Aspect Based Sentiment Analysis。旨在识别一条句子中一个指定方面(Aspect)的情感极性。常见于电商评论上,一条评论中涉及到关于价格、服务、售后等方面的评价,需要区分各自的情感倾向。
  • 基于实体的情感倾向性判定(ATSA):  一般称作 Aspect-Term Sentiment Analysis。对于给定的情感实体,进行情感倾向性判定。在一句话中不同实体的情感倾向性也是不同的,需要区别对待。

▶ 核心目标和价值

舆情系统的最核心需求,是能够精准及时的为客户甄别和推送负面,负面识别的准确性直接影响信息推送和客户体验,其中基于文本的情感分析在舆情分析中的重要性不言而喻,下图简要展示了文本分析以及情感分析在舆情体系中的作用。

paddlenlp 评价对象级的情感分类 情感评价的特征_情感分析

舆情数据通过底层的大数据采集系统,流入中间层的 ETL 数据处理平台,经过初级的数据处理转化之后,向上进入数据挖掘核心处理环节;此阶段进行数据标准化、文本深度分析,如地域识别、智能分词、情感判定、垃圾过滤等,经过文本处理的结果,即脱离了原始数据的状态,具备了客户属性,基于客户定制的监测和预警规则,信息将在下一阶段实时的推送给终端客户,负面判定的准确度、召回率,直接影响客户的服务体验和服务认可度。

▶ 难点与挑战

舆情业务中的情感分析难点,主要体现在以下几个方面:

1. 舆情的客户群体是复杂多样的,涉及行业多达24个(如下图所示),不同行业数据特点或敏感判定方案不尽相同,靠一个模型难以解决所有问题;

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_02

2. 舆情监测的数据类型繁多, 既有常规的新闻、微信公众号等媒体文章数据,又有偏口语化的微博、贴吧、问答数据,情感模型往往需要针对不同渠道类型单独训练优化,而渠道粒度的模型在不同客户上效果表现也差别巨大;

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_03

3. 客户对情感的诉求是有差异的,有些客户会有自己专属的判定条件。通用的情感模型难以适应所有客户的情感需求。

4. 随着时间推移,客户积累和修正的情感数据难以发挥价值。无法实现模型增量训练和性能的迭代提高。

5. 对于关注品牌、主体监测客户,需要进行特定目标(实体)情感倾向性(ATSA)判定。那么信息抽取就是一个难题。

6. 对于新闻类数据,通常存在标题和正文两个文本域。如何提取有价值的文本信息作为模型输入也是面临的困难。

 

二、情感分析在百分点舆情的发展历程

从2015年开始,百分点舆情便开始将机器学习模型应用在早期的负面判定中;到2020年,我们已经将深度迁移学习场景化和规模化,也取得了不错的成果;

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_04

2015年:抓取百万级别的口碑电商评论数据,使用逻辑回归进行建模,做为情感分析的BaseLine;

 

2016年:主要侧重于技术上的递进,进入深度学习领域。引入word2vec在大规模语料集上进行训练,获得具有更好语义信息的词向量表示,替代基于Tfidf等传统的统计特征。随后在TextCnn、TextRnn等深度学习算法进行更新迭代,尽管得到数字指标的提高,但是对于实际业务的帮助还是不足。

 

2017年:结合舆情全业务特点,需要能做到针对品牌、主体的情感监测。提出 Syntax and Ruler-based Doc sentiment analysis的方式,依据可扩充的句法规则以及敏感词库进行特定的分析。该方式在敏感精准度指标上是有提升的,但是却有较低的召回。同时在进行规则扩充时,也比较繁琐。

 

2019年上半年:以Bert为代表的迁移学习诞生,并且可以在下游进行fine-tune,使用较小的训练数据集,便能取得不错的成绩。进行以舆情业务数据为基础,构建一个简易的文本平台标注平台,在其上进行训练数据的标注,构建了一个通用的情感模型分类器。评测指标 F1值为 0.87,后续对 ERNIE1.0 进行尝试,有两个百分点的提升。

 

2019年下半年:主要从舆情的业务问题入手,通过优化提取更加精准、贴近业务的情感摘要作为模型输入,使用定制化模型以及多模型融合方案,联合对数据进行情感打标。并提出基于情感实体(主体)的负面信息监测,下述统称ATSA(aspect-term sentiment analysis),使用 Bert-Sentence Pair 的训练方式, 将 摘要文本、实体联合输入,进行实体的情感倾向性判定。在定点客户上取得不错的成绩,最后的F1值能达到 0.95。

 

2020年:将细化领域做到客户级别,定制私有化情感模型。同时将加大对特定实体的细粒度情感分析(ATSA)的优化;同时,通过内部 AI训练平台的规模化应用,做到模型的全生命周期管理,简化操作流程,加强对底层算力平台的资源管控。

 

三、预训练语言模型与技术解析

下图大致概括了语言模型的发展状况(未完全统计):

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_05

 

在2019年度情感分析实践中,率先使用预训练语言模型 Bert,提高了情感分析的准确率。后来具有更小参数量的ALBERT的提出,使生产环境定制化情感模型成为可能。这里就主要介绍BERT以及ALBERT。

 

▶ BERT

BERT(Bidirectional Encoder Representations from Transformerss)的全称是基于 Transformer 的双向编码器表征,其中「双向」表示模型在处理某一个词时,它能同时利用前面的词和后面的词两部分信息(如下图所示)。

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_06

在BERT中, 主要是以两种预训练的方式来建立语言模型。

1.MLM(Masked LM)

MLM可以理解为完形填空,作者会随机mask每一个句子中15%的词,用其上下文来做预测,例如:my dog is hairy → my dog is [MASK]。此处将hairy进行了mask处理,然后采用非监督学习的方法预测mask位置的词是什么,具体处理如下:

  • 80%是采用[mask],my dog is hairy → my dog is [MASK]
  • 10%是随机取一个词来代替mask的词,my dog is hairy -> my dog is apple
  • 10%保持不变,my dog is hairy -> my dog is hairy

 之后让模型预测和还原被遮盖掉或替换掉的部分。

2.NSP(Next Sentence Prediction)

首先我们拿到属于上下文的一对句子,也就是两个句子,之后我们要在这两段连续的句子里面加一些特殊 token:  [cls] 上一句话,[sep] 下一句话. [sep]

也就是在句子开头加一个 [cls],在两句话之中和句末加 [sep],具体地就像下图一样:

paddlenlp 评价对象级的情感分类 情感评价的特征_数据_07

  • Token Embeddings:是词向量,第一个单词是CLS标志,可以用于之后的分类任务。
  • Segment Embeddings:用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务。
  • Position Embeddings:让BERT学习到输入的顺序属性。

BERT在文本摘要、信息检索、数据增强、阅读理解等任务中,也有实际的应用和发展。更多关于Bert相关介绍,请参照百分点认知智能实验室往期文章。

 

▶ ALBERT

ALBERT的全称是A Lite BERT for Self-supervised Learning of Language Representations(用于语言表征自监督学习的轻量级BERT),相对于Bert而言,在保证参数量小的情况下,也能保持较高的性能。当然同样的模型还有 DistilBERT、TinyBERT。

1.ALBERT 和BERT的比较

下图是BERT和ALBERT在训练速度和性能上的整体比较:

paddlenlp 评价对象级的情感分类 情感评价的特征_情感分析_08

  • ALBERT-xxlarge的表现完全超过BERT-large,同时参数量只有其占比的70%,但是Bert-large的速度要比ALBERT-xxlarge快三倍左右。
  • BERT-xlarge的性能相对于Bert-base是低效的,表明大参数模型相对于小参数模型更加难训练。  

2.ALBERT的目标

在基于预训练语言模型表征时,增加模型大小一般可以提升模型在下游任务中的性能。但是通过增加模型大小会带来以下问题:

  • 内存问题
  • 训练时间会更长
  • 模型退化

在将Bert-large的隐层单元数增加一倍, Bert-xlarge在基准测试上准确率显著降低。

paddlenlp 评价对象级的情感分类 情感评价的特征_数据_09

ALBERT核心目标就是解决上述问题, 下面就来介绍ALBERT在精简参上的优化。

3.ALBERT模型优化

明确参数的分布,对于有效可靠的减少模型参数十分有帮助。ALBERT同样也只使用到Transformer的Encoder阶段,如下图所示:

paddlenlp 评价对象级的情感分类 情感评价的特征_数据_10

图中标明的蓝色方框和红色方框为主要的参数分布区域:

  • Attention feed-forward block(上图中蓝色实线区域):
  • 参数大小: O(12 * L * H * H)
  • L:编码器层数 eg:12
  • H:隐藏层大小 eg:768
  • 参数量占比:80%
  • 优化方法:采用参数共享机制
  • Token embedding projection block(上图中红色实线区域):
  • 参数大小:(V * E)
  • V:词表大小  eg:30000
  • E:词嵌入大小 eg:768
  • 参数量占比: 20%
  • 优化方法:对Embedding进行因式分解

具体参数优化如下:

Factorized embedding parameterization(对Embedding因式分解)

ALBERT认为,token embedding是没有上下文依赖的表述,而隐藏层的输出值不仅包括了词本身的意思还包括一些上下文信息,因此应该让H>>E,所以ALBERT的词向量的维度是小于encoder输出值维度的。在NLP任务中,通常词典都会很大,embedding matrix的大小是E×V。

ALBERT采用了一种因式分解(Factorized embedding parameterization)的方法来降低参数量。首先把one-hot向量映射到一个低维度的空间,大小为E,然后再映射到一个高维度的空间,当E<<H时参数量减少的很明显。如下图所示:

paddlenlp 评价对象级的情感分类 情感评价的特征_情感分析_11

 

可以看到,经过因式分解。参数量从O(V * H) 变为O(V*E + E*H),参数量将极大减小。如下图所示:在H=768条件下,对比E=128和E=768,参数量减少17%,而整体性能下降0.6%。

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_12

在后续的实验环境(所有的优化汇总后),对 embedding size 的大小进行评估,得出在  E=128时,性能达到最佳。

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_13

Cross-layer parameter sharing(跨层参数共享)

下图是对BERT-Base Attention分布的可视化。对于一个随机选择的句子,我们可视化来自不同Layer的Head的Attention分布。可以看到,底层的Attention分布类似于顶层的Attention分布。这一事实表明在某种程度上,它们的功能是相似的。

 

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_14

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_15

转存失败重新上传取消

paddlenlp 评价对象级的情感分类 情感评价的特征_情感分析_16

Transformer中共享参数有多种方案,只共享feed-forward层,只共享attention层,ALBERT结合了上述两种方案,feed-forward层与attention层都实现参数共享,也就是说共享encoder内的所有参数。但是需要主要的是,这只是减少了参数量,推理时间并没有减少。如下图所示:在采用 all-shared模式下,参数量减少70%,性能下降小于3%。

paddlenlp 评价对象级的情感分类 情感评价的特征_情感分析_17

在经过上述的参数优化后,整体参数量有了极大的缩减,训练速度也极大加快。后续作者又在模型变宽和模型变深上做了几组实验。如下:

模型变宽

当我们增加 H 大小时,性能会逐渐提高。在H=6144时,性能明显下降。如下图所示:

paddlenlp 评价对象级的情感分类 情感评价的特征_情感分析_18

模型变深

在以ALBERT-large为基础参数,设置不同的layer大小,发现layer=48的性能要差于layer=24的性能,如下图所示: 

paddlenlp 评价对象级的情感分类 情感评价的特征_作用域_19

一些实验表示NSP(BERT-style)非但没有作用,反而会对模型带来一些损害。作者接着提出SOP(ALBERT-style)的优化模式。具体如下:

Inter-sentence coherence loss(句子连贯性)

在ALBERT中,为了去除主题识别的影响,提出了一个新的任务 sentence-order prediction(SOP),SOP的正样本和NSP的获取方式是一样的,负样本把正样本的顺序反转即可。SOP因为是在同一个文档中选的,只关注句子的顺序并没有主题方面的影响。并且SOP能解决NSP的任务,但是NSP并不能解决SOP的任务,该任务的添加给最终的结果提升了一个点。

在后续的实验中, ALBERT在训练了100w步之后,模型依旧没有过拟合,于是乎作者果断移除了dropout,没想到对下游任务的效果竟然有一定的提升。

paddlenlp 评价对象级的情感分类 情感评价的特征_数据_20

当然作者对于增加训练数据和训练时长也做了详尽的对比和测试,这里不再进行描述。

在最初的 ALBERT发布时,是只有中文的。感谢数据工程师徐亮以及所在的团队,于 2019 年 10 月,开源了首个中文预训练的中文版 ALBERT 模型。