我在R中使用了运行良好的tm软件包中的一些文本挖掘代码。然后,我更新了R以及tm和R-Weka包。现在,代码不起作用,我不知道为什么。
我的原始代码指南来自:https://gist.github.com/benmarwick/6127413
此代码(上面链接的)和我的代码(下面)都没有给出所需的结果。当我的代码成功执行时(在以前版本的软件包下), 它提供了涉及特定关键词的n-gram。它还将根据它们与n-gram集合中关键词的距离提供有序的单词列表。
有两个具体问题:
eventdocs< - tm_map(eventdocs,PlainTextDocument)
下一行代码是:
eventdtm <- DocumentTermMatrix(eventdocs)
尝试创建文档文本矩阵(eventdtm)时,代码会给出错误:
simple_triplet_matrix中的错误(i,j,v,nrow = length(terms),ncol = length(corpus),: 'i,j'无效
我已经更新了所有,包括java,但仍然会出现此错误。
我注释了PlainTextDocument代码,因为我使用的文本已经是.txt格式,因为我发现有些人说这个步骤不是必需的。当我这样做时,形成文档 - 文本矩阵(或似乎准确地形成)。但我想解决这个错误,因为我之前遇到的问题是该行没有执行。
该代码是:
span <- 4
span1 <- 1 + span * 2
ngramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = span1, max = span1))
dtmevents <- TermDocumentMatrix(eventdocs, control = list(tokenize = ngramTokenizer))
#find ngrams that have the key word of interest
word <- "keyword"
subset_ngrams <- dtmevents$dimnames$Terms[grep(word, dtmevents$dimnames$Terms)]
subset_ngrams <- subset_ngrams[sapply(subset_ngrams, function(i) {
tmp <- unlist(strsplit(i, split=" "))
tmp <- tmp[length(tmp) - span]
tmp} == word)]
allwords <- paste(subset_ngrams, collapse = " ")
uniques <- unique(unlist(strsplit(allwords, split=" ")))
唯一的单词集只是感兴趣的关键词,删除了所有其他高频配置(此时,我知道代码不起作用)。任何帮助或线索将不胜感激。花了很长时间让事情最初起作用。然后,随着更新,我失去了行动。谢谢。
答案 0 :(得分:0)
它的软件包版本问题。 您需要安装0.6-2版本。 解决方案:
require(devtools)
install_version("tm", version = "0.6-2", repos = "http://cran.r-project.org")