【问题标题】:Classification/Prediction in RR中的分类/预测
【发布时间】:2013-04-04 01:48:55
【问题描述】:

我有 N 个文档的语料库,分类为 spam / no-spam。我正在按照标准程序对 R(code here) 中的数据进行预处理。预处理以 DocumenTermMatrix 结束,使用权重作为 tfidf

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

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

【问题讨论】:

    标签: r machine-learning nlp classification


    【解决方案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 进行预测时将向量用作 data.frame。

    【讨论】:

      【解决方案2】:

      我不知道你用的是什么 svm 库,但是你的 SVM 模型似乎存储在 Corpus.svm 中——对吗?

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

      【讨论】:

      猜你喜欢
      • 2018-09-30
      • 1970-01-01
      • 2017-07-10
      • 2018-10-29
      • 2019-04-27
      • 2015-11-19
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多