包tm。 kmeans的问题

时间:2011-11-09 23:18:25

标签: r statistics cluster-analysis k-means text-mining

我在R中有一个关于k-means聚类的问题。实际上我按照这个article做了一切。一切都基于tm包中的示例,因此不需要数据导入。 acq包含50个文档和20个原始文档。

library(tm)
data("acq")
data("crude")
ws <- c(acq, crude)
wsTDM <- Data(TermDocumentMatrix(ws)) #First problem here
wsKMeans <- kmeans(wsTDM, 2)
wsReutersCluster <- c(rep("acq", 50), rep("crude", 20))
cl_agreement(wsKMeans, as.cl_partition(wsReutersCluster), "diag")

Error in lapply(X, FUN, ...) : 
(list) object cannot be coerced to type 'integer'

我实际上想要创建交叉协议矩阵。但是这篇文章是在2008年写的,从那以后发生了很多变化。数据功能仅在RSurvey包中提供,但我有点怀疑它是否相同。我认为主要的问题是TermDocumentMatrix是S4类,现在它是S3。我知道可能只有文字才能这样做。但我想这样做,因为在TDM中可以删除停用词,删除等等以获得更好的结果。因此,如果有人有任何解决方案,那将是非常好的。

1 个答案:

答案 0 :(得分:3)

TDM存储为稀疏矩阵,如?TermDocumentMatrix中所述。这也可以通过检查像str(wsTDM)这样的对象来看出。旧的Data()函数只是一种以常规矩阵形式访问内容的方法。它不再需要了。只需执行kmeans(wsTDM, 2),您就会看到输出符合预期,并在70个要素(文档)上识别出2775个观察值(术语)。祝你好运!