410 likes | 565 Vues
Počítačové zpracování přirozeného jazyka. Daniel Zeman http:// ufa l.mff.cuni.cz/course/popj1/ zeman@ufal.mff.cuni.cz. Předpoklady. Žádné (téměř) Pouze: Základní znalost programování v některém programovacím jazyku Středoškolské znalosti mluvnice češtiny Pasivní znalost angličtiny výhodou.
E N D
Počítačové zpracování přirozeného jazyka Daniel Zeman http://ufal.mff.cuni.cz/course/popj1/zeman@ufal.mff.cuni.cz
Předpoklady • Žádné (téměř) • Pouze: • Základní znalost programování v některém programovacím jazyku • Středoškolské znalosti mluvnice češtiny • Pasivní znalost angličtiny výhodou http://ufal.mff.cuni.cz/course/popj1
Zápočet • Zápočet za domácí úkoly (Perl, Python, Java…) • Počet odměněných řešitelů jedné úlohy může být omezen! • Součástí úkolu je jeho prezentace před ostatními v prosinci. http://ufal.mff.cuni.cz/course/popj1
Přehled aplikací a problémů počítačové lingvistiky 1 • Vyhledat slovo v textu ve všech tvarech (morfologická analýza). http://ufal.mff.cuni.cz/course/popj1
Vyhledání slova ve všech tvarech • Lze nechat vyhledat jen část slova, ale: • Internetové vyhledávače mají v indexu slova, ne jejich části. • Ovšem mnohé z nich už morfologii zvládají (Google). • Povolíme-li hledání částí, dostaneme i texty, které nás nezajímají: hledáme hodit, zadáme hod, dostaneme nejen hodit, hodím, hodil, nejen hod, hody, hodování, nejen přehodit, náhoda, přehodnotit, ale dokonce i chodit nebo schody. • Navíc nedostaneme hoď, hoďme, hoďte — to bychom museli hledat jenom ho, a to by bylo vůbec katastrofální. Zadat dotazy pro každý tvar zvlášť nejde, jsou jich desítky až stovky. • Některá slova mění i kmen (stůl – stolu; brát – beru – bral). http://ufal.mff.cuni.cz/course/popj1
Přehled aplikací a problémů počítačové lingvistiky 1 • Vyhledat slovo v textu ve všech tvarech (morfologická analýza). • Kontrola pravopisu (spell checking). Inteligentní pro češtinu: např. kontrola tvrdého a měkkého i v příčestí minulém. • Kontrola gramatiky (grammar checking) a stylu. http://ufal.mff.cuni.cz/course/popj1
Kontrola pravopisu • Prohledávání slovníku je jednoduché, jediná lingvistika je ten slovník. • Problém je rozumně vybrat podobná slova, která nabídneme jako náhradu. Jak měřit podobnost slov? Odhadnout podle kontextu, které z nich uživatel myslel? Gramatika může na daném místě požadovat sloveso, význam ostatních slov zase může napovědět, které sloveso je nejpravděpodobnější. • V češtině je prohledávání slovníku málo účinné, existuje řada koncovek, ale jen některé jsou možné v dané větě, chyby v tvrdém a měkkém i. Viz též kontrolu gramatiky. • Co zatím chybí: přepínač stylu (rozhodnu-li se pro koncovky typu –ej, je to jiná varianta jazyka a mělo by být vyžadováno držení jedné linie). • Zákaz dvou stejných slov za sebou: obecně ano, ale jsou výjimky, které by mohla rozpoznat kontrola gramatiky: Nesnese se se sestrou, snědl jí tu tu buchtu a teď jí jí její koláč. http://ufal.mff.cuni.cz/course/popj1
Kontrola gramatiky a stylu • Ideální stav: kompletní syntaktická analýza vztahů ve větě. To je ale těžké. • Současná kontrola gramatiky v angličtině ve Wordu v sobě má i kontrolu stylu (bouří se proti dlouhým větám apod.) • Univerzální úkoly: velké písmeno na začátku věty, zakázat dvě mezery za sebou apod. • Úkoly v češtině: shoda podmětu s přísudkem (tvrdé a měkké i), shoda přívlastků s rozvíjenými podstatnými jmény, čárky kolem vnořených klauzí, interpunkce v uvozovkách. http://ufal.mff.cuni.cz/course/popj1
Přehled aplikací a problémů počítačové lingvistiky 1 • Vyhledat slovo v textu ve všech tvarech (morfologická analýza). • Kontrola pravopisu (spell checking). Inteligentní pro češtinu: např. kontrola tvrdého a měkkého i v příčestí minulém. • Kontrola gramatiky (grammar checking) a stylu. • Háčkování: vrátit diakritiku do textu, ze kterého byla odstraněna. Obdobný úkol: doplnit samohlásky do arabského nebo hebrejského textu. http://ufal.mff.cuni.cz/course/popj1
Háčkování • Háčkování a doplňování samohlásek, doplňování hranic slov (Asie) • Pouhé hledání ve slovníku nestačí, jak ukazují následující příklady: horka cokolada (horká / hořká), mala (malá / mála), udelana (udělána / udělaná), uspi (uspi / uspí), mami (mami / mámí), zadejte uhel (zadejte úhel / žádejte uhel), cesky (česky / český / Češky / čéšky), rad (rad / raď / rád / řad / řaď / řád) • Stejné problémy mají v řadě dalších jazyků, někde dokonce občas znaménka vynechávají, aniž by je k tomu tlačila neschopnost techniky (francouzština, rumunština). http://ufal.mff.cuni.cz/course/popj1
Problémy podobné háčkování • Rozlišování malých a velkých písmen • Ve statistickém strojovém překladu bývá výhodné převést vstupní text na malá písmena. • Pak je ale nutné na výstupu odhadnout, kam patří velké písmeno. • T9 v mobilech • Např. „852536“ může znamenat „tlakem“, „vlakem“, „vláken“, „vlčkem“. http://ufal.mff.cuni.cz/course/popj1
Doplňování krátkých samohlásek v arabštině a hebrejštině • Krátké samohlásky v semitských jazycích jsou podobný problém jako naše háčkování. • V dialektech se navíc samohlásky (ale i souhlásky) liší, přestože zápis arabským písmem je jen ten jeden! • جيب لي ثلاثة قحوة • HWHhQ HTh’LTh YL BYJ • jyb ly vlAvp qHwp(Buckwalterův přepis) • Jīb lī thlīthah qaħwah.(spisovná arabština) • žib lí tléta dil qahwa (mar) • žib lí thlétha qahwa (tun) • gib lí taláta ahwa (egy) • žib lí tléte ahwe (syr) • džib lí theláthe gahwe (irq) • přineste mi tři kávy (čsk) http://ufal.mff.cuni.cz/course/popj1
Arabské samohlásky: nejednoznačnosti • Nejednoznačnosti: nejen v dialektech, ale i v mluvnici. • ﺏﺎﺘﻛ = kitáb (kniha) • ﺐﺘﻛ = katab (psát), kutub (knihy) • ﺖﺒﺘﻛ = katabt (napsal jsem, napsala jsem, napsal jsi), katabti (napsala jsi), katabit (napsala) • Arabština umí zapisovat samohlásky pomocí diakritiky, ale Arabové to nedělají, vyskytuje se snad pouze v Koránu. • Zapisují se dlouhé samohlásky (Á = ’, Í = Y, Ú = W), proto cizí slova mívají všechny samohlásky dlouhé, aby Arab poznal, jak se vyslovují (Československo = Tšíkúslúfákijá). • Totéž platí pro hebrejštinu: v tóře bývají samohlásky zapsány, aby židé roztroušení po světě a hovořící jinými jazyky nezapomněli výslovnost, ale po Izraeli nic takového nenajdeme. http://ufal.mff.cuni.cz/course/popj1
Segmentace • Doplňování hranic slov (asijské jazyky, zejména čínština). I to je trochu analogie k doplňování samohlásek či diakritiky. • Číňané nemají pojem slova, ale pro počítačové zpracování jazyka se tento pojem hodí. Znak (slabika) není vždy ideální ekvivalent. • 这个多少钱? • zhè ge duō shǎo qián ? (če ke tuo šao čchien?) • tenhle kus mnoho málo peníze ? • Zhège duōshǎo qián? • Tohle kolik peněz? ... Kolik to stojí? http://ufal.mff.cuni.cz/course/popj1
Přehled aplikací a problémů počítačové lingvistiky 1 • Vyhledat slovo v textu ve všech tvarech (morfologická analýza). • Kontrola pravopisu (spell checking). Inteligentní pro češtinu: např. kontrola tvrdého a měkkého i v příčestí minulém. • Kontrola gramatiky (grammar checking) a stylu. • Háčkování: vrátit diakritiku do textu, ze kterého byla odstraněna. Obdobný úkol: doplnit samohlásky do arabského nebo hebrejského textu. • Rozpoznávání naskenovaného písma (optical character recognition, OCR). • Rozpoznávání řeči (speech recognition). Diktát se vrací ve smartphonech. Vyhledávání v nahrávkách (speech Google?) • Strojový překlad z jednoho (přirozeného) jazyka do druhého. • Generování textů (např. manuálů) v různých jazycích. http://ufal.mff.cuni.cz/course/popj1
Přehled aplikací a problémů počítačové lingvistiky 2 • Rozpoznat (převažující) jazyk, ve kterém je určitý dokument. • Nalézt relevantní dokumenty v textové databázi (Google!). Nebo třeba: rozpoznat spam v mailu. • Vytáhnout informace ze zpráv nebo článků s jistým tématem (např. všechny obchody s akciemi v daný den) • Sumarizace textů (např. vytvořit třístránkové shrnutí tisícistránkového dokumentu). • Dotazy na databázi v přirozeném jazyce (např. rezervace letenek). • Automatická komunikace se zákazníkem po telefonu: 800 899 998. • Hlasové řízení stroje. Generování řeči strojem. • Výukové systémy interagující se studentem, obecné systémy pro řešení konkrétních problémů. http://ufal.mff.cuni.cz/course/popj1
Dílčí problémy • Tokenizace (hranice slov a vět) • Morfologická analýza (slovník + ohýbání) • Zjednoznačňování, značkování (tagging), lemmatizace • Rozlišení významu slov (word sense disambiguation) • Zařazení slov do tříd podle použití (clustering) • Synchronizace různojazyčných verzí téhož, párování vět a odst. • Syntaktická analýza (parsing). • Hledání základních jmenných frází (base noun phrase chunking) • Zavěšování předložkových frází (prepositional phrase (PP) attachment) • Slovesné rámce • Hloubková analýza • Základ a ohnisko (topic and focus), hloubkový slovosled. • Doplnění chybějících členů • Koreference • Analýza diskurzu, anafora. http://ufal.mff.cuni.cz/course/popj1
Přišel Přišel Přišel Přišel . . . . pán pán pán pán se se odnaproti odnaproti ten ten ten ten se se sousedem sousedem sousedem sousedem odnaproti odnaproti Předložkové skupiny • „Přišel ten pán se sousedem odnaproti.“ http://ufal.mff.cuni.cz/course/popj1
Předložkové skupiny • Anglický příklad: • I saw the man with a telescope. • Viděl jsem ho dalekohledem. • Viděl jsem ho s dalekohledem. http://ufal.mff.cuni.cz/course/popj1
Předložkové skupiny • V období, kdy prudce poklesl zájemna domácím trhu, dokázala továrna část výroby exportovat. http://ufal.mff.cuni.cz/course/popj1
Předložkové skupiny a syntaktické nejednoznačnosti • V letech 1991 – 1993 jsem absolvovala kurzy řízení a marketingu na Collège Bartv kanadském Québecu. • absolvovala na Collège Bart • kurzy na Collège Bart • řízení a marketingu na Collège Bart • marketingu na Collège Bart • Collège Bart v Québecu • marketingu v Québecu... http://ufal.mff.cuni.cz/course/popj1
Předložkové skupiny a syntaktické nejednoznačnosti • „říjnové jednání OSN o klimatických změnách v Kodani“ (Události ČT, 27.2.2009) • Otázka: Došlo ke klimatickým změnám v Kodani? http://ufal.mff.cuni.cz/course/popj1
Osnova • Programovací jazyk PERL • Korpusy, procházení webu, rozpoznávání jazyků • Roviny popisu jazyka • Vyhodnocování úspěšnosti • Slovníky a morfologická analýza • Odstraňování nejednoznačností, statistické metody • Syntaktická analýza (metody založené na pravidlech) • Syntaktická analýza (statistické metody, syntaktické korpusy – treebanky) http://ufal.mff.cuni.cz/course/popj1
Literatura • James Allen: Natural Language Understanding. Benjamin/Cummings 1994, ISBN 0-8053-0334-0 • Adolf Erhart: Základy jazykovědy. Státní pedagogické nakladatelství; Praha, 1990 • Christopher D. Manning, Hinrich Schütze: Foundations of Statistical Natural Language Processing. The MIT Press 1999, ISBN 0-26213-360-1 • Mé prezentace a další odkazy na webu. http://ufal.mff.cuni.cz/course/popj1
Počítačové zpracování přirozeného jazyka Zápočtové úlohy Daniel Zeman http://ufal.mff.cuni.cz/~zeman/
Zápočtové úlohy • Rezervace prostřednictvím webového formuláře: http://quest.ms.mff.cuni.cz/cgi-bin/zeman/zapoctaky/rezervace_ukolu.pl • Podrobná zadání rovněž na webu, zde jen nástin a vysvětlení některých pojmů. • Součástí zadání jsou někdy data v konkrétním jazyce, ne vždy českém. http://ufal.mff.cuni.cz/course/popj1
Proč cizí jazyky? • Řada úkolů je zadána pro konkrétní cizí jazyk, často takový, který nejspíš neovládáte. • Větší pestrost úkolů: dva lidé nedělají na stejných datech. • Uvědomte si, že k práci s daty v cizím jazyce nemusíte tento jazyk umět! • U analýzy tvarosloví či větných vztahů je ovšem výhodou, pokud rozumíte chybám, který váš program dělá. • U některých úloh přímo navrhujete jazyková pravidla, pak samozřejmě pracujete s češtinou nebo jiným jazykem, který umíte. • Naopak, vaše programy by měly být v maximální možné míře jazykově nezávislé. http://ufal.mff.cuni.cz/course/popj1
Třídy úloh • Pouze vlastní výtvor v Perlu • Jeden nebo více skriptů v Perlu • Práce s cizím softwarem • Stáhnout a rozchodit • Připsat vlastní skripty v Perlu jako interface, pro převod datových formátů, analýzu výsledků apod. • Gramatika apod. • Tvorba jazykových pravidel, s jejichž pomocí cizí software analyzuje jazyk • Vlastní skripty v Perlu mohou být potřeba např. pro extrakci slovníku z textového korpusu http://ufal.mff.cuni.cz/course/popj1
Práce s cizím softwarem • Část úloh bude spočívat ve stažení cizího softwaru a experimentování s ním. • Méně vlastního programování • Typicky skripty pro konverzi dat do správného formátu, pro rozbor výsledků a jako obálka na volání cizího programu • Možnost zkusit věci, které byste sami napsat nestihli. • Více nároků na architekturu, kterou máte k dispozici. http://ufal.mff.cuni.cz/course/popj1
Práce s cizím softwarem • PC-Kimmo (morfologická analýza) • Umí pracovat se slovníkem a s pravidly tvoření slov pro daný jazyk. Vy musíte: • Vytvořit pravidla • Poloautomaticky vytáhnout slovník z korpusu • Taggery („značkovače“) • Na základě kontextu přiřadit slovu správné lemma a značku. • Nejdříve naučit na trénovacích datech • Parsery (větný rozbor) • Identifikovat ve větě fráze nebo závislosti. • Nejdříve naučit na trénovacích datech. http://ufal.mff.cuni.cz/course/popj1
Morfologie: taggery • Úkol taggeru: přiřadit slovu morfologickou značku (slovní druh, rod, číslo, pád…) • Může a nemusí předcházet slovníková morfologická analýza. • K dispozici morfologicky anotovaný korpus. • Brillův tagger (Eric Brill) • TreeTagger (Helmut Schmid) • Featurama (Miroslav Spousta) http://ufal.mff.cuni.cz/course/popj1
Syntax: parsery • Úkol parseru: přiřadit větě stromovou strukturu (vztahy mezi větnými členy). • Typicky předchází morfologická analýza a tagging. • K dispozici morfologicky a syntakticky anotovaný korpus (treebank). • Malt parser (Joakim Nivre) • MST parser (Ryan McDonald) • Charniakův parser (Eugene Charniak) • Collinsův parser (Michael Collins, Dan Bikel) • Stanfordský parser (Chris Manning) • DOP (Rens Bod) http://ufal.mff.cuni.cz/course/popj1
Další • C4.5 (rozhodovací stromy, později) • Giza++ (párování paralelních korpusů pro strojový překlad) • Moses (strojový překladač) • Joshua (strojový překladač) http://ufal.mff.cuni.cz/course/popj1
Vlastní tvorba • Pavouk (stahování korpusu z webu) • Zahrnuje rozpoznávání jazyků, analýzu a odstraňování HTML. • Minoritní jazyky (varianta pavouka) • Třídění jazyků • Hranice slov a vět • Háčkování • Kontrola pravopisu • Pojmenované entity • Segmentace slov na morfémy • Chart parser • Morfologická gramatika pro chart parser • Jednoduchý statistický tagger • Dobývání informací z webu http://ufal.mff.cuni.cz/course/popj1
Pavouk a rozpoznávání jazyků • Stahování jazykových dat z webu • Zahrnuje rozpoznávání jazyků, analýzu a odstraňování HTML. • Varianta: Minoritní jazyky • Robot musí komunikovat s vyhledávačem. • Třídění jazyků • Máme spoustu dokumentů v různých jazycích, chceme je roztřídit do složek. • Vizpzpj03-prvni_ukoly.ppt http://ufal.mff.cuni.cz/course/popj1
Dobývání informací z webu • Sledujete informace o určitých druzích zboží napříč internetovými obchody • cena, dodací lhůta, kontakt na prodejce atd. • Primitivní porozumění textu stránek (klíčová slova, regulární výrazy apod.) • Závislost na jazyku: ano (čeština) • Závislost na druhu zboží: ne! • Rozpoznávání podobných řetězců • Totéž zboží může být v různých obchodech pojmenováno různě. • K přidání nového obchodu stačí zadat jeho adresu • Nechceme nejdříve rozebírat zdrojáky jeho stránek a někam si zapisovat, že např. <div class=“cena”> obsahuje cenu zboží. http://ufal.mff.cuni.cz/course/popj1
Další jednoduché úlohy • Hranice slov a vět • Kromě tokenizace nutnost naučit se, kde větu nezalomit, i když je tam tečka. • Háčkování, T9, obnova velkých písmen • Jednoduché statistické modely. • Kontrola pravopisu • Tyto úlohy lze většinou pochopit i bez znalosti látky, která bude náplní semestru. • Vizpzpj03-prvni_ukoly.ppt • Vizpzpj10a-pravopis.ppt http://ufal.mff.cuni.cz/course/popj1
Pojmenované entity • Pojmenované entity • Různé definice • Dobrá aproximace: vlastní jména • Hlavně osoby, místa, firmy, výrobky • Úkolem je naučit se automaticky rozpoznávat pojmenované entity v textu • Vizpzpj03-prvni_ukoly.ppt http://ufal.mff.cuni.cz/course/popj1
Segmentace slov na morfémy • Rozdělit slovo na předponu, kmen a příponu • Nemáme k dispozici morfologický slovník • K danému jazyku neexistuje nebo je drahý • Program dostane seznam slov a jejich četností v korpusu. • Všímá si opakujících se koncovek, předpon apod. • Situaci komplikují změny souhlásek na konci kmene (matka – matce – matčin) http://ufal.mff.cuni.cz/course/popj1
Chart parser • Úkolem parseru je rozebrat text na hierarchii složek. • Rozbor slova na morfémy, zjištění vztahu mezi aktuálním a základním tvarem slova. • Rozbor věty na větné členy (slova), zjištění vztahů mezi nimi. • Bezkontextová gramatika • Soubor přepisovacích pravidel • Chart parser • Načte bezkontextovou gramatiku a snaží se aplikovat její pravidla na analyzovaný text. • Vizpzpj08-morfologie-cfg.ppt http://ufal.mff.cuni.cz/course/popj1
Tagger • Tagger (značkovač) má pro dané slovo na základě kontextu vybrat správné lemma a značku. • Lemma = základní tvar slova (slovníkové heslo) • Značka = zakódované informace o slovním druhu, rodě, čísle, pádu atd. • Vstup: posloupnost slov, pro každé slovo množina dvojic [lemma, značka], které připouští slovník • Výstup: na základě kontextu vybraná jedna dvojice [lemma, značka], ostatní vyhodit • Metoda: Naučit se jednoduchý statistický model z korpusu, ve kterém jsou správné dvojice označené ručně. • Viz pzpj10-znackovani.ppt http://ufal.mff.cuni.cz/course/popj1