运行Stanford NER 3.6.0版时出错

时间:2016-11-18 17:22:55

标签: java stanford-nlp

我正在使用NER模块3.3.1没有问题,但是当我尝试使用NER模块3.6.0(或任何高于上一版本)时,我得到以下异常:

[java] Loading classifier from ./lib/stanford-ner-2015-12-09/classifiers/english.muc.7class.distsim.crf.ser.gz ... Exception in thread "main" java.lang.ClassCastException: java.lang.Integer (in module: java.base) cannot be cast to edu.stanford.nlp.sequences.FeatureFactory (in module: Unnamed Module)
 [java]     at edu.stanford.nlp.ie.crf.CRFClassifier.loadClassifier(CRFClassifier.java:2606)
 [java]     at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1622)
 [java]     at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1677)
 [java]     at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1664)
 [java]     at edu.stanford.nlp.ie.crf.CRFClassifier.getClassifier(CRFClassifier.java:2832)
 [java]     at sss.texttools.Cleaner.ner(Cleaner.java:67)
 [java]     at sss.lucene.LuceneManager.getAnswer(LuceneManager.java:114)
 [java]     at sss.main.Main.main(Main.java:114)

以下是代码:

import edu.stanford.nlp.ie.AbstractSequenceClassifier;
import edu.stanford.nlp.ie.crf.*;
import edu.stanford.nlp.ling.CoreLabel;

import java.io.IOException;

public class Cleaner {

    private String serializedClassifier="./lib/stanford-ner-2015-12-09/classifiers/english.muc.7class.distsim.crf.ser.gz";

    public String ner(String str) throws IOException, ClassNotFoundException {
        AbstractSequenceClassifier<CoreLabel> classifier = CRFClassifier.getClassifier(serializedClassifier);
        String taggedStr = classifier.classifyToString(str);
        return taggedStr;
}

PS 1:我正在使用java版本1.8,并使用文件NERDemo.java。

PS 2:在相同的情况下,我在PoS Tagger上得到了同样的例外。

1 个答案:

答案 0 :(得分:0)

我找到了解决我个案的方法。

在我的课程中我有这个包&#34; stanford-corenlp-full-2014-01-04&#34;并且因为他们在Commun中有一些.jars导致问题。

所以Stanford NER 3.6.0型和Stanford POS Tagger型号3.6.0的新版本正在运行它只是不适用于旧版斯坦福包。