Подтвердить что ты не робот

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

Ответ 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>