2013-05-13 14 views
8

Ich heruntergeladen den Stanford-Parser 2.0.5 und Demo2.java Quellcode verwenden, der im Paket ist, aber nachdem ich das Programm kompilieren und ausführen, hat es viele Fehler. Ein Teil meines Programms ist:Wie Stanford Parser zu verwenden

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(); 
... 

die Fehler sind:

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) 

mir bitte helfen, es zu lösen. Dank

+1

Ich löste dieses Problem. Das Problem war der Konflikt zwischen dem Stanford-Parser-Paket und dem stanford coreNLP-Paket in meinem Arbeitsbereich. – SahelSoft

+0

in dieser Frage Werfen Sie einen Blick [1] [1] [link Beschreibung hier eingeben]: https://stackoverflow.com/questions/24084556/stanford-lexicalized-parser-load-model-error – user2471214

+0

@SahelSoft kannst du erklären, was genau du getan hast, um das zu lösen? – Yigal

Antwort

2

Ich verwende Stanford-Parser, um Elemente wie Name, Standort, Organisation zu extrahieren.

ist hier mein Code:

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; 
} 

Dies könnte Ihnen helfen, aber ich nur Entitäten bin zu extrahieren.

4

Alle Grammatiken befinden sich in den mitgelieferten Modellen Glas. Ist die "stanford-parser-2.0.5-models.jar" im Ausführungsverzeichnis oder Klassenpfad?

+0

Danke für deine Antwort. Das Modell befindet sich im Ausführungsverzeichnis. Ich ändere den Code mit << String-Grammatik = args.length> 0? args [0]: "C: /project/models/englishPCFG.ser.gz"; >> aber es hat Fehler. – SahelSoft

+0

überprüfen Sie Ihre Stanford-Parser.jar. Es scheint, dass Sie ein älteres verwenden. Wenigstens ist edu.stanford.nlp.io.IOUtils.readerFromString nicht vorhanden. –

+0

Zumindest in Version 1.5 war eine solche Methode in IOUtils nicht –

Verwandte Themen