sobota 22. novembra 2008

Trdlo News #01

Už štvrtý krát mi padol Firefox pri písaní tohoto zápisku a začína ma to štvať (aj napriek priebežnému ukladaniu mi tam zase nič neostalo). Posledný týždeň som pracoval na frameworku Trdlo a podarilo sa mi nájsť pár drobných, ale podstatných chýb. V novej verzii budú dve zásadné novinky, ktoré by mohli byť užitočné.
Odkaz
Prvou je využitie existujúceho slovníku, aby sa ku známym slovám už nehľadali ekvivalenty. Ak by sme mali nediferenčný slovník, tak by sme ho pripojili presne sem :) Samozrejme, že takýto slovník nemáme.

Ale máme druhú novinku, ktorá nám ho vytvorí. Niečo podobné česko-slovenskému slovníku sa dá získať z názvov článkov z wikipédie. Vezmeme celú wikipédiu v zdrojovom jazyku (sk) a nájdeme odkazy vedúce na cieľový jazyk (cs). Pre istotu však vezmeme len jednoslovné výrazy a slová, ktoré sa neprekladajú rovnako, pretože tie nám neprinesú žiadnu novú informáciu (takéto slová nájdeme vždy). Následne získame ~3000 párov slov, ktoré sa pri použitom slovenskom wordliste prejavia v pokrytí 1550 slov (~2%). Keďže očakávame, že takýto slovník má veľmi vysokú presnosť, tak ho zaradíme na prvé miesto. Po vypočítaní nových slovníkov sa dostávame do situácie, že reálne zlepšenie predstavuje asi 200 slov. Všetky ostatné slová by sme našli pomocou existujúcich metód.

Treťou novinkou, ktorá sa ukázala ako nepoužiteľná je spraviť prienik medzi slovami, ktoré získame prácou nad celými slovami a prácou nad spoluhláskami (v danom slove). Tu sa ukázalo, že výsledok je menej kvalitný :( Ak rátame aj pokus s wikipédiu, tak to sú dve slepé cesty na tento týždeň.

nedeľa 8. júna 2008

Článok: Automatic Lexical Acquisition from Raw Corpora

Nakoniec sa mi úspešne podarilo zložiť SDZ a tak sa možem viac venovať užitočnejšej práci. Nedávno sa mi dostal článok Automatic Lexical Acquisition from Raw Corpora: An Application to Russian. Cieľ je veľmi podobný ako u mňa. Z neoznačkovaného korpusu vytiahnuť čo sa dá.

Morfologické pravidlá sú zapisané ako regulárne výrazy s tým, že sa kladú podmienky na tvar v korpuse; transformácia na základný tvar s využitím toho, čo sa získalo v reg. výraze tj. je možné vkladať znak (názve - názov) a nepotrebujeme tvoriť nové vzory ako v ajke. V podstate celý systém je popísaný len týmito pravidlami a vzory v tradičnom chápaní nie sú. Konflikty riešia veľmi jednoducho, odstránia takéto pravidlá. V podstate veľmi podobne som to riešil aj ja s prídavnými menami. Pri podstatných menách sa mi zdá, že to nepojde len tak využiť, pretože ten prekryv je výrazne väčší. Celý pokus u nich prebiehal na korpuse, ktorý obsahoval len korektné tvary (aby to šlo overovať) a jednalo sa vlastne len o zoznam slovných tvarov.

Pekný sa mi zdal akurát ten nápad s regulárnymi výrazmi a zrušenie vzorov. Na druhej strane sa mi zdá, že moj nápad s extrakciou je omnoho sofistikovanejší :) Či už použitím komplikovanejšieho formalizmu na vzory, ale aj pripravovanej extrakcie v prípade konfliktov.

nedeľa 4. mája 2008

Zhrnutie: Prídavné mená z korpusu

Písanie článku som nakoniec vzdal, pretože sa mi nechcelo :( Ale, aby som nezabudol na dôležité fakty, tak ich uvediem sem.

Hľadal som prídavné mená, ktoré sa nachádzajú za predložkami v aktuálnej verzii SNK. Celkovo som spracoval 21,5 milióna konkordancií, z ktorých som získal 38632 kandidátov na prídavné mená (tj. vzor cudzí, páví, pekný). Prechádzal som postupne predložku za predložkou a vytváral morfologickú databázu (lema : vzor, kde lema je najbližší základ napr. najkľudnejší), žiadne vzťahy medzi slovami som zatiaľ nehľadal. Označoval som slová ako preklepy, alebo české slová. Niekedy to určite nebolo objektívne a preto sú v databázi aj nesprávne slová (akurát označené). V úvode sa chybovosť pohybovala okolo 5%, ale so zväčšujúcou morfologickou databázou sa toto číslo (zhruba od 20.000 kandidátov) zväčšovalo. Pri poslednej predložke 'v' (5.3 mil) to narástlo až na takmer 50%, zisk už len asi tisíc nových prídavných mien. Tj. táto metóda nám toho bez zlepšenia už o veľa viac nedá. Zlepšovať sa určite dá metóda, ktorá vyberá z možných lemát to správne. K tomu, či by to ešte malo zmysel sa dostanem.

Korektných prídavných mien v databázi: 34662 (89.7%)
Nekorektných prídavných mien v databázi: 3970 (10.3%)

Hlavné zdroje problémov sú: preklepy, slová bez diakritiky, české slová a nevyriešené konflikty s podstatnými menami mužského rodu s poslednou slabikou dlhou (napr. areály, generály). Reálne sa dajú riešiť len tie konflikty a preklepy sa dajú nachádzať poloautomaticky [bohužiaľ tam obvykle padne aj veľa správnych slov].

Porovnanie výsledkov s existujúcimi databázami. Porovnávať sa dá s PSP, KSSJ a slovenským ispellom. Keďže zdrojové dáta mám len z ispellu (a len ten má podobné chápanie lemy), tak porovnanie s ním. Ispell pozná 14.694 prídavných mien, Langusta ich má 34.662. Pri správnych slovách sa prekrývame v 10.120 prípadoch (69%). 84 slov z langusty (0.5%) má ispell medzi korektnými, niektoré z nich sú nesprávne v ispelli, väčšina z nich v languste [opravím, keď bude fungovať elektronický KSSJ; a pošlem bugreport do ispellu].

Keďže z neoznačkovaného korpusu sa nedá príliš povedať, že ktoré slová sú prídavné mená, tak som si vytiahol najfrekventovanejšie slová, ktoré končia na -ný (tj. budú to prídavné mená v základnom tvare). Pri TOP100 nepoznám len jedno slovo, zlý, pretože sa kontroluje dĺžka poslednej slabiky kmeňa a tú tam nenájde. Pri TOP1000 sa nenájde 22 slov (z toho je 9 preklepov). Pri TOP10.000 sa nenájde 734 slov (z toho je preklepov ~118). Pokrytie (bez preklepov) sa pohybuje na úrovniach 99%, 98.7%, 93.7%. Pri takto vysokých číslach je otázne, či vymýšlať nejaké komplikovanejšie metódy :) Očakávam, že pri podstatných menách, to bude nutné, ale radšej sa nimi začnem zaoberať až vtedy, keď to bude treba.

štvrtok 24. apríla 2008

Nedočkavosť

Síce som si chcel dať pár dní pauzu, ale nepodarilo sa :) Takže rovno včera som sa pustil do druhej fázy. Upravil som program, tak aby akceptoval časť značky zadanú nie ako reťazec, ale ako regulárny výraz. To znamená, že sa to už dá používať aj na hádanie značiek. Samozrejme, že by to chcelo viac vzorov, ale zatiaľ to potrebujem len na dva pády pri predložkách. Existujú síce predložky s tromi pádmi, ale výskyty sú celkom o ničom.

Prepočítal som predložky o, na, pred, vo (pôvodne som myslel, že tam mám aj v; takže to až zajtra). Predložky pred a vo (500K a 700K výskytov) priniesli rapídny nárast preklepov v nespracovanej časti (15-20%) a zhruba 800 nových prídavných mien. Predložka o ich dala 2 tisíc a pri predložke na (~4M) ich na mňa čaká ďalších takmer 6 tisíc. Posledná veľká predložka, ktorá ostáva je v (~5M).

Začal som písať článok na konferenciu, ale príliš sa mi do toho nechce. Takže očakávam, že keď sa vyspím, tak sa pokúsim využiť vzory na tvorbu vzťahov medzi slovami (stupňovanie, negácia). Toto by teoreticky nemal byť žiaden väčší problém, ale človek nikdy nevie. Omnoho väčší problém mi robí prefixácia, pretože mi je jasné, že minimálne číselné prefixy by sa mali dať nejako skladať. Na strane druhej to znamená povedať, že popisovať morfológiu čisto cez systém vzorov je chobotina. Ledaže by som to popísal vzorom :)

utorok 22. apríla 2008

Koniec prvej etapy práce s prídavnými menami

Dnes sa mi podarilo prejsť aj posledné prídavné mená (predložka s, vzor pekný) z prvej etapy. V nej som sa zameral na prídavné mená (bez vzoru otcov/matkin, ktorý sa v podstate tvorí automaticky), ktoré sa spájajú s niektorou z jednopádových predložiek. Takže krátke zhrnutie: 27940 kandidátov na dvojicu lemma:vzor, z nich bolo správnych 26104 (podľa mňa, ale skutočné čísla budú asi dosť podobné) = ~93.5%. Chybovosť sa od počiatku pohybovala na úrovni päť percent a stúpať začala až v poslednej tretine. Predpokladám, že pri dopĺňaní ďalších slov to bude ešte rásť. Prekrývanie s ispellom v slovách, ktoré sú správne podľa oboch je 8970 slov tj. pozná 33% mojich slov. Ja nepoznám okolo šesťtisíc jeho slov, to znamená že priestor na zlepšovanie je aj u mňa :)

Prvú etapu som zavŕšil tým, že som presťahoval projekt z ~/tmp/predlozky na /nlp/projekty/langusta. V druhej etape sa chcem zamerať hneď na niekoľko vecí:
  • predložky, ktoré sa viažu s dvoma pádmi (~10 miliónov výskytov)
  • vzťahy medzi predložkami (negácia a stupňovanie)
  • rozmýšlam nad prefixami, ale to by som skôr nechal na neskôr
Na konci tejto fázy by som mal mať pokrytých dostatok prídavných mien. Aby som zlepšil svoju efektivitu, tak sa pokúsim zapojiť do opravovania ispell (s mojími korektnými slovami). Najbližších pár dní si, ale od predložiek oddýchnem a budem sa snažiť robiť niečo iné.

sobota 19. apríla 2008

Prídavné mená v korpuse - koniec teoretizovania

Dnes som prišiel na to, že všetko je úplne inak ako som si myslel. Podarilo sa mi objaviť chybu v metóde single, ktorá sa prejavovala v prípade, že slovo malo síce len jednu možnosť lemma:vzor, ale opakovala sa (rozdiel bol v gramatickej značke). Okamžite sa prejavilo, že nemám ošetrené prípady pre vzor dub s poslednou dlhou slabikou (tie sa pletú s prídavnými menami). Vďaka Michalovi sa podarilo nahodiť nové Ubuntu na tri asterie (Xeon 2Ghz, 4GB). Na nich dokážem reálne dosahovať rýchlosť okolo 80 tisíc konkordancií za minútu, tj. do pol hodiny mám aj tú najfrekventovanejšiu predložku :)

Potom som sa pustil do pridávania slov do centrálnej databázy. Aktuálne je v nej 14 tisíc kandidátov na prídavné mená a za správne je označených okolo 95%. Nesprávne sa nevymazávajú, ale sa len označia, takže ich nemusím prechádzať pri každej predložke. Zatiaľ som sa sústredil len na 'skutočné' prídavné mená, tj. vzory pekný, cudzí a vtáčí. Vzor otcov si nechávam do rezervy, pretože to všetko by malo byť odvodené od podstatných mien. Najbližším cieľom je skontrolovať aj zvyšných ~7 tisíc kandidátov na prídavné mená. Na porovnanie, slovenský ispell má necelých 15 'skutočných' prídavných mien, SSJČ obsahuje 30 tisíc značiek príd. zo 120 tisíc slov. Normálne slovníky, vrátane SSJČ, majú v skutočnosti tých prídavných mien viac, pretože ispell (a zatiaľ ani ja) nespája stupňovanie pod jednu lemmu.

piatok 18. apríla 2008

Hľadanie v korpuse IV

Moja pracovná nálada stále nepoľavuje a pretože už za sebou začínam vidieť reálne výsledky, tak to snáď ešte chvíľku vydrží. Ale pekne po poriadku. Po včerajšom neúspechu s inštaláciou Ubuntu (fakt divný problém s DHCP) a úspešnom návrate môjho počítača z reklamácie som sa vrátil k predložkám.

Podarilo sa mi vytvoriť nové vzory alchýmia a aféra, ktoré odfiltrovali najčastejšie včerajśie chyby. Pôvodne som myslel, že budem potrebovať aj vzor dub (resp. nejaký jeho podvzor), ale takéto slová padli pod vzor aféra. Čo síce nie je správne, ale vzory pre podstatné mená slúžia momentálne len na hľadanie konfliktov a neočakávam, že dávajú stopercentne korektné výsledky. So vzorom alchýmia bol ešte ten problém, źe som testoval len prvý rozklad slova na hlásky a keďže tam vzniklo ia, tak to nepasovalo s poslednou hláskou, ktorá mala byť a.

Po týchto úpravach som zase všetko pregeneroval, vypadlo toho o kúsok menej ako naposledy, ale podľa mňa sa výrazne zvýšila kvalita. Pri metóde single ubudlo ~tisíc kandidátov a pri metóde intersect (tá
kompilikovanejšia, čo dáva viac výsledkov) to kleslo o ~2500 výsledných priradení lemma:vzor. Pre vzory prídavných mien nám toho ubudlo viac ako pribudlo, kvôli novým vzorom, takže aktuálne čísla pre single sú 12 tisíc a pre intersect 41 tisíc (tu už máme zlúčené aj malé a veľké písmená)

Aby som si overil kvalitu výsledných dát, tak som výsledky pre predložku cez (single) prešiel ručne. Do vzoru vtáčí nám nepatrilo nič, do vzoru cudzí nám patrilo 41 slov a všetky boli správne. Najväčšia skupina patrila do vzoru pekný. Z nich som vybral tie, ktoré začínajú aj malým písmenom, to preto aby som sa vyhol vlastným menám. Týchto slov som mal 2281 a z nich som za pofidérne označil 75 (3.2%), takéto slová sú buď preklepy, alebo som si nebol istý či sú správne (napr. zhluknutý, elektornický). V každom prípade, takúto chybovosť považujem za prijateľnú a môžem sa pustiť do overovania aj zvyšných desiatich tisíc prídavných mien :)

Zo včerajšieho todo listu ubudli: oprava vzorov a prejdenie pár tisíc slov, čo bolo viacmenej nahradené za prejdenie všetkých slov :) takže som si príliš nepomohol.

streda 16. apríla 2008

Hľadanie v korpuse III

Do systému na hľadanie slov za predložkami (asi by si zaslúžil nejaké rozumné meno) som pridal vzor vysvedčenie (balenie - balení) a vzor ulica (abstrakcia - abstrakcií; genitív plurálu chýba). Taktiež som pridal predložky s veľkým výskytom, ktoré sa viažu s jedným pádom: od, do, s/so, z/zo, ... To znamená, že surových dát mám viac než dosť. Ak zanedbáme slová priradené k vzorom ulica a vysvedčenie, kde nemáme na výber a padne tam aj to, čo tam nepatrí, tak nám zostane zhruba 40 tisíc prídavných mien (pekný, cudzí, vtáčí, otcov).

Pôvodne som si veľmi pekne vymyslel pravidlo, ktoré bolo postavené na tom, že drvivá väčšina slov má jedno lemma. Ukázalo sa, že to bola dosť naivná predstava :) Idea bola taká, že ak pre daný slovný tvar bolo niekoľko kandidátskych dvojíc lemma:vzor, tak som našiel ďalšie slovné tvary, ktoré obsahovali tento lemma:vzor a spravil prienik. Dá sa povedať, že to aj tak trochu funguje, pretože bez toho by sme získali len asi 15 tisíc prídavných mien. Ale IMHO nám tých chýb pribudne až príliš. Preto bola táto varianta zahodená a lemma:vzor určím len vtedy ak je práve jedna takáto dvojica. Ten zbytok bude použiteľný na nejaké overovanie. Príklad slova, ktoré to kazí:


akreditovaním : akreditovanie : vysvedčenie
akreditovaním : akreditovaní : vtáčí
akreditovanou : akreditovaní : vtáčí
akreditovanou : akreditovaný : pekný
akreditovanými : akreditovaný : pekný


Z toho dostanem akreditovaný:pekný a akreditovaní:vtáčí. Na spôsob ako z toho dostať akreditovanie:vysvedčenie bez zapisovania explicitných pravidiel sa mi zatiaľ nepodarilo prísť.

Ak si zoberieme ten osekaný 15tisícový výstup, tak sa mi podarilo nájsť nasledovné chyby:
  • alchýmí:[vtáčí], kardiológí:[vtáčí] (tj. problém so vzorom: malo by patriť pod ulicu)
  • chýbajúce dĺžne a mäkčene: afganský:[pekný], afgánsky:[pekný] (tj. problém vstupných dát)
  • preklepy: atký:[pekný], agenúry:[pekný]
  • aféry:[pekný], agentúry:pekný (tj. chýba vzor: žena s dlhou poslednou slabikou)
Do úvahy som nebral slová, ktorým bol určený vzor pre podstatné mená, pretože tam bude treba tých konfliktov riešiť omnoho viac.

Taktiež sa mi podarilo napísať aj skript, ktorý overí prídavné mená voči slovám, ktoré sú v slovenskej databáze ispellu. Ten obsahuje 14tisíc prídavných mien, prekryv s mojimi je 9224 resp. 4682 (zo 40 tisíc resp. 15 tisíc).

Medzi ďalšie plány patria:
  • oprava vzorov
  • spájanie podobných slov do zhlukov (ročný, dvojročný, ...) a ich popis
  • vyhľadávanie stupňovania, negácie
  • slová, ktoré sa líšia len v diakritike (obvykle preklep)
  • výber slov s rozumnou frekvenciou (zatiaľ neviem koľko je rozumná a ani ako to vlastne merať)
  • prejsť a označiť +/- aspoň pár tisíc prídavných mien

piatok 11. apríla 2008

Hľadanie v korpuse II

Tak trochu neočakávane sa mi dnes podarilo dosiahnu obe položky zo včerajšieho ToDo-listu. Pri jednoduchých vzoroch (napr. pekný) si dokážem vziať všetky potrebné údaje zo vzoru definovaného v Languste. Samozrejme, že ak tam sú komplikovanejšie zmeny vo vzore, tak to bude ešte nemálo roboty, ale zatiaľ to stačí. Napísať tento generátor by nebol až taký problém, keby nie kombinácie Perl & RegExp &Unicode. Samozrejme, že sa mi podarilo dosiahnuť SEGFAULT :( Nakoniec som ich nahradil za prácu s podreťazcami a všetko funguje, aj keď pomalšie.

Keďže už funguje generátor, tak som ho otestoval aj na predložke pre (frekvencia ~700K). Aj keď sa frekvencia zdvihla len o polovicu, tak počet výsledkov sa zdvihol na štvornásobok. Počet false-positive sa zdvihol zo skoro zanedbateľného množstva na priveľa. Neznamená to, že je chyba v algoritme ako sa na prvý pohľad zdá. Ale fakt, že napr. slovo balení by úplne kľudne mohlo byť základným tvarom prídavného mena. Ak by sme mali vo vzoroch aj vysvedčenie, tak by tieto slová mali stále viac než jeden možný vzor a nemali by sme žiaden výsledok. Existuje ešte pár prípadov, kde nám iné slová smú robiť nejaké problémy, ale ich počet je dosť nízky. Tento problém je ešte výraznejší pri podstatných menách, kde vďaka tomu vzniká takmer dokonalý chaos. Úplne rovnaký problém som riešil aj v Languste, kde som sa nakoniec rozhodol, že sa nebudem pokúšať vytvoriť základný tvar slova. Tam som mal, ale využíval len zoznam slovných tvarov, použitie pádov v predložkových väzbách by mohlo výrazne pomôcť.

ToDo:
  • pridať vzor vysvedčenie
  • prepočítať predložky pre a pri [kvôli novému vzoru]
  • pridať ďalšiu predložky a vyskúšať, že aký má zmysel spájať medzivýsledky

streda 9. apríla 2008

Hľadanie v korpuse

Trvalo mi dosť dlho, kým som sa vysekal z prevádzkových problémov a mohol sa venovať zase niečomu zaujímavejšiemu :) Pretože som momentálne nahradil poker za scrabble, tak som si povedal, že prečo nespaviť program proti ktorému by sa dalo hrať. Ja viem, že to chce dostatočnú slovnú zásobu a vhodnú stratégiu. Zatiaľ budem spokojný ak to bude schopné hrať písomné súťaže, kde hrá človek po sebe dva ťahy. Tam stratégiu netreba, jednoducho sa vyskúšajú všetky možnosti (a zatiaľ nemám ani predstavu ako dlho by to trvalo).

Na toto je treba slušnú morfologickú databázu, alebo aspoň zoznam platných slov. Pretože taká veľká morfologická databáza sa dá použiť aj v úplne bežných veciach ako je fulltextové vyhľadávanie, tak som sa do toho pustil. Ako to robiť poloautomaticky som navrhol už v diplomke (rýchlosť pridávania cca 300 slov / hodinu). Na to, aby som to takto robil som však príliš lenivý. A tak som sa rozhodol použiť veľký korpus (SNK - 300 miliónov).

V neoznačkovanom (či v tomto prípade štatisticky označkovanom) korpuse sa nedá spoliehať na nič okrem slovných tvarov. Ako som už predtým zistil jedna z najťažších vecí je nájsť, čo je vlastne základný tvar (lemma). V podstate sa nie poriadne čoho chytiť. Ak vychádzame len zo slov, tak je to dosť dobré pre človeka, ale všetko automatické dávalo hrozné (potrebujeme skoro 100%) výsledky. Jediná vec, ktorú ma napadlo použiť sú predložky. Najma tie, ktoré sa viažu len s jedným pádom. Okamžite totiž vieme pád a to sa dá slušne využiť, pretože lemma sa dá tipnúť (tj. vyskúšať všetky možnosti - vďaka kritériam na priradeniu do vzoru sa zbavíme najvačších hlúpostí.)

Zatiaľ som robil pokusy len s prídavnými menami a predložkou pri (frekvencia ~500K). Po úvodnom spracovaní som získal asi 30K možných priradení slov k lemma/vzor. To vyzeralo asi takto:

absurdnej:k2gFnSc6d1:absurdn
absurdnej:k2gFnSc6d1:absurdni
absurdnej:k2gFnSc6d1:absurdní
absurdnej:k2gFnSc6d1:absurdny
absurdnej:k2gFnSc6d1:absurdný
absurdných:k2gMnPc6d1:absurdn
absurdných:k2gMnPc6d1:absurdný
Z toho sa mi podarilo vybrať len tie varianty, ktoré pripadali do úvahy. To za mňa spravila Langusta (generátor a GUI na pridávanie slov) a už hotové vzory pre prídavné mená. Následne som získal:


absurdnej:k2gFnSc6d1:absurdní:[vtáčí]
absurdnej:k2gFnSc6d1:absurdný:[pekný]
absurdných:k2gMnPc6d1:absurdný:[pekný]


A to už vyzerá omnoho lepšie. Posledným krokom je nechať len tie dvojice (lemma:vzor), ktoré sú v prieniku existujúch. V tomto prípade to bude len 'absurdný:pekný'. Je vidno, že taká koncovka -ej mi je pri prídavných menách vcelku nanič, pretože patrí do každého vzoru. Aj napriek tomu sa podarilo nájsť 4117 prídavných mien a ich základných tvarov. Samozrejme, že časť z toho budú preklepy - ale budú určené správnou značkou. Objavilo sa aj pár (<10) style="font-style: italic;">kí, (zo slova dom) - ktoré bude treba neskor označiť, pretože by mali mať málo výskytov. Toto sa, ale chystám riešiť až keď bude tých výsledkov viac.

ToDo:
  • overiť aj na predložke pre
  • generovať tieto pravidlá z existujúcich vzorov (to nebude až tak ľahké a niekedy ani možné)

piatok 18. januára 2008

Zase tie slovníky

Včera sa mi podarilo odovzdať tézy dizertačnej práce. To znamená, že momentálne nemám žiaden skorý deadline a môžem robiť všakovaké zaujímavé veci. Začal som sa opäť venovať slovníkom, a to takým, ktoré dokážem generovať. Je jasné, že takéto niečo nebude nikdy fungovať pre slovenčinu a čínštinu, ale s češtinou by to mohlo byť lepšie. A ono to aj skutočne lepšie je :)

Celý postup som prezentoval na konferencii Slovko 2007, z ktorej je k voľne dostupný zborník. Tak len v skratke. Základné ingrediencie sú zoznamy slov v oboch jazykoch (len základné tvary), doplnené o ručne napísané pravidlá, Levenshteinova vzdialenosť (zrejme by ju bolo fajn doplniť aj do slovenskej wikipédie) a jej upravená verzia. Pomocou pravidiel spravíme zo slovenských slov kandidátov na české slová a ak je to málo, tak nájdeme medzi českými slovami to najpodobnejšie. Tá posledná časť patrí asi medzi tie najkomplikovanejšie, ale bohužiaľ sa mi ešte žiadne fakt dobré riešenie nepodarilo nájsť :( Verím, že moje posledné nápady s využitím korpusov by mohli priniesť ovocie. Dnes som sa, ale hral so slovinsko-srbským slovníkom, ktorý mi poslal Jernej. Použil som rovnaké metódy (kvôli tomu som prepisoval svoje skripty ešte pred Vianocami), akurát tie pravidlá som vymýšlal ja. Čo nie je práve výhra, keďže neviem srbsky a slovinsky :) ale zopár som ich trafil.

Baseline ukazuje omnoho vyššie pokrytie ako pre češtinu a slovenčinu (36.7% vs 18.4%), ale zato s nižšou presnosťou (90.2% vs 99.3%). Aj keď možno je to len kvalitou slovníka. Zajtra sa pokúsim o trošku presnejšie vyhodnotenie. Budovanie slovníku pár hodín trvá.

sobota 5. januára 2008

Česko-slovenské slovníky

Slovníky patria medzi najdôležitejšie časti prekladového systému (pri štatistickom preklade síce slovník nemusíme mať, ale nahradzuje ho paralelný korpus - čo je vlastne taký lepší slovník :)). Vzhľadom na spoločný štát by sme sa mohli domnievať, že česko-slovenských slovníkov bude dostatok. Lenže to nie je tak úplne pravda.

Papierové slovníky

Knižne vyšlo hneď niekoľko slovníkov, ktoré na rozdiel od napr. anglicko-slovenských sa nesnažia o pokrytie všetkých slov. Ľudia si totižto dokážu poskladať podobné slová k sebe aj bez slovníku (padať - padat, pes - pes). A keďže všetky existujúce slovníky vznikali pre ľudí, ktorí takéto slová nepotrebujú, tak všetky papierové slovníky sú diferenčné slovníky. Čo je tak trochu problém pre strojové spracovanie a strojový preklad :( Z takýchto slovníkov mám najlepšie referencie na Slovensko-český a česko-slovenský slovník rozdílných výrazů (Jaroslav Nečas, Miloslav Kopecký, ISBN 8004224172).

Elektronické slovníky

Jediný rozumne veľký elektronický slovník PC Translator sa predáva buď zvlášť, alebo alebo v komplete do ktorého patria aj poľština, maďarčina, latinčina, portugalčina a holandčina (nesnažte sa pochopiť, čo majú tieto jazyky spoločné :)). V reklame sa dozviete, že česko-slovenský slovník obsahuje viac než 200 tisíc významových dvojíc. Znamená to, že ide o najjednoduchší typ slovníku (prekladový tezaurus) v ktorom nie sú k jednotlivým prekladovým dvojiciam pridávané podrobnejšie popisy významov, príklady a ďalšie (občas) užitočné informácie. Znamená to tiež, že ak má slovo viac prekladov, tak má
aj viacero prekladových dvojíc. Predávaná verzia (máme ju kúpenú) je len obtiažne použiteľná, pretože obsahuje:
  • slovenské slová o ktorých nikto nechtyroval (ani ja, ani google, ani SNK)
  • slová aj v inom ako základnom tvare, ale zase nie všetky tvary
  • slovné spojenia, ktoré vzniknú len pospájaním slov bez akejkoľvek inej zmeny (napr. špeciálna žabia jednotka -> speciální žabí jednotka)
Keď sa odstráni väčšina tohoto balastu, tak sa dostaneme k reálnym číslam. Aktuálne má vyčistená verzia tohoto slovníku približne 82 tisíc dvojíc (cca 1.1 prekladu na slovenské slovo). Tento vyčistený slovník dostal kódové označenie ŽUMPA, pretože ešte stále obsahuje (minimálne) niekoľko stoviek dvojíc, ktoré tam nemajú, čo robiť. Bohužiaľ, nič lepšie nie je na obzore a tak teraz pracujem na tvorbe nového slovníku (ktorý stále nemá rozumné meno).

Slovníky na internete

Na internete sa mi podarilo nájsť dva česko-slovenské slovníky. Na stránke Slovákov žijúcich v Prahe (www.somvprahe.cz) sa nachádza elektronická verzia Slovensko-český a česko-slovenský slovník na cesty (Magdaléna Feifičová, Vladimír Němec, ISBN 80-85853-66-3). Tento slovník obsahuje 6780 slovníkových hesiel (zrejme dokopy, pretože to má 144 strán malého formátu). Druhý sa nachádza na stránke, ktorá združuje viacero slobodných (GNU/FDL-GPL) slovníkov. Medzi nich patrí aj česko-slovenský slovník, bohužiaľ všetky ich slovníky majú spolu len 28tisíc dvojíc (tj. vrátane slovensko-anglického, slovensko-nemeckého, ...).

Intro

Práve som vytvoril svoj druhý blog (ak sa ráta aj môj občasník, tak tretí). Občasník je úplne mišmaš, ktorý píšem hlavne pre seba a existujúci blog o linuxe a príbuzných veciach je na abclinuxu.cz Tento blog by sa mal zameriavať na všetko zaujímavé, čo sa bude (aspoň okrajovo) týkať strojového prekladu.

Zaujímam sa o strojový preklad medzi blízkymi jazykmi (najmä čeština-slovenčina) , ale ak sa stretnem s niečím iným zaujímavým, tak by som sa to snažil neobchádzať. Verím, že za nejaký ten rok sa mi podarí vytvoriť prekladač, ktorý bude schopný FAHQMT (Fully-Automatic Human-Quality Machine Translation). K tomu mám zatiaľ dosť ďaleko :)