删除R语料库中的停用词和tolower功能

时间:2016-07-14 14:53:58

标签: r performance text-mining tm

我的语料库大致有75 MB的数据。我正在尝试使用以下命令

tm_map(doc.corpus, removeWords, stopwords("english"))
tm_map(doc.corpus, tolower)

这两项功能至少需要40分钟才能运行。我正在寻找加快这个过程,因为我正在为我的模型使用tdm矩阵。

我经常尝试gc()memory.limit(10000000)等命令,但我无法加快处理速度。

我有一个带4GB RAM的系统,并运行本地数据库来读取输入数据。

希望加快建议!

2 个答案:

答案 0 :(得分:2)

也许你可以试试quanteda

library(stringi)
library(tm)
library(quanteda)

txt <- stri_rand_lipsum(100000L)
print(object.size(txt), units = "Mb")
# 63.4 Mb

system.time(
  dfm <- dfm(txt, toLower = TRUE, ignoredFeatures = stopwords("en")) 
)
# Elapsed time: 12.3 seconds.
#        User      System verstrichen 
#       11.61        0.36       12.30 

system.time(
  dtm <- DocumentTermMatrix(
    Corpus(VectorSource(txt)), 
    control = list(tolower = TRUE, stopwords = stopwords("en"))
  )
)
#  User      System verstrichen 
# 157.16        0.38      158.69 

答案 1 :(得分:0)

首先我尝试

tm_map(doc.corpus, content_transformer(tolower))

因为tolower()

列表中的getTransformations()不在内