Maven не загружает модели CoreNLP
При создании примера приложения с веб-сайта Stanford 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
…
Это произошло только тогда, когда свойство pos
и те, что были после него, были включены в свойства.
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
Вот зависимость от моего pom.xml:
<dependencies>
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.2.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Ответы
Ответ 1
Я действительно нашел ответ на это в описании проблемы другого вопроса в Stackoverflow.
Цитата W.P. Макнейл:
Maven не загружает файлы модели автоматически, но только если вы добавьте линию моделей в .pom. Здесь находится .pom фрагмент, который извлекает как код, так и модели.
Вот как выглядят мои зависимости:
<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>
Важная часть, которую следует отметить, - это запись <classifier>models</classifier>
внизу. Чтобы Eclipse поддерживал обе ссылки, вам нужно настроить зависимость для каждого stanford-corenlp-3.2.0
и stanford-corenlp-3.2.0-models
.
Ответ 2
Если вам нужно использовать модели для других языков (например, китайский, испанский или арабский), вы можете добавить следующий фрагмент в свой pom.xml
файл (замените models-chinese
на models-spanish
или models-arabic
для этих два языка, соответственно):
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.8.0</version>
<classifier>models-chinese</classifier>
</dependency>