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>
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
- ΠΠ΅ΠΌΠΎ
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ API Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ: Π½Π° GitHub | Π½Π° Doclets.io
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ pymorphy2
- ΠΡΠΊΡΡΡΡΠΉ ΠΊΠΎΡΠΏΡΡ OpenCorpora ΠΈ Π΅Π³ΠΎ ΡΠΏΠΈΡΠΎΠΊ Π³ΡΠ°ΠΌΠΌΠ΅ΠΌ
Π’ΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ
ΠΡΠΈΠΌΠ΅Ρ:
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.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΠΏΠ»Π°Π½Π°Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π²) ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΌΡΡΠ»ΠΎΠ².