All Projects → buriy → Spacy Ru

buriy / Spacy Ru

Licence: mit
Russian language models for spaCy

Projects that are alternatives of or similar to Spacy Ru

Google Earth Engine Python Examples
Various examples for Google Earth Engine in Python using Jupyter Notebook
Stars: ✭ 203 (-0.98%)
Mutual labels:  jupyter-notebook
X2face
Pytorch code for ECCV 2018 paper
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Udemy Machine Learning
Notebooks for Course
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Clandmark
Open Source Landmarking Library
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Tensorflow2 Deep Reinforcement Learning
Code accompanying the blog post "Deep Reinforcement Learning with TensorFlow 2.1"
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Aind Nlp
Coding exercises for the Natural Language Processing concentration, part of Udacity's AIND program.
Stars: ✭ 202 (-1.46%)
Mutual labels:  jupyter-notebook
Alpha Zero General
A clean implementation based on AlphaZero for any game in any framework + tutorial + Othello/Gobang/TicTacToe/Connect4 and more
Stars: ✭ 2,617 (+1176.59%)
Mutual labels:  jupyter-notebook
Multihopkg
Multi-hop knowledge graph reasoning learned via policy gradient with reward shaping and action dropout
Stars: ✭ 202 (-1.46%)
Mutual labels:  jupyter-notebook
Ten Rules Jupyter
Ten Simple Rules for Writing and Sharing Computational Analyses in Jupyter Notebooks
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Emoji2vec
emoji2vec: Learning Emoji Representations from their Description
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Ddad
Dense Depth for Autonomous Driving (DDAD) dataset.
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Hivemq Mqtt Tensorflow Kafka Realtime Iot Machine Learning Training Inference
Real Time Big Data / IoT Machine Learning (Model Training and Inference) with HiveMQ (MQTT), TensorFlow IO and Apache Kafka - no additional data store like S3, HDFS or Spark required
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Mosquito
Trading Bot with focus on Evolutionary Algorithms and Machine Learning
Stars: ✭ 201 (-1.95%)
Mutual labels:  jupyter-notebook
Coursera
These are my learning exercices from Coursera
Stars: ✭ 203 (-0.98%)
Mutual labels:  jupyter-notebook
Python For Data Science
A collection of Jupyter Notebooks for learning Python for Data Science.
Stars: ✭ 205 (+0%)
Mutual labels:  jupyter-notebook
Rotnet
Stars: ✭ 202 (-1.46%)
Mutual labels:  jupyter-notebook
Machine Learning For Finance
Machine Learning for finance and investment introduction
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Pytorch Vq Vae
PyTorch implementation of VQ-VAE by Aäron van den Oord et al.
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook
Unsupervisedscalablerepresentationlearningtimeseries
Unsupervised Scalable Representation Learning for Multivariate Time Series: Experiments
Stars: ✭ 205 (+0%)
Mutual labels:  jupyter-notebook
Raspberrypi Facedetection Mtcnn Caffe With Motion
MTCNN with Motion Detection, on Raspberry Pi with Love
Stars: ✭ 204 (-0.49%)
Mutual labels:  jupyter-notebook

Модель русского языка для библиотеки spaCy

Появились модели для spacy 2.3:

https://github.com/buriy/spacy-ru/releases/tag/v2.3_beta

Они используются следующим образом:

wget https://github.com/buriy/spacy-ru/releases/download/v2.3_beta/ru2_combined_400ks_96.zip
unzip ru2_combined_400ks_96.zip

Потом:

import spacy
nlp = spacy.load('ru2_combined_400ks_96')

А здесь дальше идёт документация для версии 2.1

Преимущества этой модели ru2 для версии 2.1

Модель ru2 умеет определять не только POS-tag в x.pos_, но и лемму слова в x.lemma_ . Например, для существительных, лемма совпадает с формой именительного падежа, единственного числа. Из-за особенностей устройства библиотеки spacy, для более хорошего качества лемм, нужно писать

import ru2
nlp = ru2.load_ru2('ru2')

вместо стандартного

import spacy
nlp = spacy.load('ru2')

Это также починит .noun_chunks() для русского, но они пока не идеально работают, будем доделывать.

Модель ru2e

Это "пустая" модель, которая использует стемминг (pip install pystemmer), полезна для пользовательских задач классификации, особенно, когда данных мало. Поскольку в этой модели нет POS-теггера, она не умеет получать леммы. Для использования стемминга надо писать аналогично модели ru2 выше:

import ru2e
nlp = ru2e.load_ru2('ru2e')

Смотри пример в https://github.com/buriy/spacy-ru/blob/master/notebooks/examples/textcat_news_topics.ipynb

Установка

Инсталляция сейчас не супер-простая, кроме того, thinc не всегда из коробки работает. Зависимости из проекта spacy-ru нужны только если вы собираетесь повторять обучение моделей для spacy-ru или повторять ноутбуки.

Установка и использование ru2 модели:

для примера установки модели в окружении conda, вы можете ознакомится с Dockerfile

  1. установить pymorphy2==0.8
  • pip: pip install pymorphy2==0.8
  • conda: к сожалению в репозиторях anaconda данный пакет доступен только для платформы osx-64 conda install -c romanp pymorphy2==0.8
  1. установить spacy 2.1:
  • pip: pip install spacy==2.1.9
  • conda: conda install -c conda-forge spacy==2.1.9
  1. Скопировать каталог 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'])

Пример в Docker контейнере

вы можете попробовать пример использования ru2 модели:

git clone https://github.com/buriy/spacy-ru.git
cd spacy-ru
docker build -t spacy:ru2 .
docker run --rm spacy:ru2

Предупреждения и возможные проблемы

  • Если нужна работа на GPU (ускоряет обучение в 2-3 раза, инференс -- до 5 раз), то, возможно, нужно исправить (явно указать) путь к cuda и переустановить библиотеку thinc:
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 и вашей версии cuda.

Если GPU по-прежнему не работает -- стоит явно проверить, что 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 не отделяет буквы от цифр и дефисы, то есть скажем слова "24-часовой" и "va-sya103" будут едиными неделимыми токенами.
  • На 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. Сейчас вроде бы поправили. Обсуждение проблемы и решение можно найти здесь.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].