【发布时间】:2014-07-01 11:14:06
【问题描述】:
我是 Mahout 的新手,我正在对非结构化文本文档进行分类。
我在使用朴素贝叶斯模型时关注了this tutorial。我已经到了训练分类器的地步,但我不确定如何将新文档转换为 tfidf 向量进行分类。
我的数据存储为一个 TSV 文件,该文件有一个标签和与之对应的文本。我使用seq2parse 创建训练模型所需的 tfidf 向量。
然后我使用这些 tfidf 向量训练模型,得到朴素贝叶斯模型。
现在我有一个新的未标记文本文档,我希望使用这个经过训练的模型对其进行分类,但我不确定如何将其转换为 tfidf 向量。如果我再次使用seq2parse,那么它将创建一组新的字典文件等,我假设这与为训练集创建的字典不对应。
我在https://github.com/fredang/mahout-naive-bayes-example/blob/master/src/main/java/com/chimpler/example/bayes/Classifier.java 看到了基于已创建的字典文件和标签索引创建 tfidf 的手动实现,但我想知道 Mahout 是否已经提供了一些方法来执行此操作,就像他们提供 @987654325 的方式一样@。我宁愿使用支持的方法来完成它,而不是必须手动完成。
【问题讨论】:
-
我不确定我是否理解正确,但是为什么不使用训练和测试文档创建词频矩阵,然后将训练向量与其标签合并?跨度>
-
@visakh 不是为了测试。假设我有一个新的未分类文档,我想给它加标签……我将如何为它创建 tfidf 向量?
-
我的意思是我想使用分类器模型来标记它
-
我猜你必须根据整个数据集创建文档术语矩阵,包括分类的(用于训练的)和未分类的。否则,术语矩阵的维度将不合适,因为分类文档和未分类文档中的单词可能不同。
-
没错!所以我想知道 mahout 是否提供了一种方法来传递生成的字典文件以作为 tfidf 的基础。否则我将不得不按照 chimpler 的例子手动完成。
标签: java machine-learning mahout