这是我面临的一个令人讨厌的问题。我需要在Weka即Rocchio中创建自己的分类器。
使用Weka的StringtoVector功能我可以轻松地将训练样本转换为带有tf-idf的矢量用于术语加权并提取V维的词汇表,我尝试了很多但是无法想出一种方法来创建文档向量测试文件是V维度(来自培训样本的词汇),但我知道有可能像我们提供培训和测试样本的所有分类器单独在内部完成,因为所有需要培训的测试文件的文档向量 - 词汇维度,但我怎么能在java代码中这样做,所以我可以得到测试样本tf-idf向量,它与词汇和所有训练样本具有相同的维度。
我真的很感谢你对此事的帮助。
答案 0 :(得分:0)
您可以通过以下方式完成:
-b
)。FilteredClassifier
对象。InputMappedClassifier
对象。您可以在此博文中查看完整说明:Mapping Vocabulary from Train to Test Datasets in WEKA Text Classifiers。
答案 1 :(得分:0)
你可以像这样使用批量过滤器:
Instances train //from somewhere...
Instances test //from somewhere...
SomeFilter filter = new SomeFilter();
//..set options of the filter..//
//Inform filter about dataset once with the "train" set
filter2.setInputFormat(train);
//useFilter for train, then test set
Instances filteredTrain = Filter.useFilter(train, filter);
Instances filteredTest = Filter.useFilter(test, filter);
通过这种方式,您的测试和训练集将具有相同的V维词汇。