我正在寻找文本情感分析(http://en.wikipedia.org/wiki/Sentiment_analysis)的开源实现,最好是在python中.是否有人熟悉我可以使用的这种开源实现?
我正在编写一个应用程序,在Twitter上搜索一些搜索词,比如"youtube",并计算"快乐"的推文与"悲伤"的推文.我正在使用Google的appengine,所以它在python中.我希望能够从twitter中对返回的搜索结果进行分类,我想在python中进行分类.到目前为止,我还没有找到这样的情绪分析器,特别是在python中.您熟悉我可以使用的这种开源实现吗?最好这已经是python,但如果没有,希望我可以将它翻译成python.
请注意,我正在分析的文本非常简短,它们是推文.理想情况下,此分类器针对此类短文本进行了优化.
顺便说一下,twitter确实支持搜索中的":)"和":("运算符,其目的就是为了做到这一点,但不幸的是,他们提供的分类并不是那么好,所以我想我可能会试一试.
谢谢!
BTW,早期的演示就在这里,我到目前为止的代码就在这里,我很乐意与任何感兴趣的开发人员一起开源.
祝你好运.
情绪极具情境性,推文文化使问题变得更糟,因为大多数推文没有给出上下文.twitter的重点在于,您可以利用大量共享的"真实世界"上下文,在非常短的消息中打包有意义的通信.
如果他们说视频不好,这是坏还是坏?
一天,一位语言学教授在课堂上讲课."在英语中,"她说,"双重否定形成了积极的一面.但在某些语言中,如俄语,双重否定仍然是消极的.但是,没有一种语言,其中双重积极可以形成消极."
房间后面的声音传来,"是的......直接."
对于大多数这类应用程序,您必须为统计分类任务滚动大部分自己的代码.正如Lucka所说,NLTK是Python中自然语言操作的完美工具,只要您的目标不会干扰其许可证的非商业性质.但是,我会建议其他软件包进行建模.我还没有找到许多适用于Python的强大的高级机器学习模型,因此我将建议一些可以轻松配合它的独立二进制文件.
您可能对The Toolkit for Advanced Discriminative Modeling感兴趣,它可以很容易地与Python连接.这已被用于自然语言处理的各个领域中的分类任务.您还可以选择许多不同的型号.我建议从最大熵分类开始,只要你已经熟悉实现朴素贝叶斯分类器.如果没有,你可能想要查看它并编写代码,以便真正理解统计分类作为机器学习任务.
德克萨斯大学奥斯汀分校的计算语言学团体已经开设了课程,其中大部分项目都使用了这个伟大的工具.您可以查看计算语言学II的课程页面,了解如何使其工作以及它所服务的先前应用程序.
另一个同样有效的工具是Mallet.Mallet之间的区别在于有更多的文档和更多可用的模型,例如决策树,而且它在Java中,在我看来,它使它变得有点慢. Weka是一套完整的不同机器学习模型,包含一些图形内容,但它主要用于教学目的,并不是我投入生产的东西.
祝你的任务好运.真正困难的部分可能是您需要预先设定的知识工程量,以便对您的模型将学习的"种子集"进行分类.它需要相当大,取决于你是在做二元分类(快乐与悲伤)还是一系列情绪(需要更多).确保将这些工程数据中的一些用于测试,或运行一些十倍或一个删除测试,以确保在实施之前确实做好了预测工作.最重要的是,玩得开心!在我看来,这是NLP和AI的最佳部分.
感谢大家的建议,他们确实非常有用!我最终使用了朴素贝叶斯分类器,我从这里借用了它.我开始给它添加好/坏关键字列表,然后通过使用用户反馈添加"学习"功能.事实证明它非常好用.
我在博客文章中的工作的全部细节.
再次,你的帮助非常有用,谢谢!
我构建了一个标有情绪的单词列表.您可以从这里访问它:
http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip
你会在我的博客上找到一个简短的Python程序:
http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/
这篇文章展示了如何使用单个句子以及Twitter使用单词列表.
单词列表方法有其局限性.您将在"新的ANEW:评估微博中的情绪分析的单词列表"一文中找到我的单词列表限制的调查.该文章可从我的主页获得.
请注意unicode(s, 'utf-8')
代码中缺少一个(出于paedagogic原因).
许多研究论文表明情绪分析的良好起点是关注形容词,例如,它们是正面形容词还是负面形容词.对于一小段文本来说,这几乎是你唯一的选择...有些论文可以查看整个文档或句子级别分析,但正如你所说,推文很短......没有真正神奇的方法来理解一句话的情绪,所以我认为你最好的选择是搜索其中一篇研究论文并尝试获得他们的正面/负面形容词的数据集.
现在,已经说过,情绪是针对特定领域的,您可能会发现很难通过通用数据集获得高水平的准确性.
祝好运.