Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
user:zeman:ukoly:trideni-jazyku [2007/10/27 23:37] zeman vytvořeno |
user:zeman:ukoly:trideni-jazyku [2013/10/08 08:05] (current) zeman quest |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== 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> |
- | + | ||
- | // | + | |
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é.) | ||
- | |||
- | ---- | ||
- | |||
- | NEDOKONČENO | ||
- | |||
- | ---- | ||
Úloha má tyto části: | Úloha má tyto části: | ||
- | - Vlastní pavouk. Program, který leze po webu, stahuje dokumenty, čistí je a vypisuje je (nebo vybrané části) na standardní výstup. | ||
- Program na natrénování statistiky, podle které dokážeme rozpoznat jazyk dokumentu. | - Program na natrénování statistiky, podle které dokážeme rozpoznat jazyk dokumentu. | ||
- | - Rozšíření pavouka o modul, který načte natrénované | + | - Program, který na základě |
- | - Vytipování počátečního URL pro jazyk, který vám byl zadán. Spusťte pavouka a stáhněte korpus, který po vyčištění bude obsahovat alespoň 500000 slov (před tokenizací, | + | - Natrénování rozpoznávače pro zadanou skupinu |
- | + | ||
- | Odevzdávat budete oba programy a stažený korpus. | + | |
- | Programy pište v Perlu a snažte se vyvarovat obratů, které by omezily přenositelnost mezi platformami (např. nevolejte externí | + | Odevzdávat budete oba programy |
===== Specifikace programu pro trénování jazyků ===== | ===== Specifikace programu pro trénování jazyků ===== | ||
Line 49: | Line 38: | ||
a | a | ||
+ | ===== Specifikace programu pro rozpoznávání jazyků ===== | ||
- | ===== Specifikace volání | + | Program se jmenuje '' |
+ | < | ||
+ | rjaz.pl -f ~/frq < vstup > vystup [-xdN|-xpN|-xwN]</ | ||
- | Program se bude jmenovat | + | První volání znamená: 1. Ve složce '' |
- | < | + | Není-li zadána volba '' |
- | '' | ||
- | Parametr '' | ||
- | Úkolem programu je stahovat dokumenty na uvedených adresách, hledat v nich odkazy na další dokumenty, ty také stahovat | + | ==== Volby -xd, -xp a -xw ==== |
- | Snažte se identifikovat a likvidovat opakované výskyty téhož odstavce | + | Kterákoli z těchto voleb způsobí, |
+ | - O vstupním dokumentu | ||
+ | - Na výstupu není dokument pouze opsán, ale je obalen XML značkami podle následujících pravidel: | ||
+ | * Celý dokument je obalen značkami ''< | ||
+ | * Každý odstavec (řádek) je obalen značkami ''< | ||
+ | * Každé slovo (token) je obaleno značkami ''< | ||
+ | * Odstavce | ||
+ | * Počáteční značka dokumentu, | ||
+ | * Nezapomeňte, | ||
+ | * K volbám '' | ||
+ | * Struktura langs, patřící celému dokumentu, se píše hned za počáteční značku dokumentu. | ||
+ | * 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). | ||
+ | * Číselný parametr N říká, kolik nejpravděpodobnějších jazyků má být ve strukturách langs vypsáno. Je-li N=" | ||
+ | * V příkladu si všimněte, že na začátku | ||
- | ===== Specifikace výstupního formátu | + | <code xml> |
+ | <?xml version=" | ||
+ | <doc lang=" | ||
+ | < | ||
+ | <li lang=" | ||
+ | <li lang=" | ||
+ | <li lang=" | ||
+ | </ | ||
+ | <p id=" | ||
+ | <w id=" | ||
+ | <w id=" | ||
+ | <w id=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
- | Dokumenty, které projdou uvedeným filtrem, vyčistěte od veškerého kódu HTML a **vypište na standardní výstup (STDOUT)**. Zachovejte pouze informaci o tom, kde začíná nový odstavec (HTML prvky div, h1, h2, h3, h4, h5, h6, p, table, tr, th, td, ul, ol, li, dl, dt, dd, select, option a možná některé další). Nezapomeňte odstranit kód JavaScriptu, | + | ===== Jazyky, které máte umět ===== |
- | + | ||
- | Výstup je vždy v kódování UTF-8. Pokud umíte na webu rozpoznat texty v jiném kódování téhož jazyka, překódujte je. | + | |
- | + | ||
- | Každý řádek na výstupu odpovídá právě jednomu odstavci staženého dokumentu. Prázdné odstavce vynechte. Odstraňte všechny mezery na začátku a na konci každého řádku (odstavce). Pokud mezi slovy uvnitř odstavce leží více než jedna mezera, zařiďte, aby tam zůstala právě jedna mezera. Mezerové znaky jako tabulátor (kód 9), neoddělitelná mezera (kód 160), popř. řídící znaky nahraďte normální mezerou (kód 32). Text ale netokenizujte (tj. nesnažte se třeba odtrhnout čárku od předcházejícího slova, pokud mezi nimi v původním dokumentu mezera nebyla). | + | |
- | + | ||
- | ===== Stahování vašeho jazyka | + | |
- | + | ||
- | Sežeňte si dostatečně velkou webovou stránku v daném jazyce jako výchozí bod. Jazyky, které jsou součástí zadání, mohou být exotické, ale žádný není natolik vzácný, aby se na webu nedal objevit alespoň ve Wikipedii (http:// | + | |
- | + | ||
- | Úvodní stránku si uložte jako text (bez HTML entit!) a získejte z ní frekvenční charakteristiku daného jazyka. Potom pokusně pusťte pavouka z této stránky na web a sledujte, jakých hodnot dosahuje vámi navržená míra podobnosti frekvenčních vektorů. Podle toho odhadněte vhodnou prahovou hodnotu a pusťte pavouka naostro. | + | |
+ | V zimním semestru 2007-2008 jsou součástí zadání následující jazyky. Samozřejmě můžete svůj program naučit i libovolné další jazyky. Nemáte-li pro dané jazyky trénovací data, sežeňte si je na webu. Trénovací data pro různá kódování získejte překódováním trénovacích dat z UTF-8. | ||
+ | | čeština | utf-8 | iso-8859-2 | cp1250 | | ||
+ | | slovenština | utf-8 | iso-8859-2 | cp1250 | | ||
+ | | slovinština | utf-8 | iso-8859-2 | cp1250 | | ||
+ | | ruština | utf-8 | koi8-r | cp1251 | | ||
+ | | angličtina | utf-8 | iso-8859-1 | cp1252 | | ||
+ | | němčina | utf-8 | iso-8859-1 | cp1252 | | ||
+ | | nizozemština | utf-8 | iso-8859-1 | cp1252 | | ||
+ | | francouzština | utf-8 | iso-8859-1 | cp1252 | | ||
+ | | španělština | utf-8 | iso-8859-1 | cp1252 | | ||
+ | | italština | utf-8 | iso-8859-1 | cp1252 | | ||
===== 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/ | + | 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/ |
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. | ||
- | |||
- | Další informace k úkolu najdete v http:// | ||
- | |||
- | Krátké ukázky z jazyků, které jsou v nabídce v zimním semestru 2007-8: | ||
- | |||
- | ==== Rumunština ==== | ||
- | Limba română (sau dacoromână) este o limbă indo-europeană, | ||
- | |||
- | ==== Svahilština ==== | ||
- | Kiswahili ni lugha ya kibantu yenye misamiati mingi ya kiarabu inayozungumzwa katika eneo kubwa la Afrika ya Mashariki. Lugha hii ina utajiri mkubwa wa misamiati na misemo na mithali na mashairi na mafumbo na vitendawili na nyimbo. Nayo inatumika katika mashule kufundishia elimu mbali mbali za dini na dunia, na kuna vitabu vingi vilivyotungwa kwa kutumia lugha hii, vikiwa vya hadithi au hekaya au riwaya. | ||
- | |||
- | ==== Telužština ==== | ||
- | తెలుగు, | ||
- | |||
- | Pokud je proti vašemu přesvědčení pracovat s textem, který si neumíte ani přečíst, zkuste ho prohnat programem [[telugu2latin.pl]]. Výstup vašeho pavouka ale samozřejmě musí být původní telužský text! | ||
- | |||
- | ==== Urdština ==== | ||
- | اردو انڈوآریائی زبانوں کی انڈو ایرانی شاخ کی ایک زبان ہے جس کا تعلق انڈويورپی زبانوں سے ہے۔اردو تيرھويں صدی ميں بر صغير ميں پيدا ہوئی ـ اردو پاکستان کی سرکاری زبان ہے اور بھارت کی سرکاری زبانوں ميں سے ايک ہے۔ اردو بھارت ميں 5 کروڑ اور پاکستان ميں دو کروڑ لوگوں کی مادری زبان ہے مگر اسے بھارت اور پاکستان کے تقریباً 50 کروڑ لوگ بول اور سمجھ سکتے ھیں ۔ جن میں سے تقریباً 10.5 کروڑ لوگ اسے باقاعدہ بولتے ھیں۔ | ||
- | |||
- | ==== Vietnamština ==== | ||
- | Tiếng Việt hay Việt ngữ[2] là ngôn ngữ của người Việt (người Kinh) và là ngôn ngữ chính thức tại Việt Nam. Đây là tiếng mẹ đẻ của khoảng 85% dân cư Việt Nam, cùng với gần ba triệu Việt kiều ở hải ngoại, mà phần lớn là người Mỹ gốc Việt. Tiếng Việt còn là ngôn ngữ thứ hai của các dân tộc thiểu số tại Việt Nam. Mặc dù tiếng Việt có nguồn từ vựng vay mượn từ tiếng Hán và trước đây dùng chữ Hán (chữ Nho) để viết, sau đó được cải biên thành chữ Nôm, tiếng Việt được coi là một trong số các ngôn ngữ thuộc hệ ngôn ngữ Nam Á có số người nói nhiều nhất (nhiều hơn một số lần so với các ngôn ngữ khác cùng hệ cộng lại). Ngày nay tiếng Việt dùng bảng chữ cái Latinh, gọi là chữ Quốc Ngữ, cùng các dấu thanh để viết. | ||