使用R进行情感分析

28

有没有专注于情感分析的R语言包?我有一个小调查,用户可以在其中写下他们使用Web工具的体验评论。我要求他们给出数字评分,并提供包括评论的选项。

我想知道评估评论正面或负面程度的最佳方法。我希望能够使用R将其与用户提供的数字评分进行比较。


2
请查看Jeffery Breen的作品:http://www.slideshare.net/jeffreybreen/r-by-example-mining-twitter-for - mweylandt
@mweylandt,作为一个同样叫Jeffrey的人,它的拼写是“r-e-y”。但这似乎是一种简单而整洁的方法。 - Jeff Allen
Jeffrey Breen提供了一份非常优秀的指南,特别是对于像我这样的文本挖掘初学者来说。我推荐访问Paras分享的链接。 从该链接,你可以进入刘冰教授的网站,他专注于以下主题: 【观点挖掘、情感分析和观点垃圾邮件检测】 http://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html 祝好,Rod - rodobastias
5个回答

26

还有这个软件包:sentiment: 情感分析工具:

Sentiment是一个R语言软件包,提供情感分析的工具,其中包括基于贝叶斯分类器的积极/消极情绪分类和情感分类。

更新于2012年12月14日:被移至存档...

更新于2013年3月15日:软件包qdap提供了一个基于Jeffery Breen的工作的polarity函数。


1
此软件包不再适用于R 3.3。 - John Smith

18

这里是我在R语言上进行情感分析的工作。

这段代码并不完美或者包装得很好,但是我已经在Github上发布了它,并提供了基本文档。我使用了ViralHeat情感分析API,它只返回JSON,因此实际进行情感分析的函数非常简单(请参见这里的代码)。

如果您在使用过程中遇到问题,请随时与我联系。请注意,在使用之前,您需要向ViralHeat注册API密钥。如果您发现配额过于限制,可以联系他们,他们很乐意在几个月内为我提供更多的查询量,以便我玩弄API。


5

2
我尝试重新组织并提供一个连贯的情感分析包,你可以在这里找到。SentR包括单词词干提取和预处理,并提供访问ViralHeat API、默认聚合函数以及更高级的朴素贝叶斯方法。
安装相对简单:
install.packages('devtools')
require('devtools')
install_github('mananshah99/sentR')
require('sentR')

一个简单的分类示例:

# Create small vectors for happy and sad words (useful in aggregate(...) function)
positive <- c('happy', 'well-off', 'good', 'happiness')
negative <- c('sad', 'bad', 'miserable', 'terrible')

# Words to test sentiment
test <- c('I am a very happy person.', 'I am a very sad person', 
'I’ve always understood happiness to be appreciation. There is no greater happiness than appreciation for what one has- both physically and in the way of relationships and ideologies. The unhappy seek that which they do not have and can not fully appreciate the things around them. I don’t expect much from life. I don’t need a high paying job, a big house or fancy cars. I simply wish to be able to live my life appreciating everything around me. 
')

# 1. Simple Summation
out <- classify.aggregate(test, positive, negative)
out

# 2. Naive Bayes
out <- classify.naivebayes(test)
out

它提供以下输出:

  score
1     1
2    -1
3     2

     POS                NEG                 POS/NEG             SENT      
[1,] "9.47547003995745" "0.445453222112551" "21.2715265477714"  "positive"
[2,] "1.03127774142571" "9.47547003995745"  "0.108836578774127" "negative"
[3,] "67.1985217685598" "35.1792261323723"  "1.9101762362738"   "positive"

请随意贡献 :) 希望这有所帮助!


嗨Manan,我喜欢你的解决方案。我已经尝试了并将继续实验。你有没有像任何公开使用的项目那样的用例?谢谢。 - seakyourpeak
@seakyourpeak 感谢您的评论!我正在开发一个样例Twitter情感提取库 (github.com/manans99),但目前每个函数的文档都包括一个使用示例。如果您有任何进一步的问题,请随时私信联系我。 - manan
@manan 我目前正在处理 Facebook 帖子数据。我已经成功提取了帖子并生成了一个词云图。我想知道您是否认为使用最常见的单词来将我的列表划分为正面和负面是一个好主意。例如:如果在我的词云图中发现了 like,bad,great,love,happy,sad,plane,car,transport 等单词,我会将 like,great,love 和 happy 作为正面分类器,而 sad 和 bad 作为负面分类器。 - Nico Coallier

0

您仍然可以使用情感分析包。按照以下脚本安装它。

您可能需要 R 3.x 版本。

require(devtools)
install_url("http://cran.r-project.org/src/contrib/Archive/sentiment/sentiment_0.2.tar.gz")
require(sentiment)
ls("package:sentiment")

1
setiment包依赖于rstem包,而R 3.0.2也不支持该包。 - Nishanth Lawrence Reginold
是的,即使源网站:https://sites.google.com/site/miningtwitter/home 警告:由于Twitter API的更改,此Google网站中的代码不再受支持...尽管您可以随意浏览其内容。 - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接