Chatterbot Piast udzielający informacji na temat Wrocławia

Autor: Szymon Gałandziej [140322]
Prowadzący: dr inż. Witold Paluszyński
Projekt stworzony w ramach kursu: Metody i algorytmy sztucznej inteligencji
Data: 15.06.2008

Chatterbot to komputerowy program zaprojektowany do symulowania inteligentnej rozmowy z człowiekiem w języku naturalnym. Mój bot nazywa się Piast, możesz z nim porozmawiać o Wrocławiu, przede wszystkim o: teatrach, muzeach, operze i filharmonii, kinach i zabytkach.
Każdy bot musi posiadać bazę wiedzy. Mój bot został stworzony przy użyciu języka AIML (Artificial Intelligence Markup Language). jest to prosty język zaprojektowany w celu tworzenia chatterbotów. W języku AIML baza wiedzy jest zbudowana z kategorii. Każda kategoria zawiera wzorce i szablony. Szablon określa odpowiedź dopasowaną do wzorca.
Mogłoby się wydawać, że jest łatwo stworzyć chatterbota. Ale moim zdaniem tak nie jest. Jeżeli chcesz zbudować inteligentnego chatterbota, musisz stworzyć naprawdę ogromną bazę wiedzy!


Chatterbot Piast giving information about Wroclaw

Author: Szymon Gałandziej [140322]
Conducted by: dr eng. Witold Paluszyński
This report has been prepared as a requirement for the course: Methods and algorithms of artificial intelligence
Date: June 15, 2008

A chatterbot is an computer program designed to simulate an intelligent conversation with human in nautural language. My bot name`s Piast, you can talk with Piast about Wroclaw, especially about: theatres, museums, opera and philharmonic, cinemas or monuments.
Every bot must have a base of knowledge. My bot was created by means AIML language (Artificial Intelligence Markup Language). It is simple language designed to create chatterbots. In AIML base of knowledge is formed by categories. Each category consist of pattern and template elements. A template specifies the response to a matched pattern.
It would appear that it`s easy to create a chatterbot. But in my opinion it isn`t. If you want build a smart chatterbot you must create really huge base of knowledge!


Opis zadania

Celem zadania było napisanie chatterbota posiadającego pewną wiedzę o Wrocławiu i udzielającego informacji użytkownikowi na temat tego miasta. Chatterboty są interaktywnymi programami potrafiącymi prowadzić rozmowę z człowiekiem w języku naturalnym. Chatterbot Piast stworzony w ramach tego projektu został stoworzony w języku AIML i posiada stałą bazę wiedzy.
Inteligencję bota oraz jego zdolność do posługiwania się językiem naturalnym określa się przeprowadzając Test Turinga. W tym teście sędzia - człowiek (C) ma za zadanie odgadnąć czy rozmawia z człowiekiem (B), czy z namszyną (A). Jeżeli sędzia nie potrafi wiarygodnie określić która ze stron jest maszyną, a która człowiekiem, uznajemy, że maszyna przeszła test.

Test Turinga


Opis zastosowanej metody

Baza wiedzy chatterbota została stworzona w języku AIML (Artificial Intelligence Markup Language). Jest to język znaczników oparty o język XML. Jego twórcą jest dr Richard S. Wallace. Język AIML jest bardzo prostym językiem, w ogólności opiera się na schemacie "szablon - odpowiedź). Założenia języka AIML przewidywały kompatybilność z językiem XML, funkcjonalność oraz ścisłą i formalną specyfikację.
AIML składa się ze znaczników. Najprostszy dokument AIML może mieć postać:

<aiml>
<category>
<pattern>Jak masz na imię? </pattern>
<template>Mam na imię Adam. </template>
</category>
</aiml>

W powyższym przykładzie na pytanie: "Jak masz na imię" bot udzieli odpowiedzi: "Mam na imię Adam". Teoretycznie jest możliwe stworzenie prostego bota korzystając tylko z tej konstrukcji. Jednak język AIML składa się z większej liczby znaczników ułatwiających projektowanie bota i poprawiających znacząco jego działanie. W raporcie nie będę opisywał specyfikacji języka AIML i ograniczę się tylko to powyższego przykładu. Dokładne informacje w języku angielskim na temat języka AIML można znaleźć tutaj a wprowadzenie do języka AIML w języku polskim jest dostępne tutaj.


Opis implementacji programowej

Do napisania chatterbota posłużyłem się edytorem GaitoBot. Narzędzie to jest darmowe i jest dostępne dla każdego tutaj.
Podstawową zasadą jaką się kierowałem przy pisaniu bota było oddzielenie bazy wiedzy od sposobu w jaki zostaje uzyskany do niej dostęp (oddzielnie odpowiedzi od pytań). Dla wygody i lepszej przejrzystości program składa się z kilku plików, w każdym z nich znajdują się informacje (baza wiedzy) oraz wzorce pytań dotyczące określonego tematu. Na przykład w pliku "muzea" znajdują się kategorie zawierające informacje ogólne o wrocławskich muzeach, inforamcje opisowe dotyczące wybrancyh muzeów, szczegółowe inforamcje na temat cen biletów oraz lokalizacji a także wzorce zapytań które ich dotyczą.
W programie, poza podstawowymi znacznikami (<category>>, <pattern> i <template>) zastosowałem między innymi: mechanizmy synonimów (znacznik <srai>), mechanizm losowego wybierania odpowiedzi (znacznik <random>), mechanizm utrzymania lokalnego kontekstu rozmowy (znacznik <that>), mechanizm odczytywania i wyświetlania zmiennych (znaczniki <get> i <set>). Dopasowywanie szablonu odpowiedzi następuje za pomocą wychwytywania słów kluczowych i mechanizmu synonimów. Słowa kluczowe sprawdzają się w większości przypadków ale takie podejście może sprawiać również problemy. Jest to dokładniej omówione w częsci raportu opisującej testy.


Przykłady rozmów

Rozmowa 1. (rozmowa przebiega płynnie)

Człowiek >Czesc
Bot >Czesc, nazywam sie Piast. Jestem chatterbotem i moge udzielic Ci informacji na temat Wroclawia. Jak Ty masz na imie?
Człowiek >Jestem Szymon
Bot >Ciesze sie, ze moge Cie poznac Szymon. Czy mam Ci podac podstawowe informacje o Wroclawiu?
Człowiek >tak
Bot >Wroclaw to jedno z najwiekszych i najstarszych miast Polski. Jest stolica wojewodztwa dolonoslaskiego. Mieszka tu okolo 700 000 ludzi. Przez Wroclaw przeplywa druga co do wielkosci rzeka w Polsce - Odra. Prezydentem Wroclawia jest Rafal Dudkiewicz. Jezeli chcesz dowiedziec sie czegos wiecej - pytaj! Mam wiedze na temat muzeow, teatrow, opery, filharmonii, kin oraz najbardziej znanych zabytkow.
Człowiek >W takim razie powiedz mi cos o wroclawskiej filharmonii
Bot >Filharmonia im. Witolda Lutoslawskiego miesci sie przy ulicy Marszalka Jozefa Pilsudskiego 19. Ceny biletow wahaja sie w granicach od 10 zl (wejsciowki) do 40 zl, w zaleznosci od miejsca. Kasa biletowa czynna jest od w godzinach 11.00 - 18.00 oraz na godzine przed koncertem.
Człowiek >Dzieki!
Bot >Cala przyjemnosc po mojej stronie!
Człowiek >Opowiedz teraz cos o operze
Bot >Tradycje operowe we Wroclawiu siegaja pierwszej polowy XVII w.Obecnie dyrektorem opery jest Ewa Michnik. Wroclawska opera slynie z monumentalnych widowisk realizowanych w plenerze lub w Hali Stulecia. Budynek opery znajduje sie przy ulicy Swidnickiej.
Człowiek >Mozesz zaproponowac jakis temat?
Bot >Posiadam wiedze na temat Wroclawia, mam nadzieje, ze dowiesz sie czegos interesujacego ode mnie. Mozemy porozmawiac o muzeach, teatrach, operze, filharmonii, kinach albo zabytakach Wroclawia.
Człowiek >W takim razie chcial bym dowiedziec sie czegos o zabytkach
Bot >Mimo, ze Wroclaw zostal powaznie zniszczony podczas wojny, wiele budynkow zostalo odbudowanych badz odrestaurowanych. Do najwazniejszych budynkow naleza: Rynek i Ratusz, Katedra i Ostrow Tumski, Hala Ludowa, Ogrod zoologiczny
Człowiek >Co wiesz o Rynku?
Bot >Jest to drugi (po krakowskim) plac Europy, ma wymiary 205 na 175 m. Centralna czesc Rynku zajmuje blok srodrynkowy, skladajacy sie z Ratusza. Nowego Ratusza oraz licznych kamienic. Wroclawski ratusz to jeden z najlepiej zachowanych historycznych ratuszy w Polsce. Budowa ratusza trwala od XII do XVI w. W piwnicach znajduje sie m.in. najstarsza restauracja w Europie (Piwnica Swidnicka).
Człowiek >Mozesz polecic jakies muzeum?
Bot >We Wroclawiu znajduje sie wiele obiektow muzealnych. Najbardziej znane z nich to Muzeum Narodowe, Muzeum Miejskie, Panorama Raclawicka i Muzeum Architektury. Czy jestes zainteresowany informacjami na temat ktoregos z tych obiektow?
Człowiek >Chcialbym dowiedzic sie czegos o Muzeum Narodowym
Bot >Wroclawskie Muzeum Narodowe zapoczatkowalo swoja dzialalnosc w 1947r. Stale wystawy tego muzeum dotycza sztuki polskiej oraz sztuki slaskiej. Poza tym muzeum oferuje wiele ciekawych wystaw czasowych. Czy chcesz dokladniejszych informacji na temat lokalizacji, godzin otwarcia oraz cen biletow?
Człowiek >tak
Bot >OK! Oto dokladniejsze informacje: Muzeum Narodowe jest otwarte od srody do niedzieli w godzinach od 10.00 do 16.00 oraz w kazdy ostatni wtorek miesiaca w tych samych godzinach. bilet normalny kosztuje 15 zl a ulgowy 10 zl. Muzeum znajduje sie przy ulicy Powstancow Warszawy 5.
Człowiek >Ok, dzieki za rozmowe
Bot >Ciesze sie, ze moglem pomoc!

Rozmowa 2. (błędy bota)

Człowiek >Hej
Bot >Witaj, jestem Piast. Jestem chatterbotem i moge udzielic Ci informacji na temat Wroclawia. A Ty jak masz na imie?
Człowiek >mam na imie Szymon
Bot >Ciesze sie, ze moge Cie poznac Szymon. Czy mam Ci podac podstawowe informacje o Wroclawiu?
Człowiek >nie
Bot >Mozesz mnie zapytac o Wroclawiskie muzea, teatry, opere lub filharmonie. Jezli chcesz pojsc do zoo albo do kina to rowniez postaram Ci sie pomoc
Człowiek >o nie, tylko nie muzea!
Bot >We Wroclawiu znajduje sie wiele obiektow muzealnych. Najbardziej znane z nich to Muzeum Narodowe, Muzeum Miejskie, Panorama Raclawicka i Muzeum Architektury. Czy jestes zainteresowany informacjami na temat ktoregos z tych obiektow? << 1. Bot dopasował słowo kluczowe ale nie zrozumiał zdania.
Człowiek >nie, powiedz cos o kinach
Bot >Wiesz, ze miasto posiada tor konny (w Polsce sa tylko 3 takie), miesci sie on na Partynicach; na jego terenach w 1983 Jan Pawel II odprawil msze! << 2. Bot dopasował słowo kluczowe "powiedz coś" zamiast "kinach".
Człowiek >wkurzasz mnie!
Bot >...Nie wiem czy Cie dobrze zrozumialem... << 3. Bot znalazł odpowiedź ratunkową, niestety nie jest zbyt trafna.
Człowiek >chcial bym pojsc do kina
Bot >We Wroclawiu znajduje sie sporo kin. Mieszcza sie tu zarowno multipleksy: Helios, CinemaCity, Multikino, jak i mniejsze kina, o dluzszej tradycji: np. Kino Lwow i Kino Warszawa. Czy jestes zainteresowany informacjami na temat ktoregos z tych kin?
Człowiek >jasne, ze tak
Bot >A moze zaproponuj jakis temat do rozmowy? Wiem sporo np. o wroclawskich teatrach i muzeach. << 4. Bot nie zrozumiał odpowiedzi twierdzącej i próbuje się ratować.
Człowiek >co ty gadasz!
Bot >Powiedzialem "A moze zaproponuj jakis temat do rozmowy? Wiem sporo np. o wroclawskich teatrach i muzeach." << 5. Bot nie rozumie złośliwości tego pytania i odpowiada niezbyt trafnie.

Rozmowa 3. (ciekawostki)

Człowiek >Kim jestes?
Bot >Jestem chatterbotem, nazywam sie Piast i moge porozmawiac z Toba o Wroclawiu.
Człowiek >Powiedz cos ciekawego
Bot >Wiesz, ze miasto ma czwarta najwieksza liczbe mostow (i kladek) w Europie, plasuje sie zaraz za Amsterdamem, Wenecja i Sankt Petersburgiem!
Człowiek >Znasz jakis kawal?
Bot >Hmm... Znam jeden dowcip: Zona wysyla meza - informatyka do sklepu i mowi: "Kup pomidory, jesli beda ogorki - kup dwa". No i kupil... dwa pomidory.
Człowiek >Pamietasz jak mam na imie?
Bot >Z tego co pamietam to masz na imie Szymon

Omówienie wyników

Uwagi do rozmowy 1.

Ta rozmowa została przeprowadzona z botem przeze mnie. W tym przykładzie chciałem pokazać jak powinna wyglądać rozmowa z Piastem wg mojego zamysłu. Oczywiście jest to przypadek wyidealizowany ponieważ wiedziałem o co mogę bota zapytać i jak mam odpowiadać na jego pytania aby rozmowa przebiegała płynnie. Niemniej jednak przykład obrazuje pewien popularny schemat rozmowy. Bot reaguje na przywitanie i zapamiętuje imię rozmówcy. Następnie stara się tak prowadzić rozmowę aby poruszane były tematy związane z Wrocławiem. Reaguje na słowa kluczowe, jeżeli jest taka możliwość to oferuje udzielenie dodatkowych informacji. Przy zakończeniu rozmowy reaguje na podziękowanie.

Uwagi do rozmowy 2.

Ten przykład to zbiór najpowszechniej występujących pomyłek bota. Został stworzony głownie w oparciu o rozmowy prowadzone przez inne osoby, nie znające zasad działania bota.
Bot popełnił 5 błędów:

Uwagi do rozmowy 3.

Ten przykład zamieściłem aby pokazać mechanizmy, które mają za zadanie uczynić bota bardziej "ludzkim". Aby rozmowa z Piastem była bardziej wiarygodna reaguje on na pytania związane z własną osobą - jest świadomy swojego istnienia. Zna kilka ciekawostek na temat Wrocławia, przez co reakcja bota nie ogranicza się do podawania tylko suchych faktów. Bot zna także jeden kawał. Piast nie lekceważy swojego rozmówcy - zapamiętuje jego imię. Poza tym w części wypowiedzi bot losuje swoją kwestię. Dzięki temu jego zachowanie są bardziej naturalne i zróżnicowane.


Wnioski

Uwaga: Początkowo zakładałem umieszczenie bota na serwerze Pandorabots, we wstępnych fazach pracy nad botem wszystko działało bez zarzutu. Niestety po pewnym czasie pojawiły się problemy. Program działający poprawnie w interpreterze GaitoBot nie działał po umieszczeniu na stronie. Wiem, że taki problem pojawił się też przynajmniej u dwóch innych osób i raczej nie był on spowodowany błędami w plikach źródłowych. Tak czy inaczej musiałem ograniczyć się do przeprowadzania testów na własnym komputerze korzystając z programu GaitoBot. Poza mną w testach uczestniczyli moi znajomi, którzy nie byli zaznajomieni ze szczegółami budowy bota.

Trudności z napisaniem dobrego bota w języku AIML można podzielić na kilka aspektów. Po pierwsze bot musi posiadać bazę wiedzy. Ta część zadania okazała się najłatwiejsza. Nie ma najmniejszych problemów ze znalezieniem informacji o Wrocławiu w internecie. Praktycznie każdy obiekt zawarty w bazie wiedzy posiadał swoją stronę internetową. Znacznie trudniejszą rzeczą jest zdefiniowanie dostępu do bazy wiedzy. W moim projekcie dostęp do obiektów bazy wiedzy następuje na podstawie dopasowywania słów kluczowych. Wady i zalety takiego podejścia zostały przedstawione powyżej, przy okazji omawiania wyników. Ponadto język polski sprawia dodatkowe problemy ze względu na deklinację i koniugację wyrazów. Kolejne zagadnienie to symulowanie inteligencji. Aby bot wydawał się bardziej ludzki posługuje się on mechanizmami pokazanymi w omówieniu rozmowy nr 3.

Przeprowadzone testy pokazały możliwości i braki chatterbota Piast. Ważną rolę w jego rozbudowie pełniły rozmowy przeprowadzone z osobami, które nie były wtajemniczone w zasady jego działania. Pozowliło mi to na poprawę błędów, których nie zauważyłem podczas moich rozmów. Na podstawie pracy nad botem Piast mogę stwierdzić, że stworzenie programu dobrze symulującego rozmowę z człowiekiem to nie tylko sprawa rozmiarów bazy wiedzy ale także umiejętność zdefiniowania efektywnych metod dostępu do niej.


Bibliografia

Informacje na temat języka AIML i chatterbotów:

Informacje o Wrocławiu:

Wykorzystane narzędzia:



Valid XHTML 1.0 Transitional