qdap ngram极性字典

时间:2014-11-26 18:54:02

标签: r dictionary sentiment-analysis qdap

亲爱的Stackoverlow人群

我设法使用qdap极性函数来计算某些博客条目的极性,根据sentiWS加载我自己的字典。现在我有了一个新的情感词典(SePL),它不仅包含单个单词,还包含短语。例如"简单好",其中"简单"既不是否定器也不是放大器,而是使它更精确。所以我想知道,我可以使用qdap的极性函数来搜索ngram。

举个例子:

library(qdap)
phrase <- "This is simply the best"
key <- sentiment_frame(c("simply", "best", "simply the best"), "", c(0.1,0.3,0.8))
counts(polarity(phrase, polarity.frame=key))

给出:

  all wc polarity    pos.words neg.words                text.var
1 all  5    0.179 simply, best         - This is simply the best

但是,我希望获得如下输出:

  all wc polarity    pos.words neg.words                text.var
1 all  5    0.76 simply the best         - This is simply the best

任何一个想法如何让这样的工作?

一切顺利, 本

1 个答案:

答案 0 :(得分:2)

这是今年早些时候重新引入bag_o_word函数的错误。这是第二次像这样的bug影响了ngram极性,因为我在polar.frame中使用了ngrams:https://github.com/trinker/qdap/issues/185

我已修复错误并添加了单元测试,以确保此错误不会回溯到代码中。您在qdap 2.2.1中的代码现在提供了所需的输出,但是针对算法初始意图的警告仍然存在:

> library(qdap)
> phrase <- "This is simply the best"
> key <- sentiment_frame(c("simply", "best", "simply the best"), "", c(0.1,0.3,0.8))
> counts(polarity(phrase, polarity.frame=key))

  all wc polarity       pos.words neg.words                text.var
1 all  5    0.358 simply the best         - This is simply the best

qdap &#39; polarity函数使用的算法并非如此设计。您可以使用以下hack来实现它,但要知道它不符合函数算法中使用的基础理论的意图:

library(qdap)
phrase <- "This is simply the best"

terms <- c("simply", "best", "simply the best")
key <- sentiment_frame(space_fill(terms, terms, sep="xxx"), NULL, c(0.1,0.3,0.8))

counts(polarity(space_fill(phrase, terms, "xxx"), polarity.frame=key))

##   all wc polarity           pos.words neg.words                    text.var
## 1 all  3    0.462 simplyxxxthexxxbest         - This is simplyxxxthexxxbest