0

我正在尝试使用tm包创建一个TermDocumentMatrix,但似乎遇到了困难。

输入:

trainDF<-as.matrix(list("I'm going home", "trying to fix this", "when I go home"))

目标 - 从输入创建 TDM:(并非下面列出的所有控制参数)

control <- list(
    weight= weightTfIdf, 
    removeNumbers=TRUE, 
    removeStopwords=TRUE, 
    removePunctuation=TRUE,    
    stemWords=TRUE, 
    maxWordLength=maxWordL,
    bounds=list(local=c(minDocFreq, maxDocFreq))
)

tdm<- TermDocumentMatrix(Corpus(DataframeSource(trainDF)),control = control)

我得到的错误:

Warning message:
In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'

并且 tdm 对象是空的。有任何想法吗?

4

1 回答 1

4

该错误表明您在范围内选择的最小和最大文档频率有问题。例如,以下工作:

control=list(weighting = weightTfIdf,
             removeNumbers=TRUE, 
             removeStopwords=TRUE, 
             removePunctuation=TRUE, 
             bounds=list(local=c(1,3)))
tdm<- TermDocumentMatrix(Corpus(DataframeSource(trainDF)), control=control)

请注意,在最新版本的 TM 中,要指定权重,您需要使用weighting = weightTfIdf而不是weight = weightTfIdf. 同样,您应该stemming=TRUE在控制列表中使用词干。我不确定这maxWordLength是目前的一个选项。TM 会默默地忽略控制列表中的无效选项,因此在您返回检查矩阵之前,您不会知道出了什么问题。

于 2013-11-05T15:56:56.877 回答