Stanford NLP测试NER模型时遇UnsupportedOperationException错误求助
Stanford NER测试时抛出UnsupportedOperationException:Argument array lengths differ
问题描述
我正在遵循斯坦福NLP的《How can I train my own NER model》教程,使用官方提供的训练和测试文件,执行测试命令时出现错误:
测试命令:
java -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier ner-model.ser.gz -testFile jane-austen-emma-ch2.tsv
错误日志:
Invoked on Thu May 10 15:40:41 IST 2018 with arguments: -loadClassifier ner-model.ser.gz -testFile jane-austen-emma-ch2.tsv testFile=jane-austen-emma-ch2.tsv loadClassifier=ner-model.ser.gz Loading classifier from ner-model.ser.gz ... done [0.2 sec]. Error on line 1: CHAPTER O Exception in thread "main" java.lang.UnsupportedOperationException: Argument array lengths differ: [class edu.stanford.nlp.ling.CoreAnnotations$TextAnnotation, class edu.stanford.nlp.ling.CoreAnnotations$AnswerAnnotation] vs. [CHAPTER, , O] at edu.stanford.nlp.ling.CoreLabel.initFromStrings(CoreLabel.java:263) at edu.stanford.nlp.ling.CoreLabel.<init>(CoreLabel.java:150) ... ... at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1189) at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1133) at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1087) at edu.stanford.nlp.ie.crf.CRFClassifier.main(CRFClassifier.java:3033)
请问这个问题出在哪里?
回答
这个错误的核心原因是测试文件的列数和模型预期的解析格式不匹配:
从错误日志里的对比可以看到:
- 模型期望每行对应2个注解字段:
TextAnnotation(文本)和AnswerAnnotation(NER标签) - 但你的测试文件第一行实际解析出了3个元素:
[CHAPTER, , O](一个空列+文本+标签)
这通常是因为你使用的jane-austen-emma-ch2.tsv是训练用的三列格式文件(每行是「单词\tPOS词性\tNER标签」),而默认的测试命令只期望两列(「单词\tNER标签」),所以解析时出现了数组长度不匹配的问题。
你可以通过两种方式解决:
- 调整测试文件格式:手动去掉文件中的POS词性列,保留「单词\tNER标签」的两列结构
- 修改测试命令,指定列对应关系:在命令中添加
-columnLabels word,pos,answer参数,告诉模型如何解析三列数据,修改后的命令如下:
java -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier ner-model.ser.gz -testFile jane-austen-emma-ch2.tsv -columnLabels word,pos,answer
这样模型就能正确识别测试文件的三列格式,不会再抛出长度不匹配的错误了。
内容的提问来源于stack exchange,提问作者AgentX
相关产品推荐
相关产品推荐

