斯坦福NNDep解析器:java.lang.ArrayIndexOutOfBoundsException

时间:2015-11-16 00:29:36

标签: nlp stanford-nlp

训练模型后,我试图解析测试树库。不幸的是,这个错误不断出现:

Loading depparse model file: nndep.model.txt.gz ...
###################
#Transitions: 77
#Labels: 38
ROOTLABEL: root
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 25
        at edu.stanford.nlp.parser.nndep.Classifier.preCompute(Classifier.java:663)
        at edu.stanford.nlp.parser.nndep.Classifier.preCompute(Classifier.java:637)
        at edu.stanford.nlp.parser.nndep.DependencyParser.initialize(DependencyParser.java:1151)
        at edu.stanford.nlp.parser.nndep.DependencyParser.loadModelFile(DependencyParser.java:589)
        at edu.stanford.nlp.parser.nndep.DependencyParser.loadModelFile(DependencyParser.java:493)
        at edu.stanford.nlp.parser.nndep.DependencyParser.main(DependencyParser.java:1245)

如果使用随NLP包附带的预训练英语模型,则不会出现该错误。因此,训练有素的模型可能有问题吗?但是,在训练期间没有错误。 500次迭代完成(我的2,33 GHz Core 2 Duo CPU @ 4 Gb RAM默认20000需要15个小时 - 顺便说一下这么多时间正常吗?)火车,开发和测试集是{{3} };使用的单词嵌入是UD 1.2。似乎在使用非英语树库进行培训时发生此错误(尝试使用瑞典语和波兰语UD; -tlp选项未设置,使用UniversalEnglish)。

1 个答案:

答案 0 :(得分:2)

通过@Jon Gauthier的评论提示,回答我自己的问题。事实证明,如果在训练期间使用了,那么在解析阶段也需要 (=其他值,然后使用默认值50)。 documentation从来没有说过,实际上只是引用了关于训练阶段的标志,但是问题代码中的错误信息实际上隐含地暗示了错误的起源,显示“25”̦使用的嵌入词的维度。