Оно старается определять не только x.pos_, но и x.lemma_ -- лемму слова (например, для существительных лемма совпадает с формой: "именительный падеж, единственное число") (edited)
Инсталляция сейчас не супер-простая, кроме того, thinc не всегда из коробки работает. Зависимости из проекта spacy-ru нужны только если вы собираетесь повторять обучение моделей для spacy-ru или повторять ноутбуки.
для примера установки модели в окружении conda, вы можете ознакомится с Dockerfile
- установить pymorphy2==0.8
- pip:
pip install pymorphy2==0.8
- conda: к сожалению в репозиторях anaconda данный пакет доступен только для платформы osx-64
conda install -c romanp pymorphy2==0.8
- установить spacy 2.1:
- pip:
pip install spacy==2.1.9
- conda:
conda install -c conda-forge spacy==2.1.9
- Скопировать каталог ru2 из репозитория себе в проект:
git clone -b v2.1 https://github.com/buriy/spacy-ru.git && cp -r ./spacy-ru/ru2/. /my_project_destination/ru2
После этого нужно загрузить модели с морфологией и синтаксисом
import spacy
sample_sentences = "Привет Миру! Как твои дела? Сегодня неплохая погода."
if __name__ == '__main__':
nlp = spacy.load('ru2')
nlp.add_pipe(nlp.create_pipe('sentencizer'), first=True)
doc = nlp(sample_sentences)
for s in doc.sents:
print(list(['lemma "{}" from text "{}"'.format(t.lemma_, t.text) for t in s]))
Если нужна модель с pymorphy2 в качестве лемматизатора и POS: nlp = spacy.load('ru2', disable=['tagger', 'parser', 'NER'])
вы можете попробовать пример использования ru2 модели:
git clone https://github.com/buriy/spacy-ru.git
cd spacy-ru
docker build -t spacy:ru2 .
docker run --rm spacy:ru2
- Если нужен работающий thinc на GPU, то, возможно, нужно исправить (явно указать) путь к cuda и переустановить библиотеку:
pip uninstall -y thinc
CUDA_HOME=/usr/local/cuda pip install --no-cache-dir thinc==7.0.8
Другой вариант -- попробовать что-то типа pip install "spacy[cuda91]<2.2"
или pip install "spacy[cuda10]<2.2"
для spacy версии 2.1.x.
Так же стоит проверить что cupy
установлена верно для вашей версии cuda -link
пример установки для cuda 10.0
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
$ which nvcc
/usr/local/cuda/bin/nvcc
$ CUDA_HOME=/usr/local/cuda
$ pip install cupy-cuda100
...
Successfully installed cupy-cuda100-7.1.0
$ pip install --no-cache-dir "spacy[cuda10]<2.2"
...
Successfully installed blis-0.2.4 preshed-2.0.1 spacy-2.1.9 thinc-7.0.8
- Если вы переходите с xx на ru/ru2, то имейте в виду, что токенизация в ru/ru2 и xx отличается, т.к. xx не отделяет буквы от цифр и дефисы.
- На Windows клонирование репозитория с настройкой
core.autocrlf true
вgit
может испортить некоторые файлы и привести к ошибкам типаmsgpack._cmsgpack.unpackbTypeError: unhashable type: 'list'
. Для того чтобы этого избежать надо либо клонировать сcore.autocrlf false
, либо, например, скачивать архив репозитория вручную через веб-интерфейс. Обсуждение проблемы и решение можно найти здесь. - Попытка вызова
spacy.displacy.serve()
или некоторых других функций на Python 3 может привести к ошибкеTypeError: __init__() got an unexpected keyword argument 'encoding'
. Чтобы этого избежать, необходимо явно установить старую версиюmsgpack-numpy<0.4.4.0
. Обсуждение проблемы и решение можно найти здесь.