2016-11-18 1 views
1

NERモジュール3.3.1を問題なく使用していますが、NERモジュール3.6.0(またはそれ以上のバージョン)を使用しようとすると、次の例外が発生します:ここではスタンフォードNERモデルを実行しているときにエラーが発生しました

[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をfollwingよ。

PS 2:同じ状況でPoSタグャーで同じ例外が発生します。

答えて

0

私は私の場合の解決策を見つけました。

私のクラスパスで私はこのパッケージ "stanford-corenlp-full-2014-01-04"を持っていました。そして、コミュニティーにいくつかの.jarsがあるので問題を引き起こしていました。

スタンフォードNERモデル3.6.0とスタンフォードPOSタグャーモデル3.6.0の新しいバージョンが動作しているので、古いバージョンのスタンフォードパッケージでは機能しません。

関連する問題