Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
user:zeman:morpho-challenge-2008 [2008/06/27 12:19] zeman Složená slova. |
user:zeman:morpho-challenge-2008 [2008/07/31 16:03] zeman Četnost koncovek. |
||
---|---|---|---|
Line 44: | Line 44: | ||
Seznam vzorů se buduje takto (práce je rozdělena do několika kroků, protože zpracování velkých dat trvá dlouho a při opravě nějaké drobnosti u filtrování vzorů nechceme muset opakovat i první dva kroky): | Seznam vzorů se buduje takto (práce je rozdělena do několika kroků, protože zpracování velkých dat trvá dlouho a při opravě nějaké drobnosti u filtrování vzorů nechceme muset opakovat i první dva kroky): | ||
< | < | ||
- | kmkon2vzor.pl < en.kmkon > en.vzor | + | kmkon2vzor.pl < en.kmkon > en.nefiltr |
- | vzorfiltr.pl < en.vzor > en1.vzor</ | + | vzorfiltr.pl |
Skript '' | Skript '' | ||
+ | |||
+ | |||
+ | ===== Morfematická segmentace ===== | ||
+ | |||
+ | Mám natrénovaný seznam vzorů, resp. seznam kmenů a koncovek. Segmentace ve skutečnosti znamená najít takové dělení slova na dvě části, aby první část odpovídala známému kmenu a druhá část známé koncovce. | ||
+ | |||
+ | Slovo umím rozložit na právě dva morfémy (kmen a koncovka) nebo nechat nerozložené. Při přiřazování slov ke vzorům se přednostně zjišťuje, zda známe přímo danou dvojici kmen-koncovka. Pokud žádnou takovou dvojici nenajdeme, zjišťujeme, | ||
+ | |||
+ | Rozklad slov na základě již vybudovaného seznamu vzorů se provede takto: | ||
+ | < | ||
+ | |||
+ | < | ||
+ | foreach l (ar de en fi tr) | ||
+ | $MC/ | ||
+ | end</ | ||
+ | |||
+ | V úvahu přichází několik stupňů přísnosti při aplikaci vzorů na morfematickou segmentaci: | ||
+ | - Slovo rozdělit pouze v případě, že toto dělení bylo viděno v trénovacích datech a proniklo filtrem mezi výsledné vzory. Jinými slovy, kmen i koncovka musí být známé a navíc musely být viděny spolu. | ||
+ | - Kmen i koncovka musí být známé, ale nemusely být viděny spolu. | ||
+ | - Známá je koncovka, kmen známý být nemusí. | ||
+ | - Známý je kmen, koncovka známá být nemusí. | ||
+ | - Známý je kmen nebo koncovka, ale ne nutně obojí. | ||
+ | Poslední tři body neumím uspořádat podle přísnosti, | ||
+ | |||
+ | ===== Úprava výstupu před odesláním ===== | ||
+ | |||
+ | Ve výstupních souborech musí být první slovo (tvar, který jsme měli rozebrat) identické s& | ||
+ | |||
+ | < | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | |||
+ | ===== Skórování ===== | ||
+ | |||
+ | Organizátoři poskytli program '' | ||
+ | |||
+ | Co ještě potřebujeme: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Jaký je tedy úplný postup při vyhodnocování? | ||
+ | |||
+ | - Stáhnout program '' | ||
+ | - Stáhnout program '' | ||
+ | - Pro jazyk, který chceme vyhodnocovat, | ||
+ | - Pro jazyk, který chceme vyhodnocovat, | ||
+ | - Z výstupu analyzátoru, | ||
+ | - Nejdříve vytvoříme seznam relevantních slov, tedy takových, která se vyskytují ve vzorových analýzách, | ||
+ | - Potom náhodně vybereme 100 relevantních slov z výstupu našeho analyzátoru. < | ||
+ | - Nyní již máme pohromadě všechny soubory potřebné jako vstupy pro vyhodnocovací program a můžeme spustit vyhodnocování: | ||
+ | < | ||
+ | |||
+ | < | ||
+ | $MC/ | ||
+ | $MC/ | ||
+ | |||
+ | ===== Vyhodnocení ===== | ||
+ | |||
+ | Moje vyhodnocení se bude lišit od oficiálních výsledků soutěže, protože mám k dispozici gold standard jen pro 500 slov z každého jazyka. Na prvním místě uvádím své výsledky, vpravo pak oficiální výsledky zveřejněné na stránkách soutěže. | ||
+ | |||
+ | | Jazyk | F | P | R | Fo | Po | Ro | | ||
+ | | en | 48.56 | 53.39 | 44.53 | 46.90 | 52.98 | 42.07 | | ||
+ | | de | 27.67 | 30.28 | 25.47 | 36.98 | 53.12 | 28.37 | | ||
+ | | fi | 30.97 | 47.44 | 22.99 | 30.33 | 58.51 | 20.47 | | ||
+ | | tr | 32.68 | 59.46 | 22.53 | 29.23 | 65.81 | 18.79 | | ||
+ | | ar | 15.78 | 79.86 | 8.76 | 21.86 | 77.24 | 12.73 | | ||
+ | |||
+ | ===== Zpracování převrácených slov a hledání předpon ===== | ||
+ | |||
+ | < | ||
+ | cd $MC/ | ||
+ | foreach l (ar de en fi tr) | ||
+ | $MC/ | ||
+ | qsub.csh $MC/ | ||
+ | end</ | ||
+ | |||
+ | < | ||
+ | cat $l.rev.kmeny.txt | $MC/ | ||
+ | cat $l.rev.koncovky.txt | $MC/ | ||
+ | $MC/ | ||
+ | end</ | ||
===== Zbývá udělat ===== | ===== Zbývá udělat ===== | ||
- | * Stáhnout opravená anglická trénovací data a přetrénovat. | ||
- | * Vzít testovací data a mnou natrénované kmeny a koncovky a provést morfematickou segmentaci testovacích dat. Jedno slovo může být rozebráno několika způsoby. Morfémy mohou být identifikovány libovolným řetězcem, takže je nemusíme převádět zpět do původního kódování, | ||
* Vyzkoušet skórování. | * Vyzkoušet skórování. | ||
* Pustit celý algoritmus na převrácená slova a získat předpony. | * Pustit celý algoritmus na převrácená slova a získat předpony. | ||
* Zkusit rozpoznat složená slova, resp. složené kmeny. Pouze jednoduchý přístup, snažit se najít uvnitř kmenu jiný existující kmen tak, aby to, co zbyde, byl také existující kmen nebo složenina. | * Zkusit rozpoznat složená slova, resp. složené kmeny. Pouze jednoduchý přístup, snažit se najít uvnitř kmenu jiný existující kmen tak, aby to, co zbyde, byl také existující kmen nebo složenina. | ||
* Vymyslet způsob, jak využít četnosti slovních tvarů, které jsme dostali s& | * Vymyslet způsob, jak využít četnosti slovních tvarů, které jsme dostali s& | ||
+ | * Odeslat výsledky Mikkovi. | ||
- | ==== Morfematická segmentace ==== | ||
- | Mám natrénovaný seznam vzorů, resp. seznam kmenů a koncovek. Segmentace ve skutečnosti znamená najít takové dělení slova na dvě části, aby první část odpovídala známému kmenu a druhá část známé koncovce. | ||
- | Slovo umím rozložit na právě dva morfémy (kmen a koncovka) nebo nechat nerozložené. Při přiřazování slov ke vzorům se přednostně zjišťuje, zda známe přímo danou dvojici kmen-koncovka. Pokud žádnou takovou dvojici nenajdeme, zjišťujeme, | + | ===== Postřehy ===== |
- | Rozklad slov na základě již vybudovaného seznamu vzorů se provede takto: | + | Zkusit nejpřísnější segmentaci. Slovo se rozdělí pouze v případě, že kmen a koncovka byly viděny // |
- | < | + | |
+ | Předpony, zdá se, fungují, ale na rozdíl od přípon by to tu nechtělo dávat společná písmena ke kmeni, nýbrž k& | ||
+ | |||
+ | Jednopísmenné předpony jsou problém. Nemůžu je úplně zakázat (české //o-, u-//), ale ve výstupu | ||
+ | |||
+ | Segmentaci dělám hladově, i když by to chtělo chart parser. Problém: máme 2 seznamy kmenů (jeden zbytky po předponách, | ||
+ | |||
+ | Algoritmus 3 (předpony + kmeny + přípony) nedělá to, co má. Jaktože nepoznal vzor //abrupt - abruptly - abruptness//, | ||
+ | Četnost koncovek: u kolika slov (typů i výskytů) jsme viděli danou koncovku? Méně časté koncovky by měly mít ztížené uplatnění při segmentaci. Zatím ale nevím, jak jim ho ztížit jinak, než je úplně zakázat. |