Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
user:zeman:ukoly:trideni-jazyku [2007/10/28 12:06] zeman Dokončeno. |
user:zeman:ukoly:trideni-jazyku [2013/10/08 08:05] (current) zeman quest |
====== Rozpoznávání a třídění jazyků ====== | ====== Rozpoznávání a třídění jazyků ====== |
//(úloha z počítačového zpracování přirozeného jazyka)// | {{template>spolecne}} |
| |
//Upozornění: Specifikace je detailnější (a tudíž více svazující) než bývá u zápočtových úloh zvykem. Ideálně by díky tomu měla tři řešení téže úlohy od tří různých lidí být zaměnitelná; šetří vám to také práci s dokumentací, která už je součástí zadání. Samozřejmě nelze vyloučit, že najdete dobrý důvod, aby něco bylo jinak než ve specifikaci; takové případy se mnou prosím [[zeman@ufal.mff.cuni.cz|konzultujte]]. Bez posvěcení se raději od specifikace zbytečně neodchylujte. Kdo bude místo na STDOUT čmárat do souboru, jehož cesta je zadrátována ve zdrojáku jako "C:\Documents and Settings\PanVopička\Dokumenty\tisícdalšíchadresářů\mujchytrysoubor.dat" apod., nejenže nedostane zápočet, ale bude podroben veřejnému zostuzení.// | |
| |
Napište program, který dokáže rozpoznat jazyk dokumentu, věty a slova a roztřídit vstupní text podle jazyků. Součástí zadání bude konkrétní skupina jazyků, které má program umět poznat, váš program by však měl být jazykově nezávislý. Vše, co potřebuje o konkrétních jazycích vědět, by měl být schopen se naučit z dat. (Z toho plyne, že vy dané jazyky ovládat nemusíte, naopak je možná výhodou, když jsou vám zcela neznámé.) | Napište program, který dokáže rozpoznat jazyk dokumentu, věty a slova a roztřídit vstupní text podle jazyků. Součástí zadání bude konkrétní skupina jazyků, které má program umět poznat, váš program by však měl být jazykově nezávislý. Vše, co potřebuje o konkrétních jazycích vědět, by měl být schopen se naučit z dat. (Z toho plyne, že vy dané jazyky ovládat nemusíte, naopak je možná výhodou, když jsou vám zcela neznámé.) |
| |
Odevzdávat budete oba programy a natrénované statistiky. | Odevzdávat budete oba programy a natrénované statistiky. |
| |
Programy pište v Perlu a snažte se vyvarovat obratů, které by omezily přenositelnost mezi platformami (např. nevolejte externí programy, které se vyskytují pouze v Unixu, resp. pouze ve Windows). | |
| |
===== Specifikace programu pro trénování jazyků ===== | ===== Specifikace programu pro trénování jazyků ===== |
| |
Není-li zadána volba ''-i'' (jako ve druhém příkladu), čte se jediný dokument ze standardního vstupu. Na **standardní chybový výstup (STDERR)** se vypíše vyhodnocení jazyka celého dokumentu, tj. seznam známých jazyků, spolu s číselným vyjádřením podobnosti dokumentu každému jazyku, seřazený sestupně podle podobnosti. Pokud dokument není žádnému známému jazyku podobný dostatečně, před seznam se ještě napíše upozornění, že jde pravděpodobně o neznámý jazyk. Na standardní výstup (STDOUT) se vypíše dokument ze vstupu; to má smysl jen při volbách ''-xd'', ''-xp'' nebo ''-xw''. | Není-li zadána volba ''-i'' (jako ve druhém příkladu), čte se jediný dokument ze standardního vstupu. Na **standardní chybový výstup (STDERR)** se vypíše vyhodnocení jazyka celého dokumentu, tj. seznam známých jazyků, spolu s číselným vyjádřením podobnosti dokumentu každému jazyku, seřazený sestupně podle podobnosti. Pokud dokument není žádnému známému jazyku podobný dostatečně, před seznam se ještě napíše upozornění, že jde pravděpodobně o neznámý jazyk. Na standardní výstup (STDOUT) se vypíše dokument ze vstupu; to má smysl jen při volbách ''-xd'', ''-xp'' nebo ''-xw''. |
| |
| |
| |
==== Volby -xd, -xp a -xw ==== | ==== Volby -xd, -xp a -xw ==== |
* Každý odstavec (řádek) je obalen značkami ''<p>''...''</p>''. | * Každý odstavec (řádek) je obalen značkami ''<p>''...''</p>''. |
* Každé slovo (token) je obaleno značkami ''<w>''...''</w>''. Mezi těmito značkami se nevyskytují mezerové znaky (mezery, zalomení řádku aj.) Naopak vně těchto značek nemají mezerové znaky žádný zvláštní význam, takže může být např. každý token (včetně svých <w>...</w> značek) na samostatném řádku. | * Každé slovo (token) je obaleno značkami ''<w>''...''</w>''. Mezi těmito značkami se nevyskytují mezerové znaky (mezery, zalomení řádku aj.) Naopak vně těchto značek nemají mezerové znaky žádný zvláštní význam, takže může být např. každý token (včetně svých <w>...</w> značek) na samostatném řádku. |
* Odstavce a slova mají ve svých počátečních značkách atribut ''id'', který je v rámci dokumentu jednoznačně identifikuje. Např. ''<p id="1"><w is="1.1">''. | * Odstavce a slova mají ve svých počátečních značkách atribut ''id'', který je v rámci dokumentu jednoznačně identifikuje. Např. ''<p id="1"><w id="1.1">''. |
* Počáteční značka dokumentu, odstavce i slova může obsahovat atributy ''lang'' a ''lw'', které udávají jazyk dokumentu / odstavce / slova a váhu (míru podobnosti) jazyka. Volba ''-xd'' znamená, že tyto údaje mají být uvedeny u dokumentu. Volba ''-xp'' zapne rozpoznávání jazyka odstavců a implikuje taky volbu ''-xd''. Volba ''-xw'' znamená, že jazyk má být rozpoznáván na všech třech úrovních (dokument, odstavec i slovo). | * Počáteční značka dokumentu, odstavce i slova může obsahovat atributy ''lang'' a ''lw'', které udávají jazyk dokumentu / odstavce / slova a váhu (míru podobnosti) jazyka. Volba ''-xd'' znamená, že tyto údaje mají být uvedeny u dokumentu. Volba ''-xp'' zapne rozpoznávání jazyka odstavců a implikuje taky volbu ''-xd''. Volba ''-xw'' znamená, že jazyk má být rozpoznáván na všech třech úrovních (dokument, odstavec i slovo). |
* Nezapomeňte, že na výstupu v XML musíte zakódovat znaky "&", "<" a ">" jako entity ("&", "<", ">"). | * Nezapomeňte, že na výstupu v XML musíte zakódovat znaky "&", "<" a ">" jako entity ("&", "<", ">"). |
* Struktura langs, patřící celému odstavci, se píše hned za počáteční značku odstavce. | * Struktura langs, patřící celému odstavci, se píše hned za počáteční značku odstavce. |
* Struktura langs, patřící slovu, se píše hned za **koncovou** značku slova (tedy ne dovnitř slova, ale za něj). | * Struktura langs, patřící slovu, se píše hned za **koncovou** značku slova (tedy ne dovnitř slova, ale za něj). |
* Číselný parametr N říká, kolik nejpravděpodobnějších jazyků má být ve strukturách langs vypsáno. Je-li N="a" //(all)//, mají se vypsat všechny známé jazyky. Výchozí hodnotou N je 1, v tom případě se vůbec nevypisuje struktura langs a stačí atributy lang a lw uvnitř počáteční značky prvku. Pokud je N vyšší než 1 nebo "a", vypisují se jak atributy lang a lw uvnitř počáteční značky prvku, tak struktura langs. Pokud je N 0, nevypisuje se struktura langs ani atribut lw v počáteční značce prvku, vypisuje se pouze atribut lang. | * Číselný parametr N říká, kolik nejpravděpodobnějších jazyků má být ve strukturách langs vypsáno. Je-li N="a" //(all)//, mají se vypsat všechny známé jazyky. Výchozí hodnotou N je 1, v tom případě se vůbec nevypisuje struktura langs a stačí atributy lang a lw uvnitř počáteční značky prvku. Pokud je N vyšší než 1 nebo "a", vypisují se jak atributy lang a lw uvnitř počáteční značky prvku, tak struktura langs. Pokud je N 0, nevypisuje se struktura langs ani atribut lw v počáteční značce prvku, vypisuje se pouze atribut lang. Pokud je jazyk neznámý a N > 1, potom atribut lang ve značce prvku obsahuje informaci, že jazyk je neznámý, ale struktura langs zobrazuje váhy známých jazyků pro posuzovaný prvek. |
* V příkladu si všimněte, že na začátku dokumentu XML se uvádí značka ''<?xml...?>'', ve které se mimo jiné musí říct, jaké kódování dokument používá. Spolu s jazykem tedy musíte rozpoznat i kódování. | * V příkladu si všimněte, že na začátku dokumentu XML se uvádí značka ''<?xml...?>'', ve které se mimo jiné musí říct, jaké kódování dokument používá. Spolu s jazykem tedy musíte rozpoznat i kódování. |
| |
===== Další informace ===== | ===== Další informace ===== |
| |
Tento úkol (včetně zadání konkrétního jazyka) si můžete zarezervovat vyplněním formuláře na http://ufal.mff.cuni.cz/cgi-bin/zeman/zapoctaky/rezervace_ukolu.pl (pokud ještě není rozebrán). | Tento úkol (včetně zadání konkrétního jazyka) si můžete zarezervovat vyplněním formuláře na http://quest.ms.mff.cuni.cz/cgi-bin/zeman/zapoctaky/rezervace_ukolu.pl (pokud ještě není rozebrán). |
| |
Pokud se individuálně nedohodneme jinak, termín odevzdání je konec listopadu. Při některé prosincové přednášce program předvedete ostatním. | Pokud se individuálně nedohodneme jinak, termín odevzdání je konec listopadu. Při některé prosincové přednášce program předvedete ostatním. |
| |