Beygir er í senn sérsmíðað gagnasnið fyrir Beygingarlýsingu íslensks nútímamáls (BÍN) og TypeScript-forritasafn til að lesa það. Beygir styður Bun, Node.js og vafra, en gagnasniðið sjálft er óháð JavaScript og því má lesa það í öðrum umhverfum eða forritunarmálum.
Sniðið er hannað til að vera bæði skilvirkt í lestri og sem allra minnst, en aðgerðir taka á bilinu tugi til hundruða nanósekúndna upp í fáeinar míkrósekúndur og gagnaskráin er aðeins 13,3 MiB að stærð (3,2 MiB þjöppuð). Til samanburðar eru upprunaleg gögn, KRISTINsnid.csv, í heildina 449,0 MiB afþjöppuð, en Beygir veitir fullan aðgang að því safni, rúmlega 7,4 milljónum beygingarfærslna.
Beygir varð til við þróun á Yrðu og er þar meðal annars notaður til að styðja við leit í orðabók og birta beygingartöflur.
Safnið er gefið út á npm sem @yrda/beygir.
bun add @yrda/beygir@next
eða:
npm install @yrda/beygir@next
Einnig má prófa dæmið sem keyrir í vafranum (ath. að gagnaskráin er sótt og notuð alfarið beint í vafranum, án frekari samskipta við bakenda eftir gagnasókn.)
import beygir from "@yrda/beygir";
const finnst = beygir.hefur("hestur");
// true
const uppflettiorð = beygir.finnaUppflettiorð("hestur")[0]!;
// { auðkenni: 6179, orð: "hestur", orðflokkur: "kk", ... }
const beygingarmyndir = beygir.beygingarmyndir(uppflettiorð);
// ["hestur", "hesturinn", "hest", "hestinn", ...]
const greining = beygir.greina("hesthússhestur");
// { orð: "hesthússhestur", samsett: true, tilgáta: true, hlutar: ["hesthúss", "hestur"], ... }
const leitarniðurstöður = beygir.leita("hund", {
svið: "allt",
fjöldi: 10,
});
// { niðurstöður: ["hund", "Hund", "hunda", "hundaat", ... ], ... }
const færslur = beygir.finnaBeygingarfærslur("hesti", {
sía: { mark: "ÞGFET" },
velja: (færsla) => ({
orð: færsla.orð,
mark: færsla.mark,
}),
});
// [{ orð: "hestur", mark: "ÞGFET" }]
Sjá einnig ítarlegri notkunardæmi útlistuð neðar.
Beygir gerir greinarmun á uppflettiorði og beygingarfærslu:
Uppflettiorð er fletta með BÍN-auðkenni, t.d. hestur.Færsla er ein greind beygingarmynd flettu, t.d. hesti með marki ÞGFET.finna og finnaUppflettiorð skila uppflettiorðum. finnaBeygingarfærslur
skilar færslum með uppflettiorði, beygingarmynd og marki. Aðferðir eins og
beygingarmyndir vinna með eina flettu, en skiptaUmFall tekur færslu því hún
þarf bæði beygingarmyndina sem fannst og málfræðimark hennar.
Rótarviðmótið er þægilegast fyrir almenna notkun en til að stýra hvaða gagnaskrá er notuð eða hvernig gögnin eru lesin má nota handvirka opnun.
Sjálfgefni innflutningurinn import beygir from "@yrda/beygir" opnar
pakkagagnaskrána samstillt þegar einingin hleðst. Notaðu opnaBeygi() þegar þú
vilt stjórna hvenær opnun fer fram; notaðu opnaBeygiÓsamstillt() þegar opnunin
á ekki að gerast samstillt, til dæmis í kaldræsingu.
import { opnaBeygiÓsamstillt } from "@yrda/beygir/gagnaskrá";
await using beygir = await opnaBeygiÓsamstillt({
slóð: ".gögn/beygir.bin",
afleitt: "skrá-minni",
undirbúa: true,
});
Ef pakkagagnaskráin er aðeins til þjöppuð reynir Beygir að afþjappa henni og
varðveita .bin-skrána við hlið pakkans. Í skrifvörðum umhverfum getur hann
ekki varðveitt úttakið og afþjappar þá í minni við opnun. Með slóð eða
GAGNASKRA_SLOD má vísa beint á tilbúna gagnaskrá.
Afleiddir vísar eru byggðir í leti. undirbúa: true framkvæmir þann
undirbúning við opnun. afleitt: "skrá-minni" og afleitt: "skrá-mmap" reyna
að endurnýta .afleitt hliðarskrá milli ferla; skrá-mmap er aðeins tiltækt í
Bun. Ef hliðarskrá vantar eða passar ekki við gagnaskrána er hún leidd út aftur.
GAGNASKRA_SLOD velur gagnaskrá þegar slóð er ekki gefin.BEYGIR_AFLEITT velur afleiðsluham: reikna, skrá-minni eða skrá-mmap.BEYGIR_UNDIRBUA=1 undirbýr letivísa strax við opnun.Nánar í skjölun um opnaBeygi.
Nokkur almennari notkunardæmi er að finna í dæmi/:
# Birtir beygingartöflu
bun run ./dæmi/beygingartafla/beygingartafla.ts hestur
# Greinir uppflettiorð í texta
bun run ./dæmi/lemmari/lemmari.ts Það mælti mín móðir
dæmi/vefur/index.html er dæmi um notkun í vafra. Það
notar @yrda/beygir/vefur, sækir tvíundargagnaskrána .gögn/beygir.bin með
fetch og leitar í henni beint í vafranum. Vafrar leyfa almennt ekki slíka
hleðslu úr file://, svo keyra þarf einfaldan vefþjón til að veita vafranum
gagnaskrána:
bun run smíða:dreifingu
python3 -m http.server 4173
Opnaðu síðan http://localhost:4173/dæmi/vefur/.
Einföld afkastaviðmið eru í skriftur/viðmið.ts og
samanburðargrunnur í .viðmið/grunnlína.json.
bun run viðmið
bun run viðmið -- --grunnlína
Sömu skriftu má nota sem mark fyrir CPU-prófíl Bun, t.d.:
bun --cpu-prof --cpu-prof-md ./skriftur/viðmið.ts --prófíll=beygingarmyndir
Gagnasniðið hentar líka sem grunnur fyrir sérhæfð gagnasöfn sem þurfa sama
lesara en minna eða afmarkaðra innihald. Dæmið
dæmi/bín-kjarni/smíða.ts smíðar BÍN-kjarna úr
venjulegri gagnaskrá með því að halda aðeins eftir færslum þar sem
birting === "K". Árnastofnun lýsir
BÍN-kjarnanum sem einfölduðu, vísandi
úrtaki úr BÍN.
bun run ./dæmi/bín-kjarni/smíða.ts .gögn/beygir.bin .gögn/beygir-kjarni.bin
Úttakið er áfram venjuleg gagnaskrá sem má opna með opnaBeygi({ slóð }). Með
núverandi gögnum er slíkur kjarni um 3,35 MiB óþjappaður og um 0,72 MiB með
Brotli, samanborið við um 13,26 MiB / 3,21 MiB fyrir fulla gagnaskrá.
Nánari skjölun er á beygir.yrda.is.
Frumkóðinn er undir Apache License 2.0; sjá LICENSE. Ásetningur verkefnisins er í NOTICE. Gagnaskrá pakkans byggir á BÍN og er undir leyfi upprunagagnanna, CC BY-SA 4.0. Rétthafatilvísun, uppruni og lýsing á breytingum eru í GÖGN-OG-LEYFI.md.