{"id":13417551,"url":"https://github.com/natasha/natasha","last_synced_at":"2025-05-13T23:07:23.398Z","repository":{"id":38324899,"uuid":"64834778","full_name":"natasha/natasha","owner":"natasha","description":"Solves basic Russian NLP tasks, API for lower level Natasha projects","archived":false,"fork":false,"pushed_at":"2024-10-17T16:36:44.000Z","size":37401,"stargazers_count":1242,"open_issues_count":29,"forks_count":109,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-04-10T02:11:28.098Z","etag":null,"topics":["embeddings","morphology","ner","nlp","python","russian","sentence-segmentation","syntax","tokenizer","visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/natasha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-03T09:49:51.000Z","updated_at":"2025-03-27T10:14:02.000Z","dependencies_parsed_at":"2025-01-07T20:06:34.019Z","dependency_job_id":"870093ed-f080-4ca4-ad7a-50d9496db8dd","html_url":"https://github.com/natasha/natasha","commit_stats":{"total_commits":363,"total_committers":18,"mean_commits":"20.166666666666668","dds":0.3911845730027548,"last_synced_commit":"82225892bfb818247b6edc52e72e92f1c41a8630"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natasha%2Fnatasha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natasha%2Fnatasha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natasha%2Fnatasha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natasha%2Fnatasha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/natasha","download_url":"https://codeload.github.com/natasha/natasha/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254041206,"owners_count":22004679,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["embeddings","morphology","ner","nlp","python","russian","sentence-segmentation","syntax","tokenizer","visualization"],"created_at":"2024-07-30T22:00:41.099Z","updated_at":"2025-05-13T23:07:18.383Z","avatar_url":"https://github.com/natasha.png","language":"Python","funding_links":[],"categories":["Python","Проекты","Искусственный интеллект и машинное обучение"],"sub_categories":["natasha"],"readme":"\n\u003cimg src=\"https://github.com/natasha/natasha-logos/blob/master/natasha.svg\"\u003e\n\n![CI](https://github.com/natasha/yargy/actions/workflows/test.yml/badge.svg)\n\nNatasha solves basic NLP tasks for Russian language: tokenization, sentence segmentation, word embedding, morphology tagging, lemmatization, phrase normalization, syntax parsing, NER tagging, fact extraction. Quality on every task is similar or better than current SOTAs for Russian language on news articles, see \u003ca href=\"https://github.com/natasha/natasha#evaluation\"\u003eevaluation section\u003c/a\u003e. Natasha is not a research project, underlying technologies are built for production. We pay attention to model size, RAM usage and performance. Models run on CPU, use Numpy for inference.\n\nNatasha integrates libraries from \u003ca href=\"https://github.com/natasha\"\u003eNatasha project\u003c/a\u003e under one convenient API:\n\n* \u003ca href=\"https://github.com/natasha/razdel\"\u003eRazdel\u003c/a\u003e — token, sentence segmentation for Russian\n* \u003ca href=\"https://github.com/natasha/navec\"\u003eNavec\u003c/a\u003e — compact Russian embeddings\n* \u003ca href=\"https://github.com/natasha/slovnet\"\u003eSlovnet\u003c/a\u003e — modern deep-learning techniques for Russian NLP, compact models for Russian morphology, syntax, NER.\n* \u003ca href=\"https://github.com/natasha/yargy\"\u003eYargy\u003c/a\u003e — rule-based fact extraction similar to Tomita parser.\n* \u003ca href=\"https://github.com/natasha/ipymarkup\"\u003eIpymarkup\u003c/a\u003e — NLP visualizations for NER and syntax markups.\n\n\u003e ⚠ API may change, for realworld tasks consider using low level libraries from Natasha project.\n\u003e Models optimized for news articles, quality on other domain may be lower.\n\u003e To use old `NamesExtractor`, `AddressExtactor` downgrade `pip install natasha\u003c1 yargy\u003c0.13`\n\n## Install\n\nNatasha supports Python 3.7+ and PyPy3:\n\n```bash\n$ pip install natasha\n```\n\n## Usage\n\nImport, initialize modules, build `Doc` object.\n\n```python\n\u003e\u003e\u003e from natasha import (\n    Segmenter,\n    MorphVocab,\n    \n    NewsEmbedding,\n    NewsMorphTagger,\n    NewsSyntaxParser,\n    NewsNERTagger,\n    \n    PER,\n    NamesExtractor,\n\n    Doc\n)\n\n\n\u003e\u003e\u003e segmenter = Segmenter()\n\u003e\u003e\u003e morph_vocab = MorphVocab()\n\n\u003e\u003e\u003e emb = NewsEmbedding()\n\u003e\u003e\u003e morph_tagger = NewsMorphTagger(emb)\n\u003e\u003e\u003e syntax_parser = NewsSyntaxParser(emb)\n\u003e\u003e\u003e ner_tagger = NewsNERTagger(emb)\n\n\u003e\u003e\u003e names_extractor = NamesExtractor(morph_vocab)\n\n\u003e\u003e\u003e text = 'Посол Израиля на Украине Йоэль Лион признался, что пришел в шок, узнав о решении властей Львовской области объявить 2019 год годом лидера запрещенной в России Организации украинских националистов (ОУН) Степана Бандеры. Свое заявление он разместил в Twitter. «Я не могу понять, как прославление тех, кто непосредственно принимал участие в ужасных антисемитских преступлениях, помогает бороться с антисемитизмом и ксенофобией. Украина не должна забывать о преступлениях, совершенных против украинских евреев, и никоим образом не отмечать их через почитание их исполнителей», — написал дипломат. 11 декабря Львовский областной совет принял решение провозгласить 2019 год в регионе годом Степана Бандеры в связи с празднованием 110-летия со дня рождения лидера ОУН (Бандера родился 1 января 1909 года). В июле аналогичное решение принял Житомирский областной совет. В начале месяца с предложением к президенту страны Петру Порошенко вернуть Бандере звание Героя Украины обратились депутаты Верховной Рады. Парламентарии уверены, что признание Бандеры национальным героем поможет в борьбе с подрывной деятельностью против Украины в информационном поле, а также остановит «распространение мифов, созданных российской пропагандой». Степан Бандера (1909-1959) был одним из лидеров Организации украинских националистов, выступающей за создание независимого государства на территориях с украиноязычным населением. В 2010 году в период президентства Виктора Ющенко Бандера был посмертно признан Героем Украины, однако впоследствии это решение было отменено судом. '\n\u003e\u003e\u003e doc = Doc(text)\n```\n\n### Segmentation\n\nSplit text into tokens and sentencies. Defines `tokens` and `sents` properties of `doc`. Uses \u003ca href=\"https://github.com/natasha/razdel\"\u003eRazdel\u003c/a\u003e internally.\n\n```python\n\u003e\u003e\u003e doc.segment(segmenter)\n\u003e\u003e\u003e print(doc.tokens[:5])\n\u003e\u003e\u003e print(doc.sents[:5])\n[DocToken(stop=5, text='Посол'),\n DocToken(start=6, stop=13, text='Израиля'),\n DocToken(start=14, stop=16, text='на'),\n DocToken(start=17, stop=24, text='Украине'),\n DocToken(start=25, stop=30, text='Йоэль')]\n[DocSent(stop=218, text='Посол Израиля на Украине Йоэль Лион признался, чт..., tokens=[...]),\n DocSent(start=219, stop=257, text='Свое заявление он разместил в Twitter.', tokens=[...]),\n DocSent(start=258, stop=424, text='«Я не могу понять, как прославление тех, кто непо..., tokens=[...]),\n DocSent(start=425, stop=592, text='Украина не должна забывать о преступлениях, совер..., tokens=[...]),\n DocSent(start=593, stop=798, text='11 декабря Львовский областной совет принял решен..., tokens=[...])]\n```\n\n### Morphology\n\nFor every token extract rich morphology tags. Depends on \u003ca href=\"#Segmentation\"\u003esegmentation\u003c/a\u003e step. Defines `pos` and `feats` properties of `doc.tokens`. Uses \u003ca href=\"https://github.com/natasha/slovnet#morphology\"\u003eSlovnet morphology model\u003c/a\u003e internally.\n\nCall `morph.print()` to visualize morphology markup.\n\n```python\n\u003e\u003e\u003e doc.tag_morph(morph_tagger)\n\u003e\u003e\u003e print(doc.tokens[:5])\n\u003e\u003e\u003e doc.sents[0].morph.print()\n[DocToken(stop=5, text='Посол', pos='NOUN', feats=\u003cAnim,Nom,Masc,Sing\u003e),\n DocToken(start=6, stop=13, text='Израиля', pos='PROPN', feats=\u003cInan,Gen,Masc,Sing\u003e),\n DocToken(start=14, stop=16, text='на', pos='ADP'),\n DocToken(start=17, stop=24, text='Украине', pos='PROPN', feats=\u003cInan,Loc,Fem,Sing\u003e),\n DocToken(start=25, stop=30, text='Йоэль', pos='PROPN', feats=\u003cAnim,Nom,Masc,Sing\u003e)]\n               Посол NOUN|Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing\n             Израиля PROPN|Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing\n                  на ADP\n             Украине PROPN|Animacy=Inan|Case=Loc|Gender=Fem|Number=Sing\n               Йоэль PROPN|Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing\n                Лион PROPN|Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing\n           признался VERB|Aspect=Perf|Gender=Masc|Mood=Ind|Number=Sing|Tense=Past|VerbForm=Fin|Voice=Mid\n                   , PUNCT\n                 что SCONJ\n...\n```\n\n### Lemmatization\n\nLemmatize every token. Depends on \u003ca href=\"#Morphology\"\u003emorphology\u003c/a\u003e step. Defines `lemma` property of `doc.tokens`. Uses \u003ca href=\"https://pymorphy2.readthedocs.io/en/stable/\"\u003ePymorphy\u003c/a\u003e internally.\n\n```python\n\u003e\u003e\u003e for token in doc.tokens:\n\u003e\u003e\u003e     token.lemmatize(morph_vocab)\n    \n\u003e\u003e\u003e print(doc.tokens[:5])\n\u003e\u003e\u003e {_.text: _.lemma for _ in doc.tokens}\n[DocToken(stop=5, text='Посол', pos='NOUN', feats=\u003cAnim,Nom,Masc,Sing\u003e, lemma='посол'),\n DocToken(start=6, stop=13, text='Израиля', pos='PROPN', feats=\u003cInan,Gen,Masc,Sing\u003e, lemma='израиль'),\n DocToken(start=14, stop=16, text='на', pos='ADP', lemma='на'),\n DocToken(start=17, stop=24, text='Украине', pos='PROPN', feats=\u003cInan,Loc,Fem,Sing\u003e, lemma='украина'),\n DocToken(start=25, stop=30, text='Йоэль', pos='PROPN', feats=\u003cAnim,Nom,Masc,Sing\u003e, lemma='йоэль')]\n{'Посол': 'посол',\n 'Израиля': 'израиль',\n 'на': 'на',\n 'Украине': 'украина',\n 'Йоэль': 'йоэль',\n 'Лион': 'лион',\n 'признался': 'признаться',\n ',': ',',\n 'что': 'что',\n 'пришел': 'прийти',\n 'в': 'в',\n 'шок': 'шок',\n 'узнав': 'узнать',\n 'о': 'о',\n...\n```\n\n### Syntax\n\nFor every sentence run syntax analyzer. Depends on \u003ca href=\"#Segmentation\"\u003esegmentation\u003c/a\u003e step. Defines `id`, `head_id`, `rel` properties of `doc.tokens`. Uses \u003ca href=\"https://github.com/natasha/slovnet#syntax\"\u003eSlovnet syntax model\u003c/a\u003e internally. \n\nUse `syntax.print()` to visualize syntax markup. Uses \u003ca href=\"https://github.com/natasha/ipymarkup\"\u003eIpymarkup\u003c/a\u003e internally.\n\n```python\n\u003e\u003e\u003e doc.parse_syntax(syntax_parser)\n\u003e\u003e\u003e print(doc.tokens[:5])\n\u003e\u003e\u003e doc.sents[0].syntax.print()\n[DocToken(stop=5, text='Посол', id='1_1', head_id='1_7', rel='nsubj', pos='NOUN', feats=\u003cAnim,Nom,Masc,Sing\u003e),\n DocToken(start=6, stop=13, text='Израиля', id='1_2', head_id='1_1', rel='nmod', pos='PROPN', feats=\u003cInan,Gen,Masc,Sing\u003e),\n DocToken(start=14, stop=16, text='на', id='1_3', head_id='1_4', rel='case', pos='ADP'),\n DocToken(start=17, stop=24, text='Украине', id='1_4', head_id='1_1', rel='nmod', pos='PROPN', feats=\u003cInan,Loc,Fem,Sing\u003e),\n DocToken(start=25, stop=30, text='Йоэль', id='1_5', head_id='1_1', rel='appos', pos='PROPN', feats=\u003cAnim,Nom,Masc,Sing\u003e)]\n        ┌──► Посол         nsubj\n        │    Израиля       \n        │ ┌► на            case\n        │ └─ Украине       \n        │ ┌─ Йоэль         \n        │ └► Лион          flat:name\n┌─────┌─└─── признался     \n│     │ ┌──► ,             punct\n│     │ │ ┌► что           mark\n│     └►└─└─ пришел        ccomp\n│     │   ┌► в             case\n│     └──►└─ шок           obl\n│         ┌► ,             punct\n│ ┌────►┌─└─ узнав         advcl\n│ │     │ ┌► о             case\n│ │ ┌───└►└─ решении       obl\n│ │ │ ┌─└──► властей       nmod\n│ │ │ │   ┌► Львовской     amod\n│ │ │ └──►└─ области       nmod\n│ └─└►┌─┌─── объявить      nmod\n│     │ │ ┌► 2019          amod\n│     │ └►└─ год           obj\n│     └──►┌─ годом         obl\n│   ┌─────└► лидера        nmod\n│   │ ┌►┌─── запрещенной   acl\n│   │ │ │ ┌► в             case\n│   │ │ └►└─ России        obl\n│ ┌─└►└─┌─── Организации   nmod\n│ │     │ ┌► украинских    amod\n│ │   ┌─└►└─ националистов nmod\n│ │   │   ┌► (             punct\n│ │   └►┌─└─ ОУН           parataxis\n│ │     └──► )             punct\n│ └──────►┌─ Степана       appos\n│         └► Бандеры       flat:name\n└──────────► .             punct\n...\n```\n\n### NER\n\nExtract standart named entities: names, locations, organizations. Depends on \u003ca href=\"#Segmentation\"\u003esegmentation\u003c/a\u003e step. Defines `spans` property of `doc`. Uses \u003ca href=\"https://github.com/natasha/slovnet#ner\"\u003eSlovnet NER model\u003c/a\u003e internally. \n\nCall `ner.print()` to visualize NER markup. Uses \u003ca href=\"https://github.com/natasha/ipymarkup\"\u003eIpymarkup\u003c/a\u003e internally.\n\n```python\n\u003e\u003e\u003e doc.tag_ner(ner_tagger)\n\u003e\u003e\u003e print(doc.spans[:5])\n\u003e\u003e\u003e doc.ner.print()\n[DocSpan(start=6, stop=13, type='LOC', text='Израиля', tokens=[...]),\n DocSpan(start=17, stop=24, type='LOC', text='Украине', tokens=[...]),\n DocSpan(start=25, stop=35, type='PER', text='Йоэль Лион', tokens=[...]),\n DocSpan(start=89, stop=106, type='LOC', text='Львовской области', tokens=[...]),\n DocSpan(start=152, stop=158, type='LOC', text='России', tokens=[...])]\nПосол Израиля на Украине Йоэль Лион признался, что пришел в шок, узнав\n      LOC────    LOC──── PER───────                                   \n о решении властей Львовской области объявить 2019 год годом лидера \n                   LOC──────────────                                \nзапрещенной в России Организации украинских националистов (ОУН) \n              LOC─── ORG─────────────────────────────────────── \nСтепана Бандеры. Свое заявление он разместил в Twitter. «Я не могу \nPER────────────                                ORG────             \nпонять, как прославление тех, кто непосредственно принимал участие в \nужасных антисемитских преступлениях, помогает бороться с \nантисемитизмом и ксенофобией. Украина не должна забывать о \n                              LOC────                      \nпреступлениях, совершенных против украинских евреев, и никоим образом \nне отмечать их через почитание их исполнителей», — написал дипломат. \n11 декабря Львовский областной совет принял решение провозгласить 2019\n           ORG──────────────────────                                  \n год в регионе годом Степана Бандеры в связи с празднованием 110-летия\n                     PER────────────                                  \n со дня рождения лидера ОУН (Бандера родился 1 января 1909 года). В \n                        ORG                                         \nиюле аналогичное решение принял Житомирский областной совет. В начале \n                                ORG────────────────────────           \nмесяца с предложением к президенту страны Петру Порошенко вернуть \n                                          PER────────────         \nБандере звание Героя Украины обратились депутаты Верховной Рады. \nPER────              LOC────                     ORG───────────  \nПарламентарии уверены, что признание Бандеры национальным героем \n                                     PER────                     \nпоможет в борьбе с подрывной деятельностью против Украины в \n                                                  LOC────   \nинформационном поле, а также остановит «распространение мифов, \nсозданных российской пропагандой». Степан Бандера (1909-1959) был \n                                   PER───────────                 \nодним из лидеров Организации украинских националистов, выступающей за \n                 ORG─────────────────────────────────                 \nсоздание независимого государства на территориях с украиноязычным \nнаселением. В 2010 году в период президентства Виктора Ющенко Бандера \n                                               PER─────────── PER──── \nбыл посмертно признан Героем Украины, однако впоследствии это решение \n                             LOC────                                  \nбыло отменено судом. \n```\n\n### Named entity normalization\n\nFor every NER span apply normalization procedure. Depends on \u003ca href=\"#NER\"\u003eNER\u003c/a\u003e, \u003ca href=\"#Morphology\"\u003emorphology\u003c/a\u003e and \u003ca href=\"#Syntax\"\u003esyntax\u003c/a\u003e steps. Defines `normal` property of `doc.spans`.\n\nOne can not just lemmatize every token inside entity span, otherwise \"Организации украинских националистов\" would become \"Организация украинские националисты\". Natasha uses syntax dependencies to produce correct \"Организация украинских националистов\".\n\n```python\n\u003e\u003e\u003e for span in doc.spans:\n\u003e\u003e\u003e    span.normalize(morph_vocab)\n\u003e\u003e\u003e print(doc.spans[:5])\n\u003e\u003e\u003e {_.text: _.normal for _ in doc.spans if _.text != _.normal}\n[DocSpan(start=6, stop=13, type='LOC', text='Израиля', tokens=[...], normal='Израиль'),\n DocSpan(start=17, stop=24, type='LOC', text='Украине', tokens=[...], normal='Украина'),\n DocSpan(start=25, stop=35, type='PER', text='Йоэль Лион', tokens=[...], normal='Йоэль Лион'),\n DocSpan(start=89, stop=106, type='LOC', text='Львовской области', tokens=[...], normal='Львовская область'),\n DocSpan(start=152, stop=158, type='LOC', text='России', tokens=[...], normal='Россия')]\n{'Израиля': 'Израиль',\n 'Украине': 'Украина',\n 'Львовской области': 'Львовская область',\n 'России': 'Россия',\n 'Организации украинских националистов (ОУН)': 'Организация украинских националистов (ОУН)',\n 'Степана Бандеры': 'Степан Бандера',\n 'Петру Порошенко': 'Петр Порошенко',\n 'Бандере': 'Бандера',\n 'Украины': 'Украина',\n 'Верховной Рады': 'Верховная Рада',\n 'Бандеры': 'Бандера',\n 'Организации украинских националистов': 'Организация украинских националистов',\n 'Виктора Ющенко': 'Виктор Ющенко'}\n```\n\n### Named entity parsing\n\nParse `PER` named entities into firstname, surname and patronymic. Depends on \u003ca href=\"#NER\"\u003eNER\u003c/a\u003e step. Defines `fact` property of `doc.spans`. Uses \u003ca href=\"https://github.com/natasha/yargy\"\u003eYargy-parser\u003c/a\u003e internally.\n\nNatasha also has built in extractors for \u003ca href=\"https://nbviewer.jupyter.org/github/natasha/natasha/blob/master/docs.ipynb#DatesExtractor\"\u003edates\u003c/a\u003e, \u003ca href=\"https://nbviewer.jupyter.org/github/natasha/natasha/blob/master/docs.ipynb#MoneyExtractor\"\u003emoney\u003c/a\u003e, \u003ca href=\"https://nbviewer.jupyter.org/github/natasha/natasha/blob/master/docs.ipynb#AddrExtractor\"\u003eaddress\u003c/a\u003e.\n\n```python\n\u003e\u003e\u003e for span in doc.spans:\n\u003e\u003e\u003e    if span.type == PER:\n\u003e\u003e\u003e        span.extract_fact(names_extractor)\n\n\u003e\u003e\u003e print(doc.spans[:5])\n\u003e\u003e\u003e {_.normal: _.fact.as_dict for _ in doc.spans if _.type == PER}\n[DocSpan(start=6, stop=13, type='LOC', text='Израиля', tokens=[...], normal='Израиль'),\n DocSpan(start=17, stop=24, type='LOC', text='Украине', tokens=[...], normal='Украина'),\n DocSpan(start=25, stop=35, type='PER', text='Йоэль Лион', tokens=[...], normal='Йоэль Лион', fact=DocFact(slots=[...])),\n DocSpan(start=89, stop=106, type='LOC', text='Львовской области', tokens=[...], normal='Львовская область'),\n DocSpan(start=152, stop=158, type='LOC', text='России', tokens=[...], normal='Россия')]\n{'Йоэль Лион': {'first': 'Йоэль', 'last': 'Лион'},\n 'Степан Бандера': {'first': 'Степан', 'last': 'Бандера'},\n 'Петр Порошенко': {'first': 'Петр', 'last': 'Порошенко'},\n 'Бандера': {'last': 'Бандера'},\n 'Виктор Ющенко': {'first': 'Виктор', 'last': 'Ющенко'}}\n```\n\n## Documentation\n\n* \u003ca href=\"http://nbviewer.jupyter.org/github/natasha/natasha/blob/master/docs.ipynb\"\u003eExamples with description + reference\u003c/a\u003e\n* \u003ca href=\"https://habr.com/ru/post/516098/#natasha\"\u003eNatasha section in longread on Natasha project\u003c/a\u003e (in Russian) \n* \u003ca href=\"https://youtu.be/-7XT_U6hVvk?t=951\"\u003eNatasha section of Datafest 2020 talk\u003c/a\u003e (in Russian)\n\n## Evaluation\n\n* Segmentation — \u003ca href=\"https://github.com/natasha/razdel#quality-performance\"\u003eRazdel evalualtion section\u003c/a\u003e\n* Embedding — \u003ca href=\"https://github.com/natasha/navec#evaluation\"\u003eNavec evalualtion section\u003c/a\u003e\n* Morphology — \u003ca href=\"https://github.com/natasha/slovnet#morphology-1\"\u003eSlovnet Morph evaluation section\u003c/a\u003e\n* Syntax — \u003ca href=\"https://github.com/natasha/slovnet#syntax-1\"\u003eSlovnet Syntax evaluation section\u003c/a\u003e\n* NER — \u003ca href=\"https://github.com/natasha/slovnet#ner-1\"\u003eSlovnet NER evaluation section\u003c/a\u003e\n\n## Support\n\n- Chat — https://t.me/natural_language_processing\n- Issues — https://github.com/natasha/natasha/issues\n- Commercial support — https://lab.alexkuk.ru\n\n## Development\n\nDev env\n\n```bash\npython -m venv ~/.venvs/natasha-natasha\nsource ~/.venvs/natasha-natasha/bin/activate\n\npip install -r requirements/dev.txt\npip install -e .\n\npython -m ipykernel install --user --name natasha-natasha\n```\n\nTest\n\n```bash\nmake test\n```\n\nDocs\n\n```bash\nmake exec-docs\n```\n\nRelease\n\n```bash\n# Update setup.py version\n\ngit commit -am 'Up version'\ngit tag v1.6.0\n\ngit push\ngit push --tags\n\n# Github Action builds dist and publishes to PyPi\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatasha%2Fnatasha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnatasha%2Fnatasha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatasha%2Fnatasha/lists"}