情感计算是人机交互核心?谈深度学习在情感分析中的应用

作者: 竹间智能自然语言与深度学习小组 2017-07-12 10:44:31

情感计算在人机交互中的作用

在谈论情感计算之前,先来说说情感本身在人类信息沟通中的意义。

情感对于人类的智力、理性决策、社交、感知、记忆和学习以及创造都有很重要的作用,甚至有研究显示「人类交流中 80% 的信息都是情感性的信息」。但为什么不是内容,而是情感能传递最多的状态信息呢?其实从认知科学角度来看,情感本身是高级智能的一部分。作为大脑运行资源的调配者,情感状态的不同会导致大脑计算和分配资源的方式有巨大差异,思维执行路径也会完全不同。另外,人类进化使其情感判断的准确性不断提高,不断的正向反馈也使得我们越来越依赖用识别对方情感的方法来判断其行为倾向,甚至已经成为自动运行的认知方式了。

由于情感在人类信息沟通中的意义重大,所以情感计算是实现人性化的人机交互过程中必不可少的部分,情感识别与理解技术也是人机交互的基础性技术之一。在此基础上,「需求分析」、「深度用户建模」、「情感表达」、「人性化交互体验」等更深入的交互设计才能成为可能。

  • 拿深度建模来说,通过和人聊天,AI 可以用情感分析对实体进行高效率的自动化标注,实现专属的情感词典。了解用户的偏好甚至偏好程度,并利用这些信息进行建模,久而久之就能够实现「个性化」,而不是像 Siri 这种号称个人助手却实际上不够个性化的存在。
  • 对情感表达来说,可以实现人机对话系统对情感的诱导。在判断出情感之后就可以用不同的回复来改变情感倾向,比如对话系统能判断接下来的哪一句答复能让用户产生一个情感倾向,如高兴、惊讶或伤心等。事实上能够让人产生感受就是在进一步实现更人性化的交互。

人性化交互体验的应用方向是不言自明的,当智能体的「智商」没有过于显著的差别的时候,一个稍微有些情商的智能系统就会更容易被选择。当然这一点的实现需要一整套的情感分析系统。

从文本情感分析到多模态情感分析

一般情况下,我们探讨的情感分析多指文本中的情感分析,但多维度的情感分析,如文字+图片+表情+颜文字的综合分析,文本+语音+图像的综合,即多模态情感分析,是目前来说,比较前沿和更为重要的情感分析的研究方向。

对于多模态情感分析研究的必要性,这里需要提一个概念——「情感带宽」,即人类能表达的情感的信息量的大小和维度。比如面对面交流时,情感性的信息往往是从语音语调、面部表情、肢体等多个维度表达出来的。然而到了人机交互中,情感宽带的整个范式会发生较大的变化,如通过人机对话系统交流时,少了肢体这个维度,人类的情感带宽似乎瞬间骤降了。但实际上也增加了几个新的输出维度,如图片、表情包、回复时间的长短等。

除自然语言理解技术外,人机交互的另一困难就是信息维度的稀疏性。因此人机交互中情感分析应尽可能从多个维度入手,将缺失的情感带宽补上——多模态情感分析成为一个重要的研究方向。内部的多模态分析即 emoji+照片+表情包+文本长度等,外部的多模态即加入面部表情识别+提供的标签(性格,爱好,年龄等)+语音等。如竹间智能在构建基于自然语言理解技术的人机交互系统时,加入多模态情感分析技术(文字、语音、图像),打破了以往情感识别在单一文本维度上的局限性,让机器能进一步读懂、听懂、看懂人类,从而达到了更好的人机交互效果。

情感分析的工具和方法

深度学习在情感分析中的应用已经较为普遍了,如利用 LSTM 结合句法分析树、基于卷积神经网络和支持向量机等。一般情况下,对于各种方法的综合创新应用,能达到取长补短的效果,进而能够提高情感分析的准确率,另外还能从无标注的文本里学习到其中的隐藏特征,以实现端到端的分类。

文本情感分析最常见的 dataset 是 IMDB Movie Reviews,那么该如何入手与练习呢?下面以 python 为例,从简单的文本情感分析说起。

前置作业:

1.先安装 Keras (https://keras.io/),Keras 是一个 high-level networks API,底层使用了 Tensorflow, CNTK, 或 Theano 运算 (这取决于具体安装了哪一个)。

Keras 的安装指南: https://keras.io/#installation

代码1

2.当 Keras 已安装完毕,则 IMDB 可由此方式入手 (https://keras.io/datasets/)。此 API 的底层:https://github.com/fchollet/keras/blob/master/keras/datasets/imdb.py

接下来,依序分享一下怎么用 LSTM, Bi-directional LSTM, CNN, CNN-LSTM 等 Neural Network 来解情感分析(sentiment analysis)的问题。

LSTM (long-short term memory)

LSTM 的详细原理,在此不加赘述,有兴趣的朋友,可以参考这篇文章:https://colah.github.io/posts/2015-08-Understanding-LSTMs/

以下会使用 RNN 的 concept 来解 sentiment analysis 的问题。

example: 假设,使用者输入:「我今天好伤心」,分词完的结果是「我 今天 好 伤心」,则我们希望 model 可以输出「难过」。model 里面的简单运算概念如下图所示。LSTM 会一直把资讯往后传,并拥有记忆功能,***整合所有资讯后,再做出判断。

透过 Keras,可以快速建出上面的模型:

  • 完整代码:https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py
  • 详细的代码解说: https://machinelearningmastery.com/sequence-classification-lstm-recurrent-neural-networks-python-keras/

Bi-directional LSTM

Bi-directional LSTM 和 LSTM 非常类似,只是把句子透过两个不同方向来看,如下图所示:

这种做法有一个好处,以这句话「我今天好伤心」为例,重点刚好在句尾。但如果换一个句子,「真开心,明天要出去玩了」,此句的重点则在句首。因此,可以用 Bi-directional LSTM 来处理这种问题。

一样,透过 Keras,可以快速建出这种模型:

  • 只要在 LSTM 外面包上「Bidirectional」这个 wrapper,马上就能制作完成。
  • 完整代码:https://github.com/fchollet/keras/blob/master/examples/imdb_bidirectional_lstm.py

CNN

近年来 CNN 在影像领域大有突破,不过也有人把 CNN 的方法应用到文字处理上面。在此先分享一篇 arxiv 上的文章,「Recent Advances in Convolutional Neural Networks」,于 2017 年年初做了更新:https://arxiv.org/pdf/1512.07108.pdf

里面对 CNN 做了 overview,同时在「5.10. Natural Language Processing」对 NLP 做了些整理。

然后我们回归主题,怎么使用 CNN 来做情感分类呢?

  • 详细的原理,可以参考这篇文献:https://arxiv.org/abs/1408.5882
  • 这篇则是知名的博客 WildML 写的介绍:https://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/

不过,从实作面的角度来看,透过 Keras,CNN 的原理也不是太重要,只要找对 API 即可 (Conv1D)。在以下这个实作范例中,大约需要 20 行的代码,即可建出这个 model:

完整代码:https://github.com/fchollet/keras/blob/master/examples/imdb_cnn.py

CNN-LSTM

上面介绍完 LSTM & CNN,那是不是有办法可以把两者的特性结合起来,融合成一个 CNN-LSTM 的 model?透过 Keras,当然还是可以的!

完整代码: https://github.com/fchollet/keras/blob/master/examples/imdb_cnn_lstm.py

以上主要分享了比较普遍的实作面内容,也许能够帮助大家解决手头上的问题。不过上面用 LSTM 与 CNN 来解 sentiment analysis 的问题大约是近 5 年内发展的技术,不是最近***的技术。

关于多模态情感分析:最直觉的做法,就是把文本、语音、图像的原始输入资料,利用深度学习的技术,映射到共同的 feature space 中。以文本的例子来说,原始输入的文字,使用分词(前处理)转成字符与字元后,透过一层 embedding layer 映射到向量空间,可以使用 CNN 去撷取里面的信息。同理,以图像为例子,原始输入的照片,利用影像前处理 (ex: whitening) 后,再使用 CNN 去撷取里面的讯息。

CNN LSTM NLP
上一篇:听说你了解深度学习最常用的学习算法:Adam优化算法? 下一篇:机器学习算法在自动驾驶领域的应用大盘点
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

什么是“自然语言处理”? 它到底在“处理”些什么?

“自然语言处理” (Natural Language Processing,简称NLP) 是近年来科技界最热门的词语之一,也是当下人工智能研究最热门的领域之一。

潘蓉 ·  2021-01-21 10:28:16
准备开始学习NLP,我该系统地看哪些书和课程?

许多学生一直在要求我为如何开始自然语言处理准备指南。这篇博客文章旨在根据研究,对该领域的了解和个人经验来帮助他人。尽管这不是直接指南,但我在此处共享的资源可以帮助您根据需要创建自己的NLP学习路径。这将是我多年来遇到的教育资源的结合。我将分享我在研究这些资源及其适用方面的经验。

AI研习社-译站 ·  2020-12-10 15:24:05
2020全球NLP行业报告:NLP技术预算增长高达30%

2020年对于公共卫生、职业生活、经济以及日常生活的几乎所有其他方面来说,都是独一无二的一年。虽然一些机会正在消失,另一些则正在转变其商业模式,罕见没有受到冲击的企业。尽管如此,还是有一些行业正在蓬勃发展,不仅仅是虚拟会议或医疗保健。

AI研习社-译站 ·  2020-12-04 14:15:28
用于代码生成的基于语法的结构 CNN 解码器

在本文中,我们提出了一种基于语法的结构 CNN 用于代码生成。我们的模型利用了抽象程序的语法树(AST),并通过规定语法规则。我们解决了基于 RNN 的传统方法可能不适合于克生成,可能是由于大量的程序中的 kens/nodes。

慕测科技 ·  2020-11-11 14:32:11
NLP入门干货:手把手教你3种中文规则分词方法

本文将讲解中文自然语言处理的第一项核心技术——中文分词技术,它是中文自然语言处理非常关键和核心的部分。

杜振东 涂铭 ·  2020-10-28 14:03:22
在预训练NLP模型上测量性别相关性

在过去的几年中,自然语言处理(NLP)取得了长足的进步,诸如BERT,ALBERT,ELECTRA和XLNet等预训练语言模型在各种任务中均取得较高的准确性。预训练语言模型以Wikipedia这样的大型文本语料库为训练集,通过遮掩一些单词并对它们进行预测来学习嵌入表示,即遮掩语言建模。

雷锋字幕组 ·  2020-10-26 15:48:32
NLP:不要重新造轮子

自然语言处理(NLP)是一个令人生畏的领域名称。从非结构化文本中生成有用的结论是很困难的,而且有无数的技术和算法,每一种都有自己的用例和复杂性。作为一个接触NLP最少的开发人员,很难知道要使用哪些方法以及如何实现它们。

IT老周 ·  2020-10-26 14:35:18
实例 | 使用CNN和Python实施的肺炎检测

嘿!几个小时前我刚刚完成一个深度学习项目,现在我想分享一下我所做的事情。这一挑战的目标是确定一个人是否患有肺炎。如果是,则确定是否由细菌或病毒引起。好吧,我觉得这个项目应该叫做分类而不是检测。

IT老周 ·  2020-10-12 09:22:30
Copyright©2005-2021 51CTO.COM 版权所有 未经许可 请勿转载