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

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模型:LSTMLLSTM_LLSTMLLSTMRLSTM_RLSTMRLSTMLLSTM_LLSTML的输入为目标词之前的上下文加上目标词,即从一个句子的第一个单词,到最后一个target words Wr−1W_{r-1}Wr1依次输入;LSTMRLSTM_RLSTMR的输入则是目标词之后的上下文加上目标词,即从句子的最后一个单词WnW_nWn,到第一个target words Wl+1W_{l+1}Wl+1依次输入。模型用SoftMax函数作为最后一层的激活函数来实现分类,用交叉熵作为损失函数来计算损失。模型结构和LSTM对比如下:

2.2.2 TC-LSTM

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

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α对隐藏向量进行赋值,得到最终的句子表示,然后预测情感。模型的结果如下图所示:

2.3.2 ATAE-LSTM

(Attention-based LSTM with Embedding)

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

2.3.3 TNET

TNET模型结构如下图所示:

最底部是一个Bi-LSTM,根据输入的词序列X=x1,x2,...,xnX={x_1,x_2,...,x_n}X=x1,x2,...,xn经过Bi-LSTM得到状态输h(0)=h1(0),h2(0),...,hn(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结构如下图所示:

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

其中,LF的结构是将第(I)个CPT层的输入hi(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的情感分类以及医学上的情感分类,最终确定用类似情感轮的“十情模型”。

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

【例】

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

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

辛小丰:我得回去……

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

辛小丰爬起来,往回走。

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

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

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

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

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

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

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

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

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

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

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

3.2 第二版情感分析模型

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

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

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

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

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

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

改进如下:

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

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

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

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

  1. 剧本角色情感分析赛后总结

    datafountain剧本角色情感分析赛后总结 模型的搭建 整数与浮点数提交之争 上下文的选择以及主语的加入 验证集和测试集的划分问题 多折模型训练及模型融合的方法 融合提升的要点 预训练操作 对抗 ...

  2. CCF BDCI 剧本角色情感识别:多目标学习开源方案

    1.赛题名称 剧本角色情感识别 比赛链接:https://www.datafountain.cn/competitions/518 2.赛题背景 剧本对影视行业的重要性不言而喻.一部好的剧本,不光是好 ...

  3. 深度学习在情感分析中的应用

    然语言情感分析简介 情感分析无处不在,它是一种基于自然语言处理的分类技术.其主要解决的问题是给定一段话,判断这段话是正面的还是负面的.例如在亚马逊网站或者推特网站中,人们会发表评论,谈论某个商品.事件 ...

  4. 百度王海峰:多模态深度语义理解将让AI更深地理解真实世界

    7月4日召开的百度AI开发者大会(Baidu Create 2018)上,百度高级副总裁.AI技术平台体系(AIG)总负责人王海峰发布百度大脑3.0,并指出,百度大脑3.0的核心是"多模态深 ...

  5. 百度AI开发者大会百度大脑论坛:详解“多模态深度语义理解”

    7月4日召开的百度AI开发者大会(Baidu Create 2018)上,百度高级副总裁.AI技术平台体系(AIG)总负责人王海峰发布百度大脑3.0,并指出,百度大脑3.0的核心是"多模态深 ...

  6. [深度学习] PyTorch 实现双向LSTM 情感分析

    一  前言 情感分析(Sentiment Analysis),也称为情感分类,属于自然语言处理(Natural Language Processing,NLP)领域的一个分支任务,随着互联网的发展而兴 ...

  7. 了解情感分析中的NLP技术么?

    ●今日面试题分享● 了解情感分析中的NLP技术么? 解析: 人际交往不仅仅是文字和其明确的含义,而且它还是微妙且复杂的.即使在完全基于文本的对话中,你也可以根据单词选择和标点符号判断客户是否感到愤怒. ...

  8. 复旦大学邢晓渝:细粒度情感分析中模型的鲁棒性研究

    ⬆⬆⬆              点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 细粒度情感分析,也叫做基于方面的情感分析是情感分析中的一个子任务.虽然现有的模型在该任务上的效果很好, ...

  9. 情感分析中的情感分析机器人:基于语音识别的方法

    作者:禅与计算机程序设计艺术 <情感分析中的情感分析机器人:基于语音识别的方法> 引言 1.1. 背景介绍 随着人工智能技术的快速发展,自然语言处理(Natural Language Pr ...

最新文章

  1. 一些实用的 Javascript 代码
  2. java clob内存溢出_java - java.sql.SQLException:ORA-01704:字符串文字太长时插入或更新 - 堆栈内存溢出...
  3. incompatible with sql_mode=only_full_group_by
  4. mysql版本 时间_【MySQL】MySQL版本时间线和MySQL各版本的区别
  5. 用css实现模仿火狐社区的一个提示框
  6. CCNA2.0笔记_ACL
  7. Java虚拟机(一)——内存管理
  8. 蓝桥杯 ADV-74 算法提高 计算整数因子
  9. SqlDictionary表,使用SQL语句查询TableID
  10. html页面发送post请求中文乱码,用XMLHTTP Post/Get HTML页面时的中文乱码问题之完全Script解决方案...
  11. 三级java_java三级(最全的题库).doc
  12. napa与matlab,纳帕谷产区Napa Valley|酒斛网 - 与数十万葡萄酒爱好者一起发现美酒,分享微醺的乐趣...
  13. QQ发送PDF为什么显示服务器,为什么QQ接收的PDF文件打不开
  14. P9 android8 第三方,华为P9--第三方安卓8.0ROM--GZOSP Oreo--XDA 已发布!
  15. Outlook无法启动一直显示“正在启动”的解决方法
  16. 039.简单的文本编辑器
  17. SQL数据库完美恢复 SQL数据库损坏修复
  18. SpringBoot 亚马逊Simple邮件发送
  19. 机器人擂台的利剑_格斗机器人史上攻击力大排行,排名第一的果然是TA!
  20. failed to connect to ‘192.168.*.*:5555‘: Connection refused

热门文章

  1. Unity 报错TLS Allocator ALLOC_TEMP_THREAD, underlying allocator ALLOC_TEMP_THREAD
  2. 六个在线生成网址二维码的API接口
  3. PC_二进制移位运算/定点数移位/算数移位及其移位后的空位添补规则/机器数位数扩充
  4. 2015-8-25股市大跌
  5. Word中灵活的首字下沉
  6. 操作系统---页式地址重定位
  7. laravel 系统服务-助手函数
  8. 思科、华为交换机err-disable的相关排查解决
  9. 云适配陈本峰谈前端:移动端浏览器很快就会赶上PC浏览器
  10. 2019年终总结,内疚感满满的一年