深度语义理解在剧本角色情感分析中的探索与应用

深度语义理解在剧本角色情感分析中的探索与应用

1、背景

剧本分析是内容生产链条的第一环,因此,我们结合专家经验知识,大数据与自然语言处理计数来帮助业务部门快速分析和评估剧本。评估体系中涉及到了大量关于角色的分析,其中角色的情感分析是非常重要的一个人物。

不同于通常的评论类短文本,剧本有其独特的业务特点,因此任务的目标和建模与通常的任务区别不大。本文将系统地介绍情感分析领域的相关内容,以及爱奇艺在剧本分析中针对角色进行细粒度情感分析所作的工作。

2、常见的情感分析任务的分类

2.1 传统的情感分析

传统的情感分析,通常是对一句话,或者一段话所作出的一个总的情感判定(积极,消极,中性),可以看作是一个文本分类任务。通常的方法分为:词法规则分析,算法模型分析,混合分析。

  • 【词法规则】

使用词法分析将输入文本转换成词序列,然后依次和一个预先准备好的词典进行匹配。如果是积极的匹配,分数就增加;如果是消极的匹配,分数就减小。文本分类取决于单词序列的总得分。当然,计算公式上可以有一些变化,不一定是单纯的线性加减。

  • 【算法模型分析】

情感分析任务中通常是使用有监督的模型,一般可以分成三个阶段:数据收集,预处理,训练分类。可以使用NB,LR,SVM等传统机器学习算法,以及CNN,RNN等系列深度学习算法。

传统的机器学习任务,特征的构造很重要,这是决定准确率的关键。特征构建方法也很多。比如:N-grams、积极/消极词汇的数量、文本长度等。深度学习时代,关键是网络结构的设计,以及语料的构建。

  • 【混合分析】

工业应用上,很多时候都是将“词法分析”与“算法模型分析”两种方法结合进行使用。一些研究者在这方面做了大量工作,一般都是先利用字典对原文本进行处理转化,然后再利用算法模型进行分类。

随着深度学习的发展,特别是Bert这些预训练模型的出现,大家的中心和焦点都发生了变化。从原来研究各种数据处理,特征提取trick,转为研究如何设计网络,如何转化问题以最大程度利用预处理模型。

2.2 target-dependent情感分析

与典型情感分析任务不同,target-dependent情感分析是研究基于目标的情感。给定一个句子和句子相关的对象,判断句子针对给定的对象的情感倾向。

例如:有句子:“张三再学校很受大家欢迎,但是邻居李四不太受欢迎。”

其中,居于目标“张三”,句子的情感是正向的,;基于“李斯”,句子的情感是负面的。

可见,与传统的情感分析任务相比,任务的难度和复杂性大大增加,一般都是使用深度学习模型来解决。

2.2.1 TD-LSTM

传统的LSTM模型并没有考虑被评估的目标词与上下文的相互关系,为了引入这一部分的信息,TD-LSTM应运而生。TD-LSTM的主体结构是基于LSTM的。其基本思想是根据target words之前和之后的上下文分别建模。所以实际上,使用的两个LSTM模型: L S T M L LSTM_L LSTML L S T M R LSTM_R LSTMR L S T M L LSTM_L LSTML的输入为目标词之前的上下文加上目标词,即从一个句子的第一个单词,到最后一个target words W r − 1 W_{r-1} Wr1依次输入; L S T M R LSTM_R LSTMR的输入则是目标词之后的上下文加上目标词,即从句子的最后一个单词 W n W_n Wn,到第一个target words W l + 1 W_{l+1} Wl+1依次输入。模型用SoftMax函数作为最后一层的激活函数来实现分类,用交叉熵作为损失函数来计算损失。模型结构和LSTM对比如下:

img

2.2.2 TC-LSTM

TC-LSTM在TD-LSTM的基础上,在输入端加入了 V t a r g e t V_{target} Vtarget,即target words的信息。具体做法就是将原先的词向量与target words向量拼接起来,其中 V t a r g e t V_{target} Vtarget是所有target words字向量的平均值。TC-LSTM整个了target words和context words的相互关联信息。模型同样用SoftMax函数作为最后一层的激活函数来实现分类,用交叉熵作为损失函数来计算损失。模型结果如下:

img

2.3 Aspect-level情感分析

TD-LSTM和TC-LSTM两个模型,只能用于target在句子中都出现的情况。对于aspect,它往往是某个target的抽象,aspect本身在句子中可能没有出现。而TD-LSTM、TC-LSTM两个模型都需要知道target在句子中的具体位置,因此在面向aspect的任务中无法使用。

2.3.1 AT-LSTM

Aspect信息在对象级情感分析任务上具有至关重要的作用,给定同一句话,针对不同的Aspect可能会得到完全相反的结果,为了最好的利用Aspect的信息,需要为每一个Aspect学习对应的向量,然后将Aspect向量的信息输入到模型之中。另外,传统的LSTM方法在对象级情感分析任务上不能检测到文本信息的哪一部分是最关键的,为了解决这一问题,AT-LSTM方法增加了attention机制。模型首先通过一个LSTM模型得到每个词的隐藏状态向量,然后将其与Aspect Embedding连接,Aspect Embedding作为模型参数一起训练,从而得到句子在给定的aspect下的权值向量 α \alpha α,最后根据权值向量 α \alpha α对隐藏向量进行赋值,得到最终的句子表示,然后预测情感。模型的结果如下图所示:

img

2.3.2 ATAE-LSTM

(Attention-based LSTM with Embedding)

在AT-LSTM的基础上,在句子输入时再额外拼接对象词向量,就是ATAE-LSTM模型,即同时在模型的输入部分和隐藏部分引入aspect信息。与TC-LSTM的思想类似,使用这种额外的方法进一步在句子表示中更好地利用目标词和每个上下文词之间的关系。模型的结构如下图:

img

2.3.3 TNET

TNET模型结构如下图所示:

img

最底部是一个Bi-LSTM,根据输入的词序列 X = x 1 , x 2 , . . . , x n X={x_1,x_2,...,x_n} X=x1,x2,...,xn经过Bi-LSTM得到状态输 h ( 0 ) = h 1 ( 0 ) , h 2 ( 0 ) , . . . , h n ( 0 ) h(0)={h_1(0),h_2(0),...,h_n(0)} h(0)=h1(0),h2(0),...,hn(0),中间层包含L个CPT层,模型经过中间层将结果送到最上层的卷积层,使用Max Pooling的方法提取特征,最后使用SoftMax得到输出的情感类别。

可以看到,关键在于CPT模块,每一个单独的CPT结构如下图所示:

img

包括量身定制的TST(Target-Specific Transformation)和LF/AS两个子结构。TST结构主要是为了强化上下文的词表达与对象表达之间的关系,其最底层是一个Bi-LSTM,输入是对象词的Embedding,输出对应的隐藏层状态。由于传统的方法(多个对象词取平均)会忽略组成target(即对象)的多个词的顺序及重要度,这样的对象词表达会更加充分地表示原有对象词的含义。同时,在其上加上一个attention,基于每一个hmt(target的隐层状态输出)和每一个输入的 h i ( l ) h_i^{(l)} hi(l)得到 r t r^t rt,最后将r和h拼接后经过一个全连接层送到LF/AS结构中,经过非线性的TST后,原上下文信息容易大量丢失。通过Lossless Forwarding(LF)和Adaptive Scaling(AS)来找回丢失的信息。

其中,LF的结构是将第(I)个CPT层的输入 h i ( l ) h_i^{(l)} hi(l)在输出时再加回来这样的话就不会损失掉原有的信息了。AS的结构是类似于RNN的门机制,训练一个门结构,AS通过门函数控制哪些信息被传递和传递的比例。

3、角色细粒度情感分析

剧本中角色情感分析的任务主要是对剧本每句对白和动作描述中涉及到的每个角色从多个维进行分析。因此,相比于常见的情感分析任务,有其自身的特征。其中碰到的难点包括一下几个大的方面。

  • 角色人名识别

不同于通常的新闻,评论性文本,剧本中角色的名字很多时候都是非常规的,特别是一些玄幻类剧本角色的命名更加天马行空。

  • 构建一个符合业务场景的情感维度模型
  • 更加深层次的语义理解。

角色情感不仅仅取决于当前文本,可能需要对当前语义有深度依赖。一方面,前文依赖的长度可能较长,尽管很多深度模型本身能一部分解决长文本依赖的问题,但是对于窗口超过一定长度的语义理解仍然很吃力。另一方面,需要根据业务特点设计特定的网络结构以更好的捕获信息。

3.1 角色识别

由于需要对角色进行情感分析,因此首先的问题就是要识别剧本中的“角色”;同时,我们还需要识别出“角色”的类型。理论上我们需要这针对那些对剧情有推动力的“主,配角”进行分析,而忽略掉“打酱油”的“群众”。

“角色“人名识别属于NER任务。NER属于一个很经典的NLP领域,早期的HMM,CRF在很多业务领域都已经能够比较好的解决问题。深度学习时代,大家一般都使用Bi-LSTM+CRF的方案。但不同于通常的新闻,评论性文本,识别剧本角色名碰到的问题包括:

  • 剧本中的名字很多时候是非常规的,特别是一些玄幻类剧本,角色的命名更是天马行空。
  • 剧本的行文风格和筒仓的新闻类语料差别较大。

可以看出,通常的开源语料不能做为剧本角色人名识别的训练语料。这对使用深度模型造成了一定的障碍,而传统的HMM,CRF等模型在剧本这种复杂场景中效果很差。

当然剧本作为长文本,也有其自身在统计方面的优势,这是我们可以充分利用的。

首先,我们使用"新词发现"这样的概率模型,以充分利用剧本这种长文本在统计层面的优势。

深度模型方面,我们使用了Bi-LSTM+CRF和Lattice LSTM两个深度模型。Bi-LSTM+CRF是业界经典的方案,Bi-LSTM网络加上一个CRF层,能为模型输入一些专家经验。同时,为了避免分词带来的误差,我们使用了不同分词的方案,这样就不可避免的丢失了一些成词方面的信息。比如:“爱奇艺创新大厦”这种成词是有意义的,应该把这种信息带入模型中。所以,我们补充了Lattice-LSTM模型,以弥补“不分词”方案带来的问题。

两个深度模型能够进行有益的补充,但他们对训练语料和标注质量的要求都比较高,而领域语料的缺乏正是大家的痛点之一。一方面我们会进行一些高质量的人工标注,这个工作的代价比较大,工期较长,另一方面利用“新词发现”无监督模型的输出来自动化构建标注语料。一个模型的输出又能够作为另外模型的输入,这样就形成了内部的良性自循环。

3.2 第一版情感分析模型

做情感分析,构建一个合理的情感分析业务模型是最基础的工作。我们结合了“普鲁奇克情感轮盘”、EKman的情感分类以及医学上的情感分类,最终确定用类似情感轮的“十情模型”。

我们会针对剧本每句话中涉及到的每个不同角色的情感从“爱,乐、信、期、惊、疑、忧、怒、哀、恐”十个维度进行细粒度的分析。如下:

【例】

辛小丰躺在地上,回想发生的事。

(闪回 - 阁楼少女出浴,擦拭身体时,可见脖颈挂着玉坠。结束)

辛小丰:我得回去……

img

这话让喘息中的杨自道,陈比觉心惊。

img

辛小丰爬起来,往回走。

陈比觉:你要回去……我干你姥,你要回去!我们三个都被你毁了!干你母,我干你母!

陈比觉打辛小丰,辛小丰不还手。

img

剧本中,“对白”和“动作”在描述风格和语义表达方面存在差异,因此,需要分别针对“对白”和“动作”进行建模。如前面介绍。在进行语义理解时候有两个关键问题需要解决。

(1)需要理解较长的前文信息。

(2)要定位到每一句的每一个角色

对于第一个问题,BERT已经能一定程度上解决了,通常要做的就是把输入数据按照BERT的任务要求输入,然后将最高层“CLS”位置的Embedding输入到一个分类模型。如下:

img

但是这里有个关键问题,我们需要定位到每一个“角色”,直接使用BERT的这种粗犷的方式并不能解决问题。另外,BERT由于有512窗口的限制,在我们的场景中,对于前文信息的理解这一块也是不太足的,这个问题后面会说到。

要解决第二个问题,需要做一些更细致的工作。我们在前文中介绍了TD-LSTM,它能基于特定的对象进行分析,但是LSTM网络二点结构注定其在长文本环境下,效果比较差。

综上所述,我们既需要能够理解较长范围的文本信息,同时又能够精确定位到“角色”。**所以在分析“动作描述”时,我们使用了BERT-TD-LSTM网络结构。**使用BERT来做特征提取,利用TD-LSTM来对特定对象进行分析。模型结构如下:

img

在分析对白描述时候=,问题类似,但相比于动作描述,其在情感表达上通常更加直接,同时,对白描写能天然地定位到“角色”,所以我们在模型结构上做了一些改变。使用BERT+多层CNN的结构。

我们知道CNN网络本身存在窗口,难以捕获较长的语义,所以我们使用多层CNN来解决这个问题。另外,对白描写有表达相对直接,语义较浅层,所以在这里用CNN系列网络比RNN系列更加合适。模型结构如下:

img

3.2 第二版情感分析模型

剧本中角色的情感实际上不仅仅和当前描述所设计的内容有关,与整体的情感氛围,以及该角色之前的情感都有关系。可以看到,第一版的算法模型存在几个问题:

  • 没有考虑内容的情感氛围对角色当前情感的影响。
  • 没有考虑角色之前的情感带来的累积效应。
  • 由于BERT本身窗口的限制,导致前文信息有限。

总体来看,我们需要解决两个核心问题:

(1)需要理解更长的前文信息

(2)需要记录角色的情感累计信息

前文中我们也提到了BERT可以一部分解决前文信息的理解。但是,一方面BERT有512个字符窗口大小的限制;另一方面需要有一个明确的下游业务任务模型做指导。所以,我们有针对性地设计了第二版算法模型。

改进如下:

**针对第一个问题,**使用一个global GRU记录全局信息,每个时刻的状态和前一时刻的状态以及当前的句子有关,即:
g t = g G R U   ( g t − 1 , u t ) g_t=gGRU\ (g_{t-1},u_t) gt=gGRU (gt1,ut)
在这种业务模型下,不再盲目的然BERT利用Trm去理解文字之间的语义关联信息,较好地解决了前文信息获取的问题。

**针对第二个问题,**对于每个角色的状态通过emotion GRU进行编码,记录该角色的状态信息。当前窗口,每一角色对应一个针对该角色的eGRU。
e t = e G R U   ( e t − 1 , [ c t ; u t ˊ ] ) e_t=eGRU\ (e_{t-1},[c_t;u_t^{\acute{}}]) et=eGRU (et1,[ct;utˊ])
其中, c t c_t ct是一个所有前文句子向量的自注意编码。

若当前语句中有多个任务,则分别更新每个任务的 W 1 W_1 W1。然后通过FC层进行情感预测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值