是否可以根据文本结构猜测用户的心情?

时间:2009-06-01 00:43:30

标签: algorithm nlp

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

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

11 个答案:

答案 0 :(得分:65)

这是称为sentiment analysis的自然语言处理领域的基础。虽然你的问题很笼统,但肯定不是愚蠢的 - 例如,亚马逊就产品评论中的文字进行了这类研究。

如果您对此很认真,那么可以通过 -

实现简单版本
  1. 获取正面/负面情绪的主体。如果这是一个专业项目,你可能需要一些时间并自己手动注释一个语料库,但如果你是匆忙或者只是想先尝试一下,那么我建议你看看Bo Pang的sentiment polarity corpus和Lillian Lee的研究。使用该语料库的问题是它不适合您的域名(特别是语料库使用电影评论),但它仍应适用。

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

  3. 将机器学习算法(例如SVM,Naive Bayes,Maximum Entropy)应用于单词级别的训练语料库。这个模型叫做bag of words model,它只是将句子表示为由它组成的单词。这与许多垃圾邮件过滤器运行的模型相同。有关机器学习算法的精彩介绍,有一个名为Weka的应用程序,它实现了一系列这些算法,并为您提供了一个GUI来使用它们。然后,您可以从尝试使用此模型对测试语料库进行分类时所犯的错误来测试机器学习模型的性能。

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

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

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


    小笔记 -

    1. 仅仅将一段文本拆分为句子是NLP的一个领域 - 称为sentence boundary detection。有许多工具,OSS或免费,可用于执行此操作,但对于您的任务,对空格和标点符号的简单拆分应该没问题。
    2. SVMlight也是另一个需要考虑的机器学习者,实际上他们的归纳SVM与我们正在研究的内容做了类似的任务 - 试图将哪些Reuter文章归类为关于“公司收购”的1000个正面和1000个反面例子。
    3. 将句子转换为要分类的特征可能需要一些工作。在这个模型中,每个单词都是一个特征 - 这需要对句子进行标记,这意味着将单词和标点符号相互分离。另一个提示是小写所有单独的单词标记,以便“我恨你”和“我讨厌你”最终被认为是相同的。您可以尝试使用更多数据,还可以包括大写是否有助于对某人是否生气进行分类,但我认为至少在最初的努力中,单词应该足够了。

    4. 修改

      我刚刚发现LingPipe实际上有tutorial on sentiment analysis使用我正在谈论的Bo Pang和Lillian Lee Sentiment Polarity语料库。如果您使用的Java可能是一个很好的工具,即使它没有完成我上面讨论的所有步骤。

答案 1 :(得分:12)

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

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

您可能希望查看Advances in written text analysis甚至Determining Mood for a Blog by Combining Multiple Sources of Evidence

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

答案 2 :(得分:3)

我无法相信我认真对待这个......假设一个单一的情绪空间:

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

我越是想到这一点,就越清楚的是,很多这些能指表示一般的极端情绪,但并不总是清楚善良的情绪。

答案 3 :(得分:3)

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

答案 4 :(得分:2)

我对这个问题的记忆并不好,但我相信我看到了一些关于文本语法结构和整体语调的研究。这也可以像简短的单词和情感表达单词一样简单(好吧,咒骂很明显)。

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

我同意ojblass这是一个严肃的问题。

情绪分类目前是语音识别领域的热门话题。如果你考虑一下,交互式语音应答(IVR)应用程序需要处理愤怒的客户,而不是平静的客户:愤怒的人应该通过正确的经验和培训快速地路由到操作人员。声音是一种非常可靠的情感指标,足够实用,因此公司渴望让它发挥作用。谷歌“语音情感识别”,或阅读此article以了解更多信息。

基于Web的GUI中的情况应该没有什么不同。回到cletus的评论,文本和语音情感检测之间的类比是有趣的。如果一个人输入CAPITALS,他们会被称为“大喊大叫”,就好像他的声音在音量和音调上使用语音界面一样。检测类型亵渎语言类似于语音系统中亵渎语的“关键词识别”。如果一个人感到不安,他们会使用GUI或语音用户界面(VUI)犯更多错误,并且可以路由到人。

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

答案 7 :(得分:1)

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

显然,文本“:) :) :) :)”解析为一个快乐的用户,而“:( :( :(”肯定会解决一个悲伤的人。享受!

答案 8 :(得分:0)

你是否可以做到这一点是另一回事。问题似乎首先是AI完成。

现在,如果你有按键时间,你应该能够弄明白。

答案 9 :(得分:0)

模糊逻辑我猜。 无论如何,从确定用户心情的几条规则开始,然后扩展并将“引擎”与更准确和更复杂的引擎相结合,将会非常容易。

答案 10 :(得分:0)

如果用户输入以下字符,那么他会非常生气,试着先让他冷静下来......

`K` 

`k`