借助情感分析教计算机理解情感
Johnson Controls 首席数据科学家 Donagh Horgan
将在 RebelCon.io 2019
大会上介绍为 Twitter 构建的一个情感分析器。大会将于 6 月 19 日至 20 日在爱尔兰科克举行。根据活动网站介绍:
- RebelCon 连续第三年将科克软件工程社区聚集在一起,举行为期两天的研讨会,讨论软件行业的最新技术、文化和开发实践;
- RebelCon 是由开发者社区为社区举办的非营利性技术会议。
在他的演讲中,Horgan 将展示如何迭代地为 Twitter 情感分析构建一个 AI 驱动的管道。
在过去的几年里,情感分析被用于越来越多的应用程序:它用于在客户支持中根据客户的感知情感倾向对进来的问题进行排序,在市场调研和民意调查中了解人们如何思考某些话题,在论坛和在线讨论区中检测辱骂、威胁和怒火。Johnson Controls 利用情感分析来发现暴力威胁,以更好地保护客户及其员工。
据 Horgan 说,情感分析在生命安全方面有着很大的机会。过去一年里发生了几起大规模枪击事件,犯罪嫌疑人事先在公共或半公共论坛上发布了警告。他看到了让机器分析这类内容从而拯救生命的可能;这种分析的成本将非常低。
InfoQ 采访了 Donagh Horgan,了解我们可以如何使用情感分析来教机器理解情感。
InfoQ:什么是情感分析?
Donagh Horgan:情感分析是人工智能的一个领域,它致力于教计算机识别文本中的人类情感。情感分析的目的是理解书面文本中的各种情感和强度。
通常,对于人类而言,这是一项简单的任务。例如,如果我告诉你“这部电影很棒”,你不用太考虑就会知道,我(1)对这部电影的评价很高(2)而且感到兴奋(3)。但是,对于机器来说,学习如何做到这一点更加困难,因为语言并不简单。例如,我可以说,“This movie is better than that one,”但不是“This movie is gooder than that one”,而那种知识是与生俱来的。
但是,计算机是通过算法工作的,要写出一套精确的、可维护的规则来理解英语中出现的所有异常情况是非常困难的。更糟糕的是,有许多不同的语言。这是个棘手的问题。
InfoQ:情感分析是如何工作的?
Horgan:有几种不同的方法,但基本原则是在简单性和准确性之间进行权衡。一种简单的方法是列出与你想要跟踪的每种情感相关的单词。例如,你可以做一个正面词汇表(好、很好、优秀)和一个负面词汇表(不好、极差、糟糕)。然后,你拿起你感兴趣的那篇文章,把其中出现的所有正面和负面的单词都记下来。如果总体上是正面的,那么你就可以得出结论:文本是正面的;否则,你可以得出结论:它是负面的。
你可以通过给每个单词设定一个“强度(strength)”,从而使这个过程更加准确。例如,“好”可能是 60% 正面,但“很棒”听起来更加正面,你可能会给一个 80% 的分数。并不像听起来那么费力,网上有免费开放的情感词列表(例如,Python 库 pattern
),所以你通常不需要自己整理。
但简单的单词计数往往无法识别细微的差别,无法掌握更多专用的语言结构。例如,我可能会告诉你,“这部电影非常好”,这可能会生成一个中性或者负面分数,取决于你如何看待“非常(awfully)”这个词。虽然借助单词计数可以变通地解决解决这个问题,但一般来说,这些方法还不足以彻底地解决该问题。
一个解决方案是使用机器学习算法,让计算机学习单个单词或词对或更长一点的文本与给定情感相关的概率。我不会介绍这里用到的数学知识,但构建一个合理的朴素贝叶斯模型(或者至少是比单词计数要好)并不难。
InfoQ:情感分析有多可靠?我们可以相信其分析结果吗?
Horgan:遗憾的是,目前已知的所有方法都缺少某种形式的上下文。例如,单词计数过于强调单词,所以无法理解诸如“重大失败(great failure)”这样的短语。使用朴素贝叶斯算法就可以解决这个问题,因为它可以学会把情绪与词对、三个词或任意长度的短语关联起来,但是,对于特定的双重否定,如果你没有足够的样本,它就仍可能在“I can’t get no satisfaction”这样的句子上犯错。
现在的最新技术是深度学习,它使用词嵌入、神经网络和注意机制等技术,学习人类语言的复杂结构。但即使是这些模型也会搞不明白更复杂的语言结构,如讽刺和挖苦。事实上,甚至在人类中间,人们对情感的判断一致性也很少超过 80%。我认为这里的教训是,语言和情感绑定在一起,但这种关系并不总是清晰的,甚至对我们而言也是如此。目前,机器只能做得和我们一样好。
InfoQ:您在为 Twitter 构建情感分析器的过程中学到了什么?
Horgan:实际上相当多。它比听起来容易,也比听起来难。你可以试下现成的方法,它们有效,但如果你想使自己构建的东西非常准确,你得更具体一点。比如,你可以考虑发推特的人的个人资料。唐纳德·特朗普就是一个很好的例子,他要么非常正面,要么非常负面。将这类信息加入关于单个用户的算法中可以得到更好的结果。
InfoQ:如果 InfoQ 的读者想了解更多关于情感分析的内容,他们该如何入手?
Horgan:关于 数据科学
,有很多教程(有些更高级)通常是针对只想快速入手的计算机迷。一般来说,
Natural Language Processing with Python
是一个很好的起点,虽然这不是免费的。有很多有用的 Python 库提供了良好的文档和教程,如 nltk
、 spacy
、 textblob
、 vader
和 gensim
。
InfoQ 正在以文章、问答、 综述的形式对 RebelCon.io
2019 大会进行报道。InfoQ 此前发表了 Sabine Wojcieszak 的文章“ CI= 持续改进,DevOps 的动力源泉
”。
查看英文原文: Teaching Machines to Understand Emotions With Sentiment Analysis