亲爱的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
任何一个想法如何让这样的工作?
一切顺利, 本
答案 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