Ocena pracy

Transkrypt

Ocena pracy
POLITECHNIKA WROCŠAWSKA
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:
WROCŠAW 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 TRE‘CI
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 TRE‘CI
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.

Podobne dokumenty