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:49] zeman Stáhnout rozšířená data pro information retrieval. |
user:zeman:morpho-challenge-2008 [2008/07/31 21:16] zeman Kam se ztrácejí slova? |
||
---|---|---|---|
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 a koncovka nemusely být viděny přímo spolu. Stačí, když byl kmen viděn s N jinými koncovkami, které se s hledanou koncovkou společně vyskytují alespoň v jednom vzoru. | ||
+ | - Další možnost by byla snažit se zjistit, zda slovo může náležet ke vzoru, který připouští danou koncovku. I když náš systém toto slovo zařadil k jinému slovu. Např. nejpřísnější metoda nerozdělila " | ||
+ | - 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 ===== | ||
- | * 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. | ||
- | * Stáhnout doplňující seznamy slov pro soutěž 2 (information retrieval) a celý postup pro ně zopakovat. | ||
* 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. | * 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, | ||
- | Rozklad slov na základě již vybudovaného seznamu vzorů se provede takto: | ||
- | < | ||
+ | |||
+ | |||
+ | ===== Postřehy ===== | ||
+ | |||
+ | Zkusit nejpřísnější segmentaci. Slovo se rozdělí pouze v případě, že kmen a koncovka byly viděny //spolu.// | ||
+ | |||
+ | 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 se mi nezdravě množí. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | Vzhledem ke způsobu vyhodnocení, | ||
+ | |||
+ | Jestliže slovo obsahuje pomlčku, je to téměř jistá hranice morfémů. | ||
+ | |||
+ | Jak mám poznat podmnožinu, | ||
+ | |||
+ | Třetina slov v angličtině neprojde filtrováním vzorů. Na vstupu mám 385 tisíc slov, na výstupu 122 tisíc segmentací. (Ve skutečnosti jsem jich asi odfiltroval víc, protože na výstupu navíc mohou být i taková slova, která jsem vůbec neviděl. Můžou se tam dostat při slučování vzorů s nadmnožinami.) Otázka je, jak přesně k tomu došlo. Kdybych věděl, kde se slova ztrácejí, možná by mě napadlo, jak je neztratit úplně. To bych ale musel rozvinout ladění, abych dokázal stopovat slovo během celého procesu filtrování. |