[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

This is an old revision of the document!


Table of Contents

Háčkování

spolecne

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:

  1. 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.
  2. Vlastní háčkovač. Čte ze standardního vstupu tokenizovaný text bez diakritiky, na standardní výstup vypisuje tentýž text s diakritikou (v UTF-8).
  3. Za pomoci trénovacího programu nebo jeho upravené verze:
    1. Najděte v daných datech slova, pro která je háčkování nejvíce nejednoznačné (tj. existuje největší škála možností, jak tato slova oháčkovat).
    2. Zjistěte, jaké procento výskytů slov neumožňuje přidání žádné diakritiky.
    3. Zjistěte, jaké procento vyžaduje přidání diakritiky, ale jen jediným způsobem.
    4. 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).
    5. 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.
    6. 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.

perl hacktrain.pl < train.txt > model.stat

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.

perl hack.pl -s model.stat < test.txt > test.hack.txt

Varianta pro arabštinu

V arabštině (a také v hebrejštině) se diakritická znaménka používají pro zápis krátkých samohlásek, zdvojování souhlásek a další jevy. V 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 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 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 arabštině. V 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 dispozici vokalizované (= opatřené samohláskami) texty z 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://ufal.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 zimním semestru 2009-2010 je v nabídce arabština. Pro přístup k datům je potřeba souhlasit s 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.

V zimním semestru 2007-2008 jsou v nabídce slovenština, polština a maďarština. V zimním semestru 2011-2012 je to rumunština. Odkazy na trénovací data následují.


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