【问题标题】:R - Setting a Frequency to a Document Term MatrixR - 为文档术语矩阵设置频率
【发布时间】:2020-10-08 20:13:18
【问题描述】:

在导出 DocumentTermMatrix 时,我正在寻求有关我的 R 代码的帮助。文件太大而无法导出,所以我很好奇是否有办法为 DTM 设置频率?例如,仅返回 DTM 中已使用 5 次或更多次的值。

dtm <- DocumentTermMatrix(alltextclean)

write.csv(as.matrix(dtm), "dtm.csv")

以上产生的文件太大,我可以添加频率吗?我也尝试了以下方法,但留下了一个术语列表,但没有术语计数(这也很有用)。

termsonly <- findFreqTerms(dtm, 5)

write.csv(termsonly, "termsonly.csv")

在上面添加频率也会有所帮助。

感谢您的帮助!

【问题讨论】:

    标签: r


    【解决方案1】:

    我猜您正在查找所有文档中每个术语的总出现次数。使用示例数据集:

    library(tm)
    data(crude)
    

    如果你的矩阵不是那么大,你可以这样做:

    dtm = DocumentTermMatrix(crude)
    Freq = colSums(as.matrix(dtm))
    

    否则,假设我们接受至少 5 次出现的条款:

    termsonly <- findFreqTerms(dtm, 5)
    Freq = colSums(as.matrix(dtm[,termsonly]))
    

    或者您将其转换为 sparseMatrix 并对列求和:

    library(Matrix)
    Freq = colSums(sparseMatrix(i=dtm$i,j=dtm$j,x=dtm$v,dimnames=dtm$dimnames))
    

    如果您喜欢整洁的解决方案,也可以查看此post

    【讨论】:

    • Freq = colSums(as.matrix(DocumentTermMatrix(crude))) 这最终会太大(21.7gb)。有没有办法在 5 个或更多文档中添加术语实例以减小大小?我仍然无法导出。 termsonly &lt;- findFreqTerms(dtm, 5) 使用此代码,我仍然需要一列来显示该术语从最高到最低排序的次数(如果可能的话)谢谢!
    • 查看更新的答案。其中一个应该工作。获得向量后,只需执行Freq=sort(Freq)
    猜你喜欢
    • 2013-05-28
    • 2015-10-16
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2018-05-04
    相关资源
    最近更新 更多