Spacy говорит, что парсер зависимостей не загружен

Я установил spaCy v2.0.2 на Ubuntu 16.04. Затем я использовал

sudo python3 -m spacy download en

скачать английскую модель.

После этого я использую Spacy следующим образом:

from spacy.lang.en import English

p = English(parser=True, tagger=True, entity=True)
d = p("This is a sentence. I am who I am.")
print(list(d.sents))

Однако я получаю эту ошибку:

File "doc.pyx", line 511, in __get__
ValueError: Sentence boundary detection requires the dependency parse, which requires a statistical model to be installed and loaded. For more info, see the documentation: 
https://spacy.io/usage/models

Я действительно не могу понять, что происходит. У меня установлена ​​​​эта версия модели «en»:

https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz

что я думаю по умолчанию. Любая помощь приветствуется. Спасибо.


person rayabhik    schedule 20.11.2017    source источник


Ответы (1)


Я думаю, что проблема здесь довольно проста — когда вы вызываете это:

p = English(parser=True, tagger=True, entity=True)

... spaCy загрузит языковой класс English, содержащий языковые данные и правила особого случая, но не данные модели и веса, которые позволяют синтаксическому анализатору, тегировщику и распознавателю сущностей делать прогнозы. Это сделано специально, потому что spaCy не может узнать, если вы хотите загрузить данные модели, и если да, то какой пакет.

Поэтому, если вы хотите загрузить англоязычную модель, вам придется использовать spacy.load(), который позаботится о загрузке данных и объединении языка и конвейера обработки:

nlp = spacy.load('en_core_web_sm')  # name of model, shortcut name or path

Под капотом spacy.load() будет искать установленный пакет модели с именем en_core_web_sm, загружать его и проверять метаданные модели, чтобы определить, какой язык нужен модели (в данном случае English) и какой конвейер она поддерживает (в данном случае tagger, parser и НЭР). Затем он инициализирует экземпляр English, создает конвейер, загружает двоичные данные из пакета модели и возвращает объект, чтобы вы могли вызывать его в своем тексте. см. этот раздел для получения более подробной информации.

person Ines Montani    schedule 20.11.2017