Kirjoittaja Aihe: Mutukoodailen oikolukua...  (Luettu 18044 kertaa)

UbunTux

  • Käyttäjä
  • Viestejä: 2053
  • KubunTux
    • Profiili
Mutukoodailen oikolukua...
« : 06.10.26 - klo:07.38 »
Piakkoin, koittaa aika, jolloin toivottavasti vaikkapa Firefox saa paremman oikoluvun, joka ei nykyisellään ole häävi.

Projekti, jota olen tehnyt on siis pääasiassa seuraavanlainen:

Tavoite puskea jonkilainen oikoluku, jonka lisenssi ei tule olemaan este. Kaikki kunnia GPL:lle ymv, mutta en jaksa oikoluvun kanssa ainakaan vääntää lisenssistä.

Miten tämä on totetutettu tässä vaiheessa:
  • Toistaiseksi vain sanoja. Tarkoitus lajentaa.
  • Sanalistan luokitustietoineen saa Kotukselta lisenssillä CC BY 4.0.
  • Sanojen morfologian säännöt kaikkine kommervenkkeineen ohjelmoidaan tuotettuja sanoja vastaan.
  • En käytä koodia olemassaolevista projekteista, mutta käytän olemassaolevaa Omorfia luomaan taivutusmuotoja sanalistaa vastaan, jotka tarkastan Voikolla.
    Tämän jälkeen tehdään luokitukseen perustuva koodi. Toistetaan, kunnes sanalista on käyty läpi kokonaisuudessaan.
  • Tarkoitus jatkaa vielä tukea sanojen johdannaisilla ymv.

Projekti on ohjelmoitu Rustilla. Tarkoitus tehdä Firefoxiin lisäosa, joka osaisi käyttää WASM-koodia.

Kommenteja ja kritiikkiä. Toivottavasti pian löytyy repo.

UbunTux

  • Käyttäjä
  • Viestejä: 2053
  • KubunTux
    • Profiili
Vs: Mutukoodailen oikolukua...
« Vastaus #1 : 07.10.26 - klo:14.03 »
Miten on kannattaisiko morfologiasysteemin kanssa rakentaa keskustelemaan pieni neuroverkko tekemään korjausehdotuksia?  :o

UbunTux

  • Käyttäjä
  • Viestejä: 2053
  • KubunTux
    • Profiili
Vs: Mutukoodailen oikolukua...
« Vastaus #2 : 05.11.26 - klo:06.30 »
Oukkelis  doukkelis! Oikoluku toimii!!!





Pitää vielä siivoilla repoa.

Laitan demosivun johon voi kirjoitella ja lueskella  Gutenberg-tekstejäi pian ja pyrin julkaisemaan lisäosan piakkoin.

 Noin 2k sanan rimpsu tarkistettu n. 2 sekunnissa  omissa testeissä.

Ei tämä varmasti virheetöön  ole ja jokunen komitatiivi ymv saattaa puuttua.


Jere Sumell

  • Käyttäjä
  • Viestejä: 811
  • Talous, Hallinto ja Markkinointi (AMK, 2017),B.B.A
    • Profiili
    • Tietokone-blogi
Vs: Mutukoodailen oikolukua...
« Vastaus #3 : tänään kello 10:39 »
Voitko valaista minua?

Otetaan nyt esimerkkinä tuo Kotimaisten kielten tutkimuslaitoksen virallinen sanalista. Onko mahdollista parseroinnin jälkeen käymällä sanalistaa läpi muodostaa koneellisesti kielioppisäännöstö ja samalla lisätä poikkeukset omaan listaan, vai onko kielioppi "valmiiksi" ja omissa muuttujissaan?

Tuolla tavalla koko prosessin automatisoinnilla säästäisi aikaa, mitä sanalista pitäisi vain kerran käydä koneellisesti läpi ja tulokset olisivat generoituna poikkeama-listauksen lisäksi ohjelmaan, minkä kohderyhmä on loppukäyttäjät.
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

UbunTux

  • Käyttäjä
  • Viestejä: 2053
  • KubunTux
    • Profiili
Vs: Mutukoodailen oikolukua...
« Vastaus #4 : tänään kello 17:22 »
Elikä  otetaan näyte
aineeton      adjektiivi   34*C

Tämä adjektiivi taipuu säännön 34*C mukaan.

Tähän lyötyy lähteitä, kuinka taivutella. Toisaalta löytyy avoimen koodin omorfi, joka osaa taivutella sitä, joka helpottaa ja nopeuttaa tätä prosessia.

Jos me nyt vaikka etsitään kaikki 34*C mukaiset sanat voimme nähdä tietyn aihion, jonka mukaan se taipuu.

Tällöin ei tarvitse koodata kaikkia 34*C sanoja erikseen, vaan se voidaan hoitaa ohjelmallisesti.


Huomioitavaa näissä taivutusmuodoissa on se, että esimerkiksi vokaaliharmonian tulee säilyä, joten sen tunnistaminen pitää koodata ensin.

Sitten kun olemme tehneet kaikki luokat, on meillä kasassa kaikki muodot, joita on lopulta miljoonia (kun lasketaan kaikki sanat) ja kone on valmis.

Sitten vaikeampi osa on löytää sanat. Esimerkisi yö-> öinen ei ole niin yksinkertainen. Itse rakaisin sen kantakartoilla jotka ovat hash-funktiota jotka osoittavat sanan perusmuotoon ja koska olemme jo tehneet perusmuodon taivutuskoneen, voimme siis tarkistaa oikeellisuuden.

Esimerkki noista avain-arvopareista


aakkosellinen   aakkosellinen
aakkoselli   aakkosellinen
aakkosellise   aakkosellinen
aakkosellisi   aakkosellinen
aakkosellis   aakkosellinen
aakkosellist   aakkosellinen
aakkosellisemma   aakkosellinen
aakkosellisemm   aakkosellinen
aakkosellisempa   aakkosellinen
aakkosellisempi   aakkosellinen
aakkosellisemp   aakkosellinen
aakkosellisimma   aakkosellinen
aakkosellisimm   aakkosellinen
aakkosellisimpa   aakkosellinen
aakkosellisimpi   aakkosellinen
aakkosellisimp   aakkosellinen
aakkosellisin   aakkosellinen
aakkosellisint   aakkosellinen
aakkosellisuude   aakkosellisuus
aakkosellisuuksi   aakkosellisuus
aakkosellisuuk   aakkosellisuus
aakkosellisuuks   aakkosellisuus
aakkosellisuus   aakkosellisuus
aakkosellisuute   aakkosellisuus
aakkosellisuu   aakkosellisuus

Tämän ansioista ei tarvitse koodata kaikkia muotoja tauluun eli puhutaan tilansäästössä gigatavuja -> 15 megatavua.

Taustalla myös hyödynnetään tuon hash-funktion ominaisuuksia, joilla saavutetaan kokosäästöjä.

Sinänsä taulujen teko on raskas prosessi ja vie lähes 3 gigaa RAMia ja kestää muutaman minuutin, joten esikäännän ne levylle, ettei joka kerta  tarvitse tehdä sitä uudestaan.
« Viimeksi muokattu: tänään kello 18:49 kirjoittanut UbunTux »