首先需要清楚“判断标准”。多数情况下默认的情感分析的评判标准是“一段文本的情感多分类的准确性”。这是有问题的。因为聊天不同于陈述,这背后涉及到一个本质的区别——“是否有交互”。一旦涉及到交互,情感分析(sentiment analysis)评判标准的复杂度就要上升不止一个数量级了。
“Affective Computing”(情感计算)和NLU是AI领域重要的研究方向,而其中针对中文的情感、情绪识别与理解,竹间智能已经做了许多研究与探索,希望帮助AI在语义理解的基础上更进一步,实现真正的人机情感交互。此次我们邀请 竹间智能高级算法工程师邓霖,来深入地分享一些竹间在中文情感、情绪识别上的经验,并从技术,商业,人文等多个角度谈谈如何在对话中判断和利用情感,以及情感判断的重要意义。希望对大家有所帮助。
本文行文结构如下,共分为三个部分:
一、 无交互的情感分析,其普遍的技术实现方式及商业应用
二、 交互式情感分析的难处和解决思路
三、 情感在人类信息沟通中的意义和作用,以及如何应用
一、 无交互的情感分析,其普遍的技术实现方式及商业应用
1. 无交互文本情感分析的普遍技术实现方式
情感分析(sentiment analysis)又称倾向性分析,意见抽取(Opinion extraction),情感挖掘(Sentiment mining),主观分析(Subjectivity analysis)等,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。
目前,情感分析在传统机器学习上的主要研究方法还是基于一些传统算法,例如,SVM、信息熵、CRF等。基于机器学习的情感分析,其优势在于具有对多种特征建模的能力。要用人工标注的单个词作为特征,而语料的不足往往就是性能的瓶颈。
当然也有基于情感词典的情感分析方法,也就是应用情感词典中记录的词语或短语的情感倾向程度和强度信息对文本进行情感分类。这个就比较依赖于人工构建和抽取的特征了。会受到情感词典本身的质量以及适用领域的局限,否定词也是一个小坑。(构建情感词典一般采用bootstrapping的方法)
至于深度学习在情感分析上的种类就比较多了,有各种方法的综合创新,比如有利用LSTM结合句法分析树,还有基于卷积神经网络和支持向量机的。除了准确率能有明显的提高外,重要的是可以自动从无标注的文本中学习文本中的隐藏特征,并可以实现端到端的分类。
这些技术也并不独立,往往都是混合使用,以此来取长补短,从而达到一种相对均衡的效果。
2. 无交互的文本情感分析的商业应用
● 情感分析最大的应用层在于评论的筛选和归类,之所以这个应用最广泛,就是因为第一这个应用离商业价值很近,第二不需要做到特别深,很多时候只要做到正负分类就能产生可见的收益了。比如对于一个餐厅来说,能够做到把关于自己的相关好评自动抽取并在自己的网站轮播也许就够了。
关于评论的情感分析,再做深一点就是意见挖掘,这就涉及到关联规则了。也就是做得更细,能看到用户到底是对产品的哪个属性满意或者不满,比如我觉得这件衣服有色差或者材质不够好等。
再做好点就是能把情感的强度表示出来(强正面,弱正面,中性,弱负面,强负面),以及增加情感的分类。
也可以反向思考,利用情感分析评论,做用户的分类聚类。
● 还有一个应用是预测社交网络上的舆论走向。美国大选那段时间,情感分析发挥了至关重要的预测作用,通过利用Twitter上的大量文本进行分析,来预测整体的舆论走向。这也是在传统调查都显示特朗普会输的时候他却表现得稳如泰山的原因。
这方面自己做得好玩的话,可以爬爬社交网站中热门事件的回答和评论,然后分析分析舆论的走向,说不定就成了一个PR的专业分析产品了呢。还可以看看有多少舆论问题是从网站中炒起来的,企业还是相当在乎相关舆论的走向的,毕竟舆论错位导致的用户认知改变不是随便砸钱就能扳回来的。所以要是实现了高准确率的预测,对于企业来说,或许可以一定程度上做到防患于未然。
● 以上这些都算相对直接的应用。其实间接性的话,其实情感分析的偏向性判断对于构建较深层的个性化推荐系统有着比较大的帮助,能较好地理解对于不同种类商品以及不同属性的偏好程度,从而具备一定的符号推理能力,相对于目前无论是按 itemCF、userCF 还是隐语音模型方式的推荐系统都更具有可解释性与理解力。
当一点点逐步知道了偏好倾向性后,其实关于用户的精准建模也就慢慢清晰了,从多个偏好中还能进行进一步的挖掘来推理用户属性。一个深刻的用户模型能产生的商业价值是不言而喻的。当然关于用户的建模目前的研究也不多,基本是个蓝海,我们正在尝试去实现,从文本中不断收集用户的偏好、属性等,再进行进一步的挖掘和推导。这边先不展开了,以后会有文章展开细说的。
二、交互式的文本情感分析
上面说的其实都是“0交互的情感分析”任务。
都是以单人叙述的方式,可能是短句子也可能是一段话,都有一个核心共同点——“没有交互”。
所以相对而言比较容易,只要按无交互的叙述方式做解决方案就好:就像分析微博一样,去判断这些短文本就行了,然后再增加一个持续的情绪叠加和衰减的函数就可以了。
不过似乎这样做下去能够带来的价值还远远不够。
这里要明确几个问题:
● 情感在人类信息交互时的作用是什么?
● 知道了情感状态后能干什么?
● 怎么最大化地利用这些信息创造价值?
一直相信一句话——“问题比答案重要”,知道问题是第一步,尤其是在不确定性这么高的时代下。
这三个问题其实需要站在更高的层面去思考,也就是首先要从情感在人类信息沟通中的意义开始思考,再推理出怎么应用,以及怎么更高效率地运用。这些问题稍后来探讨,我们先来看看有了交互后的情感分析会有什么变化?
为什么一旦有了“交互”,情感分析就变得那么难?
第一:交互是一个持续的过程而不是短时固定的。而这从本质上改变了情感判断的评价方式。在无交互的时候,比如商品评论,你判断这段话是什么情感分类后就可以实现价值了,是清晰的分类任务。但用在对话上就不太一样了,情感状态持续在变,分析任何单一的一句话是没有很大意义的,这不再是一个简单的分类任务了。对于持续的过程,简单的解决方案是加一个增益和衰减的函数,但这个函数怎么写?理论依据是什么?怎么判断这个函数写得好不好?难道靠人工标注的数据去分析么。
第二:交互的存在将大部分的状态信息都隐藏了起来。在明面上能看到的不到5%,只是冰山一角(用类似于隐马尔可夫的方式去理解)。并且交互的双方都默认对方知道很多信息。比如沟通主客体之间的关系状态、彼此的需求目的、情绪状态、社会关系、环境、之前聊到的内容,以及都具备的常识,性格,三观等等。
然后你会发现以下一些现象:
1.两个人之间共同的信息越多就越难,因为隐藏状态的作用越大,隐藏状态的维度越多。
2.不同的人之间存在着不同的交流范式。
这个范式的变化取决于其他的各种环境信息(包括时间,地点,你们的关系状态,彼此的情绪,共同的经历,自己的聊天习惯等等)。
即便是相同的人,他们之间的交流范式也是一个动态变化的过程,这个想必大家深有体会,比如两个人在恋爱的过程中,他们之间的交流方式会因为感情的升温和降温而有所不同。
回想几个生活中实际的经历:
1.找到一个微信对话,回想一下,在具体聊天的时候是不是都涉及到了这些隐藏的状态和不同的范式。
2.当你在和你觉得重要的人聊天的时候,是不是非常关心对方的情感状态,而且需要推理这个状态。
第三:交互涉及到信息的跳跃。当你自己一个人说什么的时候往往都是比较有逻辑的,连贯的。但聊天和个人陈述完全是两件事,聊天会有较大的跳跃性。这种不确定的信息跳跃性指数级地增大了情感分析的难度。
这就是为什么加入了交互因素情感分析变得这么难判断的原因,首先是评价方式改变了,而且这个评价方式很复杂,没有什么可借鉴的。再从第二第三原因可以看到,这对于机器学习来说数据维度太稀疏了(显性的状态就只有文本,表情等,多数状态都是隐藏的),再加上跳跃性,因此这种靠统计的方式,想把准确率做高,其困难程度可想而知。
因此要想突破瓶颈,就需要在这三个问题上找解决方案。
举个例子,第一个问题,我们目前的评价方式的理论依据是心理学和认知科学的理论,当然这个还在探索。第二个问题,既然是缺,那就补,想办法找到更多数据输入进来,多维度(图片,表情,颜文字等)的语义理解是一个思路,即多模态分析的思路。第三个问题,暂时属于好像没头绪的状态,结合知识图谱和符号规则,这是一件看似简单却无比困难的事情,可能会有各种阻碍。
下面我简述一下目前关于第二、三个问题稍细致点的解决方案。
提到问题的解决方案,会比较自然地想到通过LSTM来解决上下文记忆问题,只是效果不太好,原因第一是大部分隐藏状态不出现在文本里,第二是交互对话信息的跳跃,这导致LSTM的记忆其实作用不是太大。但相比其他方法确实LSTM在对话中的效果是有显著提升的。
比较新的方式是:Seq2Seq模型上加情感向量,将情感状态放入LSTM再加入情感词加权生成回复。
进一步的话,可以利用NLU语义理解,从文本中抽取重要的实体和意图,作为特征加入到学习中,并且加上一套规则,结合用户的建模模型后再输出最后的对话语句。
继续深入的话,其实就是找到隐藏的信息状态并加入到计算中,也就是多模态,内部的多模态设计,emoji+照片+表情包+文本长度等等,外部的多模态就是加入了识别的面部表情+给我提供的标签(比如性格,星座,爱好,年龄,性别等等)+语音等等。利用这些信息的规则其实也相当重要,更多的靠的是对人性的理解。
目前竹间智能正在努力做好第二和第三步,即更深的语义理解和多模态情感分析。
三、情感在人类信息沟通中的意义
上一部分讲到了交互式的情感分析的困难。那既然那么困难,为什么还要做?
答案是:因为这很重要。
人类进化的历史本质就是通信的进化历史。而情感在信息沟通中扮演着至关重要的角色。理解情感对于人类个体和人类社会的意义,才能做出懂人的产品。
●情感本身是高级智能的一部分
情感是大脑运行资源的调配者,不同的情感状态下大脑的计算资源分配方式差距巨大,因此会采取完全不同的思维执行路径。
情感对于人们的智力、理性决策、社交、感知、记忆和学习以及创造都有很重要的作用。
●情感是交互的核心
想必大家应该听过这句话“人类交流中80%的信息都是情感性的信息”,虽然不一定足够严谨,但自行体会生活点滴也会发现,情感是交互的核心。
对于个体的来说,我们在交流中表达情感,很重要的一个作用就是通过情感告知对方我现在的状态,一方面给出对于之前交互的状态反馈,另一方面让对方能推断出我接下来行动的倾向性。
为什么不是内容而是情感,能传递最多的状态信息?
因为从认知科学的角度来看,上面说过情感就是智能的一部分,情感就是大脑运行资源的调配者,不同的情感状态下大脑的计算资源分配方式差距巨大,因此会采取完全不同的思维执行路径,从而产出最后不同的结果。就像在和朋友对话的时候,如果语气语调有了明显变化,大脑就会迅速运转来做出各种判断,从而相应地改变自己的行为。千万年的进化使得我们判断的准确性很高,不断的正向反馈也使得我们越来越依赖用识别对方情感的方法来判断行为倾向这个方式,而且已经成为自动运行的认知方式了。这就是为什么接近80%的信息都是情感信息的原因了,因为信息量高,极大地增加了沟通效率。
沟通效率提升的结果就是——增加了群体之间协作的广度(协作者的数量)和深度(协作内容的复杂性)。群体智能得到了指数级的提升。
在“我现在的状态”中“情感状态”是信息量最大的状态,通过这个我们可以做两件事,第一是预测接下来对方的行为倾向,第二就是可以结合状态来改变反推别人想了些什么以及别人需要什么。
● 人类在交互中的情感带宽
先提一个概念——“情感带宽”,即你能表达的情感的信息量的大小和维度,比如说情感性的信息,往往是从多维度表达出来的,(口语:语音语调,语速,声音大小;身体语言:面部表情,手势,其他身体动作)等等,举例如“最是那一眼的温柔”“眉目传情”“沉闷的干咳”等等。
到了网络,整个范式就发生了比较大的变化,情感的带宽也变了。比如在网络上交流沟通,我们的情感带宽好像瞬间骤降了,需要以文本和图片的方式来表达。
实际上在降低的同时,我们的情感带宽在某种程度上也增加了,增加了几个新的输出维度,比如emoji表情、各种表情包、gif图,回话的时间快慢,正在输入的状态,甚至像Faceu那样的个人表情包等等都是不断丰富我们情感带宽的方式。
社交网络上的聊天,文字对话占据了大部分,但实际上我们看到文字的时候其实是在大脑里虚拟者那个人在说的,会自行脑补Ta这么说的时候的语气和表情等等。
文字文本依然是占据大部分的,而其他维度信息的缩减其结果就是——通过语义来推断情感。
前面讲到对话中情感分析的困难,其中一个重要原因就是因为信息维度的稀疏,因此要尽可能从多维度把缺失的情感带宽给补上。
解决方案上面也说过了,多模态,内部的多模态设计emoji+照片+表情包+文本长度等等,外部的多模态就是加入了识别的面部表情+给我提供的标签(比如性格,星座,爱好,年龄,性别等等)+语音等等。利用这些信息的规则其实也相当重要,更多的靠的是对人性的理解。
总结
以上讲到了情感识别在交互中至关重要的作用。
对于整个情感交互来说,情感识别可以说是技术基础,在识别之后可以做更深入的事情,“情感表达”、“需求分析”、“深度用户建模”“人性化交互体验”等等。
拿深度建模来说,通过和你聊天,就可以用情感分析对实体进行高效率的自动化标注,实现专属情感词典。了解到你的偏好以及你的偏好程度,利用你的偏好给你建模,久而久之就实现了个性化,而不是像Siri那种号称个人助手实际上却不够个性化的存在。
对情感表达来说,可以实现人机对话系统中情感的诱导,判断出情感之后自然就可以去影响情绪了,用不同的话语来实现情感倾向的改变。比如我能判断我接下来说选哪一句答复能让你产生一个情感倾向,可能是高兴、惊讶也可能是伤心等等。让你产生感受这就是进一步在实现交互。
人性化交互体验的应用方向是不言自明的,当智能体的“智商”没有过于显著的差别的时候,一个稍微有些情商的智能系统更容易被选择。拿家用机器人来说,核心的需求其实是陪护和娱乐,而要做好这两件事“情商”是关键。上面也说过情感是信息交互中最重要的反馈,因为信息量最大。因此一个不能很好地理解人类情感和意图的机器是做不好交互的。当然要实现这个需要的是一整套的情感系统。
竹间智能Emotibot以类脑对话系统和情感计算为核心,希望以人工智能技术助力更多行业、机构及个人拥抱AI时代,分享AI发展的红利。
来源:竹间智能Emotibot
评论
查看更多