Бібліятэка марфалагічнага аналізу беларускай мовы без залежнасцяў
Хуткая, лёгкая бібліятэка для аналізу беларускіх слоў і іх марфалагічных уласцівасцяў.
- Марфалагічны аналіз: Вызначэнне часціны мовы, склону, роду, ліку, часу, трывання, адушаўлёнасці, ступені параўнання і іншых граматычных уласцівасцяў
- Скланенне: Генерацыя розных граматычных форм слоў
- Генерацыя лексемы: Атрыманне ўсіх магчымых форм слова
- Марфалагічнае прадказанне: Невядомыя словы аналізуюцца па суфіксальных узорах
- Без залежнасцяў: Ніякіх знешніх залежнасцяў пры выкананні
- Падтрымка TypeScript: Поўныя вызначэнні тыпаў
- Эфектыўнае захоўванне: Выкарыстоўвае DAWG (Directed Acyclic Word Graph) для хуткага пошуку
- Сумяшчальнасць з браўзерам: Працуе ў Node.js, браўзерах і Deno — без native залежнасцяў
- Слоўнік ахоплівае 6 574 парадыгмы скланення, атрыманыя з GrammarDB
npm install belmorphimport { MorphAnalyzer } from 'belmorph';
import { loadDict } from 'belmorph/node';
const morph = new MorphAnalyzer(loadDict()); // выкарыстоўвае ўбудаваны dict/
const results = morph.parse('горад');
console.log(results[0].lemma); // 'горад'
console.log(results[0].tags.pos); // 'N' (назоўнік)
// Скланенне да патрэбнай формы
results[0].inflect({ case: 'I', number: 'P' })?.word; // 'гарадамі'
// Поўныя назвы і кароткія коды ўзаемазамяняльныя
results[0].inflect({ case: 'instrumental', number: 'plural' })?.word; // 'гарадамі'
// Атрымаць усе формы
const lexeme = results[0].lexeme;
console.log(lexeme.map(r => r.word));import { MorphAnalyzer } from 'belmorph';
// Раздавайце папку dict/ як статычныя файлы і ўкажыце на яе:
const morph = await MorphAnalyzer.init('/dict/');
// або з CDN:
const morph = await MorphAnalyzer.init('https://cdn.example.com/dict/');
const results = morph.parse('горад');Калі слова не знойдзена ў слоўніку, аналізатар выкарыстоўвае прадказанне на аснове суфіксаў. Такія вынікі маюць predicted: true і могуць быць менш дакладнымі.
| Метад | Асяроддзе | Апісанне |
|---|---|---|
new MorphAnalyzer(dict) |
усюды | Канструктар, які прымае гатовы аб'ект DictData |
MorphAnalyzer.init(baseUrl?) |
усюды | Асінхронная фабрыка — загружае і распакоўвае файлы слоўніка праз HTTP. Базавы URL па змоўчанні: '/dict/' |
loadDict(dir?) з belmorph/node |
толькі Node.js | Сінхронная загрузка з файлавай сістэмы. Па змоўчанні выкарыстоўвае ўбудаваны dict/ |
MorphAnalyzer.parse(word) вяртае масіў аб'ектаў ParseResult. Кожны вынік мае:
word— форма словаlemma— слоўнікавая формаtags— граматычныя ўласцівасці (інтэрфейсGrammeme, гл.src/tags.ts)predicted— ці быў аналіз прадказаныinflect(target)— вяртае форму паводле зададзеных граммем абоnulllexeme— усе формы слова
Значэнні граммем адпавядаюць кодам GrammarDB. inflect() прымае як кароткія коды ('I'), так і поўныя англійскія назвы ('instrumental').
Бібліятэка патрабуе загадзя зробленага слоўніка. Для яго зборкі:
git submodule update --init
npm run build:dictГэта створыць неабходныя файлы слоўніка ў дырэкторыі dict/.
npm test # Аднаразовы запуск тэстаў
npm run test:watch # Запуск тэстаў у рэжыме назіранняГэты праект мае падвойную ліцэнзію:
- Зыходны код: Ліцэнзія MIT
- Дадзеныя слоўніка: CC BY-SA 4.0 (атрыманы з GrammarDB)
Гл. файл LICENSE каб убачыць поўную інфармацыю.