2013-08-28 11 views
20

Beim Erstellen der Beispielanwendung von der Stanford CoreNLP Website herunterladen, ich in eine merkwürdige Ausnahme lief:Maven nicht CoreNLP Modelle

Exception in thread "main" java.lang.RuntimeException: edu.stanford.nlp.io.RuntimeIOException: Unrecoverable error while loading a tagger model 
at edu.stanford.nlp.pipeline.StanfordCoreNLP$4.create(StanfordCoreNLP.java:493) 
… 
Caused by: java.io.IOException: Unable to resolve "edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger" as either class path, filename or URL 
… 

Dies ist nur geschehen, wenn die Eigenschaft pos und die, die, nachdem sie in die aufgenommen wurden Eigenschaften. Hier

Properties props = new Properties(); 
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref"); 
StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 

ist die Abhängigkeit von meinem pom.xml:

<dependencies> 
<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>3.2.0</version> 
    <scope>compile</scope> 
</dependency> 
</dependencies> 

Antwort

43

ich tatsächlich die Antwort auf diese Frage in der Problembeschreibung einer anderen Frage auf Stackoverflow gefunden.

Quoting W.P. McNeill:

Maven nicht herunterladen das Modell automatisch Dateien, aber nur, wenn Sie Modelle Linie zum .pom hinzuzufügen. Hier ist ein .pom Snippet, das sowohl den Code als auch die Modelle abruft.

Hier ist, was meine Abhängigkeiten nun wie folgt aussehen:

<dependencies> 
<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>3.2.0</version> 
</dependency> 
<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>3.2.0</version> 
    <classifier>models</classifier> 
</dependency> 
</dependencies> 

Der wichtigste Teil ist zu beachten, der Eintrag <classifier>models</classifier> am unteren Ende. Damit Eclipse beide Referenzen verwalten kann, müssen Sie für jede stanford-corenlp-3.2.0 und stanford-corenlp-3.2.0-models eine Abhängigkeit konfigurieren.

+9

Falls Sie SBT verwenden, können Sie der Bibliotheksabhängigkeitssequenz die folgenden Zeilen hinzufügen: "edu.stanford.nlp"% "stanford-corenlp"% "3.2.0", "edu.stanford.nlp "%" stanford-corenlp "%" 3.2.0 "Klassifikator" -Modelle " – eliasah

+1

@eliasah: Ich mache dasselbe, was Sie in Ihrem Kommentar angegeben haben, aber es lädt die Modelle nicht herunter! Es war 2 Stunden und noch hat es nichts in Bezug auf Modelle heruntergeladen! –

0

Im Fall, dass Sie die Modelle für andere Sprachen (wie Chinesisch, Spanisch oder Arabisch) verwenden Sie das folgende Stück Ihrer pom.xml Datei hinzufügen können (models-chinese mit models-spanish oder models-arabic für diese beiden Sprachen ersetzen, respectively):

<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>3.8.0</version> 
    <classifier>models-chinese</classifier> 
</dependency>