CoreNLP神经网络依赖解析器-训练期间评估与测试期间评估的差异

CoreNLP神经网络依赖解析器-训练期间评估与测试期间评估的差异,nlp,stanford-nlp,Nlp,Stanford Nlp,我正试图利用陈和曼宁(2014)的神经网络解析器的斯坦福CoreNLP实现来训练一个新模型。在培训期间,我使用-devFile选项每100次迭代对开发集进行一次UAS评估。经过几千次迭代,我得到了一个相当好的UAS(大约86%)。然而,在培训完成后,我尝试在同一个开发集上测试它,我得到了大约15%的UAS。我正在使用英语通用依赖树库 用于培训的命令行选项: java edu.stanford.nlp.parser.nndep.DependencyParser -trainFile ~/Datas

我正试图利用陈和曼宁(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
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。这让我相信,我训练过的模型不够完美,我可能错过了一些必要的步骤或选择。但由于培训期间的评估结果相当不错,我有点困惑。根据我的理解,这两个评估之间不应该有太大的差异

那么,培训期间的评估与测试期间的评估之间存在巨大差异的原因是什么呢?

回答我自己的问题。 我在中找到了这个问题的答案,尽管他们的问题有点不同

当使用不同于默认值50的嵌入大小时,在解析时还需要传递-embeddingSize标志。如上面链接的线程中所述,这也适用于隐藏大小参数

这样做解决了问题,我得到了一个UAS,相当于训练期间的UAS


因此,如果使用与默认值不同的单词嵌入或隐藏层大小,则在使用模型进行解析时需要传递这些参数

我认为您有一个错误,我不知道它是否用于复制粘贴,但在:

“用于测试的命令行选项:”

我认为应该是:

java edu.stanford.nlp.parser.nndep.DependencyParser -model nndep.model.txt.gz -testFile ~/Datasets/universal-dependencies-1.2/UD_English/en-ud-**test**.conllu