我是qdap的作者。该polarity
函数是为更小的数据集设计的。随着我的角色转变,我开始使用更大的数据集。我需要快速和准确(这两件事是相互对立的),并且从那时起开发了一个分离包感测器。该算法经过优化,比qdap的极性更快、更准确。
就目前而言,您有 5 个基于字典(或基于训练的算法)来进行情绪检测。每个都有它的缺点 (-) 和优点 (+),并且在某些情况下很有用。
- qdap +on CRAN;-慢的
- syuzhet +在 CRAN 上;+快;+伟大的阴谋; - 对非文学用途不太准确
- 感悟者+快;+更高的准确性;- 仅 GitHub
- stansent(斯坦福港) +最准确;-慢点
- tm.plugin.sentiment -在 CRAN 上存档;- 我不能让它轻松工作
我在下面的代码中显示了对上面前 4 个选项的样本数据的时间测试。
安装包并制作计时功能
我使用 pacman 是因为它允许读者只运行代码;虽然你可以用install.packages
&来代替library
。
if (!require("pacman")) install.packages("pacman")
pacman::p_load(qdap, syuzhet, dplyr)
pacman::p_load_current_gh(c("trinker/stansent", "trinker/sentimentr"))
pres_debates2012 #nrow = 2912
tic <- function (pos = 1, envir = as.environment(pos)){
assign(".tic", Sys.time(), pos = pos, envir = envir)
Sys.time()
}
toc <- function (pos = 1, envir = as.environment(pos)) {
difftime(Sys.time(), get(".tic", , pos = pos, envir = envir))
}
id <- 1:2912
计时
## qdap
tic()
qdap_sent <- pres_debates2012 %>%
with(qdap::polarity(dialogue, id))
toc() # Time difference of 18.14443 secs
## sentimentr
tic()
sentimentr_sent <- pres_debates2012 %>%
with(sentiment(dialogue, id))
toc() # Time difference of 1.705685 secs
## syuzhet
tic()
syuzhet_sent <- pres_debates2012 %>%
with(get_sentiment(dialogue, method="bing"))
toc() # Time difference of 1.183647 secs
## stanford
tic()
stanford_sent <- pres_debates2012 %>%
with(sentiment_stanford(dialogue))
toc() # Time difference of 6.724482 mins
有关时间和准确性的更多信息,请参阅我的感悟者 README.md ,如果它有用,请给 repo 加注星标。下面的可视化捕获了自述文件中的一项测试:
![在此处输入图像描述](https://i.stack.imgur.com/UZwie.png)