我假设需要使用自然语言处理器来解析文本本身,但是对于基于用户编写的文本检测用户情绪的算法,您有什么建议?我怀疑它会非常准确,但我仍然感兴趣。
编辑:我绝不是语言学或自然语言处理方面的专家,所以如果这个问题过于笼统或愚蠢,我深表歉意。
这是称为情感分析的自然语言处理领域的基础。尽管您的问题很笼统,但它肯定并不愚蠢-例如,亚马逊对产品评论中的文本进行了此类研究。
如果您对此很认真,那么可以通过以下方式实现简单的版本-
获取正面/负面情绪的语料库。如果这是一个专业项目,您可能需要一些时间并自己手动注释语料库,但如果您赶时间或刚开始只是想尝试一下,那么我建议您查看Bo Pang 和 Lillian Lee 的情感极性语料库研究。使用该语料库的问题在于它不是为您的领域量身定制的(具体来说,语料库使用电影评论),但它仍然应该适用。
将您的数据集拆分为 Positive 或 Negative 句子。对于情感极性语料库,您可以将每条评论拆分为其复合句子,然后将整体情感极性标签(正面或负面)应用于所有这些句子。将此语料库分成两部分——90% 用于训练,10% 用于测试。如果您使用的是 Weka,那么它可以为您处理语料库的拆分。
将机器学习算法(如 SVM、朴素贝叶斯、最大熵)应用于单词级别的训练语料库。这个模型称为词袋模型,它只是将句子表示为它所组成的词。这与许多垃圾邮件过滤器运行的模型相同。为了很好地介绍机器学习算法,有一个名为Weka的应用程序,它实现了一系列这些算法,并为您提供了一个 GUI 来使用它们。然后,您可以根据尝试使用此模型对测试语料库进行分类时产生的错误来测试机器学习模型的性能。
将此机器学习算法应用于您的用户帖子。对于每个用户帖子,将帖子分成句子,然后使用机器学习模型对它们进行分类。
所以是的,如果你认真对待这一点,那么它是可以实现的——即使没有过去在计算语言学方面的经验。这将是相当多的工作,但即使使用基于单词的模型也可以获得良好的结果。
如果您需要更多帮助,请随时与我联系 - 我总是很乐意帮助其他对 NLP 感兴趣的人 =]
小笔记——
编辑
我刚刚发现 LingPipe 实际上有一个使用我正在谈论的 Bo Pang 和 Lillian Lee 情感极性语料库进行情感分析的教程。如果您使用 Java,这可能是一个很好的工具,即使不是,它也会经历我上面讨论的所有步骤。
毫无疑问,可以根据用户输入的文字来判断用户的情绪,但这绝非易事。我能想到的事情:
您可能想查看书面文本分析的进展,甚至通过结合多种证据来源来确定博客的情绪。
最后值得注意的是,书面文本通常被认为比实际情况更消极。这是公司中电子邮件通信的常见问题,仅作为一个例子。
我不敢相信我会认真对待这件事……假设一个一维的情绪空间:
我越想越清楚,这些能指中的很多都表示一般的极端情绪,但并不总是很清楚是什么样的情绪。
如果您支持字体,粗体红色文本可能是一个愤怒的用户。带有蝴蝶剪贴画的绿色常规大小的文本是一个快乐的文本。
我对这门课记性不好,但我相信我看到了一些关于课文语法结构和整体语气的研究。这也可以像更短的词和表达情感的词一样简单(嗯,脏话很明显)。
编辑:我注意到第一个回答的人的帖子基本相似。对于较短的句子,确实可能有一些严肃的想法。
情绪和行为的分析是非常严肃的科学。尽管其他答案嘲笑这个问题,执法机构多年来一直在调查情绪的分类。我听说的计算机中的使用通常有更多的上下文(时间信息、语音模式、改变频道的速度)。我认为你可以——取得一些成功——通过使用来自两个已知组的样本训练神经网络来确定用户是否处于特定情绪:愤怒和不愤怒。祝你的努力好运。
我同意 ojblas 的观点,这是一个严肃的问题。
情绪分类是目前语音识别领域的热门话题。如果您考虑一下,交互式语音响应 (IVR) 应用程序需要处理愤怒的客户与处理冷静的客户大不相同:应该将愤怒的人快速路由到具有正确经验和培训的人工操作员。声调是一个非常可靠的情绪指标,足够实用,以至于公司都渴望让它发挥作用。谷歌“语音情感识别”,或阅读本文了解更多。
这种情况在基于 Web 的 GUI 中应该没有什么不同。回顾 cletus 的评论,文本和语音情感检测之间的类比很有趣。如果一个人输入大写字母,他们被称为“喊”,就好像他的声音在使用语音界面时音量和音高一样。检测键入的脏话类似于语音系统中脏话的“关键字发现”。如果一个人不高兴,他们将使用 GUI 或语音用户界面 (VUI) 犯更多错误,并且可以将其传递给人类。
这里有一个“多模式”情绪检测研究领域。想象一个您也可以与之交谈的 Web 界面(按照 IBM/Motorola/Opera XHTML + Voice Profile原型实现的思路)。情绪检测可以基于来自语音和视觉输入模式的提示的组合。
我认为,我的算法相当简单,但是,为什么不通过文本计算 smilics :) vs :(
显然,文本 ":) :) :) :)" 解析为快乐的用户,而 ":( :( :(" 肯定会解析为悲伤的用户。享受吧!
是的。
你能不能做到是另一回事。这个问题起初似乎是人工智能完成的。
现在,如果您有击键时间,您应该能够弄清楚。
我猜模糊逻辑会做。无论如何,从确定用户情绪的几个规则开始,然后将“引擎”扩展并与更准确和更复杂的规则结合起来,这将是相当容易的。