gpt4 book ai didi

r - 大文本语料库打破了tm_map

转载 作者:行者123 更新时间:2023-12-04 13:32:02 25 4
gpt4 key购买 nike

在过去的几天里,我一直在为这个问题努力。我搜索了所有的SO文件,并尝试了建议的解决方案,但似乎无法正常工作。我在2000 06、1995 -99等文件夹中有txt文档集,并且想要运行一些基本的文本挖掘操作,例如创建文档术语矩阵和术语文档矩阵,以及基于单词的共置位置进行一些操作。我的脚本适用于较小的语料库,但是,当我尝试使用较大的语料库时,它会使我失望。我已经粘贴了一种此类文件夹操作的代码。

library(tm) # Framework for text mining.
library(SnowballC) # Provides wordStem() for stemming.
library(RColorBrewer) # Generate palette of colours for plots.
library(ggplot2) # Plot word frequencies.
library(magrittr)
library(Rgraphviz)
library(directlabels)

setwd("/ConvertedText")
txt <- file.path("2000 -06")

docs<-VCorpus(DirSource(txt, encoding = "UTF-8"),readerControl = list(language = "UTF-8"))
docs <- tm_map(docs, content_transformer(tolower), mc.cores=1)
docs <- tm_map(docs, removeNumbers, mc.cores=1)
docs <- tm_map(docs, removePunctuation, mc.cores=1)
docs <- tm_map(docs, stripWhitespace, mc.cores=1)
docs <- tm_map(docs, removeWords, stopwords("SMART"), mc.cores=1)
docs <- tm_map(docs, removeWords, stopwords("en"), mc.cores=1)
#corpus creation complete

setwd("/ConvertedText/output")
dtm<-DocumentTermMatrix(docs)
tdm<-TermDocumentMatrix(docs)
m<-as.matrix(dtm)
write.csv(m, file="dtm.csv")
dtms<-removeSparseTerms(dtm, 0.2)
m1<-as.matrix(dtms)
write.csv(m1, file="dtms.csv")
# matrix creation/storage complete

freq <- sort(colSums(as.matrix(dtm)), decreasing=TRUE)
wf <- data.frame(word=names(freq), freq=freq)
freq[1:50]
#adjust freq score in next line
p <- ggplot(subset(wf, freq>100), aes(word, freq))+ geom_bar(stat="identity")+ theme(axis.text.x=element_text(angle=45, hjust=1))
ggsave("frequency2000-06.png", height=12,width=17, dpi=72)
# frequency graph generated


x<-as.matrix(findFreqTerms(dtm, lowfreq=1000))
write.csv(x, file="freqterms00-06.csv")
png("correlation2000-06.png", width=12, height=12, units="in", res=900)
graph.par(list(edges=list(col="lightblue", lty="solid", lwd=0.3)))
graph.par(list(nodes=list(col="darkgreen", lty="dotted", lwd=2, fontsize=50)))
plot(dtm, terms=findFreqTerms(dtm, lowfreq=1000)[1:50],corThreshold=0.7)
dev.off()

当我在tm_map中使用mc.cores = 1参数时,该操作将无限期地继续。但是,如果我在tm_map中使用lazy = TRUE参数,则看似运行良好,但是后续操作会出现此错误。
Error in UseMethod("meta", x) : 
no applicable method for 'meta' applied to an object of class "try-error"
In addition: Warning messages:
1: In mclapply(x$content[i], function(d) tm_reduce(d, x$lazy$maps)) :
all scheduled cores encountered errors in user code
2: In mclapply(unname(content(x)), termFreq, control) :
all scheduled cores encountered errors in user code

我一直在寻找解决方案,但一直失败。任何帮助将不胜感激!

最好的!
ķ

最佳答案

我找到了可行的解决方案。

背景/调试步骤

我尝试了几种无效的方法:

  • 将“content_transformer”添加到某个tm_map,甚至添加到一个(塔式)
  • 在tm_map
  • 中添加“lazy = T”
  • 尝试了一些并行计算软件包

  • 虽然它不适用于我的两个脚本,但每次都适用于第三个脚本。但是,这三个脚本的代码都是相同的,只是我加载的.rda文件的大小不同。这三个文件的数据结构也相同。
  • 数据集1:大小-493.3KB =错误
  • 数据集2:大小-630.6KB =错误
  • 数据集3:大小-300.2KB =有效!

  • 只是很奇怪。

    我的 sessionInfo()输出:
    R version 3.1.2 (2014-10-31)
    Platform: x86_64-apple-darwin13.4.0 (64-bit)

    locale:
    [1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8

    attached base packages:
    [1] stats graphics grDevices utils datasets methods base

    other attached packages:
    [1] snowfall_1.84-6 snow_0.3-13 Snowball_0.0-11 RWekajars_3.7.11-1 rJava_0.9-6 RWeka_0.4-23
    [7] slam_0.1-32 SnowballC_0.5.1 tm_0.6 NLP_0.1-5 twitteR_1.1.8 devtools_1.6

    loaded via a namespace (and not attached):
    [1] bit_1.1-12 bit64_0.9-4 grid_3.1.2 httr_0.5 parallel_3.1.2 RCurl_1.95-4.3 rjson_0.2.14 stringr_0.6.2
    [9] tools_3.1.2

    解决方案

    我只是在加载数据后添加了这一行,现在一切正常:
    MyCorpus <- tm_map(MyCorpus,
    content_transformer(function(x) iconv(x, to='UTF-8-MAC', sub='byte')),
    mc.cores=1)

    在此处找到了提示: http://davetang.org/muse/2013/04/06/using-the-r_twitter-package/(由于错误,作者于2014年11月26日更新了代码)。

    关于r - 大文本语料库打破了tm_map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26834576/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com