spolecne
Napište program v Perlu, který rozpozná různé tvary stejných slov v textu v libovolném jazyce, aniž by měl k dispozici morfologický slovník. Přesněji: máte každé slovo rozsekat na morfémy. Příkladem morfému je předpona, kmen, přípona. Slovo může mít několik předpon (např. před+při+pravit), několik přípon (např. chladn+ějš+ímu), několik kmenů (např. chlor+o+vodík) apod. Některé morfémy jsou derivační (jejich prostřednictvím se z jednoho slova odvozuje jiné), jiné jsou ohýbací (jejich prostřednictvím se tvoří různé tvary (pád, číslo, stupeň, čas apod.) téhož slova. Hledejte oba druhy morfémů, rozlišovat je nemusíte. Pro jedno slovo může být správně i několik čtení, a tudíž několik segmentací (např. proud+it vs. pro+uď+it).
K dispozici máte seznam slov daného jazyka nalezených v korpusu, včetně jejich četností. Seznam čtěte ze standardního vstupu. Na každém řádku je vždy nejdříve počet výskytů slova, pak mezera a za ní slovo. Předpokládejte, že vstup je kódovaný v UTF-8. Všechna slova dostanete převedená na malá písmena.
Výstupem vašeho programu (pošlete ho na STDOUT) by měly být morfematické segmentace všech slov, která byla na vstupu, opět v UTF-8. Každé slovo má svůj řádek, na něm je uvedeno jako první položka (četnost slova už se na výstupu neobjeví). Následuje tabulátor (“\t”) a za ním jedna nebo více segmentací (analýz). Jednotlivé segmentace jsou oddělené čárkami, jednotlivé morfémy v rámci jedné segmentace jsou oddělené mezerami.
Nápověda: jeden z možných přístupů k tomuto problému je přes “vzory” - získejte seznamy přípon, které se vyskytly se stejnými kmeny, a kmenů, které se vyskytly s těmito příponami. Obdobně lze postupovat pro předpony.
K ladění dostanete česká data, abyste měli šanci poznat, zda výstup programu vypadá rozumně. Váš program ale musí fungovat nezávisle na jazyku vstupních dat. Je tedy nežádoucí, aby obsahoval např. seznam českých předpon. Se vstupem zacházejte, jako by to byl jazyk, o kterém nic nevíte. Váš program bude nakonec testován na některém z těchto jazyků:
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.