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!
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!
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.
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.
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.
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! |
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. |
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 |
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.
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:
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.
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.