我假设需要使用自然语言处理器来解析文本本身,但是对于算法根据他们编写的文本检测用户心情有什么建议?我怀疑它会非常准确,但我仍然感兴趣.
编辑:我绝不是语言学或自然语言处理方面的专家,所以如果这个问题太笼统或太愚蠢我会道歉.
这是称为情感分析的自然语言处理领域的基础.虽然你的问题很普遍,但肯定不是愚蠢的 - 例如,这种研究是由亚马逊在产品评论中的文本中完成的.
如果您对此很认真,那么可以通过以下方式实现简单版本:
获得正面/负面情绪的语料库.如果这是一个专业项目,你可能需要一些时间并自己手动注释一个语料库,但如果你是匆忙或者只是想先试验一下,那么我建议你看一下Bo Pang和Lillian Lee的情感极性语料库.研究.使用该语料库的问题是它不适合您的域(特别是语料库使用电影评论),但它仍然适用.
将数据集拆分为正数或负数.对于情感极性语料库,您可以将每个评论拆分为复合句子,然后将整体情绪极性标签(正面或负面)应用于所有这些句子.将这个语料库分成两部分--90%应该用于训练,10%应该用于测试.如果您正在使用Weka,那么它可以为您处理语料库的拆分.
将机器学习算法(例如SVM,Naive Bayes,Maximum Entropy)应用于单词级别的训练语料库.这个模型被称为一个单词模型,它只是将句子表示为由它组成的单词.这与许多垃圾邮件过滤器运行的模型相同.有关机器学习算法的精彩介绍,有一个名为Weka的应用程序,它实现了一系列这些算法,并为您提供了一个GUI来使用它们.然后,您可以从尝试使用此模型对测试语料库进行分类时所犯的错误来测试机器学习模型的性能.
将此机器学习算法应用于您的用户帖子.对于每个用户帖子,将帖子分成句子,然后使用您的机器学习模型对它们进行分类.
所以,是的,如果你认真对待这一点,那么它是可以实现的 - 即使没有过去的计算语言学经验.这将是相当多的工作,但即使使用基于单词的模型,也可以获得良好的结果.
如果您需要更多帮助,请随时与我联系 - 我总是很乐意帮助其他对NLP感兴趣的人=]
小笔记 -
仅将一段文本拆分成句子是NLP的一个领域 - 称为句子边界检测.有许多工具,OSS或免费,可用于执行此操作,但对于您的任务,对空格和标点符号的简单拆分应该没问题.
SVMlight也是另一个需要考虑的机器学习者,实际上他们的归纳SVM与我们正在研究的内容类似 - 试图用1000个正面和1000个负面例子来分类哪些Reuter文章是关于"公司收购"的.
将句子转换为要分类的特征可能需要一些工作.在这个模型中,每个单词都是一个特征 - 这需要对句子进行标记,这意味着将单词和标点符号相互分离.另一个提示是小写所有单独的单词标记,以便"我恨你"和"我讨厌你"最终被认为是相同的.您可以尝试使用更多数据,还可以包括大写是否有助于对某人是否生气进行分类,但我认为至少对于初始努力来说,语言应该足够了.
编辑
我刚刚发现LingPipe实际上有一个关于使用我正在谈论的Bo Pang和Lillian Lee Sentiment Polarity语料库进行情绪分析的教程.如果你使用Java可能是一个很好的工具,即使它没有完成我上面讨论的所有步骤.
毫无疑问,可以根据用户输入的文字判断用户的心情,但这不是一件容易的事情.我能想到的事情:
首都往往表示激动,烦恼或沮丧,当然是一种情绪反应,但后来又有一些新手这样做,因为他们没有意识到重要性所以你不能假设没有看到他们写的其他东西(为了确保它不是所有的帽子);
资本实际上只是一种强调形式.其他人使用某些激进的颜色(例如红色)或使用粗体或更大的字体;
有些人在情绪高涨时会犯更多的拼写和语法错误和拼写错误;
扫描表情符号可以让你非常清楚地了解用户的感受,但是像:)这样的东西可以被解释为快乐,"我告诉过你",甚至还有讽刺意味;
使用咒骂往往具有明确的含义,但同样不明确.许多人的口语演讲通常会包含一些四个字母的单词.对于其他一些人来说,他们甚至可能不会说"地狱",而是说"哎呀",所以任何咒骂(甚至"糟透了")都是重要的;
当咒骂不一定合适时,标点符号组(如@#$ @ $ @)往往被替换为上下文中的咒骂,因此不太可能是口语;
感叹号可以表示惊讶,震惊或恼怒.
您可能希望查看书面文本分析的进展,甚至通过结合多个证据来源确定博客的情绪.
最后值得注意的是,书面文字通常被认为比实际上更负面.这是公司中电子邮件通信的常见问题,仅作为一个示例.