对Python中的Twitter的情感分析
我正在寻找文本情感分析 ( http://en.wikipedia.org/wiki/Sentiment_analysis )的开源实现,最好是Python。 有谁熟悉我可以使用的这种开源实现吗?
我正在编写一个应用程序,searchTwitter的某个search字词,说“youtube”,并计数“幸福”的鸣叫与“悲伤”的鸣叫。 我使用Google的appengine,所以它是在Python中。 我想能够分类从Twitter返回的search结果,我想在Python中做到这一点。 到目前为止,我还没有能够find这样的情感分析器,特别是在python中。 您是否熟悉我可以使用的这种开源实现? 最好这已经在python,但如果不是,希望我可以把它翻译成python。
请注意,我正在分析的文本非常短,他们是推文。 所以理想情况下,这个分类器是为这样的简短文本进行了优化。
顺便说一句,叽叽喳喳支持search“:)”和“:(”运营商的目的是做到这一点,但不幸的是,他们提供的分类不是很大,所以我想我可以给这个尝试自己。
谢谢!
顺便说一句,早期的演示在这里 ,我到目前为止的代码是在这里 ,我很乐意与任何感兴趣的开发人员开放它。
对于大多数这样的应用程序,您将不得不滚动您自己的代码以进行统计分类任务。 正如Lucka所build议的那样,只要您的目标不会干扰其许可证的非商业性质,NLTK就是Python中自然语言处理的完美工具。 不过,我会build议其他软件包进行build模。 我还没有发现许多强大的Python可用的高级机器学习模型,所以我将build议一些易于与之配合的独立二进制文件。
您可能对高级辨别build模工具包感兴趣,它可以很容易地与Python接口。 这已被用于自然语言处理的各个领域的分类任务。 您也可以select多种不同的型号。 我build议从最大熵分类开始,只要你已经熟悉实现朴素贝叶斯分类器。 如果不是的话,你可能需要研究它,然后编写一个代码,以真正理解统计分类作为机器学习任务。
得克萨斯大学奥斯汀分校计算语言学团体已经举办了大部分来自他们的项目使用这个伟大的工具。 您可以查看“ 计算语言学II”的课程页面,了解如何使其工作以及之前提供的应用程序。
另一个以同样的方式工作的伟大的工具是马利特 。 Mallet之间的区别是有更多的文档和更多的模型可用,比如决策树,它是用Java编写的,在我看来,它使它慢一点。 Weka是一整套不同的机器学习模型,其中包含一些graphics化的东西,但它实际上主要是为了教学目的,而不是我真正投入生产的东西。
祝你好运。 真正困难的部分可能是你需要的知识工程量,以便对你的模型学习的“种子集”进行分类。 它需要相当大的程度,取决于你是否进行二元分类(快乐vs悲伤)或一系列的情绪(这将需要更多)。 确保拿出一些这些工程数据进行testing,或运行一些十倍或删除一个testing,以确保你真的做好预测之前,你把它放在那里。 最重要的是,玩得开心! 在我看来,这是NLP和AI最棒的部分。
祝你好运。
情感是非常上下文的,微博文化使问题变得更糟,因为你没有被赋予大多数推文的上下文 。 叽叽喳喳的整个意思是,你可以利用大量的共享“现实世界”的上下文包装在一个非常简短的消息有意义的沟通。
如果他们说video不好,这是否意味着坏或坏 ?
有一天,一位语言学教授正在讲课。 她说:“用英语来说,”双重否定forms是积极的,但在一些语言中,如俄语,双重否定仍然是否定的,但没有双重积极的语言可以形成否定的。
房间后面传来一个声音,“是啊……好吧。”
感谢大家的build议,他们确实非常有用! 我最终使用了一个朴素贝叶斯分类器,我从这里借用。 我开始给它提供一个好/坏关键字列表,然后通过用户反馈添加一个“学习”function。 事实certificate,工作很不错。
我在博客文章中的全部细节。
再次,你的帮助是非常有用的,所以谢谢你!
我已经build立了一个以情绪标注的单词列表。 你可以从这里访问它:
http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip
你会在我的博客上find一个简短的Python程序:
http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/
这篇文章显示了如何使用单词列表以及单词和Twitter。
单词列表方法有其局限性。 您将会在文章“A new ANEW:Evaluation of a word list for sentiment analysis in microblogs”中find我的单词列表的局限性。 那篇文章可以在我的主页上find。
请注意代码中缺lessunicode(s, 'utf-8')
(由于paedagog的原因)。
许多研究论文指出,情感分析的一个好的起点是看形容词,比如它们是积极形容词还是否定形容词。 对于一小段文字来说,这几乎是你唯一的select……有些文章看整个文档,或者是句子层次的分析,但是正如你所说的,推文是相当短的……没有真正的魔法来理解一个句子的情绪,所以我认为你最好的select是search这些研究论文中的一个,试图得到他们的正面/负面的形容词的数据集。
现在,已经说过,情感是特定领域的,而且你可能发现使用通用数据集很难获得高水平的准确性。
祝你好运。
我想你可能会发现很难find你想要的。 我所知道的最接近的是LingPipe ,它具有一些情感分析function ,可以在有限的开源许可下使用,但是是用Java编写的。
而且,情绪分析系统通常通过训练产品/电影评论数据的系统来开发,该数据与一般推特明显不同。 他们将被优化的文本与几个句子,所有关于同一主题。 我怀疑你自己可能会更好地提出一个基于规则的系统,也许是基于像匹兹堡大学所提供的情感词汇的词汇。
看看我们感觉很好 ,实现了一个非常漂亮的界面(和twitrratr )类似的想法。
看看Twitter的情绪分析工具 。 它是用python编写的,它使用朴素贝叶斯分类器和半监督机器学习。 来源可以在这里find。
也许TextBlob (基于NLTK和模式)是适合你的情感分析工具。
刚才我遇到了Natural Language Toolkit 。 你可以用它作为出发点。 它也有很多模块和插件,所以也许他们已经有了类似的东西。
有些古怪的想法:你可以尝试使用Twitter API来下载一大组推文,然后使用表情符号对该集合的一个子集进行分类:“:)”,“:”,“:D”等的一个肯定组,另一个带“:(”等的否定组
一旦你有了这个粗分类,你可以通过频率或者ngram分析来寻找更多的线索或者其他的线索。
这可能看起来很愚蠢,但是对此进行了认真的研究(search“情感分析”和表情符号)。 值得一看。
TweetFeel提供的Twitter Sentiment API可以对推文进行高级语言分析,并可以检索正面/负面的推文。 请参阅http://www.webservius.com/corp/docs/tweetfeel_sentiment.htm
对于那些有兴趣从头开始编写Twitter Sentiment Analyis的人来说,在GitHub上有一个Coursera课程“ 数据科学 ”,它带有python代码(作为作业1的一部分 – 链接 )。 情绪是AFINN-111的一部分 。
您可以在这里find工作解决scheme。 除了AFINN-111情绪列表外,还有一个简单的实现方法,即根据具有pos / neg分数的tweets中的词条频率(请参见此处 )来构builddynamic词条列表。