Wykład 10. Analiza pragmatyczna wypowiedzi. Zjawisko anafory

Transkrypt

Wykład 10. Analiza pragmatyczna wypowiedzi. Zjawisko anafory
Wykład 10. Analiza pragmatyczna wypowiedzi. Zjawisko anafory. Strategie
prowadzenia dialogu człowiek-komputer.
Pragmatyka jest nauką o relacjach między językiem a kontekstem jego użycia. Inaczej mówiąc,
pragmatyka bada sposoby posługiwania się językiem przez ludzi, a w szczególności rozumienie i
interpretowanie wypowiedzi w zależności od kontekstu. Celem analizy pragmatycznej jest więc
„praktyczne” określenie znaczenia wypowiedzi w zależności od kontekstu dyskursu.
W ramach pragmatyki wypowiedzi rozpatrywane są następujące zagadnienia:
- problem odniesień (referencji) do ludzi i rzeczy np. zjawisko anafory,
- opis struktury wypowiedzi,
- interpretacja wypowiedzi podczas dialogu.
Należy zauważyć, że wypowiedzi nie są zbudowane z izolowanych, nie powiązanych ze sobą zdań.
Wprost przeciwnie, zdania tworzące wypowiedź są ze sobą powiązane i tworzą logiczną całość.
Przez dyskurs będziemy rozumieli grupę powiązanych ze sobą strukturalnie i logicznie zdań.
Przykładem dyskursu może być tekst dotyczący określonej osoby, obiektu, zdarzenia itd. (np. podręcznik dotyczący przetwarzania języka naturalnego). Ten typ dyskursu nazywamy monologiem.
W przypadku monologu komunikacja przebiega w jednym kierunku: od nadawcy do odbiorcy.
Szczególnym przypadkiem dyskursu jest dialog. Posiada on następujące cechy:
- występuje w nim przynajmniej dwóch uczestników,
- w czasie dialogu role uczestników zmieniają się okresowo (dany uczestnik raz jest nadawcą, aby
chwilę potem stać się odbiorcą).
W przypadku dialogu mamy do czynienia z różnymi typami wypowiedzi: stawianie pytań, udzielanie odpowiedzi, wprowadzanie poprawek itd.
Jednym z obszarów zainteresowania badaczy sztucznej inteligencji jest tworzenie systemów, które
umożliwiają na komunikację człowiek-komputer (z ang. HCI – human-computer interaction).
Analiza języka na poziomie dyskursu wymaga uwzględnienia wielu zjawisk. Jednym z tych zjawisk
jest anafora.
Anaforę definiuje się jako zjawisko językowe, które polega na skrótowym odwoływaniu się do
tego o czym była mowa we wcześniejszych partiach tekstu lub rozmowy .
Znaczny rozwój badań nad zjawiskiem anafory można zauważyć w związku z pracami
informatyków nad stworzeniem systemów umożliwiających komunikację człowieka z komputerem.
Rozpatrzmy następujący przykład pytania do pewnego systemu:
Czy próbki A5, A7 i A19 zawierają żelazo?
(1)
Załóżmy, że po uzyskaniu odpowiedzi na powyższe pytanie chcemy uzyskać informację o
zawartości węgla w tych samych próbkach. W naturalny sposób nasze pytanie przyjmie postać:
A czy zawierają one węgiel?
(2)
Zdania (1) i (2) są właśnie przykładem zjawiska anafory. Zamiast powtarzać zwrot próbki „A5, A7
i A19” możemy odwołać się do niego w sposób skrótowy używając zaimka „one”.
Zjawisko anafory jest typowe dla tekstów i wynika z postulowanej w wielu językach zasady
unikania powtórzeń w tekście (uznawanych za błąd stylistyczny). Drugim powodem występowania
anafory jest dążenie do upraszczania wypowiedzi. Rozpatrzmy kolejny przykład :
Richard Axel, M.D. (born July 2, 1946, New York City) is an American
scientist whose work on the olfactory system won him and Linda B. Buck,
a former post-doctoral scientist in his research group, the Nobel Prize in
(3)
Physiology or Medicine in 2004
W zdaniu tym występują dwa zaimki him oraz his, które odnoszą się w tym przypadku do podmiotu
zdania, czyli Richarda Axela. Jest to przykład anafory wewnątrzzdaniowej (zaimki oraz obiekt, do
którego się one odwołują występują w jednym zdaniu).
W tekście mogą wystąpić również międzyzdaniowe odwołania anaforyczne:
In their landmark paper published in 1991, Buck and Axel cloned olfactory
receptors, showing that they belong to the family of G protein coupled
receptors. By analyzing rat DNA, they estimated that there were
(4)
approximately one thousand different genes for olfactory receptors in the
mammalian genome
Odpowiedź na pytanie, do jakiego obiektu (obiektów) odnosi się zaimek they znajduje się we
wcześniejszym zdaniu.
Zjawisko anafory jest na tyle powszechne, że nie może być pominięte w procesie analizy tekstów
języka naturalnego przez komputer. Podczas analizy należy więc dla każdego wyrażenia
anaforycznego znaleźć w tekście element (poprzednik anaforyczny), do którego się ono odwołuje.
W zdecydowanej większości przypadków odwołania anaforyczne polegają na zastępowaniu
rzeczowników (lub całych grup nominalnych, których ośrodkiem jest rzeczownik) przez zaimki.
2
Znalezienie dla danego zaimka jego poprzednika anaforycznego sprowadza się najczęściej do
znalezienia w tekście ostatniego wyrażenia, które jest zgodne z tym zaimkiem pod względem
liczby, osoby, rodzaju gramatycznego czy przypadku.
John has three new Acuras. They are red.
(5)
John gave Mary a ring. She can’t find it.
(6)
W przykładzie (5) zaimek „they” może odnosić się zarówno do rzeczownika „John”, jak i frazy
rzeczownikowej „three new Acuras”. W tym przypadku dla właściwego powiązania zaimka
wystarczy sprawdzić jego zgodność z możliwymi frazami pod względem liczby.
W tym celu sprawdzenia zgodności zaimków z innymi frazami można użyć tabel:
Nie zawsze jednak proces ten przebiega w tak prosty sposób. Niekiedy do właściwego powiązania
wyrażenia anaforycznego z jego poprzednikiem może być konieczna analiza semantyczna lub
skomplikowany proces wnioskowania. Rozpatrzmy następujące zdania:
The airline bought the plane because it had already decided to do so earlier
(7a)
John told Peter that he was hungry
(7b)
John told Peter that he was arrogant
(7c)
W zdaniu (7a) przyimkowi „it” może odpowiadać jeden z rzeczowników: „airline” lub „plane”.
Do analizy tego zdania wystarczy dosyć prosty rodzaj wiedzy o świecie. Wiedza ta może być
reprezentowana w postaci ramy dla czasownika decide, która opisuje z jakimi przypadkami
3
(kategoriami semantycznymi) może się on łączyć i jakie muszą one posiadać cechy semantyczne.
Przypisując rzeczownikowi „airline” cechę semantyczną company, natomiast rzeczownikowi
„plane” cechę „artifact” można jednoznacznie stwierdzić, że zaimkowi „it” będzie odpowiadać
rzeczownik „airline” (samoloty nie mogą podejmować decyzji).
Bardziej złożona sytuacja występuje w przypadku zdań (7b) i (7c). Występującemu w nich zaimkowi „he” może odpowiadać zarówno John, jak i Peter. Do właściwej interpretacji tych zdań
potrzebny jest złożony proces wnioskowania wykorzystujący dosyć specyficzną wiedzę o świecie
opartą na doświadczeniu. Na podstawie tej wiedzy można stwierdzić, że w zdaniu (7b) zaimek he
odnosi się raczej do Johna, natomiast w zdaniu (7c) zaimek he odnosi się raczej do Petera.
Algorytm określający właściwe odniesienia anaforyczne dla zaimków zaproponowali Lappin
i Leass (1994). Algorytm ten uwzględnia odległość między danym zaimkiem a odpowiadającą mu
frazą w tekście oraz pewne czynniki syntaktyczne (np. funkcja danej frazy w zdaniu – podmiot,
dopełnienie, itd.). W zależności od tej funkcji fraza otrzymuje odpowiednią ilość punktów:
Czynniki semantyczne w algorytmie nie są uwzględniane. Znaczenie poszczególnych współczynników jest następujące. Dana fraza pojawiająca się w kolejnym analizowanym zdaniu otrzymuje
100 pkt. Kolejne punkty są dodawane w zależności od roli danej frazy w zdaniu (najwięcej jeżeli
występuje w grupie podmiotu, najmniej jeżeli jako dopełnienie dalsze):
An Acura Integra is parked in the lot.
(subject)
There is an Acura Integra parked in the lot.
(existential predicate
nominal)
John parked an Acura Integra in the lot.
(direct object)
John gave his Acura Integra w bath.
(indirect object)
Inside his Acura Integra, John showed Susan his New CD player.
(demarcated
adverbial PP)
4
Dodatkowo dana fraza otrzymuje 80 pkt. jeżeli stanowi ośrodek (rdzeń) grupy nominalnej.
Działanie algorytmu przebiega w następujący sposób:
1. Określ potencjalne odniesienia dla zaimków (maksymalnie dla 4 ostatnich zdań),
2. Usuń potencjalne odniesienia, które są niezgodne z zaimkiem pod względem liczby lub rodzaju,
3. Usuń potencjalne odniesienia, które nie spełniają wymagań składniowych (np. specjalne traktowanie zaimków zwrotnych i emfatycznych tj. him – himself),
4. Obliczenie sumy współczynników dla poszczególnych odniesień z uwzględnieniem dotychczasowych wartości (przy przejściu do nowego zdania współczynnik jest dzielony przez 2),
5. Wybór odniesienia o największej wartości współczynnika.
Przykład.
Rozpatrzmy następujące zdania:
John saw a beautiful Acura Integra at the dealership. He showed it to Bob. He bought it.
Analiza pierwszego zdania:
John saw a beautiful Acura Integra at the dealership.
Poniższa tabela przedstawia sumę współczynników dla poszczególnych potencjalnych odniesień:
Ponieważ pierwsze zdanie nie zawiera zaimków przechodzimy do analizy kolejnego zdania.
Dotychczasowe współczynniki są dzielone przez 2:
Analiza drugiego zdania:
He showed it to Bob.
Pierwszą frazą nominalną w drugim zdaniu jest zaimek “he”. Ponieważ jest on rodzaju męskiego,
na podstawie 2 kroku algorytmu do tego zaimka pasuje jedynie fraza „John”. Od razu następuje
rozszerzenie naszego modelu („he” otrzymuje następujące punkty: 100+80+50+80=310):
5
Następną frazą nominalną w drugim zdaniu jest zaimek „it”. Może on się odnosi zarówno do frazy
„the Integra”, jak i „dealership”. Przed dokonaniem wyboru następuje przeliczenie współczynników (fraza „the Integra” otrzymuje dodatkowe 35 pkt. za zgodność funkcji w zdaniu z zaimkiem
„it”). Porównując otrzymane wartości (175 dla Integra oraz 115 dla dealership) zaimek „it” zostanie przypisany do frazy „the Integra”. Następnie obliczamy nowe wartości współczynników:
Drugie zdanie zawiera dodatkowo frazę Bob. Zostaje ona uwzględniona w naszym modelu (suma
współczynników wynosi 100+40+50+80=270):
Przed analizą trzeciego zdania współczynniki są dzielone przez 2:
Na tej podstawie zaimek „he” zostanie powiązany z frazą „John”, natomiast zaimek „it” z frazą
„the Integra”.
Eksperymenty wykazały skuteczność powyższego algorytmu na poziomie 86%.
6
Strategie dialogu człowiek-komputer
Chatbot (lub Chatterbot) - program komputerowy symulujący człowieka, z którym można prowadzić rozmowę przy użyciu języka naturalnego i interfejsu tekstowego. Zadaniem chatbota jest takie
prowadzenie rozmowy, aby użytkownik miał wrażenie, że rozmawia z inteligentnym człowiekiem.
Test Turinga to sposób określania zdolności maszyny do posługiwania się językiem
naturalnym i pośrednio mającym dowodzić opanowania przez nią umiejętności myślenia w sposób
podobny do ludzkiego. Test ten został zaproponowany w 1950 roku przez Alana Turinga.
Nagroda Loebnera - nagroda ufundowana przez Hugha Loebnera w 1990 roku, dla programisty, który zdoła napisać program, który skutecznie przejdzie Test Turinga. Zawody o nagrodę
Loebnera odbywają się co roku, w The Cambridge Center of Behavioral Studies.
Nagroda ta obejmuje przyznanie złotego medalu (całego z 18-karatowego złota) oraz 100 000 USD
dla programisty, który przedstawi program, który zdoła skutecznie zmylić wszystkich sędziów
(testerów) programu.
ALICE (Artificial Linguistic Internet Computer Entity) - nazwa wielokrotnie nagradzanego programu starającego się naśladować ludzką konwersację i jednocześnie nazwa projektu Open
Source mającego na celu stałe jego poprawianie. ALICE nie zdołał jeszcze całkowicie spełnić testu
Turinga, ale trzykrotnie wygrał zawody o nagrodę Loebnera oraz zdobył mistrzostwo w turnieju
„Chatterbox Challenge” w roku 2004.
AIML (Artificial Intelligence Markup Language) - język opisu sztucznej inteligencji, który
jest pochodną języka XML. AIML został wymyślony pierwotnie jako baza wiedzy dla chatterbota
ALICE przez amerykańskiego naukowca Richarda Walleca (rok 1995).
Struktura języka AIML
Plik AIML jest plikiem tekstowym składającym się z tak zwanych „tagów”, czyli znaczników
zaczynających się od znaku „<” i kończących się znakiem „>”. Każdy dokument AIML musi
zaczynać się od znacznika <aiml> i kończyć się znacznikiem </aiml>. Minimalny dokument języka
AIML ma więc postać:
<aiml>
...
</aiml>
Opis działania chatbota w języku AIML opiera się na prostym schemacie: szablon – odpowiedź.
Podstawowymi elementami wiedzy w języku AIML są więc znaczniki <category>, które zawierają
po jednym znaczniku <pattern> oraz <template>. Znacznik <pattern> zawiera opis wzorca wypo-
7
wiedzi wprowadzanej przez użytkownika, natomiast znacznik <template> reakcję bota na
wypowiedź użytkownika. Ilustruje to następujący przykład:
<aiml>
<category>
<pattern>CZESC</pattern>
<template>Witaj, jak się masz?</template>
</category>
</aiml>
W wyniku działania powyższego znacznika na powitanie użytkownika „Czesc” chatbot udzieli
odpowiedzi: „Witaj, jak się masz kolei?”.
Wyrażenie znajdujące się wewnątrz znacznika <pattern> jest prostym wyrażeniem regularnym języka AIML, jest więc pisane w całości wielkimi literami i może zawierać znaki specjalne
„*” oraz „_” oznaczające „cokolwiek”. Należy jednak pamiętać, że znaki „*” i „_” nie mogą
oznaczać pustego ciągu. Przy następującej definicji:
<aiml>
<category>
<pattern>CZESC</pattern>
<template>Witaj, jak się masz?</template>
</category>
</aiml>
program zareaguje na zdanie „Czesc cokolwiek”, ale nie zareaguje już na samo „Czesc”.
Teoretycznie za pomocą znaczników typu <category> można opisać działanie prostego
chatbota. Istnieją jednak inne znaczniki, które pozwalają na bardziej efektywne pisanie programu w
języku AIML. Oto najważniejsze z nich.
Znacznik <srai>
Znacznik <srai> pozwala definiować synonimy dla pewnych określonych wyrażeń. Dzięki temu
uniknąć można wielokrotnego definiowania tych samych reakcji dla różnych wypowiedzi
użytkownika:
<aiml>
<category>
<pattern>CZESC</pattern>
<template>Witaj, jak się masz?</template>
</category>
<category>
<pattern>WITAJ</pattern>
<template><srai>CZESC</srai></template>
</category>
<category>
8
<pattern>CZESC *</pattern>
<template><srai>CZESC</srai></template>
</category>
<category>
<pattern>WITAJ *</pattern>
<template><srai>CZESC</srai></template>
</category>
</aiml>
Znacznik <random>
Znacznik <random> umieszczony wewnątrz znacznika <template> powoduje, że odpowiedź programu będzie wybrana w sposób losowy z pewnego zestawu możliwych odpowiedzi. Odpowiedzi
te definiujemy jako listę, której każdy element umieszczony jest między tagami <li> i </li>:
<aiml>
<category>
<pattern>CZESC</pattern>
<template>
<random>
<li>Witaj, jak się masz?</li>
<li>No hej.</li>
<li>Dzień dobry.</li>
</random>
</template>
</category>
</aiml>
Znacznik <star/>
Znacznik <star/> jest umieszczany wewnątrz Tagu <template>. Powoduje on wstawienie w danym
miejscu ciągu, którym w części <pattern> została zastąpiona gwiazdka („*”):
<aiml>
<category>
<pattern>CO TO JEST *</pattern>
<template>
Wiesz, nie mam pojęcia co może oznaczać słowo <star/>.
</template>
</category>
</aiml>
W przypadku, gdy wzorzec wypowiedzi użytkownika zawiera kilka symboli „*” znacznik <star/>
może zawierać dodatkowo zmienną index określającą, o którą „gwiazdkę” nam chodzi.
Znacznik <input>
Znacznik <input> pozwala chatbotowi odwołać się do jednej z poprzednich wypowiedzi użytkownika (uwzględnienie kontekstu rozmowy). Umieszczany jest w środku znacznika <pattern> i może
9
przyjąć jeden parametr index który oznacza numer wypowiedzi użytkownika liczony wstecz
(1 oznacza wypowiedź, na którą bot reaguje w danej chwili):
<aiml>
<category>
<pattern>CZY TY MNIE SLUCHASZ</pattern>
<template>Tak, powiedziales: <input index=”2”/></template>
</category>
<category>
<pattern>A PRZEDTEM</pattern>
<template>Hmm. Przedtem powiedziales <input index=”4”/></template>
</category>
</aiml>
Znaczniki <get> i <set>
Chatboty mogą przechowywać podczas swego działania różnego rodzaju informacje (np. imię rozmówcy). Są one trzymane w zmiennych, które ustawić i odczytać można przy pomocy znaczników
<get> i <set> :
<aiml>
<category>
<pattern>MAM NA IMIE *</pattern>
<template>
<set name=”userName”><star/></set>
Hmm. To ładne imię.
</template>
</category>
<category>
<pattern>OPOWIEDZ MI DOWCIP</pattern>
<template>
OK. <get name=”userName”/>. Spróbuję coś sobie przypomnieć, w tym
czasie Ty opowiedz jakiś mi.
</template>
</category>
</aiml>
Znacznik <topic>
Znacznik <topic> pozwala programowi orientować się w rozmowie na podstawie tematów. Może
się zdarzyć taka sytuacja, że chatbot nie jest w stanie odpowiedzieć na zdanie swojego rozmówcy.
Wtedy może ratować się ucieczką i odpowiedzieć w sposób niezwiązany bezpośrednio z wypowiedzią użytkownika, ale związany z ostatnio poruszanym tematem.
Znacznik <topic> jest jedynym znacznikiem poza <category>, który może znajdować się bezpośrednio wewnątrz znacznika <aiml>:
10
<aiml>
<category>
<pattern>WITAJ</pattern>
<template>
<think><set name=“topic“>powitanie</set></think>
Dzień dobry
</template>
</category>
<topic name=”POWITANIE”>
<category>
<pattern>*</pattern>
<template>
Jaka jest u Ciebie pogoda?
</template>
</category>
</topic>
</aiml>
Uwaga! Znacznik <think> umożliwia wyznaczenie wewnątrz znacznika <templete> fragmentów,
które nie mają być wyświetlone na ekranie.
Interpretery AIML:
http://aitools.org/programd
- interpreter ProgramD
11

Podobne dokumenty