我有一个包含 N 个文档的语料库,被分类为垃圾邮件/非垃圾邮件。我按照标准程序预处理 R( code here ) 中的数据。预处理以使用权重作为 tfidf 的 DocumenTermMatrix
结束。
现在我想用我的模型对新文档进行分类。
如何计算单个新文档的相应DocumentVector
(使用文档的tf和语料库的idfs) ?我想避免重新计算整个语料库的 DocumentTermMatrix
。
最佳答案
我过去也遇到过类似的问题,并且此功能未包含在 tm 包中。 Ingo Feinerer 建议构建一个函数来获取 DocumentVector。该函数需要使用语料库和新文档中先前构建的 tm 或 dtm。首先以与语料库相同的方式预处理新文档,并创建一个包含单词和 tf 的列表。您可以合并 tm/dtm 中的单词(例如 tdm$dimnames$Terms),方法是将新文档转换为具有与文档的 tf 值相同的语料库术语(简单合并)。然后按照标准方式将tf除以语料库的idf:
cs<-row_sums(tm>0)
lnrs<-log2(nDocs(tm)/cs)
tf*lnrs #
完成返回 DocumentVector。 然后,您可以在直接使用 SVM 进行预测时使用向量作为 data.frame。
关于r - R 中的分类/预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956025/