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@nexteða:
npm install @yrda/beygir@nextBeygir notar engin ytri forritasöfn við inningu og því innsetur ofangreint aðeins forritasafnið sjálft ásamt gagnaskránni.
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" }]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.)
Ítarlegri notkunardæmi eru útlistuð neðar. Nánari API-skjölun er á beygir.yrda.is.
Beygir gerir greinarmun á uppflettiorði og beygingarfærslu:
Uppflettiorðer fletta með BÍN-auðkenni, t.d.hestur.Færslaer ein greind beygingarmynd flettu, t.d.hestimeð 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 leiddir út eftir þörf. 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 er hún leidd út aftur. Með staðfesta: true er hún
líka borin saman við gagnaskrána.
GAGNASKRA_SLODvelur gagnaskrá þegarslóðer ekki gefin.BEYGIR_AFLEITTvelur afleiðsluham:reikna,skrá-minnieðaskrá-mmap.BEYGIR_UNDIRBUA=1undirbýr afleidda ví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
# Smíðar SQLite-gagnagrunn fyrir almennar SQL-fyrirspurnir
bun run ./dæmi/sqlite/smíða.ts .gögn/beygir.bin .gögn/beygir.sqlitedæmi/sqlite/smíða.ts smíðar
SQLite-gagnagrunn með töflunum uppflettiorð, beygingar og lýsigögn, auk
sýnarinnar kristínarsnið. Með --án-vísa má smíða minni grunnskrá og
smíða.ts --bæta-vísum bætir vísum við. Tilbúinn grunn án vísa má einnig sækja
úr nýjustu GitHub-útgáfu verkefnisins sem
beygir.sqlite
eða
beygir.sqlite.br,
ásamt SHA-256 hliðarskrám og leyfisupplýsingum. Nánari lýsing á sniði og vísum
er í
dæmi/sqlite/README.md.
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 4173Opnað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ínaSö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=beygingarmyndirGagnasnið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á.
Beygir hefði að sjálfsögðu aldrei orðið til án Beygingarlýsingar íslensks nútímamáls (BÍN) og þess mikla þrekvirkis sem Kristín Bjarnadóttir, ritstjóri BÍN, og samstarfsfólk hennar hjá Stofnun Árna Magnússonar í íslenskum fræðum hafa unnið við að taka BÍN saman, opna gagnasafnið og halda því við. Þau eiga fyrir það ómældar þakkir skildar.
Formleg rétthafatilvísun, uppruni, leyfi og lýsing á breytingum eru í GÖGN-OG-LEYFI.md.
- BÍN, Mímisbrunnur er uppruni þeirra gagna sem Beygir byggir á.
- Kristínarsnið er skjölun Árnastofnunar á ítarlega BÍN-sniðinu sem Beygir les.
- BinPackage frá Miðeind er rótgróið
uppflettingasafn fyrir BÍN í Python, gefið út á PyPI sem
islenska. Það er mjög góður kostur þegar unnið er beint í Python. Beygir er þó þróað með það í huga að gagnasniðið sjálft er frá upphafi óháð tungumáli. Enn sem komið er fylgir ekkert tilbúið Python-viðmót, en Rust-lesari með C ABI er í vinnslu til að einfalda bindingar fyrir allflest forritunarmál.
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.