ColumnDataClassifier

时间:2018-03-07 12:07:48

标签: nlp stanford-nlp text-classification

我目前正在使用Stanford NLP小组的ColumnDataClassifier进行文本分类。 我想通过prop文件中包含的serializeTo参数来执行训练阶段序列化模型。

通过同一命令行执行训练和测试阶段获得的分类结果与在新测试文档上应用序列化分类器获得的分类结果不同。为什么会这样?

示例:

首次分类

java -cp“*:。” edu.stanford.nlp.classify.ColumnDataClassifier -prop myfile.prop

在myfile.prop中我为trainFile和testFile添加了值。

enter image description here

第二次分类

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

enter image description here

正如您所看到的结果不同。特别是,序列化分类器几乎将所有实例与O类(默认值)相关联。 任何帮助解决它将非常感激。

1 个答案:

答案 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

换句话说,即使只在训练阶段使用,也必须包含属性文件。