Skip to content
Deep Learning based NLP modeling for Russian language
Python Jupyter Notebook Makefile
Branch: master
Clone or download
Latest commit 4d84c0f Sep 3, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
requirements Up reqs Sep 1, 2019
slovnet Drop unused Sep 2, 2019
.gitignore Ignore data Sep 1, 2019
.travis.yml Init travis Sep 2, 2019
Makefile Init travis Sep 2, 2019
README.md Up logo Sep 3, 2019
eval.ipynb Eval tables Sep 2, 2019
requirements.txt Up reqs Aug 28, 2019
setup.cfg Init Aug 23, 2019
setup.py Init Aug 23, 2019

README.md

Build Status

SlovNet is a Python library for deep-learning based NLP modeling for Russian language. Library is integrated with other Natasha projects: large NER corpus and compact Russian embeddings. SlovNet provides high quality practical model for Russian NER, it is 1-2% worse than current BERT SOTA by DeepPavlov but 60 times smaller in size (~30 MB) and works fast on CPU (~30 news articles/sec), see evaluation section for more.

Install

During inference slovnet depends only on numpy. Library supports Python 2.7+, 3.4+ и PyPy 3. PyPy 2 is excluded since it is hard to install numpy for PyPy 2.

$ pip install slovnet

Usage

Download news Navec embeddings and SlovNet news NER model:

>>> from navec import Navec
>>> from slovnet import NERTagger
>>> from ipymarkup import show_ascii_markup

>>> text = 'Европейский союз добавил в санкционный список девять политических деятелей из самопровозглашенных республик Донбасса — Донецкой народной республики (ДНР) и Луганской народной республики (ЛНР) — в связи с прошедшими там выборами. Об этом говорится в документе, опубликованном в официальном журнале Евросоюза. В новом списке фигурирует Леонид Пасечник, который по итогам выборов стал главой ЛНР. Помимо него там присутствуют Владимир Бидевка и Денис Мирошниченко, председатели законодательных органов ДНР и ЛНР, а также Ольга Позднякова и Елена Кравченко, председатели ЦИК обеих республик. Выборы прошли в непризнанных республиках Донбасса 11 ноября. На них удержали лидерство действующие руководители и партии — Денис Пушилин и «Донецкая республика» в ДНР и Леонид Пасечник с движением «Мир Луганщине» в ЛНР. Президент Франции Эмманюэль Макрон и канцлер ФРГ Ангела Меркель после встречи с украинским лидером Петром Порошенко осудили проведение выборов, заявив, что они нелегитимны и «подрывают территориальную целостность и суверенитет Украины». Позже к осуждению присоединились США с обещаниями новых санкций для России.'

>>> navec = Navec.load('navec_news_v1_1B_250K_300d_100q.tar')

>>> tagger = NERTagger.load('slovnet_ner_v1.tar', navec)
>>> markup = tagger(text)
>>> markup
SpanMarkup(
    text='Европейский союз добавил в санкционный список девять политических деятелей из самопровозглашенных республик Донбасса — Донецкой народной республики (ДНР) и Луганской народной республики (ЛНР) — в связи с прошедшими там выборами. Об этом говорится в документе, опубликованном в официальном журнале Евросоюза. В новом списке фигурирует Леонид Пасечник, который по итогам выборов стал главой ЛНР. Помимо него там присутствуют Владимир Бидевка и Денис Мирошниченко, председатели законодательных органов ДНР и ЛНР, а также Ольга Позднякова и Елена Кравченко, председатели ЦИК обеих республик. Выборы прошли в непризнанных республиках Донбасса 11 ноября. На них удержали лидерство действующие руководители и партии — Денис Пушилин и «Донецкая республика» в ДНР и Леонид Пасечник с движением «Мир Луганщине» в ЛНР. Президент Франции Эмманюэль Макрон и канцлер ФРГ Ангела Меркель после встречи с украинским лидером Петром Порошенко осудили проведение выборов, заявив, что они нелегитимны и «подрывают территориальную целостность и суверенитет Украины». Позже к осуждению присоединились США с обещаниями новых санкций для России.',
    spans=[Span(
         start=0,
         stop=16,
         type='LOC'
     ), Span(
         start=108,
         stop=116,
         type='LOC'
     ), Span(
         start=119,
         stop=153,
         type='LOC'
     )
 ...
])

>>> show_ascii_markup(markup.text, markup.spans)

Европейский союз добавил в санкционный список девять политических 
LOC-------------                                                  
деятелей из самопровозглашенных республик Донбасса — Донецкой народной
                                          LOC-----   LOC--------------
 республики (ДНР) и Луганской народной республики (ЛНР) — в связи с 
-----------------   LOC--------------------------------             
прошедшими там выборами. Об этом говорится в документе, опубликованном
 в официальном журнале Евросоюза. В новом списке фигурирует Леонид 
                       LOC------                            PER----
Пасечник, который по итогам выборов стал главой ЛНР. Помимо него там 
--------                                        LOC                  
присутствуют Владимир Бидевка и Денис Мирошниченко, председатели 
             PER-------------   PER---------------               
законодательных органов ДНР и ЛНР, а также Ольга Позднякова и Елена 
                        LOC   LOC          PER-------------   PER---
Кравченко, председатели ЦИК обеих республик. Выборы прошли в 
---------               ORG                                  
непризнанных республиках Донбасса 11 ноября. На них удержали лидерство
                         LOC-----                                     
 действующие руководители и партии — Денис Пушилин и «Донецкая 
                                     PER----------    ORG------
республика» в ДНР и Леонид Пасечник с движением «Мир Луганщине» в ЛНР.
----------    LOC   PER------------              ORG----------    LOC 
 Президент Франции Эмманюэль Макрон и канцлер ФРГ Ангела Меркель после
           LOC---- PER-------------           LOC PER-----------      
 встречи с украинским лидером Петром Порошенко осудили проведение 
                              PER-------------                    
выборов, заявив, что они нелегитимны и «подрывают территориальную 
целостность и суверенитет Украины». Позже к осуждению присоединились 
                          LOC----                                    
США с обещаниями новых санкций для России.
LOC                                LOC--- 

Downloads

slovnet_ner_v1.tar 1.5 MB

Evaluation

4 datasets are used for evaluation, see Corus registry for more info: factru, gareev, ne5 and bsnlp.

slovnet is compared to:

For every column top 3 results are highlighted. In each case slovnet and deeppavlov_bert are 5-10% better then other systems:

factru gareev ne5 bsnlp
f1 PER LOC ORG PER ORG PER LOC ORG PER LOC ORG
slovnet 0.960 0.905 0.808 0.982 0.907 0.992 0.981 0.958 0.949 0.833 0.735
deeppavlov_bert 0.971 0.925 0.823 0.984 0.917 0.997 0.991 0.977 0.955 0.840 0.738
deeppavlov 0.909 0.885 0.735 0.944 0.797 0.942 0.919 0.880 0.866 0.767 0.623
pullenti 0.903 0.814 0.684 0.941 0.641 0.947 0.862 0.681 0.896 0.766 0.566
texterra 0.900 0.800 0.601 0.888 0.565 0.901 0.777 0.593 0.858 0.783 0.540
tomita 0.929 0.921 0.945 0.880
mitie 0.888 0.859 0.531 0.849 0.452 0.753 0.642 0.430 0.733 0.800 0.520
  • init — time between system launch and first response. It is convenient for testing and devops to have model that starts quickly. deeppavlov_bert and texterra take >30 sec to start, slovnet takes just ~1 sec.
  • disk — file size of artefacts one needs to download before using the system: model weights, embeddings, binaries, vocabs. It is inconvenient to deploy large models in production. deeppavlov models require >1 GB download, slovnet is just 30 MB including embeddings.
  • ram — average memory consumption. deeppavlov systems and texterra are memory heavy, slovnet consumes ~200 MB of RAM.
  • speed — number of news articles processed per second, one article is ~1 KB of text. deeppavlov systems process texts in batches on GPU, but they are still slover than tomita, mitie and slovnet that run on single CPU.
init, s disk, mb ram, mb speed, articles/s
slovnet 0.9 30 180 33.9
deeppavlov_bert 34.5 2048 6144 13.1 (gpu)
deeppavlov 5.9 1024 3072 24.3 (gpu)
pullenti 2.9 16 253 6.0
texterra 47.6 193 3379 4.0
tomita 2.0 64 63 29.8
mitie 28.3 327 261 32.8

License

Source code of slovnet is distributed under MIT license (allows modification and commercial usage)

Support

You can’t perform that action at this time.