MorphoDiTa - představení

MorphoDiTa, plným názvem Morphological Dictionary and Tagger, je nástroj z dílny Ústavu formální a aplikované lingvistiky, který slouží k morfologické analýze přirozeného textu.

Pro mě nejzajímavější funkce je tagování jednotlivých slov a symbolů ve větách a generování tzv. lemma, což jsou základní tvary zadaných slov.

Ukázka

Vezměme si příklad na větě "Investor radí, jak na dvoucifernou inflaci.". Po otagování dostaneme následující výstup:

TokenLemmaTag
InvestorinvestorNNMS1-----A----
radíradit_:TVB-S---3P-AA---
,,Z:-------------
jakjak-3Db-------------
nana-1RR--4----------
dvoucifernoudvoucifernýAAFS4----1A----
inflaciinflaceNNFS4-----A----
..Z:-------------

Věta je rozložena na jednotlivé tokeny a ke každému dostaneme základní tvar a doplňující informace, kterým se budu podrobněji věnovat později.

Využití

K čemu je to dobré? V mém případě jsem hledal způsob, jak si rozřazovat články podle klíčových slov v nadpisu. Z toho důvodu (a důvodu rozmanitosti české gramatiky) bylo potřeba nějak získat podstatná jména v základním tvaru, jelikož jsem chtěl články obsahující "investor" a "investoři" zařadit do stejné kategorie.

MorphoDiTu je možné vyzkoušet a používat třemi způsoby:

  1. webové rozhraní
  2. REST API
  3. spustitelná binárka

Webové rozhraní

Webové rozhraní nabízí nejrychlejší způsob, jak si vyzkoušet otagování prvních pár textů a seznámit se s chováním různých přepínačů a vstupů. Umožňuje formátovat výstup do přehledné tabulky a pro případy "debugování" se jedná o příjemnou vizualizaci.

Je však potřeba myslet na to, že texty zadané do formuláře mohou být zpracovány a použity pro další zdokonalování systému.

REST API

Pro první pokusy s programovým zpracováním může posloužit REST API. To nabízí stejné služby jako webové rozhraní, ale je možné ho použít i z terminálu nebo z kódu.

Nehodí se však na produkční nasazení, v takovém případě je potřeba se domluvit s autory a stejně jako u webového rozhraní mohou být zadaná data použita ke zkvalitnění služby.

Programové zpracování

Zbytek tohoto seriálu se však budu věnovat lokálnímu používání bez závislosti na cizí webové službě.

Knihovna jako taková je psána v C++ a jedním z možných výstupů je XML, které vypadá následovně:

output.xml
<sentence>
    <token lemma="investor" tag="NNMS1-----A----">Investor</token>
    <token lemma="radit_:T" tag="VB-S---3P-AA---">radí</token>
    <token lemma="," tag="Z:-------------">,</token>
    <token lemma="jak-3" tag="Db-------------">jak</token>
    <token lemma="na-1" tag="RR--4----------">na</token>
    <token lemma="dvouciferný" tag="AAFS4----1A----">dvoucifernou</token>
    <token lemma="inflace" tag="NNFS4-----A----">inflaci</token>
    <token lemma="." tag="Z:-------------">.</token>
</sentence>

S tím už se dá pracovat. Pokud navíc vstup obsahuje více vět, jsou samozřejmě rozděleny do několika <sentence> elementů.

Problém bylo napojení na Python, kde jsem měl problém se zprovozněním poskytované knihovny a chtěl jsem navíc něco uživatelsky přívětivějšího, abych mohl jednoduše volat například:

Untitled
for noun in sentence.get_part_of_speech(POS.NOUN):
    # zpracovani podstatnych jmen

Proto jsem se rozhodl se do problematiky více ponořit a vytvořit si Python knihovnu vlastní...

Další kapitoly
  • MorphoDiTa - slovní druhy
  • MorphoDiTa - zpracování textu
  • MorphoDiTa - představení