亲爱的 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

任何人都知道如何让它像那样工作?

祝一切顺利,

最佳答案

这是今年早些时候重新引入 bag_o_word 函数的错误。这是第二次这样的错误影响 ngram 极性,因为我启用了 ngrams 在 Polarity.frame 中的使用: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 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

关于r - qdap ngram 极性字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27156834/

10-12 18:13