2013-05-13 4 views
8

スタンフォードパーサー2.0.5をダウンロードし、パッケージに入っているDemo2.javaソースコードを使用しましたが、プログラムをコンパイルして実行した後、多くのエラーが発生します。 私のプログラムの一部です:エラーがあるスタンフォードパーサーの使い方

public class testStanfordParser { 
/** Usage: ParserDemo2 [[grammar] textFile] */ 
    public static void main(String[] args) throws IOException { 
    String grammar = args.length > 0 ? args[0] : "edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz"; 
    String[] options = { "-maxLength", "80", "-retainTmpSubcategories" }; 
    LexicalizedParser lp = LexicalizedParser.loadModel(grammar, options); 
    TreebankLanguagePack tlp = new PennTreebankLanguagePack(); 
    GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory(); 
... 

Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz java.io.IOException: Unable to resolve edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz" as either class path, filename or URL 
at edu.stanford.nlp.io.IOUtils.getInputStreamFromURLOrClasspathOrFileSystem(IOUtils.java:408) 
at edu.stanford.nlp.io.IOUtils.readStreamFromString(IOUtils.java:356) 
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromSerializedFile(LexicalizedParser.java:594) 
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromFile(LexicalizedParser.java:389) 
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel(LexicalizedParser.java:157) 
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel(LexicalizedParser.java:143) 
at testStanfordParser.main(testStanfordParser.java:19).            Loading parser from text file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz Exception in thread "main" java.lang.NoSuchMethodError: edu.stanford.nlp.io.IOUtils.readerFromString(Ljava/lang/String;)Ljava/io/BufferedReader; 
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromTextFile(LexicalizedParser.java:528) 
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromFile(LexicalizedParser.java:391) 
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel(LexicalizedParser.java:157) 
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel(LexicalizedParser.java:143) 
at testStanfordParser.main(testStanfordParser.java:19) 

私はそれを解決するために助けてください。 ありがとう

+1

私はこの問題を解決しました。問題は、スタンフォードパーサーパッケージと私のワークスペース内のスタンフォードcoreNLPパッケージとの間の競合です。 – SahelSoft

+0

はこの質問を見ている[ここで、リンクの説明を入力] [1] [1]:https://stackoverflow.com/questions/24084556/stanford-lexicalized-parser-load-model-error – user2471214

+0

@SahelSoftあなたはこれを解決するために正確に何を説明できますか? – Yigal

答えて

2

私はスタンフォードパーサーを使用して、名前、場所、組織などのエンティティを抽出しています。

public class stanfrdIntro { 

    public static void main(String[] args) throws IOException, SAXException, 
    { 

     String serializedClassifier = "classifiers/english.all.3class.distsim.crf.ser.gz"; 


     AbstractSequenceClassifier<CoreLabel> classifier = CRFClassifier 
       .getClassifierNoExceptions(serializedClassifier); 

     String s1 = "Good afternoon Rahul Kulhari, how are you today?"; 

     s1 = s1.replaceAll("\\s+", " "); 
     String t=classifier.classifyWithInlineXML(s1); 
    System.out.println(Arrays.toString(getTagValues(t).toArray())); 

    } 
     private static final Pattern TAG_REGEX = Pattern.compile("<PERSON>(.+?)</PERSON>"); 

private static Set<String> getTagValues(final String str) { 
    final Set<String> tagValues = new HashSet<String>(); 
    //final Set<String> tagValues = new TreeSet(); 
    final Matcher matcher = TAG_REGEX.matcher(str); 
    while (matcher.find()) { 
     tagValues.add(matcher.group(1)); 
    } 

    return tagValues; 
} 

これはあなたを助けるかもしれないが、私はエンティティのみを抽出しています:

は、ここに私のコードです。

4

すべての文法は、付属のモデルジャーにあります。 "stanford-parser-2.0.5-models.jar"は実行ディレクトリまたはクラスパスにありますか?

+0

あなたの答えをありがとう。モデルは実行ディレクトリにあります。私は<< String grammar = args.length> 0でコードを変更しますか? args [0]: "C:/project/models/englishPCFG.ser.gz"; >>しかしそれはエラーがあります。 – SahelSoft

+0

stanford-parser.jarを確認してください。あなたが古いものを使用しているようです。少なくともedu.stanford.nlp.io.IOUtils.readerFromStringはありません。 –

+0

少なくともバージョン1.5では、IOUtilsのそのようなメソッドではありませんでした –

関連する問題