[ 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

Morfologické značkování

(úloha z počítačového zpracování přirozeného jazyka)

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 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í.

Morfologická značka neboli tag je obvykle krátký řetězec písmen, číslic a případně dalších znaků, ve kterém jsou zakódované morfologické a další informace o jednom slovu. Prakticky vždy je ze značky poznat slovní druh, ten bývá v některých případech ještě jemněji rozčleněn (třeba zájmena osobní vs. tázací). Podle potřeby pak značky obsahují informaci o relevantních mluvnických kategoriích, jako jsou rod, číslo, pád, stupeň, osoba, čas aj. I pro jeden jazyk mohou existovat různé korpusy s různě koncipovanými sadami značek. V některých případech mluvnické kategorie chybí a kóduje se jen slovní druh (anglicky part of speech), proto se také hovoří o tzv. part-of-speech (POS) tags.

Tagger (značkovač) je program, jehož úkolem je přiřadit každému slovu v textu značku z nějaké konkrétní sady. Obvykle se stává, že některá slova mají více možných interpretací, vyjádřených různými značkami, a až na základě kontextu lze poznat, která je pro daný výskyt slova ta správná. Většina taggerů tedy využívá nějaký statistický model, z něhož lze zjistit pravděpodobnost té které značky na základě kontextu. Statistický model se získá tzv. natrénováním taggeru na korpusu, ve kterém už někdo vyznačil správné značky ručně.

Některé taggery současně provádějí i lemmatizaci (vybírají pro slovo správné lemma - např. české slovo je může mít lemmata oni nebo být). Je to v podstatě jiná instance téhož problému jako u značek, řeší se stejnými metodami, akorát míra nejednoznačnosti bývá nižší.

Vaším úkolem je implementovat v Perlu jednoduchý statistický tagger včetně lemmatizace. Stačí n-gramový (n = 2 nebo 3) model nad slovy a značkami s jednoduchým vyhlazováním. Podrobnosti se dozvíte na přednášce o značkování.

Použijte statistický model, jehož parametry jsou značkované slovo a značka předchozího slova. Vyhlazujte pomocí méně specifického modelu, který se kouká pouze na značkované slovo, případně pomocí hloupého modelu, který bere jen pravděpodobnost značky bez ohledu na slovo. Alternativní rozšíření: Nebuďte hladoví! Ověřte, zda a jak moc pomůže, když nebudete brát v každém okamžiku lokálně nejpravděpodobnější značku, ale budete se snažit maximalizovat pravděpodobnost posloupnosti značek pro celou větu.

Úloha má tyto části (podrobnosti níže):

  1. Trénovací skript. Na vstupu má označkovaný korpus, na výstup posílá statistický model.
  2. Vlastní tagger. Na začátku načte statistický model, potom čte neoznačkovaný text a vypisuje označkovaný.
  3. Oba skripty by měly být schopné využít výstup předcházející morfologické analýzy, pokud je k dispozici (řekne, které značky přicházejí v úvahu na základě slovníku, tagger už pak vybírá pouze z nich).

Trénování

Skript train.pl se volá velmi jednoduše: na standardním vstupu (popř. v souboru, jehož cestu dostane jako argument, pokud nějaký argument dostane) má anotovaný korpus, na standardní výstup posílá soubor s natrénovanými statistikami.

Formát vstupního souboru může být různý podle toho, pro jaký jazyk budete značkování řešit a odkud budou pocházet data. Trénovací data budou tokenizovaná, pro každé slovo (výskyt slovního tvaru) se dozvíte jeho ručně přiřazené lemma a značku. Volitelně se dozvíte také všechny kombinace lemma-značka, které pro dané slovo navrhl morfologický analyzátor (na základě slovníku, ale bez ohledu na kontext). Tuto informaci, pokud je k dispozici, potom můžete zohlednit ve statistickém modelu.

Dokumentace sady značek, která vám umožní dekódovat informace schované ve značkách, je na požádání k dispozici také. Jinak ale můžete se značkou zacházet jako s obecným řetězcem, který máte pro dané slovo vybrat z nějaké množiny.

Značkování

Skript tag.pl se volá s volbou (option) -s cesta_k_souboru, která mu řekne, odkud načíst natrénovaný statistický model. Ze standardního vstupu (popř. ze souboru, jehož cestu dostane jako argument, pokud po odebrání výše zmíněné cesty nějaký argument zbude) přečte tokenizovaný text, na standardní výstup pošle tentýž text s přidanými značkami a lemmaty.

Výstupní formát by měl být stejný jako u vašich trénovacích dat. Formát vstupního textu k označkování bude také analogický, akorát v něm budou chybět ručně přiřazená lemmata a značky. Můžou (ale nemusejí) v něm být kombinace lemmat a značek, které navrhl morfologický analyzátor; v tom případě byste je měli zohlednit.

Pokusy

Srovnejte úspěšnost svého taggeru s naivním taggerem a odpovězte si na obdobné otázky, jaké klade zadání úkolu s Brillovým taggerem.

Data a jazyky

Označkovaná data v tzv. Brillově formátu. Každá věta leží na samostatném řádku. Tokeny na řádku jsou oddělené mezerou. Token je ve formátu “slovo/značka”, přičemž ani slovo, ani značka neobsahuje ani lomítko, ani mezeru.

Data obsahující navíc výstup morfologické analýzy jsou k dispozici pouze pro češtinu. Ta jsou pak uložena ve formátu CSTS, který je založen na SGML. Ve stručnosti, řádek může vypadat nějak takhle:

<f>slovníTvar<l>ručníLemma<t>ručníZnačka<MMl>lemmaZMorfAn1<MMt>značkaZMorfAn1...

Češ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/pdt20-reg.html; do kolonky Optional information vyplňte “PFL007”. O registraci bych se měl dozvědět a poslat vám odkaz na data.

Švédština

Data pocházejí ze švédského korpusu Talbanken05, který je volně dostupný na webu.
stáhnout

Dánština

Data pocházejí z korpusu DDT (Danish Dependency Treebank), který je volně dostupný na webu.
stáhnout

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).

Termín odevzdání e-mailem je konec listopadu, prezentace programu proběhne v prosinci.


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