Java 在Stanford CoreNLP中使用NERClassifierCombiner时出现空指针异常
我在CoreNLP中使用NERClassifierCombiner来组合RegexNERSequenceClassifier和CRFClassizerJava 在Stanford CoreNLP中使用NERClassifierCombiner时出现空指针异常,java,stanford-nlp,Java,Stanford Nlp,我在CoreNLP中使用NERClassifierCombiner来组合RegexNERSequenceClassifier和CRFClassizer import edu.stanford.nlp.ie.ClassifierCombiner; import edu.stanford.nlp.ie.NERClassifierCombiner; import edu.stanford.nlp.ie.crf.CRFClassifier; import edu.stanford.nlp.ie.rege
import edu.stanford.nlp.ie.ClassifierCombiner;
import edu.stanford.nlp.ie.NERClassifierCombiner;
import edu.stanford.nlp.ie.crf.CRFClassifier;
import edu.stanford.nlp.ie.regexp.RegexNERSequenceClassifier;
import edu.stanford.nlp.io.IOUtils;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
String basePath = "some_base_path";
String filename = basePath + "input.txt";
String inputText = IOUtils.slurpFile(filename);
String mucClassifierPath = basePath + "english.muc.7class.distsim.crf.ser.gz";
String connlClassifierPath = basePath + "english.conll.4class.distsim.crf.ser.gz";
CRFClassifier classifier_muc = CRFClassifier.getClassifier(mucClassifierPath);
CRFClassifier classifier_connl = CRFClassifier.getClassifier(connlClassifierPath);
String mappingPath = basePath + "regexner.rules";
RegexNERSequenceClassifier regexNERSequenceClassifier = new RegexNERSequenceClassifier(mappingPath, true, true, null);
NERClassifierCombiner combinedNERClassifier = new NERClassifierCombiner(false, false, classifier_connl, classifier_muc, regexNERSequenceClassifier);
String output = combinedNERClassifer.classifyToString(inputText);
System.out.println(output);
return;
}
}
下面是调用classifyToText方法时引发的异常的堆栈跟踪
Exception in thread "main" java.lang.NullPointerException
at edu.stanford.nlp.ie.AbstractSequenceClassifier.labels(AbstractSequenceClassifier.java:286)
at edu.stanford.nlp.ie.ClassifierCombiner.mergeDocuments(ClassifierCombiner.java:334)
at edu.stanford.nlp.ie.ClassifierCombiner.classify(ClassifierCombiner.java:481)
at edu.stanford.nlp.ie.NERClassifierCombiner.classifyWithGlobalInformation(NERClassifierCombiner.java:273)
at edu.stanford.nlp.ie.NERClassifierCombiner.classify(NERClassifierCombiner.java:268)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyObjectBank(AbstractSequenceClassifier.java:481)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.classify(AbstractSequenceClassifier.java:441)
at com.company.Main.main(Main.java:27)
PS:我无法使用CoreNLP管道,需要将RegexNER与生产中现有的CRFClassizer合并。检查AbstractSequenceClassifier上的代码。java:286看起来就像CoreNLP中的一个bug。约翰·鲍尔(又名AngledLuffa)已经修复了它。