2013-08-28 11 views
20

Przy budowie przykładową aplikację ze strony internetowej Stanford CoreNLP, wpadłem na ciekawy wyjątek:Maven nie ściągnąć modele CoreNLP

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 
… 

To tylko zdarzyło się, gdy właściwość pos a te po to zostało zawarte w nieruchomości.

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

Oto zależność od mojego pom.xml:

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

Odpowiedz

43

I rzeczywiście okazało się, że odpowiedź na to pytanie w opisie problemu z innym pytaniem na StackOverflow.

Quoting W.P. McNeill:

Maven nie pobiera model plików automatycznie, ale tylko jeśli dodawać modele linię do .pom. Oto fragment .pom , który pobiera kod i modele.

Oto co moje zależności wygląda teraz:

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

Ważną częścią zauważyć jest wejście <classifier>models</classifier> na dole. Aby Eclipse zachował oba odwołania, musisz skonfigurować zależność dla każdego stanford-corenlp-3.2.0 i stanford-corenlp-3.2.0-models.

+9

Jeśli używasz SBT, możesz dodać następujące linie do sekwencji zależności bibliotek: "edu.stanford.nlp"% "stanford-corenlp"% "3.2.0", "edu.stanford.nlp "%" stanford-corenlp "%" 3.2.0 "klasyfikator" modeli " – eliasah

+1

@eliasah: Robię to samo, co w swoim komentarzu, ale nie pobieracie modeli! Minęły 2 godziny i nadal nie pobrano nic związanego z modelami! –

0

W przypadku trzeba użyć modeli innych językach (takich jak chiński, hiszpański, lub arabski) można dodać następujący fragment do pliku pom.xml (zastąpić models-chinese z models-spanish lub models-arabic dla tych dwóch językach, odpowiednio):

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