我目前正在使用Stanford NLP小组的ColumnDataClassifier进行文本分类。 我想通过prop文件中包含的serializeTo参数来执行训练阶段序列化模型。
通过同一命令行执行训练和测试阶段获得的分类结果与在新测试文档上应用序列化分类器获得的分类结果不同。为什么会这样?
示例:
首次分类
java -cp“*:。” edu.stanford.nlp.classify.ColumnDataClassifier -prop myfile.prop
在myfile.prop中我为trainFile和testFile添加了值。
第二次分类
java -cp“*:。” edu.stanford.nlp.classify.ColumnDataClassifier -prop myfile2.prop
在myfile2.prop中,我为trainFile和serializeTo添加了值。我没有在myfile2.prop中包含任何testFile。一旦我完成培训阶段,我想使用在培训阶段序列化的分类器对新数据进行分类。
java -cp“*:。” edu.stanford.nlp.classify.ColumnDataClassifier -loadClassifier MyClassifier -testFile myTestFile
正如您所看到的结果不同。特别是,序列化分类器几乎将所有实例与O类(默认值)相关联。 任何帮助解决它将非常感激。
答案 0 :(得分:0)
好吧,我自己解决了这个问题。编写以下代码行会导致意外结果:
java -cp "*:." edu.stanford.nlp.classify.ColumnDataClassifier -loadClassifier MyClassifier -testFile myTestFile
这是正确的命令:
java -cp "*:." edu.stanford.nlp.classify.ColumnDataClassifier -prop file.prop -loadClassifier MyClassifier -testFile myTestFile
换句话说,即使只在训练阶段使用,也必须包含属性文件。