我正在尝试用斯坦福CoreNLP实现Chen和Manning (2014)的神经网络解析器来训练一个新的模型。在培训期间,我使用-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。这使我相信,我受过训练的模型是不合格的,我可能错过了一些必要的步骤或选择。但是由于训练过程中的评价效果很好,我有点困惑。根据我的理解,这两种评价之间不应该有那么大的差别。
那么,训练期间的评估和测试时的评估之间的巨大差异可能是什么原因呢?
发布于 2016-03-22 10:03:39
回答我自己的问题。我在another thread中找到了这个问题的答案,尽管他们的问题有点不同。
当使用与默认值50不同的嵌入大小时,解析时也需要传递-embeddingSize标志。正如在上面的链接线程中所指出的,这也适用于隐藏的大小参数。
这样做解决了问题,我得到了一个相当于训练期间的无人机。
因此,如果使用与默认值不同的单词嵌入或隐藏层大小,则在使用模型进行解析时需要传递这些参数。
发布于 2016-05-02 07:22:25
我想你有一个错误,我不知道是不是复制粘贴,但在:
用于测试的命令行选项:
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-**test**.conlluhttps://stackoverflow.com/questions/36127253
复制相似问题