Sem vložte zadání Vaší práce.

Rozměr: px
Začít zobrazení ze stránky:

Download "Sem vložte zadání Vaší práce."

Transkript

1 Sem vložte zadání Vaší práce.

2

3 České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Magisterská práce Rozpoznávání pojmenovaných entit pro české texty Bc. Václav Zeman Vedoucí práce: Ing. Ivo Lašek 4. ledna 2013

4

5 Prohlášení Prohlašuji, že jsem tuto práci vytvořil samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některý zákonů (autorský zákon), nemám závažný důvod proti užití tohoto školního díla a k užití uděluji svolení. V Praze dne 4. ledna

6 České vysoké učení technické v Praze Fakulta informačních technologií c 2013 Václav Zeman. Všechna práva vyhrazena. Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora. Odkaz na tuto práci Václav Zeman. Rozpoznávání pojmenovaných entit pro české texty: Magisterská práce. Praha: ČVUT v Praze, Fakulta informačních technologií, 2013.

7 Abstract This work is mainly dedicated to the recognition of named entities, especially in the Czech environment. The main objective is to introduce the methods of natural language processing, which are used in the information extraction and, on the basis of the knowledge gained from them, to design, implement and test tool that can recognize named entities for Czech texts. Based on suggestion of this application, searches of already existing solutions were carried out, being largely focused on DBPedia Spotlight tool, whose recognition algorithms and learning methods, utilizing knowledge from Wikipedia, form the backbone of the implemented application. Keywords Named Entity Recognition, Information Extraction, Natural Language Processing, Machine Learning, DBpedia Spotlight Abstrakt Tato práce je převážně věnována problematice rozpoznávání pojmenovaných entit a to zejména v českém prostředí. Hlavním cílem bylo uvést metody z oblasti zpracování přirozeného jazyka, které se používají při extrakci informací, a na základě poznatků z nich získaných navrhnout, implementovat a otestovat nástroj, který dokáže rozpoznávat pojmenované entity pro české texty. V rámci návrhu této aplikace byla provedena rešerše již existujících řešení, která je z velké části zaměřena na nástroj DBpedia Spotlight, jehož rozpoznávací algoritmy a metody učení, využívající znalostí z Wikipedie, tvoří hlavní páteř implementované aplikace. Klíčová slova Rozpoznávání pojmenovaných entit, extrakce informací, zpracování přirozeného jazyka, strojové učení, DBpedia Spotlight 7

8

9 Obsah Úvod 15 Struktura práce Zpracování přirozeného jazyka Česká gramatika Formální gramatika Práce se slovy Pravděpodobnostní metody automatického rozpoznávání Extrakce informací Rozpoznávání pojmenovaných entit Pojmenovaná entita Konference MUC a CoNLL Hlavní problémy při rozpoznávání pojmenovaných entit Metody rozpoznávání pojmenovaných entit Rysy Vyhodnocovací metriky pro nástroje NER Existující nástroje NER DBpedia Spotlight Návrh řešení a implementace Výběr trénovacích dat Tvorba české DBpedie Předzpracování dat Rozpoznávací fáze Trénovací fáze Implementace Testování Testovací data Návrh testovací aplikace Implementace testovací aplikace Testovací fáze

10 Závěr 131 Literatura 133 A Seznam použitých zkratek 137 B Obsah přiloženého CD

11 Seznam obrázků 1.1 Možný výstup morfologické a syntaktické analýzy (derivační strom) Hierarchie formálních gramatik dle Chomského Derivační strom Ukázka parsování aritmetického výrazu CYK algoritmem Ukázka rozpoznávacího procesu s použitím modelu učení s učitelem Anotovaný korpus stromové struktury - treebank Příklad Markovova řetězce HMM model Viterbi algoritmus MEMM model Label Bias Problem CRF model Relace popsána trojicí dle RDF standardu Konkrétní relace popsána trojicí dle RDF standardu Entity a jejich jména dále děleny na typy pojmenovaných entit Hierarchická struktura typů pojmenovaných entit Nejednoznačnost entit stejného typu Nejednoznačnost typu entity Procesy vykonávané při rozpoznávání pojmenovaných entit Ukázka běžných položek vstupující do procesu učení/trénování klasifikačního modelu Ukázka učení bez učitele Ukázka sekvenčního klasifikátoru Odstraňování nejednoznačnosti dle vazby na jiné entity v okolí Ukázka automatického rozpoznávání DBpedia zdrojů nástrojem Spotlight Konstrukce sémantické Wikipedie pomocí extrakčního frameworku implementovaného DBpedia komunitou DBpedia RDF triple Ukázka Wikipedia Infoboxu Ukázka DBpedia zdroje vytvořený databázovým enginem Virtuoso Procesy, které jsou součástí předzpracování dat

12 3.2 Diagram tříd figurujících v tokenizační fázi Rozpoznávací procesy Diagram tříd figurujících v rozpoznávací fázi Ukázka množiny slov, kde každé slovo obsahuje dva kandidáty, z nichž je nutné vybrat právě jednoho Diagram tříd figurujících v trénovací a vyhledávací fázi Trénovací data, která konstruují jednotlivé vyhledávací modely během trénovací fáze Ukázka výstupu implementovaného nástroje, který identifikuje DBpedia zdroje v českém prostředí Ukázka grafického uživatelského prostředí k implementovanému rozpoznávacímu nástroji Procesy, které jsou vykonávány testovací aplikací Diagram tříd figurujících při konstrukci testovacích dat Diagram tříd figurujících v testovací fázi Příklad definice vzdálené služby, která je předmětem testování

13 Seznam tabulek 1.1 Základní mluvnická členění - slovní druhy, pády, rody, vidy, časy, stupně a slovesné rody Příklad slovotvorného rozboru Základní mluvnická členění - větné členy Ukázka postupu top-down parsování Ukázka postupu bottom-up parsování Tvary lemmat pro jednotlivé slovní druhy Příklad tabulky (matice) A pro HMM Příklad tabulky (matice) B pro HMM F-míra různých rozpoznávacích systémů anotující stejná testovací data Globální nastavení společné pro všechny testy Výsledek testování podobnostních funkcí Výsledek testování algoritmu simulované ochlazování pro různé počáteční teploty Výsledek testování algoritmu simulované ochlazování pro různé koncové teploty Výsledek testování algoritmu simulované ochlazování pro různé ochlazovací koeficienty Výsledek testování algoritmu simulované ochlazování pro různé hodnoty ekvilibria Výsledek testování disambiguačních algoritmů Výsledek testování disambiguačních algoritmů: ViterbiDisambiguator a UnambiguousFirstDisambiguator pro 1000 wiki stránek Výsledek testování pre-disambiguačních filtrů Výsledek testování post-disambiguačních filtrů Výsledek finálního testování dvou nejlepších variant nastavení algoritmu

14

15 Úvod Při neustálém vývoji informačních technologií a ohromné expanzi webových zdrojů nám stále na webu přibývají nové a nové informace, které dohromady tvoří obrovský soubor dat. A i když jsou tato data přístupná v elektronické podobě, a lze v nich teoreticky jednoduše vyhledávat dle klíčových slov, je velmi těžké z nich získávat potřebnou sémantickou znalost, která je pro člověka ve finále nejdůležitější. Proto je dnešním trendem obohacovat veškeré informace sémantickými metadaty, která upřesňují význam textu. Jedná se tedy o další evoluční stupeň stávajícího webu, ve kterém se snažíme transformovat prosté texty do strukturované podoby, čímž nám vzniká tzv. sémantický web. Pro tuto potřebu přicházejí na scénu aplikace, které dokážou z textu automaticky extrahovat sémantická metadata, pomocí nichž lze vyhledávat potřebné znalosti dle sémantických dotazů. Tyto nástroje pocházejí z oblasti zpracování přirozeného jazyka (angl. Natural Language Processing, dále jen NLP), ze které dále vychází obor extrakce informací (angl. Information Extraction, dále jen IE), v němž figuruje úloha pro rozpoznávání pojmenovaných entit (angl. Named Entity Recognition, dále jen NER). Úloha NER tvoří základní stavební kámen pro konstrukci sémantických znalostí z nestrukturovaných dat. Úkolem je v textu identifikovat pojmenované entity (tj. slova či slovní spojení, která v textu vystupují jako vlastní jména nějakých entit) a následně je klasifikovat do nějakých předem nadefinovaných typů (např. osoby, organizace, lokace apod.). Takovéto entity jsou pro získávání sémantického obsahu velmi důležitým faktorem, jelikož jsou nositeli relevantních informací v textu. A právě problematikou NER se zabývá tato diplomová práce. Struktura práce Aby bylo možné řešit úlohu rozpoznávající pojmenované entity v textu, bylo nutné provést rozsáhlou rešerši základních metod používaných při zpracovávání přirozeného jazyka. Stručný přehled nastudovaných poznatků z oboru NLP je vyčleněn v samostatné kapitole (viz. 1). V této kapitole jsou nastíněny obecně známe problémy a jejich způsoby řešení hlavně pro obor IE, který je podmnoužinou oblasti NLP; zaměřuji se zde ovšem pouze na problémy tý- 15

16 Úvod kající se českého jazyka (tyto problémy ovšem mohou být společné s jinými jazyky). Po nastudování základních algoritmů a přístupů, hojně využívaných při extrakci informací, bylo možné vstoupit do problemtiky NER a uvést obecné metody pro řešení této úlohy, či představit již existující a fungující nástroje NER. V rámci kapitoly 2, která se touto problematikou zabývá, byl podrobněji rozebrán nástroj DBpedia Spotlight, z něhož byly čerpány důležité informace pro implementaci vlastní aplikace. Poslední dvě kapitoly jsou věnovány samotnému návrhu, realizaci a testování nástroje NER pro české texty, který získává veškeré znalosti k rozpoznávání pojmenovaných entit z české DBpedie resp. Wikipedie. Aplikace se snaží identifikovat v textu takové segmenty, ke kterým lze přiřadit nějaký DBpedia zdroj; z tohoto zdroje lze pak snadno vyextrahovat typ dané pojmenované entity. Finální kapitola pouze demonstruje výsledky testování implementovaného nástroje s různými parametry nastavení na anotovaných datech z Wikipedie. 16

17 KAPITOLA 1 Zpracování přirozeného jazyka Počítačové zpracování přirozeného jazyka (angl. Natural Language Processing, dále jen NLP) je oborem sahajícím do oblasti informatiky a lingvistiky, proto se dá též nazývat: počítačová lingvistika (angl. computational linguistics). Cílem tohoto vědního oboru je vytrénovat stroj tak, aby dokázal porozumět přirozenému jazyku, a to buď v mluvené, nebo psané formě. My se v rámci této práce vymezíme pouze na psanou formu. Pro tento obor již bylo představeno mnoho algoritmů a metod, které dokážou řešit různé druhy problemů, týkajících se přirozeného jazyka; tato práce však uvádí pouze několik z nich. Jedním z odvětví tohoto oboru je extrakce informací (angl. Information Extraction, dále jen IE), která je oblíbena hlavně v oblasti webového inženýrství. Tomuto odvětví je věnována hlavní náplň teoretické části této práce, jelikož tvoří základ pro úspěšné řešení rozpoznávání pojmenovaných entit (angl. Named Entity Recognition, dále jen NER), což je samotným předmětem této práce. V této kapitole jsou tedy představeny takové oblasti NLP, které tvoří nutné minimum pro porozumění problematiky NER. Jedná se o parsování textu pomocí formální gramatiky, metody předzpracování textu a metody strojového učení, které jsou používané k natrénování pravděpodobnostních klasifikačních modelů. V poslední části jsou uvedeny základní úlohy oboru IE. 1.1 Česká gramatika Zpracovávání přirozeného jazyka v informatice se nedotýká pouze oboru aplikované lingvistiky, ale má hluboké základy právě v lingvistice teoretické. Tyto teoretické znalosti daného jazyka (jako např. morfologie, lexikologie, sémantika, syntax) nám mohou velmi pomoci při řešení velké části úloh NLP [27]; 17

18 1. Zpracování přirozeného jazyka proto nelze tuto oblast v rámci této práce zcela vynechat. V úvodu by tedy bylo dobré zmínit podstatné teoretické lingvistické obory a zopakovat základní gramatická pravidla pro český jazyk. Pojem gramatika známe ze základních škol jako nauku o stavbě slov a vět. Tato nauka obsahuje soubor pravidel pro nějaký jazyk, pomocí nichž lze pak generovat souvislý text. V nejširším pojetí dnes gramatika zahrnuje morfologii (tvarosloví a slovotvorbu), syntaxi (skladbu vět), fonetiku a fonologii (hláskosloví) [15]. Obory, které se přímo zabývají naukou o slovní zásobě a významu slova nazýváme lexikologie a sémantika. Všechny tyto zmíněné jazykové vědy tvoří součást teoretické lingvistiky. V počítačové lingvistice se dále můžeme setkat s pojmem formální gramatika, která definuje konečný soubor gramatických pravidel nějakého konkrétního formálního jazyka, kde formální jazyk představuje nějakou množinu konečných slov (tj. slov konečné délky) nad učitou abecedou. S takovýmto pojetím gramatiky může pak počítač mnohem lépe pracovat, jelikož dokáže vygenerovat na základě jasných pravidel libovolnou sekvenci slov nebo naopak dekódovat posloupnost pravidel, podle kterých byl řetězec vygenerován (viz. 1.2) [19]. Na začátek zde uvedu příklad toho, jak může být znalost gramatiky pro NLP užitečná. Největším problémem pro úlohy zabývající se extrakcí informací z textu, bývají nejednoznačná vícevýznamová slova tzv. homonyma. V oblasti NLP si s výrazem homonymum bohužel nevystačíme, jelikož lze zkoumat významy celých vět, nejen slov; proto takovýto problém nazýváme obecně nejednoznačností (angl. ambiguity). K pochopení sémantiky slov a celých vět nám může z velké části pomoci právě gramatika [19]. Vezměme např. slovo zdraví, které může nabývat několika významů: 1. Podst. jm. - stav fyzické i psychické pohody. 2. Příd. jm. - opak slova nemocní. 3. Sloveso - pozdrav (od slova zdravit ). Na tomto příkladu lze vidět, že k určení významu slova zdraví, stačí nalézt ten správný slovní druh. Tedy rozpoznávání slovních druhů může být jedním z klíčů k odstranění nejednoznačností. Dále lze toto slovo klasifikovat na základě dalších morfologických pravidel (viz ). I u pojmenovaných entit se v mnoha případech setkáváme s nejednoznačností, kde např. slovo Washington může nabývat významu hlavního města nebo příjmení prvního prezidenta Spojených států amerických (či jiné osoby); dokonce se může jednat i o organizaci. V tomto případě nám již identifikace slovního druhu, či jiného mluvnického významu, přímo nepomůže a bude potřeba použít sofistikovanějších metod k rozpoznání sémantiky tohoto slova (viz. 1.4). Ovšem i gramatika českého jazyka nám může práci zjednodušit, např. předzpracováním zkoumaného textu (normalizací, lemmatizací, tokenizací atd., viz. 1.3). 18

19 1.1. Česká gramatika Slovní druhy Pády Rody Podstatné jméno (substantivum) První (nominativ) Mužský (maskulinum) Přídavné jméno (adjektivum) Druhý (genitiv) Ženský (femininum) Zájmeno (pronomium) Třetí (dativ) Střední (neutrum) Číslovka (numeralium) Čtvrtý (akuzativ) Stupně přídavných jmen Sloveso (verbum) Pátý (vokativ) První (pozitiv) Příslovce (adverbium) Šestý (lokál) Druhý (komparativ) Předložka (prepozice) Sedmý (instrumentál) Třetí (superlativ) Spojka (konjunkce) Slovesný vid Číslo Částice (partikule) Dokonavý (perfektum) Jednotné (singulár) Citoslovce (interjekce) Nedokonavý (imperfektum) Množné (plurál) Čas Způsob Slovesný rod Přítomný (prézens) Oznamovací (indikativ) Činný (aktivum) Minulý (préteritum) Rozkazovací (imperativ) Trpný (pasivum) Budoucí (futurum) Podmiňovací (kondicionál) Infinitiv Tabulka 1.1: Základní mluvnická členění - slovní druhy, pády, rody, vidy, časy, stupně a slovesné rody Morfologie Morfologii chápeme jako nauku o tvaru slova bez výkladu významu tohoto slova; výklad o významech tvarů bývá pak součástí sémantiky a skladby (viz ). Slova příbuzná věcným významem mívají část slova stejnou, mají společný základ, zvaný také kořen; u jednotlivých tvarů slov je společný význam pozměněn především příponami a předponami. Nejmenší jednotku, která může nést význam (ať už jde o předponu, kořen nebo příponu) nazýváme morfém. Z jednoho nebo více morfémů (hlavně kořenů) se skládá kmen slova (angl. stem) [15]. V oblasti NLP je také důležitým termínem slovo lemma, které představuje základní tvar slova používaného ve slovnících (slovníkový tvar). Příklad slovotvorného rozboru můžete vidět v tabulce 1.2. Mimo slovotvorby jsou dalšími procesy v oblasti morfologie např. odvozování (derivace) a ohýbání slov (flexe), zahrnující skloňování (deklinace) a časování (konjugace). Dále lze klasifikovat slovní tvary do jednotlivých morfologických kategorií (viz. tabulka 1.1). 19

20 1. Zpracování přirozeného jazyka Do pis ova tel é Předpona Kořen Kmenotvorná přípona Přípona Koncovka Kmen Slovotvorný základ Slovotvorný prostředek Slovotvorný prostředek Tvarotvorný prostředek Tabulka 1.2: Příklad slovotvorného rozboru Větné členy Podmět (predikát) Přísudek (subjekt) Předmět (objekt) Doplněk Příslovečné určení (adverbiale) místa, času, způsobu a příčiny Přívlastek (atribut) shodný a neshodný; holý, rozvitý, několikanásobný a postupně rozvíjející; volný a těsný Věty podle postoje mluvčího Oznamovací Tázací Žádací Zvolací forma Druhy vět vedlejších Podmětná Přísudková Přívlastková Předmětná Příslovečná Doplňková Tabulka 1.3: Základní mluvnická členění - větné členy Nejběžnějšími morfologickými úlohami (pro český jazyk) v oblasti počítačové lingvistiky bývá určování slovních druhů (angl. part-of-speech tagging), lemmatizace a stemming. Tyto úlohy bývají častokrát součástí mnoha jiných procesů NLP; jedním z těchto procesů je právě rozpoznávání pojmenovaných entit a dále např. překládání, vyhledávání aj Syntax Syntax, neboli skladba, je nauka o stavbě vět a souvětí. Větu chápeme jako sekvenci slov vyjadřující myšlenky, kterou dělíme na větu jednoduchou (vyjadřující jednu myšlenku) a souvětí (větný celek složený z dvou i více vět jednoduchých; vyjadřuje složitější myšlenku nebo více myšlenek). Nejmenší jednotkou větné struktury je větný člen (viz. tabulka 1.3). Věty v souvětí rozlišujeme dle závislostí na jiných větách; věta hlavní není závislá na jiné větě 20

21 1.2. Formální gramatika Obrázek 1.1: Možný výstup morfologické a syntaktické analýzy (derivační strom). v souvětí; věta vedlejší je závislá na jiné větě. Souvětí dělíme na souřadné (obsahuje nejméně dvě věty hlavní) a podřadné (obsahuje jednu větu hlavní) [15]. Výstup morfologické a syntaktické analýzy (např. derivační strom - viz , ukázka na obrázku 1.1) bývá vstupem pro analýzu sémantickou, kde se snažíme z dostupných informací odvodit myšlenku dané věty. Tento sémantický rozbor bývá klíčový právě pro odstranění nejednoznačností. Při řešení úlohy NER se pohybujeme hlavně na této rovině, která se ovšem neobejde bez analýzy gramatické. 1.2 Formální gramatika V předchozí části jsme si uvedli základní gramatické kategorie pro český jazyk tak, jak jsme se učili na základní škole. Nyní ovšem nastává situace, kdy potřebujeme těmto gramatickým pravidlům přirozeného jazyka dát nějaký konkrétní formální (matematický) popis, kterému by dokázal porozumět i stroj. Množina složených jazykových výrazů není v přirozém jazyku konečná (např. spojka a může spojovat libovolné množství vět); tudíž je potřeba formálně nadefinovat takovou gramatiku, která vychází z mluvnických pravidel přirozeného jazyka a zároveň umí generovat nekonečné množství jazykových výrazů prostřednictvím konečného souboru pravidel. Tedy formální gramatikou rozumíme prostředek jistých znalostí o jazyce, a to natolik explicitně a formálně, 21

22 1. Zpracování přirozeného jazyka že tyto znalosti mohou být dostupné stroji [6]. Obecnou definici formální gramatiky prvně uvedl Noam Chomsky v padesátých letech minulého století a říká nám, že gramatika G je čtveřice (N, Σ, P, S), kde: N je konečná množina neterminálních symbolů (neterminálů). Σ je konečná množina terminálních symbolů a platí, že N Σ =. P je konečná množina odvozovacích pravidel, kde každé pravidlo je tvaru (N Σ) N(N Σ) (N Σ). S je prvek z N nazývaný počáteční symbol. Chomsky dále definoval hierarchii tříd formálních gramatik [6]: Typ 0 (frázové gramatiky): Tato gramatika obsahuje přepisovací pravidla v nejobecnějším tvaru, kde sekvence terminálů a neterminálů, může být přepsána opět na nějakou sekvenci terminálů a neterminálů. Typ 1 (kontextové gramatiky): Tato gramatika opět povoluje přepisovat sekvenci terminálů a neterminálů na nějakou sekvenci terminálů a neterminálů, tedy α β, kde α, β (N Σ). Ovšem musí zde platit podmínka, že α β. Typ 2 (bezkontextové gramatiky): Přepisovací pravidlo u této gramatiky vypadá následovně A γ, kde A N a γ (N Σ) Typ 3 (regulární gramatiky): Pravidla těchto gramatik jsou omezena na jeden neterminál na levé straně a na jeden terminál na pravé straně, který může být následován jedním neterminálem A a ab, kde A, B N a a Σ. Hierarchie těchto gramatik je znázorněna na obrázku 1.2. Tato práce se ovšem bude dále zabývat pouze bezkontextovými gramatikami, jelikož jsou hlavní páteří právě pro popis přirozených jazyků Bezkontextové gramatiky Jak již bylo ukázáno v hierarchii pana Chomského, bezkontextové gramatiky mají přepisovací tvar A γ, kde A N a γ (N Σ). Co si lze pod tímto zápisem představit? Tak uvažujme např. gramatiku aritmetických výrazů s operacemi +,,, a prvky a, b. Tuto gramatiku lze formálně zapsat takto: N = S 22 Σ = a, b, +,,,, (, ) P = S S + S, S S S, S S S, S S S, S (S), S a, S b (1.1)

23 1.2. Formální gramatika Obrázek 1.2: Hierarchie formálních gramatik dle Chomského. Máme zde počáteční symbol S, který představuje nějaký aritmetický výraz. Dále terminály, které vyjadřují nějakou aritmetickou operaci a terminály, které představují možné použitelné proměnné. Definované neterminály nám popisují, jak kombinovat terminály s jinýmy terminály resp. neterminály (jsou zde pokryty operace: sčítání, odčítání, dělení, násobení a uzávorkování). Tak např. výraz typu a ((a+b) b) lze vygenerovat pomocí přepisovacích pravidel takto: S S S a S a (S) a (S S) a ((S) S) a ((S + S) S) a ((a + S) S) a ((a + b) S) a ((a + b) b) (1.2) Přepisovacích pravidel bezkontextové gramatiky, které si nadefinujeme dle morfologických a syntaktických znalostí mluvnice, lze využít i pro přirozený jazyk. Vezměme si tedy např. věty: 23

24 1. Zpracování přirozeného jazyka P etr a P avel šli domů (1.3) Řím a P raha leží v Evropě (1.4) Uvažujme tedy terminální symboly jako slova věty 1.3 a 1.4, a neterminální symboly jako slovní druhy a fráze. Fráze v aplikované lingvistice představují složku hierarchické a syntaktické struktury věty; dělíme je podle slov, které nejsou rozvíjeny žádným jiným členem fráze (toto slovo nazýváme hlavou fráze). Máme frázi jmennou - NP (hlavou je podstatné jméno), slovesnou - VP (hlavou je sloveso), předložkovou - PP (hlavou je předložka), adverbiální - AdvP (hlavou je příslovce), adjektivní - AdjP (hlavou je přídavné jméno). Jednoduchou formální gramatiku pokrývající morfologické a syntaktické znalosti pro dané věty lze definovat takovýmto způsobem (slovní druhy jsou zde uvedeny ve zkratce dle anglických názvů, tedy NN - podst. jm., VB - sloveso, CC - spojka, PREP - předložka, ADV - příslovce): N = S Σ = {P etr, P avel, Řím, P raha, Říma, Evropě, šli, leží, a, do, v} S NP V P P P NP NN CC NN V P V B P P ADV P REP NN P = NN P etr P avel Řím P raha Evropě ADV domů V B šli leží CC a P REP v (1.5) Nadefinovali jsme si tedy jednoduchou gramatiku, kterou lze vygenerovat větu 1.3 nebo 1.4. Tato gramatika nám ovšem nebrání generovat věty s libovolnými, v ní obsaženými terminály, např.: P etr a P raha leží domů (1.6) Z tohoto příkladu lze vidět, že formální gramatikou lze generovat syntakticky správné věty, ovšem sémanticky naprosto nesmyslné. Při zpětné analýze ovšem dokážeme díky bezkontextové gramatice vyjadřovat složité vztahy mezi slovy a vnořenými (hierarchickými) entitami. To se 24

25 1.2. Formální gramatika nám náramně hodí právě pro úlohu NER, kde můžeme např. definovat následující přepisovací pravidla, která nám identifikují osobu v libovolném textu: Osoba T itul Osoba Osoba Jméno P říjmení Osoba P říjmení T itul Ing. Mgr. Bc. P hdr. Mudr.... Jméno Adam Boleslav Dominik Emil... P říjmení Adámek Benda Couf al Erben... (1.7) Pokud máme na vstupu sekvenci terminálů, které jsou součástí nadefinovaného formálního jazyka, např. Mgr. Emil Coufal, dokážeme na základě přepisovacích pravidel zjistit, že celá tato fráze vyústí v jeden neterminál Osoba. Mgr. Emil Coufal T itul Emil Coufal T itul Jméno Coufal T itul Jméno P říjmení T itul Osoba Osoba (1.8) Pokud bychom ale nadefinovali vstupní posloupnost jako Titul Příjmení Jméno, což je ze sémantického hlediska naprosto v pořádku, následným parsováním (viz ) bychom konečný neterminál Osoba nezískali, jelikož pro daný vstup neexistuje gramatika, která by toto umožňovala. Tudíž k úspěšné analýze textu je potřeba nadefinovat takovou gramatiku, která nám pokryje co nejvíce kombinací terminálů a neterminálů Derivační strom Derivační strom (angl. parse tree) bývá nejběžnější strukturou, která zobrazuje odvození neterminálních symbolů od jiných neterminálních nebo terminálních symbolů [19]. Startovním symbolem, neboli kořenem tohoto stromu, bývá symbol S, který je uzlem celé věty (angl. sentence). Příklad derivačního stromu je na obrázku 1.3 (zde probíhá odvození neterminálů z věty 1.4). Takovýchto stromových struktur se využívá hlavně v korpusech (viz ), kde jsou jednotlivé anotace (neterminály) přiřazovány slovům (terminálům). Takovéto typy korpusů se nazývají treebank a představují důležitou roli pro parsování textu přirozeného jazyka, jelikož z nich můžeme získat obrovskou množinu terminálů a neterminálů, a tím tak zkonstruovat model formální gramatiky pro daný jazyk (např. morfologická a syntaktická pravidla, pojmenované entity atd.). 25

26 1. Zpracování přirozeného jazyka Obrázek 1.3: Derivační strom. Pro konstrukci takovéhoto stromu z nějakého textu využíváme tzv. parsovací algoritmy. Ty se snaží nalézt všechny derivační stromy pro danou posloupnost terminálů, které odpovídají určité předdefinované formální gramatice. Nejběžnějšími metodami, které dokáží takto analyzovat vstupní sekvenci terminálů, jsou top-down a bottom-up algoritmy (viz a ) Parsovací algoritmy formální gramatiky V počítačové lingvistice považujeme parsování za syntaktickou analýzu textu, s cílem určit jeho gramatickou strukturu; neboli odvodit derivační strom na základě předem definované formální gramatiky. Tento způsob rozpoznávání je založen pouze na pevných pravidlech a tudíž jsou jeho výsledky deterministické [13]. Naopak je tomu u pravděpodobnostních algoritmů (viz. 1.4), kde probíhá rozpoznávání dle statistických údajů a znalostních modelů, které mohou být v čase měněny. Determinismus zde ovšem platí pouze pro daný typ algoritmu. Samozřejmě může nastat situace, kdy dva parsovací algoritmy vrátí pro stejná vstupní data dva různé výsledky. Příkladem nám může být již zmíněná množina pravidel pro aritmetické operace (viz. 1.1). Mějme aritmetickou operaci a dva parsovací algoritmy, z nichž jeden parsuje zleva doprava a druhý zprava doleva; pak pro první algoritmus je nejprve provedeno násobení a pro druhý algoritmus je neprve provedeno sčítání. Tedy dva různé algoritmy nám vrátí pro stejná vstupní data a stejná gramatická pravidla dva různé derivační stromy. Pokud bychom chtěli dostávat správné výsledky aritmetických operací, mu- 26

27 1.2. Formální gramatika seli bychom vytvořit speciální parsovací nástroj, který respektuje a dodržuje veškerá pravidla matematické algebry. Následující odstavce popisují základní parsovací algortimy, které mohou tvořit kostru jiných uživatelsky specializovaných algoritmů (např. pro parsování již zmíněných aritmetických operací) Top-Down Parsing Prvním algoritmem, který konstruuje derivační strom, je metoda shora-dolů (angl. top-down). Začíná se od počátečního symbolu S, který tvoří kořen stromu (v hloubce 0). V dalším kroku se snažíme dle gramatiky zkonstruovat první možný strom (v hloubce 1) odvozený od počátečního symbolu S. Pokračujeme dále stejným způsobem od nejlevějšího symbolu k nejpravějšímu (tím získáme levou derivaci stromu) a zároveň se snažíme eliminovat takové typy stromů, které nelze přizpůsobit parsovanému textu; jedná se tedy o prohledávání do hloubky. Takto pokračujeme rekurzivně do konstrukce konečného derivačního stromu, jehož listy tvoří terminální symboly odpovídající analyzovanému textu [13]. Uvažujme gramatiku aritmetických operací z příkladu 1.1. Pokud na tuto gramatiku použijeme právě algoritmus top-down s libovolným vstupem, program se nám bohužel zacyklí, jelikož se budou rekurzivně tvořit podstromy, které nevyústí v žádné terminály: S S + S S + S + S S + S + S +... (1.9) K tomu dochází v případech, kdy gramatika disponuje přepisovacím pravidlem s levou rekurzí (ta nastává, pokud existuje neterminál A, který je definován způsobem: A Aα B a B... Aα, kde α představuje libovolnou sekvenci terminálů a neterminálů). Pokud tato situace nastane, je nutné gramatiku přeformulovat tak, aby k těmto rekurzím nedocházelo [16] (tedy eliminovat veškeré levé rekurze). Pro zjednodušení si gramatiku z příkladu 1.1 zredukujeme na pouze dvě operace a +: N = S Σ = a, b, +,, (, ) P = S T S1 (S) S1 T S1 + T S1 (S) + (S) ɛ T a b (1.10) Takto upravená gramatika nám eliminuje ony nekonečné cykly. Můžeme vyzkoušet např. na aritmetickém výrazu a (a+b). V tabulce 1.4 jsou znázorněny jednotlivé kroky výpočtu prohledávání do hloubky. Tučně zvýrazněné kroky tvoří správná řešení; ostatní kroky jsou slepé uličky, kterými algoritmus zbytečně prochází. 27

28 1. Zpracování přirozeného jazyka Krok Podstrom Ukazatel 0 S a (a + b) 1 T S1 a (a + b) 2 a S1 a (a + b) 3 a T S1 a (a + b) backtrack 4 a a S1 a (a + b) backtrack 5 a b S1 a (a + b) backtrack 6 a + T S1 a (a + b) backtrack 7 a + a S1 a (a + b) backtrack 8 a + b S1 a (a + b) backtrack 9 a (S) a (a + b) 10 a (T S1) a ( a + b) 11 a (a S1) a ( a + b) 12 a (a T S1) a (a +b) backtrack 13 a (a + T S1) a (a +b) 14 a (a + a S1) a (a+ b) backtrack 15 a (a + b S1) a (a+ b) 16 a (a + b T S1) a (a + b ) backtrack 17 a (a + b + T S1) a (a + b ) backtrack 18 a (a + b (S)) a (a + b ) backtrack 19 a (a + b + (S)) a (a + b ) backtrack 20 a (a + b ɛ) a (a + b ) 21 a (a + b) a (a + b) Tabulka 1.4: Ukázka postupu top-down parsování Bottom-Up Parsing Opačným postupem konstruujeme derivační strom algoritmem zdola-nahoru (angl. bottom-up). V tomto případě postupujeme od pravého terminálu až k poslednímu levému terminálu (tímto způsobem získáme opět levou derivaci stromu). Postupujeme metodou shift/reduce, kde metoda shift posune ukazatel o jeden terminál doleva a následně metoda reduce najde příslušné přepisovací pravidlo pro symboly od ukazatele do posledního symbolu směrem doprava; pokud je pravidlo nalezeno, je aplikováno na vyhovující symboly (tím získáme nový neterminál); pokud pravidlo není nalezeno, provede se opět shift/reduce. Takto postupujeme až do kořenového symbolu S, přičemž nalezený derivační strom pokrývá všechny terminály obsažené ve vstupním textu [13]. Tato metoda parsování má oproti top-down algoritmu tu výhodu, že nevytváří nekončící rekurze, tak jak to bylo možné např. u gramatiky 1.1. V tabulce 1.5 jsou znázorněny jednotlivé kroky výpočtu parsování aritmetického výrazu s upravenou gramatikou pro top-down parsování. Ve výsledcích obou algoritmů je vidět, že obě parsovací metody vrací totožnou (resp. levou) derivaci 28

29 1.2. Formální gramatika Krok Podstrom Ukazatel 0 a (a + b) a (a + b ) shift 1 a (a + b) a (a+ b) shift 2 a (a + T ) a (a+ b) reduce 4 a (a + T ) a (a +T ) shift 5 a (a S1) a (a +T ) reduce 6 a (a S1) a ( a S1) shift 7 a (T S1) a ( a S1) reduce 8 a (S) a ( T S1) reduce 9 a (S) a (S) shift 10 a S a (S) reduce 11 a S a S shift 12 a S a S shift 13 a (S) a (S) backtrack 14 a (S) a (S) shift 15 a S1 a (S) reduce 16 a S1 a S1 shift 17 T S1 a S1 reduce 18 S T S1 reduce Tabulka 1.5: Ukázka postupu bottom-up parsování. stromu. Každá z výše zmíněných strategií parsování má své výhody a nevýhody. Výhodou top-down strategie je, že negeneruje podstromy, které nevedou ke kořenovému neterminálu S; zatímco bottom-up strategie tyto slepé cesty zbytečně prochází. Naopak top-down parsování zbytečně plýtvá časem vytvářením podstromů, které nevyústí v terminály vstupního textu. Velikou nevýhodou top-down algoritmu jsou již zmíněné nekončící cykly, do ktérých se program může dostat, pokud není příslušná gramatika ošetřena proti levým rekurzím CYK Parsing Cocke Younger Kasami (CYK) algoritmus je parsovací metoda, která využívá vlastnosti bottom-up algoritmu a dynamického programování. Parsování zde probíhá zdola nahoru a mezivýsledky jsou ukládány do tabulky velikosti N 2 /2, kde N je velikost analyzované sekvence symbolů. Nutnou podmínkou pro správný chod tohoto algoritmu je vstup gramatických pravidel v Chomského normální formě (dále jen CNF). Tato forma je pouhou restrikcí formální 29

30 1. Zpracování přirozeného jazyka gramatiky, která říká, že všechna odvozovací pravidla jsou ve tvaru: A BC A α S ɛ (1.11) Kde A, B a C jsou neterminály, α je terminál, S je startovní neterminál a ɛ je prázdný řetězec, přičemž B ani C nemohou být startovní neterminály. Důležitým faktem je pro nás možnost transformace jakékoliv bezkontextové gramatiky do CNF (pomocí CYK algoritmu lze tedy parsovat text podle jakýchkoliv bezkontextových gramatik) [19]. Mějme nadefinovanou formální gramatiku v CNF s přepisovacími pravidly P a vstupní sekvencí parsovaného textu O; potom tělo algoritmu pro konstrukci derivačního stromu vypadá pro CYK následovně: Pseudokód CYK algoritmu 1 Matrix CYK(P, O) { 2 //Inicializace 3 n = O.length 4 V = Matrix[n, n] 5 //Převedu terminály na neterminály a uložím do prvního řádku matice 6 for i = 1 to n 7 V[i, 1] = { A A α[i] P } 8 //Procházím všechny řádky matice od 2 do n 9 for j = 2 to n 10 //Pro každý řádek procházím všechny sloupce 11 //bez posledního oproti předchozímu řádku 12 for i = 1 to n-j+1 13 //Pro každou buňku hledám neprokombinované dvojice v matici 14 for k = 1 to j-1 15 //Hledám přepisovací pravidlo pro dvojici vypočtených neterminálů 16 //v matici V na pozicích [i,k] a [i+k,j-k] 17 V[i, j] = V[i, j] 18 { A A BC P, B V [i, k], C V [i + k, j k] } 19 return V 20 } Z pseudokódu můžeme jednoduše vyčíst složitost tohoto algoritmu. Ta je díky dynamickému programování polynomiální Θ( O 3 P ). Na obrázku 1.4 můžete vidět jednotlivé kroky výpočtu pro gramatiku aritmetických operací G z příkladu 1.10, převedenou do CNF. Pro formální správnost výpočtu je na konec parsované sekvence přidán implicitně prázdný symbol ɛ. Hranami propojené, modře vybarvené buňky tvoří výsledný derivační strom Částečné parsování a kouskování Pro většinu parsovacích úloh NLP není nutné vytvářet stromy pro všechny symboly vstupního textu. Např. pro extrakci informací (tudíž i pro NER) obvykle chceme pouze nějakým způsobem identifikovat a klasifikovat segmenty v analyzovaném textu, které obsahují nějaké cenné informace [19]. Naším cílem 30

31 1.2. Formální gramatika Obrázek 1.4: Ukázka parsování aritmetického výrazu CYK algoritmem. je tedy parsovat pouze tyto segmenty a obětovat ty části stromu, které jsou pro naši úlohu nepodstatné; je totiž nutné si uvědomit, že plná analýza nemusí vždy vrátit ideální derivační strom (kvůli velkému šumu nebo velké vzdálenosti dvou na sobě zavislých slov či frází) a její asymptotická časová složitost nemůže být lepší než Θ(N 3 ) (kde N značí počet symbolů analyzované sekvence). Proto je žádané parsovat pouze tu část stromu, která je pro naši úlohu relevantní [12]. Tuto operaci nazýváme částečným parsováním (angl. partial parsing). Kouskování (angl. chunking nebo také shallow parsing) je jedním ze základních úkolů částečného parsování. Je to proces, kdy se snažíme identifikovat nepřekrývající se segmenty textu, tvořící nerekurzivní fráze, které dále klasifikujeme do gramatických nebo jiných souborů (např. určujeme větné členy nebo vyhledáváme pojmenované entity bez nutnosti plného parsování). Kouskováním tedy neklasifikujeme pouze jednotlivá slova, ale i víceslovné fráze (pro úlohu NER - víceslovné entity). Výsledkem takovéto analýzy je anotovaný text, který lze vyjádřit např. závorkovou notací: Prezident [PERSON Barack Obama] se vrátil z [COUNTRY České republiky] zpět do [CITY Washingtonu]. Tato metoda parsování se od těch předchozích liší tím, že již nepracujeme s bezkontextovou gramatikou tak, jak ji známe, ale pouze s podmnožinou pravidel nějaké gramatiky. Podmínkou této gramatiky je, že pravidla nesmějí obsahovat rekurze; obecně pravá strana přepisovacího pravidla neodkazuje přímo nebo nepřímo na kategorii (resp. neterminál), které se toto pravidlo týká. Cílem kouskování je tedy rozdělit vstupní řetězec na bloky, které jsou nerekurzivní, nepřekrývají se, a nemusejí pokrývat všechna slova. Ve většině případů kouskujeme dle slov a jejich vlastností zleva doprava a snažíme se nalézt nejdelší blok (nebo také kus angl. chunk), který vyhovuje nějakému pravidlu v gramatice. Tento hladový přístup ovšem nezaručuje nalezení nejlepšího 31

32 1. Zpracování přirozeného jazyka řešení [19], ale ve finále bývá mnohem efektivnější, než úplné parsování dle bezkontextových gramatik. Kouskujeme obvykle v následujících krocích [2]: 1. Tokenizace (rozdělení řetězce na sekvenci slov, více v kapitole 1.3.2). Problém: Identifikace vět a multi-slov. 2. Anotace slov (identifikace typu slova jako např. slovní druh viz. 1.4 nebo jiná vlastnost viz. 2.5). Problém: Nejednoznačnost 3. Identifikace bloků (rozdělení slov do frází a klasifikace těchto frází např. již zmiňovaným hladovým algoritmem nebo jinou heuristikou). Problém: Určení konce fráze Tokenizační a anotační problémy na úrovni slov jsou řešeny v dalších kapitolách. Problém určení konce fráze řešíme přidáním speciálního tagu ke každému slovu, který určuje pozici slova. Existují různá schémata těchto anotací; nejběžnější je schéma IOB (inside, outside, begin) [19]. Slovo označené tagem outside leží mimo jakýkoliv blok; slovo označené tagem begin leží uvnitř nějaké bloku vždy na první pozici tohoto bloku; ostatní slova, která leží uvnitř bloku, jsou označena tagem inside. [O Prezident][B Barack][I Obama] [O se][o vrátil][o z][b České][I republiky] [O zpět][o do][b Washingtonu] Složitost tohoto typu částečného parsování je lineární a oproti plné analýze tedy časově efektivnější [2]. Pro úlohu typu NER je tedy rozhodně nejlepší parsovací variantou kouskování, které klasifikuje pojmenované entity sekvenčně dle rysů jednotlivých slov (viz ) Unifikační gramatiky Unifikační gramatika je speciálním typem gramatiky, která je založena na bezkontextové gramatice, strukturách rysů (angl. feature structures) a jejich vzájemné unifikovatelnosti [36]. Tato gramatika řeší hlavní nedostatky a problémy bezkontextové gramatiky a je jakýmsi jejím rozšířením (dovoluje nám i generovat kontextové jazyky). 32

33 1.2. Formální gramatika Problémy s bezkontextovou gramatikou mohou nastat relativně snadno. Mějme gramatiku: N = S Σ = {studenti, chodí, do, školy} S NP V P P P NP NN V P V B P = P P P REP NN N N studenti školy V B chodí P REP do (1.12) Potom lze pomocí této gramatiky vygenerovat větu školy chodí do studenti, což je samozřejmě gramaticky i sémanticky špatně. Gramatika se zdá být nadefinována správně, jelikož předložková fráze nám vzniká skutečně kombinací předložky a podstatného jména, ovšem nelze říci z jakéhokoliv tvaru podstatného jména (chybí nám tu bližší kontext slova). Pro náš jednoduchý příklad stačí rozlišovat u podst. jm. pády a specifikovat jaké předložky se pojí s určitým pádem: S NP V P P P NP NN1 V P V B P P P REP 2 NN2 NN1 studenti NN2 školy V B chodí P REP 2 do (1.13) Takto upravená gramatika nám již bude generovat syntakticky a sémanticky správné věty, jelikož máme striktně definováno, že předložka do se může pojit pouze s podst. jm. druhého pádu a podmět může být pouze podst. jm. prvního pádu. V reálu bychom pro formální popis české gramatiky museli nadefinovat všechny možné gramatické jevy a naše bezkontextová gramatika by nám expandovala do neskutečných rozměrů. Např. u podstatného jména sledujeme 7 pádů, 2 čísla, 3 rody a 4 vzory ke každému rodu (vynecháme-li soudce a předsedu); tedy celkově by bylo nutné nadefinovat pro podstatná jména 168 neterminálů. Právě problém rozkládání a expanze neterminálů nám řeší uni- 33

34 1. Zpracování přirozeného jazyka fikační gramatika, kde místo sady bezkontextových pravidel pouze omezíme dané pravidlo nějakou podmínkou: P P P REP NN P REP P ÁD = (1.14) NN P ÁD Struktura rysů Struktura rysů (ang. feature structures) je jakási entita obsahující množinu rysů, kde rys tvoří dvojice název-hodnota (tedy název rysu a hodnota tohoto rysu). [ ] P ÁD 2 (1.15) V předchozí úkázce vidíme nadefinovanou strukturu obsahující rys PÁD s hodnotou 2. Jak již bylo uvedeno, strukturu tvoří množina rysů - je tedy možné rysy neomezeně do struktury přidávat. [ P ÁD ] 2 ČÍSLO j. (1.16) Struktury rysů lze spojovat tzv. unifikací. Unifikace je operace na dvou unifikovatelných strukturách, jejímž výsledkem je nová struktura rysů. Dvě struktury rysů jsou unifikovatelné, jestliže se shodují jejich hodnoty v rysech, které jsou obsaženy v obou strukturách [36]. [ ] P ÁD 2 ROD muž. [ ] P ÁD 1 ROD muž. [ ] P ÁD 2 = ČÍSLO j. P ÁD 2 ROD muž. ČÍSLO j. [ ] P ÁD 2 = CHY BA ČÍSLO j. (1.17) Je možné rovněž vnořit strukturu rysů do jiné struktury rysů: P ÁD 2 ROD muž. ROD T Y P životný V ZOR pán (1.18) 34

35 1.3. Práce se slovy Použití struktury rysů v gramatice Pro definici unifikační gramatiky využijeme gramatiku bezkontextovou, kterou pouze rozšíříme o struktury rysů (viz. příklad z úvodu 1.14): A γ {množina podmínek} (1.19) Bezkontextovou gramatiku z příkladu 1.12 můžeme přepsat do unifikační velmi jednoduše: přepisovací pravidla zůstavají stejná, pouze doplníme omezení. Výsledná gramatika bude vypadat následnovně: S NP V P P P NP NN NN P ÁD = 1 V P V B P P P REP NN P REP P ÁD = NN studenti NN P ÁD = 1 NN školy NN P ÁD = 2 P REP do P REP P ÁD = 2 V B chodí NN P ÁD (1.20) Unifikační gramatiku lze parsovat stejným způsobem jako bezkontextovou, ovšem je nutné pro každé přepisovací pravidlo uvažovat i případné podmínky [19]. 1.3 Práce se slovy Prvním krokem k úspěšnému řešení běžné úlohy NLP bývá nějaké předzpracování pozorovaných dat. Jedná se ve směs o identifikaci částí textu, úpravy slov a jejich převedení do základního tvaru. Pohybujeme se tedy na morfologické úrovni, kde pracujeme pouze s jednotlivými slovy a nezabýváme se žádnou syntaxí či sémantikou. Výstup takovéto morfologické analýzy bývá vstupem pro vyšší lingvistické vrstvy (syntax, sémantika apod.). 35

36 1. Zpracování přirozeného jazyka V této kapitole jsou tedy uvedeny nejběžnější procesy předzpracování textu vykonávané před finální extrakcí informací. Tyto procesy jsou obvykle závislé na nějakém nástroji, který dokáže textem procházet a vyhledávat tvary dle nějakých nadefinovaných vzorů (angl. pattern matching). Takovýto nástroj je většinou postaven na nejpoužívanějších vyhledávácích standardech na úrovni znaků, a tím jsou regulární výrazy [19] Regulární výrazy V hierarchii gramatik pana Chomského existuje gramatika regulární (podmnožina gramatiky bezkontextové), která obsahuje pravidla tvaru X wy, X w a S ɛ, kde X a Y jsou neterminály, w je sekvence terminálů, S je počáteční neterminál a ɛ je prázdný symbol [6]. Regulární gramatika generuje regulární jazyky, které lze definovat nad abecedou Σ následovně: Prázdný jazyk je regulární. Pokud jazyk obsahuje jen prázdný symbol ɛ, pak je regulární. Pro každé a Σ, je jazyk {a} regulární. Pokud A a B jsou regulární jazyky, protom A B (sjednocení), A B (zřetězení) a A (libovolné opakování) jsou regulární jazyky. Žádné další jazyky nad Σ nejsou regulární. Regulární výrazy jsou řetězce popisující regulární jazyky. Tyto výrazy (resp. vzory) reprezentují množinu (v nějakých přídech i nekonečnou množinu) řetězců v Σ. V praxi se s regulárními výrazy setkáváme v případě, kdy máme nějaký pozorovaný řetezec O obsahující symboly z abecedy Σ a snažíme se zjistit, zda-li O odpovídá vzoru předdefinovaného regulárního výrazu; této operaci se obecně říká pattern matching. Tento koncept byl zpopularizován při zavedení regulárních výrazů do nástrojů v Unix distribucích, např. do filtrovacího nástroje grep; v současnosti jsou regulární výrazy běžným standardem pro většinu vyhledávacích úloh. Více o formální definici regulárních výrazů, jazyků a gramatik se lze dozvědět v [29]. Mnoho dnešních nástrojů, které zpracovávají regulární výrazy, se neomezují pouze na jazyky regulární, ale jejich pomocí lze popisovat i jiné; mají rozšířené funkce umožňující vyhledávat množiny subsekvencí a díky rozsáhlé syntaxi je lze nasadit na téměř jakoukoliv morfologickou či normalizační úlohu. Např. chci-li v textu najít všechny subsekvence obsahující pouze datum ve formátu dd.mm.yyyy, regulární výraz (resp. vzor) pro takovýto řetězec bude: (0[1-9] [12][0-9] 3[01])\.(0[1-9] 1[012])\.\d{4} 36

37 1.3. Práce se slovy Aplikací takovéhoto výrazu na libovolný text získáme množinu datumů vyskytující se v textu, které odpovídají tomuto vzoru. Více o syntaxi regulárních výrazů je možno nastudovat v [1]. Použití regulárních výrazů je v NLP naprostou samozřejmostí a lze je hojně využít např. při procesech redukce dimenzionality (filtrování nebo nahrazení části textu), morfologické či syntaktické analýzy, segmentace textu aj. Pro úlohu NER jsou samotné regulární výrazy velmi silným nástrojem, pomocí nichž lze velmi efektivně určovat kandidáty na pojmenované entity dle předdefinovaných vzorů, které jsou pro takovéto entity typické - jedná se o slova s konstantní a jasně specifikovatelnou formou: čísla, datumy, telefonní čísla, peněžní hodnoty, mailové adresy apod. Můžeme i lehce rozpoznat ty entity, kterým předcházejí slova typická pro určitý druh entit, např. titul před jménem nějaké osoby. Velmi důležité měřítko tvoří slova začínající velkým písmenem, u kterých existuje vysoká pravděpodobnost, že se o pojmenovanou entitu jedná [19]. Tyto všechny operace na úrovni morfologické, a ještě mnohé další, lze řešit právě s pomocí regulárních výrazů Tokenizace Jedním ze základních problémů zpracovávání přirozeného jazyka je segmentace analyzovaných dat do jednotlivých slov, či vět. Tuto úlohu nazýváme tokenizací. Slovní tokenizace je pro český jazyk triviální záležitostí, jelikož slova oddělujeme (např. oproti japonštině a čínštině) pouze mezerami [19]. Při tokenizaci dle mezer mohou slova obsahovat nadbytečné speciální znaky - to je způsobeno interpunkcí v textu, které k samotnému slovu nepatří. Proto bývá žádané oddělovat interpunkční znaky od slov do samostatných segmentů. Dokáže Ing. Zbyněk Stanjura, jmenovaný na post ministra dopravy, vyřešit nepříznivou situaci? Dokáže Ing. Zbyněk Stajnura, jmenovaný na post ministra dopravy, vyřešit nepříznivou situaci? Pokud bychom identifikovali interpunkční znaménka pouze na základě speciálních znaků, které interpunkční gramatika obsahuje, dostali bychom takovýto výsledek: Dokáže Ing. Zbyněk Stajnura, jmenovaný na post ministra dopravy, vyřešit nepříznivou situaci? V tomto případě byla správně oddělena všechna interpunční znaménka; ovšem byla oddělena i tečka za slovem Ing., jež není interpunkcí, ale označuje zkratku, ke které patří. Řešení identifikace interpunkcí je ekvivalentní segmentaci do vět (resp. tokenizaci vět hlavních a vedlejších). Finální výsledek po tokenizaci vět a slov by měl být následovný: 37

38 1. Zpracování přirozeného jazyka Věta 1: Dokáže Ing. Zbyněk Stajnura, Věta 2: jmenovaný na post ministerstva dopravy, Věta 3: vyřešit nepříznivou situaci? Obecně jsou interpunkční znaky součástí zkratek, webových adres, datumů a jiných speciálních frází. Tuto nejednoznačnost je potřeba vyřešit a to právě rozpoznáním vět. V této úloze je žádané i nalezení tzv. vsuvek či volných větných spojení - samostatných vět doplňující význam vět nadřazených (např. uzávorkování či přímá řeč značená úvozovkami). Tokenizace dle vět se obvykle řeší pomocí předdefinovaných pravidel, např. regulárních výrazů a slovníků obsahujících seznam zkratek a slov s interpunkčními znaky, nebo pomocí strojového učení, kde nejednoznačnost speciálního znaku řešíme dle statistických údajů z korpusu (viz. 1.4) [19] Normalizace Normalizací textu resp. slov je míněno odstranění či nahrazení takových znaků, které jsou pro dané slovo v dané úloze nevýznamné. Jedná se i o jakési převedení slova do určité formy, kterou náš nástroj pro zpracování přirozeného jazyka vyžaduje. Normalizace je také nezbytnou součástí pro vyhledávání v textu (angl. information retrieval), kde na dotaz U.S.A. vyhledávač normalizuje text do tvaru USA a teprve podle tohoto normalizovaného tvaru neboli také termu 1 se dále vyhledává [19]. Mezi typické normalizační úlohy patří: Odstranění diakritiky. Odstranění nežádoucích (speciálních) znaků. Převedení textu na malá/velká písmena. Kliticizace (doplnění vypuštěných znaků; tento stav indikuje většinou apostrof - viděl s = viděl jsi). Vypuštění stop slov. Oprava pravopisných chyb. Stemming (nalezení kmene slova). Lemmatizace (převedení slova na slovníkový tvar). 1 Term je v oblasti information retrieval normalizované slovo, které vstupuje do vyhledávacího systému 38

39 1.3. Práce se slovy Stop slova Pro efektivní extrakci informací je důležité, aby analyzovaný text obsahoval co nejméně šumu - tedy znaků či slov, které nenesou žádnou relevantní informaci a jejich zpracováváním pouze zatěžujeme a znepřesňujeme výpočetní proces. V kroku předzpracování analyzovaných dat proto existuje postup, který tento šum odstraňuje a snižuje tak dimenzionalitu dat. Nejčastější metodou takovéto redukce bývá odstranění stop slov. Stop slova jsou slova, která pro naši úlohu nenesou žádné relevantní informace; mohou to být např. zájmena, číslovky, předložky, spojky, částice či citoslovce. Stop slova máme většinou uloženy v nějakém slovníku a při parsování vstupních dat přeskakujeme ta slova, která se ve slovníku stop slov vyskytují. Příklad stop slov pro information retrieval či NER může být např.: a s k o i u v z dnes cz tímto budeš budem byli jseš můj svým ta tomto tohle tuto tyto toto jej zda proč máte tato kam tohoto kdo kteří mi mu nám tom tomuto mít nic proto kterou byla toho protože asi ho naši napište re což tím takže svých její svými jste aj tu tedy teto bylo kde ke pravé ji nad nejsou či pod téma mezi přes ty pak vám ani když však neg jsem tento článku články aby jsme před pta jejich byl ještě až bez také pouze první vaše která nás nový tipy pokud může strana jeho své jiné zprávy nové není vás jen podle zde už být více bude již než který by které co nebo ten tak má při od po jsou jak další ale si se ve to jako za zpět ze do pro je na atd atp jakmile přičemž já on ona ono oni ony my vy jí ji mě mne jemu tomu těm těmu němu němuž jehož jíž jelikož jež jakož načež že detail detaily Detekce a oprava pravopisných chyb Detekce a oprava pravopisných chyb je jednou z částí moderních vyhledávačů a word-processorů. Chyby v textu můžeme rozdělit do dvou částí: 1. Neexistující slovo v textu, jehož vznik byl zaviněn překlepem. 2. Gramatická chyba (slovo existuje, ale z hlediska gramatiky je formulováno nesprávně nebo je na špatné pozici) Detekce chyb Chybu detekujeme hledáním takového slova, které není v repozitaři slov (pro tuto úlohu je nutné disponovat nějakým slovníkem či korpusem, podle kterého chyby identifikujeme). Pokud takovéto slovo najdeme, označíme ho jako chybu. V dalším kroku hledáme slova, která se v repozitáři vyskytují, ale jsou v daném kontextu nepravděpodobná [36]; pravděpodobnost takovéhoto slova lze 39

40 1. Zpracování přirozeného jazyka určit např. pomocí n-gramového modelu (pracujícího se statistickými údaji získanými z nějakého korpusu viz ) nebo jiných heuristik (více v [28]) Oprava chyb V případě, že se nám podaří chybu identifikovat, bývá další fází její opravení či navržení série možných oprav. Pokud chceme chybu jednoznačně opravit, nastává problém, jelikož můžeme získat až několik kandidátů k opravě chybného slova; tyto problémy lze ovšem efektivně řešit určením pravděpodobností navrhovaných oprav. Pro získání takovéto množiny (tedy sady opravených slov), potřebujeme mít k dispozici buď nějakou databázi chyb a jejich oprav nebo nějaký algoritmus, který nám určuje podobnost dvou slov; poté již jen stačí určit nějakou hranici (minimální míru podobnosti), za kterou již nelze navrhovanou opravu akceptovat. Podobnost dvou slov lze určit např. pomocí výpočtu editační vzdálenosti. Mějme slovo A a B, potom nám tato míra říká: kolik je nutné provést operací k převedení slova A na slovo B s tím, že máme k dispozici pouze následující množinu operací: Odstranění znaku. Přidání znaku. Záměna jednoho znaku za druhý. Platí, že čím méně operací je potřeba k převodu slova A na slovo B, tím jsou si tato slova podobnější. Tuto editační vzdálenost je možné vypočítat dle algoritmu dynamického programování, kde začínáme s prázdnou maticí M velikosti ( A + 1) ( B + 1), kde A je počet znaků navrhovaného slova A a B je počet znaků chybného slova B. Buňka v matici M[i, j] obsahuje editační vzdálenost mezi prvními i písmeny slova A a prvními j písmeny slova B. Funkce pro výpočet hodnoty v buňce vypadá následovně [19]: M[i 1, j] + ADD(A i 1 ) MIN(i, j) = min M[i 1, j 1] + SUB(A i 1, B j 1 ) M[i, j 1] + DEL(B j 1 ) (1.21) Funkce ADD(x) vrací hodnotu po přidání znaku x, funkce DEL(x) vrací hodnotu po odebrání znaku x a funkce SUB(x, y) vrací hodnotu po nahrazení znaku x znakem y. Těla těchto funkcí mohou být upraveny uživatelem dle různých heuristik, poněvadž některé chybné operace jsou pravděpodobnější než jiné [36]; je tedy dobré zohledňovat a lépe hodnotit takové operace resp. chyby, které se vyskytující v českém pravopisu ve větší hojnosti: 40 Substituce znaku i za y či obráceně.

41 1.3. Práce se slovy Substituce znaků blízkých svou výslovností např. a a e. Substituce písmen s diakritikou a bez diakritiky např. c a č. Substituce písmen, které jsou vedle sebe na klávesnici např. q a w. Vynechání písmen, dle rozdílné výslovnosti např. rozsévat můžeme číst jako rosévat. Pseudokód výpočtu minimální editační vzdálenosti dvou slov je následovný [19]: Pseudokód pro výpočet minimální editační vzdálenosti 1 double MIN-EDIT-DISTANCE(A, B) { 2 //Inicializace 3 a = A.length 4 b = B.length 5 M = Matrix[a+1, b+1] 6 M[0, 0] = 0 7 //Inicializace prvního řádku a prvního sloupce 8 for i = 1 to a 9 M[i, 0] = M[i-1, 0] + ADD(A[i]) 10 for j = 1 to b 11 M[0, j] = M[0, j-1] + DEL(B[j]) 12 //Procházím sekvenčně všechny buňku po řádcích a sloupcích 13 for i = 1 to a 14 for j = 1 to b 15 //Určím minimalní editační vzdálenost pro akutální buňku 16 M[i, j] = MIN(i, j) 17 return M[a, b] 18 } Předchozími metodami získáme onu množinu navrhujících oprav s různými pravděpodobnostmi. Tyto návrhy následně můžeme aplikovat a jejich pravděpobnosti upřesnit např. pomocí n-gramového modelu (viz ). Ve výsledku vybereme nejpravděpodobnější návrh z množiny a identifikovanou chybu opravíme Stemming Nyní se dostáváme k jednomu z nejpoužívanějších procesů pro redukci dimenzionality dat na morfologické úrovni, a to zejména v oborech vyhledávání či extrakce informací. Stemming je morfologický proces, při kterém se snažíme určit kmen slova; pro český jazyk toho dosáhneme odstraněním koncovky. Koncovka je finální tvarotvorná přípona a bývá vždy posledním morfémem ve slově (pokud tedy slovo koncovku obsahuje) [15]. Tím, že normalizujeme slova převodem na jejich kmen, redukujeme onu dimenzionalitu dat, která bývá v češtině velká. Způsob, jak vytvořit úspěšný stemovací nástroj, se pro každý jazyk různí; tak např. pro anglický jazyk existuje sada pevných pravidel podle kterých se dá stemování lehce naimplementovat (viz. The Porter Stemmer [19]). Česká 41

42 1. Zpracování přirozeného jazyka gramatika je ovšem v tomto směru na tvary slov mnohem bohatší a bohužel si s pouhými pravidly identifikujícími koncovku v této situaci nevystačíme. Můžeme si dle mluvnice nadefinovat spousty vzorů pro identifikaci koncovek, ovšem nikdy nedosáhneme takového stavu, kdy si budeme stoprocentně jisti, že se o koncovku skutečně jedná. Mějme např. seznam takovýchto koncovek: a e ě i o u y ou é í ů ech ách ích em ám ím ům mi ami emi ími ovi ové Kdybychom pouze odstraňovali koncovky dle těchto vzorů, narazíme v některých případech na chyby. Tak např. slovo vjem neobsahuje žádnou koncovku, i když končí písmeny -em. Toto slovo je v prvním pádě a koncovku -em k němu přidáváme v pádu sedmém vjemem. Takovýchto slov bez tvarotvorných přípon končící písmeny, která rovněž identifikují příponu, existuje celá řada [15]. Řešením je konstrukce slovníku obsahujícího tyto vyjímky, nebo připojení koncovky k analyzovanému slovu a následné hledání tohoto tvaru v korpusu [33]. Lze samozřejmě využít i vlastních heuristik či hrátek s korpusem. Tuto úlohu lze rozšířit osekáváním nejen koncovek, ale i předpon a všech přípon; tedy hledáním kořene místo kmenu. Tímto se nám ovšem situace stává složitější, jelikož přibudou další vzory, které opět nemusí vracet jednoznačné výsledky. Pattern matching je ovšem základem k řešení této úlohy; přesto je deterministické nalezení předpon a přípon pro český jazyk téměř neřešitelným problémem, hlavně kvůli otevřenosti našeho jazyka, který není tak striktní a odlehčený, jako např. jazyk anglický Lemmatizace Další velmi používanou normalizační metodou pro redukci dimenzionality dat je lemmatizace. Cílem lemmatizace (resp. lemmatizátoru) je nalézt k pozorovanému slovu správný slovníkový tvar (tzv. lemma) [19]. Slovníkovým tvarem máme na mysli původní slovo, nepoznamenané žádnou gramatickou operací, jako je např. skloňování, časování, stupňování apod.: Původní tvar nejlepší ševcovi pili Lemma dobrý švec pít Jedná se tedy o sofistikovanější normalizaci, u které nestačí pouze rozložit slovo na morfémy a analyzovat kmen či kořen slova, ale je potřeba vykonat inverzní operaci ohýbání slova, která může vyústit v slovo s absolutně odlišným kořenem. Pro řešení této úlohy je potřeba brát na vědomí, že ohnutá slova s totožnou formou, mohou mít nejednoznačný slovníkový tvar. Příkladem je slovo 42

43 1.3. Práce se slovy Slovní druh Lemma Podstatné jméno 1. pád, j. čísla Přídavné jméno 1. pád, 1.stupně, j. čísla, r. můžského Zájmena 1. pád, j. čísla Číslovky 1. pád, j. čísla, zákl. tvaru Sloveso infinitiv Tabulka 1.6: Tvary lemmat pro jednotlivé slovní druhy. holí, které může mít více slovníkových tvarů: hůl, holit, holý. Tuto nejednoznačnost lze do jisté míry odstranit po rozpoznání správného slovního druhu; ale i v tomto případě existují vyjímky, které stále vykazují známky nejednoznačnosti např. podst. jm. let může být již samotným slovníkovým tvarem, ale rovněž ho lze převést na zcela jiný tvar a to rok. Prvním procesem v rámci řešení lemmatizační úlohy bývá identifikace slov ohebných a jejich slovních druhů (více v 1.4); po této operaci již hledáme správné lemma v okruhu daného slovního druhu. V této fázi, stejně jako při stemmingu, nastává problém, jelikož není možné deterministicky určit jednoznačný a bezchybný výsledek; je nutno tedy opět využít vlastních heuristik. Primární úvahou je slovník, který pokryje všechny základní tvary slov a jejich formy při ohýbání [20]. Takovýto slovník lze buď sestrojit ručně nebo automaticky využitím znalostí obsažených v nějakém dostupném datovém zdroji (viz ). Bez slovníku se bohužel neobejdeme v případech, kdy se snažíme nalézt lemma, které má v porovnání s původním slovem absolutně odlišný kořen - např. převedení slova nejlepší na dobrý. Ovšem lze si nadefinovat pravidla, podle kterých lze odsekávat či substituovat jednotlivé morfémy a lemma se nám podaří těmito operacemi skutečně nálezt. Pád Tvar slova 1 kočka 2 kočky 3 kočce 4 kočku 5 kočko 6 kočce 7 kočkou Při skloňovaní slova kočka, stačí v prvním, druhém, čtvrtém, pátem a sedmém pádě nahradit koncovku písmenem -a a získáme příslušné lemma. Ve třetím a šestém pádu již musíme morfémy analyzovat hlouběji; nebo se můžeme pokusit najít nejbližší slovo základního tvaru ve slovníku např. pomocí minimální editační vzdálenosti (viz ). Způsobů řešení lemmatizační úlohy je více a rozhodně stojí za to, je z hlediska využití zkoumat podrobněji. 43

44 1. Zpracování přirozeného jazyka 1.4 Pravděpodobnostní metody automatického rozpoznávání Tato část se zabývá pravděpodobnostními metodami strojového učení a automatického rozpoznávání, které jsou velmi užitečné právě pro obor Information Extraction ; tedy i NER. Tyto metody využívají k rozpoznávání statistické údaje z trénovacích dat (korpusů). Na základě informací, které jsou obsaženy v těchto datech, je vytvořen znalostní model, který nám slouží právě k řešení nějaké rozpoznávací úlohy. Tento proces tvoření znalostí pomocí nějaké množiny trénovacích dat nazýváme učení s učitelem (angl. supervised learning, viz. obrázek 1.5) [8]. Mějme tedy úlohu, v rámci které je potřeba rozpoznávat pojmenované entity (NER). Trénovací data obsahují soubor anotovaných dat, kde anotace tvoří jakousi značku, která nám identifikuje a klasifuje danou pojmenovanou entitu. Dále uvažujme nějaká vstupní data, která je potřeba analyzovat a přiřadit k nim správné klasifikace entit. Náš pravděpodobnostní algoritmus udělá to, že na základě modelu znalostí (vytvořeného z trénovacích dat) přiřadí vstupním datům nejpravděpodobnější sekvenci klasifikací. Tato metoda ovšem pracuje pouze se statistickými údaji, takže výstup nemusí být vyhodnocen správně (díky velké rozmanitosti přirozeného jazyka a nejednoznačnosti jednotlivých slov); tedy panuje zde přímá úměra, která nám sděluje, že čím přesnější výsledky chceme dostávat, tím potřebujeme větší množinu trénovacích dat [19]. V této části si tedy ukážeme, na jakých principech tyto pravděpodobnostní algoritmy pracují, a jaké jsou jejich výhody i nevýhody Korpus Dříve než začneme podrobněji rozebírat vybrané pravděpodobnostní modely, je potřeba uvést složku, na které jsou všechny typy těchto algoritmů postaveny; a to jsou právě korpusy. Korpus nám utváří, resp. trénuje, znalostní model, podle kterého lze v budoucnu řešit různé rozpoznávací úlohy. Korpus si lze představit jako kolekci textů sloužící k jazykovému výzkumu. Tyto texty bývají obohaceny nějakými anotacemi, které morfologicky, syntakticky či sémanticky popisují nějaký segment dat (např. slovní druhy, pojmenované entity aj.). Struktura těchto anotací může mít např. stromovou strukturu; potom se jedná o treebank korpus (viz. obrázek 1.6) [5]. U korpusů se dále předpokládá, že značky, přiřazené k nějaké skupině slov, jsou utvářeny člověkem - tudíž bezchybně a v nějlepším případě i úplně. Korpus nám primárně slouží k testování statistických hypotéz a k obecné statistické analýze textu. Pravděpodobnostní algoritmy pracující s korpusy (viz. níže) si dle strukturovaných dat utvářejí vlastní znalostní model na základě četností zkoumaných informací, či jiných znalostí v korpusu. To nám 44

45 1.4. Pravděpodobnostní metody automatického rozpoznávání Obrázek 1.5: Rozpoznávací proces využívající korpusu k vytvoření modelu znalostí (tzv. učení s učitelem). říká, že efektivita algoritmu je přímo svázána právě s korpusem a s jeho rozsáhlostí a rozmanitostí [19]. Na obrázku 1.5 lze vidět, že pravděpodobnostní (resp. znalostní) model se zkonstruuje z nějaké množiny dat. Tento model pak aplikujeme na nějaký specifický úkol a specifická data, která chceme analyzovat. Z tohoto důvodu dělíme korpus na trénovací (data, která nám utvářejí/trénují znalostní model - angl. training set) a testovací (data, na která aplikujeme znalostní model - angl. test set) s tím, že testující korpus by neměl obsahovat data z trénovacího korpusu. Dále ještě zavádíme tzv. vývojový korpus (angl. development set), Obrázek 1.6: Anotovaný korpus stromové struktury - treebank. 45

46 1. Zpracování přirozeného jazyka který je jakousi podmnožinou dat testovacích. Na těchto datech ladíme náš rozpoznávací nástroj a používáme ho pouze k vyhodnocování v rámci vývojové fáze [19]. Čeština disponuje několika korpusy, které obsahují např. morfologické značky, lemmata, větné členy, slovní druhy a pojmenované entity. Pražský závislostní korpus (PDT - Prague Dependency Treebank) je jedním příkladem banky anotovaných dat, která poskytuje všechny typy těchto značek a obsahuje témeř 2 miliony anotovaných slovních jednotek [14] N-gramový model N-gram je kolekce po sobě jdoucích slov velikosti N a v NLP se často využívá jako omezení obecného pravděpodobnostního modelu. V rámci takovéhoto modelu pracujeme pouze s podsekvencí dat určených právě n-gramem. Tento model počítá pravděpodobnosti výskytu následujícího slova z N 1 předcházejících slov P (o h); jedná se tedy o podmíněnou pravděpodobnost, kde o představuje nějaké slovo a h historii resp. nějakou sekvenci předcházejících slov. Tento model je jedním z nejdůležitějších nástrojů pro NLP a je zásadní pro rozpoznávání slov ve větách. Tvoří podstatnou součást např. pro překladače, automatické opravy chyb v textu, rozpoznávání slovních druhů, zpracování přirozeně psaného textu a přirozené řeci [19]. Stejně jako ostatní pravděpodobnostní modely je i n-gramový model závislý na existenci nějakého korpusu, ze kterého získává potřebné znalosti a díky nim pak určuje pravděpodobnost rozpoznávané entity (v našem případě slova o). Mějme určitou sekvenci slov, jež tvoří historii h a konkrétní slovo o: h = nejstarší technická univerzita v ČR je o = ČV UT (1.22) Nyní se budeme snažit určit pravděpodobnost slova o za podmínky h tedy: P (ČV U T nejstarší technická univerzita v ČR je) (1.23) K výpočtu této pravděpodobnosti využijeme znalostí z korpusu; spočítáme četnost výskytu řetězce h spojeného s o a četnost samotného řetězce h (funkci pro výpočet četnosti nějakého řetězce s v daném korpusu označíme jako C(s)). Tyto četnosti vzájemně vydělíme, tedy: P (ČV UT nejstarší technická univerzita v ČR je) = C(nejstarší technická univerzita v ČR je ČV UT ) C(nejstarší technická univerzita v ČR je) (1.24) Z příkladu je zřejmé, že chceme-li dostat nějaké řešení, je požadován výskyt řetězce h v korpusu. Dále je také intuitivní, že čím více slov má řetězec h, tím 46

47 1.4. Pravděpodobnostní metody automatického rozpoznávání se nám pravděpodobnost výskytu slova o rapidně snižije (není obtížné sestavit smysluplnou větu např. ze čtyř slov, která se nevyskytuje na celém webu, natož v našem korpusu). Pro zajištění efektivity tohoto algoritmu je nutné aproximovat velikost N na menší okolí, např. jen na předchozí slovo; tedy N = 2 - pak tento model nazýváme bigram (2-gram) nebo N = 3 - trigram. Mějme tedy sekvenci slov (o 1, o 2,..., o n ); při použití bigramu závisí pravděpodobnost výskytu slova o n pouze na předcházejícím slově, tedy P (o n o n 1 ). Na základě těchto bigramů můžeme aproximovat příklad 1.24: P (o n 1 ) = = n P (o k o k 1 ) k=1 n k=1 C(o k 1 o k ) C(o k 1 ) C(je ČV UT )C(ČR je)...c(nejstarší technická) C(je)C(ČR)...C(nejstarší) (1.25) Tento výpočet pravděpodobnosti nazýváme metoda maximální věrohodnosti (angl. Maximum-Likelihood Estimation dále jen MLE). N-gramovým modelem tedy dokážeme vypočítat pravděpodobnost nějakého slova či fráze dle sekvence předcházejících slov velikosti N; bohužel v přirozeném jazyku mohou být dvě na sobě závislá slova od sebe daleko vzdálena, a tudíž nemusí být tyto závislosti takovýmto modelem zachytitelné Vyhlazování (smoothing) V příkladu 1.25 je jeden zásadní problém, a tím jsou n-gramy (v našem případě bigramy) nulové pravděpodobnosti. V případě existence nulové pravděpodobnosti nějakého bigramu skončí nulovou pravděpodobností nebo bez řešení celková pravděpodobnost P (o n 1 ). Musíme proto nějakým způsobem modifikovat MLE algoritmus k eliminaci nulové pravděpodobnosti; tento způsob se nazývá vyhlazování (angl. smoothing) [19]. Nejjednodušší metodou vyhlazování je Laplaceovo vyhlazování (angl. Laplace smoothing) [19]. Tato metoda sice není tak efektivní jako jiné (např. Good-Turing smoothing nebo Kneser-Ney smoothing), ovšem k demonstraci postačí. P L (o n o n 1 ) = C(o k 1o k ) + 1 C(o k 1 ) + V (1.26) Kde V je počet typů slov ve slovníku resp. v korpusu. Díky této modifikaci již nebudou n-gramy vracet nulové hodnoty a výsledek MLE bude vždy pozitivní. 47

48 1. Zpracování přirozeného jazyka Interpolace Interpolací rozumíme výpočet pravděpodobnosti daného n-gramu v kombinaci s jinými n-gramy. Např. máme trigram, k jehož výsledné pravděpodobnosti zahrneme i výsledky z bigramu a unigramu [19]. Tedy výsledná (lineární) interpolace bude vypadat následovně: ˆP (o n o n 1 o n 2 ) = λ 1 P (o n o n 1 o n 2 ) + λ 2 P (o n o n 1 ) + λ 3 P (o n ) (1.27) Kde λ i určuje váhu jednotlivého n-gramu a zároveň platí i λ i = Skryté Markovovy modely (Hidden Markov models) Skryté Markovovy modely (angl. Hidden Markov models, dále jen HMM) patří mezi nejdůležitější statistické rozpoznávací modely, a to hlavně v oblasti NLP [19]. V našem případě považujeme HMM za sekvenční klasifikátor jehož, hlavním úkolem je škálovat slova (resp. množiny slov) do jednotlivých tříd (např. mapovat slova na slovní druhy). Tato metoda využívá znalostí získaných z korpusů, pomocí nichž lze rozpoznávat sémantiku dané pozorované entity. Tyto znalosti si lze představit jako soubor statistických údajů Markovův řetězec V prvé řadě je dobré nejprve uvést Markovovy řetězce, které tvoří základ pro HMM. Markovův řetězec je náhodný proces, který je popsán množinou stavů Obrázek 1.7: Příklad Markovova řetězce. Hodnota a ij vyjadřuje přechodovou pravděpodobnost ze stavu i do stavu j. Pomocí Markovova řetězce dokážeme určit pravděpodobnost nějaké sekvence událostí např. ACBBACCCBA. 48

49 1.4. Pravděpodobnostní metody automatického rozpoznávání Q = {q 1, q 2,..., q N }, počátečním stavem q s a konečný stavem q n ; dále disponuje přechodovou maticí A = (a 11, a 12,..., a 1N,..., a NN ), jejíž prvek a ij představuje pravděpodobnost přechodu ze stavu i do stavu j a zároven musí platit podmínka N j=1 a ij = 1 i. Tento proces je bezpaměťový, tzn., že pravděpodobnost konkrétního stavu v čase t je závislá pouze na stavu předchozím v čase t 1, tedy P (q t q t 1 ). Markovův řetězec je použitelný tam, kde chceme určit pravděpodobnost výskytu sekvence nějakých událostí (viz. obrázek 1.7) Skryté stavy V mnoha případech je ale potřeba určit pravděpodobnost takové sekvence událostí, jejíž stavy nejsou pozorovatelné. Takový případ nastává právě při NER, kde máme pozorovatelnou sekvenci slov, ale zajímají nás hlavně pojmenované entity, což jsou ony skryté stavy. A právě HMM uvažuje existenci těchto skrytých stavů. Stejně jako Markovův řetězec je i HMM popsán množinou stavů Q, počátečním stavem q s, konečným stavem q n a maticí přechodových pravděpodobností A, kde prvek této matice a ij představuje pravděpodobnost přechodu ze stavu i do stavu j; tedy a ij = P (q j q i ). Dále ovšem zahrnuje sekvenci pozorovaných jednotek O = (o 1, o 2,..., o T ) délky T a k nim matici pravděpodobností B = (b 11, b 12,..., b 1N,..., b T N ) (angl. emission probabilities), kde b ij představuje pravděpodobnost pozorované jednotky o i asociované se stavem q j ; tedy b ij = P (o j q i ). Obecný model HMM můžeme znázornit pomocí grafu (viz. obrázek 1.8). Na obrázku vidíme, že pravděpodobnost stavu q i je závislá na stavu q i 1 a pravděpodobnost prvku pozorované sekvence o i je závislá na stavu q i [30]. Obrázek 1.8: HMM model vyjádřený grafem. Orientované hrany určují podmíněné pravděpodobnosti, např. P (q 2 q 1 ) a P (o 2 q 2 ) 49

50 1. Zpracování přirozeného jazyka Tento model lze matematicky zapsat takto: P (q, O) = P (q 1, q 2,..., q T, o 1, o 2,..., q T ) T = P (q 1 )P (o 1 q 1 ) P (q i q i 1 )P (o i q i ) i=2 (1.28) Jedná se o pravděpodobnost průniku jevů (angl. joint probabilities); tedy pracujeme zde s generativním modelem, jelikož pozorovaný prvek o i je generován stavem q i [18]. Nyní již neuvažujme rozpoznávání pojmenovaných entit, ale zaměřme se na nový úkol, který je pro ilustraci HMM nejběžnější; tím je určování slovních druhů (angl. part-of-speech tagging). Za množinu skrytých stavů Q považujeme právě slovní druhy. Matice přechodových pravděpodobností A a její prvek a ij obsahuje pravděpodobnost výskytu i-tého slovního druhu za předpokladu, že mu předcházel j-tý slovní druh. Sekvencí O rozumíme nějaký sled slov, který pozorujeme. Nakonec potřebujeme matici B, jejíž prvek b ij určuje pravděpodobnost slova o i se slovním druhem q j. Já jsem student (1.29) Mějme tedy konkrétní sekvenci slov O (viz. 1.29) a konkrétní matice A a B (viz. tabulky 1.7 a 1.8). Podst. jm. Příd. jm. Citoslovce NULL a 0,1 a 0,2 a 0,10 Podst. jm. a 1,1 a 1,2 a 1,10 Příd. jm. a 2,1 a 2,2 a 2, Citoslovce a 10,1 a 10,2 a 10,10 Tabulka 1.7: Matice A Já jsem student Podst. jm. b 1,1 b 1,2 b 1,3 Příd. jm. b 2,1 b 2,2 b 2,3.... Citoslovce b 10,1 b 10,2 b 10,3 Tabulka 1.8: Matice B 50 Pomocí HMM řešíme tři základní úlohy [19]:

51 1.4. Pravděpodobnostní metody automatického rozpoznávání Vyhodnocování: Máme matici A a B. Naším úkolem je spočítat pravděpodobnost dané sekvence slov O (Forward algoritmus). Dekódování: Máme sekvenci slov O délky T a matice A a B. Úkolem je určit nejpravděpodobnější sekvenci skrytých stavů délky T z množiny Q (Viterbi algoritmus). Učení: Máme sekvenci slov O a množinu skrytých stavů Q. Cílem je spočítat matici A a B (Baum-Welch algoritmus) Forward algoritmus Forward algoritmem řešíme výpočet pravděpodobnosti pozorované sekvence O. K ilustraci zde použijeme sekvenci slov z příkladu 1.29 a matice A a B z tabulek 1.7 a 1.8. Pokud si zvolíme nějakou variaci stavů q velikosti T z množiny Q, můžeme spočítat pravděpodobnost sekvence O asociované s q takovýmto způsobem: T T P (O, q ) = P (O q ) P (q ) = P (o i q i) P (q i q i 1) (1.30) i=1 i=1 Nyní předpokládejme, že sekvence q obsahuje Zájmeno, Sloveso, P odst.jm.. Potom pravděpodobnost sekvence O z příkladu 1.29 generovaná sekvencí q je: P (O, q ) = P (já zájmeno) P (jsem sloveso) P (student podst.jm.) P (podst.jm. sloveso) P (sloveso zájmeno) P (zájmeno N U LL) (1.31) Jednotlivé podmíněné pravděpodobnosti získáme z matice A a B. Celkovou pravděpodobnost sekvence O ovšem získáme součtem všech variací prvků z množiny Q třídy T, kterých je N T, kde N je velikost množiny Q. Tedy: N T P (O) = P (O, q i ) (1.32) i=1 Složitost tohoto výpočtu je tedy exponenciální. Ovšem pomocí forward algoritmu dokážeme tuto složitost redukovat na O(N 2 T ) [19]. Tento algoritmus využívá principu dynamického programování. Pseudokód tohoto algoritmu můžete vidět zde: 51

52 1. Zpracování přirozeného jazyka Pseudokód Forward algoritmu 1 double forward(seq O, Set Q, Matrix A, Matrix B) 2 //Inicializace 3 vytvoř prázdnou matici F[Q.length+2][O.length] 4 for i = 1 to Q.length 5 F[i][1] = A[0][i] * B[i][1] 6 //Hlavní výpočet 7 for i = 2 to O.length 8 for j = 1 to Q.length 9 F[j][i] = suma(s = 1 to Q.length)(F[s][i-1] * A[s][j] * B[j][i]) 10 //Ukončení 11 F[Q.length-1][O.length] = 12 suma(i = 1 to Q.length)(F[i][O.length] * A[i][Q.length-1]) 13 return F[Q.length-1][O.length] Viterbi algoritmus Pro extrakci informací bývá nejdůležitějším úkolem určit nejpravděpodobnější sekvenci skrytých stavů z množiny Q pro danou pozorovanou sekvenci slov O délky T (např. ke každému slovu z nějaké věty přiřadit správný slovní druh tak, aby nalezená sekvence slovních druhů byla tou nejpravděpodobnější). Proces, který tento úkol řeší, nazýváme dekódování [11]. Pro dekódování dále uvažujeme existenci matic A a B. Matematicky lze tento problém zapsat následovně [22]: ˆq = argmaxp (q O) q = argmaxp (q, O) q = argmaxp (O q)p (q) q T = argmax P (q i q i 1 )P (o i q i ) q i=1 (1.33) Stejně jako u hledání pravděpodobnosti sekvence O (viz ), i v tomto případě by bylo nejjednodušším způsobem projít všechny variace množiny Q o velikosti T a najít tu nejpravděpodobnější sekvenci skrytých stavů. Složitost by byla tedy opět O(N T ), ale díky Viterbiho algoritmu, využívajícího principu dynamického programování, lze složitost redukovat na O(N 2 T ). Celá myšlenka je založena na jednoduché rekurzi. Pro pozorovanou sekvenci O mějme určené nejpravděpodobnější cesty stavů z bodu 1 do bodu t ukončené stavy (Q 1, Q 2,..., Q N ) právě v bodě t. Tyto cesty znázorňující přechody mezi stavy budeme značit (ˆq 1t, ˆq 2t,..., ˆq Nt ). Poté k nalezení nejpravděpodobnější sekvence stavů do bodu t + 1 využijeme výsledek sekvencí (ˆq 1t,..., ˆq Nt ) pro každý stav z množiny Q v bodě t + 1. Pokud tedy nakombinujeme všechny stavy v bodě t + 1 s výslednými sekvencemi v bodě t a následně vybereme cestu s nejvyšší pravděpodobností, našli jsme nejpravděpodobnější sekvenci skrytých stavů do bodu t + 1. Tento proces má obecně 52

53 1.4. Pravděpodobnostní metody automatického rozpoznávání Obrázek 1.9: Příklad Viterbiho algoritmu. Jednotlivé cesty (zvýrazněné barvou) představují nejpravděpodobnější sekvenci stavů pro pozorovanou entitu o t 3 až o t zakončené stavem A, B a C. Pro určení pravděpodobnosti sekvence stavů do bodu t+1 zakončené stavem A je nutné spočítat pravděpodobnosti všech tří barevně označených cest zakončené stavem A v bodě t + 1 a vybrat tu maximální. Tento krok je potřeba provést pro všechny stavy (celkem tedy máme N 2 kroků pro určení stavu v bodě t+1, v našem případě 3 2 = 9 kroků). N 2 kroků. Takto pokračujeme až do nalezení nejpravděpodobnější sekvence délky T (viz. obrázek 1.9) [23]. Pseudokód Viterbiho algoritmu 1 array viterbi(seq O, Set Q, Matrix A, Matrix B) 2 //Inicializace 3 vytvoř prázdnou matici V[Q.length+2][O.length] 4 for i = 1 to Q.length 5 V[i][1] = A[0][i] * B[i][1] 6 backpointer[i][1] = 0 7 //Hlavní výpočet 8 for i = 2 to O.length 9 for j = 1 to Q.length 10 V[j][i] = max(s = 1 to Q.length)(V[s][i-1] * A[s][j] * B[j][i]) 11 backpointer[j][i] = argmax(s = 1 to Q.length)(V[s][i-1] * A[s][j]) 12 //Ukončení 13 V[Q.length-1][O.length] = 14 max(i = 1 to Q.length)(V[i][O.length] * A[i][Q.length-1]) 15 backpointer[q.length-1][o.length] = 16 argmax(i = 1 to Q.length)(V[i][O.length] * A[i][Q.length-1]) 17 return backpointer Baum-Welch algoritmus Nyní se zaměříme na určení matic A a B; tento krok nazýváme učením. Pokud máme k dispozici nějaký korpus anotovaných dat, můžeme matici A vypočítat 53

54 1. Zpracování přirozeného jazyka pomocí MLE: a ij = C(q iq j ) C(q i ) (1.34) Předpokládejme, že máme nějakou pozorovanou sekvenci O. Matici B poté získáme podobným způsobem jako matici A: b ij = C(o j q i ) C(q i ) (1.35) Tuto metodu učení nazýváme učení s učitelem (angl. supervised learning). V našem případě ovšem neuvažujeme existenci korpusu a sekvence skrytých stavů (máme k dispozici pouze pozorovanou sekvenci O); i přes toto omezení lze matice A a B odvodit. Tento způsob učení nazýváme učení bez učitele (angl. unsupervised learning) [19]. Jedním z algoritmů pro HMM, který učí bez učitele je Baum-Welch algoritmus. Obecně chceme vybírat takové parametry do matic A a B, které nejvíce odpovídají pozorované sekvenci. Předpokládejme, že λ = {A, B} a chceme nalézt λ : λ = argmaxp (O λ) (1.36) λ Jelikož neznáme sekvenci skrytých stavů, nelze k výpočtu λ použít MLE. Baum-Welch algoritmus ovšem využívá heuristiky, která hodnotu λ dokáže odhadnout. Tento odhad není prováděn globálně, ale je určován v nějakém vymezeném okolí; tedy zaměřujeme se zde na určení lokálního maxima [17]. Dolní mez tohoto okolí určíme odhadnutím nějaké inicializační hodnoty λ (tyto inicializační matice A a B mohou být určeny i za pomoci nějakého anotovaného korpusu; tedy dochází zde k přeučení původních parametrů HMM - tentokrát ale bez učitele). V konečných krocích se snažíme naleznout takové λ, aby platilo P (O λ ) P (O λ). Baum-Welch algoritmus opakovaně počítá forward a backward pravděpodobnosti, dokud nám λ nezačne konvergovat. Postup k implementaci tohoto algoritmu je následovný (vstupem je pozorovaná sekvence O délky T a množina možných stavů Q) [17]: Odhadneme nějaké inicializační λ. 2. Spočítáme forward-backward pravděpodobnosti. Forward pravděpodobnost: α t (i) = P (q t = i, o 1... o t λ) Backward pravděpodobnost: β t (i) = P (o t+1... o T q t = i, λ) 3. Z těchto pravděpodobností odhadneme předpokládaný počet přechodů ze stavu i do stavu j a předpokládaný počet stavu j sdružený s prvkem pozorované sekvence o t.

55 1.4. Pravděpodobnostní metody automatického rozpoznávání Obrázek 1.10: MEMM model vyjádřený grafem. Orientované hrany určují podmíněné pravděpodobnosti, např. P (q 2 q 1 ) a P (q 2 o 2 ) 4. Z dosavadních výsledků znovu odhadneme matice A a B a získáme tak λ. 5. Zpět na krok 2, pokud λ nekonverguje Markovské modely maximální entropie (Maximum Entropy Markov Models) Markovské modely maximální entropie (angl. Maximum Entropy Markov Models, dále jen MEMM) je pravděpodobnostním modelem kombinující vlastnosti HMM a maximální entropie (MaxEnt) [19]. Oproti HMM není modelem generativním, který počítá s pravděpodobností průniků jevů, ale modelem diskriminativním, kde stav q i závisí na pozorované entitě o i a na stavu q i 1 (viz. obrázek 1.10) [18]. Tento model lze zapsat následovně [22]: T P (q O) = P (q 1 o 1 ) P (q i q i 1, o i ) (1.37) i=2 Pravděpodobnost P (q i q i 1, o i ) je počítána dle log-lineárního modelu (viz. dále) [22] MaxEnt MaxEnt (také známo jako multinomiální logistická regrese) pracuje s množinou vlastností (angl. features), kde vlastnost představuje booleovu funkci f <b,q> (o t, q t ) [19]. Vstupem je nějaký pozorovaný prvek o t ze sekvence O a nějaký stav q t z množiny stavů Q. Tělo této funkce vypadá následovně: f <b,q> (o t, q t ) = { 1 IF ot splňuje vlastnost b AND q = q t 0 v opačném případě (1.38) 55

56 1. Zpracování přirozeného jazyka Vlastnost b představuje v NLP nejčastěji nějaký regulární výraz nebo kritérium, které pozorované slovo musí splňovat (např. začíná slovo velkým písmenem? nebo končí slovo příponou -ný? ). Dále q představuje třídu (neboli stav z množiny Q), ke které je funkce f přiřazena. Pracování s množinou těchto vlastností je velmi výhodné právě pro NER [19]. f <slovo začíná velkým písmenem,město> (P raha, Město) = 1 (1.39) Ke káždé vlastnosti f i máme nějakou váhu w i v rozsahu < 0, 1 >. MaxEnt je typem log-lineárního modelu [22]; tedy pro určení pravděpodobnosti stavu q dané slovem o využijeme lineární kombinace všech nadefinovaných vlastností f: P (q o) = 1 Z exp( i w i f i (o, q)) (1.40) Kde Z je normalizační faktor, který zajišťuje, že výsledná pravděpodobnost spadne do intervalu < 0, 1 >. Více o MaxEnt naleznete v [19] MaxEnt a Markovův model Samotný MaxEnt uvažoval pouze jeden pozorovaný prvek. Nyní nastavá situace, kdy chceme pracovat s nějakou sekvencí slov a stavů; tedy stejně jako u HMM chceme určit nejpravděpodobnější sled stavů pro daný pozorovaný řetězec O (dékódování). HMM je ovšem generativní model (slovo je generováno stavem), proto je v jeho případě nutné řešit proces dékódování výpočtem pravděpodobnosti průniku (viz. 1.33). Pro MEMM je ale postup výpočtu zjednodušený, jelikož se jedná o model diskriminativní, takže oproti HMM počítáme argmax q P (q O) přímo [22]: ˆq = argmaxp (q O) q T = argmax P (q i q i 1, o i ) q i=1 (1.41) Podmíněnou pravděpodobnost P (q i q i 1, o i ) vyjádřímě pomocí MaxEnt a tím získáme konečný MEMM model. P (q i q i 1, o i ) = 1 Z(o i, q i 1 ) exp( j w j f j (o i, q i )) (1.42) Stejně jako u HMM lze pro efektivnější dekódování použít Viterbi algoritmus. Učení MEMM spočívá ve správném určení hodnoty w i, která definuje váhu funkce f i [19]. 56

57 1.4. Pravděpodobnostní metody automatického rozpoznávání Obrázek 1.11: Příklad situace kdy dochází k Biasovu problému. Podle přechodových pravděpodobností lze pouhým okem vidět, že stav A má tendenci přecházet do stavu B a stav B má tendenci zůstavat ve stavu B. Pokud ovšem chceme nalézt nejpravděpodobnější sekvenci stavů, získáme kupodivu sled AAAA (P (AAAA) = 0.09, P (BBBB) = 0.03, P (ABAB) = 0.06, P (AABB) = ). To je způsobeno díky nerovnováze počtu hran vedoucí ze stavu A i a B i Podmíněná náhodná pole (Conditional Random Fields) Podmíněná náhodná pole (angl. Conditional Random Fields, dále jen CRF) je dalším diskriminativním pravděpodobnostním modelem, který stejně jako MEMM, využívá k určení podmíněné pravděpodobnosti log-lineární funkci [35]. MEMM ovšem obsahuje zásadní problém a tím je Label Bias Problem. Pokud máme dva stavy q 1 a q 2 a stav q 2 má více potenciálních přechodů do jiného stavu než stav q 1, potom stav s menším počtem přechodů (tedy např. stav q 1 ) má tendenci nepřecházet do stavů s větším počtem potenciálních přechodů (tedy např. do stavu q 2 ), i když to od něj neočekáváme (viz. obrázek 1.11). Tento problém řeší právě CRF, jelikož nepracuje s lokálními pravděpodobnostmi, ale s globálními hodnotami [26]. Pokud uvažujeme lineárně zřetězené CRF, lze určit podmíněnou pravdě- 57

58 1. Zpracování přirozeného jazyka Obrázek 1.12: CRF model vyjádřený grafem. Pravděpodobnost stavu q i asociovaného s pozorovanou entitu o i se počítá globálně dle celé sekvence skrytých stavů, proto je graf neorientovaný. podobnost P (q o) následovně [22]: P (q o) = 1 Z(o) exp( i F i (o, q) = j w i F i (o, q)) f i (q j 1, q j, o, j) (1.43) Kde f představuje, stejně jako u MEMM, booleovu funkci, jež testuje vlastnosti dané pozorované entity asociované nějakým stavem a jeho okolím. Dále zde máme globální normalizační faktor Z. Tento model eliminuje Label Bias Problem, jelikož zde neprobíhá normalizace dle stavu, ale dle celé sekvence; proto je graf tohoto modelu neorientovaný (viz. obrázek 1.12) [35]. I pro CRF lze využít k dekódování Viterbi algoritmus. 1.5 Extrakce informací Tato část uvádí základní techniky, které jsou používané k extrakci sémantického obsahu z textu. V této disciplíně se snažíme v textu vyhledávat klíčové informace, dávat je do souvislostí a porozumět tak kontextu daného pozorovaného textu. Zkráceně lze extrakci informací (angl. information extraction, zkráceně IE) formulovat jako proces získávání strukturovaného obsahu z nestrukturovaného textu [19]. Úlohy v oboru extrakce informací jsou robustní problémy, které se obvykle řeší pomocí kombinace technik, uvedených v předchozích kapitolách (pravděpodobnostní modely, metody parsování apod.). Základními úlohami jsou [19]: Rozpoznávání pojmenovaných entit: Rozpoznává v textu jména osob, organizací, míst apod. (angl. named entity recognition). Detekce a klasifikace relací: Detekuje a klasifikuje vztahy mezi entitami (angl. relation detection and classification). 58

59 1.5. Extrakce informací Detekce časových výrazů a jejich analýza: Detekuje a analyzuje v textu veškeré časové informace (angl. temporal expression detection and temporal analysis). Detekce a klasifikace událostí: Hledá relevantní události v textu a snaží se k nim přiřadit jednotlivé entity (angl. event detection and classification.). Template-filling: Hledá dokumenty, které souvisejí s analyzovaným textem a doplňuje k nim nově získané informace Rozpoznávání pojmenovaných entit V rámci procesu rozpoznávání pojmenovaných entit (angl. named entity recognition - NER) se snažíme najít slovní fráze, které jsou jménem nějakých entit (resp. nějakých konkrétních subjektů); jedná se vesměs o vlastní jména osob, geolokací, organizací aj. Výstupem takovéto analýzy je množina nalezených entit, která bývá vstupem pro další procesy extrakce informací. Jelikož je řešení úlohy NER hlavní náplní této práce, je tomuto problému věnována mnohem větší pozornost než ostatním procesům IE; podrobnější informace jsou proto vyčleněny v samostatné kapitole (viz. 2) Detekce a klasifikace relací Tato část extrakce informací se zabývá hledáním vztahů mezi již nalezenými pojmenovanými entitami. Výsledkem této analýzy je množina binárních relací a množina jejich konkrétních instancí (neboli dvojic). NázevRelace1 = { E1, E2, E3, E4, } NázevRelace2 = { E5, E6, E7, E8, } (1.44) Mějme např. text, pojednávájící o hokejovém utkání, s již rozpoznanými entitami: V úvodu druhé části chytil [PERSON Jágrovi] v pokračujícím oslabení stoprocentní šanci [PERSON Varlamov]. Další přesilovku při [PERSON Tjutinově] trestu v 25. minutě už [COUNTRY Česko] využilo. [PERSON Blaťák] místo střely od modré čáry přihrál najíždějícímu [PERSON Novotnému], který vylepšil krásnou akci finální přihrávkou na [PERSON Jágra] a ten nekompromisně zakončil mezi [PERSON Varlamovy] betony. V textu si můžeme všimnout hned několika vztahů. Víme, že Varlamov chytil střelu Jágra, Blaťák přihrál Novotnému, Novotný přihrál Jágrovi a Jágr dal gól Varlamovi. Detekovali jsme tedy tyto relace, které můžeme klasifikovat 59

60 1. Zpracování přirozeného jazyka do tří typů: góly, přihrávky a chycené střely. Formálně lze tyto relace zapsat takto: někdochytilstřeluod = { V arlamov, Jágr } někdop řihráln ěkomu = { Blaťák, N ovotný, N ovotný, Jágr } někdov střelilgóln ěkomu = { Jágr, V arlamov } (1.45) Po identifikaci všech relací dostáváme další důležité informace o textu, a tím se opět přibližujeme k celkovému porozumění hlavního kontextu analyzovaných dat. Tak např. z předchozího příkladu dokážeme určit, že padl minimálně jeden gól, který vsítil Jágr, byly provedeny minimálně dvě přihrávky a Varlamov si připsal minimálně jeden zákrok a obdržel minimálně jednu branku Extrakce relací Před extrakcí (resp. identifikací) takovýchto relací je nutné si předem nadefinovat nebo obstarat ontologii, ve které jsou nadefinovány různé druhy relací mezi entitami. V procesu klasifikace se snažíme nalezené dvojice entit přiřadit právě k nějaké předdefinované relaci. Tímto nám vzniká znalostní model, ve kterém můžeme lehce vyhledávat informace dle existujících standardů. Jedním z nejrozšířenějších standardů pracující s relacemi (konkrétně s trojicí, která nám reprezentuje relaci) je RDF. Speciálně pro formát RDF existuje mnoho nástrojů dovolující velmi efektivně vyhledávat data v něm definovaná (více v sekci ). K tvorbě relačních extraktorů lze využít několika metod. V rámci této práce zde nebudou tyto metody dopodrobna rozváděny, ale jsou zde pouze v jednotlivých bodech uvedeny. Více o těchto extraktorech se lze dozvědět v [19]. Ručně psané vzory: Je možné nadefinovat si vlastní vzory identifikující relaci, obvykle dle regulárních výrazů. Učící metoda s učitelem: Tato metoda využívá sady ručně anotovaných dat a speciálního klasifikátoru relací, trénovaného metodou učení s učitelem (angl. supervised learning). Extrakce relací probíhá v následujících krocích: Vybereme relace, které chceme extrahovat. 2. Rozpoznáme entity v textu a vybereme ty, ke kterým chceme hledat relace. 3. Natrénujeme klasifikátor dle ručně anotovaných dat v korpusu. 4. Najdeme všechny páry entit (zde obvykle vybíráme páry entit pouze v rámci věty či odstavce).

61 1.5. Extrakce informací 5. Pro každý pár určíme množinu rysů (typ entit, slova vyskytující se před a za entitami, slova mezi entitami, typy relací mezi entitami - přísudky, předložky, syntaktické členy týkajících se entit aj. rysy) 6. Dle nalezených entit a jejich rysů klasifikujeme danou dvojici dle naučeného klasifikátoru (lze použít např. Naive Bayes, MaxEnt aj. modely pracující s rysy). Učící metoda s částečným učitelem: Zde disponujeme pouze omezeným korpusem, který má anotované pouze dvojice entit v relaci, ale nemá již specifikováno o jakou relaci se jedná. Tedy daný klasifikátor lze trénovat jen částečně (angl. semi-supervised learning). K určení existence relace pro danou dvojici využíváme bootstrapových metod; pracujeme se znalostmi z korpusu a zkoumáme, zda-li se do jisté míry shoduje okolí analyzovaných a extrahovaných dvojic dle nadefinovaných rysů (tyto rysy lze díky korpusu tvořit automaticky podle nějakých pravidel s vazbou na relace). Pokud ano, určíme dle rysů nejpravděpodobnější relaci: argmaxp (r f 1, f 2,, f n ) (1.46) r Učící metoda bez učitele: Pokud nemáme k dispozici žádná trénovací data, ani seznam relací, můžeme využít k extrakci vztahů algoritmus TextRunner, který využívá metod učení bez učitele (angl. unsupervised learning). 1. Použijeme parsovaná data k učení tzv. klasifikátoru důvěryhodných dvojic. 2. Extrahujeme všechny relace vyskytující se mezi frázemi, jejichž hlavou je podstatné jméno. 3. Ohodnocení dané relace zavisí na jeho redundanci Popis relací Jedním z oblíbených standardů pro formální popis relací je RDF (Resource Description Framework); tento standard je velmi rozšířen zejména na internetu a bývá velmi často spojován se sémantickým webem. Jeho syntaxí lze velmi snadno popisovat vztahy mezi entitami. Relace jsou formovány tzv. trojicí podmět-predikát-předmět (viz. obrázek 1.13) [21]: Obrázek 1.13: Relace popsána trojicí dle RDF standardu. 61

62 1. Zpracování přirozeného jazyka Obrázek 1.14: Konkrétní relace popsána trojicí dle RDF standardu. Podmět: Tato část relace je zdrojem, kterou zapisujeme v URI formátu (může obsahovat i prázdný uzel). Predikát: Jedná se o vlastnost podmětu, kterou rovněž zapisujeme ve formátu URI. Předmět: Je to cílový zdroj či cílová hodnota relace, která odkazuje buď opět na nějaký zdroj URI nebo má již nějaký konkrétní finální literál (číslo, řetězec). Jelikož se jedná o způsob zápisu zejména pro sémantický web, jsou zde části relace psány formátem identifikátoru webových adres (viz. obrázek 1.14). Podměty a předměty bývají často instancemi tříd v definované ontologii, predikát je předem nadefinovanou vlastností. Třídy a jejich hierarchie definujeme obvykle v rámci jedné ontologie, která nám popisuje typy relací a jejich atributů. Tyto ontologie běžně tvoříme dle standardu OWL (Web Ontology Language) a zapisujeme je obecně ve formátu RDF/XML. Pro dotazování nad relacemi formátované dle standardu RDF lze využít speciální dotazovací jazyk SPARQL. Ten nám dovoluje vyhledávat relace dle jakékoliv složky v trojici a rovněž poskytuje běžné SQL funkce. Např. dotaz, který vrátí seznam všech hokejistů, kteří vstřelili gól Varlamovi, vypadá následovně: PREFIX property: < PREFIX resource: < SELECT?name WHERE {?name property:vstrelilgol resource:varlamov. } RDF má mnoho formátů zápisu; nejprostší je serializace, která jednotlivé složky v trojici odděluje mezerou a relaci zakončuje tečkou; rozšířený je i formát XML či RDFa (dovoluje zapisovat informace o relacích přímo do těla nestrukturovaného textu v rámci nějakého webu pomocí tagů (X)HTML) Detekce časových výrazů a jejich analýza Časové informace tvoří velmi důležitou informaci v úlohách, které pokládají otázky, vracejí odpovědi, sumarizují text a identifikují události rozšířené ně- 62

63 1.5. Extrakce informací jakým časovým údajem (výstup této analýzy může být tedy vstupem procesu detekce a klasifikace událostí) [19]. Časovým výrazem může být absolutní bod v čase, relativní čas, či nějaké trvání. Absolutní časový výraz: Jsou to výrazy, které se mapují na nějaký konkrétní časový bod (hodina, den, rok nebo kombinace těchto absolutních hodnot). Relativní časový výraz: Jedná se o časovou informaci opírající se o nějaký pevný časový bod, od kterého jsou časy odvozeny (minulý týden, tři dny po loňské schůzi apod.). Časový interval : Jde o výraz reprezentující nějaké časové rozpětí (běžel 45 sekund, prohibice trvala 3 týdny). Časové informace detekujeme dle určitých lexikálních znaků, které tvoří hlavu časového výrazu [19]. Jedná se o podstatná jména (leden, ráno, podzim), přídavná jména (nedávný, minulý, ranní) a příslovce (denně, ročně) Rozpoznávání časových výrazů Pro rozpoznání časových výrazů nám nestačí pouze najít hlavu výrazu, ale je nutné přesně určit začátek a konec celé časové fráze. Pro nalezení takovéto fráze můžeme použít následujících přístupů [19]: Pravidlový přístup: Nadefinovaná pravidla pro rozpoznávání časových výrazů obvykle aplikujeme při procesu částečného parsování (viz ). V prvním kroku se snažíme analyzovat rysy jednotlivých slov (např. slovní druhy) a v dalších krocích se již snažíme určit časové výrazy pro větší a větší bloky dle definovaných vzorů. Časové bloky lze efektivně vyhledávat i během syntaktického parsování, kdy se nám podaří úspěšně identifikovat příslovečná určení času. Sekvenční rozpoznávání: Jedná se o typ sekvenčního procházení slov využívající statistický přístup. Máme trénovaný sekvenční klasifikátor (dle anotovaného korpusu), který obsahuje informace o časových výrazech, jejich rysech a hranicích určených IOB kódováním. Poté již stačí procházet jednotlivá pozorovaná slova, hledat k nim příslušné rysy a klasifikovat dle klasifikačního modelu (např. použizím metody MEMM viz ). Constituent-based klasifikace: Jde o kombinaci předchozích přístupů (částečného parsování a sekvenčního rozpoznávání dle statistických údajů). Více v [19]. 63

64 1. Zpracování přirozeného jazyka Normalizace časových výrazů V této fázi již uvažujeme rozpoznané bloky obsahující informace o čase. Následuje normalizační krok, při kterém se snažíme mapovat časové výrazy dle nějakých vzorů (obvykle dle regulárních výrazů) do specifické časové struktury (např. pro Javu mapovat časový výraz z textové podoby na instanci třídy Date, nebo na dvojici těchto instancí vyjadřující časový rozsah). K mapování takovýchto výrazů lze použít standardů ISO pro zápis datových formátů (např. (ČSN) ISO-8601), či vlastní vzory. Problémy zde bývají u relativních časových výrazů, jako jsou minulý tyden či zítra. V těchto případech je nutné rozpoznat datum vzniku aktuálně zkoumaného dokumentu (ten je buď známý, nebo ho opět z textu musíme vydolovat). V situaci, kdy již známe datum publikace pozorovaného dokumentu, lze snadno parsovat i relativní časové výrazy; minulý týden mapujeme na datum vzniku dokumentu mínus sedm dní. Extrakce časových informací z textu nemusí být jednoduchým úkolem, hlavně z toho důvodu, že časové výrazy obsažené v psané formě nejsou většinou ve standardu, na který jsme zvyklí ze strukturovaných dat. Častokrát je v textu uváděna pouze část časového údaje, jelikož autor předpokládá, že čtenář si již dokáže zbytek časových údajů domyslet, a to buď podle datumu publikace daného textu, nebo podle informace v jiné části textu. Dále se i mohou vyskytovat časové údaje o událostech, které jsou běžnému člověku známé, ale počítač je samozřejmě není schopen z textu rozpoznat, např. mějme frázi Rok po upálení mistra Jana Husa byl odsouzen a upálen i mistr Jeroným Pražský. Po přečtení tohoto úryvku by měl každý Čech, který úspěšně absolvoval hodiny dějepisu na základní škole, vědět, že mistr Jan Hus byl upálen roku 1415 a tudíž mistr Jeroným Pražský byl upálen roku Pokud stroj nemá informace o roku upálení mistra Jana Husa, nelze tento časový bod normalizovat Detekce a klasifikace událostí Cílem tohoto typu extrakce informací je identifikace zmínek o relevantních událostech v textu a následná klasifikace těchto událostí do nadefinovaných tříd. Zmínka o události je jakýkoliv výraz označující událost nebo stav, který může být přiřazen nějakému časovému bodu či intervalu. Z toho vyplývá, že extrakce událostí by měla následovat až po detekci a analýze časových údajů v textu. V následujícím textu jsou označeny důležité události: Česká vláda [EVENT reaguje] na rekordní [EVENT nárůst] ceny nafty, jejíž průměrná cena za poslední týden [EVENT překročila] hranici 37 korun a u některých pump se prodává i za cenu okolo 40 korun. 64

65 1.5. Extrakce informací Ve většině případů bývá událostí sloveso; ovšem není tomu vždy, tak jak je vidět v ručně anotovaném textu, kde i podstatné jméno nárůst může být součástí události. Naopak slovesa nemusí vždy vyústit v událost, pokud pouze informaci o události rozšiřují nebo upřesňují. O tom, co je či není událostí a jaké konkrétní parametry musí událost vykazovat, může být spekulováno v rámci konkrétní úlohy. Obecně ovšem existují slova, u kterých se ve většině případů o událost nejedná např. slovesa: mít, vzít, dělat aj. Pro detekci a klasifikaci událostí využíváme metody uvedené v předchozích úlohách extrakce informací. Jsou to především přístupy využívající pevných ručně psaných pravidel nebo statistických údajů získaných na základě strojového učení. Tyto metody opět využívají ke správné detekci a klasifikaci rysy, které identifikují události; mohou to být rysy určující: předpony, přípony, slovní druhy, stop slova, větné členy, stemy, kořeny aj. Ve fázi, kdy již máme identifikované události a časové výrazy, nástává úkol využití těchto znalostí ke správnému doplnění časové osy. Časová osa je sled událostí, které máme dokumentované a podle nichž dokážeme zodpovídat otázky či docházet k závěrům; častokrát je třeba i docílit správné chronologie událostí. Tento problém lze opět řešit pomocí časových znalostí a objevených událostí všech dokumentů. Jak je ale uvedeno v knize [19], je tento úkol stále předmětem současného výzkumu Template-Filling Pokud nějakou dobu analyzujeme články obsahující události, můžeme si všimnout shluků těchto událostí, které často odpovídají poměrně běžným a stereotypním situacím. Tyto shluky nám tvoří jakýsi skript, který obsahuje analyzované informace o určitém druhu události (časové údaje, role, účastníci, rekvizity aj. dílčí informace). Analýzou dalších článků lze tento skript rozšiřovat, doplňovat informace a tvořit tak znalostní model konkrétní situace; a naopak lze pomocí skriptu identifikovat entity, které souvisejí s předchozími událostmi. Takovéto scripty mohou být v nejjednodušší formě reprezentovány šablonami, které obsahují předdefinované prázdné sloty. Tyto sloty jsou jakýmisi atributy, které nám vyjasňují nějakou konkétní situaci, kterou chceme pozorovat (např. atributy cena a datum pro situaci o cenách benzínu; pozorujeme pohyb cen a kdy k nim docházelo) a naším cílem je tyto prázdné bubliny v budoucnu vyplnit informacemi z analyzovaných dat. K řešení úlohy template-filling obvykle využíváme výsledků všech předchozích procesů extrakce informací (NER, extrakce relací, událostí a časových výrazů), jelikož atributy, které jsou vyplňovány, bývají právě pojmenované entity, časové značky či statistické údaje vypočtené pomocí nalezených relací či událostí. Vyplňování prázdných šablon je prováděno vcelku efektivním přístupem převedením této úlohy na problém statistického sekvenčního rozpoznávání (např. MEMM). Trénované modely rozpoznávají sekvence slov (obvykle po- 65

66 1. Zpracování přirozeného jazyka jmenované entity, časové výrazy) a nakládají s nimi jako s potenciálními kandidáty na vyplnění prázdných slotů. Uvažujeme dva základní typy algoritmů: 1. Pro každý slot, který je potřeba vyplnit, natrénujeme sekvenční klasifikátor. Poté vstupní text zpracujeme každým klasifikátorem zvlášť. 2. Další možností je natrénovat jeden velký klasifikátor a při sekvenčním procházení analyzovaných dat rozpoznávat entity pro každý slot. 66

67 KAPITOLA 2 Rozpoznávání pojmenovaných entit Ropoznávání pojmenovaných entit (angl. named entity recognition) je jednou ze základních úloh extrakce informací, jejímž cílem je identifikace slov či slovních spojení, která v textu vystupují jako vlastní jména nějakých entit. Na základě vlastního jména se snažíme rozpoznat typ dané entity (indikátorem pojmenovaných entit ovšem nemusí být pouze vlastní jména, ale i jiné výrazy jednoznačně odkazující na nějaké objekty či časové okamžiky) [9]. Cílem této práce je vytvořit nástroj, jehož vstupem je nestrukturovaný text, a výstupem identický text, obohacený o anotace 2, které nám označují pojmenované entity a doplňují informace o jejich typech. Jak tento úkol řešit, je uvedeno v kontextu této kapitoly. 2.1 Pojmenovaná entita Jak již bylo definováno v úvodu, pojmenovaná entita je v oblasti NLP chápána jako popis nějakého objektu, který tento objekt resp. entitu identifikuje (nelze ovšem říci jednoznačně identifikuje). V reálném světě si lze takovýto objekt představit např. jako člověka, kde jednotlivé lidi v textu od sebe rozlišujeme právě pomocí jejich vlastních jmen; tedy já jsem objekt, jehož jméno je Václav Zeman a pokud se tato fráze objeví v textu, je možné rozpoznat, že se jedná o jméno identifikující entitu typu Osoba, která odkazuje na moji osobu. 2 Anotace je pomocná nebo dodatečná informace přidaná k nějakému dokumentu či dílčím jednotkám dokumentu. 67

68 2. Rozpoznávání pojmenovaných entit Obrázek 2.1: Entity a jejich jména dále děleny na typy pojmenovaných entit. Úloha NER byla prvně uvedena v rámci šesté konference MUC (viz. 2.2), kde jedním z úkolů bylo vyvinout nástroj pro rozpoznávání základních entit; entity byly definovány následovně [34]: Pojmenované entity (ENAMEX): Organizace (např. názvy firem, vládních organizací apod.) Osoby (jména osob či rodin) Lokace (názvy politických či geografických lokací - státy, města, provincie, hory, jezera apod.) Časové výrazy (TIMEX): Absolutní časové výrazy (viz ) Datum Čas Číselné výrazy (NUMEX): Peníze (peněžní výrazy jako 20CZK, $30 apod.) Procenta Jak si lze povšimnout, byl na konferenci MUC-6 úkol pro rozpoznávání pojmenovaných entit rozšířen o časové a numerické výrazy. Lze tedy i v rámci úlohy NER rozpoznávat tyto entity, i když se v pravém slova smyslu o vlastní jména nejedná (více o konferenci MUC v 2.2). Obecně si ale lze za pojmenované 68

69 2.2. Konference MUC a CoNLL Obrázek 2.2: Hierarchická struktura typů pojmenovaných entit. entity představit jakékoliv objekty členitelné do kategorií, které lze rozpoznat dle nějakého vlastního identifikátoru. Záleží tedy na konkrétní úloze - jaké si určíme okruhy entit, které chceme sledovat [9]; lze např. úlohu rozšířit o následující typy entit: auta, filmy, měny, druhy sportů apod. Dále lze základní entity hierarchicky členit na konkrétnější subjekty. Takovouto hierarchii si obvykle definujeme v rámci nějaké ontologie, kterou si lze představit jako stromovou strukturu (obr. 2.2), z níž lze parsovat jednotlivé entity z textu, tak ja bylo ukázano v kapitole Před procesem rozpoznávání pojmenovaných entit je tedy nutné definovat, co je pojmenovaná entita a jaké druhy entit budou rozpoznávány. Obecně si určíme třídy entit (jména, organizace, lokace aj.) a jejich hierarchickou strukturu; během rozpoznávací fáze se snažíme nalezené segmenty textu vykazující znaky pojmenovaných entit klasifikovat do těchto nadefinovaných tříd. 2.2 Konference MUC a CoNLL Od konce 80. let byly pořádány konference MUC (Message Understanding Conference), které se zabývaly výzkumem v oblasti extrakce informací. V rámci této konference se řešila právě i problematika NER. Konference byly vedeny hlavně v praktickém a užitečném pojetí, jelikož každý, kdo se chtěl této akce zúčastnit, musel navrhnout a implementovat nástroj řešící problém IE, který byl diskutován v rámci této konference a tyto nástroje byly v jejím průběhu prezentovány a porovnávány [9]. Dá se tedy říci, že každý ročník této události přinesl vždy nějaké ovoce. A právě na šestém ročníku konference MUC byl vyhlášen a definován úkol rozpoznávání pojmenovaných entit [34] MUC-6 Tato konference, konaná v roce 1995 v Marylandu, byla jakýmsi startem výzkumu NER. Byla i jakýmsi přelomovým ročníkem těchto konferencí, jelikož rozšířila sortiment řešených úloh. V předchozích pěti ročnících se vždy řešil 69

70 2. Rozpoznávání pojmenovaných entit pouze jeden úkol a to vyhledávání informací v textu, které byly následně použity k vyplnění příslušných šablon (tzv. template-filling, viz ). V šestém ročníků úloh přibylo, konkrétně se řešilo [34]: Rozpoznávání pojmenovaných entit. Řešení koreferencí (hledání frází, které nahrazují nějakou jmennou entitu). Template-filling (úkol je rozdělen na dva podproblémy: Template Element a Scenario Template). Ovšem všechny tyto úlohy byly omezeny pouze na anglický jazyk. Problém NER pro mimoanglické jazyky byl řešen až v rámci jiných a pozdějších konferencí. Pro úlohu NER byly pojmenované entity v textu anotovány dle standardu SGML 3. Tedy každá entita byla uzavřena do tagu, který popisoval typ dané anotované fráze. Jména tagů a atributů byla volena dle předdefinovaných typů, určených pro tuto konferenci (ENAMEX, NUMEX a TIMEX - viz. 2.1): Mr. <ENAMEX TYPE="PERSON">Dooner</ENAMEX> met with <ENAMEX TYPE="PERSON">Marti Puris</ENAMEX>, president and chief executive officer of <ENAME X TYPE="ORGANIZATION"> Ammirati & Puris</ENAMEX>, about <ENAMEX TYPE="ORGANIZATION"> McCann</ENAMEX> s acquiring the agency with billings of <NUMEX TYPE="MONEY">\$400 million</numex>, but nothing has materialized. Další a poslední ročník konference MUC byl konán společně s konferencí MET (Multilingual Entity Task Evaluation). Byly zde řešeny podobné úlohy jako v předchozím ročníku, ovšem nyní již i pro mimoanglické jazyky [9]. Vyhodnocování systémů NER bylo prováděno pro japonštinu, čínštinu a španělštinu. Další konference, které navazovaly a navazují na předchozí výzkumy události MUC, jsou CoNLL CoNLL 2002, 2003 Konference CoNLL (Conference on Computational Natural Language Learning) je od roku 2000 vedena v podobném duchu jako dřívější akce MUC. V rámci každého ročníku je řešena nějaká jednotná společná úloha, jejíž výsledky jsou předkládány během této konference; jedná se vesměs opět o různé úlohy v oblasti extrakce informací [9]. V letech 2002 a 2003 byla pro konferenci CoNLL vyhlášena společná úloha právě na téma rozpoznávání pojmenovaných entit 3 SGML - Standard Generalized Markup Language je značkovací jazyk z něhož vzešel dnes již populárnější formát XML. 70

71 2.3. Hlavní problémy při rozpoznávání pojmenovaných entit metodou strojového učení. Výsledkem měl být systém řešící problém NER, a to nezávisle na konkrétním jazyce [31]. Tato konference dodnes hraje významnou roli pro rozvoj v oblasti NLP. Pro problém NER nabídla několik zajímavých řešení, které byly v rámci této události předloženy, a ze kterých může čerpat i tato práce. V ročníku 2002 bylo implementováno celkem 12 systémů, které používaly různých technik strojového učení, v roce 2003 jich bylo předvedeno 16, opět využívajících různých metod strojového učení, či rozdílných množin rysů (viz. 2.5). V těchto ročnících byly systémy předváděny na trénovacích datech pro angličtinu, němčinu a španělštinu [31] [32]. Další ročníky konference CoNLL se zabývaly již jinými úkoly, které ovšem mohou být velmi užitečné i pro budoucí výzkum v oblasti NER. V současnosti existuje mnoho jazykově závislých i nezávislých přístupů pro řešení úlohy NER. Problém byl i rozšířen do oblasti různých oborů, kde už se obecně neřeší identifikace pojmenovaných entit pro třídy, které byly definovány v rámci konference MUC a CoNLL, ale např. pro třídy biologických termínů apod. [9]. Systémů a algoritmů, využívajících pravidlových přístupů nebo technik strojového učení z různých zdrojů (ručně anotovaných korpusů, Wikipedie, Freebase aj.), již nyní existuje celá řada. Ovšem je nutné uznat, že konference jako MUC a CoNLL byly hlavním hnacím motorem pro výzkum v této oblasti a díky nim již existuje celá řada systémů NER. 2.3 Hlavní problémy při rozpoznávání pojmenovaných entit Poté co byl definován pojem pojmenovaná entita a byly uvedeny základní historické informace o rozvoji oboru NER, zbývá popsat primární postupy, které vedou k uspěšnému rozpoznání pojmenovaných entit v textu; ovšem před uvedením obecných algoritmů je potřeba upozornit na základní problémy, které je při procesu NER nutno vyřešit; tyto problémy bývají pro všechny systémy NER společné. Při rozpoznávací fázi je hlavním problémem, tak jako u většiny úloh NLP, nejednoznačnost entit. Dále je potřeba řešit otázku vnořených entit a správně identifikovat víceslovné entity [19] Nejednoznačnost Nejednoznačnost je jeden z problémů, který se obvykle týká většiny úloh NLP. Jedná se především o slova nebo fráze, u kterých nelze jednoznačně určit jejich druh či konkrétní entitu; pro NER proto rozlišujeme dva druhy nejednoznačností. Nejednoznačnost entit stejného typu a nejednoznačnost typu entity [19]. 71

72 2. Rozpoznávání pojmenovaných entit Obrázek 2.3: Nejednoznačnost entit stejného typu Nejednoznačnost entit stejného typu Tento druh nejednoznačnosti řešíme ve fázi, když již máme entitu identifikovanou a klasifikovanou do nějaké třídy. Problém nastává, jakmile chceme k dané entitě přiřadit nějaký konkrétní subjekt, kterých existuje, pro stejný tvar a stejný typ pozorované entity, více [19]; bohužel tento jev nastává poměrně běžně (obr. 2.3). Tak např. jména osob vykazují velikou míru této nejednoznačnosti, jelikož existují spousty osob stejného jména. Lze se sice omezovat pouze na osoby veřejně známé, ale i toto omezení nemusí vést k jednoznačné entitě. Tak např. jméno Karel Svoboda je běžné české jméno. Ovšem veřejnost toto jméno obvykle spojuje se známým hudebním skladatelem, českým malířem či divadelním režisérem; takže lze tuto nejednoznačnost zúžit uvažovaním pouze těchto tří osob (ale i tak může být jméno Karel Svoboda teoreticky spojováno s jakoukoliv osobou, která kdy toto jméno nosila). V některých úlohách NER bývá žádáno jednoznačně určit s jakou konkrétní entitou je analyzované jméno spojováno, proto je nutné tyto typy nejednoznačností brát v potaz. Obecně můžeme tento problém řešit definováním podrobnější ontologie, kde např. entitu Osoba dále členíme do dalších hierarchických úrovní obvykle dle oboru, kterému se daná osoba věnuje (viz. obr. 2.2) - tímto způsobem lze zúžit seznam nejednoznačných entit, což ovšem nevede k absolutnímu odstranění nejednoznačnosti. Např. pro entitu Rudolf Hrušinský typu Herec, nelze opět určit o jakého herce se jedná (může jít o Rudolfa Hrušinského staršího, mladšího či nejmladšího). Tyto nejednoznačnosti se nejlépe odstraní dle kontextu v okolí nejednoznačné entity, nebo dle vazeb na ostatní entity v textu [19] Nejednoznačnost typů entit Pro tento případ uvažujeme identifikovanou entitu, u které ovšem nelze jednoznačně určit její typ. Pro pochopení je zde ihned uveden příklad: Mějme slovní spojení Černá Hora, jež může náležet k entitám různých typů; může se jednat o stát, město v okrese Blansko, či pivovar. K úspěšnému odstranění této nejednoznačnosti musíme opět využít informací v okolí pozorovaného textu [19]. 72

73 2.3. Hlavní problémy při rozpoznávání pojmenovaných entit Obrázek 2.4: Nejednoznačnost typu entity. Takovýchto nejednoznačných slov či víceslovných frází existuje celá řada. Dokonce je mnoho entit, které vykazují nejednoznačnosti obou typů. Např. Washington může být osoba, lokace či organizace, tedy patří do více kategorií; dále existuje několik lokací (resp. měst) s názvem Washington, stejně tak jako existuje spousta osob s příjmením Washington (obr. 2.3 a 2.4) Víceslovné entity Víceslovné entity jsou vcelku běžným jevem, typickým pro jména osob či zeměpisných názvů. Problémem zde bývá neschopnost určit správné hranice takovéto víceslovné entity, tedy identifikovat místo, kde entita začíná a kde končí. Např. máme-li v textu frázi Přemysl Otakar II., je potřeba rozpoznat, že slovo Přemysl, slovo Otakar a slovo II. tvoří dohromady jednu entitu typu Osoba. [PERSON Přemysl Otakar II.] se tak stal pánem [LOCATION Rakouska] a [LOCATION Štýrska]. Takovýto případ není vždy jednoduché řešit, jelikož entitu typu Osoba mohou tvořit i jednotlivé subsekvence této fráze, např. Přemysl Otakar, nebo pouze Přemysl. Z tohoto příkladu také vychází jeden patrný úkaz: čím více slov má pojmenovaná entita, tím se nám může jevit jako jednoznačnější (toto pravidlo ovšem nemusí platit vždy). Nelze tedy pracovat pouze s jednotlivými slovy, ale je potřeba zkoumat i jejich okolí. Pro tento případ můžeme využít n-gramů, kdy si nadefinujeme okénko pevné velikosti n, např. n = 2; tím získáme tzv. 2-gram resp. bigram, který posouváme dle sekvence slov zleva doprava a snažíme se nalézt entity specifické pouze pro daný n-gram. Takovéto sekvenční procházení můžeme provádět dále pro trigram, 4-gram atd. Víceslovné entity lze také identifikovat při parsování (viz ) nebo kouskování (viz ). Při kouskování využíváme pravidel či rysů, podle kterých přiřazujeme jednotlivým slovům 73

74 2. Rozpoznávání pojmenovaných entit značky dle IOB kódování (viz ) [19]. Při zpětné analýze těchto značek zjišťujeme, které entity jsou víceslovné a kde jsou jejich hranice Vnořené entity Uvažujme frázi Václav Zeman vyskytující se v analyzováném textu. Tato fráze vyjadřuje entitu mé osoby a obě dvě slova, zahrnuta do tohoto slovního spojení, tvoří části mého celého jména, kterým se identifikuji. Tato entita má v sobě ovšem další vnořené entity, těmi jsou právě jednotlivá slova. Václav jako křestní jméno a Zeman jako příjmení. Pokud bychom tedy nechtěli sledovat pouze typ Osoba, ale i hierarchicky podřízené typy FN (křestní jméno) a SN (příjemní), výsledná anotace by vypadala následnovně: [PERSON [FN Václav] [SN Zeman]] Řešení problému vnořených entit je většinou spojeno s řešením problému víceslovných entit, jelikož jde o vztah víceslovné entity a jednotlivých podentit v ní vnořených. Obecně ovšem tyto hierarchické struktury rozpoznáváme pomocí parsovacích metod (viz ). Pokud ale chceme zamezit výskytu vnořených entit, tak obecně platí, že nadřazená entita má přednost před entitou hierarchicky nižší [10]. Může ale nastat případ, že vnořená entita není hierarchicky závislá na entitě nadřazené, např. pro entitu František z Assisi, která je typu Osoba, můžeme pozorovat vnořenou entitu Assisi typu Lokace. [PERSON František z [LOCATION Assisi]] Takovéto typy entit někdo od někud vykazují i jisté znaky nejednoznačnosti, jelikož nelze jednoznačně určit, zda je příslovečné určení místa součástí jména osoby, či pouze doplňuje lokaci odkud dotyčný pochází. Proto i takovéto problémy je nutné před procesem NER řešit a brát v potaz [10]. 2.4 Metody rozpoznávání pojmenovaných entit V této části budou uvedeny různé způsoby, kterými je možné entity rozpoznávat a správně klasifikovat. Dle předchozí kapitoly zpracování přirozeného jazyka (viz. 1) si lze již vytvořit hrubou představu o tom, jak budou pojmenované entity ve finále rozpoznávány (takovéto typy klasifikačních úloh již byly prezentovány v kapitole extrakce informací - viz. 1.5). Uvedené metody rozpoznávání zde nebudou popisovány příliš detailně; podrobnosti jsou k nalezení v externích zdrojích. Uvažujme tedy nějakou vstupní množinu dat v podobě nestrukturovaného textu a nadefinované typy entit, které chceme rozpoznávat (většinou definujeme nějakou ontologii s hierarchickou strukturou). 74

75 2.4. Metody rozpoznávání pojmenovaných entit Prvním krokem k úspěšnému dosažení cíle (jak již bylo uvedeno v kapitole 1.3) je pro většinu úloh NLP nějaké předzpracování vstupních dat. Souvislý text je nutné nejprve zpracovat do správné formy, aby bylo možné rozpoznávací proces provádět co nejefektivněji. První fází procesu předzpracování bývá tokenizace slov (resp. identifikace slov či vět a uložení těchto položek do nějaké sekvenční struktury - viz ); v dalším kroku obvykle provádíme nějakou normalizaci jednotlivých slov pro snížení dimenzionality dat (odstranění diakritiky, vypuštění stop slov, lemmatizaci apod. - viz ). V normalizačním kroku je ovšem nutné si uvědomit, jaké procesy jsou užitečné a jaké ne; normalizací sice redukujeme množství pozorovaných dat, ale zvětšuje se nám míra nejednoznačnosti normalizovaných entit. Např. pokud u názvu města Březno odstraním diakritiku, vznikne slovo Brezno. Tímto se nám bohužel zvýšila nejednoznačnost slova, jelikož Brezno může být město jak v Česku, tak i na Slovensku, zatímco Březno (s diakritikou) je pouze v Česku. Takováto nejednoznačnost může nastat bohužel i při lemmatizaci. Mějme dvě fráze: jedu k Července (ve významu - jedu k obci Červenka, vyskytující se v olomouckém okresu) a jedu k Červenkovi (k osobě). Podle tvaru ve třetím pádě dokážeme lehce rozlišit, zda-li se jedná o osobu či obec. Pokud ovšem slova lemmatizujeme, vznikne nám v obou případech tvar Červenka a zde již nedokážeme rozlišit dle morfologické analýzy o jakou entitu se jedná. Při normalizaci tedy platí to, že čím více se snažíme redukovat dimenzionalitu dat, tím více ztrácíme informací o textu. Ve stavu, kdy již máme data připravena k rozpoznávací fázi, je nutné zvolit algoritmus, pomocí kterého budou pojmenované entity vyhledávány. Takovýto algoritmus musí být schopen entitu (i víceslovnou) identifikovat a správně klasifikovat do předdefinované třídy; v případě, že máme pro nějakou frázi více kandidátů pojmenovaných entit (entita je nejednoznačná), pak algoritmus musí být schopen vyselektovat tu nejpravděpodobnější; tento proces nazýváme odstraňování nejednoznačnosti (angl. disambiguation). Obecné procesy při rozpoznávání pojmenovaných entit jsou znázorněny na obrázku 2.5. Obrázek 2.5: Procesy vykonávané při rozpoznávání pojmenovaných entit. 75

76 2. Rozpoznávání pojmenovaných entit Metoda strojového učení Využití strojového učení je velmi oblíbené právě v oblasti NER [19]. Jedná se o vcelku spolehlivou metodu, která nemusí být závislá na konkrétním jazyku a dá se vcelku rychle naimplementovat, a to hlavně díky celé řadě článků napsaných na toto téma v rámci konference CoNLL (viz ). Tato metoda uvažuje nějaký klasifikátor (resp. klasifikační model), který trénujeme (resp. učíme) dle nějakých dat, a díky znalostem z učení dokáže rozpoznávat pojmenované entity. Dále je potřeba disponovat nástrojem, který nějakým způsobem předhazuje klasifikačnímu modelu slova nebo fráze a výsledky ukládá do nějaké výstupní kolekce. Pro úlohu NER obvykle využíváme algoritmů, které text zpracovávají sekvenčně (tedy zleva doprava), např. kouskování (angl. chunking), což je typ částečného parsování [19]. Tohoto principu se držím i v rámci této práce (výhody častečného parsování pro takovéto typy klasifikačních úloh jsou uvedeny v kapitole ). K rozpoznávání entit je tedy nejprve nutné obstarat si a natrénovat nějaký klasifikátor, který dle svých explicitních znalostí dokáže správně identifikovat a označit pozorované slovo příslušným tagem. Trénování takovéhoto klasifikátoru lze provést buď pomocí korpusu, pak jde o učení s učitelem (angl. supervised learning), nebo pouze podle nadefinovaných pravidel a vstupních dat, pak jde o učení bez učitele (angl. unsupervised learning). Trénovaný klasifikátor v sobě obsahuje znalosti, které jsou obvykle ve formě statistické dle nadefinovaných rysů (angl. features) [37]. Rys je jakousi vlastností, kterou může mít nějaké slovo či fráze (viz. 2.5). Např. klasifikátor obsahuje znalost, která nám říká, že vlastnost resp. rys slova slovo začíná velkým písmenem se vyskytuje z 90ti procent u všech pojmenovaných entit. Klasifikátor by měl obsahovat i informace o víceslovných entitách (získaných Obrázek 2.6: Ukázka běžných položek vstupující do procesu učení/trénování klasifikačního modelu. 76

77 2.4. Metody rozpoznávání pojmenovaných entit opět pomocí nějakých trénovacích dat či pravidel) a být schopen označit tagem určující pozici slova dle IOB kódování (viz ). Klasifikátor dále může obsahovat rozsáhlý slovník, ve kterém jsou uvedena jména zeměpisných názvů (gazetteers), osob (jména, příjmení) či organizací. Přítomnost pozorovaného slova ve slovníku může být tak dalším rysem uvedeným v množině vlastností [19]. Různé typy trénovacích dat jsou znázorněny na obrázku Učení s učitelem K trénování používáme nějakou předem určenou část dat z korpusu, kterou nazýváme trénovací data (viz ) [27]. Tato data jsou obohacena o dodatečné informace, neboli anotace ručně přidané člověkem. Může se jednat o morfologickou, syntaktickou či sémantickou anotaci k nějakému slovu či slovnímu spojení. Tyto informace poté můžeme při trénování využít, a vybudovat jakýsi znalostní model, založený na těchto informacích spojených s množinou rysů (viz. 2.5); obvykle pro nějaký rys zkoumáme četnost výskytů této vlastnosti u nějakého typu pojmenované entity [19]. Do trénovací fáze může vstupovat mnoho činitelů tak, jak je zobrazeno na obrázku 2.6 a jelikož klasifikátor učíme pomocí explicitních znalostí, nazýváme tento proces učení s učitelem. Výstupem učení je jakási funkce, jejímž vstupem je slovo či fráze, a výstupem nějaká klasifikační (diskrétní), nebo spojitá hodnota; potom funkci nazýváme klasifikací nebo regresí [8]. Touto funkcí může být např. nějaký rozhodovací strom či pravděpodobnostní model (HMM, MEMM, CRF apod. - viz. 1.4) Učení bez učitele V tomto případě uvažujeme, že do trénovací fáze vstupují pouze testovací data (žádná trénovací data nemáme k dispozici). Cílem učení bez učitele je z nějakého nestrukturovaného textu vyextrahovat vzory, které nám v budoucnu mohou pomoci při rozpoznávání. Obecně existují typy entit, které vykazují podobné vlastnosti, a právě učící algoritmus bez učitele tyto vlastnosti zachycuje a podle nich příslušné entity shlukuje do různých skupin (obr. 2.7). Poté již stačí tyto shluky správně klasifikovat do typů pojmenovaných entit [4]. Zpravidla si pro učící algoritmus definujeme nějakou množinu rysů (viz. 2.5), podle kterých jednotlivá slova shlukujeme. Tak např. mějme klastr slov, jehož slova vykazují následující vlastnosti: začínají velkým písmenem a jejich předcházející slovo je Ing.. V tomto případě stačí dodefinovat, že všechna slova v takovémto klastru jsou pojmenovanými entitami typu Osoba; tímto získáme příslušný vzor pro tento typ entity. Výstupem tohoto algoritmu je opět funkce, která pro daný nestrukturovaný vstup vrací příslušný klastr. Tento typ algoritmu lze obohatit o částečného učitele (angl. semi-supervised learning), kdy k trénování klasifikačního modelu použijeme menší množinu 77

78 2. Rozpoznávání pojmenovaných entit Obrázek 2.7: Učení bez učitele. Výsledkem trénování je klasifikátor pracující s množinou klastrů. vzorů; tedy neanotujeme celý korpus, ale vybíráme z něho pouze podmnožinu entit, které vykazují nějaké viditelné vlastnosti identifikující pojmenovanou entitu [9]. Tyto vzory společně s entitami poté předáme učícímu algoritmu, který podle nich opět hledá nové klastry, či identifikuje nové vzory Identifikace a klasifikace pojmenovaných entit Jakmile disponujeme nějakým natrénovaným klasifikátorem, nastává čas mu začít sekvenčně předhazovat neanotované položky textu, který klasifikační model zpracuje a opatří příslušným tagem identifikující typ dané entity [19]. Dříve ovšem, než toto provedeme, je nutné přidat k analyzované frázi opět nějakou množinu rysů, která je hlavním klíčem k úspěšnému rozpoznání zkoumané entity. Tyto rysy bývají identické s rysy, které aplikujeme v učící fázi na trénovací data; typy těchto rysů je potřeba definovat ručně, ale obvykle to bývají znaky, které pojmenovaná entita vykazuje. Příklady rysů lze najít v dalších odstavcích (viz. 2.5). Příznaky dané fráze se nemusí vztahovat pouze na samotnou pozorovanou frázi, ale lze i pozorovat jiná slova v okolí analyzované entity [19]. Ve fázi, kdy máme k pozorovanému slovu dodatečnou přílohu v podobě množiny rysů, předáme celou tuto strukturu klasifikátoru. Ten na základě své natrénované klasifikační funkce vrátí příslušné tagy, kterými označíme pozorovanou entitu. Tak např. mějme frázi Ing. Koukal, kde zkoumáme slovo Koukal. Dále víme dle předcházející klasifikace, že slovo Ing. bylo označeno tagem B (dle IOB kódování jako začátek entity) a tagem identifikující pojmenovanou entitu typu Osoba. Klasifikační model by nám měl proto vrátit pro slovo Kou- 78

79 2.4. Metody rozpoznávání pojmenovaných entit Obrázek 2.8: Ukázka sekvenční klasifikace. Pozorovaným slovem je Copr., které obsahuje příslušnou množinu lokálních rysů (syntaktické a morfologické vlastnosti) a okolních rysů (syntaktické a morfologické vlastnosti slov v nadefinovaném okolí). Všechny tyto rysy vstupují do klasifikačního modelu, který na jejich základech rozpoznává analyzované slovo. kal rovněž tag typu Osoba s příznakem I (tím říkáme, že slovo Koukal patří k předchozímu slovu Ing. a dohromady tvoří tato fráze pojmenovanou entitu typu Osoba). Takto sekvenčně klasifikujeme slova od začátku až do konce. Obrázek 2.8 převzat ze zdroje [19] vizualizuje jak takováto sekvenční klasifikace probíhá. Proces odstraňování nejednoznačností bývá součástí klasifikačního modelu. Např. pro model MEMM (viz ) zkoumáme, jaká je pravděpodobnost, že dané slovo o s příslušnými rysy patří do třídy q i. Pokud tuto pravděpodobnost určíme pro všechny typy pojmenovaných entit, získáme množinu kandidátů a k nim dané pravděpodobnosti [19]. Proces odstraňování nejednoznačnosti pak spočívá v tom, že vybereme nejpravděpodobnější entitu a vrátíme ji na výstup. Sekvenční procházení a anotování dle jednotlivých slov je jednou z možností částečného parsování. Lze využít i jiných metod procházení a klasifikace dle n-gramů s pevnou velikostí - tzv. posuvné okénko, kdy se snažíme entity procházet zvlášť pomocí unigramu a pro víceslovné entity pomocí bigramu, trigramu atd Pravidlový přístup Tento přístup rozpoznávání pojmenovaných entit je založen pouze na neměnné sadě nadefinovaných pravidel, dle kterých lze pojmenované entity vyhledávat. Tato pravidla obecně definujeme dle osobních znalostí o rysech, které pojmenované entity vykazují [4]. Takovýto přístup využívalo mnoho systémů předvedených na konferenci MUC (viz ) a dosahovaly slušných výsledků. Tyto systémy dokonce rozpoznávaly dle pravidel nejen pojmenované entity, ale i koreference na tyto entity [34]. Zde je ukázka rysů, které lze definovat pro rozpoznávání dle pravidlových přístupů: 79

80 2. Rozpoznávání pojmenovaných entit Osoba: Lokace: Organizace: Slovo začíná velkým písmenem. Předcházející slovo vykazuje tvar titulu před jménem (Mgr., Ing., Dr. apod.). Slovo je podst. jm. Předcházející nebo následující slovo začíná velkým písmenem. Slovo začíná velkým písmenem. Slovo je podst. jm. Předcházející slovo je předložka. Slovo je příslovečného určení místa. Slovo začíná velkým písmenem. Slovo má všechna písmena velká. Slovo obsahuje tečku. Slovo je podstatné jméno. Předcházející slovo je firma. Časové výrazy: Slovo odpovídá vzoru dle standardu ISO. Slovo je příslovečného určení času. Slovo je číslo. Předcházející slovo je rok. Sada takovýchto ručně nadefinovaných pravidel je v rámci rozpoznávání aplikována na vstupní analyzovaný text v podobě prostého porovnávání vzorů (angl. pattern-matching) [4]. Vzory aplikujeme obvykle dle nějaké sekvenční strategie. V některých případech ovšem máme nadefinované rysy, které jsou typické pro více druhů entit a výstup je tedy nejednoznačný. V těchto případech výsledek necháme takový, jaký je, a pokračujeme v aplikaci vzorů pro jiné slovní fráze v okolí. Jakmile máme anotován zbytek textu, vrátíme se k nejednoznačným entitám a na základě ostatních objevených entit se snažíme opět dle pevných nadefinovaných pravidel odstranit nejednoznačnost (obr. 2.9) [4]. Výhodou takovéhoto přístupu je deterministický výstup a zřetelná znalost klasifikačního modelu. Nevýhodou je závislost na konkrétním jazyku a omezení pouze na určitou doménu, pro kterou jsou vzory nadefinované, tzn. že tyto metody rozpoznávání nejsou snadno přenositelné [4]. A samozřejmě největší nevýhodou je časová náročnost pro ruční vytvoření komplexní sady rozpoznávacích pravidel. 80

81 2.5. Rysy Obrázek 2.9: Odstraňování nejednoznačnosti dle vazby na jiné entity v okolí. 2.5 Rysy Nyní se konečně dostáváme k definování rysů (angl. features), které pojmenované entity vykazují, a které nám napomáhají k jejich identifikaci. Tyto rysy obvykle vstupují do klasifikačního modelu spolu s pozorovanou entitou a dle informací obsažených v rysech provádíme vlastní rozpoznávání pojmenované entity. Tyto rysy bývájí klíčové hlavně pro pravděpodobnostní algoritmy, využívající princip strojového učení. Rysy mají strukturu binárního vektoru rys = (t, v), který obsahuje informaci o typu rysu t a hodnotu rysu h. Takováto struktura je velmi podobná té, kterou používáme v unifikační gramatice (viz ) Typy rysů Rysy lze klasifikovat dle různých pohledů (dle domény hodnot, dle jazyka, dle lingvistické úrovně atd.). Zde je uvedena klasifikace dle domény hodnot [4]: Numerické rysy: Hodnotou jsou obvykle statistické údaje (počet písmen ve slově, počet slov ve větě, kolik vzorů lze aplikovat, kolik slov v okolí splňuje nějakou vlastnost atd.). Booleovské rysy: Zde se pouze dotazujeme, zda-li pozorovaný objekt nebo objekt v okolí splňuje nějakou vlastnost (Začíná slovo velkým písmenem? Končí slovo tečkou? Jsou všechna písmena velká? Obsahuje slovo číslovku? Je předcházející slovo předložka?). Enumerační rysy: Hodnota tohoto rysu přiřazuje pozorovaný objekt do nějaké předdefinované kategorie, obvykle morfologické či syntaktické (např. slovní druh, větný člen, rod, pád apod.). Řetězcové rysy: Hodnotou tohoto rysu je nějaký řetězec (např. předcházející slovo, morfologická koncovka apod.). 81

82 2. Rozpoznávání pojmenovaných entit Selekce rysů Máme-li nadefinovanou nějakou množinu rysů, je pro nás důležité, aby daná množina vracela co nejlepší a relevantní výsledky. Je možné, že jsme si definovali nějaký rys, který nebude mít na přesnost výsledku žádný vliv, ba naopak bude výpočet pouze zatěžovat či znepřesňovat. Proto je žádané vybrat takovou podmnožinu z množiny nadefinovaných rysů, která vrací nejlepší výsledky [4]. Pro testování si vyberme nějakou podmnožinu trénovacích dat, tedy takových dat, u kterých známe optimální řešení (obvykle této podmnožině dat říkáme vývojová data - angl. development set). Tato data ovšem převedeme na testovací, u kterých nebudeme mít žádnou informaci o struktuře. Poté již vybíráme různé podmnožiny rysů a předhazujeme je spolu s testovacími daty trénovanému klasifikátoru (v tomto případě je nutné, aby byl klasifikátor trénován jinou podmnožinou dat než těmi, které jsme si vybrali jako testovací) [19]. Taková podmnožina rysů, která vrátí nejlepší výsledek (řešení obvykle ohodnocujeme dle evaluačních metrik viz. 2.6), bude finální množinou pro rozpoznávání. Mějme tedy nadefinovanou množinu rysů M velikosti N. Potom počet všech podmnožin množiny M je N ( N ) i=0 i = 2 N. Složitost pro nalezení optimální množiny rysů je tedy exponenciální. V případě velké množiny rysů není možné hledat optimální podmnožinu hrubou silou, ale musíme si zde vystačit s vlastními heuristikami. Úlohu lze ovšem aproximovat dle aproximačních schémat (např. simulované ochlazování, genetický algoritmus) [4]. 2.6 Vyhodnocovací metriky pro nástroje NER Po procesu rozpoznávání pojmenovaných entit nastává čas nějakým způsobem vyhodnotit úspěšnost tohoto postupu. Pro tyto případy je nutné získat nějaký konkrétní číselný údaj, podle kterého bychom mohli porovnávat dvě různé rozpoznávací metody; k tomu je potřeba znát optimální řešení pro danou úlohu. Proto tedy rozdělujeme data v korpusu na trénovací a testovací; s tím, že testovací data aplikujeme právě na vyhodnocení implementovaného rozpoznávacího nástroje a trénovací data použijeme k natrénování rozpoznávacího modelu [19]. Jelikož jsou testovací data podmnožinou korpusu (obsahující ručně vytvořené anotace, které jsou předmětem rozpoznávacího procesu), tvoří jejich anotace soubor optimálních dat. Pro výpočet evaluačních metrik uvažujeme množinu rozpoznaných entit R a množinu entit S tvořící optimální řešení. Nejčastěji používanými metrikami pro vyhodnocování nástroje NER jsou Precision (míra přesnosti) a Recall (míra úplnosti). Přesnost nám vyjadřuje, kolik procent z celkového počtu identifikovaných entit bylo správně rozpoznáno 82

83 2.7. Existující nástroje NER (jinak řečeno - kolik z toho, co jsem našel, jsem měl najít) [36]: P recision = R S R (2.1) Míra úplnosti nám říká, kolik procent z celkového počtu optimálně anotovaných entit bylo správně rozpoznáno (jinak řečeno - kolik z toho, co jsem měl najít, jsem našel) [36]: Recall = R S S (2.2) Máme tedy dvě míry pro hodnocení klasifikačního nástroje. Pro použitelné a efektivní porovnávání je vhodné pracovat pouze s jednou hodnotou, proto je nutné nalézt nějaký průměr těchto dvou hodnot. Pro tento případ využíváme jako hlavní měřítko míru-f (angl. F-measure), která je počítána jako harmonický průměr hodnot míry přesnosti a úplnosti [36]: F = 2 P recison Recall P recison + Recall (2.3) V případech, kdy porovnáváme výsledky pro různá nastavení rozpoznávacího klasifikátoru, nebo porovnáváme dvě různé NER aplikace mezi sebou, používáme obvykle těchto třech metrik, přičemž f-míra by měla být rozhodující; samozřejmě záleží na konkrétní instanci problému. Pro nějaké úlohy může mít míra úplnosti větší relevanci než míra přesnosti a naopak; v tomto případě je f-míra nevypovídající. 2.7 Existující nástroje NER Následující odstavce této kapitoly představí různé existující nástroje používané k rozpoznávání pojmenovaných entit, které jsou již nasazeny a je možno je využít k porovnání s vlastními systémy. Nejedná se ovšem o seznam všech existujících nástrojů, pouze jsou zde uvedeny příklady těch, které jsem dosud poznal. Bohužel ani jeden z níže popsaných systémů nepodporuje češtinu; ovšem mohou být inspirací pro implementaci aplikace lokalizované právě pro český jazyk Zemanta Zemanta 4 je komplexní nástroj, jehož hlavním cílem je poskytnout pomoc při utváření obsahu. Hledá vztahy v textu, podobná témata na webu, a dokáže rozpoznávat pojmenované entity. Vytváří pohodové prostředí pro bloggery, jejichž články mohou být automaticky doplňovány obrázky či odkazy (na jiné stránky), které s článkem souvisejí

84 2. Rozpoznávání pojmenovaných entit Jedná se o komerční nástroj, který lze použít zdarma v omezeném režimu pomocí plug-inu v prohlížeči nebo RESTové 5 služby. Podporuje pouze anglický jazyk a jeho anotace mají formu odkazů na různé externí zdroje: Wikipedia, YouTube, IMDB, Amazon.com, Crunchbase, Flickr, MySpace, Twitter, Facebook aj OpenCalais OpenCalais 6 je nástroj používaný k sémantické analýze textu. Dokáže identifikovat pojmenované entity, fakta a události dle metod strojového učení. Dá se k němu přistupovat přes RESTovou službu, která je schopna zpracovat nestrukturovaný text a vracet příslušná metadata k textu v podobě RDF formátu (viz ). V současné době podporuje angličtinu, španělštinu a francouzštinu. Systém poskytuje velké množství nástrojů a možností nastavení. Je to komerční produkt, který se dá ovšem využít zdarma v omezené formě AlchemyAPI AlchemyAPI 7 je dalším nástrojem využívající techniku strojového učení k analýze textu a extrakci sémantických metadat. Mimo rozpoznávání pojmenováných entit zvládá také extrakci relací, automatickou identifikaci jazyků, čištění webových stránek, web scraping 8, parsování mikroformátů a detekci ATOM feedů. Nástroj NER podporuje mnoho jazyků: angličtinu, francouzštinu, němčinu, italštinu, portugalštinu, ruštinu, španělštinu a švédštinu. Dokáže identifikovat stovky typů entit a vrací metadata v podobě odkazů na zdroje: Freebase, US Census, GeoNames, UMBEL, OpenCyc, YAGO, MusicBrainz, CIA Factbook a CrunchBase. I když se jedná o komerční produkt, lze systém používat v určité míře volně. Poskytuje API v podobě RESTové služby CiceroLite CiceroLite 9 je komerční produkt, který dokáže rozpoznávat stovky typů pojmenovaných entit pro anglické, arabské a čínské texty s přesností a úplností okolo 90ti procent; podporuje i další jazyky (španělštinu, němčinu, japonštinu aj.), u kterých se ovšem nedají zaručit tak vysoké hodnoty evaluačních metrik. 5 REST (Representational State Transfer) je architektura rozhraní, navržená pro distribuované prostředí využívající možností HTTP protokolu Web Scraping je extrakce informací z webových stránek pomocí parsování HTML dle nějaké množiny vzorů

85 2.8. DBpedia Spotlight Dále poskytuje nástroje pro hledání koreferencí a časových výrazů (absolutních i relativních - viz ). Služby jsou nabízeny formou zřízení vlastního serveru, na kterém tato aplikace poběží Stanford NER Stanford NER 10 je Java implementace nástroje NER rozpoznávající entity dle sekvenčního klasifikačního modelu CRF (viz ). Extrahuje tři typy pojmenovaných entit (osoby, organizace a lokace). Trénovaný model podporuje pouze angličtinu, ale dá se natrénovat vlastní model pro jakýkoliv jazyk. Původní klasifikátor byl natrénován dle trénovacích dat určených pro konferenci CoNLL 2003 (viz ). Nástroj je sice volně dostupný (včetně zdrojového kódu) pod licencí GNU General Public License, ale oproti zmíněným komerčním produktům nerozpoznává tolik typů pojmenovaných entit Illinois Named Entity Tagger Illinois Named Entity Tagger 11 je volně dostupný nástroj rozpoznávající pojmenované entity typu osoba, organizace, lokace a jiné. Využívá slovníku zkonstruovaného dle extrakce dat z Wikipedie; mimo jiné zahrnuje natrénovaný model z nestrukturovaných dat a množiny nadefinovaných rysů. Pro testovací data, použita v rámci konference CoNLL 2003 (viz ), dosahuje míra-f hodnoty 90.8% LingPipe LingPipe 12 je sada nástrojů poskytující algoritmy pro různé úlohy NLP. Lze ho využít k řešení úloh jako: NER, automatické opravy textů, klastrování, rozpoznávání slovních druhů, detekce vět, porovnání textů aj. Poskytuje i natrénované rozpoznávací modely pro různé typy klasifikátorů pracujících s anglickým jazykem. Algoritmy jsou napsány v Javě a lze si je volně stáhnout pod licencí Royalty Free. 2.8 DBpedia Spotlight Tento nástroj mi byl hlavním vzorem pro implementační část této diplomové práce; jeho základní principy jsou rovněž primárními pricipy realizované aplikace rozpoznávající pojmenované entity v českém prostředí; proto je popisu tohoto nástroje věnováno mnohem více prostoru

86 2. Rozpoznávání pojmenovaných entit Obrázek 2.10: Ukázka automatického rozpoznávání DBpedia zdrojů nástrojem Spotlight. DBpedia Spotlight je nástroj, který v analyzovaném textu identifikuje DBpedia zdroje a přiřazuje je k příslušným slovním spojením (obr. 2.10). DBpedia zdroj je obsahově téměř ekvivalentní s Wikipedia zdrojem s tím rozdílem, že obsahuje informace z Wikipedie v sémantické a strukturované podobě. Z takovéto datové struktury lze snadno získávat potřebné znalosti k rozpoznání pojmenované entity [3]. DBpedia zdroj mimo jiné obsahuje odkazy na další zdroje s podobným obsahem, které rozšiřují informace o anotované frázi. DBpedia Spotlight je kompletně dostupný jako open-source; jeho tělo je napsané v jazyku Scala 13. Primárně byl sestaven pro angličtinu; ovšem nyní je k dispozici komplexní návod, jak tuto aplikaci internacionalizovat pro jakýkoliv jazyk. Hlavní znalostní bází je Wikipedia resp. DBpedia; k rozpoznávání ovšem využívá i jiných externích zdrojů. Abychom pochopili formu trénovacích dat pro učící fázi, je nutné si nejprve představit projekt DBpedia a ukázat, jaká konkrétní data produkuje a odkud čerpá potřebné znalosti DBpedia DBpedia je komunita zabývající se extrakcí informací z Wikipedie. Tyto informace jsou převáděny do sémantické formy v podobě RDF (viz ). Jednoduše řečeno si lze DBpedii představit jako sémantickou Wikipedii. Díky její sémantické RDF formě, lze takováto data lehce nasadit na již existující a standardizované enginy, které dokáží v efektivním čase vyhledávat v datech pomocí dotazovacího jazyka SPARQL v rámci celé Wikipedie [3]. Nelze si tedy představit lepší zdroj dat pro rozpoznávací úlohy, než centrální webovou encyklopedii, do které příspívá tisíce uživatelů z většiny států světa pro více než 250 světových jazyků. Jak jsou data poskytovaná DBpedií konstruována, je zobrazeno na obrázku 2.11 a popsáno v následujících odstavcích Wiki Dumpy Jak bylo řečeno v úvodu, zdrojem dat DBpedie je Wikipedie; proto je nutné získat kompletní obsah wiki stránek pro budoucí extrakci informací. Obsah wiki stránek si lze obstarat poměrně snadno, jelikož existují tzv. wiki dumpy, které jsou volně dostupné na webu. Wiki dumpy jsou soubory ve formátu 13 Scala je multiparadigmatický programovací jazyk s rysy objektově orientovaného a funkcionálního programování. 86

87 2.8. DBpedia Spotlight Obrázek 2.11: Konstrukce sémantické Wikipedie pomocí extrakčního frameworku implementovaného DBpedia komunitou. XML, jež obsahují kompletní data nějaké části Wikipedie; lze si tedy stáhnout jeden soubor obsahující kompletní obsah všech wiki stránek (bez komentářů, historie, obrázků apod.). Z těchto dumpů lze vcelku snadno parsovat, dle definovaných pravidel, různé informace do vlastních datových struktur (názvy stránek, odkazy wiki stránek, externí zdroje, infoboxy, redirecty, rozcestníky aj.) DBpedia ontologie Všechny vyextrahované informace z wiki dumpů je nutné mapovat dle standardu RDF do nějakých tříd, abychom rozlišili o jaký typ struktury se jedná. Dále je potřeba definovat typy relací mezi vyextrahovanou hodnotou a jejím typem pro úspěšnou konstrukci RDF trojic. Pro tyto případy je tedy nutné nadefinovat nějakou ontologii, ve které budou všechny tyto struktury a typy relací zachyceny. Zde je příklad definice třídy MilitaryPerson, jejíž instancí může být nějaký DBpedia zdroj popisující nějakou vojenskou osobu (obr. 2.12): 87

88 2. Rozpoznávání pojmenovaných entit <owl:class rdf:about=" <rdfs:label xml:lang="en">military person</rdfs:label> <rdfs:label xml:lang="fr">militaire</rdfs:label> <rdfs:subclassof rdf:resource=" /> </owl:class> Obrázek 2.12: DBpedia RDF triple. DBpedia disponuje velkou ontologií (formátu OWL), ve které jsou definovány všechny potřebné struktury nutné k extrakci wiki stránek Mapování infoboxů Infobox je speciální struktura vyskytující se uvnitř wiki stránky, která má oproti ostatnímu obsahu relativně organizovanou podobu. Obsahuje strukturované informace o konkrétním subjektu dané wiki stránky v podobě dvojic, kde příslušná dvojice obsahuje typ informace a hodnotu informace (obr. 2.13). Tyto dvojice jsou ve Wikipedii definovány v rámci speciální šablony, která je vytvořena jako vzor pro jistý druh infoboxů. Pro DBpedii není problém tyto šablony a příslušné dvojice vyextrahovat; problémem ovšem je, že typy těchto dvojic nemají v šablonách pevnou strukturu (definují se pouze v rámci jedné šablony prostým řetězcem), proto stejné typy z různých šablon nemusí mít Obrázek 2.13: Na obrázku je wiki stránka, ve které je zvýrazněn infobox a struktura v něm obsažena ve formě binárního vektoru (resp. dvojice). 88

89 2.8. DBpedia Spotlight identické názvy a nelze tedy jednoznačně určit, o jaký typ hodnoty se jedná. Šablony jsou definovány různými uživateli z různých zemí a nemají striktní omezená pravidla, proto nelze globálně vyhledávat data v infoboxech dle typů hodnot, což je škoda; tento nedostatek ovšem řeší DBpedia [3]. DBpedia vytvořila speciální webovou aplikaci, pomocí které lze ručně mapovat typy dvojic infoboxů na typy definované v DBpedia ontologii. Při extrakci dat z Wikipedie se následně tato mapovací pravidla načtou a aplikují při tvorbě sémantických dat. Tímto procesem dokážeme strukturalizovat veškeré informace v infoboxech do definovaných ontologií. Zde je ukázka mapovacích pravidel českého infoboxu typu Okres: {{TemplateMapping maptoclass = Settlement mappings = {{PropertyMapping templateproperty = název_okresu ontologyproperty = foaf:name }} {{PropertyMapping templateproperty = kraj ontologyproperty = locatedinarea }} {{PropertyMapping templateproperty = sídlo_okresu ontologyproperty = capital }} {{PropertyMapping templateproperty = rozloha_okresu ontologyproperty = areatotal }} {{PropertyMapping templateproperty = počet_obyvatel ontologyproperty = populationtotal }} }} Extrakční framework Extrakční framework, který převádí kompletní Wikipedii na sémantická data, nabízí DBpedia v open-source podobě. Lze si tedy aplikaci jednoduše z domova stáhnout, dle parametrů v konfiguračním souboru nastavit jaká data extrahovat, pro jaké jazyky apod., a nakonec spustit. Během několika minut či hodin (záleží na rychlosti internetu, hardwaru a množství extrahovaných dat) jsou vytvořena příslušná RDF data (většinou ve formátu N-Triples 14 ). Tato aplikace umí stahovat wiki dumpy, dbpedia ontologie a mapovací pravidla infoboxů (obr. 2.11). Stažená data následně extrahuje a uloží do souborů tzv. datasetů v nastavené sémantické podobě; tyto soubory lze ve finále redukovat nějakou kompresí [3] Datasety Extrakční framework produkuje celou řadu datasetů (souborů) různých typů, které obsahují dané RDF trojice popisující nějakou konkrétní relaci. Těchto 14 N-Triples je formát popisující RDF trojice; má velice jednoduchou syntaxi - jednotlivé položky trojice jsou od sebe odděleny mezerou a celá relace je zakončena tečkou 89

90 2. Rozpoznávání pojmenovaných entit souborů je celá řada; pro aplikaci implementovanou v rámci této diplomové práce a pro aplikaci DBpedia Spotlight se používají následující datasety [24]: Labels: Obsahuje nadpisy všech wiki stránek (trojice: dbpedia zdroj - má titulek - nadpis). Redirects: Tento dataset obsahuje informace o přesměrování mezi wiki stránkámi; např. stránka USA je přesměrována na stránku Spojené státy americké (trojice: dbpedia zdroj - směruje na - dbpedia zdroj). Disambiguation: V tomto souboru jsou uvedeny stránky, které jsou součástí rozcestníků; např. stránka Strom (datová struktura) a stránka Rodinný strom je součástí rozcestníku Strom (rozcestník) (trojice: dbpedia zdroj rozcestníku - obsahuje - dbpedia zdroj). Ontology Infobox Types: Obsahuje typy infoboxů pro dané wiki stránky; např. stránka Jaroslav Foglar má infobox typu Writer (trojice: dbpedia zdroj - infobox typu - typ infoboxu). Mapping Based Properties: Zde jsou zahrnuty všechny dvojice infoboxu pro danou wiki stránku; např. Česko má hlavní město Praha a předvolbu telefonního čísla +420 (trojice: dbpedia zdroj - typ dvojice - hodnota dvojice). Pagelinks: Dataset obsahuje všechny interní odkazy mezi wiki stránkami (trojice: dbpedia zdroj - odkazuje na - dbpedia zdroj) Vyhledávání v datech Ve fázi, kdy máme vyextrahované datasety, nám zbývá je uložit do nějakého databázového enginu, který umí RDF daty rychle procházet a vyhledávat dle standardu SPARQL. DBpedia používá jako hlavní engine - RDF databázi Virtuoso 15, jež obsahuje plug-in, pomocí kterého lze jednotlivé DBpedia stránky hezky vizualizovat (obr. 2.14) [3] Trénovací fáze Primárním zdrojem informací pro trénování Spotlight klasifikátoru jsou DBpedia datasety: Labels, Redirects, Disambiguation, Ontology Infobox Types a Mapping Based Properties. Dále do učící fáze vstupuje wiki dump obsahující všechny wiki stránky pro zvolený jazyk. Dalšími vstupními daty jsou stop slova, stemovací nástroj, či natrénovaný model pro identifikaci slovních druhů [24]. 15 OpenLink Virtuoso je vysoce výkonná objektově-relační SQL databáze. Podporuje všechna hlavní rozhraní a disponuje SPARQL endpointem, který je vestavěný do SQL používaný k dotazování nad daty RDF. 90

91 2.8. DBpedia Spotlight Obrázek 2.14: Ukázka DBpedia zdroje vytvořený databázovým enginem Virtuoso. Všechna tato data vstupují do trénovací fáze, jejímž výsledkem je natrénovaný klasifikátor disponující znalostmi z Wikipedie a se schopnostmi rozpoznávat slovní spojení, která jsou v asociaci s nějakým DBpedia zdrojem. V rámci učení se identifikují tzv. povrchové formy (angl. surface forms), tedy takové fráze různých morfologických tvarů, které mohou být v relaci s jistým DBpedia zdrojem. Tyto formy jsou získávány v následujících krocích [24]: 1. Extrahuje nadpisy z datasetu Labels. Tyto nadpisy tvoří povrchovou formu. 2. Dle datasetu Redirects jsou získávány seznamy synonym a akronym k DBpedia zdrojům, které tvoří povrchovou formu. 3. Z datasetu Disambiguation jsou extrahovány informace o zdrojích, jejichž povrchové formy mohou být mezi sebou zaměněny (např. Koruna stromu a Koruna česká). Veškeré povrchové formy vzájemně zaměnitelných DBpedia zdrojů jsou sjednoceny. 4. Dále jsou extrahovány z wiki dumpu všechny interní odkazy; odkaz je ukládan do struktury binárního vektoru l = (s, r), kde s je anchor text odkazu (tedy nějaký segment slov označený jako odkaz; tento segment obvykle není v základním slovníkovém tvaru - lze ho tedy využít jako variantu nadpisu DBpedia zdroje) a r je DBpedia zdroj, na který odkaz směřuje. Jako povrchová forma je pro zdroj r vybrán anchor text s. Tyto odkazy jsou dále zpracovávány: a) V rámci extrakce odkazů je také ukládána struktura výskytu pozorovaného odkazu v podobě trojice o = (r, s, C). Je zde do vektoru 91

92 2. Rozpoznávání pojmenovaných entit přidán prvek C, jenž představuje obsah odstavce, ve kterém se daný odkaz vyskytuje. Tato informace o výskytu o je zaindexována pomocí nástroje Lucene 16, která je později použita při odstraňování nejednoznačností. b) Dále je vypočítána pravděpodobnost povrchové formy s odkazující na zdroj r dle četnosti výskytu tohoto odkazu a četnosti všech výskytů fráze s v celé Wikipedii. Pravděpodobnost je počítána následovně: P (r s) = n(s, r)/n(s) Všechny tyto nalezené povrchové formy jsou následně uloženy do speciálního souboru, tím je trénovací fáze dokončena Klasifikační fáze V této části je nastíněn způsob, jakým Spotlight přiřazuje DBpedia zdroje k různým slovním spojením. Počítáme již s existencí natrénovaných dat dle wiki dumpů a datasetů Spotting Tato zahajovací klasifikační fáze rozpoznává povrchové formy v textu vyhledáváním ve slovníku povrchových forem. Pro tento případ byla použita implementace nástroje LingPipe Exact Dictionary-Based Chunker (viz ), která pracuje na bází vyhledávání dle Aho-Corasick 17 algoritmu [24]. Pro urychlení výpočtu je prováděno rozpoznávání slovních druhů opět dle LingPipe implementace využívající HMM (viz ). Při určování povrchových forem jsou přeskakována slovesa, přídavná jména, příslovce a předložky [24] Výběr kandidátů V tomto kroku se snaží algoritmus k identifikovaným povrchovým formám přiřadit kandidáty v podobě DBpedia zdrojů. Neprovádí se zde ovšem žádné odstraňování nejednoznačností, tudíž jedna povrchová forma může mít více kandidátů. Tato fáze může obsahovat i filtry, jež dokáží eliminovat takové kandidáty, které jsou velmi nepravděpodobné [24]. Tyto filtry nám mohou zkrátit výpočetní čas a zlepšit přesnost pro další části procesu rozpoznávání (tedy odstraňování nejednoznačností); bohužel nám ale zvyšují časovou náročnost při výběru kandidátů a ve finále mohou mít tyto filtry i negativní dopad na míru 16 Apache Lucene je vysoce výkonný vyhledávací engine napsaný v prostředí Java. Tato technologie je vhodná pro full-textové vyhledávání. 17 Algoritmus Aho-Corasick je vyhledávací slovníkový algoritmus, který dokáže vyhledávat v lineárním čase ke vstupnímu textu a velikosti slovníku. 92

93 2.8. DBpedia Spotlight úplnosti (angl. recall), proto je výběr takovýchto filtrů přenechán samotnému uživateli Odstraňování nejednoznačností V situaci, kdy máme k jedné povrchové formě vybráno několik kandidátů, je nutné z nich vybrat ten správný. Tento proces se názývá odstraňování nejednoznačností (angl. disambiguation). DBpedia Spotlight využívá pro úspěšné rozpoznání té pravé entity několik vah, kterými hodnotí jednotlivé povrchové formy a jejich kandidáty. Na základě těchto číselných údajů je vyselektován DBpedia zdroj s nejlepším ohodnocením [24]. V rámci odstraňování nejednoznačností je pozorována relevance povrchové formy k danému zdroji dle výpočtu frekvence výskytů v trénovacích datech (Term Frequency - TF); dále je zkoumána tzv. míra Inverse Candidate Frequency (ICF), která nám udává váhu nějakého slova w j pro pozorovanou povrchovou formu s: ICF (w j ) = log R s log n(w j ) (2.4) Kde R s je množina všech kandidátů pro s a funkce n(w j ) nám počítá počet zdrojů z R s asociovaných se slovem w j. Ve finále ohodnocujeme nejednoznačné zdroje výpočtem podobnosti mezi kontextem entity a kontextem okolních povrchových forem, které souvisejí s pozorovanou povrchovou formou (vypočtu dle TF a ICF). Podobnosti jsou počítány dle kosinovi míry (angl. cosine similarity). Kandidát s nejvyšší mírou podobnosti je vybrán jako vítěz. Po odstranění nejednoznačností máme výsledek, který jsme chtěli. Poslední a volitelnou fází procesu rozpoznávání je filtrace zdrojů dle různých parametrů (např. dle míry podobnosti). Finální filtrací obvykle zvyšujeme míru přesnosti (precision), ale může se nám při agresivním filtrování rapidně snížit míra úplnosti (recall) Vyhodnocení Po úspěšné klasifikaci slovních frází testovacích dat do DBpedia zdrojů, lze tyto anotace převést na pojmenované entity pomocí DBpedia ontologie. Ve finále tedy můžeme vyhodnocovat výsledky systému Spotlight dle evaluačních metrik (viz. 2.6) a porovnávat s ostatními nástroji NER. DBpedia Spotlight provedl porovnání výsledků, získaných dle anotování třiceti náhodně vybraných odstavců z deníků New York Times, pokrývající 10 různých kategorií, s nástroji OpenCalais, Zemanta, Ontos Semantic API, The Wiki Machine, Alchemy API a M&Ws wikifier [24]. Jelikož všechny tyto nástroje dokážou produkovat podobné zdroje jako DBpedia Spotlight (např. Wikipedia zdroje nebo vlastní zdroje převedené na DBpedia URI - týká se pouze OpenCalais a Ontos - více v [24]), nemuseli se provádět žádné složité 93

94 2. Rozpoznávání pojmenovaných entit Systém F-míra DBPedia Spotlight (nejlepší konfigurace) 56% DBPedia Spotlight (bez konfigurace) 45.2% The Wiki Machine 59.5% Zemanta 39.1% OpenCalais 16.7% Alchemy 14.7% Ontos 10.6% Tabulka 2.1: F-míra různých rozpoznávacích systémů anotující stejná testovací data. transformace na pojmenované entity. Výsledky porovnání jsou znázorněny v tabulce Shrnutí Princip rozpoznávání pojmenovaných entit na základě nalezených DBpedia zdrojů v textu, se zdá být zajímavým řešením, jelikož nepotřebujeme vlastní ručně anotovaný trénovací korpus (který je samozřejmě těžké obstarat zvláště pro jazyky, které nejsou ve světě tolik používané), ale využíváme znalostí z mezinárodní encyklopedie, která se díky DBpedii mění na strukturovaný a sémantický zdroj dat. Mimo jiné lze ze získaných metadat obdržet mnohem více informací, které přesahují rámec úlohy NER. DBpedia Spotlight je tedy jedním z příkladů toho, jak využívat znalostí extrahovaných z webu a ukazuje, co všechno se z nich dá získat. 94

95 KAPITOLA 3 Návrh řešení a implementace Další částí této práce je samotný návrh a implementace nástroje NER pro české texty. Nejprve je nutné, vybrat si z nastudovaných materiálů (viz. kapitoly 1 a 2) ten správný postup k realizaci takovéto aplikace, tedy: jakým způsobem bude fungovat samotná rozpoznávací fáze, zda-li bude použit pouze pravidlový přístup dle ručně definovaných vzorů, nebo budeme vybírat mezi metodami strojového učení. Pravidlový přístup (viz ) má výhodu v tom, že jeho chování je deterministické. Bohužel, ale nelze pouhými vzory pokrýt všechny případy pojmenovaných entit. Můžeme si v rámci tohoto přístupu nadefinovat několik vzorů, které vykazují vlastní jména entit (např. počáteční velké písmeno, nebo klíčové slovo před entitou), ale v mnoha případech již nedokážeme rozlišit správny typ entity (tedy řešení nejednoznačností je jedním z problémů tohoto principu rozpoznávání) [4]. Pro tyto nevýhody jsem se rozhodl tuto metodu zavrhnout a vybírat pouze z algoritmů strojového učení. V případě strojového učení lze vybírát ze tří možností trénování: s učitelem, bez učitele a s částečným učitelem. V rámci trénování dat metodou učení bez učitele (viz ) nastává problém určení správného typu entity a rovněž jsme z velké části závislí na ručně definovaných rysech (viz. 2.5), které se podílejí na finálním klastrování [4]. Učení s částečným učitelem pomocí pouze malé množiny trénovacích dat může být poměrně úspěšnou metodou, ale bohužel kvůli malé sekvenci vstupních trénovacích dat nelze pokrýt příliš mnoho variant a tvarů pojmenovaných entit, nicméně věřím, že tato metoda učení může dosahovat dobrých výsledků [9]. Poslední možností je učení s učitelem (viz ); v rámci tohoto přístupu získáváme potřebné znalosti na základě trénovacích dat, proto je nutné disponovat velkou množinou dat, ve které jsou věrohodné informace o pojmenovaných entitách. Pro návrh aplikace NER jsem si vybral metodu učení s učitelem. V tomto přístupu není totiž nutné vymýšlet složité heuristiky a aplikace jsou snáze 95

96 3. Návrh řešení a implementace přenositelné do jiných jazykových mutací. Hlavním vzorem pro tuto práci mi byl nástroj DBpedia Spotlight (viz. 2.8), který svůj rozpoznávací model trénuje daty z DBpedie, které čerpají své sémantické znalosti z Wikipedie [24]. Dle předchozích odstavců tedy můžeme shrnout základní požadavky pro návrh aplikace NER. 1. Rozpoznávat pojmenované entity dle trénovaného klasifikátoru. 2. Trénovat klasifikátor metodou: učení s učitelem. 3. Aplikace bude schopna rozpoznávat pojmenované entity pro český jazyk. 4. Trénovací data budou extrahována z Wikipedie. Další požadavky se týkají rozhraní implementované aplikace: 1. Aplikace musí být přístupná jako webová služba (nejlépe REST). 2. Pro testovací učely bude aplikace obsahovat grafický interface. 3. Výstupní data budou ve strukturované podobě (nejlépe XML). Následující odstavce se věnují již samotnému návrhu aplikace, přičemž je nutné splňovat výše uvedené požadavky. 3.1 Výběr trénovacích dat Před trénovací a rozpoznávací fází je nutné vybrat množinu trénovacích dat, jež bude hlavním nositelem znalostí pro aplikaci NER. Jelikož je snahou vytvořit nástroj pro rozpoznávání entit v českých textech, situace se nám rapidně komplikuje. Čeština je pouze lokálním jazykem a nejsou proto volně k dispozici ručně anotované korpusy, které by se daly pro tento typ práce použít. Existuje např. český národní korpus, nebo pražský závislostní korpus - bohužel se mi ale nepodařilo získat k těmto datům přístup; proto bylo nutné sáhnout po jiných otevřených datech, ze kterých by se daly čerpat potřebné znalosti. Hlavní inspirací mi byl nástroj DBpedia Spotlight, který primárně využívá informací z DBpedie resp. Wikipedie. Česká Wikipedie obsahuje více než obsahových stránek (toto číslo samozřejmě v čase stále narůstá) a díky DBpedii je lze vyextrahovat do sémantické podoby, ze kterých lze potom snadno získávat potřebné informace, např.: názvy wiki stránek, jejich alternativních názvy, seznamy zaměnitelných zdrojů, interní odkazy mezi zdroji apod. Rozpoznávací úloha tedy bude vracet stejné výsledky jako nástroj DBpedia Spotlight, tj.: DBpedia zdroje, které souvisejí s nějakými segmenty analyzovaného textu. Tady je nutné si uvědomit, že DBpedia zdroj je identický s Wikipedia stránkou, která do jisté míry představuje pojmenovanou entitu 96

97 3.2. Tvorba české DBpedie a díky sémantickým informacím obsaženým v DBpedia zdroji pro příslušnou wiki stránku, lze zjistit i typ dané pojmenované entity dle DBpedia ontologie, ba naopak dojít k závěru, že se o pravou pojmenovanou entitu nejedná. Pro tuto potřebu bylo nutné zkonstruovat českou DBpedii z české Wikipedie. 3.2 Tvorba české DBpedie V době, kdy jsem psal tuto diplomovou práci, nebyla bohužel k dispozici česká verze DBpedie (resp. datasety české Wikipedie). Proto bylo nutné si stáhnout ze stránek DBpedie extrakční framework, lokalizovat ho pro české prostředí a aplikovat ho na českou Wikipedii. Po spuštění aplikace a asi dvouhodinovém čekání jsem měl k dispozici kompletní českou verzi DBpedie v podobě datasetů, které jsem v zápětí mohl začít zkoumat. Těchto vyextrahovaných datasetů jsme, spolu s vedoucím této diplomové práce, využili ke zprovoznění projektu české verze DBpedie 18. Tento krok zahrnoval spuštění databázového serveru Virtuoso, do kterého jsme nasázeli potřebé datasety. Nyní je tedy situace taková, že lze vyhledávat informace dle dotazovacího jazyka SPARQL v rámci celé české Wikipedie. Např. lze položit jednoduchý dotaz typu: jaké filmy režíroval Jan Svěrák?. Takovouto otázku lze přeformulovat do SPARQL dotazu takto: SELECT DISTINCT?film WHERE {?film dbpedia-owl:director < } Jako odpověď získáme seznam DBpedia zdrojů, které představují všechny filmy uložené na Wikipedii, které režíroval Jan Svěrák: S ostatními kolegy jsme dále vytvořili přes 60 mapovacích pravidel 19, pomocí kterých lze mapovat informace v českých infoboxech na třídy DBpedia ontologie (viz ). Díky těmto pravidlům rovněž získáváme informace o typech jednotlivých DBpedia zdrojích, čož lze použít pro rozpoznávání druhů

98 3. Návrh řešení a implementace Obrázek 3.1: Procesy, které jsou součástí předzpracování dat. pojmenovaných entit a analyzovat tak, zda-li se o pojmenovanou entitu skutečně jedná. 3.3 Předzpracování dat Před samotnou rozpoznávací fází je nutné nějakým způsobem předzpracovat vstupní data. Tímto procesem mapujeme analyzovaný text do nějaké struktury, ve které se dá lehce a efektivně procházet. Předzpracovaná data obvykle vstupují do nějaké normalizační funkce (1.3.3), která redukuje dimenzionalitu dat. Pro potřebu této aplikace je prováděn pouze tokenizační a filtrační proces (obr. 3.1) Tokenizace V rámci návrhu tokenizačního zpracování dat byl případ tokenizace zjednodušen pouze na dělení dle slov. Neprobíhá zde žádná identifikace vět, jelikož hranice vět netvoří pro úlohu NER příliš podstatnou informaci. Dělení slov bude prováděno dle prosté identifikace mezer a jednotlivé tokeny budou ukládány do speciální datové struktury Token, která má v sobě informaci o tvaru původního slova a tvarech slova po aplikaci filtrační fáze, která je také součástí předzpracování vstupních dat. Obrázek 3.2: Diagram tříd figurujících v tokenizační fázi. 98

99 3.4. Rozpoznávací fáze Tyto tokeny budou následně ukládány do kolekce, skrze kterou lze k jednotlivým položkám přistupovat dle číselných indexů v konstantním čase. Jednotlivé třídy, které se podílejí na tokenizační fázi, jsou zobrazeny na obrázku Filtrace Po tokenizační části je vykonána normalizace slov, jejíž výsledky jsou ukládány do jednotlivých tokenů. Na slova jsou aplikovány následující filtry: RemoveMarginFilter: Tento filtr odstraňuje z krajů slov interpunkční znaky, které se obvykle vyskytují na konci vět. ToLowerCaseFilter: Převádí všechna písmena na malá. V rámci struktury Token jsou tedy ukládány celkem 3 varianty slova (původní, bez interpunkčních znaků a s malými písmeny). Rozpoznávací fáze poté bude brát v potaz všechny tyto 3 varianty. Nedochází zde tedy k redukci dimenzionality dat, ale naopak k jejímu navýšení. Důvod takovéhoto kroku souvisí se snižováním nejednoznačností a s preciznějším rozpoznáváním (trénovací data budou ukládána v původní formě, aby nedocházelo ke ztrátám důležitých informací - proto také nelze úplně normalizovat testovací data). 3.4 Rozpoznávací fáze V reálném použití aplikace předchází rozpoznávací fázi - fáze trénovací. Jelikož je ale návrh učícího algoritmu závislý na metodách použitých v rozpoznávání části, je nejprve provedena analýza právě pro tuto část. Na základě poznatku této fáze dokážeme přesně určit jaká konrétní data jsou potřeba pro trénovací fázi a do jaké formy je potřebujeme zpracovat. Proto je tedy návrh rozpoznávací fáze uveden dříve než návrh fáze trénovací. Obrázek 3.3: Rozpoznávací procesy. 99

100 3. Návrh řešení a implementace Obrázek 3.4: Diagram tříd figurujících v rozpoznávací fázi. Do procesu rozpoznávání vstupuje sekvence tokenů, které jsou zpracovávány ve čtyřech krocích. Jedná se o výběr kandidátu DBpedia zdrojů, které souvisejí s nějakým segmentem v textu; dále je prováděná filtrace těchto zdrojů dle uživatelsky definovaných parametrů (tento krok je nepovinný); v dalším kroku je vykonán proces odstraňování nejednoznačností, jelikož můžeme mít pro některé segmenty více kandidátů; a ve finále je provedena konečná volitelná filtrace (opět dle uživatelských nastavení). Celý tento rozpoznávací proces je zobrazen na obrázku 3.3. Dále je na obrázku 3.4 znázorněn model tříd, které figurují v rozpoznávacím procesu. Třída Resource představuje DBpedia zdroj, jejíž instance může mít další dva doplňující atributy - pravděpodobnost tohoto zdroje vůči ostatním a třídu zdroje definovanou v DBpedia ontologii Výber kandidátů Následuje návrh třídy, jenž implementuje rozhraní CandidateSelector. Pro tento krok je nutné si definovat, jakým způsobem získávat DBpedia zdroje k příslušným slovním frázím. Uvažujme tedy nějaké úložiště dat, v němž máme uloženy povrchové formy (resp. různé slovní varianty pojmenovaných entit; termín povrchová forma je zde použit jako v případě nástroje DBpedia Spotlight - surface form) a k nim příslušné DBpedia zdroje; tento princip byl rovněž převzat z nástroje DBpedia Spotlight. V takovémto úložišti je nezbytné vyhledávat v efektivním (nejlépe konstantním) čase; více o trénovaných datech viz Schopnost získávání kandidátů tedy spočívá ve vyhledávání stejných slovních tvarů ve slovníku. Pro tuto potřebu byl navržen sekvenční model, který prochází analyzovaným textem po jednotlivých tokenech zleva doprava a hledá jednotlivá slovní spojení ve slovníku. Pro takovéto zpracování je dále nutné řešit problém identifikace víceslovných entit. To je prováděno dle sekvenčního procházení s různymi velikostmi definovaného n-gramu (resp. posuvného okénka). Tento sekvenční výběr je provádět ve třech krocích. 100

101 3.4. Rozpoznávací fáze Další důležitou vlastností sekvenčního modelu je redukce dimenzionality, kterou provádí vynecháváním stop slov, které se objevují na začátku n-gramu, tím se nám samotný výběr rapidně zrychlí Dynamický n-gram V prvním kroku procházíme textem zleva doprava n-gramem velikosti 3 (tedy trigramem). Sekvenčně posouváme okénkem a v každém stavu vyhledáváme ve slovníku povrchovou formu, jež začíná aktuálními třemi slovy v daném trigramu. Tím získáme množinu povrchových forem s počtem tří a více slov. Pokud má získaná povrchová forma m slov, a zároveň platí, že m >= n, potom je příslušný n-gram transformován na m-gram (tedy okénko se nám buď nezmění, nebo zvětší na velikost m). Pokud se slova m-gramu rovnají slovům povrchové formy, je tato forma vybrána jako dočasný kandidát, jsou jím přepsány všechny kandidáty pro n-gram a velikost okénka m již zůstane zachována (tedy n = m); pokud se slova nerovnají, je okénko zmenšeno zpátky na velikost n. Takovýmto stylem postupujeme pro všechny povrchové formy, dokud nezískáme povrchovou formu s největším počtem slov, která souhlasí s analyzovanými daty Bigram a Unigram Zbývá nám nálezt povrchové formy, které obsahují dvě slova, resp. jedno slovo. V tomto případě je zvolen bigram resp. unigram a jsou vyhledávány slovní spojení zvlášť pro bigram a zvlášť pro unigram opět sekvenční formou zleva doprava, přičemž jsou přeskakovována ta slova, která jsou již součástí nějakých povrchových forem z předchozího procházení dle dynamického n-gramu. Vyhledávací model, který prochází úložištěm dat má takovou vlastnost, že pro jednoslovné, resp. dvouslovné fráze, vrací jen jednoslovné, resp. dvouslovné povrchové formy. Pro vyhledávací fráze s větším počtem slov nám slovník vrací povrchové formy, které začínají hledanou frází, ale mohou ve finále obsahovat i více slov Shrnutí Výsledkem selekce kandidátů je množina instancí třídy Candidate, kde každá tato instance obsahuje množinu DBpedia zdrojů (instancí třídy Resource) a ukazatel na příslušné slovní spojení, ke kterému tento objekt patří (viz. obr. 3.4). Časová složitost výberu kandidátů je: O(NM + 2N) (3.1) Kde N je počet slov testovacích dat, a M je maximální počet povrchových forem, které je možné získat pro nějaký konkrétní trigram. 101

102 3. Návrh řešení a implementace Odstraňování nejednoznačností Předpokládejme množinu zdrojů resp. kandidátů pro nějaké slovo či slovní spojení v analyzovaném textu. Úkolem je navrhnout algoritmus, který dokáže vybrat z této množiny ten nejpravděpodobnější DBpedia zdroj. Příkladem pro odstraňování nejednoznačností mi v tomto případu nebyl nástroj DBpedia Spotlight, ale článek Learning to Link with Wikipedia [25], v němž byla představena metoda pro selekci toho pravého kandidáta dle výpočtu podobnosti dvou wiki stránek na základě linků, které na porovnávané zdroje směřují. Pro implementaci takovéhoto přístupu bylo tedy zapotřebí pro každý zdroj vyextrahovat množinu všech zdrojů, které na něj odkazují. Tyto informace obsahuje DBpedia dataset Pagelinks. Díky tomuto datasetu již bylo možné zjišťovat podobnosti dvou zdrojů a tím tak umožnit výpočet toho nejpravděpodobnějšího z množiny kandidátů. Při odstraňování nejednoznačností (angl. disambiguation) uvažujme sekvenci slov či frází, u kterých byl identifikován alespoň jeden DBpedia zdroj, tuto sekvenci označíme jako O. Dále uvažujme množinu kandidátu (resp. DBpedia zdrojů) Q i, přiřazenou ke slovu nebo frázy o i ze sekvence O. Konečně zdroj q i,j z množiny Q i obsahuje množinu všech DBpedia zdrojů R qi,j směřující na zdroj q i,j. Během fáze odstraňování nejednoznačnosti se z každé množiny Q i snažíme vybrat jediný zdroj, přičemž množina všech takto vybraných zdrojů p velikosti O musí být nejpravděpodobnější ze všech možných variací, kterých může být maximálně (max i Q i ) O (obr. 3.5). Výběr nejlepší sekvence kandidátů proto vypadá následovně: sim(p i, p j ) ˆp = argmax p p i,j (3.2) Funkce sim vrací míru podobnosti (angl. similarity measure) dvou zdrojů v rozsahu 0 až 1. Obrázek 3.5: Ukázka množiny slov, kde každé slovo obsahuje dva kandidáty, z nichž je nutné vybrat právě jednoho. 102

103 3.4. Rozpoznávací fáze K úspěšné eliminaci všech nejednoznačností je tedy potřeba doplnit funkci sim a navrhnout efektivní algoritmus, pro nalezení množiny ˆp Míra podobnosti dvou zdrojů Pro určení míry podobnosti máme k dispozici množinu všech zdrojů R q směřující na zdroj q. Mějme tedy zdroje q i a q j. Potom funkce sim může vypadat následovně: sim cov (q i, q j ) = R qi R qj min( R qi, R qj ) (3.3) Tělo takto nadefinované podobnostní funkce počítá míru pokrytí toho zdroje, na který vede méně odkazů. Od ostatních funkcí je tato rozlišována dle indexu cov (jako coverage). V odborném článku [25] je představena funkce pro výpočet vzdálenosti dvou wiki zdrojů, která je převzadata z algoritmu pro výpočet míry podobnosti dvou klíčových slov zpracovávaných vyhledávacím enginem Google. Tuto míru názýváme Normalized Google Distance [7]. Pro potřebu této práce byla funkce upravena tak, aby vracela hodnoty v rozsahu 0 až 1. NGD(q i, q j ) = log(max( R q i, R qj )) log( R qi R qj ) log M log(min( R qi, R qj )) { 1 NGD(qi, q j ) pokud NGD(q i, q j ) 1 sim ngd (q i, q j ) = 0 pokud NGD(q i, q j ) > 1 (3.4) Prvek M značí počet všech DBpedia zdrojů (resp. počet všech wiki stránek). Funkce NGD vrací hodnotu vzdálenosti dvou zdrojů, tato hodnota ovšem není omezena pro intervalu 0 až 1, ale může nabývat i větších hodnot než 1. Pro podobnostní funkci sim ngd tyto hodnoty ořezáváme, tím ovšem dostáváme nulové řešení pro více vzdálené zdroje. Abychom tyto informace neztráceli, je potřeba funkci sim modifikovat tak, aby pracovala s funkcí NGD v plné své šíři. Pro tento případ byly navrženy dvě funkce, které tento problém řeší: sim neg (q i, q j ) = MaxDis NGD(q i, q j ) (3.5) MaxDis Kde MaxDis je maximální možná hodnota vzdálenosti, kterou lze výpočítat pomocí vzorce: MaxDis = log(max i R qi ) log M log(max i R qi ) (3.6) Další varianta funkce sim, pracuje na jednoduchém principu, tedy umocněním záporného čísla: sim exp (q i, q j ) = exp(0 NGD(q i, q j )) (3.7) 103

104 3. Návrh řešení a implementace Pro porovnávání dvou zdrojů máme tedy navrženy celkem 4 funkce, které vracejí výpočtenou míru podobnosti: sim cov, sim ngd, sim neg a sim exp Hledání nejpravděpodobnější množiny kandidátů V příkladu 3.2 je ukázano, jakým způsobem najít nejpravděpodobnější množinu zdrojů analyzovaného textu s pomocí podobnostní funkce sim. Problém je ovšem NP-úplný jelikož je nutné projít všechny varianty množin vybraných kandidátů, kterých může být až (max i Q i ) O. Proto je zapotřebí zvolit nějakou heuristiku, s níž lze dosáhnout řešení blízké optimu v polynomiálním čase. Celkově bylo navrženo 5 heuristik, které konstruují výslednou množinu jednoznačných entit. Jsou to: PopularityDisambiguator: Prochází sekvenci O, kde z každé množiny kandidátů Q i vybere ten zdroj, na který vede nejvíce odkazů. Složitost: O (max i Q i O ). OverAllDisambiguator: Prochází sekvenci O, kde z každé množiny kandidátů Q i vybere ten zdroj, který vrací nejvyšší míru podobnosti vypočtenou přes všechny kandidáty všech entit. Složitost: O ( (max i Q i O ) 2). UnambiguousFirstDisambiguator: Seřadí sekvenci O podle velikosti množiny Q i. Prochází seřazenou sekvencí O od nejmenší množiny Q min po největší množinu Q max. V každém kroku je vybírán kandidát dle míry podobnosti přes všechny předcházející (tudíž již prošlé a jednoznačné) kandidáty. Pokud první nejmenší množina Q min obsahuje více kandidátů, je vybrán ten nejpopulárnější zdroj dle algoritmu PopularityDisambiguator. Složitost: O ( O (log O + O max i Q i )). ViterbiDisambiguator: Tento algoritmus je ve způsobu konstrukcí cest a procházení skrze jednotlivé kandidáty velmi podobný Viterbi algoritmu (viz ). Seřadí sekvenci O podle velikosti množiny Q i. Prochází seřazenou sekvencí O od nejmenší množiny Q min po největší množinu Q max. V kroku n je každý kandidát přídán do vybraného spojového seznamu z kroku n 1 (počet těchto seznamů je Q n 1 ). Z těchto nově sestavených seznamů je pro každého kandidáta vybrán právě ten nejpravděpodobnější seznam (dle míry podobnosti vypočtené přes všechny kandidáty v seznamu). Tím nám vznikne nová sada seznamů, která reprezentují Q n 1 různá řešení v kroku n. Takto pokračujeme až do poslední množiny, ve které vyselektujeme ten nejpravděpodobnější seznam kandidátů. Složitost: O ( O (log O + O (max i Q i ) 2)). ApproximativeDisambiguator: Aproximuje NP-úplnou problém dle aproximačního schématu simulované ochlazování (angl. simulated annealing). Toto schéma si na začátku zvolí nějaké náhodné řešení. Dle pevně 104

105 3.5. Trénovací fáze zvolených konstant algoritmus postupně prochází jednotlivými stavy dle výběru náhodného souseda. Pokud nalezne lepší řešení než měl doposud, přepíše stávající řešení. Čím výpočet trvá déle tím se nám zmenšuje pravděpodobnost přechodu do stavu, který vrací horší výsledky. Složitost algoritmu závisí na zvolených konstantách C: O ( O ( O + C)) Filtrování V rámci vylepšení míry přesnosti (precision) a efektivnějšího výberu jednoznačných entit, byly navrženy dva druhy filtrů, které lze aplikovat před a po fázi odstraňování nejednoznačností. Jakýkoliv kandidát, který nesplňuje určité vlastnosti definované ve filtru, je odebrán. Filtry jsou následující: ClassCandidateFilter: Jsou eliminovány všechny zdroje, které nepatří do žádné třídy DBpedia ontologie. ProbabilityCandidateFilter: V rámci tohoto filtru je nastaven určitý pravděpodobnostní práh p v rozsahu 0 až 1. Všechny zdroje, které mají nižší pravděpodobnost než p, jsou odstraněny. Pravděpodobnosti jednotlivých zdrojů jsou počítány jako průměr míry podobnosti, která je počítána skrze všechny vyselektované kandidáty. Filtr ClassCandidateFilter se hodí, pokud chceme dostávat takové zdroje, které představují pojmenované entity. Nasazením filtru ProbabilityCandidate- Filter po odstranění nejednoznačností jsme schopni do jisté míry vylepšit míru přesnosti. Aplikace tohoto filtru před disambiguační fází může ve finále velmi zpomalit výpočet, jelikož jsou počítány pravděpodobnosti skrze všechny kandidáty, kterých může být před touto fází velmi mnoho; ovšem zase lze tímto krokem upřesnit a zrychlit výběr jednoznačných kandidátů. 3.5 Trénovací fáze Ve chvíli kdy máme navržen průběh rozpoznávání, můžeme definovat množinu dat potřebnou k řešení této úlohy. Během trénovacího procesu jsou tato data procházena a na základě jejich obsahu jsou tvořeny vyhledávací modely (obr. 3.7). Díky těmto natrénovaným modelům můžeme v datech efektivně vyhledávat podle žádoucích parametrů. Třídy, které se zúčastňují trénovací a vyhledávací fáze jsou zobrazeny na obrázku 3.6. Pro výběr kandidátů je vyžadován slovník, jenž obsahuje všechny povrchové formy s příslušným odkazem na zdroj. Tento slovník je sestaven právě v trénovací fázi z následujících DBpedia datasetů (viz ): Labels: Obsahuje nadpisy všech DBpedia zdrojů, jenž tvoří povrchovou formu. 105

106 3. Návrh řešení a implementace Obrázek 3.6: Diagram tříd figurujících v trénovací a vyhledávací fázi. Redirects: Obsahuje informaci o zdrojích, které jsou přesměrovávány na jiné zdroje. Uvažujme zdroj a přesměrován na zdroj b. Potom nadpis zdroje a je povrchovou formou zdroje b. Tento nadpis představuje obvykle synonymum nebo akronym nadpisu zdroje b. Disambiguation: Obsahuje informace o snadno zaměnitelných zdrojích. Všechny nadpisy vzájemně zaměnitelných zdrojů, tvoří povrchové formy těchto jednotlivých nejednoznačných zdrojů. Jak je vidět, jedná se o stejný způsob trénování jako to bylo u nástroje DBpedia Spotlight (viz ). Stejně tak jsou i získávány povrchové formy z anchor textů, které jsou součástí interních odkazů spojující jednotlivé wiki stránky. Tyto anchor texty obvykle nejsou ve slovníkovém tvaru, ale bývají často poznamenány nějakou morfologickou operací, jelikož jsou součástí souvislého textu. Takovéto tvary uložené rovněž jako povrchové formy k nějakému zdroji nahrazují potřebu tvorby lemmatizačního procesu; máme tedy ve slovníku nejen slova ve slovníkovém tvaru, ale i jiné tvary téhož slova. Anchor texty jsou extrahovány z wiki dumpů (viz ). Další data vyžadována k výběru kandidátů je seznam stop slov. Tento seznam je uložen v jednom souboru, který je načten v rámci klasifikace do množinové struktury. 106

107 3.6. Implementace Obrázek 3.7: Trénovací data, která konstruují jednotlivé vyhledávací modely během trénovací fáze. Po úspěšné tvorbě vyhledávacího modelu povrchových forem již lze efektivně vyhledávat kandidáty. V dalším kroku rozpoznávací fáze je nutné počítat podobnosti dvou zdrojů, např. zdrojů a a b, k čemuž potřebujeme získat seznam všech odkazů směřující na zdroj a a b. Tyto informace má v sobě právě dataset Pagelinks. Trénování probíhá formou uložení těchto dat do speciálního úložiště, v němž lze vyhledávat potřebné odkazy (nejlépe s konstantní složitostí); data mají strukturu dvojice: cílový zdroj a množinu všech zdrojů odkazující na cílový zdroj. Nakonec je nutné natrénovat model, který vyhledává typy k jednotlivým zdrojům. Tato data jsou nutná při filtrovací fázi a bývají i součástí výstupu rozpoznávání. Informace o typech zdrojů jsou obsaženy v datasetu Ontology Infobox Types. Pro analýzu hierarchické struktury těchto typů je nutné do trénovací fáze přidat i celou DBpedia ontologii. 3.6 Implementace V rámci implementace navržených přístupů je nejprve nutné vybrat správné technologie pomocí kterých bude celá aplikace sepsána. Dále je potřeba navrhnout strukturu vstupních a výstupních dat a ve finále implementovat webovou službu, která bude přístupna skrz nějaké pevné přístupové body. K této službě bude dodatečně přidáno grafické uživatelské rozhraní pro snadnější a uživatelsky přívětivější způsoby testování. Pro implementaci byly vybrány následující technologie: 107

108 3. Návrh řešení a implementace Programovací jazyk: Scala Uložiště dat: Apache Lucene Extrakční framework trénovacích dat: DBpedia Extraction Framework 3.8 Vstupní a výstupní formát: XML Webová služba: REST, framework Jersey Grizzly Grafické uživatelské rozhraní: JavaScript + jquery Aplikace byla sepsána tak, aby ji bylo možno v budoucnu pohodlně škálovat, proto jsou veškeré datové struktury immutable. Technologie Lucene nám poskytuje úložiště natrénovaných dat, ke kterým je možno díky indexům přistupovat velmi efektivně Vstupní data Data vstupující do procesu rozpoznávání mají formu XML dokumentu. Jednotlivé elementy vypadají následovně: input-properties: kořenový element, jehož atributy jsou: 108 showprob: touto boolean hodnotou nastavíme, zda-li chceme na výstupu zobrazovat pravděpodobnosti jednotlivých entit (může zpomalit výpočet), default: false. relatedness: povinný atribut, v rámci kterého si zvolíme podobnostní funkce. Varianty: ngd, coverage, ngdneg, ngdexp. Kořenový uzel dále obsahuje následující elementy: text: V tomto elementu je nestruktorovaný text, který chceme analyzovat (povinná položka). disambiguator: V tomto elementu si zvolíme jaký používat algoritmus pro odstraňování nejednoznačností (nepovinná položka). Všechny následující elementy jsou prázdné: popularity: Aplikuje PopularityDisambiguator. over-all: Aplikuje OverAllDisambiguator. unambiguous-first: Aplikuje UnambiguousFirstDisambiguator. viterbi: Aplikuje ViterbiDisambiguator. simulated-annealing: Aplikuje ApproximativeDisambiguator. Tento element má nepovinné atributy: init-temp: Počáteční teplota (double), default: 250.

109 3.6. Implementace freezing-temp: Konečná teplota (double), default: 0.5. cooling-rate: Ochlazovací koeficient (double), default: equilibrium: Hodnota ekvilibria (int), default: 500. filters: Metody filtrování (nepovinná položka): after: Filtry aplikované po disambiguační fázi (nepovinná položka): mapped-entity: Vyfiltruje DBpedia zdroje, které nemají nadefinován typ (nepovinná položka). probability: Vyfiltruje DBpedia zdroje, které nesplňují určitý práh pravděpodobnosti (nepovinná položka). Tento element má jediný povinný atribut min (double v rozsahu 0 až 1). before Filtry aplikované před disambiguační fází (nepovinná položka): mapped-entity: Vyfiltruje DBpedia zdroje, které nemají nadefinován typ (nepovinná položka). probability: Vyfiltruje DBpedia zdroje, které nesplňují určitý práh pravděpodobnosti (nepovinná položka). Tento element má jediný povinný atribut min (double v rozsahu 0 až 1) Výstupní data Výstupní data mají následující XML formu (příklad možného výstupu je zobrazen na obrázku 3.8): output: Kořenový element obsahující elementy: text*: Tento libovolně opakující se element obsahuje neanotovaný segment slov. entity*: Libovolně opakující se element, který obsahuje anotovaný segment slov: text: Anotovaný textový segment. resources: Tento element obsahuje DBpedia zdroje, které patří k tomuto segmentu slov. resource*: Libovolně opakující se element, jehož tělo obsahuje URI DBpedia zdroje. Dále může mít následující atributy: prob: Pravděpodobnost tohoto zdroje. class: Typ tohoto zdroje v podobě URI adresy odkazující na definovanou třídu v DBpedia ontologii. 109

110 3. Návrh řešení a implementace Obrázek 3.8: Ukázka výstupu implementovaného nástroje, který identifikuje DBpedia zdroje v českém prostředí Webová služba Webová služba byla implementována dle architektury REST. Konečné API má takovouto strukturu: URL: scheme://host/ner/ HTTP Metoda: POST Formát vstupních dat: application/xml Formát výstupních dat: application/xml Možné statusy: 200 (rozpoznávání bylo úspěšně dokončeno), 405 (HTTP metoda není povolena, musí být POST), 500 (neočekávaná chyba serveru). Vstupem je XML soubor definovaný dle zmíněného schématu (viz ) a výstupem rovněž XML soubor se strukturou zmíněnou v předcházejících odstavcích (viz ). 110

111 3.6. Implementace Obrázek 3.9: Ukázka grafického uživatelského prostředí k implementovanému rozpoznávacímu nástroji Grafické uživatelské prostředí Toto prostředí bylo napsáno v JavaScriptu k pohodlnější práci s rozpoznávacím nástrojem. Výsledkem je grafická aplikace, v níž lze jednoduše nastavovat veškeré rozpoznávací parametry a vkládat vstupní analyzovaný text. Poté stačí kliknout na tlačítko rozpoznat entity a aplikace převede vstupní data do XML struktury a automaticky odešle webové službě. Po pár sekundách je vrácen výsledek a převeden do grafické podoby (obr. 3.9). 111

112

113 KAPITOLA 4 Testování Poslední kapitola této diplomové práce se zabývá testováním implementované aplikace rozpoznávající DBpedia zdroje (viz ). Pro jednoduché otestování funkčnosti této aplikace je k dispozici grafické uživatelské rozhraní, skrze které lze jednoduše analyzovat nestrukturované texty s různými nastavitelnými parametry. Tímto získáme přehled o tom, jak aplikace funguje; můžeme i výsledky vizuálně porovnávat s jinými anotovanými daty (např. ručně anotovanými). Pokud bychom ale chtěli dostávat statistiké údaje pro větší množství testovacích dat, byla by tato metoda testování příliš vyčerpávající a neefektivní. Proto by bylo dobré navrhnout nějaký testovací interface, přes který bychom dokázali dané rozpoznávací aplikaci automaticky předhazovat velké množství testovacích dat. Testovací aplikace by byla schopna sumarizovat veškeré obdržené výsledky z testů a nakonec prezentovat koncovému uživateli. Výsledkem by byly průměrné hodnoty evaluačních metrik (viz. 2.6) získané z dílčích rozpoznávacích kroků pro celé množiny testovacích dat. Jedním z cílů této kapitoly je tedy navrhnout a implementovat takovouto testovací aplikaci. Mimo jiné je také požadováno, aby tato aplikace dokázala předhazovat rozpoznávacímu programu náhodně vybraná data z nějaké veliké kolekce ručně anotovaných dat, která je pevně definována. 4.1 Testovací data Pro úspěšnou implementaci takovéhoto testovacího nástroje je potřeba nalézt dostupnou množinu ručně anotovaných dat, která obsahují anotace v podobě DBpedia zdrojů, nebo lze jejich typ anotace lehce na DBpedia zdroje namapovat. Takováto množina dat je nám ale velmi známá, jelikož jimi tvoříme primární znalostní model pro implementovaný rozpoznávací nástroj; touto množinou je Wikipedia. Stránky Wikipedie obsahují souvislý ručně anotovaný 113

114 4. Testování text, kde příslušné anotace mají formu odkazů na jiné wiki stránky. DBpedia zdroj je ovšem ekvivalentní s Wikipedia zdrojem, tudíž lze tyto odkazy lehce namapovat na DBpedia zdroje. Nevýhodou takovýchto testovacích dat je, že jsou součástí trénovacích dat, tudíž není splněna podmínka diference testovacích a trénovacích dat, která bývá součástí metod strojového učení. Bohužel jiný korpus obsahující ručně anotovaná data v podobě DBpedia resp. Wikipedia zdroje nemáme k dispozici. Pro testovací účely budeme tedy stahovat obsah wiki stránek. Tato stránka je ve formátu HTML a anotace obsahující informaci o DBpedia zdroji je označena prostým odkazem s atributem title, ve kterém je obsažen název příslušné wiki stránky. Parsováním takovéhoto HTML dokumentu tedy získáme vhodná testovací data (se znalostí optimálního řešení) Wikipedia API Wikipedia disponuje svým vlastním API 20, ke kterému lze přistupovat v rámci webu přes konkrétní URL adresu. Tato adresa může dále obsahovat nastavitelné parametry, kterými lze specifikovat, jaké informace chceme s Wikipedie získávat. Pro náš případ potřebujeme během testování obdržet seznam x náhodných wiki stránek, jejichž obsahy budou dále parsovány. Pro získání takovéhoto obsahu stačí přistoupit k API skrze tuto URL adresu: &rnlimit=x&rnnamespace=0&format=xml Jako výsledek dostaneme data ve formátu XML se seznamem náhodně vybraných wiki stránek velikosti x. Máme tedy seznam wiki stránek, jejichž obsah budou tvořit ona testovací data. HTML výtah konkrétní wiki stránky w dostaneme z odpovědi na HTTP dotaz k této URL adrese: &prop=text&format=xml Z výsledného XML dokumentu nakonec zparsujeme všechny paragrafy a jejich obsah serializujeme do textové podoby bez HTML tagů. Explicitně si ukládáme informace o anotovaných segmentech textu, které obsahují interní odkaz na jinou wiki stránku. Těmito kroky tedy získáme příslušnou množinu testovacích dat

115 4.2. Návrh testovací aplikace Obrázek 4.1: Procesy, které jsou vykonávány testovací aplikací. 4.2 Návrh testovací aplikace Jak již bylo definováno v úvodu, testovací aplikace by měla být schopna získávat obsahy náhodně vybraných wiki stránek a tato data převádět na data testovací, způsobem popsaným v Testovací data budou v nestruktované podobě dále analyzována rozpoznávacím algoritmem a výsledky porovnávany s optimem. Výstupem budou konkrétní čísla evaluačních metrik (viz. 2.6), vyjadřující míru úspěšnosti klasifikace pro zvolené parametry rozpoznávání (obr. 4.1). Toto jsou tedy základní požadavky, které musí testovací aplikace splňovat. Při spuštění testu je nejprve nutné získat příslušnou množinu testovacích dat dle Wikipedia API (třída PageSelector). Obsahy jednotlivých wiki stránek budou parsovány dle pravidlového přístupu (třída PageParser) a tokenizovány dle slov (třída TestDataFactory produkující instance třídy TestData). Jejich anotace budou ukládány do speciální struktury (třída Entity) s odkazem na příslušný textový segment (obr. 4.2). Obrázek 4.2: Diagram tříd figurujících při konstrukci testovacích dat. 115

116 4. Testování Obrázek 4.3: Diagram tříd figurujících v testovací fázi. Následuje volání vzdálené služby (třída RemoteService), která rozpoznává entity v testovacích datech (obr. 4.3). Neomezujeme se zde ovšem pouze na jednu rozpoznávací aplikaci, ale je možné testovat i jiné klasifikátory, které disponují API přizpůsobené této testovací službě. Před spuštěním testu bude tedy nutné předložit testovací aplikaci informace o vzdálené webové službě, podle kterých zjistí jakým způsobem onu službu volat. Konkrétně je tedy nutné nastavit: URL adresu webové služby. Datový formát, který bude posílán dané webové službě (XML, JSON apod.) Metoda HTTP dotazu (POST, GET, PUT apod.) Struktura dat, která vstupuje do vzdálené služby. Dle těchto parametrů jsou vzdálené službě postupně předávána testovací data (služeb může být i více pro daná testovací data; třída TestResultBuilder), která jsou následně zpracovávána rozpoznávací aplikací. V posledním kroku budou veškeré výsledky, získané z výstupu vzdálené webové služby, porovnávány s optimem a postupně budou vypočteny míry precision, recall a f-measure. Všechny tyto míry, vypočtené pro každou testovanou wiki stránku, budou ve finále zprůměrovány a vráceny na výstup jako jedna konkrétní hodnota příslušné míry. 116

Dataprojektor, jazykové příručky, pracovní listy

Dataprojektor, jazykové příručky, pracovní listy Předmět: Náplň: Třída: Počet hodin: Pomůcky: Tvarosloví *) Český jazyk (CEJ) Jazyková výchova Sekunda 2 hodiny týdně Dataprojektor, jazykové příručky, pracovní listy Určuje slovní druhy, své tvrzení vždy

Více

SADA VY_32_INOVACE_CJ1

SADA VY_32_INOVACE_CJ1 SADA VY_32_INOVACE_CJ1 Přehled anotačních tabulek k dvaceti výukovým materiálům vytvořených Mgr. Bronislavou Zezulovou a Mgr. Šárkou Adamcovou. Kontakt na tvůrce těchto DUM: zezulova@szesro.cz a adamcova@szesro.cz

Více

Formální jazyky a gramatiky Teorie programovacích jazyků

Formální jazyky a gramatiky Teorie programovacích jazyků Formální jazyky a gramatiky Teorie programovacích jazyků doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Připomenutí základních pojmů ABECEDA jazyk je libovolná podmnožina

Více

Obsah. Úvodní poznámka 11 Německý jazyk, spisovná řeč a nářečí 13 Pomůcky ke studiu němčiny 15

Obsah. Úvodní poznámka 11 Německý jazyk, spisovná řeč a nářečí 13 Pomůcky ke studiu němčiny 15 Obsah Úvodní poznámka 11 Německý jazyk, spisovná řeč a nářečí 13 Pomůcky ke studiu němčiny 15 VÝSLOVNOST A PRAVOPIS Německá výslovnost 18 Hlavni rozdíly mezi českou a německou výslovnosti 19 Přízvuk 20

Více

Příloha č. 4 ČESKÝ JAZYK JAZYKOVÁ VÝCHOVA

Příloha č. 4 ČESKÝ JAZYK JAZYKOVÁ VÝCHOVA Žák porovnává významy slov, zvláště slova podobného nebo stejného významu a slova vícevýznamová O jazyce Opakování učiva 3. ročníku Národní jazyk Naše vlast a národní jazyk Nauka o slově Slova a pojmy,

Více

Příloha č. 4 ČESKÝ JAZYK JAZYKOVÁ VÝCHOVA

Příloha č. 4 ČESKÝ JAZYK JAZYKOVÁ VÝCHOVA září Žák porovnává významy slov, zvláště slova podobného nebo stejného významu a slova vícevýznamová. Žák dokáže rozlišit mluvnické kategorie podstatných jmen (pád, číslo, rod), rozliší větu jednoduchou

Více

Jazyk a jazyková komunikace 2. ročník a sexta

Jazyk a jazyková komunikace 2. ročník a sexta Předmět: Náplň: Třída: Počet hodin: Pomůcky: Tvarosloví Český jazyk (CEJ) Jazyk a jazyková komunikace 2. ročník a sexta 2 hodiny týdně (viz poznámky) S jistotou určí slovní druh a pojmenuje jej cizím termínem

Více

Český jazyk a literatura - jazyková výchova

Český jazyk a literatura - jazyková výchova Využívá znalostí získaných v předešlých ročnících. OPAKOVÁNÍ OPAKOVÁNÍ Vysvětlí pojmy: sl.nadřazené, podřazené a slova souřadná.uvede příklady. Rozpozná sl. jednoznač.a mnohoznačná. V textu vyhledá synonyma,

Více

Dataprojektor, jazykové příručky, pracovní listy

Dataprojektor, jazykové příručky, pracovní listy Předmět: Náplň: Třída: Počet hodin: Pomůcky: Český jazyk (CEJ) Jazyková výchova Tercie 2 hodiny týdně Dataprojektor, jazykové příručky, pracovní listy Skladba *) Ţák vysvětlí pojem aktuální (kontextové)

Více

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39 Bezkontextové jazyky Bezkontextové jazyky 1 p.1/39 Jazyky typu 2 Definice 4.1 Gramatika G = (N, Σ, P, S) si nazývá bezkontextovou gramatikou, jestliže všechna pravidla z P mají tvar A α, A N, α (N Σ) Lemma

Více

Jednoznačné a nejednoznačné gramatiky

Jednoznačné a nejednoznačné gramatiky BI-AAG (2011/2012) J. Holub: 11. Bezkontextové gramatiky p. 2/36 Jednoznačné a nejednoznačné gramatiky BI-AAG (2011/2012) J. Holub: 11. Bezkontextové gramatiky p. 4/36 Automaty a gramatiky(bi-aag) 11.

Více

Popis morfologických značek poziční systém

Popis morfologických značek poziční systém Popis morfologických značek poziční systém Jan Hajič Ústav formální a aplikované lingvistiky MFF UK Morfologická analýza a syntéza Morfologické značky jsou součástí výsledku (výstupem) morfologické analýzy,

Více

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Plán přednášky Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Obecný algoritmus pro parsování bezkontextových jazyků dynamické programování 1 Zásobníkový

Více

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27 Bezkontextové jazyky 2/3 Bezkontextové jazyky 2 p.1/27 Transformace bezkontextových gramatik Bezkontextové jazyky 2 p.2/27 Ekvivalentní gramatiky Definice 6.1 Necht G 1 a G 2 jsou gramatiky libovolného

Více

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 2/29 Hodnocení předmětu BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 4/29 Automaty a gramatiky(bi-aag) 1. Základní pojmy Jan Holub Katedra teoretické

Více

E K O G Y M N Á Z I U M B R N O o.p.s. přidružená škola UNESCO

E K O G Y M N Á Z I U M B R N O o.p.s. přidružená škola UNESCO Seznam výukových materiálů III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Tematická oblast: Předmět: Vytvořil: Současný český jazyk upevňování a procvičování obtížných gramatických jevů Český jazyk

Více

2 Formální jazyky a gramatiky

2 Formální jazyky a gramatiky 2 Formální jazyky a gramatiky 2.1 Úvod Teorie formálních gramatik a jazyků je důležitou součástí informatiky. Její využití je hlavně v oblasti tvorby překladačů, kompilátorů. Vznik teorie se datuje přibližně

Více

Ročník: 5. Časová dotace: 7 hodin týdně učivo, téma očekávané výstupy klíčové kompetence, mezipředmětové vazby

Ročník: 5. Časová dotace: 7 hodin týdně učivo, téma očekávané výstupy klíčové kompetence, mezipředmětové vazby Ročník: 5. Časová dotace: 7 hodin týdně Komunikační a slohová Zážitkové čtení a naslouchání klíčová slova vyhledávací čtení aktivní naslouchání se záznamem slyšeného Žák při hlasitém čtení vhodně využívá

Více

Vztah jazyků Chomskeho hierarchie a jazyků TS

Vztah jazyků Chomskeho hierarchie a jazyků TS Vztah jazyků Chomskeho hierarchie a jazyků TS Jan Konečný; (přednáší Lukáš Havrlant) 15. října 2013 Jan Konečný; (přednáší Lukáš Havrlant) Chomskeho hierarchie a jazyky TS 15. října 2013 1 / 23 Rychlé

Více

Český jazyk - Jazyková výchova

Český jazyk - Jazyková výchova Prima Zvuková stránka jazyka Stavba slova a pravopis rozlišuje spisovný jazyk, nářečí a obecnou češtinu Jazyk a jeho útvary seznamuje se s jazykovou normou spisovně vyslovuje česká a běžně užívaná cizí

Více

VY_32_INOVACE_ / IQ cesta

VY_32_INOVACE_ / IQ cesta 1/6 3.2.07.08 Pravidla hry: 1. Hra je určena minimálně pro 2 hráče. 2. Jeden hráč (může se účastnit i hry) bude kontrolovat správnost odpovědí na Listině odpovědí. 3. Každý si vybere figurku jiné barvy

Více

Dataprojektor, kodifikační příručky

Dataprojektor, kodifikační příručky Předmět: Náplň: Třída: Počet hodin: Pomůcky: Český jazyk (CEJ) Jazyková výchova Prima 2 hodiny týdně Dataprojektor, kodifikační příručky Slovní druhy Objasní motivaci pojmenování slovních druhů Vysvětlí

Více

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je 28 [181105-1236 ] 2.7 Další uzávěrové vlastnosti třídy regulárních jazyků Z předchozích přednášek víme, že třída regulárních jazyků je uzavřena na sjednocení, průnik, doplněk, zřetězení, Kleeneho operaci

Více

VĚTNÉ ČLENY. Mgr. Jiří Ondra Procvičení základních pojmů a kategorií z oblasti české skladby. Zdokonalování jazykových vědomostí a dovedností

VĚTNÉ ČLENY. Mgr. Jiří Ondra Procvičení základních pojmů a kategorií z oblasti české skladby. Zdokonalování jazykových vědomostí a dovedností VĚTNÉ ČLENY Autor Mgr. Jiří Ondra Anotace Opakování základních pojmů a kategorií z oblasti české skladby Očekávaný přínos Procvičení základních pojmů a kategorií z oblasti české skladby Tematická oblast

Více

DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ

DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ Číslo projektu Číslo a název šablony klíčové aktivity Tématická oblast CZ.1.07/1.5.00/34.0963 II/2 Inovace a zkvalitnění výuky směřující k rozvoji čtenářské a informační

Více

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy Metody a nástroje syntaktické analýzy Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 14. října 2011 Vlastnosti syntaktické analýzy Úkoly syntaktické

Více

SSOS_CJL_5.13. III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT. Číslo a název projektu Číslo a název šablony

SSOS_CJL_5.13. III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT. Číslo a název projektu Číslo a název šablony Číslo a název projektu Číslo a název šablony DUM číslo a název CZ.1.07/1.5.00/34.0378 Zefektivnění výuky prostřednictvím ICT technologií III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT SSOS_CJL_5.13

Více

2. Přídavná jména Tři stránky tabulek obsahují 156 nejběžnějších anglických přídavných jmen.

2. Přídavná jména Tři stránky tabulek obsahují 156 nejběžnějších anglických přídavných jmen. TABULKY SLOVÍČEK Už před lety jsem si všiml, že z nějakého důvodu studenti na základní a dokonce i na pokročilejší úrovni často neznají některá úplně základní slovíčka. Nejvíce se to dá pozorovat u sloves,

Více

Vzdělávací oblast: Jazyk a jazyková komunikace Vzdělávací obor (předmět): Český jazyk: jazyková výchova - ročník: PRIMA

Vzdělávací oblast: Jazyk a jazyková komunikace Vzdělávací obor (předmět): Český jazyk: jazyková výchova - ročník: PRIMA Vzdělávací oblast: Jazyk a jazyková komunikace Vzdělávací obor (předmět): Český jazyk: jazyková výchova - ročník: PRIMA Téma Učivo Výstupy Kódy Dle RVP Školní (ročníkové) PT KK Podstatná jména: - konkrétní

Více

Vyučovací předmět: Český jazyk a literatura Ročník: 6. Jazyková výchova

Vyučovací předmět: Český jazyk a literatura Ročník: 6. Jazyková výchova Vyučovací předmět: Český jazyk a literatura Ročník: 6. Vzdělávací obsah Očekávané výstupy z RVP ZV Školní výstupy Učivo Přesahy a vazby, průřezová témata rozlišuje spisovný jazyk, nářečí a obecnou češtinu

Více

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Turingovy stroje. Teoretická informatika Tomáš Foltýnek Turingovy stroje Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Teoretická informatika strana 2 Opakování z minulé přednášky Jaké znáte algebraické struktury s jednou operací? Co je to okruh,

Více

Český jazyk ve 4. ročníku

Český jazyk ve 4. ročníku Český jazyk ve 4. ročníku září Jazyková Čte s porozuměním přiměřeně náročné texty potichu i nahlas. učebnice strana 3 7 Procvičuje praktické naslouchání při komunikaci s další osobou. pracovní sešit strana

Více

Anglický jazyk. Anglický jazyk. žák: TÉMATA. Fonetika: abeceda, výslovnost odlišných hlásek, zvuková podoba slova a její zvláštnosti

Anglický jazyk. Anglický jazyk. žák: TÉMATA. Fonetika: abeceda, výslovnost odlišných hlásek, zvuková podoba slova a její zvláštnosti Prima jednoduše mluví o sobě Slovní zásoba: elementární slovní 1 B/ 26, 27, 29, 30 tvoří jednoduché otázky a aktivně je používá zásoba pro zvolené tematické okruhy odpovídá na jednoduché otázky obsahující

Více

7. ročník. Český jazyk a literatura. Komunikační a slohová výchova. Vypravování uspořádání dějových prvků

7. ročník. Český jazyk a literatura. Komunikační a slohová výchova. Vypravování uspořádání dějových prvků list 1 / 8 Čj časová dotace: 4 hod / týden Český jazyk a literatura 7. ročník (ČJL 9 1 09) sestaví vypravování v časové posloupnosti s využitím názorných jazykových prostředků sestaví vypravování s využitím

Více

Vzdělávací oblast: JAZYK A JAZYKOVÁ KOMUNIKACE Vyučovací předmět: Český jazyk a literatura Ročník: 6.

Vzdělávací oblast: JAZYK A JAZYKOVÁ KOMUNIKACE Vyučovací předmět: Český jazyk a literatura Ročník: 6. Vzdělávací oblast: JAZYK A JAZYKOVÁ KOMUNIKACE Vyučovací předmět: Český jazyk a literatura Ročník: 6. Jazyková výchova - zná pojem mateřský jazyk 1. Čeština jako mateřský jazyk MKV 4.4 - zná základní složky

Více

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka Metody tvorby ontologií a sémantický web Martin Malčík, Rostislav Miarka Obsah Reprezentace znalostí Ontologie a sémantický web Tvorba ontologií Hierarchie znalostí (D.R.Tobin) Data jakékoliv znakové řetězce

Více

Sémantický web a extrakce

Sémantický web a extrakce Sémantický web a extrakce informací Martin Kavalec kavalec@vse.cz Katedra informačního a znalostního inženýrství FIS VŠE Seminář KEG, 11. 11. 2004 p.1 Přehled témat Vize sémantického webu Extrakce informací

Více

Stonožka jak se z výsledků dozvědět co nejvíce

Stonožka jak se z výsledků dozvědět co nejvíce Stonožka jak se z výsledků dozvědět co nejvíce Vytvoření Map učebního pokroku umožňuje vyhodnotit v testování Stonožka i dílčí oblasti učiva. Mapy učebního pokroku sledují individuální pokrok žáka a nabízejí

Více

Školní vzdělávací program Základní školy a mateřské školy Sdružení

Školní vzdělávací program Základní školy a mateřské školy Sdružení Vyučovací předmět: Český jazyk a literatura 3. ročník Měsíc Téma Učivo Očekávaný výstup září říjen OPAKOVÁNÍ Z 2. roč. VĚTA JEDNODUCHÝ PŘÍBĚH OPAKOVÁNÍ Z 2. ročníku PÁROVÉ SOUHLÁSKY ABECEDA JEDNODUCHÝ

Více

Jak lze v korpusech hledat doklady pro výzkum morfologie?

Jak lze v korpusech hledat doklady pro výzkum morfologie? Seminář cjbb75 1. 4. 2015 Jak lze v korpusech hledat doklady pro výzkum morfologie? Vyhledávání podle morfologické značky problém spolehlivosti desambiguace Vyhledejte v korpusu SYN2010 všechny vokativy

Více

Projekt IMPLEMENTACE ŠVP

Projekt IMPLEMENTACE ŠVP Střední škola umělecká a řemeslná Evropský sociální fond "Praha a EU: Investujeme do vaší budoucnosti" Projekt IMPLEMENTACE ŠVP Evaluace a aktualizace metodiky předmětu Německý jazyk Obory nástavbového

Více

Úvod do gramatiky. Galénos a Hippokratés na fresce v kryptě katedrály v Anagni, vybudované v roce 1255

Úvod do gramatiky. Galénos a Hippokratés na fresce v kryptě katedrály v Anagni, vybudované v roce 1255 Úvod do gramatiky Galénos a Hippokratés na fresce v kryptě katedrály v Anagni, vybudované v roce 1255 Slovní druhy Z deseti slovních druhů se v lékařské terminologii uplatňují jen některé: a) podstatná

Více

Úloha - rozpoznávání číslic

Úloha - rozpoznávání číslic Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání

Více

Sémantická interpretace

Sémantická interpretace Vysoké učení technické v Brně Fakulta informačních technologií Sémantická interpretace Moderní teoretická informatika Semestrální projekt Autor: Zdeněk Martínek Školitel: RNDr. Jitka Kreslíková, CSc. 19.

Více

Reálné gymnázium a základní škola města Prostějova Školní vzdělávací program pro ZV Ruku v ruce

Reálné gymnázium a základní škola města Prostějova Školní vzdělávací program pro ZV Ruku v ruce 1 JAZYK A JAZYKOVÁ KOMUNIKACE UČEBNÍ OSNOVY 1. 2 Cvičení z českého jazyka Cvičení z českého jazyka 7. ročník 1 hodina 8. ročník 1 hodina 9. ročník 1 hodina Charakteristika Žáci si tento předmět vybírají

Více

ŠVP Gymnázium Ostrava-Zábřeh. 4.8.20. Latina

ŠVP Gymnázium Ostrava-Zábřeh. 4.8.20. Latina 4.8.20. Latina A) Obsahové, časové a organizační vymezení předmětu: Důležitost a význam studia latinského jazyka dokazuje nejen jeho několikasetletá tradice. I v dnešní době má tento doplňující vzdělávací

Více

http: //pravopisne.cz/2014/11/test-podstatna-jmena-konkretni-a-abstraktni-11/

http: //pravopisne.cz/2014/11/test-podstatna-jmena-konkretni-a-abstraktni-11/ STAVBA SLOVA http://pravopisne.cz/2015/02/test-skladba-slova-12/ http://pravopisne.cz/2014/03/test-hledani-korenu-slov/ Synonyma, antonyma, homonyma http://pravopisne.cz/201 5/03/urcovani-synonym-2-pravoxeso-8/

Více

1 Substantiva. 2 Adjektiva. Obsah. Lekce Obsah Cvičení

1 Substantiva. 2 Adjektiva. Obsah. Lekce Obsah Cvičení Obsah Úvod. Substantiva. Adjektiva. Personalia, posesiva. Demonstrativa. Interogativa, relativa 0. Indefinita, negativa. Numeralia 0. Verba prézentní tvary. Verba préteritum 0. Verba aspekt. Verba futurum.

Více

Příloha č. 13 ČESKÝ JAZYK JAZYKOVÁ VÝCHOVA

Příloha č. 13 ČESKÝ JAZYK JAZYKOVÁ VÝCHOVA Pozná slova vyjmenovaná a slova příbuzná. Aplikuje pravopis, používá přehled. Umí zařadit slova ke vzoru Zná základní pravidlo shody. Určí pád, číslo, rod, vzor u podstatných jmen. Určí osobu, číslo, způsob,

Více

Český jazyk v 5. ročníku

Český jazyk v 5. ročníku Český jazyk v 5. ročníku září Jazyková Při hlasitém čtení vhodně využívá modulace souvislé řeči a různá zabarvení hlasu. Po tichém čtení samostatně reprodukuje text. Odliší podstatné a okrajové informace,

Více

Autor: Jan Hošek

Autor: Jan Hošek Úvod STC Závěr Autor: Jan Hošek Školitel: RNDr. Radim Řehůřek Fakulta jaderná a fyzikálně inženýrzká České vysoké učení technické v Praze 25. 5. 2009 Osnova Úvod STC Závěr 1 Úvod Motivace Ukázka technologie

Více

Roční úvodní kurs českého jazyka pro nově příchozí žáky - cizince

Roční úvodní kurs českého jazyka pro nově příchozí žáky - cizince Roční úvodní kurs českého jazyka pro nově příchozí žáky - cizince Cíl kursu: 1/rychlé osvojení češtiny na komunikační úrovni - rozvoj slovní zásoby 2/ pochopení základních pravidel systému jazyka druhy

Více

Předmět: Český jazyk a literatura

Předmět: Český jazyk a literatura 21 sestaví osnovu vyprávění a na jejím základě vytváří krátký mluvený nebo písemný projev s dodržením časové posloupnosti 30 porovnává významy slov, zvláště slova stejného nebo podobného významu a slova

Více

Všestranný jazykový rozbor (VJR)

Všestranný jazykový rozbor (VJR) Všestranný jazykový rozbor (VJR) VJR by měl tvořit součást téměř každé vyučovací hodiny a můžeme jej zařadit do kterékoli její části. Nejčastěji se používá při opakovaní a vyvozování nového učiva. Pokud

Více

Korpusová lingvistika a počítačové zpracování přirozeného jazyka

Korpusová lingvistika a počítačové zpracování přirozeného jazyka Korpusová lingvistika a počítačové zpracování přirozeného jazyka Vladimír Petkevič & Alexandr Rosen Ústav teoretické a komputační lingvistiky Filozofické fakulty Univerzity Karlovy v Praze Korpusový seminář

Více

Ontologie. Otakar Trunda

Ontologie. Otakar Trunda Ontologie Otakar Trunda Definice Mnoho různých definic: Formální specifikace sdílené konceptualizace Hierarchicky strukturovaná množina termínů popisujících určitou věcnou oblast Strukturovaná slovní zásoba

Více

Nové orgány na postupu

Nové orgány na postupu Nové orgány na postupu Pěstování celých orgánů z kmenových buněk je v současnosti oblíbené. Základní postup, který biologové používají, je vesměs podobný. Aby se kmenová buňka změnila ve správný buněčný

Více

Český jazyk Název Ročník Autor

Český jazyk Název Ročník Autor Pomůcka - Slabiky - foto 1. Pomůcka Psací tvary písmen 1. PL - Samohlásky 1. PL Slabiky - slova 1. PL - Souhlásky 1. PL Slova - věty 1. PL Souhlásky m, l, p 1. PL Tvoření slov 1. PL Souhlásky s, j, t 1.

Více

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13. Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy

Více

NLP & strojové učení

NLP & strojové učení NLP & strojové učení Miloslav Konopík 2. dubna 2013 1 Úvodní informace 2 Jak na to? Miloslav Konopík () NLP & strojové učení 2. dubna 2013 1 / 13 Co je to NLP? NLP = Natural Language Processing (zpracování

Více

Gramatické rozbory češtiny Výklad a cvičení s řešeními. Robert Adam a kol. Recenzovaly: PhDr. Jasňa Pacovská, CSc. PhDr. Jana Bílková, Ph.D.

Gramatické rozbory češtiny Výklad a cvičení s řešeními. Robert Adam a kol. Recenzovaly: PhDr. Jasňa Pacovská, CSc. PhDr. Jana Bílková, Ph.D. U k á z k a k n i h y z i n t e r n e t o v é h o k n i h k u p e c t v í w w w. k o s m a s. c z, U I D : K O S 2 3 8 1 5 5 Gramatické rozbory češtiny Výklad a cvičení s řešeními Robert Adam a kol. Recenzovaly:

Více

RVP ŠVP UČIVO - rozlišuje a příklady v textu dokládá nejdůležitější způsoby obohacování slovní zásoby a zásady tvoření českých slov

RVP ŠVP UČIVO - rozlišuje a příklady v textu dokládá nejdůležitější způsoby obohacování slovní zásoby a zásady tvoření českých slov Dodatek č.17 PŘEDMĚT: ČESKÝ JAZYK A LITERATURA ROČNÍK: 8. ročník ČESKÝ JAZYK - rozlišuje a příklady v textu dokládá nejdůležitější způsoby obohacování slovní zásoby a zásady tvoření českých slov - rozlišuje

Více

ZŠ ÚnO, Bratří Čapků 1332

ZŠ ÚnO, Bratří Čapků 1332 TS Český jazyk 2 (Jazykové rozbory) Terasoft Větné rozbory určování větných členů ve větě, chybné odpovědi jsou vypsány s uvedením správného řešení určování větných členů ve větě, při správné odpovědi

Více

Dynamické programování

Dynamické programování Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

Více

5 Orientované grafy, Toky v sítích

5 Orientované grafy, Toky v sítích Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost

Více

Ročník: 4. Časová dotace: 7 hodin týdně učivo, téma očekávané výstupy klíčové kompetence, mezipředmětové vazby

Ročník: 4. Časová dotace: 7 hodin týdně učivo, téma očekávané výstupy klíčové kompetence, mezipředmětové vazby Ročník: 4. Časová dotace: 7 hodin týdně Komunikační a slohová Čtení a naslouchání čtení jako zdroj informací aktivní naslouchání s otázkami Žák čte s porozuměním přiměřeně náročné texty potichu i nahlas.

Více

Lingvistická terminologie

Lingvistická terminologie Počítačové zpracování přirozeného jazyka Lingvistická terminologie Daniel Zeman http://ufal.mff.cuni.cz/course/popj1/ Slovní druhy slovní druh part of speech podstatné jméno substantivum noun přídavné

Více

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 2/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 4/41 Automaty a gramatiky(bi-aag) 5. Překladové konečné

Více

Slovní druhy. Ohebné i neohebné

Slovní druhy. Ohebné i neohebné Slovní druhy Ohebné i neohebné Slovní druhy 1. Podstatná jména 2. Přídavná jména 3. Zájmena 4. Číslovky 5. Slovesa 6. Příslovce 7. Předložky 8. Spojky 9. Částice 10. Citoslovce Podstatná jména názvy osob,

Více

Referát z předmětu Teoretická informatika

Referát z předmětu Teoretická informatika Referát z předmětu Téma: Algoritmus Coke-Younger-Kasami pro rozpoznávání bezkontextových jazyků VŠB-TU Ostrava:Fakulta Elektrotechniky a informatiky jaro 2011 Martin Dočkal doc068 dockal.martin@gmail.com

Více

NÁZEV TŘÍDA ANOTACE PLNĚNÉ VÝSTUPY KLÍČOVÁ SLOVA

NÁZEV TŘÍDA ANOTACE PLNĚNÉ VÝSTUPY KLÍČOVÁ SLOVA ČÍSLO SADY III/2 AUTOR/KA Radka Zborníková ČJL - Tvarosloví Slovní druhy číselné označení DUM NÁZEV TŘÍDA ANOTACE PLNĚNÉ VÝSTUPY KLÍČOVÁ SLOVA FORMÁT (pdf,, ) 1. Slovní druhy - přehled, opakování učiva

Více

Tabulkový procesor. Základní rysy

Tabulkový procesor. Základní rysy Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních

Více

III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT. Žák se seznámí se základními pojmy morfologie tvarosloví, ohebnost, význam slov.

III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT. Žák se seznámí se základními pojmy morfologie tvarosloví, ohebnost, význam slov. Název školy: Číslo a název projektu: Číslo a název šablony klíčové aktivity: Označení materiálu: Typ materiálu: Předmět, ročník, obor: Číslo a název sady: Téma: Jméno a příjmení autora: STŘEDNÍ ODBORNÁ

Více

Vzdělávací oblast: Jazyk a jazyková komunikace Vyučovací předmět: Český jazyk Ročník: 7. Průřezová témata Mezipředmětové vztahy.

Vzdělávací oblast: Jazyk a jazyková komunikace Vyučovací předmět: Český jazyk Ročník: 7. Průřezová témata Mezipředmětové vztahy. KOMUKIKAČNÍ A SLOHOVÁ VÝCHOVA Žák - vypravuje ústně i písemně scény z filmu či ukázky z knih, využívá jazykových prostředků vhodných k oživení vypravování,; - popisuje ústně i písemně umělecké dílo, výrobek,

Více

Aktuální změny v didaktickém testu z češtiny 2015

Aktuální změny v didaktickém testu z češtiny 2015 Aktuální změny v didaktickém testu z češtiny 2015 PhDr. Dana Brdková Lektorka Bankovní akademie a VŠFS Pro použití v rámci projektu ematurity Jak je sestaven didaktický test? Didaktický test obsahuje 10

Více

LISTOPAD Úvod do nauky o tvoření slov, PROSINEC Psaní velkých písmen

LISTOPAD Úvod do nauky o tvoření slov, PROSINEC Psaní velkých písmen (UČEBNÍ MATERIÁLY Český jazyk a stylistika Sexta A, Sexta B Libuše Kratochvílová 2 hodiny týdně Český jazyk pro 2.roč. G SPN 2005 / nov. mat. / Český jazyk pro stř. šk. SPN 2003 a další Český jazyk v kostce

Více

Kurz č PhDr. Hana Peterková. Skladba. Souvětí podřadné Souvětí souřadné

Kurz č PhDr. Hana Peterková. Skladba. Souvětí podřadné Souvětí souřadné Kurz č. 5 19. 03. 2015 PhDr. Hana Peterková Skladba Souvětí podřadné Souvětí souřadné Souvětí větný celek, který vyjadřuje složitější myšlenku nebo více myšlenek; skládá se ze dvou nebo více vět jednoduchých;

Více

Implementace LL(1) překladů

Implementace LL(1) překladů Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku

Více

Vzdělávací oblast: Jazyk a jazyková komunikace Vyučovací předmět: Anglický jazyk Ročník: 3.. Průřezová témata Mezipředmětové vztahy.

Vzdělávací oblast: Jazyk a jazyková komunikace Vyučovací předmět: Anglický jazyk Ročník: 3.. Průřezová témata Mezipředmětové vztahy. OSV - rozvoj individuálních dovedností pro kooperaci (seberegulace v situaci nesouhlasu, odporu apod., dovednost odstoupit od vlastního nápadu, dovednost navazovat na druhé a rozvíjet vlastní linku jejich

Více

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi

Více

Tematický plán pro školní rok 2015/16 Předmět: Český jazyk Vyučující: Mgr. Iveta Jedličková Týdenní dotace hodin: 8 hodin Ročník: pátý

Tematický plán pro školní rok 2015/16 Předmět: Český jazyk Vyučující: Mgr. Iveta Jedličková Týdenní dotace hodin: 8 hodin Ročník: pátý ČASOVÉ OBDOBÍ Září Říjen KONKRÉTNÍ VÝSTUPY KONKRÉTNÍ UČIVO PRŮŘEZOVÁ TÉMATA Umí vyznačit ve slově kořen, předponu, příponu, koncovku Umí vytvořit tvar slova a slovo příbuzné Umí odvodit slova pomocí přípony

Více

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Úvod do Prologu Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Warren (Warren Abstract Machine) implementace

Více

TEMATICKÝ PLÁN. Literatura: Český jazyk - Z. Krausová, R. Teršová, Fraus 2012, pracovní sešit Český jazyk pro 6. ročník - V.

TEMATICKÝ PLÁN. Literatura: Český jazyk - Z. Krausová, R. Teršová, Fraus 2012, pracovní sešit Český jazyk pro 6. ročník - V. TEMATICKÝ PLÁN Předmět: ČESKÝ JAZYK A LITERATURA Český jazyk - Z. Krausová, R. Teršová, Fraus 2012, pracovní sešit Český jazyk pro 6. ročník - V. Styblík, SPN 1997 UČIVO - MLUVNICE 1. Opakování látky z

Více

Výroková a predikátová logika - V

Výroková a predikátová logika - V Výroková a predikátová logika - V Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - V ZS 2015/2016 1 / 21 Dokazovací systémy VL Hilbertovský kalkul Hilbertovský

Více

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Prostá regresní a korelační analýza 1 1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Problematika závislosti V podstatě lze rozlišovat mezi závislostí nepodstatnou, čili náhodnou

Více

TEMATICKÝ PLÁN 6. ročník

TEMATICKÝ PLÁN 6. ročník TEMATICKÝ PLÁN 6. ročník Předmět: ČESKÝ JAZYK A LITERATURA Český jazyk - Z. Krausová, R. Teršová, Fraus 2012, pracovní sešit Český jazyk pro 6. ročník - V. Styblík, SPN 1997 UČIVO - MLUVNICE 1. Opakování

Více

Strukturální rozpoznávání

Strukturální rozpoznávání Strukturální rozpoznávání 1 Strukturální rozpoznávání obsah hierarchický strukturální popis systém strukturálního rozpoznávání teorie gramatik volba popisu výběr primitiv výběr gramatiky syntaktická analýza

Více

IB112 Základy matematiky

IB112 Základy matematiky IB112 Základy matematiky Řešení soustavy lineárních rovnic, matice, vektory Jan Strejček IB112 Základy matematiky: Řešení soustavy lineárních rovnic, matice, vektory 2/53 Obsah Soustava lineárních rovnic

Více

4.9.1. Základy latiny II

4.9.1. Základy latiny II 4.9.1. Základy latiny II Základy latiny jsou dvouletý volitelný předmět, jehož hlavním cílem je poskytnout žákům základní orientaci v systému latinské gramatiky v rozsahu středoškolského učiva a připravit

Více

ČESKÝ JAZYK 5. TŘÍDA

ČESKÝ JAZYK 5. TŘÍDA A) Mluvnice 1 - Obecné poučení o jazyce a abeceda a písmo b jak se lidé dorozumívají, funkce řeči c rozlišení prostředků mluveného a psaného projevu 2 - Zvuková stránka jazyka a slabiky a slabikování b

Více

Termíny z ČJ (pozor, obsahuje chyby)

Termíny z ČJ (pozor, obsahuje chyby) Id termín definice 1 fonologie zkoumá zvuky dle jejich schopnosti rozlišit významy (hlásky, přízvuk, tón, intonace) 2 fonetika zkoumá, jak se hlásky / zvuky tvoří 3 samohlásky hlásky vycházející rovnou

Více

Český jazyk a literatura

Český jazyk a literatura Vyučovací předmět: Období ročník: Učební texty: Český jazyk a literatura 2. období 5. ročník Český jazyk pro 4. ročník I. část (Fortuna), Český jazyk pro 4. ročník II. část (Fortuna) Český jazyk pro 5.

Více

Počítačové zpracování češtiny. Syntaktická analýza. Daniel Zeman

Počítačové zpracování češtiny. Syntaktická analýza. Daniel Zeman Počítačové zpracování češtiny Syntaktická analýza Daniel Zeman http://ufal.mff.cuni.cz/course/popj1/ Syntaktická rovina Vztahy mezi větnými členy. Větný člen je pro nás slovo (tj. též interpunkce). Z praktických

Více

Inženýrská statistika pak představuje soubor postupů a aplikací teoretických principů v oblasti inženýrské činnosti.

Inženýrská statistika pak představuje soubor postupů a aplikací teoretických principů v oblasti inženýrské činnosti. Přednáška č. 1 Úvod do statistiky a počtu pravděpodobnosti Statistika Statistika je věda a postup jak rozvíjet lidské znalosti použitím empirických dat. Je založena na matematické statistice, která je

Více

Jazyk a jazyková komunikace Seminář z českého jazyka 2. 7.

Jazyk a jazyková komunikace Seminář z českého jazyka 2. 7. VZDĚLÁVACÍ BLAT: Vzdělávací obor: tupeň: Ročník: Jazyk a jazyková komunikace eminář z českého jazyka 2. 7. čekávané výstupy omp e t e n c e čivo Mezipředmětové vztahy oznámky určuje věcné významy slov

Více

Modely Herbrandovské interpretace

Modely Herbrandovské interpretace Modely Herbrandovské interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 8 1 Uvedli jsme termové interpretace a termové modely pro logické programy a také nejmenší

Více

Základy umělé inteligence

Základy umělé inteligence Základy umělé inteligence Automatické řešení úloh Základy umělé inteligence - prohledávání. Vlasta Radová, ZČU, katedra kybernetiky 1 Formalizace úlohy UI chápe řešení úloh jako proces hledání řešení v

Více

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto: IB102 Automaty, gramatiky a složitost, 6. 10. 2014 1/29 Regulární výrazy Definice 2.58. Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto: 1 ε, a a pro každé a

Více