|
Kas eesti keele jaoks on olemas mõnda avatud lähtekoodiga stemmimise algoritmi? Nimelt tahaks natuke edasi arendada ühe e-poe otsingu algoritmi. Hetkel on nii ,et kui otsida näiteks sõna "klaviatuurid" siis ei leia sõna "klaviatuur". Samuti võiks töötada ka erinevad käänded ja pöörded - ehk kui kasutaja otsib "klaviatuurile", "klaviatuuriga", "klaviatuurilt" jne, siis oleks vaja kätte saada sõna algvorm "klaviatuur" ja otsida selle järgi. Miski lihtsama stemmeriga saaksin vist ka ise hakkama, aga kardan et ei ole piisavalt pädev tundma kõiki eesti keele nüansse, et seda korralikult tööle saada. |
|
Kasuta näiteks Filosoft'i lemmatiseerijat aadressil http://www.filosoft.ee/lemma_et/ Oma teksti indekseerimisel viska esmalt välja kõik kirjavahemärgid, reavahed jms. Seejärel küsi iga sõna jaoks eelpool toodud lehe abil sõna lemma(d). Ühe vastuse korral on lihtne, mitme puhul pead juba nuputama, mis oleks parim lahendus. Saadud lemmadest koosnevast tekstist tee mingi vahendiga (andmebaas, Lucene, vms.) täistekstiindeks. Otsingu tegemisel käitu sarnaselt. Otsingusõnad puhasta sama algoritmi abil kirjavahemärkidest, teisenda sõnad lemmadeks, ja otsi saadud tulemust oma täisteksiindeksist. Järgmine samm on kasutada ka sünonüümisõnastikku. Indeksi loomine käiks ikka endiselt, aga otsingu tegemisel teisenda esmalt sõnad lemmadeks, siis leia kõikidele sõnadele sünonüümid ja kuuluta need omavahel ekvivalentseteks. Seejuures saavad piiravaks juba su valitud täisteksti-andmebaasi võimalused. Ülejärgmine samm, et veel paremat tulemust saada, oleks lemmade leidmisel esmalt analüüsida tervet lauset. Sama kirjapildiga sõna võib olenevalt kontekstist laheneda erinevaks lemmaks. Filosoftil on selle jaoks ka vahend olemas. Ehk siis. Eksperimentaalselt saaks lihtsalt üle veebi päringuid tehes ka mingi tulemuse tööle. Päris kindla lahenduse jaoks peaks siiski näiteks Filosoftiga läbi rääkima - ehk on nad siin kirjeldatud lahendusest ise ka huvitatud? |
|
Eesti Keele Instituut on avaldanud oma morfoloogilise analüüsi tarkvara, mis peaks leidma iga sõna võimalikud algvormid: http://www.eki.ee/tarkvara/analyys/ Ma ei ole seda ise proovinud - kui keegi on, siis palun jagage kogemusi! Teine võimalus selle probleemi lahendamiseks oleks otsingus kasutada mitte ainult täpselt sisestatud sõna, vaid mõnda spellerites kasutatavat algoritmi sarnaste sõnade leidmiseks, näiteks http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance EKI tarkvara töötab kenasti Delphi all, demo_unit.pas fail, sealt analyysi funktsioon, mis omakord kutsub välja ana.dll, selle lähtekoodid ka olemas. Variant, et kirjutad algoritmi ümber scripti keelde või kutsud selle dll välja, samas see DLL ei paista eriti threadsafe.
(Jun 05 '10 at 16:22)
Ingmar Tammeväli
|
|
Kõige lihtsam on lõigata julmalt tuntuid pöördelõppe maha. See ei aita ainult erandite puhul (tuba -> toa), aga enamus juhtudel peaks asi toimima.
Kui kogemata lõikad sõna algvormi lühemaks, siis pole hullu kuna otsing peaks ikka üles leidma. |
|
Seda tükki, mida Sa otsid, nimetatakse lemmatiseerijaks. See on siis vahend, mille abil tagastatakse igast sõnavormist selle võimalikud algvormid (n: vorm "teed" annab 2 algvormi: tee ja tegema). Sellise asja on valmis kirjutanud Filosofti tegelased ja see asi on riigi poolt avalikus sektoris kasutamiseks ära ostetud. Erasektoril paraku sellele asjale reaalne ligipääs puudub. Küsisin kasutamise võimalust Filosoftilt täpselt samal eesmärgil, aga kasutusõigus oli suurusjärgu või paari võrra kallim kui see ühe veebipoe otsingumootori komponendina ennast õigustada võiks. Erinevalt Egonist arvan, et ülesanne ise on kaugel triviaalsusest (näiteks tüvevokaal on esimene pähkel, mis pähe kargab, või mis saab lõppude eemaldamisel sõnadest "laud" ja "kasse") ja Filosofti tüübid on kahtlemata ära teinud suure ja olulise töö. Jääb üle küsimus, kuidas oleks lemmatiseerija võimalik reaalselt ka kasutusse tuua? Kindlasti tasub uurida ka EKI pakutavad morfoanalüüsi programmi, võimalik, et sellest annaks arendada mingi vabalt kasutatav teek. Ei, sugugi ei arva, et ülesanne oleks triviaalne. Ma arvan lihtsalt, et antud olukorras piisab mingist 'hack'-st, mis sarnast asja teeb. Loomulikult võiks mingi eriti keeruka süsteemi külge ehitada, aga kui 70% olukordadest katetud ja ülejäänud 30% pärast keegi hätta ei jää - siis pole väga mõtet. (numbrid on lambist)
(Jul 02 '10 at 22:33)
egon ♦♦
'Laud' lõpu eemaldamisel saaks 'lau', ning seda kasutades regexp-na stiilis 'lau.{0,3}'... leiaks veel sõna 'laul', 'lauk'... Loomulikult saaks 'hack' ka keerulisemaks teha, et lühikeste sõnade puhul ainult lõigata "lühikesi lõppe". Aga eks see oleneb rohkem vajadusest.
(Jul 02 '10 at 22:42)
egon ♦♦
|
|
http://www.eki.ee/keeletehnoloogia/tarkvara.html Filosofti lehelt ei saa alla laadida, vaid EKI omalt. ESTMORF, eesti keele morfoloogiline süntees ja analüüs. ESTMORF leiab tekstis esinevate sõnavormide võimaliku(d) tüve(d) ning määrab, millises käändes või pöördes sõna on. See on vist üks mõistlikumaid lahendusi. Mul jookseb juba tükimat aega ESTMORF Windowsi virtuaalis, kust siis pakub üle Gearmani liidese teistele rakendustele lemmatiseerimis ja trükivigade parandamise "teenust." Päeva jooksul genereerib kümneid tuhandeid lemmasid täiesti edukalt.
(Dec 08 '11 at 22:02)
Andris
|

See pole päris vastus, sellepärast panen ta siia kommentaarina. Igatahes räägib Jaak Pruulmann-Vengerfeldt 22.06 umbes kell 11:15 TÜ ATI seminaris (Tartus, J.Liivi 2-317) oma magistritööna tehtavast eesti keele spellerist, kus muuhulgas sees ka eesti keele morfoloogia formaalne kirjeldus.