56

我假设需要使用自然语言处理器来解析文本本身,但是对于基于用户编写的文本检测用户情绪的算法,您有什么建议?我怀疑它会非常准确,但我仍然感兴趣。

编辑:我绝不是语言学或自然语言处理方面的专家,所以如果这个问题过于笼统或愚蠢,我深表歉意。

4

10 回答 10

67

这是称为情感分析的自然语言处理领域的基础。尽管您的问题很笼统,但它肯定并不愚蠢-例如,亚马逊对产品评论中的文本进行了此类研究。

如果您对此很认真,那么可以通过以下方式实现简单的版本-

  1. 获取正面/负面情绪的语料库。如果这是一个专业项目,您可能需要一些时间并自己手动注释语料库,但如果您赶时间或刚开始只是想尝试一下,那么我建议您查看Bo Pang 和 Lillian Lee 的情感极性语料库研究。使用该语料库的问题在于它不是为您的领域量身定制的(具体来说,语料库使用电影评论),但它仍然应该适用。

  2. 将您的数据集拆分为 Positive 或 Negative 句子。对于情感极性语料库,您可以将每条评论拆分为其复合句子,然后将整体情感极性标签(正面或负面)应用于所有这些句子。将此语料库分成两部分——90% 用于训练,10% 用于测试。如果您使用的是 Weka,那么它可以为您处理语料库的拆分。

  3. 将机器学习算法(如 SVM、朴素贝叶斯、最大熵)应用于单词级别的训练语料库。这个模型称为词袋模型,它只是将句子表示为它所组成的词。这与许多垃圾邮件过滤器运行的模型相同。为了很好地介绍机器学习算法,有一个名为Weka的应用程序,它实现了一系列这些算法,并为您提供了一个 GUI 来使用它们。然后,您可以根据尝试使用此模型对测试语料库进行分类时产生的错误来测试机器学习模型的性能。

  4. 将此机器学习算法应用于您的用户帖子。对于每个用户帖子,将帖子分成句子,然后使用机器学习模型对它们进行分类。

所以是的,如果你认真对待这一点,那么它是可以实现的——即使没有过去在计算语言学方面的经验。这将是相当多的工作,但即使使用基于单词的模型也可以获得良好的结果。

如果您需要更多帮助,请随时与我联系 - 我总是很乐意帮助其他对 NLP 感兴趣的人 =]


小笔记——

  1. 仅仅将一段文本分割成句子是 NLP 的一个领域——称为句子边界检测。有许多工具(OSS 或免费)可用于执行此操作,但对于您的任务,对空格和标点符号进行简单拆分应该没问题。
  2. SVMlight也是另一个需要考虑的机器学习器,事实上,他们的归纳 SVM 执行与我们正在研究的任务类似的任务 - 尝试用 1000 个正例和 1000 个负例来分类哪些 Reuter 文章是关于“企业收购”的。
  3. 将句子转换为特征进行分类可能需要一些工作。在这个模型中,每个单词都是一个特征——这需要对句子进行标记,这意味着将单词和标点符号分开。另一个技巧是将所有单独的单词标记小写,以便“我恨你”和“我恨你”最终被认为是相同的。有了更多数据,您可以尝试并包括大写是否有助于对某人是否生气进行分类,但我相信至少对于最初的努力来说,单词应该足够了。

编辑

我刚刚发现 LingPipe 实际上有一个使用我正在谈论的 Bo Pang 和 Lillian Lee 情感极性语料库进行情感分析的教程。如果您使用 Java,这可能是一个很好的工具,即使不是,它也会经历我上面讨论的所有步骤。

于 2009-06-06T07:12:51.313 回答
12

毫无疑问,可以根据用户输入的文字来判断用户的情绪,但这绝非易事。我能想到的事情:

  • 大写字母往往表示激动、烦恼或沮丧,当然是一种情绪反应,但有些新手会这样做,因为他们没有意识到重要性,所以你不能在不看他们写的其他内容的情况下假设这一点(确保它并非全部大写);
  • 大写字母实际上只是强调的一种形式。其他是使用某些激进的颜色(例如红色)或使用粗体或更大的字体;
  • 有些人在情绪高涨时会犯更多的拼写和语法错误和拼写错误;
  • 扫描表情符号可以让您非常清楚地了解用户的感受,但类似 ​​:) 可能会被解释为高兴、“我告诉过你”甚至具有讽刺意味;
  • 脏话的使用往往具有明确的含义,但又不是明确的。许多人的口语通常会包含某些四个字母的单词。对于其他一些人,他们甚至可能不会说“地狱”,而是说“哎呀”,因此任何咒骂(甚至“糟透了”)都很重要;
  • 在脏话不一定合适的情况下,标点符号组(如@#$@$@)往往会被替换为脏话,因此不太可能是口语化的;
  • 感叹号可以表示惊讶、震惊或愤怒。

您可能想查看书面文本分析的进展,甚至通过结合多种证据来源来确定博客的情绪

最后值得注意的是,书面文本通常被认为比实际情况更消极。这是公司中电子邮件通信的常见问题,仅作为一个例子。

于 2009-06-01T00:56:02.143 回答
3

我不敢相信我会认真对待这件事……假设一个一维的情绪空间:

  • 如果文本包含诅咒词,-10 情绪。
  • 我认为感叹词往往是负面的,所以-2情绪。
  • 当我感到沮丧时,我输入非常。短的。句子。-5 心情。

我越想越清楚,这些能指中的很多都表示一般的极端情绪,但并不总是很清楚是什么的情绪。

于 2009-06-01T00:51:18.597 回答
3

如果您支持字体,粗体红色文本可能是一个愤怒的用户。带有蝴蝶剪贴画的绿色常规大小的文本是一个快乐的文本。

于 2009-08-24T05:46:10.990 回答
2

我对这门课记性不好,但我相信我看到了一些关于课文语法结构和整体语气的研究。这也可以像更短的词和表达情感的词一样简单(嗯,脏话很明显)。

编辑:我注意到第一个回答的人的帖子基本相似。对于较短的句子,确实可能有一些严肃的想法。

于 2009-06-01T01:01:13.600 回答
1

情绪和行为的分析是非常严肃的科学。尽管其他答案嘲笑这个问题,执法机构多年来一直在调查情绪的分类。我听说的计算机中的使用通常有更多的上下文(时间信息、语音模式、改变频道的速度)。我认为你可以——取得一些成功——通过使用来自两个已知组的样本训练神经网络来确定用户是否处于特定情绪:愤怒和不愤怒。祝你的努力好运。

于 2009-06-01T01:04:39.770 回答
1

我同意 ojblas 的观点,这是一个严肃的问题。

情绪分类是目前语音识别领域的热门话题。如果您考虑一下,交互式语音响应 (IVR) 应用程序需要处理愤怒的客户与处理冷静的客户大不相同:应该将愤怒的人快速路由到具有正确经验和培训的人工操作员。声调是一个非常可靠的情绪指标,足够实用,以至于公司都渴望让它发挥作用。谷歌“语音情感识别”,或阅读本文了解更多。

这种情况在基于 Web 的 GUI 中应该没有什么不同。回顾 cletus 的评论,文本和语音情感检测之间的类比很有趣。如果一个人输入大写字母,他们被称为“喊”,就好像他的声音在使用语音界面时音量和音高一样。检测键入的脏话类似于语音系统中脏话的“关键字发现”。如果一个人不高兴,他们将使用 GUI 或语音用户界面 (VUI) 犯更多错误,并且可以将其传递给人类。

这里有一个“多模式”情绪检测研究领域。想象一个您也可以与之交谈的 Web 界面(按照 IBM/Motorola/Opera XHTML + Voice Profile原型实现的思路)。情绪检测可以基于来自语音和视觉输入模式的提示的组合。

于 2009-06-01T02:36:58.057 回答
1

我认为,我的算法相当简单,但是,为什么不通过文本计算 smilics :) vs :(

显然,文本 ":) :) :) :)" 解析为快乐的用户,而 ":( :( :(" 肯定会解析为悲伤的用户。享受吧!

于 2009-06-03T14:24:41.850 回答
0

是的。

你能不能做到是另一回事。这个问题起初似乎是人工智能完成的。

现在,如果您有击键时间,您应该能够弄清楚。

于 2009-06-01T00:54:40.413 回答
0

我猜模糊逻辑会做。无论如何,从确定用户情绪的几个规则开始,然后将“引擎”扩展并与更准确和更复杂的规则结合起来,这将是相当容易的。

于 2009-11-20T22:15:15.100 回答