看了很多例子,到目前为止还没有运气。我想对自由文本进行分类。
- 配置文本分类器。(FilteredClassifier 使用 StringToWordVector 和 LibSVM)
- 训练分类器(添加大量文档,训练过滤文本)
- 将 FilteredClassifier 序列化到磁盘,退出应用程序
然后稍后
- 加载序列化的 FilteredClassifier
- 给东西分类!
当我尝试从磁盘读取并对事物进行分类时,一切正常。所有文档和示例都显示了同时构建的培训列表和测试列表,就我而言,我正在尝试在事后构建测试列表。
单独的 FilteredClassifier 不足以创建与原始训练集具有相同“字典”的测试实例,那么如何保存以后需要分类的所有内容?
http://weka.wikispaces.com/Use+WEKA+in+your+Java+code只是说“从某处加载的实例”,并没有说任何关于使用类似字典的内容。
ClassifierFramework cf = new WekaSVM();
if (!cf.isTrained()) {
train(cf); // Train, save to disk
cf = new WekaSVM(); // reloads from file
}
cf.test("this is a test");
结束投掷
java.lang.ArrayIndexOutOfBoundsException: 2
at weka.core.DenseInstance.value(DenseInstance.java:332)
at weka.filters.unsupervised.attribute.StringToWordVector.convertInstancewoDocNorm(StringToWordVector.java:1587)
at weka.filters.unsupervised.attribute.StringToWordVector.input(StringToWordVector.java:688)
at weka.classifiers.meta.FilteredClassifier.filterInstance(FilteredClassifier.java:465)
at weka.classifiers.meta.FilteredClassifier.distributionForInstance(FilteredClassifier.java:495)
at weka.classifiers.AbstractClassifier.classifyInstance(AbstractClassifier.java:70)
at ratchetclassify.lab.WekaSVM.test(WekaSVM.java:125)