R中的分类/预测

时间:2013-04-11 18:20:16

标签: r machine-learning nlp classification

我有 N 文件的语料库,分类为垃圾邮件 / 无垃圾邮件。我遵循标准程序来预处理R(code here)中的数据。预处理以DocumenTermMatrix结尾,权重为 tfidf

现在我想用我的模型对新文档进行分类。

如何为单个新文档计算相应的DocumentVector(使用文档的 tf 和语料库的 idfs )?我想避免重新计算整个语料库的DocumentTermMatrix

2 个答案:

答案 0 :(得分:1)

我过去遇到过类似的问题,这个功能不包含在tm包中。 Ingo Feinerer建议构建一个函数来获取DocumentVector。该函数需要使用先前从语料库和新文档中构建的tm或dtm。首先以与语料库相同的方式预处理新文档,并使用单词和tf创建列表。您可以将tm / dtm(例如tdm $ dimnames $ Terms)中的单词与新文档转换的方式合并为具有与文档的tf值相同的语料库条目(简单合并)。然后用标准方式将tf除以语料库的idfs:

cs<-row_sums(tm>0)
 lnrs<-log2(nDocs(tm)/cs)
 tf*lnrs  # 

完成返回DocumentVector。  然后,您可以在使用SVM直接进行预测时将vector用作data.frame。

答案 1 :(得分:0)

我不知道您使用的是什么svm库,但似乎您的SVM模型存储在Corpus.svm中 - 是否正确?

对于新文档的预测,您可以按照以下步骤进行操作:http://planatscher.net/svmtut/svmtut.html任务2.如果您使用其他库,则该过程将类似。 IRIS数据集也有实际的例子。唯一的区别是您的新文档必须以与训练示例相同的方式处理(即删除停用词,tf-idf,......)