GithubHelp home page GithubHelp logo

loknar / loka-ord Goto Github PK

View Code? Open in Web Editor NEW
15.0 6.0 7.0 11.32 MB

Libre database for icelandic words.

License: GNU Lesser General Public License v3.0

Python 99.84% Shell 0.04% Batchfile 0.12%
icelandic language dataset

loka-ord's Introduction

Loka-Orð

Frjálst gagnasafn yfir íslensk orð, beygingamyndir og samsetningu þeirra og fleira, undir frjálsu almenningseignarleyfi (e. public domain licence).

Gagnasafnið telur eftirfarandi fjölda orða:

ób.l kk kvk hk kjarna-orð kk kvk hk samsett-orð samtals
Nafnorð 1054 1056 813 2923 2591 3180 2732 8503 11426
Lýsingarorð 113 459 1333 1792
Sagnorð 883 484 1367
Töluorð 69 10 79
Fornöfn 43 8 51
Smáorð 292 217 509
Alls 4670 10555 15225
Sérnöfn kk kvk hk kjarna-orð kk kvk hk samsett-orð samtals
Eiginnöfn 1261 1238 9 2508 947 1228 6 2181 4689
Kenninöfn 4560 4558 4533 13651 13651
Miłlinöfn 192
Gælunöfn 71 46 117 34 20 2 56 173
Örnefni 11 38 30 79 268 262 235 765 844
Alls 2859 16690 19549

Samtals: 34774 orð.

179 skammstafanir.

Forkröfur (Requirements)

Python3.10 eða nýrra, pip og PyPI pakkar listaðir í skránni requirements.txt.

Þurfirðu eða viljirðu setja upp Python virtualenv í stað þess að nota system python (t.d. ef system python er stillt sem externally-managed-environment) þá geturðu útbúið sýndarumhverfi (e. virtual environment) með eftirfarandi skipun:

python -m venv env

þar sem env er nafnið á sýndarumhverfinu sem búið er til, samnefnd mappa verður til, þú virkjar það í núverandi skipanalínu með

source env/bin/activate

getur afvirkjað sýndarumhverfið með skipuninni deactivate. Athugaðu að þetta sýndarumhverfi er ekki sjálfkrafa virkjað þegar þú opnar nýja skipanalínu, þú þarft að velja/virkja það með source env/bin/activate.

Þú sækir og setur upp nauðsynlega pakka með

pip install -Ur requirements.txt

Notkun (Usage)

python main.py --help

Í upphafi ertu einungis með orðagögnin í formi textaskráa, þú þarft að smíða SQLite gagnagrunn og lesa öłl orðin inn í hann, og smíða síðan orðaforleit. Það er gert með skipuninni:

python main.py init

Þessi skipun jafngildir skipuninni python main.py build-db write-files build-sight md-stats, eða eftirfarandi runu skipana:

# smíða grunn
python main.py build-db
# skrifa orð úr grunni í textaskrár
python main.py write-files
# smíða orðaforleit
python main.py build-sight
# prenta út töluleg gögn á markdown sniði
python main.py md-stats

Ber að nefna að við núverandi útfærslu og fjölda orða (kringum 5600 orð) þá tekur init ferlið sinn tíma. Tölva með temmilega góðan vélbúnað og linux stýrikerfi klárar það á tæpum þremur mínútum, meðalgóð fartölva með linux þarf kringum sjö mínútur, þá hefur sýnt sig að á tölvum keyrandi windows stýrikerfi sé ferlið umtalsvert lengra, geti jafnvel tekið yfir hálftíma (skrifast líklega að mestu á mismunandi meðhöndlun fyrir transactions í SQLite miłli windows og linux).

TODO: laga þessa virkni, er brotin eins og er Bæta við orði í gegnum skipanalínu (CLI):

python main.py add-word

Orðaviðbætur

Fyrir lesendur sem hafa áhuga á að leggja til orð sem þykja vanta í grunninn þá er ofangreind add-word skipun til einhvers brúks en því miður er virknin til að bæta við orðum í gegnum skipanalínuna enn sem komið er mjög takmörkuð, og sé vilji til að bæta við mismunandi týpum sagnorða, samsettum orðum og fleira er eina leiðin enn sem komið er að kynna sér strúktúr JSON skráa fyrir sambærileg orð og handvirkt afrita viðeigandi skrá í nýja, breyta innihaldi hennar og keyra svo

python main.py update

sem jafngildir skipuninni python main.py build-db -ch write-files -tr build-sight md-stats.

Hægt er að endursmíða gagnagrunn með

python main.py init -r

sem jafngildir

python main.py build-db -r write-files build-sight md-stats

init með flaggið -r eyðir núverandi gagnagrunni og smíðar síðan nýjan útfrá orðaskrám.

Athugið að þegar sett er saman JSON skrá fyrir samsett orð þá þarf ekki að ganga frá beygingarmyndum þar sem þær eru leiddar út frá upplýsingunum í "samsett" listanum. Dæmi: þegar ég bætti við orðinu "hóflegur" var nóg að sjá til þess að ałlir orðhlutar orðsins væru til staðar og útbúa síðan svoútlítandi skrá og vista sem lysingarord/hóflegur.json:

{
	"orð": "hóflegur",
	"flokkur": "lýsingarorð",
	"samsett": [
		{
			"mynd": "hóf",
			"samsetning": "stofn",
			"kennistrengur": "no-hóf-hk"
		},
		{
			"kennistrengur": "lo-legur-ó"
		}
	],
	"kennistrengur": "lo-hóflegur",
	"hash": "tba"
}

svo þegar ég keyrði update þá bættust beygingarmyndirnar við út frá upplýsingunum í "samsett" listanum.

Gildið í "hash" þarf að vera strengur sem er ekki tómur, þetta gildi er uppfært með hakkagildi sem endurspeglar gögn orðsins þegar update og/eða write-files er keyrt, svo að fyrir sömu gögn verður hakkagildið það sama, og þegar gögnin breytast þá breytist hakkagildið.

Athugið að kröfur til skráarnafna eru mismunandi miłli orðflokka, til dæmis þurfa nafnorð að hafa kyn orðsins í skráarnafni, þá eru "ósjálfstæð" orð (notað fyrir orðhluta sem ekki eru látnir standa einir) með í skráarnafni, og þau orð sem eru sérstaklega aðgreind með "merkingu" innihalda merkinguna í skráarnafni á sniðinu -_merking_ (sjá t.d. skrána mæla-_segja_.json).

Orðaleit

Til að athuga hvort orð sé til staðar í grunni er hægt að gera uppflettingu í smíðuðum gagnagrunni með tólum að eigin vali, leita að JSON skrá með nafni sem inniheldur umrætt orð, eða með því að smíða sjón fyrir sjáanda (e. sight for seer):

python main.py build-sight

ofangreind skipun býr til forsmíðaða orðauppflettingu útfrá orðagögnum í JSON skrám og vistar í lokaord/database/data/disk/lokaord/sight.pointless (eða lokaord/database/data/disk/lokaord/sight.pickle á windows), þessa forsmíðuðu leit þarf að endursmíða þegar JSON skrár hafa breyst, en er svo hægt að nota fyrir uppflettingu á stökum orðum:

python main.py search "orð"

eða fyrir heilu setningarnar:

python main.py scan-sentence "Hér er haugur orða í hóflega langri setningu."

einnig er stytt nafn ss fyrir þessa skipun, þ.e. python main.py ss "Hér er setning.".

Þægilegri keyrsluskipun

Til þæginda er hægt á linux/unix að skilgreina alias eins og til dæmis

alias lokaord="$HOME/repos/loka-ord/bin/lokaord"

og vista í .bashrc eða sambærilegri skrá, þá er hægt að spara sér að þurfa að skrifa endalaust python main.py og skrifa í staðinn einfaldlega lokaord. Fyrir Windows er hægt að notast við .bat skrána á sambærilegan hátt og bin/lokaord skriptuna, þ.e. bæta henni í path eða útbúa sambærilegt alias á Windows.

Smíða allt uppá nýtt eða einungis breytingar

Eftirfarandi skipun endursmíðar gagnagrunn, skrifar út í skrár, byggir sjón og prentar út tölulegar upplýsingar í formi markdown töflu eins og þeirrar sem sýnd er ofar í þessari textaskrá.

lokaord build-db -r write-files build-sight md-stats

Hér er svo skipun til að færa einungis gögn úr breyttum skrám í grunn og skrifa svo aftur í skrár breytt orð (notar git, og svo Edited tímaskráningu á orðum sem er uppfærð þegar orð í grunni breytast)

lokaord build-db -ch write-files -ts "2023-04-20T22:30" build-sight md-stats

þar sem tímapunkturinn "2023-04-20T22:30" tilgreinir hve gamlar breytingar á orðum eigi að skrifa úr grunni í orð (til þæginda stendur flaggið -to og gildin "last2min", "last10min" og "last30min" einnig til boða, sem og flaggið -tr fyrir tímapunkt upphafs núverandi keyrslu).

Frávik frá hefðbundinni íslensku (Deviances from traditional icelandic)

Í grunninum eru frávik frá hefðbundinni íslensku þegar kemur að skrift orða sem innihalda tvöfalt L. Þá eru þau "tvöfalt-L" orð sem borin eru fram með svoköłluðu klikk-hljóði skrifuð með "łl" í stað "ll", þ.e. fyrra ełlið er hið pólska Ł. Þetta frávik er innleitt með það í huga að geta greint á miłli orða eins og "galli" (samfestingur eða flík) og "gałli" (vankantur eða brestur).

Tungumál breytast og þróast. Samhliða því að leggja áherslu á að vanda okkur við notkun tungumáls okkar verðum við að vera opin fyrir breytingum sem bæta það eða leysa vandamál við notkun þess.

Ég tel að geta til að greina á miłli "tvöfalt-L" orða sem borin eru fram með klikk-hljóði og annarra sé mjög nytsamleg og jafnvel nauðsynleg þegar kemur að orðhugbúnaðartæknivæðingu. Slík geta (útfrá orðinu stöku, þ.e. þurfa ekki að leiða það út frá textasamhengi) mundi auðvelda til muna smíði talgervils og málgreinis.

Orðframlög (Contributing)

Til ykkar sem hafið hug á að leggja til orð í grunninn!

Mikilvægt er við framlag orða að ekki sé um afritun úr öðrum orðagrunnum að ræða er heyra undir útgáfuskilmála sem þykja ósamrýmanlegir almenningseignarleyfi þessa verkefnis.

Orðagjöfum ber að tryggja að orð sem lögð eru til verkefnisins séu þeim frjálst að gefa, þá er öruggast að orðin komi beint úr höfðum þeirra sem reiða þau fram.

Orð sem bætt er í grunninn heyra undir almenningseignarleyfi verkefnisins og verða því almenningseign.

Viðhaldari (Maintainer)

Hæ, og takk ef þú last svona langt. Ég hef lagt grunn að lokaorð orðagrunninum og gef hann hér út undir LGPLv3 leyfi. Leyfið vel ég vegna þess að ég vil að hverjum og einum sé frjálst að smíða og nota grunninn á hvern þann hátt sem viðkomandi þóknast. En samhliða óska ég þess að hverjar þær breytingar á virkni, gögnum eða gagnastrúktúr orðagrunnsins séu gefnar út undir sama LGPLv3 leyfi, svo að viðbætur eða breytingar eins notanda geti gagnast öðrum notendum sem grunninn nota.

@Loknar

loka-ord's People

Contributors

loknar avatar wolfcoder13 avatar arnfada avatar hannespetur avatar natan-orn avatar cyborgpatrick avatar gudmundurmar avatar gunnarsnorri avatar helgakro avatar

Stargazers

Haukur avatar  avatar Hugi Hlynsson avatar Anatoly Chernov avatar Neptúnus avatar Matt avatar  avatar Sveinbjorn Thordarson avatar Brian Suda avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

Lucian avatar  avatar  avatar  avatar Kostas Georgiou avatar  avatar

loka-ord's Issues

Samsett orð, "beygingar" stiłling fyrir lýsingarorð og sagnorð

Nú þegar er til staðar möguleiki fyrir orðhluta samsettra orða, að tilgreina hvaða beygingar skuli nota fyrir samsetta orðið, sé það nafnorð eða sérnafn.

Dæmi um slíkt orð er til dæmis orðið fjármagn:

{
	"orð": "fjármagn",
	"flokkur": "nafnorð",
	"kyn": "hk",
	"samsett": [
		{
			"mynd": "fjár",
			"samsetning": "eignarfalls",
			"kennistrengur": "no-fé-hk"
		},
		{
			"beygingar": ["et-ág", "et-mg"],
			"kennistrengur": "no-magn-hk"
		}
	],
	"et": {
		"ág": ["fjármagn", "fjármagn", "fjármagni", "fjármagns"],
		"mg": ["fjármagnið", "fjármagnið", "fjármagninu", "fjármagnsins"]
	},
	"kennistrengur": "no-fjármagn-hk",
	"hash": "282d9c54185fb643b9a501afe9ca807584961bfd5f046b9b9ba935e0aaa0efe6"
}

Orðið magn hefur beygingar í eintölu og fleirtölu, en fyrir orðið fjármagn eru tilgreindar beygingar et-ág og et-mg, og samsetta orðið tekur þá einungis þær beygingar. Þetta hefur verið mikið notað fyrir nafnorð og sérnöfn.

{
	"orð": "magn",
	"flokkur": "nafnorð",
	"kyn": "hk",
	"et": {
		"ág": ["magn", "magn", "magni", "magns"],
		"mg": ["magnið", "magnið", "magninu", "magnsins"]
	},
	"ft": {
		"ág": ["mögn", "mögn", "mögnum", "magna"],
		"mg": ["mögnin", "mögnin", "mögnunum", "magnanna"]
	},
	"kennistrengur": "no-magn-hk",
	"hash": "9b64db4a1560c2923b5be21aa1bc9fb3b59029cfa3e29efc91c0a44f7cbda9f3"
}

Nú hef ég rekið mig á að þörf er fyrir svona stiłlingarmöguleika fyrir samsett lýsingarorð og sagnorð líka. Dæmi um slík orð eru orðin "örlítiłl" og "örvænta".

Núverandi útfærsla fyrir beygingar nafnorða/sérnafna er að hafa "beygingar" lykil sem inniheldur lista með strengi þeirra beyginga sem nota skal. Í gagnagrunni er þetta geymt sem 4 boolean gildi í töflunni SamsettOrdhluti.

Pælingin er eins og er að bæta við eftirfarandi valmöguleikum fyrir lýsingarorð:

frumstig
frumstig-sb
frumstig-vb

frumstig-sb-et   - x
frumstig-sb-ft   - x
frumstig-vb-et   - x
frumstig-vb-ft   - x

miðstig

miðstig-vb-et   - x
miðstig-vb-ft   - x

efstastig
efstastig-sb
efstastig-vb

efstastig-sb-et   - x
efstastig-sb-ft   - x
efstastig-vb-et   - x
efstastig-vb-ft   - x

og eftirfarandi valmöguleikum fyrir sagnorð:

germynd
germynd-persónuleg   - x
germynd-ópersónuleg   - x
germynd-spurnarmyndir   - x
miðmynd
miðmynd-persónuleg   - x
miðmynd-ópersónuleg   - x
miðmynd-spurnarmyndir   - x
lýsingarháttur
lýsingarháttur-nútíðar   - x
lýsingarháttur-þátíðar   - x

Fyrir ofan eru valmöguleikar merktir með x eiginlegir flokkar sem geymdir yrðu í grunni sem boolean gildi á sama hátt og núverandi útfærsla fyrir nafnorð/sérnöfn er.

En þá eykst þessi fjöldi booleans úr 4 í (4 + 10 + 8) = 22. En það er kannski allt í lagi? Væri hægt kannski að samnýta booleans eftir því hvaða týpu af orði er um að ræða, en ef til viłl ekki ómaksins virði að flækja hlutina þannig. Önnur pæling væri að aðskilja þetta úr SamsettOrdhluti töflunni ..

Ałlavega .. rak mig á þetta í gærkvöldi og er svolítið enn að spá í hvernig best sé að gera þetta .. innlegg velkomin með ábendingum og/eða hugmyndum.

Bæta við íslenskum nöfnum úr mannanafnaskrá

Hægt er að fá lista yfir leyfileg nöfn hér: https://island.is/leit-i-mannanafnaskra

Hægt er að setja filter á kyn, og hægt er að slá * í leitarinntakið til að fá listuð öll nöfn.

Því miður eru beygingarmyndirnar ekki útlistaðar, svo finna þarf útúr því hvernig beygingarnar eru.

Hægt að fletta upp úrskurðum mannanafnanefndar á vef Stjórnarráðsins.

Nytsamleg síða til að fletta upp beygingarmyndum norrænna nafna: https://www.nordicnames.de/wiki/Main_Page

Karlmannsnöfn

  • A*
  • Á*
  • B*
  • D*
  • E*
  • É*
  • F*
  • G*
  • H*
  • I*
  • Í*
  • J*
  • K*
  • L*
  • M*
  • N*
  • O*
  • Ó*
  • P*
  • R*
  • S*
  • T*
  • U*
  • Ú*
  • V*
  • X*
  • Y*
  • Ý*
  • Þ*
  • Æ*
  • Ö*

Kvenmannsnöfn

  • A*
  • Á*
  • B*
  • D*
  • E*
  • É*
  • F*
  • G*
  • H*
  • I*
  • Í*
  • J*
  • K*
  • L*
  • M*
  • N*
  • O*
  • Ó*
  • P*
  • R*
  • S*
  • T*
  • U*
  • Ú*
  • V*
  • X*
  • Y*
  • Ý*
  • Þ*
  • Æ*
  • Ö*

Bæta við öllum orðum sem finnast í hinu íslenska lagasafni

Sjá lagasafn Íslands á vef Alþingis: https://www.althingi.is/lagasafn/kaflar/nuna/

Þegar búið er að smíða grunninn og forleit er hægt að pípa bara inn greinunum í lokaord skipanalínutólið til að finna þau orð sem vantar, dæmi:

lokaord ss "Alþingi og forseti Íslands fara saman með löggjafarvaldið. Forseti og önnur stjórnarvöld samkvæmt stjórnarskrá þessari og öðrum landslögum fara með framkvæmdarvaldið. Dómendur fara með dómsvaldið."

Kaflar lagasafns

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

Bæta í útfærslu að geta geymt upplýsingar yfir þekktar skammstafanir

Bæta í útfærslu að geta geymt upplýsingar yfir þekktar skammstafanir, og geta útleitt þær í orð, eitt eða fleiri orð þar sem margar skammstafanir eru stytting á orðasamsetningu, til dæmis o.þ.h. -> "og þess háttar"

  • Útfæra gagnastrúktúr
  • Importer/exporter virkni
  • Bæta útfærslu við í sjáanda til að leiða út orð frá skammstöfun

Gögn um skammstafanir sem bæta mætti síðan við:

laga add-word cli

laga skipanalínutólið sem gerir notanda kleift að bæta við nýjum orðum

láta það nota nýju handlerana til að bæta við orðum
geta bætt við orðum í öłlum orðflokkum
kannski geta breytt orðum sem eru nú þegar í grunninum með því?
geta skilgreint/smíðað samsett orð?
gera notendavænna? nota kannski eitthvað tól sem typer býður uppá? https://typer.tiangolo.com/tutorial/prompt/

Bæta við nýjum mannanöfnum 2024-03

yfirlit yfir ný nöfn má t.d. sjá í eftirfarandi frétt: https://www.ruv.is/frettir/innlent/2024-03-14-ma-heita-hendrix-snaefellsjokuls-og-sammi-en-ekki-aftur-407323

og þessari https://www.mbl.is/frettir/innlent/2023/12/07/nu_ma_heita_strympa_og_doddi/

þó er skrítið að í uppflettingum á úrskurðum mannanafnanefndar á vef stjórnarráðsins eru eingungis úrskurðir fram í október 2023 .. spurning af hverju það stafar ... þessir úrskurðir ættu auðvitað alltaf að skila sér þar inn ...

https://www.stjornarradid.is/gogn/urskurdir-og-alit-/$LisasticSearch/Search/?SortByDate=True&SearchQuery=&Ministries=&Committee=Mannanafnanefnd&Year=

en ałlavega, ný nöfn tilgreind í ofangreindu RÚV fréttinni eru eftirfarandi:

  • Luka
  • Náttrún
  • Terra
  • Eymir
  • Snæfellsjökuls (millinafn)
  • Konn (millinafn)
  • Skaftfeld (millinafn)
  • Bessa
  • Smíta
  • Tótla
  • Fríðhólm (millinafn)
  • Íena
  • Eyrarrós
  • Þruma
  • Sammi
  • Paolo
  • Æví
  • Ár
  • Veronica
  • Hendrix
  • Alífa
  • Þórhannes
  • Mánarós
  • Adriana
  • Laki

spurning að senda fyrirspurnartölvupóst á mannanafnanefnd varðandi hvers vegna vanti úrskurði nýrri en 2023-10 ..

edit: það er líka RSS feed, og það virðist vera að uppfærast ... þó sjálfur vefurinn geri það ekki ... https://www.stjornarradid.is/extensions/news/rss/Mannanafnanefnd.rss

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.