Ocena pracy
Transkrypt
Ocena pracy
POLITECHNIKA WROCAWSKA WYDZIA ELEKTRONIKI Kierunek: Specjalno±¢: Automatyka i Robotyka (AIR) Robotyka (ARR) PRACA DYPLOMOWA MAGISTERSKA Statystyczne metody rozumienia i syntezy wypowiedzi j¦zyka naturalnego Statistical methods for natural language understanding and generation Autor: Bartªomiej Fory± Prowadz¡cy prac¦: dr in». Witold Paluszy«ski Ocena pracy: WROCAW 2011 0 Przedstawiona praca prezentuje wyniki bada« statystycznych metod rozumienia oraz syntezy j¦zyka naturalnego. Autor podejmuje prób¦ wykorzystania ich do budowy systemu konwersacyjnego odpowiadaj¡cego na pytania dotycz¡ce wcze±niej przeanalizowanego tekstu. Sªowa kluczowe J¦zyk naturalny, gramatyka bezkontekstowa, n-gram, przetwarzanie j¦zyka naturalnego (NLP), rozumienie j¦zyka naturalnego (NLU), ªa«cuchy Markowa, ukryte modele Markowa (HMM), parsing, Natural Language Toolkit (NLTk). Spis tre±ci 1 Wst¦p i teza pracy 6 2 Metody przetwarzania j¦zyka naturalnego 7 2.1 Wst¦p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Korpusy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3 Statystyczne metody oznaczania . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3.1 a«cuchy Markowa . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3.2 Ukryte modele Markowa . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3.3 Praktyczne zastosowanie modeli Markowa w zadaniu oznaczania . . 12 Analiza gramatyczna wypowiedzi . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.1 Gramatyka bezkontekstowa (CFG) . . . . . . . . . . . . . . . . . . 16 2.4.2 Probabilistyczna gramatyka bezkontekstowa (PCFG) . . . . . . . . 17 2.4.3 Gramatyka oparta na atrybutach (FCFG) . . . . . . . . . . . . . . 18 2.4.4 Parsing 19 2.4 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synteza wypowiedzi w j¦zyku naturalnym . . . . . . . . . . . . . . . . . . 20 2.5.1 Gramatyka systemowa . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.5.2 Funkcjonalna gramatyka unikacyjna . . . . . . . . . . . . . . . . . 22 2.5.3 Metody statystyczne . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3 Przegl¡d oprogramowania NLP 25 3.1 Programy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2 Biblioteki procedur (toolkity) . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.1 General Architecture for Text Engineering (GATE) . . . . . . . . . 27 3.2.2 Modular Audio Recognition Framework (MARF) . . . . . . . . . . 27 3.2.3 MontyLingua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.4 Natural Language Toolkit (NLTK) . . . . . . . . . . . . . . . . . . 27 3.2.5 Unstructured Information Management Architecture (UIMA) . . . 28 3.2.6 WordNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Korpusy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3.1 American National Corpus (ANC) . . . . . . . . . . . . . . . . . . . 28 3.3.2 The British National Corpus (BNC) . . . . . . . . . . . . . . . . . 29 3.3.3 Brown Corpus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.4 Corpus of Contemporary American English (COCA) . . . . . . . . 30 3.3.5 Oxford English Dictionary (OED) . . . . . . . . . . . . . . . . . . . 30 3.3.6 Penn Treebank Corpus . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.7 TIME Magazine Corpus . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3 2 SPIS TRECI 4 Wykorzystanie NLTK do bada« metod statystycznych 4.1 4.2 4.3 4.4 4.5 Podstawy korzystania z Pythona i NLTK . . . . . . Lista moduªów zawartych w NLTK . . . . . . . . . Badanie metod oznaczania cz¦±ci mowy . . . . . . . 4.3.1 Dane ucz¡ce i testowe . . . . . . . . . . . . 4.3.2 Przykªad 01 - Default Tagger . . . . . . . . 4.3.3 Przykªad 02 - Regexp Tagger . . . . . . . . 4.3.4 Przykªad 03 - Unigram Tagger . . . . . . . . 4.3.5 Przykªad 04 - Bigram Tagger . . . . . . . . 4.3.6 Przykªad 05 - Trigram Tagger . . . . . . . . 4.3.7 Przykªad 06 - Brill Tagger . . . . . . . . . . 4.3.8 Przykªad 07 - HMM Tagger . . . . . . . . . 4.3.9 Podsumowanie . . . . . . . . . . . . . . . . Badanie metod segmentacji tekstu . . . . . . . . . . 4.4.1 Wst¦p . . . . . . . . . . . . . . . . . . . . . 4.4.2 Przykªad 01 - Regexp Chunker . . . . . . . 4.4.3 Przykªad 02 - Unigram Chunker . . . . . . . 4.4.4 Przykªad 03 - Bigram Chunker . . . . . . . 4.4.5 Podsumowanie . . . . . . . . . . . . . . . . Analiza gramatyczna wypowiedzi . . . . . . . . . . 4.5.1 Gramatyka bezkontekstowa . . . . . . . . . 4.5.2 Probabilistyczna gramatyka bezkontekstowa 4.5.3 Gramatyka oparta na atrybutach . . . . . . 5 EAK - eksperymentalny agent konwersacyjny 5.1 5.2 5.3 5.4 5.5 5.6 5.7 Schemat . . . . . . . . . . . Wymagane cechy . . . . . . Wybór narz¦dzi realizacji . . U»ytkowanie . . . . . . . . . Ograniczenia . . . . . . . . Wyniki eksperymentów . . . 5.6.1 Przykªad dziaªania 1 5.6.2 Przykªad dziaªania 2 5.6.3 Przykªad dziaªania 3 5.6.4 Przykªad dziaªania 4 5.6.5 Przykªad dziaªania 5 5.6.6 Przykªad dziaªania 6 5.6.7 Podsumowanie . . . Ocena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 32 35 35 35 36 36 37 39 41 42 44 45 46 46 46 47 48 49 49 49 50 51 54 54 54 55 55 55 56 56 58 59 60 62 63 66 67 6 Podsumowanie i werykacja postawionej tezy 68 A wiczenia 69 A.1 A.2 A.3 A.4 A.5 A.6 Python i Taggery Taggery Taggery EAK . . EAK . . NLTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 69 69 69 69 69 SPIS TRECI Bibilograa 3 70 Spis rysunków 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Prosty schemat architektury systemu NLP [24] . . . . . . . . . . . . . . . Prosty schemat analizy tekstu [24] . . . . . . . . . . . . . . . . . . . . . . Schemat oznaczania [14] . . . . . . . . . . . . . . . . . . . . . . . . . . . Dwie mo»liwe interpretacje rozkªadu dla CFG . . . . . . . . . . . . . . . Dwie mo»liwe interpretacje rozkªadu dla PCFG . . . . . . . . . . . . . . Przykªad rozkªadu dla FCFG [24] . . . . . . . . . . . . . . . . . . . . . . Przykªad poszukiwania drzew rozkªadu gramatycznego dla parsera zst¦puj¡cego [12] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8 Przykªad poszukiwania drzew rozkªadu gramatycznego dla parsera wst¦puj¡cego [12] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9 Przykªad analizy na podstawie gramatyki systemowej [11] . . . . . . . . . 2.10 Prosta gramatyka FUG [11] . . . . . . . . . . . . . . . . . . . . . . . . . 2.11 a«cuch Markowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8 14 17 18 19 . 20 . . . . 20 22 22 23 4.2 4.3 4.4 Wyst¦powanie wyrazów: whale, man, ocean, ksi¡»ki Moby Dick. . . . . . . . . . . . . . Przykªad segmentacji tekstu [24] . . . . . . . Przykªad zastosowania znaczników IOB [24] Drzewa prezentuj¡ce mo»liwe rozkªady [24] . . . . . 33 46 46 50 5.1 Schemat architektury eksperymentalnego agenta konwersacyjnego . . . . . 54 4.1 Moby oraz Ahab, w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tek±cie . . . . . . . . . . . . . . . . Spis tabel 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 Opis moduªów zawartych w NLTK . . . . . . . . . . . . . . . . Skuteczno±¢ Default Taggera . . . . . . . . . . . . . . . . . . . . Skuteczno±¢ Regexp Taggera . . . . . . . . . . . . . . . . . . . . Skuteczno±¢ Unigram Taggera . . . . . . . . . . . . . . . . . . . Skuteczno±¢ Unigram Taggera z Regexp Taggerem . . . . . . . . Skuteczno±¢ Bigram Taggera . . . . . . . . . . . . . . . . . . . . Skuteczno±¢ Bigram Taggera z Unigram Taggerem . . . . . . . . Skuteczno±¢ Bigram Taggera z Unigram oraz Regexp Taggerem Skuteczno±¢ Trigram Taggera . . . . . . . . . . . . . . . . . . . Skuteczno±¢ Trigram Taggera z Uni i Bigram Taggerem . . . . . Skuteczno±¢ Trigram Taggera z Uni, Bi oraz Regexp Taggerem . Skuteczno±¢ Brill Taggera . . . . . . . . . . . . . . . . . . . . . Skuteczno±¢ HMM Taggera . . . . . . . . . . . . . . . . . . . . Skuteczno±¢ Regexp Chunkera . . . . . . . . . . . . . . . . . . . Skuteczno±¢ Unigram Chunkera . . . . . . . . . . . . . . . . . . Skuteczno±¢ Bigram Chunkera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 36 37 38 39 40 40 40 42 42 42 44 45 47 48 49 Rozdziaª 1 Wst¦p i teza pracy J¦zyk naturalny jest jednym z najbogatszych oraz najcz¦±ciej u»ywanych sposobów komunikacji mi¦dzyludzkiej. Nic wi¦c dziwnego, »e podejmowane s¡ próby przeniesienia tej metody porozumiewania si¦ na relacje czªowieka z maszyn¡. Jednak zadania rozumienia oraz syntezy j¦zyka naturalnego s¡ nad wyraz skomplikowane. Czynno±ci te, które przychodz¡ czªowiekowi w sposób ªatwy i naturalny, s¡ ogromnym wyzwaniem dla wszelkiego rodzaju maszyn i komputerów. Samo prawidªowe zamodelowanie reguª rz¡dz¡cych j¦zykiem, dzi¦ki którym mo»na by budowa¢ systemy komunikuj¡ce si¦ w j¦zyku naturalnym, przez dªugi czas byªo zadaniem niezwykle trudnym i czasochªonnym. Jednym z najlepszych rozwi¡za«, jakie do tej pory udaªo si¦ wypracowa¢ dla tego problemu, okazaªo si¦ zastosowanie metod statystycznych. Systemy z nich korzystaj¡ce, przy relatywnie maªych nakªadach pracy ze strony ludzi, zacz¦ªy uczy¢ si¦ prawidªowego u»ytkowania j¦zyka naturalnego na podstawie udost¦pnionych im wcze±niej opracowanych materiaªów tekstowych. Niniejsza praca skupia si¦ wªa±nie na wykorzystaniu metod statystycznych w szeroko poj¦tym przetwarzaniu j¦zyka naturalnego. Stanowi równie» krótki przegl¡d obecnego oprogramowania stosuj¡cego komunikacj¦ w j¦zyku naturalnym w swoim dziaªaniu, jak i narz¦dzi sªu»¡cych do tworzenia takich systemów. Teza pracy Mo»na zbudowa¢ agenta konwersacyjnego odpowiadaj¡cego na zadane mu pytania odnosz¡ce si¦ do wcze±niej przeanalizowanego przez niego tekstu, wykorzystuj¡c do tego zarówno klasyczne metody przetwarzania j¦zyka naturalnego jak i metody statystyczne oraz otwarte oprogramowanie (z pocz¡tku roku 2011). Praca dzieli si¦ na cz¦±¢ teoretyczn¡ (rozdziaª 2), która prezentuje czytelnikowi podstawowe poj¦cia zwi¡zane z przetwarzaniem j¦zyka naturalnego ze szczególnym wyró»nieniem metod statystycznych. Nast¦pnie (rozdziaª 3) przedstawiony zostaª przegl¡d oprogramowania wykorzystuj¡cego przetwarzanie j¦zyka naturalnego oraz zestawy narz¦dzi u»ywanych do budowy takich systemów. Rozdziaª 4 prezentuje cz¦±¢ praktyczn¡ bada« nad skuteczno±ci¡ poszczególnych statystycznych metod, a rozdziaª 5 przedstawia testy zbudowanego agenta konwersacyjnego. Ostatni rozdziaª stanowi podsumowanie pracy. Rozdziaª 2 Metody przetwarzania j¦zyka naturalnego 2.1 Wst¦p Odk¡d tylko stworzono pierwsze komputery, marzeniem ludzi byªo uzyskanie mo»liwo±ci komunikowania si¦ z nimi za pomoc¡ j¦zyka naturalnego (czyli takiego, jakiego u»ywa si¦ na co dzie«). Tym problemem zajmuje si¦ dziedzina nauki zwana przetwarzaniem j¦zyka naturalnego (po angielsku - Natural Language Processing lub w skrócie NLP). Rysunek 2.1 Prosty schemat architektury systemu NLP [24] W zakres NLP wchodzi wiele zagadnie«, w tym mi¦dzy innymi: • analiza mowy, • analiza skªadniowa, • wnioskowanie, • planowanie wypowiedzi, • synteza mowy. 8 2. Metody przetwarzania j¦zyka naturalnego Rysunek 2.1 pokazuje w szerszym zakresie, jak poszczególne zagadnienia prezentuj¡ si¦ na przykªadzie uproszczonej architektury systemu przetwarzania j¦zyka naturalnego. Dat¡, któr¡ mo»na uzna¢ za nieocjalny punkt rozpocz¦cia si¦ historii NLP jest rok 1950, kiedy to Alan Turning opublikowaª w brytyjskim magazynie Mind artykuª zatytuªowany: Computing Machinery and Intelligence. Zadaª w nim pytanie dotycz¡ce zdolno±ci maszyn do samodzielnego my±lenia oraz przedstawiª koncepcj¦ testu pozwalaj¡cego sprawdzi¢, czy dany komputer posiada t¦ zdolno±¢ (zwanego testem Turinga). Jednym z najwa»niejszych aspektów oceniania zdolno±ci my±l¡cych maszyny, byªa jej umiej¦tno±¢ porozumiewania si¦ z czªowiekiem w j¦zyku naturalnym. Temat ten, cho¢ ju» wcze±niej poruszany, dopiero po tej publikacji znalazª si¦ w centrum zainteresowania ±rodowisk naukowych. W NLP istniej¡ dwa gªówne podej±cia do problemu przetwarzania j¦zyka, nazywane czasem podej±ciami: racjonalistycznym oraz empirycznym [14]. Podej±cie racjonalistyczne, b¦d¡ce równie» dominuj¡cym podej±ciem do tego tematu w latach 60-80 ubiegªego wieku, mo»na opisa¢ na przykªadzie maªego dziecka. Jego zwolennicy, m. in. Noam Chomsky, uwa»aj¡, »e niemowl¦ nie jest w stanie samodzielnie nauczy¢ si¦ j¦zyka nie maj¡c wcze±niej zawartych pewnych podstawowych poj¦¢ w swoim mózgu. Tak samo komputer nie jest w stanie nauczy¢ si¦ rozumie¢ zadanych mu tekstów bez wcze±niej zbudowanej bazy poj¦¢ oraz reguª z jakich ma korzysta¢. Rysunek 2.2 Prosty schemat analizy tekstu [24] Alternatywnym sposobem jest podej±cie empiryczne. Jego zwolennicy uwa»aj¡, »e niemowl¦ta s¡ tabula rasa (niezapisan¡ tablic¡) i ucz¡ si¦ wszystkiego od podstaw. Na tej samej zasadzie programy komputerowe mog¡ nauczy¢ si¦ rozumie¢ j¦zyk naturalny nie posiadaj¡c o nim »adnych wcze±niejszych informacji oraz opieraj¡c si¦ tylko na rozpoznawaniu wzorców i analizie statystycznej otrzymanych tekstów zwanych korpusami. Podej±cie to byªo najbardziej rozpowszechnione w latach 20-60 ubiegªego wieku oraz powróciªo do gªównego nurtu zainteresowa« specjalistów od NLP w czasach wspóªczesnych. 2.2. Korpusy 9 Metodologia statystyczna sprawdziªa si¦ szczególnie przy analizach nieopracowanego pod k¡tem przetwarzania j¦zykowego tekstu. Jednym z najtrudniejszych etapów takiej analizy jest zadanie oznaczania cz¦±ci mowy (po angielsku - part-of-speech tagging lub w skrócie POST), polegaj¡ce na przypisaniu ka»demu sªowu w tek±cie symbolu oznaczaj¡cego cz¦±¢ mowy. Opisanie takiego zadania za pomoc¡ reguª zajmuje du»o czasu, a skuteczno±¢ opieraj¡cych si¦ na nich taggerów (programów do oznaczania tekstu) jest do±¢ niska. W przypadku metod statystycznych, gdzie tagger uczy si¦ najpierw prawdopodobie«stw wyst¦powania danych znaczników (tagów) w poª¡czeniu z pojawiaj¡cymi si¦ sªowami, skuteczno±¢ wzrosªa zdecydowanie, za± samo zadanie jest w wi¦kszo±ci wykonywane przez komputer. Jednak zanim oprogramowanie mo»e przyst¡pi¢ do dziaªania, musi mie¢ wcze±niej opracowany tekst, na podstawie którego mo»e si¦ nauczy¢ jak ma post¦powa¢. Zbiór takich tekstów nazywa si¦ korpusem. 2.2 Korpusy Przy stosowaniu metod statystycznych przetwarzania j¦zyka naturalnego, wa»nym elementem sªu»¡cym do bada« lingwistycznych takich jak sprawdzanie cz¦sto±ci wyst¦powania danych form wyrazowych, czy kontekstów w jakich si¦ pojawiaj¡, jest korpus. Jest to zbiór istniej¡cych wcze±niej tekstów, dobranych odpowiednio do zadania jakie ma zosta¢ wykonane. Korpusy cz¦sto s¡ wykorzystywane jak zbiory danych ucz¡cych oraz testowych dla programów NLP [38]. Istniej¡ równie» tak zwane korpusy zrównowa»one, gdzie zawarte testy zostaªy dobrane wedªug okre±lonego zamysªu, aby uzyska¢ po»¡dane wªasno±ci stylistyczne i gramatyczne. Na przykªad utworzony w latach 60 ubiegªego wieku korpus Browna zostaª zaprojektowany tak, aby prezentowa¢ sob¡ próbki pisanego ameryka«skiego j¦zyka angielskiego. Oznacza to, »e statystyczne informacje z niego uzyskane niekoniecznie s¡ prawdziwe dla brytyjskiego j¦zyka angielskiego lub chocia»by ameryka«skiego j¦zyka angielskiego mówionego [14]. Inne znane korpusy to (zostaªy one szerzej opisane w rozdziale 3.3): • American National Corpus, • British National Corpus, • Corpus of Contemporary American English, • Oxford English Corpus. Alternatyw¡ dla wcze±niej istniej¡cych korpusów jest stworzenie korpusu dla wªasnych potrzeb. Wystarczy do tego odpowiednia ilo±¢ materiaªów tekstowych wyselekcjonowanych tak, aby reprezentowaªy interesuj¡cy nas temat. 10 2. Metody przetwarzania j¦zyka naturalnego 2.3 Statystyczne metody oznaczania 2.3.1 a«cuchy Markowa Teoria W ksi¡»ce [12] autorstwa Jurafsky'ego i Martina mo»na znale¹¢ tak¡ denicj¦ - ªa«cuch Markowa zwany tak»e obserwowalnym modelem Markowa jest rozwini¦ciem automatu sko«czonego. Automat sko«czony jest zdeniowany poprzez mo»liwe do uzyskania w nim stany oraz przej±cia mi¦dzy nimi. W przypadku obci¡»onego (weighted) automatu stanu dodatkowo ka»de przej±cie ma wyznaczone prawdopodobie«stwo tego, »e zostanie ono wybrane. Suma prawdopodobie«stw wszystkich przej±¢ z jednego stanu musi wynosi¢ 1. a«cuch Markowa jest takim obci¡»onym sko«czonym automatem, gdzie sekwencja wej±¢ wyznacza przez jakie stany przejdzie automat. • Q = q1 q2 ...qN N stanów • A = a01 a02 a03 ...an1 ...ann A macierz prawdopodobie«stwa przej±¢ mi¦dzy stanami (od i do j ), • q0 , qF specjalne stany: pocz¡tkowy i ko«cowy a«cuchy Markowa wykorzystuj¡ wªasno±¢ Markowa, która mówi, »e warunkowe rozkªady prawdopodobie«stwa przyszªych stanów procesu s¡ zdeterminowane wyª¡cznie przez jego bie»¡cy stan, bez wzgl¦du na przeszªo±¢ - przyszªe stany procesu s¡ warunkowo niezale»ne od stanów przeszªych. P (qi |q1 ...qi−1 ) = P (qi |qi−1 ) Suma prawdopodobie«stwa wyj±¢ z danego stanu musi si¦ równa¢ 1: n X aij = 1 j=1 a«cuchy Markowa wykorzystuje si¦ w przetwarzaniu j¦zyka naturalnego przy budowaniu n-gram modeli. S¡ to modele probabilistyczne do przewidywania nast¦pnego stanu w sekwencji na podstawie poprzednich stanów. N-gram model, dla którego n oznacza liczb¦ sekwencji wi¦ksz¡ od 0, równowa»ny jest ªa«cuchowi Markowa, w którym stan bie»¡cy skªada si¦ z n-1 stanów w sekwencji. Dla n=1 model nazywa si¦ unigramem; dla n=2 bigramem; dla n=3 trigramem. Przykªad Najprostszym przykªadem ªa«cucha Markowa jest wi¦kszo±¢ gier planszowych. Prawdopodobie«stwo z jakim mo»na wyl¡dowa¢ na kolejnych polach zale»ne jest tylko od tego, jakie pole jest wªa±nie zajmowane, nie bior¡c pod uwag¦ tych, na których byªo si¦ wcze±niej. 2.3. Statystyczne metody oznaczania 11 2.3.2 Ukryte modele Markowa Teoria Ukryty model Markowa (hidden Markov model HMM) jest jednym z najpopularniejszych modeli sªu»¡cych do przetwarzania tekstu. HMM jest probabilistycznym klasykatorem sekwencji. Dziaªanie takiego klasykatora polega na przypisaniu do ka»dej jednostki w sekwencji odpowiedniego oznaczenia. Dzieje si¦ tak dzi¦ki wyznaczeniu prawdopodobie«stw sekwencji oznacze« i wybraniu najbardziej mo»liwej. Jednym z zada«, gdzie znajduje to zastosowanie jest oznaczanie cz¦±ci zdania [12]. Przykªadowe oznaczenia stosowane dla HMM: • Q=q1 ,q2 ...qN N stanów • A=a01 ,a02 ,a03 ...an1 ...ann A macierz prawdopodobie«stwa przej±¢ mi¦dzy stanami (od i do j ) • O=o1 ,o2 ...oT sekwencja zdarze« zaobserwowanych • B=bi (ot ) sekwencja prawdopodobie«stw obserwacji prawdopodobie«stwo obserwacji ot przy stanie i • q0 , qF specjalne stany: pocz¡tkowy i ko«cowy W przypadku HMM mo»na wyodr¦bni¢ trzy fundamentalne problemy: • Prawdopodobie«stwo (Likelihood) znaj¡c HMM L=(A,B) i zaobserwowan¡ sekwencj¦ O, ustal prawdopodobie«stwo P(O|L). • Odkodowywanie (Decoding) znaj¡c HMM L=(A,B) i zaobserwowan¡ sekwencj¦ O, ustal najlepsz¡ sekwencj¡ ukrytych stanów Q. • Uczenie (Learning) - znaj¡c mo»liwe stany HMM i zaobserwowan¡ sekwencj¦ O, wyznacz parametry A i B dla HMM. Przykªad Poni»ej prezentowana jest przykªadowa sytuacja, w której chce si¦ rozpozna¢ czy dany dzie« byª dla pana Nowaka stresuj¡cy wykorzystuj¡c do tego wiedz¦ o ilo±ci wypalonych przez niego paczek papierosów. W tym przypadku dost¦pne s¡ dwa ukryte stany dzie« stresuj¡cy (DS - B1) i dzie« niestresuj¡cy (DN - B2), oraz obserwacja ilo±ci wypalonych paczek papierosów (O=1,2,3). Nie korzysta si¦ równie» z dodatkowych stanów - pocz¡tkowego i ko«cowego. B1: • P(1|DS)=0.1 • P(2|DS)=0.4 • P(3|DS)=0.5 B2: 12 2. Metody przetwarzania j¦zyka naturalnego • P(1|DN)=0.6 • P(2|DN)=0.3 • P(3|DN)=0.1 Prawdopodobie«stwo przej±cia mi¦dzy dniami stresuj¡cymi i niestresuj¡cymi wynosi 0.3, a pozostanie w nich 0.7. Korzystaj¡c z powy»szego modelu mo»na spróbowa¢ na podstawie znanej sekwencji ilo±ci wypalonych paczek dziennie przez pana Nowaka wyznaczy¢ sekwencj¦ dni stresuj¡cych i niestresuj¡cych. Na przykªad - zakªadaj¡c, »e pan Nowak wypaliª pierwszego dnia 2 paczki, a drugiego 3, istniej¡ 4 mo»liwe sekwencje dni: • DN -> DN • DN -> DS • DS -> DN • DS -> DS Nie nale»y zapomina¢ o prawdopodobie«stwie przej±cia pomi¦dzy rodzajami dni. Zakªada si¦ równie», »e stan wej±ciowy to DN. • P(DN|DN)P(2|DN)P(DN|DN)P(3|DN)=0.7*0.3*0.7*0.1=0.0147 • P(DN|DN)P(2|DN)P(DS|DN)P(3|DS)=0.7*0.3*0.3*0.5=0.0315 • P(DS|DN)P(2|DS)P(DN|DS)P(3|DN)=0.3*0.4*0.3*0.1=0.0036 • P(DS|DN)P(2|DS)P(DS|DS)P(3|DS)=0.3*0.4*0.7*0.5=0.042 Jak wida¢ z powy»szych oblicze« przy danej sekwencji wypalonych paczek papierosów przez pana Nowaka, najbardziej prawdopodobna sekwencja dni prezentuje si¦ w taki sposób - dwa dni stresuj¡ce pod rz¡d. 2.3.3 Praktyczne zastosowanie modeli Markowa w zadaniu oznaczania Teoria Oznaczanie cz¦±ci mowy jest to proces, w którym do ka»dej cz¦±ci zdania przydzielany jest znacznik do jakiej klasy sªów lub znaków interpunkcyjnych ona nale»y. Algorytmy obsªuguj¡ce ten proces na swoim wej±ciu maj¡ ci¡g sªów oraz przygotowany zestaw znaczników do ich opisania. Poni»ej zaprezentowany jest jeden z kilku istniej¡cych zestawów zwany Penn Treebank (zaczerpni¦ty z [12]). 2.3. Statystyczne metody oznaczania 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. CC CD DT EX FW IN JJ JJR JJS LS MD NN NNS NNP NNPS PDT POS PRP PRP$ RB RBR RBS RP SYM TO UH VB VBD VBG VBN VBP VBZ WDT WP WP$ WRB $ # " '' ( ) , . : 13 Coordinating conjunction C a r d i n a l number Determiner Existential there F o r e i g n word P r e p o s i t i o n or subordinating conjunction Adjective Adjective , comparative Adjective , s u p e r l a t i v e L i s t i t e m marker Modal Noun , s i n g u l a r o r mass Noun , p l u r a l P r o p e r noun , s i n g u l a r P r o p e r noun , p l u r a l Predeterminer P o s s e s s i v e ending P e r s o n a l pronoun P o s s e s s i v e pronoun Adverb Adverb , c o m p a r a t i v e Adverb , s u p e r l a t i v e Particle Symbol to Interjection Verb , b a s e form Verb , p a s t t e n s e Verb , gerund o r p r e s e n t p a r t i c i p l e Verb , p a s t p a r t i c i p l e Verb , non −3rd p e r s o n s i n g u l a r p r e s e n t Verb , 3 rd p e r s o n s i n g u l a r p r e s e n t Wh−d e t e r m i n e r Wh−pronoun P o s s e s s i v e wh−pronoun Wh−a d ve r b dollar sign pound s i g n l e f t quote r i g h t quote l e f t parenthesis right parenthesis comma s e n t e n c e − f i n a l pune mid− s e n t e n c e pune Istnieje wiele algorytmów oznaczania takich jak oznaczanie wg zasad (rule-based tagging), albo oznaczanie z wykorzystaniem transformacji (transformation-based tagging). W przypadku metod statystycznych NLP jedn¡ z popularniejszych metod oznaczania jest 14 2. Metody przetwarzania j¦zyka naturalnego oznaczanie z u»yciem modeli Markowa. Najwi¦kszym problemem przy oznaczaniu cz¦±ci mowy jest niepewno±¢ oznaczenia niektórych sªów. Co prawda wi¦kszo±¢ sªów w j¦zyku angielskim jest jednoznacznie okre±lona i posiada tylko jeden znacznik, ale wiele sªów b¦d¡cych w powszechnym u»ytku ma kilka mo»liwo±ci. Jedn¡ z metod wykorzystywanych do rozwi¡zania tego problemu jest oznaczanie n-gram (n-gram tagging), wykorzystuj¡ce w swoim dziaªaniu ªa«cuchy Markowa. Rysunek 2.3 Schemat oznaczania [14] Unigram tagger wykorzystuje tylko wiedz¦ o tym, który znacznik jest najpopularniejszy dla danego sªowa i ten wªa±nie mu przydziela. W przypadku bigram taggera pod uwag¦ bierze si¦ tak»e jeden poprzedzaj¡cy znacznik. Analogicznie dla trigram taggera dochodz¡ dwa poprzedzaj¡ce znaczniki itd. Inn¡ popularn¡ metod¡ wykorzystywan¡ do zadania oznaczania jest stosowanie ukrytych modeli Markowa, które mo»na opisa¢ dla tego przypadku w poni»szy sposób [12]: P (ωi |ti = C(ti , ωi )/C(ti ) gdzie • C(ti , ωi ) - cz¦sto±¢ z jak¡ znacznik i jest przypisywany do sªowa ωi , • C(ti ) - cz¦sto±¢ z jak¡ znacznik i pojawia si¦ w korpusie ucz¡cym Oprócz tego sprawdzane jest tak»e z jakim prawdopodobie«stwem dany znacznik mo»e wyst¡pi¢ po poprzednim. Do obliczenia tego prawdopodobie«stwa wykorzystuje si¦ wzór: P (ti |ti−1 ) = C(ti−1 , ti )/C(ti−1 ) gdzie • C(ti−1 ,ti ) - cz¦sto±¢ z jak¡ znacznik i wyst¡piª po znaczniku i − 1, • C(ti−1 ) - cz¦sto±¢ z jak¡ znacznik i − 1 pojawia si¦ w korpusie ucz¡cym Przykªad Przykªad zaczerpni¦ty z [12] prezentuje, jak oznaczanie HMM dziaªa w praktyce. 2.3. Statystyczne metody oznaczania 15 Przy decydowaniu, która sekwencja znaczników jest najbardziej mo»liwa maksymalizuje si¦ produkt dwóch wyników - prawdopodobie«stwa danej sekwencji oraz prawdopodobie«stwa generowania danego sªowa przez dany znacznik. W przykªadzie przedstawiono rozwi¡zanie problemu nieokre±lono±ci sªowa race, która w j¦zyku angielskim mo»e by¢ zarówno rzeczownikiem jak i czasownikiem. U»yty zostaª w nim tak»e zestaw znaczników z korpusu Browna. Zdania przykªadowe z poprawn¡ sekwencj¡ znaczników: Secretariat/NNP is/BEZ expected/VBN to/TO race/VB tomorrow/NR Oczywi±cie w tym przykªadzie znajduje si¦ wi¦cej nieokre±lonych pod wzgl¦dem oznaczenia wyrazów, ale dla uproszczenia tylko sªowo race zostanie wzi¦te pod uwag¦. Istniej¡ dwie mo»liwo±ci: • Secretariat/NNP is/BEZ expected/VBN to/TO race/VB tomorrow/NR • Secretariat/NNP is/BEZ expected/VBN to/TO race/NN tomorrow/NR W obu przypadkach prawdopodobie«stwa s¡ takie same oprócz trzech miejsc - przej±cia mi¦dzy znacznikami z i od sªowa race, oraz generowaniu tego sªowa przez wybrany znacznik. Obliczenie prawdopodobie«stwa P(NN|TO) oraz P(VB|TO) wyznacza z jakim prawdopodobie«stwem wyst¡pi dany znacznik bior¡c pod uwag¦ poprzedni. Korpus Browna daje nam takie prawdopodobie«stwa: P (V B|T O) = 0.83 P (N N |T O) = 0.00047 Kolejnym krokiem jest obliczenie z jakim prawdopodobie«stwem mo»e wyst¡pi¢ sªowo race, je»eli zostaª wybrany jeden z tych dwóch znaczników: P (race|V B) = 0.00012 P (race|N N ) = 0.00057 Ostatnim krokiem jest zaprezentowanie prawdopodobie«stwa dla nast¦pnego znacznika: P (N R|V B) = 0.0027 P (N R|N N ) = 0.0012 Znaj¡c te wszystkie prawdopodobie«stwa mo»na wyznaczy¢ peªne prawdopodobie«stwo danej sekwencji: P (V B|T O)P (race|V B)P (N R|V B) = 0.00000027 P (N N |T O)P (race|N N )P (N R|N N ) = 0.00000000032 16 2. Metody przetwarzania j¦zyka naturalnego 2.4 Analiza gramatyczna wypowiedzi 2.4.1 Gramatyka bezkontekstowa (CFG) Teoria Gramatyka bezkontekstowa jest najpopularniejszym modelem u»ywanym do przedstawiania struktury zda« w j¦zykach naturalnych. Zawiera ona w sobie list¦ zasad, które pokazuj¡, jak symbole oznaczaj¡ce cz¦±ci mowy s¡ od siebie zale»ne oraz leksykon sªów [12] Symbole wykorzystywane w CFG dziel¡ si¦ na dwie grupy: terminalne oraz nieterminalne. Pierwsze z nich odnosz¡ si¦ do sªów j¦zyka naturalnego. Drugie oznaczaj¡ grupy symboli terminalnych. Przykªad Przykªad zaczerpni¦ty zostaª z [14] oraz dostosowany dla potrzeb prezentacji CFG przy interpretacji wyra»enia astronomers saw stars with ears. Symbole nieterminalne: • S (zdanie), • VP (fraza czasownikowa), • NP (fraza rzeczownikowa), • V (czasownik), • PP (wyra»enie przyimkowe), • P (przyimek); Reguªy: • S - NP VP • PP - P NP • VP - V NP • VP - VP PP • P - with • V - saw • NP - NP PP • NP - astronomers • NP - ears • NP - saw • NP - stars 2.4. Analiza gramatyczna wypowiedzi 17 Rysunek 2.4 Dwie mo»liwe interpretacje rozkªadu dla CFG • NP - telescopes Jak wida¢ mo»liwe s¡ dwie interpretacje danego zdania przy wykorzystaniu zadanych reguª gramatyki bezkontekstowej. 2.4.2 Probabilistyczna gramatyka bezkontekstowa (PCFG) Teoria Probabilistyczna gramatyka bezkontekstowa jest to jedna z metod statystycznego parsingu, który u»ywaj¡c modeli probabilistycznych skªadni wyznacza prawdopodobie«stwo ka»dego z mo»liwych drzew parsingowych. Jak wynika z nazwy w PCFG wyst¦puje sytuacja, w której prawdopodobie«stwo wyst¦powania reguª (produkcji) jest niezale»ne od kontekstu przetwarzanego tekstu. Prawdopodobie«stwa produkcji doª¡cza si¦ w taki sposób, aby suma prawdopodobie«stw reguª o tym samym poprzedniku wynosiªa 1 [12, 14]. Przykªad Przykªad wzi¦ty [14] pokazuj¡cy zastosowanie PCFG dla interpretacji wyra»enia astronomers saw stars with ears. Symbole nieterminalne takie same jak w przykªadzie dla CFG. Symbol pocz¡tkowy: S Reguªy: • S - NP VP 1.0 • PP - P NP 1.0 • VP - V NP 0.7 • VP - VP PP 0.3 • P - with 1.0 • V - saw 1.0 • NP - NP PP 0.4 18 2. Metody przetwarzania j¦zyka naturalnego • NP - astronomers 0.1 • NP - ears 0.18 • NP - saw 0.04 • NP - stars 0.18 • NP - telescopes 0.1 Rysunek 2.5 Dwie mo»liwe interpretacje rozkªadu dla PCFG P (t1 ) = 0.0009072 P (t2 ) = 0.0006804 Jak wida¢ dla tego przypadku z zastosowaniem powy»szych reguª interpretacja pierwsza jest bardziej prawdopodobna. 2.4.3 Gramatyka oparta na atrybutach (FCFG) Teoria Z angielskiego - Feature Based Grammars. Jest to kolejna mo»liwa do zastosowania wariacja gramatyki bezkontekstowej, maj¡ca na celu uªatwienie budowania jej struktur poprzez dodanie dodatkowych informacji (atrybutów) o sªowach wykorzystanych do jej tworzenia. Jedn¡ z takich informacji mo»e by¢ fakt, jakiej liczby (pojedynczej lub mnogiej) jest wybrany rzeczownik. Przykªad Przykªad zaczerpni¦ty z [24] pokazuj¡cy zastosowanie FCFG dla interpretacji wyra»enia these dogs runs. Symbol pocz¡tkowy: S Reguªy: • S -> NP_SG VP_SG 2.4. Analiza gramatyczna wypowiedzi 19 • S -> NP_PL VP_PL • NP_SG -> Det_SG N_SG • NP_PL -> Det_PL N_PL • VP_SG -> V_SG • VP_PL -> V_PL • Det_SG -> 'this' • Det_PL -> 'these' • N_SG -> 'dog' • N_PL -> 'dogs' • V_SG -> 'runs' • V_PL -> 'run' Rysunek 2.6 Przykªad rozkªadu dla FCFG [24] 2.4.4 Parsing Parsing (inaczej analiza skªadniowa) jest wykorzystywany, jako jedna z gªównych metod wyszukiwania drzew powstaªych po u»yciu gramatyki bezkontekstowej. Istniej¡ dwie gªówne strategie parsingu: zst¦puj¡ca (nastawiona na cel) oraz wst¦puj¡ca (nastawiona na dane). Mo»na powiedzie¢ tak»e, »e w analizie skªadniowej stosuje si¦ dwa wspomniane ju» wcze±niej ró»ne podej±cia lozoczne - racjonalistyczne oraz empiryczne. W przypadku parsingu zst¦puj¡cego nacisk kªadzie si¦ na wykorzystanie wcze±niej uzyskanej wiedzy, co jest przeciwie«stwem parsingu wst¦puj¡cego, gdzie nacisk kªadzie si¦ na dost¦pne dane [12]. W przypadku gramatyki bezkontekstowej parsing zst¦puj¡cy próbuje budowa¢ drzewa zaczynaj¡c od korzenia w symbolu S, a» do li±ci b¦d¡cych poszczególnymi wyrazami. Na kolejnych poziomach drzewa rozkªada kolejne symbole terminalne u»ywaj¡c do tego reguª zawartych w gramatyce, a» dojdzie do samych sªów werykuj¡c na ich podstawie, które rozwi¡zania s¡ prawidªowe. 20 2. Metody przetwarzania j¦zyka naturalnego Rysunek 2.7 Przykªad poszukiwania drzew rozkªadu gramatycznego dla parsera zst¦puj¡cego [12] Parsing wst¦puj¡cy dziaªa odwrotnie. Zaczynaj¡c od samych sªów buduje drzewo do góry, wykorzystuj¡c w tym celu reguªy gramatyczne zawarte w PCF. Rysunek 2.8 Przykªad poszukiwania drzew rozkªadu gramatycznego dla parsera wst¦puj¡cego [12] Obydwie architektury maj¡ swoje zalety i wady. Parsing zst¦puj¡cy nie marnuje czasu na badanie drzew, które nie ko«cz¡ si¦ symbolem S, jednak»e jednocze±nie tworzy drzewa niepasuj¡ce do zdania, które analizuje. Parsing wst¦puj¡cy ma dokªadnie odwrotny problem - bada drzewa zgodne z analizowanym zdaniem, ale tworzy przy tym nieko«cz¡ce si¦ symbolem S, czyli niepoprawne z punktu widzenia gramatyki. 2.5 Synteza wypowiedzi w j¦zyku naturalnym Synteza lub te» inaczej mówi¡c generacja tekstu jest w pewnym sensie najstarsz¡ dziedzin¡ przetwarzania j¦zyka. Ju» pierwsze programy potra¡ce zrozumie¢ najprostsze komendy w odpowiedzi generowaªy wcze±niej przygotowan¡ wypowied¹. Jednym z najsªynniejszych 2.5. Synteza wypowiedzi w j¦zyku naturalnym 21 takich programów jest hello, world napisany w C. Takie podej±cie do zadania generacji nazywa si¦ z angielskiego canned text [11]. Innym sposobem jest uzupeªnianie wzorca (po angielsku - template lling). Polega na dopasowywaniu informacji do wybranych miejsc w tek±cie. Przykªadem tego rozwi¡zania s¡ automatycznie generowane listy, gdzie w tre±ci zmianie ulegaj¡ tylko miejsca z nazwiskiem osoby, do której zostaª wysªany. Jednak oba powy»sze rozwi¡zania s¡ bardzo ograniczone w dziaªaniu i tylko w niewielkim stopniu nadaj¡ si¦ do bardziej skomplikowanych systemów. To co mo»na nazwa¢ syntez¡ wypowiedzi w j¦zyku naturalnym w peªnym znaczeniu jest generowanie tekstu na podstawie wcze±niej otrzymanych niej¦zykowych danych. Przyjmuje si¦, »e system generuj¡cy tekst musi w swoim dziaªaniu podejmowa¢ nast¦puj¡ce decyzje [11]: • wybór tre±ci - czyli dopasowanie odpowiedzi do u»ytkownika, gdy» na przykªad co innego chce si¦ przekaza¢ dziecku, a co innego dorosªej osobie, • leksykalny wybór - czyli jakich sªów ma u»y¢ system do przekazania ró»nych koncepcji, na przykªad: rozwi¡za¢ albo rozwikªa¢, • struktura zdania - czyli jak¡ gramatyk¦ zastosowa¢ przy budowie zda« skªadaj¡cych si¦ na odpowied¹, • struktura dyskursu - czyli podejmowanie decyzji na temat budowy odpowiedzi skªadaj¡cej si¦ z kilku zda« przekazuj¡cych zale»ne od siebie informacje. Sam¡ architektur¦ systemu mo»na podzieli¢ na dwa elementy: planist¦ dyskursu oraz zewn¦trznego wykonawc¦. Pierwszy obejmuje sfer¦ decyzyjn¡, drugi za± buduje odpowied¹ na podstawie posiadanej przez niego gramatyki. Przy samej budowie zda« najpopularniejsze s¡ dwa rozwi¡zania: gramatyka systemowa (ang. Systemic Grammar) oraz funkcjonalna gramatyka unikacyjna (ang. Functional Unication Grammar). 2.5.1 Gramatyka systemowa Gramatyka systemowa prezentuje zdania jako zbiór funkcji oraz mapuje je na gramatyczne formy [11]. W przykªadzie 2.9 mo»na zaobserwowa¢, jak poszczególne funkcje zdania s¡ zaprezentowane w postaci warstw. Warstwa trybu (mood) pokazuje prost¡ struktur¦ zdania: podmiot (subject), orzeczenie (predicator) oraz dopeªnienie (object). Warstwa przechodnio±ci (transitivity) pokazuje, »e system jest aktorem, czyli wykonawc¡, a the document jest celem, lub obiektem, na którym wykonuje si¦ zadanie. Warstwa tematyczna (theme) prezentuje system jako temat, czyli gªówny element zdania. Te warstwy, nazywane równie» meta-funkcjami, prezentuj¡ trzy fundamentalne zadania generacji [11]: • interpersonalna meta-funkcja (interpersonal meta-function) grupuje funkcje zarz¡dzaj¡ce interakcj¡ miedzy pisz¡cym i czytaj¡cym (wartwa trybu), 22 2. Metody przetwarzania j¦zyka naturalnego • ideowa meta-funkcja (ideational meta-function) analizuje co ma zosta¢ przekazane i decyduje, jakich sªów do tego u»y¢ (warstwa przechodnio±ci), • tekstowa meta-funkcja (textual meta-function) zajmuje si¦ poprawno±ci¡ danego zdania w szerszym dyskursie. Rysunek 2.9 Przykªad analizy na podstawie gramatyki systemowej [11] 2.5.2 Funkcjonalna gramatyka unikacyjna Rysunek 2.10 Prosta gramatyka FUG [11] Gramatyka ta wykorzystuje w swoim dziaªaniu zunikowane struktury oparte na atrybutach (feature structures). Ogólna idea polega na zbudowaniu generatora, jako struktury atrybutowej razem z list¡ potencjalnych alternatyw, a nast¦pnie unikacja tej gramatyki z wej±ciow¡ specykacj¡ utworzon¡ na tej samej zasadzie. Po dokonaniu tego procesu 2.5. Synteza wypowiedzi w j¦zyku naturalnym 23 otrzymuje si¦ peªn¡ struktur¦, która mo»e zosta¢ zlinearyzowana w formie wygenerowanego zdania [11]. Jak wida¢ na 2.10 najwy»szy poziom gramatyki prezentuje alternatywy dla zda« (S), wyra»e« rzeczownikowych (NP) oraz wyra»e« czasownikowych (VP). Na poziomie zda« gramatyka obejmuje aktora, proces oraz cel, jako NP, VP i NP. Kolejne poziomy to NP i VP z kolejnymi mo»liwymi do wyboru alternatywami, jak na przykªad ró»ne czasy w VP. 2.5.3 Metody statystyczne Statystyczne metody syntezy j¦zyka naturalnego s¡, w porównaniu do metod wykorzystywanych przy jego rozumieniu, w mniejszym stopniu opisane w literaturze. Najpopularniejszym przykªadem jest zastosowanie n-gramów przy translacji tekstów. Metody statystyczne do syntezy j¦zyka wykorzystuje si¦ tak»e w generacji losowych tekstów. Przykªadem takiego zastosowania jest program Bill 2.0. Wykorzystuje on ªa«cuch Markowa do generacji tekstu o wybranej przez u»ytkownika tematyce. Bill 2.0 uczy si¦ wpierw prawdopodobie«stw wyst¦powania po sobie poszczególnych sªów, wykorzystuj¡c do tego utwory Williama Szekspira (sªu»¡ce w tym przypadku za korpus), a nast¦pnie u»ywaj¡c modelu ªa«cuchów Markowa sam buduje na ich podstawie wªasne zdania [6]. Na zaprezentowanym rysunku 2.11 przykªadzie mo»na zaobserwowa¢, jak wygl¡da teoretyczny model ªa«cuchów Markowa, kiedy Bill 2.0, jako dane ucz¡ce otrzymaª tylko jedno zdanie: To be or not to be. Rysunek 2.11 a«cuch Markowa • P (to|ST ART ) = P (a01 ) = 1 • P (be|to) = P (a12 ) = 1 • P (not|or) = P (a34 ) = 1 24 2. Metody przetwarzania j¦zyka naturalnego • P (to|not) = P (a41 ) = 1 • P (KON IEC|be) = P (a25 ) = 0.5 • pozostaªe P (aij ) = 0 Przykªadowe prawdopodobie«stwa wygenerowania zda« dla tego modelu to: • P(Z1)=0.25 dla zdania To be or not to be. • P(Z2)=0.5 dla zdania To be. Przy zastosowania wi¦kszej bazy ucz¡cej Bill 2.0 wykazuje si¦ znaczn¡ ró»norodno±ci¡ generowanych zda«, które niestety nie maj¡ wi¦kszego sensu. Przykªad utworzonego przez ten program tekstu znajduje si¦ poni»ej. Who s t i l l on us t h e r e ' s r u e w i t h f a n t a s t i c . I n pause , a s ' Well , p u r p o s e s . I f thou do ? thou c a n s t mutine i n h i s . Exeunt p l a y e r s ( which i t h e n no a s s i s t a n t . But t h e c e s s e o f l i f e now , a . That f o l l o w s , though i t , my l o r d . And r e c k l e s s l i b e r t i n e , my f a t h e r ' s d e a t h what . Laer . U n t i l my f a t h e r . [ a s i d e ] wormwood , h o r a t i o ! t h e r e g i o n ; s o w e l l . Rozdziaª 3 Przegl¡d oprogramowania NLP Poni»szy przegl¡d oprogramowania prezentuje programy wykorzystuj¡ce w swoim dziaªaniu szeroko poj¦te metody NLP. 3.1 Programy • Articial Linguistic Internet Computer Entity (A.L.I.C.E.) - chatterbot. Trzykrotny zwyci¦zca nagrody Loebner (2000, 2001 i 2004). Program u»ywa XML Schema nazwanego AIML (Articial Intelligence Markup Language) do okre±lania heurystycznych zasad konwersacji. Twórca - Richard Wallace [1, 32]. • Elbot - zdobywca nagrody Loebnera w roku 2008. Udaªo mu si¦ przekona¢ 3 z 12 przesªuchuj¡cych go ludzi, »e sam tak»e jest prawdziwym czªowiekiem. Twórca Fred Roberts [5, 34]. • Google Translate - jest to darmowy translator dostarczony przez Google Inc. W swoim dziaªaniu w odró»nieniu od wielu innych translatorów u»ywa statystycznych metod tªumaczenia maszynowego. Jako jednej z baz tekstów ucz¡cych u»ywa dokumentów ONZ, które standardowo tªumaczone s¡ na 6 j¦zyków (arabski, chi«ski, angielski, francuski, rosyjski i hiszpa«ski) [8, 36]. • Jabberwacky - istnieje wiele wersji (charakterów) tego chatterbota. Dwie z nich wygraªy nagrod¦ Loebnera (George w 2005 i Joan w 2006). Twórca - Rollo Carpenter [10, 37]. • SCIgen - program losowo generuj¡cy pozbawione sensu teksty w formie naukowych prac badawczych zawieraj¡cych diagramy, grafy i cytowania. Wykorzystuje w tym celu probabilistyczn¡ gramatyk¦ bezkontekstow¡. Co ciekawe kilka wygenerowanych przy jego u»yciu prac zostaªo zaakceptowanych przez znane organizacje naukowe jako prawdziwe. Jedn¡ z takich sytuacji byªo pierwsze ocjalne zastosowanie SCIgena, po którym to stworzony przez niego dokument o tytule Rooter: A Methodology for the Typical Unication of Access Points and Redundancy zostaª uznany jako zgªoszenie na 2005 World Multiconference on Systemics, Cybernetics and Informatics, a jego autorzy dostali zaproszenie na konferencj¦. Po ujawnieniu oszustwa zaproszenie zostaªo cofni¦te, a twórcy programu wyja±nili, »e ich celem byªo pokazanie niskich standardów oceny prac, jakimi kieruj¡ si¦ takie konferencje [22, 43]. 26 3. Przegl¡d oprogramowania NLP • Siri Personal Assistant - jest to aplikacja dla iPhone OS sªu»¡ca za osobistego asystenta. U»ywa ona NLP do odpowiedzi na pytania oraz robienia rekomendacji. Wedªug jej twórców Siri dostosowuje si¦ do indywidualnych potrzeb swojego u»ytkownika wraz z zwi¦kszaj¡cym si¦ czasem jej u»ytkowania [23, 44]. • Yahoo! Babel Fish - internetowy translator oparty na technologii dostarczonej przez rm¦ SYSTRAN, która wykorzystywana jest tak»e przez wiele innych stron i portali. Metodologia zastosowana w nim oparta jest na wcze±niej zaprogramowanych r¦cznie zasadach (rule-based) [53, 50]. • Never-Ending Language Learning (NELL) - jest to semantyczny system uczenia si¦ maszynowego opracowany przez zespóª badawczy z Uniwersytetu Carnegie Mellon oraz wspierany przez granty z DARPA, Google i NSF (National Science Foundation). System dziaªa na superkomputerze dostarczonym przez Yahoo! [42]. NELL zostaªa zaprogramowana z umiej¦tno±ci¡ rozpoznania zwi¡zków znaczeniowych mi¦dzy kilkoma setkami kategorii, takich jak na przykªad: miasta, emocje, czy dru»yny sportowe. Od pocz¡tku roku 2010 NELL przegl¡da miliony stron internetowych szukaj¡c zwi¡zków pomi¦dzy znanymi przez siebie informacjami oraz tymi odnalezionymi w Internecie. Ma to imitowa¢ proces nauczania jakim posªuguj¡ si¦ ludzie. Celem NELL jest stworzenie sytemu, który b¦dzie w stanie odpowiedzie¢ na pytania zadane w j¦zyku naturalnym bez »adnej ingerencji ludzkiej. Aktualnie jednak, w przypadku gdy doszªo do bª¦dnej klasykacji niektórych poj¦¢, zespóª badaczy r¦cznie poprawia wiedz¦ wydedukowan¡ przez NELL [21]. • Ultra Hal Assistant - wygraª nagrod¦ Loebnera w 2007 roku. Do komunikacji z u»ytkownikiem u»ywana jest animowana posta¢ z syntetycznym gªosem oraz system rozpoznawania gªosu. Program, jako swoj¡ baz¦ wiedzy sªownictwa wykorzystuje WordNet. Twórca - Robert Medeksza [29, 46]. • Virtual Woman - program ª¡cz¡cy elementy chatbota, wirtualnej rzeczywisto±ci oraz gry komputerowej. U»ytkownicy przy tworzeniu nowej postaci mog¡ decydowa¢ o jej kolorze skóry, osobowo±ci itd. Po zako«czeniu procesu tworzenia zostaje zaprezentowana animowana w 3-D wirtualna kobieta z któr¡ mo»na rozpocz¡¢ rozmow¦ [30, 47]. • Watson - jest to nazwa zarówno oprogramowania jak i superkomputera, na którym dziaªa dla szybkiego odpowiadania na pytania. Zostaª stworzony przez rm¦ IBM w jednym celu - wygrania programu Jeopardy! (polskim odpowiednikiem jest program Va Bank). W odró»nieniu od wcze±niejszych tego typu projektów, zamiast koncentrowa¢ si¦ na jednym typie algorytmów sªu»¡cych do analizy j¦zyka naturalnego, Watson wykorzystuje szerokie spektrum ró»nych metod i przy odpowiedzi na zadane mu pytanie wybiera t¡, która zostaªa wskazana przez ich najwi¦ksz¡ ilo±¢ [9, 31]. • Wolfram Alpha - jest to wyszukiwarka stworzona przez Wolfram Research. Zostaªa ona zaprojektowana tak, aby odpowiada¢ na zadane pytania w postaci przetworzonych danych w odró»nieniu od podania listy dokumentów oraz stron internetowych, które mog¡ zawiera¢ poszukiwan¡ odpowied¹. 3.2. Biblioteki procedur (toolkity) 27 Oprócz bogatej bazy wiedzy, Wolfram Alpha posiada tak»e peªen zestaw funkcji wcze±niejszego produktu rmy Wolfram - Mathematica, dzi¦ki czemu mo»e równie» odpowiada¢ na czysto matematyczne zapytania [48, 51]. 3.2 Biblioteki procedur (toolkity) 3.2.1 General Architecture for Text Engineering (GATE) Jest to zestaw narz¦dzi zaprojektowany pierwotnie na Uniwersytecie Sheeld na pocz¡tku 1995 roku i aktualnie u»ywanych przez szerokie grono naukowców i rm do zada« zwi¡zanych z NLP [7, 35]. • developer - GATE research team • j¦zyk - Java • zadania - tekst mining oraz ekstrakcja informacji 3.2.2 Modular Audio Recognition Framework (MARF) Jest to otwarta platforma badawcza. Skªada si¦ z kolekcji d¹wi¦ków, tekstów oraz algorytmów NLP napisanych w j¦zyku Java oraz zaaran»owanych w struktur¦ modularn¡ pozwalaj¡c¡ na ªatwe dodawanie nowych algorytmów [15, 39]. • developer - The MARF Research and Development Group • j¦zyk - Java • zadania - rozpoznawanie wzorców, AI, przetwarzanie sygnaªów, framework 3.2.3 MontyLingua Popularny Toolkit do NLP zawieraj¡cy biblioteki oraz programy do symbolicznego, jak i statystycznego NLP. Obsªuguje dwa j¦zyki - Java oraz Python. Wzbogacony jest równie» o baz¦ informacji powszechnych (common sense knowledge) o ±wiecie uzyskan¡ z Open Mind Common Sense (projekt MITu) [16, 40]. 3.2.4 Natural Language Toolkit (NLTK) Toolkit przygotowany do pracy nad symbolicznym i statystycznym NLP z wykorzystaniem j¦zyka Python. Zawiera graczne demonstracje oraz przykªadowe dane. Dodatkowo zostaªa napisana ksi¡»ka, która w peªny sposób omawia wszystkie metody, które zostaªy zawarte w toolkicie. Z tego wzgl¦du jest on idealnym narz¦dziem do nauki dla osób zajmuj¡cych si¦ NLP lub blisko z nim zwi¡zanymi zagadnieniami [17, 41]. NLTK zostaª szerzej opisany w nast¦pnym rozdziale. 28 3. Przegl¡d oprogramowania NLP 3.2.5 Unstructured Information Management Architecture (UIMA) Jest to programowa architektura do analizy nie zrestrukturyzowanych danych oraz integracji tego problemu z wyszukiwaniem informacji. Jednym z programów wykorzystuj¡cych UIMA jest Watson [28, 45]. • developer - IBM oraz Apache Software Foundation • j¦zyk - Java • zadania - tekst mining oraz ekstrakcja informacji 3.2.6 WordNet Leksykalna baza danych j¦zyka angielskiego. Grupuje sªowa w zestawy synonimów nazywanych synsets, zapewniaj¡c dodatkowo ich krótkie wyja±nienie oraz dostarcza znaczeniowe relacje mi¦dzy tymi zestawami. WordNet skªada si¦ z trzech osobnych baz danych dla: rzeczowników, czasowników oraz wspólnie przymiotników i przysªówków. Wersja 3.0 posiada: 117.097 rzeczowników, 11.488 czasowników, 22.141 przymiotników oraz 4.601 przysªówków[12]. Celem WordNet jest stworzenie sªownika oraz sªownika wyrazów bliskoznacznych w jednym, który jest bardziej instynktowny w u»yciu oraz wspieranie automatycznej analizy tekstowej. Baza danych oraz oprogramowanie jest dost¦pne za darmo na stronie projektu [52, 49]. 3.3 Korpusy 3.3.1 American National Corpus (ANC) Jest to b¦d¡cy ci¡gle w budowie, ogólny korpus angielszczyzny ameryka«skiej. Fundatorem projektu jest konsorcjum ANC, które zostaªo zaªo»one przez rmy bran»y komputerowej, wydawnictwa i instytucje naukowe w roku 1990. Ostatecznie na ANC ma skªada¢ si¦ rdze« tekstów, pod wzgl¦dem obj¦to±ci i struktury przypominaj¡cy BNC (100 mln segmentów) oraz kilkukrotnie wi¦kszy zbiór maksymalnie zró»nicowanego gatunkowo materiaªu [2, 13]. • Rozmiar: 22 mln. segmentów. • J¦zyk mówiony: 17 procent zasobów. • J¦zyk pisany: 83 procent zasobów. • Dost¦pno±¢: Odpªatnie przez LDC (75 dolarów). Darmowa próbka korpusu (Open ANC, 15 mln. sªów - pliki tekstowe i pliki z anotacj¡) wraz z dedykowanym narz¦dziem (ANC Tool) do pobrania ze strony projektu. 3.3. Korpusy 29 3.3.2 The British National Corpus (BNC) Brytyjski Korpus Narodowy jest ogólnym, reprezentatywnym korpusem j¦zyka brytyjskiego, zarówno pisanego jak i mówionego. Jego teksty dziel¡ si¦ na cztery gªówne kategorie: literatur¦, pras¦, j¦zyk akademicki i j¦zyk mówiony. Oprócz tego BNC zawiera materiaªy niepublikowane (np. teksty pocztówek, fragmenty esejów szkolnych, transkrypcje autentycznych rozmów). Dane w wi¦kszo±ci pochodz¡ z lat 1974-1993. Aby stworzy¢ korpus zrównowa»ony i w najlepszy sposób odzwierciedlaj¡cy caªoksztaªt angielszczyzny, podczas selekcjonowania tekstów brane byªy pod uwag¦: wiek, pªe¢, pochodzenie, status spoªeczny autorów tekstów i wypowiedzi. Prace nad korpusem rozpocz¦to w 1991 roku, a uko«czono w 1994. W skªad konsorcjum BNC wchodz¡ instytucje akademickie takie jak: British Library, Oxford University Computing Service i University of Lancaster oraz wydawnictwa: Chambers-Harrap, Longman i Oxford University Press. Projekt wspierany przez UK Department of Trade and Industry [3, 13]. • Rozmiar: 100 milionów segmentów. • J¦zyk mówiony: 10 procent zasobów. • J¦zyk pisany: 90 procent zasobów. • Dost¦pno±¢: z pocz¡tku wyª¡cznie odpªatny (kilka wersji licencji), obecnie istnieje równie» mo»liwo±¢ bezpªatnego przeszukiwania peªnego korpusu online za pomoc¡ interfejsów Uniwersytetu w Lancaster oraz BYU. Dost¦p do danych w wersji oine jest nadal wyª¡cznie odpªatny. 3.3.3 Brown Corpus Pierwszy elektroniczny korpus stworzony przez Henry'ego Kucera i W. Nelsona Francisa na Uniwersytecie Browna. Oryginalna wersja z roku 1961 posiada 500 próbek tekstowych podzielonych na 15 ró»nych kategorii, podzielonych na dwie grupy. Teksty informacyjne (374 próbek): • A. Press: Reportage (44), • B. Press: Editorial (27), • C. Press: Reviews (theatre, books, music, dance) (17), • D. Religion (17), • E. Skills and Hobbies (36), • F. Popular Lore (48), • G. Belles Lettres, Biography, Memoirs, etc. (75), • H. Miscellaneous (30), • J. Learned (80). Teksty kcyjne (126 próbek): • K. General Fiction (29), • L. Mystery and Detective Fiction (24), 30 3. Przegl¡d oprogramowania NLP • M. Science Fiction (6), • N. Adventure and Western Fiction (29), • P. Romance and Love Story (29), • R. Humor (9). Jedna z pó¹niejszych wersji zostaªa równie» w peªni oznakowana i to wªa±nie ona jest wykorzystywana jako jeden z korpusów wybranych do bada« w dalszej cz¦±ci tego dokumentu [4, 33]. • Rozmiar: 500 próbek (ponad 1 milion sªów). • Dost¦pno±¢: bezpªatny, zawarty mi¦dzy innymi w NLTK. Fragment korpusu The/ a t F u l t o n /np− t l County /nn− t l Grand/ j j − t l Jury /nn− t l s a i d / vbd F r i d a y / nr an / a t i n v e s t i g a t i o n /nn o f / i n A t l a n t a ' s / np$ r e c e n t / j j p r i m a r y /nn e l e c t i o n /nn produced / vbd ` ` / ` ` no / a t e v i d e n c e /nn ' ' / ' ' t h a t / c s any / d t i i r r e g u l a r i t i e s / nns t o o k / vbd p l a c e /nn . / . The/ a t j u r y /nn f u r t h e r / r b r s a i d / vbd i n / i n term−end /nn p r e s e n t m e n t s / nns t h a t / c s t h e / a t C i t y /nn− t l E x e c u t i v e / j j − t l Committee /nn− t l , / , which /wdt had / hvd o v e r − a l l / j j c h a r g e /nn o f / i n t h e / a t e l e c t i o n /nn , / , ` ` / ` ` d e s e r v e s / vbz t h e / a t p r a i s e /nn and / c c t h a n k s / nns o f / i n t h e / a t C i t y /nn− t l o f / i n − t l A t l a n t a /np− t l ' ' / ' ' f o r / i n t h e / a t manner /nn i n / i n which /wdt t h e / a t e l e c t i o n /nn was / bedz c o n d u c t e d / vbn . / . 3.3.4 Corpus of Contemporary American English (COCA) Zrównowa»ony korpus wspóªczesnego j¦zyka ameryka«skiego. Od 1990 roku dodawanych jest 20 milionów sªów rocznie, a sam korpus jest aktualizowany co 6-9 miesi¦cy. Stanowi on wyj¡tkowy zapis zmian we wspóªczesnym j¦zyku ameryka«skim [25, 13]. • Rozmiar: 385 milionów segmentów. • Dost¦pno±¢: bezpªatny dost¦p za pomoc¡ ocjalnej strony. W celu wielokrotnego u»ytku sugerowane zaªo»enie bezpªatnego konta. 3.3.5 Oxford English Dictionary (OED) Skªada si¦ z 2.2 miliona cytatów pochodz¡cych z Oxford English Dictionary (¹ródªa z lat 900-2000). Dost¦pny jest online za pomoc¡ wyszukiwarki BYU [19, 13]. • Rozmiar: 37 milionów segmentów. • Dost¦pno±¢: bezpªatny dost¦p ze strony BYU. 3.3. Korpusy 31 3.3.6 Penn Treebank Corpus Korpus udost¦pniony przez Linguistic Data Consortium. Jego zasoby s¡ nie tylko oznakowane, ale równie» sparsowane w postaci banku drzew rozkªadu gramatycznego zda« [26] • Rozmiar: ponad 1 milion sªów. • Dost¦pno±¢: cz¦±ciowo zawarty w NLTK. Fragment korpusu ( (S (NP−SBJ (NP (NNP P i e r r e ) (NNP Vinken ) ) ( , ,) (ADJP (NP (CD 6 1 ) (NNS y e a r s ) ) ( JJ o l d ) ) ( , ,) ) (VP (MD w i l l ) (VP (VB j o i n ) (NP (DT t h e ) (NN board ) ) (PP−CLR ( IN a s ) (NP (DT a ) ( JJ n o n e x e c u t i v e ) (NN d i r e c t o r ) ) ) (NP−TMP (NNP Nov . ) (CD 2 9 ) ) ) ) (. .) )) ( (S (NP−SBJ (NNP Mr . ) (NNP Vinken ) ) (VP (VBZ i s ) (NP−PRD (NP (NN chairman ) ) (PP ( IN o f ) (NP (NP (NNP E l s e v i e r ) (NNP N.V . ) ) ( , ,) (NP (DT t h e ) (NNP Dutch ) (VBG p u b l i s h i n g ) (NN group ) ) ) ) ) ) (. .) )) 3.3.7 TIME Magazine Corpus Korpus j¦zyka ameryka«ski zbudowany na podstawie tekstów z tygodnika TIME Magazine (publikowanych od roku 1923 do czasów obecnych). W jego skªad wchodzi ponad 275 000 tekstów [27, 13]. • Rozmiar: 100 milionów segmentów. • Dost¦pno±¢: bezpªatny dost¦p przez zaª¡czony link, w celu wielokrotnego u»ycia wymagane zaªo»enie bezpªatnego konta. Rozdziaª 4 Wykorzystanie NLTK do bada« metod statystycznych 4.1 Podstawy korzystania z Pythona i NLTK Poni»sza sekcja rozdziaªu zostaªa opracowana na podstawie [24] oraz [18]. Do obsªugi tego toolkita potrzebny jest Python w wersji co najmniej 2.4. Samo NLTK mo»na pobra¢ ze strony http://www.nltk.org/. Po uruchomieniu interpretera Pythona nale»y wpisa¢ komend¦: import nltk a nast¦pnie: nltk.download() aby móc ±ci¡gn¡¢ wszystkie potrzebne moduªy. Komenda ªaduj¡ca NLTK to interpretera: import nltk Komenda pobieraj¡ca wszystkie elementy z moduªu (przykªad dla moduªu book): from nltk.book import * Efekt w interpreterze: ∗∗∗ I n t r o d u c t o r y Examples f o r t h e NLTK Book ∗∗∗ Loading t e x t 1 , . . . , t e x t 9 and s e n t 1 , . . . , s e n t 9 Type t h e name o f t h e t e x t o r s e n t e n c e t o view i t . Type : ' t e x t s ( ) ' o r ' s e n t s ( ) ' t o l i s t t h e m a t e r i a l s . t e x t 1 : Moby Dick by Herman M e l v i l l e 1851 t e x t 2 : S e n s e and S e n s i b i l i t y by Jane Austen 1811 t e x t 3 : The Book o f G e n e s i s t e x t 4 : I n a u g u r a l A d d re s s Corpus t e x t 5 : Chat Corpus t e x t 6 : Monty Python and t h e Holy G r a i l t e x t 7 : Wall S t r e e t J o u r n a l t e x t 8 : P e r s o n a l s Corpus t e x t 9 : The Man Who Was Thursday by G . K . C h e s t e r t o n 1908 Ka»dy z tektów jest teraz dost¦pny poprzez wpisanie: text2 4.1. Podstawy korzystania z Pythona i NLTK 33 Aby u»y¢ jednej z funkcji NLTK nale»y najpierw wpisa¢ nazw¦ danych, na których ma by¢ zastosowana, a po kropce nazw¦ samej funkcji. Nast¦pnie w nawiasie wpisuje si¦ jej zmienne. Przykªad dla funkcji similar, która pokazuje nam jakie inne sªowa wyst¦puj¡ w tym samym kontek±cie co zadane: text4.similar("divided") Efekt w interpreterze: B u i l d i n g word−c o n t e x t i n d e x . . . made new not p a i d s e c u r e d u s e d abandoned a c c e p t e d a c c o m p l i s h e d a c q u i e s c e d a d m i n i s t e r e d a f f e c t e d a f f i r m e d ample a n t i c i p a t e d a p p l i e d asked a s s i s t e d assuaged assured Jedn¡ z ciekawych funkcji NLTK jest funkcja dispersion pokazuj¡ca wyst¦powanie wybranego wyrazu w przestrzeni tekstu: text1.dispersion_plot(["whale", "man", "ocean", "Moby", "Ahab"]) Efekt w interpreterze: Rysunek 4.1 Wyst¦powanie wyrazów: whale, man, ocean, Moby oraz Ahab, w tek±cie ksi¡»ki Moby Dick. Aby pozna¢ dªugo±¢ tekstu mo»na u»y¢ funkcji len, przy czym zlicza ona za równo wyrazy, jak i znaki interpunkcyjne: len(text4) 145735 Do wy±wietlenia niepowtarzalnych sªów wyst¦puj¡cych w tek±cie mo»na u»y¢ funkcji set: set(text3) 34 4. Wykorzystanie NLTK do bada« metod statystycznych Istnieje tak»e mo»liwo±¢ ich posortowanego wy±wietlenia: sorted(set(text4)) Ilo±¢ niepowtarzalnych sªów w tek±cie: len(set(text4)) 9754 Mo»na tak»e policzy¢ ile ±rednio jest wykorzystywane ka»de z tych sªów, przy czym wcze±niej potrzeba zaimportowa¢ do interpretera uªamki: from __future__ import division len(text4) / len(set(text4)) 14.941049825712529 Wyliczenie jak wiele razy dane sªowo wyst¦puje w tek±cie: text3.count("citizens") 230 Jaki procent caªego tekstu stanowi dane sªowo: 100 * text1.count('whale') / len(text1) 0.34736733136773013 Tekst jako list¦ sªów, mo»na zapisa¢ w Pythonie w nast¦puj¡cy sposób: sent = ['My', 'name', 'is', 'Bartek', '.'] Komendy wywoªuj¡ce poszczególne elementy listy: sent[0] 'My' sent[4] '.' sent[1:2] 'name' sent[1:] ['name', 'is', 'Bartek', '.'] sent[:-1] ['My', 'name', 'is', 'Bartek'] Je»eli chce si¦, aby Python napisaª jaki± tekst lub te» wypisaª podczas dziaªania programu warto±¢ zmiennej nale»y u»y¢ komendy print: print 'Writing.' Writing. 4.2. Lista moduªów zawartych w NLTK 4.2 35 Lista moduªów zawartych w NLTK Zadanie Dost¦p do korpusów Moduª nltk.corpus Przetwarzanie ci¡gów znaków nltk.tokenize, nltk.stem Wyszukiwanie kolokacji Oznaczanie cz¦±ci mowy Klasykowanie nltk.collocations nltk.tag nltk.classify, nltk.cluster Segmentacja nltk.chunk Parsowanie nltk.parse Interpretacja semantyczna nltk.sem, nltk.inference Prawdopodobie«stwo i przybli»enia Aplikacje nltk.probability nltk.app, nltk.chat Funkcja standaryzowany interfejs dla korpusów i leksykonów tokenizery, tokenizery sentencji, stemmery test t Welcha, chi-kwadrat n-gram, backo, Brill, HMM, TnT drzewa decyzyjne, maksimum entropii, naiwny Bayes, EM, metoda k-±rednich regularne wzorce, n-gram, named-entity wykresy, oparte na atrybutach, unikacja, probabilistyka, zale»no±ci rachunek lambda, logika pierwszego rz¦du, sprawdzanie modelu rozkªad cz¦sto±ci, wygªadzony rozkªad probabilistyczny graczny program konkordacyjny, parsery, wyszukiwarka WordNet, chatboty, Tabela. 4.1 Opis moduªów zawartych w NLTK 4.3 Badanie metod oznaczania cz¦±ci mowy 4.3.1 Dane ucz¡ce i testowe Do przeprowadzenia nauczania i testów poszczególnych taggerów wykorzystano korpusy zawarte w NLTK posiadaj¡ce oznaczone sªownictwo - korpus Browna oraz korpus Penn Treebank. Do cz¦±ci treningowej taggera brano 90% danych, a do cz¦±ci testowej pozostaªe 10%. Przeprowadzono trzy badania, a jedne z wyników zaczerpni¦to z [18]: • dla kategorii news z korpusu Browna wyniki zostaªy cz¦±ciowo zacytowane oraz dla kilku przypadków samodzielnie opracowane; news zawieraj¡ 4160 oznaczonych zda«, 100 z nich u»yto jako dane testuj¡ce, pozostaªe jako ucz¡ce, • dla kategorii reviews z korpusu Browna zawieraj¡cej 1751 oznaczonych zda«, 175 z nich u»yto jako danych testuj¡cych, a pozostaªe jako dane ucz¡ce, • dla caªego korpusu Browna zawieraj¡cego 57340 oznaczonych zda«, 5734 z nich u»yto jako danych testuj¡cych, a pozostaªe jako dane ucz¡ce, • dla cz¦±ciowo dost¦pnego w NLTK korpusu Penn Treebank zawieraj¡cego 3914 oznaczonych zda«, 400 z nich u»yto jako danych testuj¡cych, a pozostaªe jako dane ucz¡ce. 36 4. Wykorzystanie NLTK do bada« metod statystycznych 4.3.2 Przykªad 01 - Default Tagger Opis Najprostsz¡ dost¦pn¡ metod¡ oznaczania jest domy±lne oznaczanie, które ka»dej cz¦±ci zdania przyporz¡dkowuje ten sam znacznik. W poni»szym przykªadzie jest to znacznik oznaczaj¡cy rzeczownik. Przykªad opracowany na podstawie przykªadów z [18]. Program import n l t k from n l t k . c o r p u s i m p o r t t r e e b a n k treebank_tagged = treebank . tagged_sents ( ) treebank_text = treebank . s e n t s ( ) treebank_train = treebank_tagged [ 4 0 0 : ] treebank_test = treebank_tagged [ : 4 0 0 ] t e s t _ s e n t = n l t k . t a g . untag ( t r e e b a n k _ t e s t [ 0 ] ) d e f a u l t _ t a g g e r = n l t k . D e f a u l t T a g g e r ( 'NN' ) default_tagger . tag ( test_sent ) p r i n t ' Accuracy : %4.1 f %%' % ( 100.0 ∗ default_tagger . evaluate ( treebank_test )) Wyniki Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 14.6% 12.7% 13.1% 12.6% Tabela. 4.2 Skuteczno±¢ Default Taggera Wnioski Ta metoda nie wykazuje si¦ wysok¡ skuteczno±ci¡, poniewa» zale»y od procentowej ilo±ci wyst¦powania danego znacznika (w tym przypadku - NN, czyli rzeczownika) w korpusie. Jednak»e sama metoda mo»e mie¢ zastosowanie w dalszych przykªadach, automatycznie oznaczaj¡c nieznane sªowa jako rzeczowniki. 4.3.3 Przykªad 02 - Regexp Tagger Opis Nast¦pna metoda przydziela znaczniki wedªug odnalezionych wzorców ci¡gów liter w poszczególnych wyrazach. Przykªadowe wzorce zaczerpni¦te z przykªadów dost¦pnych na [18]. 4.3. Badanie metod oznaczania cz¦±ci mowy 37 Program # −∗− c o d i n g : cp1250 −∗− import n l t k from n l t k . c o r p u s i m p o r t t r e e b a n k treebank_tagged = treebank . tagged_sents ( ) treebank_text = treebank . s e n t s ( ) treebank_train = treebank_tagged [ 4 0 0 : ] treebank_test = treebank_tagged [ : 4 0 0 ] t e s t _ s e n t = n l t k . t a g . untag ( t r e e b a n k _ t e s t [ 0 ] ) r e g e x p _ t a g g e r = n l t k . RegexpTagger ( [ ( r '^ − ?[0 − 9]+(.[0 − 9]+)? $ ' , 'CD' ) , # l i c z e b n i k i gªówne ( r ' ( The | t h e |A| a | An | an ) $ ' , 'AT' ) , # p r z e d i m k i ( r ' . ∗ a b l e $ ' , ' JJ ' ) , # przymiotniki ( r ' . ∗ n e s s $ ' , 'NN' ) , # rzeczowniki stworzne # z przymiotników ( r ' . ∗ l y $ ' , 'RB' ) , # przysªówki ( r ' . ∗ s$ ' , 'NNS' ) , # r z e c z o w n i k i l i c z b y mnogiej ( r ' . ∗ i n g $ ' , 'VBG' ) , # formy g e r u n d i a l n e ( r ' . ∗ ed$ ' , 'VBD' ) , # czasowniki w formie p r z e s z ª e j ( r ' . ∗ ' , 'NN' ) # rzeczowniki ]) regexp_tagger . tag ( test_sent ) p r i n t ' Accuracy : %4.1 f %%' % ( 100.0 ∗ regexp_tagger . evaluate ( treebank_test ) ) Wyniki Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 33.1% 29.3% 30.2% 24.3% Tabela. 4.3 Skuteczno±¢ Regexp Taggera Wnioski Ten sposób daje prawie dwukrotnie lepsze wyniki od poprzedniego, ale wiele zale»y tutaj od dobrze wybranych wzorców dopasowania sªów. Jednak»e jest to znacznie lepsza alternatyw¡ dla default tagger, jako pomocnicza metoda okre±lenia znacznika w przypadku natraenia na nieznane sªowo w taggerach u»ywaj¡cych metod ucz¡cych si¦ na podstawie korpusu. 4.3.4 Przykªad 03 - Unigram Tagger Opis Program uczy si¦ na podstawie korpusu, jakie znaczniki wyst¦puj¡ w powi¡zaniu z danym sªowem, a nast¦pnie automatycznie zawsze przyznaje ten z najwi¦ksz¡ szans¡ na pojawie- 38 4. Wykorzystanie NLTK do bada« metod statystycznych nie si¦. Poni»sze przykªady s¡ zmodykowanymi przykªadami dost¦pnymi na [18]. Program import n l t k from n l t k . c o r p u s i m p o r t t r e e b a n k treebank_tagged = treebank . tagged_sents ( ) treebank_text = treebank . s e n t s ( ) treebank_train = treebank_tagged [ 4 0 0 : ] treebank_test = treebank_tagged [ : 4 0 0 ] t e s t _ s e n t = n l t k . t a g . untag ( t r e e b a n k _ t e s t [ 0 ] ) unigram_tagger = n l t k . UnigramTagger ( t r e e b a n k _ t r a i n ) unigram_tagger . t a g ( t e s t _ s e n t ) p r i n t ' Accuracy : %4.1 f %%' % ( 1 0 0 . 0 ∗ unigram_tagger . e v a l u a t e ( t r e e b a n k _ t e s t ) ) Wyniki Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 85.6% 76.1% 86.4% 85.9% Tabela. 4.4 Skuteczno±¢ Unigram Taggera Wnioski Wyniki drastycznie wzrosªy, co pokazuje, jak skuteczne s¡ nawet najprostsze metody statystyczne w uczeniu taggerów. Du»ym minusem tego sposobu jest fakt, »e w przypadku nieznajomo±ci wyrazu zostaje mu przyznana warto±¢ None. Aby tego unikn¡¢ mo»na doda¢ drugi tagger (backo tagger), do którego b¦dzie si¦ odnosiª w przypadku takich sytuacji. Poni»ej zastosowano do tego regexp tagger. Program # −∗− c o d i n g : cp1250 −∗− import n l t k from n l t k . c o r p u s i m p o r t t r e e b a n k treebank_tagged = treebank . tagged_sents ( ) treebank_text = treebank . s e n t s ( ) treebank_train = treebank_tagged [ 4 0 0 : ] treebank_test = treebank_tagged [ : 4 0 0 ] t e s t _ s e n t = n l t k . t a g . untag ( t r e e b a n k _ t e s t [ 0 ] ) r e g e x p _ t a g g e r = n l t k . RegexpTagger ( [ ( r '^ − ?[0 − 9]+(.[0 − 9]+)? $ ' , 'CD' ) , # l i c z e b n i k i gªówne ( r ' ( The | t h e |A| a | An | an ) $ ' , 'AT' ) , # p r z e d i m k i 4.3. Badanie metod oznaczania cz¦±ci mowy ( r ' . ∗ able$ ' , ( r ' . ∗ ness$ ' , (r (r (r (r (r ' JJ ' ) , 'NN' ) , ' . ∗ l y $ ' , 'RB' ) , ' . ∗ s$ ' , 'NNS' ) , ' . ∗ i n g $ ' , 'VBG' ) , ' . ∗ ed$ ' , 'VBD' ) , ' . ∗ ' , 'NN' ) 39 # # # # # # # # przymiotniki rzeczowniki stworzne z przymiotników przysªówki r z e c z o w n i k i l i c z b y mnogiej formy g e r u n d i a l n e czasowniki w formie p r z e s z ª e j rzeczowniki ]) unigram_tagger = n l t k . UnigramTagger ( t r e e b a n k _ t r a i n , b a c k o f f=r e g e x p _ t a g g e r ) unigram_tagger . t a g ( t e s t _ s e n t ) p r i n t ' Accuracy : %4.1 f %%' % ( 1 0 0 . 0 ∗ unigram_tagger_2 . e v a l u a t e ( t r e e b a n k _ t e s t ) ) Wyniki Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 88.2% 82.6% 87.7% 89.7% Tabela. 4.5 Skuteczno±¢ Unigram Taggera z Regexp Taggerem Wnioski Zastosowanie regexp taggera, jako backo taggera zapewniªo nam kilkuprocentowy wzrost skuteczno±ci. Ze wzgl¦du na jego u»yteczno±¢ jest on tak»e obecny w dalszych przykªadach. 4.3.5 Przykªad 04 - Bigram Tagger Opis Jest to rozwini¦cie poprzedniej metody a zarazem wykorzystanie ªa«cuchu Markowa (patrz rozdziaª 2.3). Program uczy si¦ na podstawie korpusu, jakie znaczniki wyst¦puj¡ w powi¡zaniu z danym sªowem, a nast¦pnie analizuje ich prawdopodobie«stwo wyst¡pienia po poprzedzaj¡cym ich znaczniku, wybieraj¡c ten z najwi¦ksz¡ szans¡ pojawienia si¦. Badania wykonano na postawie przerobionych przykªadów dost¦pnych na [18]. Program # −∗− c o d i n g : cp1250 −∗− import n l t k from n l t k . c o r p u s i m p o r t t r e e b a n k treebank_tagged = treebank . tagged_sents ( ) treebank_text = treebank . s e n t s ( ) treebank_train = treebank_tagged [ 4 0 0 : ] 40 4. Wykorzystanie NLTK do bada« metod statystycznych treebank_test = treebank_tagged [ : 4 0 0 ] t e s t _ s e n t = n l t k . t a g . untag ( t r e e b a n k _ t e s t [ 0 ] ) r e g e x p _ t a g g e r = n l t k . RegexpTagger ( [ ( r '^ − ?[0 − 9]+(.[0 − 9]+)? $ ' , 'CD' ) , # l i c z e b n i k i gªówne ( r ' ( The | t h e |A| a | An | an ) $ ' , 'AT' ) , # p r z e d i m k i ( r ' . ∗ a b l e $ ' , ' JJ ' ) , # przymiotniki ( r ' . ∗ n e s s $ ' , 'NN' ) , # rzeczowniki stworzne # z przymiotników ( r ' . ∗ l y $ ' , 'RB' ) , # przysªówki ( r ' . ∗ s$ ' , 'NNS' ) , # r z e c z o w n i k i l i c z b y mnogiej ( r ' . ∗ i n g $ ' , 'VBG' ) , # formy g e r u n d i a l n e ( r ' . ∗ ed$ ' , 'VBD' ) , # czasowniki w formie p r z e s z ª e j ( r ' . ∗ ' , 'NN' ) # rzeczowniki ]) unigram_tagger = n l t k . UnigramTagger ( t r e e b a n k _ t r a i n , b a c k o f f=r e g e x p _ t a g g e r ) bigram_tagger = n l t k . BigramTagger ( t r e e b a n k _ t r a i n , b a c k o f f=unigram_tagger ) p r i n t ' Accuracy : %4.1 f %%' % ( 1 0 0 . 0 ∗ bigram_tagger . e v a l u a t e ( t r e e b a n k _ t e s t ) ) Wyniki Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 13.1% 8.0% 22.2% 13.2% Tabela. 4.6 Skuteczno±¢ Bigram Taggera Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 86.9% 76.7% 88.1% 86.9% Tabela. 4.7 Skuteczno±¢ Bigram Taggera z Unigram Taggerem Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 89.6% 83.2% 89.4% 90.7% Tabela. 4.8 Skuteczno±¢ Bigram Taggera z Unigram oraz Regexp Taggerem 4.3. Badanie metod oznaczania cz¦±ci mowy 41 Wnioski Samodzielnie dziaªaj¡cy bigram tagger jest bardzo maªo skuteczny. Dzieje si¦ tak ze wzgl¦du na problemy, jakie sprawiaj¡ taggerowi wyrazy, które nie pojawiªy si¦ w danych ucz¡cych. Tagger dziaªa prawidªowo do czasu natraenia na nieznane sªowo, któremu przydziela automatycznie znacznik None. Poniewa» w danych ucz¡cych nie ma »adnej kombinacji znaczniku None z innym znacznikiem, kolejne sªowa, chocia» s¡ znane z uczenia, pozostaj¡ równie» nieoznaczone. Aby tego unikn¡¢ razem z bigram taggerem zastosowano unigram taggerem w roli backo taggera. Dzi¦ki temu zabiegowi wyniki poprawiªy si¦ znacz¡co w porównaniu do samodzielnego unigram taggera. Minusem takiego rozwi¡zania jest wi¦ksze zu»ycie pami¦ci. Zastosowanie regexp taggera jeszcze bardziej poprawiªo dokªadno±¢. 4.3.6 Przykªad 05 - Trigram Tagger Opis Analogicznie do poprzedniego taggera, tym razem jednak podejmuj¡cy decyzj¦ na podstawie dwóch poprzedzaj¡cych znaczników. Przykªad opracowano na podstawie przykªadów z [18]. Program # −∗− c o d i n g : cp1250 −∗− import n l t k from n l t k . c o r p u s i m p o r t t r e e b a n k treebank_tagged = treebank . tagged_sents ( ) treebank_text = treebank . s e n t s ( ) treebank_train = treebank_tagged [ 4 0 0 : ] treebank_test = treebank_tagged [ : 4 0 0 ] t e s t _ s e n t = n l t k . t a g . untag ( t r e e b a n k _ t e s t [ 0 ] ) r e g e x p _ t a g g e r = n l t k . RegexpTagger ( [ ( r '^ − ?[0 − 9]+(.[0 − 9]+)? $ ' , 'CD' ) , # l i c z e b n i k i gªówne ( r ' ( The | t h e |A| a | An | an ) $ ' , 'AT' ) , # p r z e d i m k i ( r ' . ∗ a b l e $ ' , ' JJ ' ) , # przymiotniki ( r ' . ∗ n e s s $ ' , 'NN' ) , # rzeczowniki stworzne # z przymiotników ( r ' . ∗ l y $ ' , 'RB' ) , # przysªówki ( r ' . ∗ s$ ' , 'NNS' ) , # r z e c z o w n i k i l i c z b y mnogiej ( r ' . ∗ i n g $ ' , 'VBG' ) , # formy g e r u n d i a l n e ( r ' . ∗ ed$ ' , 'VBD' ) , # czasowniki w formie p r z e s z ª e j ( r ' . ∗ ' , 'NN' ) # rzeczowniki ]) unigram_tagger = n l t k . UnigramTagger ( t r e e b a n k _ t r a i n , b a c k o f f=r e g e x p _ t a g g e r ) bigram_tagger = n l t k . BigramTagger ( t r e e b a n k _ t r a i n , 42 4. Wykorzystanie NLTK do bada« metod statystycznych b a c k o f f=unigram_tagger ) t r i g r a m _ t a g g e r = n l t k . TrigramTagger ( t r e e b a n k _ t r a i n , b a c k o f f=bigram_tagger ) p r i n t ' Accuracy : %4.1 f %%' % ( 100.0 ∗ trigram_tagger . evaluate ( treebank_test ) ) Wyniki Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 7.5% 5.5% 11.2% 7.9% Tabela. 4.9 Skuteczno±¢ Trigram Taggera Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 86.2% 76.7% 88.1% 86.8% Tabela. 4.10 Skuteczno±¢ Trigram Taggera z Uni i Bigram Taggerem Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 89.0% 83.2% 89.4% 90.7% Tabela. 4.11 Skuteczno±¢ Trigram Taggera z Uni, Bi oraz Regexp Taggerem Wnioski Wyniki dla samodzielnego trigram taggera s¡ jeszcze gorsze ni» w przypadku bigram taggera z analogicznych powodów. Dodanie unigram taggera i bigram taggera jako backo taggerów zdecydowanie je poprawia, jednak wzrost skuteczno±ci jest minimalny w porównaniu do tak wspomaganego bigram taggera. Ze wzgl¦du na coraz wi¦ksz¡ ilo±¢ pami¦ci, jaka musi by¢ po±wi¦cona na opracowania takiego taggera oraz zwi¦kszaj¡cy si¦ czas pracy, trigram tagger jest najwi¦kszym n-gram taggerem, jaki jest opªacalny do utworzenia. 4.3.7 Przykªad 06 - Brill Tagger Opis Jest to metoda wykorzystuj¡ca unigram tagger do uczenia pierwotnego, a nast¦pnie wyszukuj¡ca u»yteczne reguªy poprawiaj¡ce dziaªanie taggera. W poni»szym przypadku ilo±¢ reguª zostaªa ograniczona do 10 najlepszych (najcz¦±ciej si¦ pojawiaj¡cych). Badanie wykonane na postawie zmodykowanego przykªadu z [18]. 4.3. Badanie metod oznaczania cz¦±ci mowy 43 Program # −∗− c o d i n g : cp1250 −∗− import n l t k from n l t k . c o r p u s i m p o r t t r e e b a n k from n l t k . t a g . b r i l l i m p o r t ∗ treebank_tagged = treebank . tagged_sents ( ) treebank_text = treebank . s e n t s ( ) treebank_train = treebank_tagged [ 4 0 0 : ] treebank_test = treebank_tagged [ : 4 0 0 ] t e s t _ s e n t = n l t k . t a g . untag ( t r e e b a n k _ t e s t [ 0 ] ) r e g e x p _ t a g g e r = n l t k . RegexpTagger ( [ ( r '^ − ?[0 − 9]+(.[0 − 9]+)? $ ' , 'CD' ) , # l i c z e b n i k i gªówne ( r ' ( The | t h e |A| a | An | an ) $ ' , 'AT' ) , # p r z e d i m k i ( r ' . ∗ a b l e $ ' , ' JJ ' ) , # przymiotniki ( r ' . ∗ n e s s $ ' , 'NN' ) , # rzeczowniki stworzne # z przymiotników ( r ' . ∗ l y $ ' , 'RB' ) , # przysªówki ( r ' . ∗ s$ ' , 'NNS' ) , # r z e c z o w n i k i l i c z b y mnogiej ( r ' . ∗ i n g $ ' , 'VBG' ) , # formy g e r u n d i a l n e ( r ' . ∗ ed$ ' , 'VBD' ) , # czasowniki w formie p r z e s z ª e j ( r ' . ∗ ' , 'NN' ) # rzeczowniki ]) unigram_tagger_2 = n l t k . UnigramTagger ( t r e e b a n k _ t r a i n , b a c k o f f=r e g e x p _ t a g g e r ) templates = [ SymmetricProximateTokensTemplate ( ProximateTagsRule , ( 1 , 1 ) ) , SymmetricProximateTokensTemplate ( ProximateTagsRule , ( 2 , 2 ) ) , SymmetricProximateTokensTemplate ( ProximateTagsRule , ( 1 , 2 ) ) , SymmetricProximateTokensTemplate ( ProximateTagsRule , ( 1 , 3 ) ) , SymmetricProximateTokensTemplate ( ProximateWordsRule , ( 1 , 1 ) ) , SymmetricProximateTokensTemplate ( ProximateWordsRule , ( 2 , 2 ) ) , SymmetricProximateTokensTemplate ( ProximateWordsRule , ( 1 , 2 ) ) , SymmetricProximateTokensTemplate ( ProximateWordsRule , ( 1 , 3 ) ) , ProximateTokensTemplate ( ProximateTagsRule , ( − 1 , − 1) , ( 1 , 1 ) ) , ProximateTokensTemplate ( ProximateWordsRule , ( − 1 , − 1) , ( 1 , 1 ) ) , ] t r a i n e r = F a s t B r i l l T a g g e r T r a i n e r ( i n i t i a l _ t a g g e r=unigram_tagger_2 , t e m p l a t e s=t e m p l a t e s , t r a c e =3 , d e t e r m i n i s t i c=True ) b r i l l _ t a g g e r = t r a i n e r . t r a i n ( t r e e b a n k _ t r a i n , max_rules =10) b r i l l _ t a g g e r . tag ( test_sent ) p r i n t ' Accuracy : %4.1 f %%' % ( 100.0 ∗ b ri l l _ ta g g er . evaluate ( treebank_test )) Powstaªy zbiór reguª T r a i n i n g B r i l l t a g g e r on 3514 s e n t e n c e s . . . Finding i n i t i a l u s e f u l r u l e s . . . Found 41222 u s e f u l r u l e s . 44 4. Wykorzystanie NLTK do bada« metod statystycznych B r o k e n | S F O | S c o r e = F i x e d − Broken c i t | R F i x e d = num t a g s changed i n c o r r e c t −> c o r r e c t o x h | u Broken = num t a g s changed c o r r e c t −> i n c o r r e c t r e e | l Other = num t a g s changed i n c o r r e c t −> i n c o r r e c t e d r | e −−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 102 159 57 1 | NN −> VB i f t h e t a g o f t h e p r e c e d i n g word i s 'TO' 80 82 2 0 | VBP −> VB i f t h e t a g o f words i − 3 . . . i −1 i s 'MD' 74 74 0 0 | NN −> VB i f t h e t a g o f t h e p r e c e d i n g word i s 'MD' 67 73 6 0 | VBD −> VBN i f t h e t a g o f words i − 2 . . . i −1 i s 'VBZ' 66 71 5 5 | IN −> WDT i f t h e t e x t o f t h e f o l l o w i n g word i s | ' ∗ T∗− 1 ' 61 61 0 0 | VBP −> VB i f t h e t a g o f t h e p r e c e d i n g word i s 'TO' 60 68 8 0 | VBD −> VBN i f t h e t a g o f words i − 2 . . . i −1 i s 'VBD' 52 52 0 1 | POS −> VBZ i f t h e t a g o f words i − 2 . . . i −1 i s 'PRP' 48 51 3 0 | VBD −> VBN i f t h e t a g o f words i − 2 . . . i −1 i s 'VBP' 45 61 16 2 | VB −> VBP i f t h e t a g o f t h e p r e c e d i n g word i s | 'NNS' Wyniki Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 89.3% 82.5% 88.8% 91.0% Tabela. 4.12 Skuteczno±¢ Brill Taggera Wnioski Bardzo u»yteczna metoda, poprawiaj¡ca wcze±niej uzyskane wyniki dokªadno±ci. Jednak»e jej czas dziaªania na bardzo du»ych korpusach, takich jak na przykªad caªy korpus Browna jest kilkana±cie razy wi¦kszy od poprzednich metod. 4.3.8 Przykªad 07 - HMM Tagger Opis Jest to metoda wykorzystuj¡ca ukryty model Markowa (patrz rozdziaª 2.3). Przykªad przygotowany na postawie [18] oraz [24]. Program import n l t k from n l t k . t a g .hmm i m p o r t ∗ 4.3. Badanie metod oznaczania cz¦±ci mowy 45 from n l t k . p r o b a b i l i t y i m p o r t ∗ from n l t k . c o r p u s i m p o r t t r e e b a n k treebank_tagged = treebank . tagged_sents ( ) treebank_text = treebank . s e n t s ( ) treebank_train = treebank_tagged [ 4 0 0 : ] treebank_test = treebank_tagged [ : 4 0 0 ] tag_set = l i s t ( s e t ( [ tag f o r s e nt in treebank_tagged f o r ( word , t a g ) i n s e n t ] ) ) s ym b ol s = l i s t ( s e t ( [ word f o r s e n t i n t r e e b a n k _ t a g g e d f o r ( word , t a g ) i n s e n t ] ) ) t r a i n e r = n l t k . HiddenMarkovModelTrainer ( ta g _s et , s y mb o ls ) t e s t _ s e n t = n l t k . t a g . untag ( t r e e b a n k _ t e s t [ 0 ] ) hmm_tagger = t r a i n e r . t r a i n _ s u p e r v i s e d ( t r e e b a n k _ t r a i n , e s t i m a t o r=W i t t e n B e l l P r o b D i s t ) hmm_tagger . t a g ( t e s t _ s e n t ) p r i n t ' Accuracy : %4.1 f %%' % ( 1 0 0 . 0 ∗ hmm_tagger . e v a l u a t e ( t r e e b a n k _ t e s t ) ) Wyniki Dane ucz¡ce i testowe Korpus Browna (kategoria - news) Korpus Browna (kategoria - reviews) Korpus Browna (caªy) Korpus Penn Treebank Dokªadno±¢ taggera 92.0% 84.7% 91.8% 92.1% Tabela. 4.13 Skuteczno±¢ HMM Taggera Wnioski Metoda ta, gdy zastosowany zostanie dobry estymator, prezentuje najlepsze wyniki z po±ród wszystkich zaprezentowanych. Niestety ze wzgl¦du na ilo±¢ potrzebnych do wykonania operacji znacznie obci¡»a komputer. W przypadku sªabszych parametrów sprz¦towych przeprowadzenie testu dla du»ych korpusów (na przykªad caªy korpus Browna) zajmuje kilka godzin. 4.3.9 Podsumowanie Jak mo»na wywnioskowa¢ na podstawie zaprezentowanych wyników, metody statystyczne wykazuj¡ si¦ bardzo wysok¡ skuteczno±ci¡, przy minimalnym nakªadzie pracy ze strony czªowieka. Jedynym ich minusem jest niemo»liwo±¢ okre±lania znacznika dla sªów, które nie pojawiªy si¦ w korpusach trenuj¡cych. Ten problem mo»na jednak w bardzo ªatwy sposób rozwi¡za¢ poprzez dodatkowe zastosowanie metod reguªowych przy tworzeniu taggera. 46 4.4 4. Wykorzystanie NLTK do bada« metod statystycznych Badanie metod segmentacji tekstu 4.4.1 Wst¦p Segmentacja tekstu (ang. chunkingu) jest operacj¡ maj¡ca na celu podzielenie zdania na mniejsze, powi¡zane ze sob¡ cz¦±ci, takie jak na przykªad wyra»enia rzeczownikowe. Poni»szy rysunek prezentuje to na przykªadzie zdania: We saw the yellow dog. Rysunek 4.2 Przykªad segmentacji tekstu [24] Do przeprowadzania tej operacji korzysta si¦ najcz¦±ciej z dodatkowego zestawu znaczników zwanych IOB, gdzie I (inside - w ±rodku), O (outside - na zewn¡trz) oraz B (begin - pocz¡tek). Znaczy to, »e znacznik B pokazuje pocz¡tek wyra»enia, kolejne znaczniki I jego dalsze kawaªki, do czasu natraenia na znacznik O nie b¦d¡cy ju» jego cz¦±ci¡. Rysunek 4.3 Przykªad zastosowania znaczników IOB [24] 4.4.2 Przykªad 01 - Regexp Chunker Opis Analogicznie do Regexp Taggera, jest to chunker, który wyszukuje wzorce i na ich postawie dzieli zdanie na cz¦±ci. Kod ¹ródªowy u»yty do przeprowadzania testów zastaª zaczerpni¦ty i zmodykowany z [24] oraz [20]. Program import n l t k from n l t k . c o r p u s i m p o r t treebank_chunk t e s t _ s e n t s = treebank_chunk . chunked_sents ( ) grammar = ( r ' ' ' NP: {<DT>?<NN.∗ >+} # chunk o p t i o n a l d e t e r m i n e r w i t h nouns <JJ>{}<NN. ∗ > # merge a d j e c t i v e w i t h noun chunk PP : {<IN>} # chunk p r e p o s i t i o n 4.4. Badanie metod segmentacji tekstu 47 VP: {<MD>?<VB. ∗ >} # chunk o p t i o n a l modal w i t h v e r b ' ' ') c h u n k e r = n l t k . R e g e x p P a r s e r ( grammar ) s c o r e = chunker . e v a l u a t e ( t e s t _ s e n t s ) p r i n t ' Accuracy : %4.1 f %%' % ( 100.0 ∗ score . accuracy ( ) ) Wyniki Dane ucz¡ce i testowe Korpus CoNLL Korpus Penn Treebank Chunk Dokªadno±¢ chunkera 61.5% 49.0% Tabela. 4.14 Skuteczno±¢ Regexp Chunkera Wnioski Jak wida¢ dla tak prostych reguª metoda ta daje ±redni¡ dokªadno±¢. W przypadku zastosowania wi¦kszej ich ilo±ci dokªadno±¢ zacznie wzrasta¢. Jednak samodzielne opracowywanie reguª jest zaj¦ciem czasochªonnym i daj¡cym sªabe efekty w porównaniu do ilo±ci pracy jak¡ trzeba wykona¢. 4.4.3 Przykªad 02 - Unigram Chunker Opis Chunker dziaªaj¡cy analogicznie do taggera o tej samej nazwie. Przypisuje on znacznikom oznaczaj¡cym cz¦±ci mowy najbardziej prawdopodobne znaczniki IOB. Program zostaª napisany na podstawie przykªadów dost¦pnych w [24] oraz [20]. Program import n l t k from n l t k . c o r p u s i m p o r t treebank_chunk c l a s s UnigramChunker ( n l t k . ChunkParserI ) : d e f __init__ ( s e l f , t r a i n _ s e n t s ) : t r a i n _ d a t a = [ [ ( t , c ) f o r w, t , c i n n l t k . chunk . t r e e 2 c o n l l t a g s ( s e n t ) ] for sent in train_sents ] s e l f . t a g g e r = n l t k . UnigramTagger ( t r a i n _ d a t a ) def parse ( s e l f , sentence ) : pos_tags = [ pos f o r ( word , pos ) i n s e n t e n c e ] tagged_pos_tags = s e l f . t a g g e r . t a g ( pos_tags ) c h u n k t a g s = [ chunktag f o r ( pos , chunktag ) i n tagged_pos_tags ] c o n l l t a g s = [ ( word , pos , chunktag ) f o r ( ( word , pos ) , chunktag ) in z i p ( sentence , chunktags ) ] 48 4. Wykorzystanie NLTK do bada« metod statystycznych r e t u r n n l t k . chunk . c o n l l t a g s 2 t r e e ( c o n l l t a g s ) t e s t _ s e n t s = treebank_chunk . chunked_sents ( ) [ : 3 6 0 0 ] t r a i n _ s e n t s = treebank_chunk . chunked_sents ( ) [ 3 6 0 0 : ] unigram_chunker = UnigramChunker ( t r a i n _ s e n t s ) s c o r e = unigram_chunker . e v a l u a t e ( t e s t _ s e n t s ) p r i n t ' Accuracy : %4.1 f %%' % ( 100.0 ∗ score . accuracy ( ) ) Wyniki Dane ucz¡ce i testowe Korpus CoNLL Korpus Penn Treebank Chunk Dokªadno±¢ chunkera 86.5% 96.2% Tabela. 4.15 Skuteczno±¢ Unigram Chunkera Wnioski Po raz kolejny metody statystyczne w du»o szybszy i ªatwiejszy sposób rozwi¡zuj¡ zadanie, z którym inne podej±cia (np. reguªowe) maj¡ znacznie wi¦kszy problem. Chunker prezentuje wysoki poziom dokªadno±ci swojego dziaªania. 4.4.4 Przykªad 03 - Bigram Chunker Opis Chunker ten przy przydzielaniu znaczników IOB, kieruje si¦ równie» znacznikiem go poprzedzaj¡cym. Przykªad opracowany na podstawie przykªadów z [24] oraz [20]. Program import n l t k from n l t k . c o r p u s i m p o r t treebank_chunk c l a s s BigramChunker ( n l t k . ChunkParserI ) : d e f __init__ ( s e l f , t r a i n _ s e n t s ) : t r a i n _ d a t a = [ [ ( t , c ) f o r w, t , c i n n l t k . chunk . t r e e 2 c o n l l t a g s ( s e n t ) ] for sent in train_sents ] s e l f . t a g g e r = n l t k . BigramTagger ( t r a i n _ d a t a ) def parse ( s e l f , sentence ) : pos_tags = [ pos f o r ( word , pos ) i n s e n t e n c e ] tagged_pos_tags = s e l f . t a g g e r . t a g ( pos_tags ) c h u n k t a g s = [ chunktag f o r ( pos , chunktag ) i n tagged_pos_tags ] c o n l l t a g s = [ ( word , pos , chunktag ) f o r ( ( word , pos ) , chunktag ) in z i p ( sentence , chunktags ) ] r e t u r n n l t k . chunk . c o n l l t a g s 2 t r e e ( c o n l l t a g s ) 4.5. Analiza gramatyczna wypowiedzi 49 t e s t _ s e n t s = treebank_chunk . chunked_sents ( ) [ : 3 6 0 0 ] t r a i n _ s e n t s = treebank_chunk . chunked_sents ( ) [ 3 6 0 0 : ] bigram_chunker = BigramChunker ( t r a i n _ s e n t s ) s c o r e = bigram_chunker . e v a l u a t e ( t e s t _ s e n t s ) p r i n t ' Accuracy : %4.1 f %%' % ( 100.0 ∗ score . accuracy ( ) ) Wyniki Dane ucz¡ce i testowe Korpus CoNLL Korpus Penn Treebank Chunk Dokªadno±¢ chunkera 89.3% 95.0% Tabela. 4.16 Skuteczno±¢ Bigram Chunkera Wnioski Mo»na zauwa»y¢ wzrost dokªadno±ci w przypadku jednego korpusu oraz niewielki spadek dla drugiego przykªadu. 4.4.5 Podsumowanie Wykorzystywanie metod statystycznych przy segmentacji znacznie usprawnia ten proces i daje bardzo wysokie wyniki skuteczno±ci w porównaniu do potrzebnego nakªadu pracy jak¡ trzeba wªo»y¢ w celu przygotowania chunkera. 4.5 Analiza gramatyczna wypowiedzi 4.5.1 Gramatyka bezkontekstowa Przykªad zaczerpni¦ty z [24]. Program Poni»szy program prezentuje prosty przykªad zastosowania gramatyki bezkontekstowej dla zdania: I shot an elephant in my pajamas. Przy u»yciu przykªadowej gramatyki zdanie to ma dwa mo»liwe rozkªady. import n l t k groucho_grammar = n l t k . p a r s e _ c f g ( " " " S −> NP VP PP −> P NP NP −> Det N | Det N PP | ' I ' VP −> V NP | VP PP Det −> ' an ' | 'my' N −> ' e l e p h a n t ' | ' pajamas ' V −> ' s h o t ' P −> ' i n ' """) 50 4. Wykorzystanie NLTK do bada« metod statystycznych s e n t = [ ' I ' , ' s h o t ' , ' an ' , ' e l e p h a n t ' , ' i n ' , p a r s e r = n l t k . C h a r t P a r s e r ( groucho_grammar ) t r e e s = p a r s e r . nbest_parse ( sent ) for tree in trees : print tree 'my' , ' pajamas ' ] Wyniki (S (NP I ) (VP (V s h o t ) (NP ( Det an ) (N e l e p h a n t ) (PP (P i n ) (NP ( Det my) (N pajamas ) ) ) ) ) ) (S (NP I ) (VP (VP (V s h o t ) (NP ( Det an ) (N e l e p h a n t ) ) ) (PP (P i n ) (NP ( Det my) (N pajamas ) ) ) ) ) Rysunki prezentuj¡ce wyniki Rysunek 4.4 Drzewa prezentuj¡ce mo»liwe rozkªady [24] 4.5.2 Probabilistyczna gramatyka bezkontekstowa Przykªad wzi¦ty z [24]. Program Program prezentuje prosty przykªad zastosowania probabilistycznej gramatyki bezkontekstowej dla zadania: astronomers saw stars with ears. Wynikiem jest rozkªad o najwi¦kszym prawdopodobie«stwie wyst¡pienia oraz wysoko±¢ tego prawdopodobie«stwa. import n l t k grammar = n l t k . p a r s e _ p c f g ( " " " S −> NP VP PP −> P NP VP −> V NP VP −> VP PP P −> ' with ' [1.0] [1.0] [0.7] [0.3] [1.0] 4.5. Analiza gramatyczna wypowiedzi V −> ' saw ' [1.0] NP −> NP PP [0.4] NP −> ' a s t r o n o m e r s ' [0.1] NP −> ' e a r s ' [0.18] NP −> ' saw ' [0.04] NP −> ' s t a r s ' [0.18] NP −> ' t e l e s c o p e s ' [0.1] """) v i t e r b i _ p a r s e r = n l t k . V i t e r b i P a r s e r ( grammar ) p r i n t v i t e r b i _ p a r s e r . p a r s e ( [ ' a s t r o n o m e r s ' , ' saw ' , ' ears ' ] ) 51 ' stars ' , ' with ' , Wyniki (S (NP a s t r o n o m e r s ) (VP (V saw ) (NP (NP s t a r s ) (PP (P w i t h ) (NP e a r s ) ) ) ) ) ( p = 0 . 0 0 0 9 0 7 2 ) Program 2 W odró»nieniu od poprzedniego, drugi program wykorzystuj¡cy probabilistyczn¡ gramatyk¦ bezkontekstow¡, uczy si¦ jej najpierw na postawie korpusu Penn Treebank. Dopiero nast¦pnie sprawdza rozkªady zdania: Sales of trucks in Japan. Wynikiem jest rozkªad o najwi¦kszym prawdopodobie«stwie oraz jego wysoko±¢. import n l t k from i t e r t o o l s i m p o r t i s l i c e productions = [ ] S = n l t k . Nonterminal ( ' S ' ) f o r t r e e in nltk . corpus . treebank . parsed_sents ( ) : p r o d u c t i o n s += t r e e . p r o d u c t i o n s ( ) grammar = n l t k . i n d u c e _ p c f g ( S , p r o d u c t i o n s ) v i t e r b i _ p a r s e r = n l t k . V i t e r b i P a r s e r ( grammar ) p r i n t v i t e r b i _ p a r s e r . parse ( [ ' Sales ' , ' of ' , ' trucks ' , ' in ' , ' Japan ' ] ) Wyniki (S (NP−SBJ=1 (NP (NNS S a l e s ) ) (PP ( IN o f ) (NP (NNS t r u c k s ) ) ) ) (PP=3 ( IN i n ) (NP−LGS (NNP Japan ) ) ) ) ( p =4 . 7 19 3 6 91 2 3 1 2 e − 18) 4.5.3 Gramatyka oparta na atrybutach Jest to gramatyka bezkontekstowa, w której zostaªy zawarte dodatkowe atrybuty opisuj¡ce wyrazy. Poni»ej zostaª zaprezentowany prosty przykªad gramatyki opartej na atrybutach dost¦pny w NLTK. Gramatyka ta oprócz dodatkowych informacji j¦zykowych, zawiera tak»e informacje logiczne, potrzebne przy translacji zdania w j¦zyku naturalnym na zdanie logiczne. 52 4. Wykorzystanie NLTK do bada« metod statystycznych % start S ############################ # Grammar R u l e s ############################# S [SEM = <? s u b j ( ? vp ) >] −> NP[NUM=?n ,SEM=? s u b j ] VP[NUM=?n ,SEM=?vp ] NP[NUM=?n ,SEM=<?d e t ( ? nom)> ] −> . . . . . . Det [NUM=?n ,SEM=?d e t ] Nom [NUM=?n ,SEM=?nom ] NP[LOC=? l ,NUM=?n ,SEM=?np ] −> PropN [LOC=? l ,NUM=?n ,SEM=?np ] Nom [NUM=?n ,SEM=?nom ] −> N[NUM=?n ,SEM=?nom ] VP[NUM=?n ,SEM=?v ] −> IV [NUM=?n ,SEM=?v ] VP[NUM=?n ,SEM=<?v ( ? o b j ) >] −> TV[NUM=?n ,SEM=?v ] NP[SEM=? o b j ] VP[NUM=?n ,SEM=<?v ( ? obj , ? pp ) >] −> . . . . . . DTV[NUM=?n ,SEM=?v ] NP[SEM=? o b j ] PP[+TO,SEM=?pp ] PP[+TO, SEM=?np ] −> P[+TO] NP[SEM=?np ] ############################# # L e x i c a l Rules ############################# PropN[ −LOC,NUM=sg ,SEM=<\P . P( angus ) >] −> ' Angus ' PropN[ −LOC,NUM=sg ,SEM=<\P . P( c y r i l ) >] −> ' C y r i l ' PropN[ −LOC,NUM=sg ,SEM=<\P . P( i r e n e ) >] −> ' I r e n e ' Det [NUM=sg ,SEM=<\P Q. a l l x . ( P( x ) −> Q( x ) ) > ] −> ' e v e r y ' Det [NUM=p l ,SEM=<\P Q. a l l x . ( P( x ) −> Q( x ) ) > ] −> ' a l l ' Det [SEM=<\P Q. e x i s t s x . ( P( x ) & Q( x ) ) > ] −> ' some ' Det [NUM=sg ,SEM=<\P Q. e x i s t s x . ( P( x ) & Q( x ) ) > ] −> ' a ' Det [NUM=sg ,SEM=<\P Q. e x i s t s x . ( P( x ) & Q( x ) ) > ] −> ' an ' N[NUM=sg N[NUM=sg N[NUM=sg N[NUM=sg N[NUM=sg N[NUM=sg N[NUM=p l ,SEM=<\x . man( x ) >] −> ' man ' ,SEM=<\x . g i r l ( x ) >] −> ' g i r l ' ,SEM=<\x . boy ( x ) >] −> ' boy ' ,SEM=<\x . bone ( x ) >] −> ' bone ' ,SEM=<\x . a n k l e ( x ) >] −> ' a n k l e ' ,SEM=<\x . dog ( x ) >] −> ' dog ' ,SEM=<\x . dog ( x ) >] −> ' dogs ' IV [NUM=sg IV [NUM=p l IV [NUM=sg IV [NUM=p l TV[NUM=sg TV[NUM=p l TV[NUM=sg ,SEM=<\x . bark ( x ) > ,TNS=p r e s ] −> ' b a r k s ' ,SEM=<\x . bark ( x ) > ,TNS=p r e s ] −> ' bark ' ,SEM=<\x . walk ( x ) > ,TNS=p r e s ] −> ' walks ' ,SEM=<\x . walk ( x ) > ,TNS=p r e s ] −> ' walk ' ,SEM=<\X x .X( \ y . c h a s e ( x , y )) > ,TNS=p r e s ] −> ' c h a s e s ' ,SEM=<\X x .X( \ y . c h a s e ( x , y )) > ,TNS=p r e s ] −> ' c h a s e ' ,SEM=<\X x .X( \ y . s e e ( x , y )) > ,TNS=p r e s ] −> ' s e e s ' 4.5. Analiza gramatyczna wypowiedzi 53 TV[NUM=p l ,SEM=<\X x .X( \ y . s e e ( x , y )) > ,TNS=p r e s ] −> ' s e e ' TV[NUM=sg ,SEM=<\X x .X( \ y . b i t e ( x , y )) > ,TNS=p r e s ] −> ' b i t e s ' TV[NUM=p l ,SEM=<\X x .X( \ y . b i t e ( x , y )) > ,TNS=p r e s ] −> ' b i t e ' DTV[NUM=sg ,SEM=<\Y X x .X( \ z .Y( \ y . g i v e ( x , y , z ) ) ) > ,TNS=p r e s ] −> ' g i v e s ' DTV[NUM=p l ,SEM=<\Y X x .X( \ z .Y( \ y . g i v e ( x , y , z ) ) ) > ,TNS=p r e s ] −> ' g i v e ' P[+ t o ] −> ' to ' Obja±nienie znacze« • S - symbol startowy • NP - wyra»enie rzeczownikowe • VP - wyra»enie czasownikowe • Det - okre±lacz • Nom - mianownik • PropN - nazwa wªasna • N - rzeczownik • IV - czasownik nieprzechodni • TV - czasownik przechodni • DTV - czasownik dwuprzechodni • NUM - liczba pojedyncza (sg) lub mnoga (pl) • SEM - znaczenie • TNS - czas tera¹niejszy (pres) lub przeszªy (past) Rozdziaª 5 EAK - eksperymentalny agent konwersacyjny 5.1 Schemat Rysunek 5.1 prezentuje uproszczony schemat architektury systemu, którego zadaniem jest odpowiadanie na pytania zadane przez u»ytkownika. Tre±¢ pyta« odnosi si¦ do przeanalizowanego przez system tekstu, który zostaª mu dostarczony wcze±niej. Rysunek 5.1 Schemat architektury eksperymentalnego agenta konwersacyjnego 5.2 Wymagane cechy Eksperymentalny agent powinien: • posiada¢ zdolno±¢ interakcji z u»ytkownikiem - przyjmowanie pyta« oraz dawanie odpowiedzi, 5.3. Wybór narz¦dzi realizacji 55 • umie¢ zrozumie¢ dostarczony mu tekst ucz¡cy w j¦zyku naturalnym jak i pytania zadane przez u»ytkownika oraz przetªumaczy¢ je na formuªy logiczne, • potra¢ przeprowadza¢ wnioskowanie logiczne, aby móc odpowiedzie¢ na zadane mu pytania. 5.3 Wybór narz¦dzi realizacji Do realizacji agenta wykorzystano Natural Language Toolkit. Przyczyn¡ tego wyboru byªa zarówno bogata baza moduªów zawarta w tym toolkicie, która realizuje wiele z potrzebnych do wykonania zada«, ale tak»e dobrze opracowana literatura na temat praktycznego wykorzystania NLTK w projektach. Paradoksalnie jedn¡ z gªównych wad tego narz¦dzia jest niepeªny opis wszystkich rozwi¡za«, jakie zostaªy w nim zastosowane. Sprawia to trudno±ci, gdy podczas pracy nad programem dochodzi do sytuacji, kiedy potrzeba wykorzysta¢ narz¦dzie, którego nie potra si¦ u»ywa¢. 5.4 U»ytkowanie Na potrzeby eksperymentalnego dziaªania EAKa, potrzeba zainstalowa¢ NLTK. Ze wzgl¦du na ci¡gªy rozwój tego toolkita, zdarza si¦, »e wprowadzone zmiany powoduj¡ bª¦dy we wcze±niej dziaªaj¡cych rozwi¡zaniach. EAK pisany byª z u»yciem wersji nltk-2.0b9 i dla niej te» dziaªa w peªni poprawnie. Oprócz tego nale»y posiada¢ Python w wersji co najmniej 2.4, a tak»e mo»na zainstalowa¢ Prover9, jako jedno z alternatywnych narz¦dzi do przeprowadzania logicznego wnioskowania w NLTK. Jest on dost¦pny do pobrania z adresu: http://www.cs.unm.edu/~mccune/mace4/download/LADR1007B-win.zip. Po uruchomieniu EAKa w interpretatorze Pythona, nale»y wpisa¢ nazw¦ plik z tre±ci¡, na temat której b¦d¡ zadawane pytania (plik nale»y umie±ci¢ tym samym katalogu co program). W zale»no±ci od rodzaju pytania program odpowiada na nie w formie yes/no lub w postaci szczegóªowej odpowiedzi. W przypadku, kiedy nie potra odpowiedzie¢ prosi o ponowne zadanie pytania. 5.5 Ograniczenia Przy budowie programu zastosowano uproszczenia poci¡gaj¡ce za sob¡ pewne ograniczenia w jego dziaªaniu: • Zdania w pobieranym pliku z wiedz¡ o lmie nie mog¡ wykorzystywa¢ podmiotu domy±lnego. Wynika to ze sposobu budowy przej±cia mi¦dzy zdaniem w j¦zyku naturalnym a zdaniem logicznym, jaki zostaª zastosowany w EAKu. Traktuje on ka»de zdanie jako zamkni¦t¡ caªo±¢, a dopiero po zrozumieniu go w formie logicznej doª¡cza do listy z wiedz¡ jak¡ uzyskaª z pozostaªych zda«. • Przy zadawaniu pyta« nazwy wªasne posiadaj¡ce wi¦cej ni» jeden wyraz musz¡ by¢ ª¡czone z u»yciem _. Tak samo przy generowaniu odpowiedzi, kiedy program odnosi si¦ do wªasnej wiedzy wydobytej wcze±niej z pliku, odpowiedzi dwu lub wi¦cej 56 5. EAK - eksperymentalny agent konwersacyjny wyrazowe równie» s¡ ª¡czone. Wynika to ze specyki moduªu logicznego, w którym nazwy argumentów nie mog¡ zawiera¢ w sobie spacji. • Ze wzgl¦du na sposób zapisu gramatyki nie jest mo»liwe u»ywanie apostrofów. W zast¦pstwie wykorzystuje si¦ _. 5.6 Wyniki eksperymentów 5.6.1 Przykªad dziaªania 1 W pierwszym przykªadzie program do zbudowania bazy swojej wiedzy wykorzystuje informacje tekstowe na temat lmu Alice in Wonderland. Plik wej±ciowy Johnny Depp p l a y s Mad H a t t e r . Mad H a t t e r i s a man . Mad H a t t e r i s a f i c t i o n a l c h a r a c t e r . F i r s t Blood i s a 1982 a c t i o n f i l m . Mad H a t t e r s e r v e s White Queen . Mad H a t t e r l o v e s A l i c e . Mia Wasikowska p l a y s A l i c e . A l i c e i s a woman . A l i c e s l a y e d Jabberwocky . A l i c e l i k e s Mad H a t t e r . Hamish Ascot wanted t o marry A l i c e . H e l e na Bonham C a r t e r p l a y s Red Queen . Red Queen i s a queen . Red Queen h a t e s White Queen . Anne Hathaway p l a y s White Queen . White Queen i s a queen . Every queen i s a woman . C r i s p i n G l o v e r p l a y s S t a y ne . S t ay n e s e r v e s Red Queen . S t ay n e t r i e d t o s e d u c e A l i c e . Matt Lucas p l a y s Tweedledee . Matt Lucas p l a y s Tweedledum . M i c h a e l Sheen v o i c e s White Rabbit . Stephen Fry v o i c e s C h e s h i r e Cat . C h e s h i r e Cat i s a c a t . Alan Rickman v o i c e s Blue C a t e r p i l l a r . C h r i s t o p h e r Lee v o i c e s Jabberwocky . Jabberwocky s e r v e s Red Queen . Jabberwocky can be k i l l e d w i t h V a r p a l Sword . Blue C a t e r p i l l a r i s a c a t e r p i l l a r . Tim Burton d i r e c t s A l i c e i n Wonderland . A l i c e i n Wonderland i s a movie . Leo B i l l p l a y s Hamish Ascot . A l i c e i n Wonderland was produce d by Joe Roth . 5.6. Wyniki eksperymentów Alice Alice Alice Alice Alice in in in in in Wonderland Wonderland Wonderland Wonderland Wonderland 57 was w r i t t e n by Linda Woolverton . was d i s t r i b u t e d by Walt D i s n e y P i c t u r e s . has won Academy Awards . i s b a s e d on a book . i s b a s e d on A l i c e s A d v e n t u r e s i n Wonderland . Efekt dziaªania programu Write what f i l e w i t h t h e i n f o r m a t i o n about t h e movie you want t o open : Alice_in_Wonderland . t x t Ask a q u e s t i o n about a c h o s e n movie . ====================================================================== Ask q u e s t i o n s t o t h e program by t y p i n g i n p l a i n E n g l i s h , u s i n g normal upper − and l o w e r −c a s e l e t t e r s and p u n c t u a t i o n . E n t e r " q u i t " when done . ====================================================================== H e l l o . What q u e s t i o n do you have f o r me? > Who d o e s p l a y Mad_Hatter ? Repeat . > Who p l a y e d Mad_Hatter ? Mad_Hatter was p l a y e d by : Johnny_Depp > I s Mad_Hatter a man? Yes . > Who l o v e d Mad_Hatter ? Repeat . > Who l o v e d A l i c e ? Repeat . > Who s e r v e d Red_Queen? Red_Queen was s e r v e d by : S t ay n e Jabberwocky > I s Red_Queen a woman? Yes . > I s Red_Queen a man? No . > Who p l a y e d A l i c e ? A l i c e was p l a y e d by : Mia_Wasikowska > Who wanted t o marry A l i c e ? A l i c e was wanted t o be m a r r i e d by : Hamish_Ascot > Who was k i l l e d by A l i c e ? Alice k i l l e d : Jabberwocky > What weapon d i d A l i c e u s e t o k i l l Jabberwocky ? Alice k i l l e d Jabberwocky w i t h a : Varpal_Sword > Who p l a y e d Jabberwocky ? I do not know . > Who v o i c e d Jabberwocky ? 58 5. EAK - eksperymentalny agent konwersacyjny Jabberwocky was v o i c e d by : Christopher_Lee > quit Goodbye . 5.6.2 Przykªad dziaªania 2 W drugim przykªadzie program wykorzystuje informacje na temat lmu Sweeney Todd: The Demon Barber of Fleet Street. Plik wej±ciowy Johnny Depp p l a y s Sweeney Todd . Sweeney Todd works a s a b a r b e r . Sweeney Todd l o v e s Lucy B a r k e r . Sweeney Todd k i l l s B e a d l e Bamford . Sweeney Todd h a t e s Judge Turpin . H e l e na Bonham C a r t e r p l a y s Mrs L o v e t t . Judge Turpin was k i l l e d w i t h s t r a i g h t r a z o r . Mrs L o v e t t l o v e s Sweeney Todd . Sweeney Todd k i l l s Mrs L o v e t t . Alan Rickman p l a y s Judge Turpin . Judge Turpin l o v e s Lucy B a r k e r . Sweeney Todd k i l l s Judge Turpin . Jamie Campbell Bower p l a y s Anthony Hope . Timothy S p a l l p l a y s B e a d l e Bamford . B e a d l e Bamford s e r v e s Judge Turpin . Sweeney Todd k i l l s B e a d l e Bamford . Sacha Baron Cohen p l a y s A d o l f o P i r e l l i . Sweeney Todd k i l l s A d o l f o P i r e l l i . Ed S a n d e r s p l a y s Toby Ragg . Toby Ragg l i k e s Mrs L o v e t t . Toby Ragg k i l l s Sweeney Todd . Sweeney Todd i s k i l l e d w i t h s t r a i g h t r a z o r . Laura M i c h e l l e K e l l y p l a y s Lucy B a r k e r . Jayne Wisener p l a y s Johanna B a r k e r . Tim Burton d i r e c t s Sweeney Todd The Demon Barber o f F l e e t S t r e e t . Sweeney Todd The Demon Barber o f F l e e t S t r e e t i s a movie . Sweeney Todd The Demon Barber o f F l e e t S t r e e t i s b a s e d on a m u s i c a l . Efekt dziaªania programu Write what f i l e w i t h t h e i n f o r m a t i o n about t h e movie you want t o open : Sweeney_Todd . t x t Ask a q u e s t i o n about a c h o s e n movie . ====================================================================== Ask q u e s t i o n s t o t h e program by t y p i n g i n p l a i n E n g l i s h , u s i n g normal upper − and l o w e r −c a s e l e t t e r s and p u n c t u a t i o n . E n t e r " q u i t " when done . ====================================================================== H e l l o . What q u e s t i o n do you have f o r me? 5.6. Wyniki eksperymentów 59 > Who d i d k i l l Sweeney_Todd ? Repeat . > Who k i l l e d Sweeney_Todd ? Sweeney_Todd was k i l l e d by : Toby_Ragg > How was Sweeney_Todd k i l l e d ? Sweeney_Todd was k i l l e d w i t h a : straight_razor > Who p l a y e d Sweeney_Todd ? Sweeney_Todd was p l a y e d by : Johnny_Depp > Who l o v e d Sweeney_Todd ? Repeat . > What j o b Sweeney_Todd was d o i n g ? Sweeney_Todd worked a s a : barber > Who was k i l l e d by Sweeney_Todd ? Sweeney_Todd k i l l e d : Beadle_Bamford Judge_Turpin Adolfo_Pirelli Mrs_Lovett > How was Judge_Turpin k i l l e d ? Judge_Turpin was k i l l e d w i t h a : straight_razor > What weapon d i d Toby_Ragg u s e t o k i l l Sweeney_Todd ? Toby_Ragg k i l l e d Sweeney_Todd w i t h a : straight_razor > quit Goodbye . 5.6.3 Przykªad dziaªania 3 W trzecim przykªadzie program wykorzystuje informacje na temat lmu First Blood. Plik wej±ciowy F i r s t Blood i s a 1982 a c t i o n f i l m . F i r s t Blood s t a r s S y l v e s t e r S t a l l o n e . S y l v e s t e r S t a l l o n e p l a y s a s John Rambo . John Rambo was a s o l d i e r . John Rambo f o u g h t i n Vietnam . S h e r i f f W i l l T e a s l e i s n e m e s i s o f John Rambo . B r i a n Dennehy p l a y s t h e s h e r i f f . C o l o n e l Samuel Trautman i s o n l y a l l y o f Rambo . C o l o n e l Samuel Trautman i s f o r m e r commander o f Rambo . R i c h a r d Crenna p l a y s t h e c o l o n e l . F i r s t Blood was r e l e a s e d i n 1 9 8 2 . F i r s t Blood was b a s e d on David M o r r e l l _ s 1972 n o v e l o f t h e same name . F i r s t Blood was a p s y c h o l o g i c a l t h r i l l e r . 60 The a c t i o n 5. EAK - eksperymentalny agent konwersacyjny is s e t i n the United S t a t e s . Efekt dziaªania programu Write what f i l e w i t h t h e i n f o r m a t i o n about t h e movie you want t o open : First_Blood . txt Ask a q u e s t i o n about a c h o s e n movie . ====================================================================== Ask q u e s t i o n s t o t h e program by t y p i n g i n p l a i n E n g l i s h , u s i n g normal upper − and l o w e r −c a s e l e t t e r s and p u n c t u a t i o n . E n t e r " q u i t " when done . ====================================================================== H e l l o . What q u e s t i o n do you have f o r me? > What i s F i r s t _ B l o o d ? First_Blood i s a : psychological_thriller 1982 _ a c t i o n _ f i l m > Who i s John_Rambo? John_Rambo i s a : soldier > Who p l a y e d John_Rambo? John_Rambo was p l a y e d by : Sylvester_Stallone > Where d i d John_Rambo f i g h t ? John_Rambo f o u g h t i n : Vietnam > Where d o e s F i r s t Blood a c t i o n t a k e p l a c e ? Action o f F i r s t Blood i s s e t i n : United_States > Where d o e s t h e a c t i o n t a k e p l a c e ? Action o f action i s set in : United_States > Where d o e s F i r s t Blood t a k e p l a c e ? Repeat . > Who i s enemy o f John_Rambo? Enemy o f John_Rambo i s : Sheriff_Will_Teasle > Who was commander o f John_Rambo? Commander o f John_Rambo was : Colonel_Samuel_Trautman > Who was a l l y o f John_Rambo? A l l y o f John_Rambo was : Colonel_Samuel_Trautman > quit Goodbye . 5.6.4 Przykªad dziaªania 4 W czwartym przykªadzie program wykorzystuje informacje na temat lmu Cabaret. Plik wej±ciowy 5.6. Wyniki eksperymentów 61 Cabaret i s a 1972 m u s i c a l f i l m . Cabaret was d i r e c t e d by Bob F o s s e . Cabaret was s t a r r i n g L i z a M i n n e l l i . Cabaret was s t a r r i n g M i c h a e l York . Cabaret was s t a r r i n g J o e l Grey . Cabaret i s s e t i n B e r l i n . Cabaret i s s e t i n 1 9 3 1 . S a l l y Bowles i s an American s i n g e r . Liza Minnelli plays S al ly . S a l l y p e r f o r m s a t t h e Ki t Kat Klub . Cambridge U n i v e r s i t y s t u d e n t B r i a n R o b e r t s a r r i v e s i n B e r l i n i n 1 9 3 1 . M i c h a e l York p l a y s B r i a n R o b e r t s . B r i a n moves i n t o S a l l y _ s apartment . Brian g i v e s English l e s s o n s to earn a l i v i n g . S a l l y u n s u c c e s s f u l l y t r i e s to seduce Brian . S a l l y wants B r i a n t o be one o f h e r many l o v e r s . S a l l y s u s p e c t s B r i a n may be gay . S a l l y b e f r i e n d s M a x i m i l i a n von Heune . M a x i m i l i a n von Heune i s p l a y e d by Helmut Griem . M a x i m i l i a n i s a r i c h p l a y b o y baron . Max has s e x w i t h B r i a n . Max has s e x w i t h S a l l y . Max d e p a r t s f o r A r g e n t i n a . Max has l e f t an e n v e l o p e o f money . S a l l y f i n d s out t h a t s h e i s p r e g n a n t . S a l l y i s u n s u r e who i s t h e f a t h e r . B r i a n o f f e r s t o marry S a l l y . S a l l y p r o c e e d s w i t h an a b o r t i o n . Efekt dziaªania programu Write what f i l e w i t h t h e i n f o r m a t i o n about t h e movie you want t o open : Cabaret . t x t Ask a q u e s t i o n about a c h o s e n movie . ====================================================================== Ask q u e s t i o n s t o t h e program by t y p i n g i n p l a i n E n g l i s h , u s i n g normal upper − and l o w e r −c a s e l e t t e r s and p u n c t u a t i o n . E n t e r " q u i t " when done . ====================================================================== H e l l o . What q u e s t i o n do you have f o r me? > What i s Cabaret ? Cabaret i s a : 1972 _ m u s i c a l _ f i l m > Who d i r e c t e d Cabaret ? A Cabaret was d i r e c t e d by : Bob_Fosse > Where i s Cabaret s e t i n ? Action o f Cabaret i s s e t i n : 1931 Berlin > When i s Cabaret s e t i n ? 62 5. EAK - eksperymentalny agent konwersacyjny Repeat . > Who i s S a l l y _ B o w l e s ? Sally_Bowles i s a : singer > Who p l a y e d S a l l y _ B o w l e s ? S a l l y _ B o w l e s was p l a y e d by : Liza_Minnelli > How was Brian_Roberts e a r n i n g a l i v i n g ? Brian_Roberts was g i v i n g : English_lessons > How was Brian_Roberts e a r n i n g a money? Brian_Roberts was g i v i n g : English_lessons > Who d i d S a l l y _ B o w l e s b e f r i e n d ? Sally_Bowles b e f r i e n d e d : Maximilian_von_Heune > Who was S a l l y _ B o w l e s f r i e n d s w i t h ? Repeat . > Who was Maximilian_von_Heune ? Maximilian_von_Heune was a : baron > quit Goodbye . 5.6.5 Przykªad dziaªania 5 W pi¡tym przykªadzie program wykorzystuje informacje na temat lmu Eight Below. Plik wej±ciowy The movie i s t i t l e d E i g h t Below . The movie i s a s t o r y about t h e f r i e n d s h i p between d o g s and a man . The movie was i n s p i r e d by a t r u e s t o r y . The movie t o o k p l a c e i n A n t a r c t i c a i n 1 9 5 7 . J e r r y i s t h e main c h a r a c t e r o f t h e movie . J e r r y was a dog g u i d e . J e r r y had e i g h t Husky s l e d d o g s . The r e s e a r c h e r s have been s t a y i n g i n A n t a r c t i c a f o r about 6 months . The r e s e a r c h e r s made many s c i e n t i f i c t r i p s i n t o t h e i c e l a n d . The d o g s u s e d t o c a r r y a l l t h e equipment and s u p p l i e s on s l e d s . The r e s e a r c h e r s had t o r e t r e a t back t o America b e c a u s e o f bad w e a t h e r . The r e s e a r c h e r s c o u l d not t a k e t h e d o g s a l o n g . The d o g s had t o s t a y b e h i n d . The d o g s had t o w a i t a l o n e u n t i l s p r i n g t i m e . J e r r y c o u l d not f o r g e t t h e d o g s . Back i n America J e r r y s t a r t e d t o l o o k f o r a way t o r e s c u e t h e d o g s . J e r r y d i d not have enough money t o r e n t a p l a n e . F r i e n d s o f J e r r y wanted t o h e l p him . F r i e n d s o f J e r r y l o o k e d e v e r y w h e r e t o r a i s e money . A f t e r more than s e v e n months J e r r y c o u l d f l y back and f i n d t h e d o g s . 5.6. Wyniki eksperymentów 63 Efekt dziaªania programu Write what f i l e w i t h t h e i n f o r m a t i o n about t h e movie you want t o open : Eight_Below . t x t Ask a q u e s t i o n about a c h o s e n movie . ====================================================================== Ask q u e s t i o n s t o t h e program by t y p i n g i n p l a i n E n g l i s h , u s i n g normal upper − and l o w e r −c a s e l e t t e r s and p u n c t u a t i o n . E n t e r " q u i t " when done . ====================================================================== H e l l o . What q u e s t i o n do you have f o r me? > What i s t h e movie about ? The movie i s about : friendship_between_dogs_and_a_man > Where d o e s t h e movie t a k e p l a c e ? I do not know . > Where i s t h e movie s e t i n ? Action o f movie i s s e t i n : Antarctica > Who i s t h e m a i n _ c h a r a c t e r o f t h e movie ? The m a i n _ c h a r a c t e r i s : Jerry > What i s t h e t i t l e o f t h e movie ? The t i t l e o f t h e movie i s : Eight_Below > What i n s p i r e d t h e movie ? The movie i s i n s p i r e d by : true_story > Who i s J e r r y ? Jerry i s a : main_character dog_guide > What d i d t h e d o g s c a r r y ? The d o g s c a r r i e d : a l l _ t h e _e q u i p m e n t > quit Goodbye . 5.6.6 Przykªad dziaªania 6 W szóstym przykªadzie program wykorzystuje informacje na temat lmu 3:10 to Yuma. Plik wej±ciowy 3:10 to 3:10 to 3:10 to 3:10 to 3:10 to 3:10 to Rancher Yuma i s a 1957 American w e s t e r n f i l m . Yuma i s s t a r r i n g Glenn Ford . Yuma i s s t a r r i n g Van H e f l i n . Yuma i s d i r e c t e d by Delmer Daves . Yuma was b a s e d on t h e s h o r t s t o r y by Elmore Leonard . Yuma i s s e t i n t h e A r i z o n a T e r r i t o r y o f t h e 1880 s . Dan Evans w i t n e s s a s t a g e c o a c h holdup . 64 5. EAK - eksperymentalny agent konwersacyjny The d r i v e r B i l l Moons o v e r p o w e r s one o f t h e r o b b e r s . But Ben Wade t h e l e a d e r o f t h e gang c a l l o u s l y s h o o t s both men . Wade and h i s men s t o p a t t h e s a l o o n i n n e ar b y B i s b e e . Wade i s c a p t u r e d when he s t a y s t o s e d u c e t h e p r e t t y barmaid Emmy. But h i s henchman C h a r l i e P r i n c e g e t s away w i t h t h e news . The t o w n s p e o p l e f e a r what Ben_s men w i l l do . The town m a r s h a l d e c i d e s t o s n e a k t h e p r i s o n e r t o C o n t e n t i o n C i t y . The town m a r s h a l wants t o c a t c h t h e 3 : 1 0 t r a i n t o Yuma . M r _ B u t t e r f i e l d i s t h e s t a g e − l i n e owner . M r _ B u t t e r f i e l d o f f e r s $200 f o r t h e d a n g e r o u s j o b . Dan i s a r a n c h e r . Dan i s d e s p e r a t e a f t e r t h r e e y e a r s o f d r o u g h t . Dan jumps a t t h e o p p o r t u n i t y . The o n l y o t h e r man i n t e r e s t e d i s t h e town drunk Alex P o t t e r . No one e l s e s t e p s f o r w a r d . The m a r s h a l r e l u c t a n t l y a c c e p t s them . Wade i s p l a c e d on a s t a g e c o a c h which t h e n s t o p s f o r a f a k e d r e p a i r . The o u t l a w i s s e c r e t l y t a k e n o f f . The s t a g e c o n t i n u e s on w i t h an i m p o s t e r . Wade i s t a k e n t o Dan_s r a n c h . Dan_s d e v o t e d w i f e A l i c e s e r v e s s u p p e r t o t h e f a m i l y and t h e i r g u e s t . Dan , Alex and Wade l e a v e under c o v e r o f d a r k n e s s . Dan , Alex and Wade r e a c h C o n t e n t i o n C i t y a t daybreak . B u t t e r f i e l d has r e s e r v e d t h e b r i d a l s u i t e a t t h e h o t e l . Dan , Alex and Wade w a i t f o r t h e t r a i n . Wade t r i e s s e v e r a l t i m e s t o b r i b e Dan i n t o l e t t i n g him go . Dan i s g r e a t l y tempted . The l o c a l s h e r i f f i s out o f town . B u t t e r f i e l d h i r e s f i v e men t o h e l p e s c o r t t h e p r i s o n e r t o t h e t r a i n . C h a r l i e P r i n c e s p o t s Wade i n a window . C h a r l i e r i d e s o f f t o f e t c h t h e r e s t o f t h e gang . The men watch a s s e v e n r i d e r s e n t e r t h e town . The men r e t r e a t l e a v i n g o n l y Dan , Alex and B u t t e r f i e l d . Alex s p o t s one o f Wade_s men on a r o o f t o p o p p o s i t e t h e h o t e l . Alex c a l l s out but i s s h o t i n t h e back by P r i n c e . The gang hangs t h e wounded Alex from t h e l o b b y c h a n d e l i e r . The gang k i l l e d Alex . B u t t e r f i e l d d e c i d e s t h a t m a i n t a i n i n g Wade a s a p r i s o n e r i s not worth the r i s k . B u t t e r f i e l d r e l e a s e s Dan from h i s o b l i g a t i o n . A l i c e a r r i v e s and a l s o t r i e s t o change h e r husband_s mind . But Dan i s committed . When t h e c l o c k s t r i k e s t h r e e Dan e s c o r t s Wade out t h e back d o o r . Gang members t a k e s h o t s whenever t h e y can w i t h o u t e n d a n g e r i n g Wade . But t h e gang c a n n o t s t o p t h e p a i r from r e a c h i n g t h e p l a t f o r m . The t r a i n i s w a i t i n g . F i n a l l y , t h e o u t l a w s emerge t o c o n f r o n t Dan a s t h e t r a i n s t a r t s to le av e . C h a r l i e s h o u t s f o r Wade t o drop t o a l l o w them a c l e a r s h o t a t Dan . 5.6. Wyniki eksperymentów 65 Wade u n e x p e c t e d l y t e l l s Dan t o jump i n t o t h e p a s s i n g baggage c a r . Dan and Wade jump t o g e t h e r . The gang s t a r t s t o run a f t e r t h e t r a i n . Dan s h o o t s C h a r l i e and t h e r e s t t h e n l e t i t go . Wade s a i d he f e l t he owed Dan f o r p r o t e c t i n g him from Bob Moons i n t h e h o t e l room . Wade c o n f i d e n t l y c l a i m e d he had b ro k e n out o f t h e Yuma j a i l b e f o r e . A l i c e s e e s Dan s a f e on t h e t r a i n . Rain p o u r s down on A l i c e b r e a k i n g t h e l o n g d r o u g h t . Efekt dziaªania programu Write what f i l e w i t h t h e i n f o r m a t i o n about t h e movie you want t o open : 3_10_to_Yuma . t x t Ask a q u e s t i o n about a c h o s e n movie . ====================================================================== Ask q u e s t i o n s t o t h e program by t y p i n g i n p l a i n E n g l i s h , u s i n g normal upper − and l o w e r −c a s e l e t t e r s and p u n c t u a t i o n . E n t e r " q u i t " when done . ====================================================================== H e l l o . What q u e s t i o n do you have f o r me? > What i s 3 : 1 0 _to_Yuma? 3 : 1 0 _to_Yuma i s a : western_film > Who i s s t a r r i n g i n 3 : 1 0 _to_Yuma? 3 : 1 0 _to_Yuma i s s t a r r i n g w i t h a c t o r s s u c h a s : Glenn_Ford Van_Heflin > Who d i r e c t e d 3 : 1 0 _to_Yuma? A 3 : 1 0 _to_Yuma was d i r e c t e d by : Delmer_Daves > What i s 3 : 1 0 _to_Yuma b a s e d on ? 3 : 1 0 _to_Yuma i s b a s e d on a : short_story > Where i s 3 : 1 0 _to_Yuma s e t i n ? Action o f 3 : 1 0 _to_Yuma i s s e t i n : Arizona_Territory > What d i d Dan_Evans w i t n e s s ? Dan_Evans w i t n e s s a : stagecoach_holdup > Who i s Dan_Evans? Dan_Evans i s a : committed desperate > What d i d t h e t o w n s p e o p l e f e a r ? townspeople f e a r e d : what_Ben_s_men_will_do > What d i d t h e m a r s h a l d e c i d e ? marshal decided to : sneak_the_prisoner > Why was Dan_Evans d e s p e r a t e ? 66 5. EAK - eksperymentalny agent konwersacyjny Dan_Evans was d e s p e r a t e b e c a u s e o f : three_years_of_drought > Whom d i d Ben_Wade t r y t o b r i b e ? Ben_Wade t r i e d t o b r i b e : Dan_Evans > Who was s h o t by C h a r l i e _ P r i n c e ? Charlie_Prince shot : Alex_Potter > From what p r i s o n d i d Ben_Wade b r e a k o ut ? Repeat . > From where d i d Ben_Wade b r e a k e out ? Ben_Wade b r o k e out o f t h e : Yuma_jail > quit Goodbye . 5.6.7 Podsumowanie Sporym problemem w pisaniu programu byªo opracowanie wszystkich mo»liwych wzorców pyta«. Z tego powodu EAK czasem nie potra odpowiedzie¢ na pytanie, dla którego ma potrzebne informacje do czasu a» u»ytkownik nie zada mu je w zrozumiaªej dla niego formie. Innym ograniczeniem jest wykorzystywanie tylko jednej formy imienia postaci, o któr¡ chcemy zapyta¢, na przykªad John_Rambo zamiast samego Rambo. Wynika to z problemów w module logicznym NLTK, gdzie zapisanie równo±ci mi¦dzy dwoma nazwami nie pokazuje bª¦du, ale jednak zawiesza program. W przypadkach, kiedy program nie jest w stanie dopasowa¢ pytania do »adnego z zawartych w nim wzorców, prosi o jego powtórzenie wy±wietlaj¡c - Repeat. Alternatywnie, je»eli wzorzec zadanego pytania jest dost¦pny, ale po przeprowadzeniu wnioskowania logicznego dalej nie zna odpowiedzi, informuje o tym u»ytkownika pisz¡c - I do not know. Dowodzenie logiczne pozwala na odnajdywanie odpowiedzi, nie b¦d¡ce jednoznacznie zawarte w tek±cie. Tak jak w powy»szym przykªadzie dla informacji - Red Queen is a queen. oraz Every queen is a woman. program potra odpowiedzie¢ twierdz¡co na pytanie Is Red Queen a woman? Nie ma równie» »adnego problemu, kiedy na zadane pytanie istnieje wi¦cej ni» jedna odpowied¹, tak jak w przypadku pytania: Who served Red Queen? Program wy±wietla wszystkie znalezione odpowiedzi. Struktura zda« w pliku wej±ciowym jest do±¢ prosta. Opiera si¦ gªównie na relacjach mi¦dzy podmiotem, orzeczeniem i dopeªnieniem. Wynika to z ªatwo±ci z jak¡ na podstawie takiej budowy mo»na zbudowa¢ gramatyk¦, pozwalaj¡c¡ na jej translacj¦ do postaci formuªy logicznej. Bardziej skomplikowane zdania s¡ równie» mo»liwe do uzyskania, jednak nawet przy bardzo du»ym nakªadzie pracy, cz¦sto si¦ okazuje, »e dokonane modykacje nie tylko nie speªniaj¡ zamierzonej roli, ale równie» sprawiaj¡, i» wcze±niej zawarte reguªy przestaj¡ poprawnie dziaªa¢. 5.7. Ocena 67 Pewnym problem mo»e by¢ opisywanie relacji logicznych. Mog¡ zdarzy¢ si¦ sytuacje, kiedy podczas poszukiwania odpowiedzi program odniesie si¦ do innych ni» potrzeba faktów, poniewa» podczas budowania gramatyki nie zostaªa wyszczególniona ró»nica pomi¦dzy nimi. Podczas testów taka sytuacja miaªa miejsce przy pytaniu Who is Dan_Evans? gdzie odpowied¹ powinna wi¡za¢ si¦ z opisem samej osoby, a nie jej cech. Rozwi¡zaniem jest dalsza rozbudowa gramatyki uwzgl¦dniaj¡ca te ró»nice. 5.7 Ocena Program dziaªa poprawnie dla zda« o w miar¦ prostej budowie gramatycznej. Jego opcjonalna rozbudowa, zwi¦kszaj¡ca zakres tekstu, jaki jest w stanie zrozumie¢ oraz wnioskowa¢ na jego podstawie, jest jak najbardziej mo»liwa. Potrzebna do tego jest jednak znacznie wi¦ksza praktyczna wiedza na temat budowy gramatycznej zda« w j¦zyku angielskim oraz jej mo»liwej translacji na formuªy logiczne. Rozdziaª 6 Podsumowanie i werykacja postawionej tezy Najwi¦kszym problemem przy budowaniu agenta konwersacyjnego, który potra odpowiedzie¢ na pytania zadane mu na temat tekstu, który sam wcze±niej przeanalizowaª okazaªo si¦ stworzenie odpowiedniej gramatyki pozwalaj¡cej na przej±cie z j¦zyka naturalnego na j¦zyk logiki. Praca ta mogªaby zosta¢ w znacz¡cy sposób uproszczona poprzez zastosowanie metod statystycznych przy budowie takiego rodzaju gramatyki, jednak w tym celu potrzebny byªby korpus posiadaj¡cy zawart¡ w nim tre±¢ nie tylko przetworzon¡ pod wzgl¦dem j¦zyka naturalnego, ale tak»e prezentuj¡cy zale»no±ci logiczne pomi¦dzy pojawiaj¡cymi si¦ w zdaniach wyrazami. Na chwil¦ obecn¡ taki rodzaj korpusów nie jest powszechnie dost¦pny. Jednak»e niniejsza praca pokazuje, »e w przypadku pokonania tej trudno±ci, mo»na stworzy¢ system dziaªaj¡cy wedªug wcze±niejszych zaªo»e«. Nawet opieraj¡c si¦ na wªasnej wiedzy oraz prostych gramatykach opracowanych wcze±niej przez inne osoby, mo»na utworzy¢ poprawnie dziaªaj¡cy program. Werykacja tezy pracy Mo»na zbudowa¢ agenta konwersacyjnego odpowiadaj¡cego na zadane mu pytania odnosz¡ce si¦ do wcze±niej przeanalizowanego przez niego tekstu, wykorzystuj¡c do tego zarówno klasyczne metody przetwarzania j¦zyka naturalnego jak i metody statystyczne oraz otwarte oprogramowanie (z pocz¡tku roku 2011). Teza jest prawdziwa. Poprawnie dziaªaj¡cy agent konwersacyjny udowadnia, »e wykonanie tego zadania jest mo»liwe. Istniej¡ pewne ograniczenia zwi¡zane mi¦dzy innymi z trudno±ci¡ analizy j¦zyka naturalnego bez gª¦bokiej wiedzy na jego temat oraz nakªadem pracy jaki musi wªo»y¢ pojedyncza osoba w pisanie poprawnych reguª nim rz¡dz¡cych. Nie wpªywaj¡ one jednak na sam¡ mo»liwo±¢ budowy systemu, tylko na jego stopie« skomplikowania. Badania przeprowadzone w tej pracy na szeregu metod statystycznych pokazuj¡ ich bardzo wysok¡ skuteczno±¢ w ka»dej dziedzinie NLP, w której s¡ wykorzystywane. Ich zastosowanie w prezentowanym agencie konwersacyjnym jest maªe, jednak wynika to z aktualnego braku szerokiego dost¦pu do danych, które mo»na by w ªatwy sposób wykorzysta¢ do nauczania takiego systemu wykonywania zada«, które s¡ przed nim stawiane. Dodatek A wiczenia A.1 Python i NLTK Zapoznaj si¦ z podstawami j¦zyka Python oraz toolkitem NLTK na postawie 4.1. Wykorzystaj przedstawione tam komendy na innych przykªadach, aby samodzielnie przetestowa¢ ich dziaªanie. A.2 Taggery Wykorzystuj¡c Default Tagger z 4.3.2, sprawd¹ na wybranym przez siebie korpusie jaka jest w nich cz¦sto±¢ wyst¦powania innych cz¦±ci mowy ni» rzeczownik. A.3 Taggery Spróbuj napisa¢ wªasne reguªy dla Regexp Tagger (4.3.3), aby zwi¦kszy¢ jego skuteczno±¢. A.4 Taggery Wybierz nieprzebadany korpus i na jego podstawie sprawd¹ skuteczno±¢ poszczególnych metod statystycznych. A.5 EAK Wykorzystuj¡c program EAK, spróbuj doda¢ do niego wªasny tekst lmowy oraz nowe pytania. A.6 EAK Spróbuj tak zmodykowa¢ reguªy gramatyczne EAKa, aby na pytanie "Who is Dan_Evans?" odpowiedzi¡ byªo tylko "rancher". Bibliograa [1] Alicebot. http://alicebot.blogspot.com/, 2011. Kopia strony z dnia 4.02. [2] American National Corpus. http://americannationalcorpus.org/index.htmll, 2011. Kopia strony z dnia 4.02. [3] British National Corpus. http://corpus.byu.edu/bnc/, 2011. Kopia strony z dnia 4.02. [4] Brown Corpus Manual. http://icame.uib.no/brown/bcm.html, 2011. Kopia strony z dnia 4.02. [5] Elbot. http://www.elbot.com/, 2011. Kopia strony z dnia 4.02. [6] Bartªomiej Fory± and Jarosªaw ubi«ski. Komputerowe przetwarznie wiedzy - kolekcja prac, chapter Wykorzystanie ªa«cuchów Markowa. Politechika Wrocªawska, 2011. W dniu 1.09.2011 jeszcze nie opublikowana. [7] GATE. http://gate.ac.uk/, 2011. Kopia strony z dnia 4.02. [8] Google Translate. http://translate.google.com/#, 2011. Kopia strony z dnia 4.02. [9] IMB Watson. http://www-03.ibm.com/innovation/us/watson/, 2011. Kopia strony z dnia 4.02. [10] Jabberwacky. http://www.jabberwacky.com/, 2011. Kopia strony z dnia 4.02. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition. Prentice Hall, 1 edition, 2000. [11] Daniel Jurafsky and James H. Martin. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition. Prentice Hall, 2 edition, 2008. [12] Daniel Jurafsky and James H. Martin. [13] korpusy.net. http://www.korpusy.net/, 2011. Kopia strony z dnia 4.02. [14] Christopher D. Manning and Hinrich Schutze. Foundations of Statistical Language Processing. Massachusetts Institute of Technology, 1999. Natural [15] MARF. http://marf.sourceforge.net/, 2011. Kopia strony z dnia 4.02. [16] MontyLingua. http://web.media.mit.edu/~hugo/montylingua/, 2011. strony z dnia 4.02. Kopia BIBLIOGRAFIA 71 [17] Natural Language Toolkit. http://www.nltk.org/, 2011. Kopia strony z dnia 4.02. [18] NLTK Guides: Demonstration Code and Regression Tests. http://nltk. googlecode.com/svn/trunk/doc/howto/index.html, 2011. Kopia strony z dnia 4.02. [19] Oxford English Dictionary. http://corpus.byu.edu/oed/, 2011. Kopia strony z dnia 4.02. [20] Jacob Perkins. 2010. Python Text Processing with NLTK 2.0 Cookbook. Packt Publishing, [21] Read the Web. http://rtw.ml.cmu.edu/rtw/, 2011. Kopia strony z dnia 4.02. [22] SCIgen. http://pdos.csail.mit.edu/scigen/, 2011. Kopia strony z dnia 4.02. [23] Siri. http://siri.com/, 2011. Kopia strony z dnia 4.02. [24] Ewan Klein Steven Bird and Edward Loper. thon. O'Reilly Media, Inc., 1 edition, 2009. Natural Language Processing with Py- [25] The Corpus Of Contemporary American English. www.americancorpus.org, 2011. Kopia strony z dnia 4.02. [26] The Penn Treebank Project. http://www.cis.upenn.edu/~treebank/, 2011. Kopia strony z dnia 4.02. [27] Time Magazime Corpus. http://corpus.byu.edu/time/, 2011. Kopia strony z dnia 4.02. [28] UIMA. http://uima.apache.org/, 2011. Kopia strony z dnia 4.02. [29] Ultra Hal Assistant. http://www.zabaware.com/assistant/, 2011. Kopia strony z dnia 4.02. [30] Virtual Woman. http://virtualwoman.net/, 2011. Kopia strony z dnia 4.02. [31] What Is I.B.M.'s Watson? by Clive Thompson. http://www.nytimes.com/2010/ 06/20/magazine/20Computer-t.html?pagewanted=1&_r=1, 2011. Kopia strony z dnia 4.02. [32] Wikipedia - Alicebot. http://en.wikipedia.org/wiki/Artificial_Linguistic_ Internet_Computer_Entity, 2011. Kopia strony z dnia 4.02. [33] Wikipedia - Brown Corpus. http://en.wikipedia.org/wiki/Brown_Corpus, 2011. Kopia strony z dnia 4.02. [34] Wikipedia - Elbot. http://en.wikipedia.org/wiki/Elbot, 2011. Kopia strony z dnia 4.02. http://en.wikipedia.org/wiki/General_Architecture_ for_Text_Engineering, 2011. Kopia strony z dnia 4.02. [35] Wikipedia - GATE. - Google Translate. http://en.wikipedia.org/wiki/Google_ Translate, 2011. Kopia strony z dnia 4.02. [36] Wikipedia 72 BIBLIOGRAFIA [37] Wikipedia - Jabberwacky. Kopia strony z dnia 4.02. http://en.wikipedia.org/wiki/Jabberwacky, 2011. [38] Wikipedia - Korpus (jezykoznawstwo). http://pl.wikipedia.org/wiki/Korpus_ (jezykoznawstwo), 2011. Kopia strony z dnia 4.02. - MARF. http://en.wikipedia.org/wiki/Modular_Audio_ Recognition_Framework, 2011. Kopia strony z dnia 4.02. [39] Wikipedia [40] Wikipedia - MontyLingua. http://en.wikipedia.org/wiki/MontyLingua, 2011. Kopia strony z dnia 4.02. [41] Wikipedia - Natural Language Toolkit. http://en.wikipedia.org/wiki/Natural_ Language_Toolkit, 2011. Kopia strony z dnia 4.02. [42] Wikipedia - Never-Ending Language Learning. http://en.wikipedia.org/wiki/ Never-Ending_Language_Learning, 2011. Kopia strony z dnia 4.02. [43] Wikipedia - SCIgen. http://en.wikipedia.org/wiki/SCIgen, 2011. Kopia strony z dnia 4.02. [44] Wikipedia - Siri Personal Assistant. http://en.wikipedia.org/wiki/Siri_ Personal_Assistant, 2011. Kopia strony z dnia 4.02. [45] Wikipedia - UIMA. http://en.wikipedia.org/wiki/UIMA, 2011. Kopia strony z dnia 4.02. [46] Wikipedia - Ultra Hal Assistant. http://en.wikipedia.org/wiki/Ultra_Hal_ Assistant, 2011. Kopia strony z dnia 4.02. [47] Wikipedia - Virtual Woman. http://en.wikipedia.org/wiki/Virtual_Woman, 2011. Kopia strony z dnia 4.02. [48] Wikipedia - Wolfram Alpha. http://en.wikipedia.org/wiki/Wolfram_Alpha, 2011. Kopia strony z dnia 4.02. [49] Wikipedia - WordNet. http://en.wikipedia.org/wiki/WordNet, 2011. Kopia strony z dnia 4.02. [50] Wikipedia - Yahoo! Babel Fish. http://en.wikipedia.org/wiki/Yahoo!_Babel_ Fish, 2011. Kopia strony z dnia 4.02. [51] Wolfram Alpha. http://www.wolframalpha.com/, 2011. Kopia strony z dnia 4.02. [52] WordNet. http://wordnet.princeton.edu/, 2011. Kopia strony z dnia 4.02. [53] Yahoo! Babel Fish. http://babelfish.yahoo.com/, 2011. Kopia strony z dnia 4.02.