【发布时间】:2016-05-02 15:22:25
【问题描述】:
我正在尝试使用 Chen 和 Manning (2014) 的神经网络解析器的斯坦福 CoreNLP 实现来训练一个新模型。在训练期间,我使用-devFile 选项每 100 次迭代对开发集进行一次 UAS 评估。经过几千次迭代,我得到了一个相当不错的 UAS(大约 86%)。然而,在训练完成后,我尝试在同一个开发集上对其进行测试,我得到了大约 15% 的 UAS。我正在使用英语通用依赖树库。
用于训练的命令行选项:
java edu.stanford.nlp.parser.nndep.DependencyParser -trainFile ~/Datasets/universal-dependencies-1.2/UD_English/en-ud-train.conllu -devFile ~/Datasets/universal-dependencies-1.2/UD_English/en-ud-dev.conllu -embedFile path/to/wordvecs -embeddingSize 100 -model nndep.model.txt.gz -trainingThreads 2
用于测试的命令行选项:
java edu.stanford.nlp.parser.nndep.DependencyParser -model nndep.model.txt.gz -testFile ~/Datasets/universal-dependencies-1.2/UD_English/en-ud-dev.conllu
当我为英语使用提供的 UD 模型时,一切正常,我在开发集上获得了大约 80% 的 UAS。这让我相信我训练的模型低于标准,我可能错过了一些必要的步骤或选项。但是由于训练期间的评估给出了很好的结果,我有点困惑。根据我的理解,这两个评估之间应该没有那么大的差异。
那么,可能是什么原因导致训练期间的评估与测试时的评估之间存在巨大差异?
【问题讨论】:
标签: nlp stanford-nlp