A NLP library for Russian language


Keywords
NLP, natural, language, processing, morphology, syntax, tokenization, words, names, parse, inflect, Russian
License
MIT
Install
npm install az@0.2.3

Documentation

Az – JS-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для морфологичСского Π°Π½Π°Π»ΠΈΠ·Π°, Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… NLP-Π·Π°Π΄Π°Ρ‡ для русского языка.

Основана Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ pymorphy2 для Python.

Бостоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

  • Az.Tokens (az.tokens.js). ВокСнизация. Π£ΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ тСкст (Π² Π²ΠΈΠ΄Π΅ строки) Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹. ΠŸΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² β€” гипСрссылки (Π² Ρ‚ΠΎΠΌ числС Π±Π΅Π· "http://" ΠΈΠ»ΠΈ "www." Π² Π½Π°Ρ‡Π°Π»Π΅), Ρ…ΡΡˆΡ‚Π΅Π³ΠΈ, элСктронныС адрСса. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ HTML-, Π²ΠΈΠΊΠΈ- ΠΈ Markdown-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ.
  • Az.Morph (az.morph.js). ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ части Ρ€Π΅Ρ‡ΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ грамматичСскиС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ русских слов, ΠΊΠ°ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² словарС, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Π½Ρ‘ΠΌ, Π² Ρ‚ΠΎΠΌ числС ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ. Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ словарСй pymorphy2, Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… дСталях Ρ€Π°Π΄ΠΈ компактности. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ словари доступны ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Π² ΠΏΠ°ΠΏΠΊΠ΅ dicts/), Π² дальнСйшСм планируСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΡ… ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ (ΠΈΠ· Π±Π°Π·Ρ‹ OpenCorpora).
  • Az.Syntax (az.syntax.js). Бинтаксис. (Π² ΠΏΠ»Π°Π½Π°Ρ…)

Установка

Π§Π΅Ρ€Π΅Π· npm:

$ npm install az --save
var Az = require('az');

Π§Π΅Ρ€Π΅Π· bower:

$ bower install az --save
<script src="bower_components/az/dist/az.min.js"></script>

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

ВокСнизация

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

var tokens = Az.Tokens('Мама ΠΌΡ‹Π»Π° Ρ€Π°ΠΌΡƒ').done();
// => 3 слова, 2 ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½Π°

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Az.Tokens ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ строку ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Π΅Ρ‘ Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹. НапримСр, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², пунктуация β€” ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ. Никакого Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π°Π΄ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π½Π΅ производится.

ΠŸΡ€ΠΈ этом Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° производится ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Β«ΡƒΠΌΠ½Ρ‹ΠΌΒ» способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ссылки, Ρ…ΡΡˆΡ‚Π΅Π³ΠΈ ΠΈ адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ «чистого» тСкста поддСрТиваСтся HTML-, Π²ΠΈΠΊΠΈ- ΠΈ Markdown-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° (Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ особой структуры ΠΏΡ€ΠΈ этом Π½Π΅ строится, Π½ΠΎ сущности Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HTML-Ρ‚Π΅Π³ΠΈ β€” Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ написан Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ тСкст кусками, ΠΈ ΠΎΠ½ ΠΏΡ€ΠΈ этом ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π½Π° стыках кусков:

var tokens = Az.Tokens('Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ Ρ‚Π΅')
  .append('кст, Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹')
  .append('ΠΉ Π½Π° нСсколько частСй')
  .done(); // => 6 слов, 5 ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², 1 Π·Π½Π°ΠΊ прСпинания

НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ большой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, постСпСнно «скармливая» Π΅Π³ΠΎ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ.

ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ (ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ слуТСбныС символы) всСгда ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π½Π°Ρ€Π°Π²Π½Π΅ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ позволяСт, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ тСкст Π² точности Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Π±Ρ‹Π» Π΄ΠΎ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. Однако это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ². Для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Β«Π΄ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΒ» Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ: Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²).

Π’ ΠΏΠ»Π°Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ API Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½ классом StringTokenizer Π² Java.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ докумСнтация: Az.Tokens.

ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Az.Morph.init('bower_components/az/dicts', function() {
  var parses = Az.Morph('стали');
  console.log(parses); // => 6 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π°Π·Π±ΠΎΡ€Π°
  console.log(parses[0].tag.toString()); // => 'VERB,perf,intr plur,past,indc'
  console.log(parses[1].tag.toString()); // => 'NOUN,inan,femn plur,nomn'
});

ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ СдинствСнноС слово (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ послС Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π΅Π³ΠΎ Ρ€Π°Π·Π±ΠΎΡ€Π°: Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΠΈ, ΠΏΠ°Π΄Π΅ΠΆ, Ρ€ΠΎΠ΄ ΠΈ Ρ‚.Π΄. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ «правдоподобия», поэтому прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΈΠΆΠ΅ всСго ΠΊ истинС.

Для Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ словари Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ DAWG, поэтому ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с морфологичСским ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΈΡ… слСдуСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ: Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Az.Morph.init([path], callback) ΠΈ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Π²Ρ‹Π·ΠΎΠ²Π° callback). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ΠΈ грузятся ΠΈΠ· ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ dicts, Π½ΠΎ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.

Как ΠΈ Π² pymorphy2, Π² Az для нСизвСстных слов Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ прСдсказатСли (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² pymorphy2 ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Π° Ρ‚ΡƒΡ‚ β€” парсСрами). Бписок примСняСмых парсСров ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² исходниках ΠΈ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ parsers Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ свои парсСры ΠΈ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Az.Morph.Parsers – ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны для Π°Π½Π°Π»ΠΈΠ·Π°.

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ прСдсказатСлям, ΠΏΡ€ΠΈ словарном Ρ€Π°Π·Π±ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ исправлСниС ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ ΠΈ Ρ‚.Π½. «заикания» (это ΠΊΠΎΠ³Π΄Π° Π² словС ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‚ Π±ΡƒΠΊΠ²Ρ‹: Β«Π³ΠΎ-ΠΎ-ΠΎΠ»Β», Β«Π½Π΅Π΅Π΅Ρ‚Β»). Π­Ρ‚ΠΎ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, нСсколько ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (особСнно это касаСтся ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ), поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ осознанно. Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° писалась с ΡƒΠΏΠΎΡ€ΠΎΠΌ Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Β«Ρ‚Π΅ΠΏΠ»ΠΈΡ‡Π½Ρ‹Ρ… условиях» (ΠΊΠΎΠ³Π΄Π° прСдполагаСтся идСальная ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ тСкста Π½Π° Π²Ρ…ΠΎΠ΄Π΅), Π½ΠΎ Π² Β«Π΄ΠΈΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅Β».

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π°Π·Π±ΠΎΡ€Π° прСдставляСт ΠΈΠ· сСбя, Π³Ρ€ΡƒΠ±ΠΎ говоря, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ слова (Ρ‚.Π½. Β«Ρ‚Π΅Π³Β») ΠΈ описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ слово Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒ. ΠŸΡ€ΠΎΡΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ inflect, привСсти Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ normalize. ΠœΠ΅Ρ‚ΠΎΠ΄ pluralize согласуСт слово с числом.

Π’Π΅Π³ β€” Π½Π΅ΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² слова (Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌ), Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ измСняСмыми, Ρ‡Π°ΡΡ‚ΡŒ β€” нСизмСняСмыми. НСкоторыС Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Β«Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈΒ» (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ Π»ΠΈΠ±ΠΎ Π΅ΡΡ‚ΡŒ, Π»ΠΈΠ±ΠΎ Π½Π΅Ρ‚) β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌΡ‹ Arch ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ слово являСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС присутствиС Ρ‚Π°ΠΊΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌΡ‹ провСряСтся Ρ‚Π°ΠΊ: if (parses[0].tag.Arch) ... (ΠΈΠ»ΠΈ if ('Arch' in parses[0].tag) ...). Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌΡ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ Π² сСбя список Β«Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ…Β» Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌΠ° CAse ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ°Π΄Π΅ΠΆ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния nomn, gent ΠΈ Ρ‚.Π΄. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΠΎΠ»Π΅ parses[0].tag.CAse содСрТит строку (допустим, 'gent') + присутствуСт ΠΈ дочСрняя Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌΠ° сама ΠΏΠΎ сСбС: parses[0].tag.gent == true. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π³Ρ€Π°ΠΌΠΌΠ΅ΠΌ доступСн Π½Π° сайтС OpenCorpora.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ докумСнтация: Az.Morph.

Бинтаксис

Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΠ»Π°Π½Π°Ρ… прСдполагаСтся Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ синтаксичСским Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ (построСниСм синтаксичСских Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π²) ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ смыслов.