• Stars
    star
    242
  • Rank 167,048 (Top 4 %)
  • Language
    Jupyter Notebook
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Russian language models for spaCy

МодСль русского языка для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ 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. БСйчас Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ»ΠΈ. ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.