ColumnDataClassifier 中的 serializeTo 参数

serializeTo parameter in ColumnDataClassifier

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

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

示例:

第一次class化

java -cp "*:." edu.stanford.nlp.classify.ColumnDataClassifier -prop myfile.prop

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

第二次class化

java -cp "*:." edu.stanford.nlp.classify.ColumnDataClassifier -prop myfile2.prop

我在 myfile2.prop 中添加了 trainFile 和 serializeTo 的值。我没有在 myfile2.prop 中包含任何测试文件。完成训练阶段后,我想 class 使用在训练阶段序列化的 classifier 验证新数据。

java -cp "*:." edu.stanford.nlp.classify.ColumnDataClassifier -loadClassifier MyClassifier -testFile myTestFile

如您所见,结果有所不同。特别是,序列化的 classifier 将几乎所有实例关联到 class O(默认值)。

好吧,我自己解决了这个问题。编写以下代码行会导致意外结果:

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

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