A Crumb egy magyar morfológiai generátor. Képes dinamikusan előállítani különböző magyar szavakat toldalékolással, de számos egyéb alapeszközt biztosít természetes mondatok generálásához.
npm install crumbjs
A toldalékoláshoz használd a suffix
metódust:
import {suffix} from 'crumbjs';
suffix.dative('kutya'); // "kutyának"
A suffix
metódus a magyar nyelv toldalékolási szabályait implementálja, figyelembe véve a magánhangzó-harmóniát és
egyéb nyelvtani szabályokat.
A csomag a következő toldalékokat támogatja:
Esetragok:
accusative
: tárgyeset (-t, -ot, -at, -et, -öt) - pl.suffix.accusative('ház')
→ "házat"dative
: részeshatározó (-nak, -nek) - pl.suffix.dative('macska')
→ "macskának"ablative
: távolító eset (-tól, -től) - pl.suffix.ablative('iskola')
→ "iskolától"adessive
: veszteglő eset (-nál, -nél) - pl.suffix.adessive('ajtó')
→ "ajtónál"allative
: közelítő eset (-hoz, -hez, -höz) - pl.suffix.allative('szék')
→ "székhez"delative
: leható eset (-ról, -ről) - pl.suffix.delative('tető')
→ "tetőről"elative
: kiható eset (-ból, -ből) - pl.suffix.elative('doboz')
→ "dobozból"illative
: beható eset (-ba, -be) - pl.suffix.illative('ház')
→ "házba"inessive
: bentlakó eset (-ban, -ben) - pl.suffix.inessive('kert')
→ "kertben"sublative
: felható eset (-ra, -re) - pl.suffix.sublative('asztal')
→ "asztalra"superessive
: felülmaradó eset (-on, -en, -ön) - pl.suffix.superessive('föld')
→ "földön"terminative
: határvető eset (-ig) - pl.suffix.terminative('sarok')
→ "sarokig"translative
: változtató eset (-vá, -vé) - pl.suffix.translative('jég')
→ "jéggé"instrumentalComitative
: eszközhatározó (-val, -vel) - pl.suffix.instrumentalComitative('toll')
→ "tollal"locative
: helyhatározó (-ott, -ett, -ött) - pl.suffix.locative('minden')
→ "mindenütt"genitive
: birtokos eset (-é) - pl.suffix.genitive('tanár')
→ "tanáré"
Egyéb toldalékok:
plural
: többes szám (-k, -ok, -ak, -ek, -ök) - pl.suffix.plural('kutya')
→ "kutyák"adjective
: melléknévképző (-i, -s, -os, -as, -es, -ös) - pl.suffix.adjective('Budapest')
→ "budapesti"privative
: fosztóképző (-talan, -telen, -atlan, -etlen) - pl.suffix.privative('hiba')
→ "hibátlan"temporal
: időhatározó (-kor) - pl.suffix.temporal('három')
→ "háromkor"essiveFormal
: alakhatározó (-ként) - pl.suffix.essiveFormal('tanár')
→ "tanárként"essiveModal
: módhatározó (-ul, -ül) - pl.suffix.essiveModal('példa')
→ "példaul"sociative
: társhatározó (-stul, -stül) - pl.suffix.sociative('család')
→ "családostul"distributiveTemporal
: osztó időhatározó (-onta, -ente) - pl.suffix.distributiveTemporal('hét')
→ "hetente"distributive
: osztóhatározó (-onként, -enként) - pl.suffix.distributive('darab')
→ "darabonként"formal
: alakhatározó (-képpen) - pl.suffix.formal('más')
→ "másképpen"modalEssive
: módhatározó (-ul, -ül) - pl.suffix.modalEssive('magyar')
→ "magyarul"multiplicative
: szorzó (-szor, -szer, -ször) - pl.suffix.multiplicative('három')
→ "háromszor"frequentative
: gyakorító (-gat, -get) - pl.suffix.frequentative('néz')
→ "nézeget"finalCasual
: célhatározó (-ért) - pl.suffix.finalCasual('pénz')
→ "pénzért"
Fokozás:
A csomag támogatja a melléknevek fokozását is a grade
objektumon keresztül:
import {grade} from 'crumbjs';
grade.comparative('szép'); // "szebb"
grade.superlative('szép'); // "legszebb"
grade.excessive('szép'); // "legeslegszebb"
import {getNumberWithWords} from 'crumbjs'
getNumberWithWords('1625'); // "ezerhatszázhuszonöt"
getNumberWithWords('-13.4'); // "mínusz tizenhárom egész négy tized"
getNumberWithWords('48239845'); // "negyvennyolcmillió-kétszázharminckilencezer-nyolcszáznegyvenöt"
import {getSyllables} from 'crumbjs'
getSyllables('kivirágozhat'); // ["ki", "vi", "rá", "goz", "hat"]
getSyllables('kellemetlenség'); // ["kel", "le", "met", "len", "ség"]
// Nincs szótár, nem ismeri fel a szóhatárokat
getSyllables('kerítésszaggató', {stopWords: ["kerítés"], formatted: true}); // ke-rí-tés-szag-ga-tó
getSyllables('pánikroham', {formatted: true, hypenCharacter: '/'}); // pá/nik/ro/ham
A csomag kezeli a magyar nyelv speciális eseteit és kivételeit, például:
- Mássalhangzó-hasonulás (pl. "toll" + "val" → "tollal")
- Hangkivetés (pl. "bokor" → "bokrot")
- Hangzórövidülés (pl. "kéz" → "kezet")
- Egyéb rendhagyó alakok (pl. "ló" → "lovat")
import {suffix, grade} from 'crumbjs';
// Esetragok
suffix.accusative('alma'); // "almát"
suffix.dative('ház'); // "háznak"
suffix.ablative('iskola'); // "iskolától"
suffix.inessive('doboz'); // "dobozban"
suffix.superessive('szék'); // "széken"
// Többes szám
suffix.plural('kutya'); // "kutyák"
suffix.plural('ember'); // "emberek"
suffix.plural('könyv'); // "könyvek"
// Birtokos eset
suffix.genitive('tanár'); // "tanáré"
suffix.genitive('diák'); // "diáké"
// Fokozás
grade.comparative('nagy'); // "nagyobb"
grade.superlative('szép'); // "legszebb"
grade.excessive('jó'); // "legeslegjobb"
// Kivételek kezelése
suffix.accusative('ló'); // "lovat"
suffix.plural('tó'); // "tavak"
crumb suffix accusative alma // "almát"
crumb grade comparative szép // "szebb"
crumb numeral 6524 // hatezer-ötszázhuszonnégy
MIT