[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
user:zeman:ukoly:hackovani [2007/10/17 19:00]
zeman Úprava.
user:zeman:ukoly:hackovani [2013/10/08 08:07] (current)
zeman quest
Line 1: Line 1:
 ====== Háčkování ====== ====== Háčkování ======
-//(ú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ý doplní do textu chybějící diakritiku. K testování dostanete data v konkrétním jazyku, váš program by však měl být v maximální možné míře jazykově nezávislý. Můžete předpokládat, že jazyk, se kterým program pracuje, píše abecedou na bázi latinky. Vše ostatní, co potřebuje o konkrétním jazyku vědět, by měl být schopen se naučit z dat. (Z toho plyne, že vy daný jazyk ovládat nemusíte.)
- +
-Napište program, který doplní do textu chybějící diakritiku. K testování dostanete data v konkrétním jazyku, váš program by však měl být v maximální možné míře jazykově nezávislý. Můžete předpokládat, že jazyk, se kterým program pracuje, píše abecedou na bázi latinky. Vše ostatní, co potřebuje o konkrétním jazyku vědět, by měl být schopen se naučit z dat. (Z toho plyne, že vy daný jazyk ovládat nemusíte.)+
  
 Úloha má tyto části: Úloha má tyto části:
-  - Trénovací program. Projde trénovací data (tokenizovaný text v UTF-8) a naučí se slovník, tj. pro každý řetězec bez diakritiky všechny možné řetězce (s diakritikou či bez), ze kterých mohl vzniknout.+  - Trénovací program. Projde trénovací data (tokenizovaný text v UTF-8) a naučí se slovník, tj. pro každý řetězec bez diakritiky všechny možné řetězce (s diakritikou či bez), ze kterých mohl vzniknout.
   - Vlastní háčkovač. Čte ze standardního vstupu tokenizovaný text bez diakritiky, na standardní výstup vypisuje tentýž text s diakritikou (v UTF-8).   - Vlastní háčkovač. Čte ze standardního vstupu tokenizovaný text bez diakritiky, na standardní výstup vypisuje tentýž text s diakritikou (v UTF-8).
   - Za pomoci trénovacího programu nebo jeho upravené verze:   - Za pomoci trénovacího programu nebo jeho upravené verze:
Line 15: Line 13:
     - Zjistěte, jaké procento výskytů slov lze přepsat na více než jednu oháčkovanou variantu (včetně varianty bez diakritiky, pokud je platným slovem).     - Zjistěte, jaké procento výskytů slov lze přepsat na více než jednu oháčkovanou variantu (včetně varianty bez diakritiky, pokud je platným slovem).
     - Zjistěte, jaká je průměrná míra nejednoznačnosti (tj. průměrný počet možných odpovědí) na jeden slovní výskyt.     - Zjistěte, jaká je průměrná míra nejednoznačnosti (tj. průměrný počet možných odpovědí) na jeden slovní výskyt.
 +    - Data, která dostáváte, jsou stažená z Wikipedie a obsahují šum. Odhadněte (statisticky, nikoliv na základě znalosti jazyka), která háčkování se do dat dostala jen jako překlep a jak se změní odpovědi na předcházející otázky, pokud překlepy nebudeme brát v úvahu.
 +
 +===== Trénování =====
 +
 +Program ''hacktrain.pl'' čte ze standardního vstupu tokenizovaný text v UTF-8, obsahující diakritiku. Nepotřebuje argumenty, ale pokud je dostane, čte místo standardního vstupu soubory, k nimž jsou cesty uvedené v argumentech. Program z každého vstupního slova odstraní diakritiku a pro všechna slova bez diakritiky si zapamatuje všechna jim odpovídající slova s diakritikou, která viděl v trénovacích datech. Pamatuje si také četnosti výskytů jednotlivých variant, aby háčkovač mohl posoudit, která varianta je nejpravděpodobnější. Naučený slovník vypíše na standardní výstup. Formát výstupu navrhněte sami.
 +
 +<code bash>perl hacktrain.pl < train.txt > model.stat</code>
 +
 +===== Háčkování =====
 +
 +Program ''hack.pl'' čte ze standardního vstupu tokenizovaný text v UTF-8. (Tento text typicky neobsahuje žádnou diakritiku, avšak program musí být technicky schopen načíst i písmena s diakritikou, pokud se tam nějaká zapomenou, nebo znaky cizích abeced.) Program se volá bez argumentů (pokud s argumenty, pak jsou to cesty k souborům, které se mají číst místo standardního vstupu), ale s povinnou volbou (option) ''-s soubor'', která udává cestu k souboru se statistikou (slovníkem) vyrobenou programem ''hacktrain.pl''.
 +
 +Program píše na standardní výstup. Posílá tam tentýž text obohacený o diakritiku. Pozor, nesmíte změnit počet mezer, zalomení řádku apod.! Na výstupu má být přesně stejný počet znaků jako na vstupu, akorát místo znaků bez diakritiky se mohou objevit znaky s diakritikou, a to ještě jen takové, ze kterých ty bez diakritiky lze vytvořit. Výstup je v UTF-8.
 +
 +<code bash>perl hack.pl -s model.stat < test.txt > test.hack.txt</code>
 +
 +===== Varianta pro arabštinu =====
 +
 +V&nbsp;arabštině (a také v&nbsp;hebrejštině) se diakritická znaménka používají pro zápis krátkých samohlásek, zdvojování souhlásek a další jevy. V&nbsp;běžném textu se vynechávají (na rozdíl od češtiny ne jenom tam, kde to vyžadují omezené technické prostředky, ale všude; mluvčí arabštiny je většinou dokáže doplnit z&nbsp;kontextu). Pro počítačové zpracování je potřeba krátké samohlásky rekonstruovat (např. kvůli přepisu do latinky, převedení textu na řeč nebo kvůli rozlišení mluvnických tvarů).
 +
 +Spisovná arabština má pouze 3 krátké samohlásky: //a, i// a //u//. Diakritická znaménka, kterými se tyto samohlásky zapisují, se objevují nad nebo pod předcházející souhláskou, mají však svůj vlastní kód v&nbsp;Unicode. Na rozdíl od češtiny, kde lze jedním znakem zapsat //c// a jiným znakem //č,// pro arabštinu nejsou definovány znaky //ba, bi// a //bu//. Místo toho se dotyčné slabiky reprezentují dvojicemi znaků, např. //b//+//a//. Odháčkování je tím pádem jednodušší, stačí z textu odstranit všechny výskyty znaků pro arabská diakritická znaménka.
 +
 +Následuje přehled diakritických znamének v&nbsp;arabštině. V&nbsp;příkladech je použita souhláska //b//:
 +
 +| **Kód** | **Název** | **Význam** | **Příklad** | **Přepis** |
 +| 064E | fatha | a | بَ | ba |
 +| 064F | damma | u | بُ | bu |
 +| 0650 | kasra | i | بِ | bi |
 +| 0651 | shadda | zdvojení souhlásky | بّ | bb |
 +| 0652 | sukun | žádná samohláska | بْ | b |
 +| 064B | fathatan | a + nunace | بً | ban |
 +| 064C | dammatan | u + nunace | بٌ | bun |
 +| 064D | kasratan | i + nunace | بٍ | bin |
 +
 +Pro učení budete mít k&nbsp;dispozici vokalizované (= opatřené samohláskami) texty z&nbsp;Pražského arabského závislostního korpusu (PADT).
 +
 +===== Další informace =====
 +
 +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.
 +
 +Další informace k úkolu najdete v http://ufal.mff.cuni.cz/~zeman/vyuka/podklady/pzpj03-prvni_ukoly.pdf.
 +
 +V&nbsp;zimním semestru 2009-2010 je v&nbsp;nabídce arabština. Pro přístup k&nbsp;datům je potřeba souhlasit s&nbsp;licenční smlouvou a odeslat registraci na http://ufal.mff.cuni.cz/corp-lic/padt10-reg.html; do kolonky //Optional information// vyplňte "NPFL007". O registraci bych se měl dozvědět a poslat vám odkaz na data.
  
-Programy pište Perlu snažte se vyvarovat obratů, které by omezily přenositelnost mezi platformami (napřnevolejte externí programykteré se vyskytují pouze v Unixu, resp. pouze ve Windows).+V&nbsp;zimním semestru 2007-2008 byly v&nbsp;nabídce slovenština, polština maďarština; v&nbsp;dalších letech se nabídka postupně obměňovalaNásledující odkazy vám řeknoujak se dostat k&nbsp;trénovacím datům.
  
 +  * {{user:zeman:ukoly:sk.tok.gz|Slovenská data}} (2007-2008)
 +  * {{user:zeman:ukoly:pl.tok.gz|Polská data}} (2007-2008)
 +  * {{user:zeman:ukoly:hu.tok.gz|Maďarská data}} (2007-2008)
 +  * Arabská data (2009-2010): samostatná licence (odkaz na formulář výše)
 +  * {{user:zeman:ukoly:ro.txt.gz|Rumunská data}} (2011-2012)
 +  * Řecká data (2012-2013): samostatná licence, kontaktujte mne

[ Back to the navigation ] [ Back to the content ]