我正在使用 qdap 软件包来确定特定应用程序的每个评论注释的情绪。我从CSV文件中读取评论注释,并将其传递给qdap的极性函数。一切正常,我得到了所有评论的极性,但问题是,计算所有句子的极性需要7-8秒(CSV文件中存在的句子总数为779)。我在下面粘贴我的代码。

  temp_csv <- filePath()
  attach(temp_csv)
  text_data <- temp_csv[,c('Content')]
  print(Sys.time())
  polterms <- list(neg=c('wtf'))
  POLKEY <- sentiment_frame(positives=c(positive.words),negatives=c(polterms[[1]],negative.words))
  polarity <- polarity(sentences, polarity.frame = POLKEY)
  print(Sys.time())

花费的时间如下:

[1]“2016-04-12 16:43:01 IST”

[1]“2016-04-12 16:43:09 IST”

有人可以让我知道我做错了什么吗?
如何提高性能?

最佳答案

我是 qdap 的作者。 polarity函数设计用于较小的数据集。随着角色转变,我开始处理更大的数据集。我需要快速且准确(这两件事彼此对立),并且从那时起开发了一个脱离包装sentimentr。该算法经过优化,比 qdap 的极性更快,更准确。

目前,您有5种基于字典(或基于训练有素的算法)的情感检测方法。每个都有其缺点(-)和优点(+),在某些情况下很有用。

CRAN上的

  • qdap +; -慢
  • CRAN上的
  • syuzhet +; +快速; +大图; -非文学类使用时准确
  • sentimentr + fast; +更高的精度; -仅GitHub
  • stansent (stanford port) +最准确; -较慢
  • tm.plugin.sentiment-在CRAN上存档; -我无法使其轻松工作

  • 在下面的代码中,我从上面的前4个示例中显示了对样本数据的时间测试。

    安装软件包并进行计时功能

    我使用pacman是因为它允许读者只运行代码。尽管您可以替换为install.packageslibrary调用。
    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
    

    有关计时和准确性的更多信息,请参阅我的sentimentr README.md,如果它对有用,请为存储库加注星标。下面的可视化捕获了自述文件中的测试之一:

    r - 使用qdap对评论进行情感分析的速度很慢-LMLPHP

    关于r - 使用qdap对评论进行情感分析的速度很慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36572677/

    10-12 23:34