我正在尝试使用Stanford NLP标记一段中文文本,但是该程序始终会抛出异常。
我尝试了不同的方式来加载属性文件,但是它们不起作用。
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import java.io.InputStream;
import java.util.*;
public class Spider {
public static void main(String[] args) {
try {
StanfordCoreNLP ppl;
Properties prop = new Properties();
InputStream in = Spider.class.getClassLoader().getResourceAsStream("StanfordCoreNLP-chinese.properties");
prop.load(in);
ppl = new StanfordCoreNLP(prop);
Annotation doc = new Annotation("浮云白日,山川庄严温柔。");
ppl.annotate(doc);
ppl.prettyPrint(doc, System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
例外情况如下:
java.io.StreamCorruptedException:无效的类型代码:3F at java.base / java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1622) 在 java.base / java.io.ObjectInputStream.readArray(ObjectInputStream.java:1993) 在 java.base / java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1588) 在 java.base / java.io.ObjectInputStream.readObject(ObjectInputStream.java:430) 在 edu.stanford.nlp.ie.crf.CRFClassifier.loadClassifier(CRFClassifier.java:2642) 在 edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1473) 在 edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1505) 在 edu.stanford.nlp.ie.crf.CRFClassifier.getClassifier(CRFClassifier.java:2939) 在 edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:286) 在 edu.stanford.nlp.ie.ClassifierCombiner.loadClassifiers(ClassifierCombiner.java:270) 在 edu.stanford.nlp.ie.ClassifierCombiner。(ClassifierCombiner.java:142) 在 edu.stanford.nlp.ie.NERClassifierCombiner。(NERClassifierCombiner.java:108) 在 edu.stanford.nlp.pipeline.NERCombinerAnnotator。(NERCombinerAnnotator.java:125) 在 edu.stanford.nlp.pipeline.AnnotatorImplementations.ner(AnnotatorImplementations.java:68) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.lambda $ getNamedAnnotators $ 5(StanfordCoreNLP.java:523) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.lambda $ null $ 30(StanfordCoreNLP.java:602) 在edu.stanford.nlp.util.Lazy $ 3.compute(Lazy.java:126)在 edu.stanford.nlp.util.Lazy.get(Lazy.java:31)在 edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:149) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP。(StanfordCoreNLP.java:251) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP。(StanfordCoreNLP.java:192) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP。(StanfordCoreNLP.java:188) 在Spider.main(Spider.java:13) edu.stanford.nlp.io.RuntimeIOException:java.io.IOException:无法 来自的负载分类器 edu / stanford / nlp / models / ner / chinese.misc.distsim.crf.ser.gz位于 edu.stanford.nlp.pipeline.AnnotatorImplementations.ner(AnnotatorImplementations.java:70) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.lambda $ getNamedAnnotators $ 5(StanfordCoreNLP.java:523) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP.lambda $ null $ 30(StanfordCoreNLP.java:602) 在edu.stanford.nlp.util.Lazy $ 3.compute(Lazy.java:126)在 edu.stanford.nlp.util.Lazy.get(Lazy.java:31)在 edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:149) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP。(StanfordCoreNLP.java:251) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP。(StanfordCoreNLP.java:192) 在 edu.stanford.nlp.pipeline.StanfordCoreNLP。(StanfordCoreNLP.java:188) 在Spider.main(Spider.java:13)处,由以下原因引起:java.io.IOException: 无法从中加载分类器 edu / stanford / nlp / models / ner / chinese.misc.distsim.crf.ser.gz位于 edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:296) 在 edu.stanford.nlp.ie.ClassifierCombiner.loadClassifiers(ClassifierCombiner.java:270) 在 edu.stanford.nlp.ie.ClassifierCombiner。(ClassifierCombiner.java:142) 在 edu.stanford.nlp.ie.NERClassifierCombiner。(NERClassifierCombiner.java:108) 在 edu.stanford.nlp.pipeline.NERCombinerAnnotator。(NERCombinerAnnotator.java:125) 在 edu.stanford.nlp.pipeline.AnnotatorImplementations.ner(AnnotatorImplementations.java:68) ... 9更多原因:java.lang.ClassCastException:类 java.util.ArrayList无法转换为类 edu.stanford.nlp.classify.LinearClassifier(java.util.ArrayList在 加载程序'bootstrap'的java.base模块; edu.stanford.nlp.classify.LinearClassifier在未命名的模块中 加载程序“ app”) edu.stanford.nlp.ie.ner.CMMClassifier.loadClassifier(CMMClassifier.java:1095) 在 edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1473) 在 edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1505) 在 edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1495) 在 edu.stanford.nlp.ie.ner.CMMClassifier.getClassifier(CMMClassifier.java:1141) 在 edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:292) ...另外14个