我在r中使用tm包。一切正常,直到我包括stemCompletion。我收到以下错误:
Error in grep(sprintf("^%s", w), dictionary, value = TRUE) :
invalid regular expression
我的代码如下:
path = '~/Interviews/Transcripts/'
file.names <- dir(path, pattern = '.txt')
corpus = lapply(seq_along(file.names), function(index) {
fileName = file.names[index]
filePath = paste(path, fileName, sep = '')
transcript = readChar(filePath, file.info(filePath)$size)
transcript <- gsub("[’‘^]", '', transcript)
corpusName = paste('transcript', index, sep = "_")
c <- Corpus(VectorSource(transcript))
DublinCore(c[[1]], 'Identifier') <- paste(index, fileName, sep ='_')
meta(c, type = 'corpus')
c <- tm_map(c, stripWhitespace)
c <- tm_map(c, content_transformer(tolower))
c <- tm_map(c, removeWords, c(stopwords("english"), 'yeah', 'yep'))
c <- tm_map(c, removePunctuation)
c <- tm_map(c, stemDocument)
c <- tm_map(c, stemCompletion, c)
c <- tm_map(c, PlainTextDocument)
c
})
答案 0 :(得分:1)
首先,从理论上讲,您可能希望使用tm_map(c, content_transformer(stemCompletion), c)
,因为tm_map(c, stemCompletion, c)
将PlainTextDocument
传递给x
的参数stemCompletion
,尽管它预计一个字符向量(见?stemCompletion
)。其次,没有干标记来完成干,因为你没有进行任何标记化(例如?termDocumentMatrix
),并且你的字典语料库已经被删除了,所以你正在尝试的方法可能无论如何都不会这样。
(第三,我是第二个@RomanLuštrik:请编辑你的帖子并将其作为一个可重复性最小的例子。这样,见证这个错误的读者和其他人可以轻松地跟随。)
以下是一个例子:
content(tm_map(Corpus(VectorSource("stem completion has advantages")), stemDocument)[[1]])
# [1] "stem complet has advantag"
stemCompletion(c("complet", "advantag"), Corpus(VectorSource("stem completion has advantages")))
# complet advantag
# "completion" "advantages"