Chatterbot udzielający informacji o Euro 2012

26.06.2007r.

Kurs: Metody i algorytmy sztucznej inteligencji

Autor: Piotr Grochowski

Prowadzący: dr inż. Witold Paluszyński

1.   Cel projektu:

Celem projektu było napisanie chatterbota, który będzie udzielał informacji o Mistrzostwach Europy, które w 2012 roku odbędą się w Polsce i na Ukrainie. Bot Euro 2012 można przetestować na stronie: http://www.pandorabots.com/pandora/talk?botid=96e5ef6fle36cba5

2.   Opis projektu:

Chatterbot napisałem w języku AIML korzystając z edytora Gaito. Gaito jest dostępny na stronie http://gaito.de/content/produkte_gaitobot/editor.asp?language=en Jest to bardzo wygodny w użyciu edytor, w którym tworzymy kod AIML wybierając myszą odpowiednie konteksty z ramki edytora. Stworzona kategoria jest wyświetlana w postaci schematu drabinkowego co bardzo ułatwia czytelność kodu. Stworzone kategorie zapisywane są w pliku, który stanowi pewien temat wypowiedzi. Każdy plik zawiera informacje o pewnym temacie. Dzielenie bazy danych chatterbota na kilka plików powoduje porządek, dzięki czemu łatwością znajdziemy szukane kategorie. Następnie bazę danych bota eksportowałem do katalogu w którym zostały zapisane wszystkie stworzone przeze mnie pliki o rozszerzeniu .aiml. Aby umieścić bota na stronie www skorzystałem z narzędzia Pandorabot dostępnego na stronie http://www.pandorabots.com/botmaster/en/home Po stworzeniu bota Euro 2012 dodałem do niego stworzona w Gaito bazę wiedzy i rozpocząłem testowanie chatterbota.

3.   Techniki zastosowane przy tworzeniu chatterbota:

Program w języku AIML napisany jest w postaci tagów Przy pisaniu chatterbota wykorzystywałem następujące znaczniki

<srai> - pozwala definiować synonimy dla pewnych wyrażeń. Dzięki temu możemy uniknąć definiowania tych samych wyrażeń dla różnych wypowiedzi użytkownika

Na przykład jeśli zdefiniowaliśmy dla słowa CZESC różne typy odpowiedzi, to tymi samymi odpowiedziami program zareaguje także gdy użytkownik wpisze HEJ, HELLO, YO, itd.

Jak widać na powyższym rysunku dzięki znacznikowi <srai> na słowo HEJ program odpowie jednym ze zwrotów odpowiedzi zdefiniowanych dla słowa CZESC. Dodatkowo gdy zastosujemy CZESC *, to program odpowie na np. na zwrot CZESC PIOTR. Gwiazdka oznacza „cokolwiek", czyli może tam być dowolny ciąg liter lub cyfr

<random> - na rysunku 1 użyłem jeszcze znacznika <random> dzięki któremu spośród zdefiniowanych odpowiedzi wybierana jest jedna w sposób losowy. Dzięki temu unika się powtarzania tych samych odpowiedzi na pytanie użytkownika

<star/> - znacznik ten umieszczony wewnątrz tagu <template> spowoduje wstawienie w tym miejscu ciągu, którym w części <pattern> została zastąpiona gwiazdka ("*"), czyli możemy wykorzystać to co wpisał użytkownik w naszej odpowiedzi. Powoduje to że bot może interpretować wpisane zwroty na swój własny sposób. Przykładem jest:

Na tym rysunku widać, że gdy użytkownik na pytanie: "Jak masz na imię" odpowie to jego wypowiedź zostanie wstawiona w miejsce znacznika <star/>. Funkcje <set> i <think> opisze poniżej

<that> - rozszerza możliwości <template> o sprawdzenie jednej z poprzednich wypowiedzi chatterbota. Jego miejsce jest dokładnie między znacznikiem <pattern> a znacznikiem <template>. Poza sprawdzeniem czy zdanie użytkownika pasuje do wyrażenia regularnego między <pattern> a </pattern>, następuje sprawdzenie czy poprzednie zdanie wypowiedziane przez program pasuje do tego co znajduje się między znacznikami <that> i </that>. Znacznik <that> może przyjmować atrybut index, mówiący którą wypowiedź chatterbota należy przetestować. Przykładem jest tutaj

Jak widać z rysunku wyrażenie znajdujące się pomiędzy słowami <that> odnosi się do innej kategorii, tzn. jeśli użytkownikowi program wyświetli na ekranie: „hmmm... to imię kogoś mi przypomina. Czym się zajmujesz na codzien?" i użytkownik coś odpowie (np. studiuje robotykę) to program zareaguje na to wyrażeniem: „to mile zajęcie:) a piłka nożna się interesujesz?"

<think> - znacznik ten wyznacza fragmenty z wewnątrz znacznika <template>, które nie mają być wyświetlone na ekranie.

To co jest pomiędzy <think> i <think> nie jest wyświetlane na ekranie, ale dzięki znacznikowi <set> jest zapamiętywane pod zmienną o nazwie „ukraina". Tak operacja pozwala później w innym miejscu odczytać to co zostało zapisane w zmiennej za pomocą polecenia <get>. W przykładzie na rysunku program prosi użytkownika, aby powiedział coś na temat Ukrainy. Wszystko co wpisze użytkownik zostanie zapisane pod zmienną „Ukraina"

Rysunek powyżej pokazuje jak za pomocą <get> odczytać wyrażenie które zostało zapisane pod zmienną „ Ukraina". Na przykład, jeśli użytkownik zapyta się: „ Co mi powiesz o organizacji mistrzostw Europy w 2012 roku na Ukrainie" to program przytoczy użytkownikowi jego własną odpowiedź. Zabieg ten powoduje że chatterbot rozumie wypowiedzi użytkownika i wykorzystuje je potem w swoich odpowiedziach.

4. Przykłady rozmów przeprowadzonych z Chatterbotem Euro 2012:

a) Użytkownikiem był twórca chatterbota

Humań: czesc

Euro 2012: No hej, Jak masz na imię?

Humań: Piotrek

Euro 2012: hmmm... to imię kogoś mi przypomina. Czym sie zajmujesz na codzien?

Humań: studiuje robotykę

Euro 2012: Piotrek no co ty powiesz:P zapytaj mnie o jakie sa newsy z przygotowań do Euro

2012. Udzielę Ci tez informacji o planowanych stadionach i infrastrukturze.

Humań: jakie sa newsy z Euro 2012

Euro 2012: 07/06/13 - Polski rząd powoła piec spółek do realizacji planu budowy dróg.

Humań: pogadamy o czymś przyjemnym Euro 2012: jestem za.

Humań: to może pogadamy o robotach Euro 2012: spoko a co proponujesz?

Humań: robot RTR na platformie mobilnej (2,0)

Euro 2012: zaproponowałeś:" robot RTR na platformie mobilnej 2 0", aleja wole pogadać o

piłce nożnej, a teraz sporo newsów czytam o euro 2012.

Humań: dobra powiedz jakie są najnowsze informacje o Euro 2012

Euro 2012: no powoli sie przygotowujemy, nie wiadomo czy zdążymy ze wszystkim.

Zapytaj o infrastrukturę, miasta organizujące lub stadiony.

Humań: . a jakie stadiony i gdzie powstaną?

Euro 2012: Wroclaw-40.000, Poznan-42.000, Warszawa-63.000, Gdansk-40.000 Chcesz

wiedzieć więcej zapytaj o miasto, w którym beda rozgrywane mecze.

Humań: jestem ciekaw jak będzie wyglądał nowy stadion we Wrocku Euro 2012: pięknie, ale to teoria na razie:).

Humań: myślisz ze uda sie zrealizować mistrzostwa europy w Polsce? Euro 2012: mysie ze tak.

Humań: A jak idą przygotowania do imprezy

Euro 2012: no na razie nic nie zrobiliśmy... tylko składy rożnych komisji powołali, ale żadnej

ustawy:/ a w miejscu Baltic Arena ciągle sa ogródki dzialkowe:D.

Humań: ile rząd przeznaczy pieniędzy na euro 2012

Euro 2012: ostatnio w gazecie wyczytałem ze ok. lmld euro.

Humań: obstawiamy kto zdobędzie mistrzostwo Europy w 2012 roku Euro 2012: Polska:).

Humań: A jaki pociągiem dojadę na mecz na ukrainie

Euro 2012: beda modernizowane linie, które sa czescia międzynarodowych połączeń , ma to na celu zwiększenie prędkości jazdy i podniesienie poziomu bezpieczeństwa. Na pewno dojedziesz do stadionu, ale dluzej niz samochodem...

Humań: co zobaczę w kijowie

Euro 2012: Kijów to stolica Ukrainy położona nad rzeka Dniepr. Miasto stanowi centrum logistyczne kraju. W 2005 roku Kijów był gospodarzem konkursu piosenki "Eurowizja" ("Eurovision"). Najbardziej znanym klubem piłkarskim tego miasta jest Dynamo Kijów.

Humań: czy będą wybudowane jakieś autostrady do 2012 roku w Polsce? Euro 2012: Do 2012 roku powinny byc gotowe autostrady: Al - z Gdańska do Bielska-Białej przez Toruń, Lodź i Częstochowę; A2 - z Poznania do Warszawy; A4 - ze Zgorzelca do Rzeszowa przez Wrocław, Opole, Kraków.

Humań: A co ty w ogolę lubisz?

Euro 2012: wino, piwo, kobiety i śpiew:) A ty?

Humań: wszystko Euro 2012: Proszę pytaj.

Humań: chcesz pogadać o tym

Euro 2012: nie bardzo, zadaj inne pytanie proszę.

Humań: po ile sa bilety na mecze Euro 2012

Euro 2012: to zależy na jaki mecz. Powiem tak: od 45 euro za najgorsze miejsca podczas

rozgrywek grupowych do 550 euro za najlepsze miejsca podczas meczu finałowego.

Humań: spoko

Euro 2012: tez tak mysie

b) użytkownikiem były inne osoby

Humań: czesc

Euro 2012: Hejka:) Jak masz na imię?

Humań: ja jestem józek a ty jak sie nazywasz

Euro 2012: no co ty powiesz:P zapytaj mnie o jakie sa newsy z przygotowań do Euro 2012.

Udzielę Ci tez informacji o planowanych stadionach i infrastrukturze.

Humań: czesc

Euro 2012: Dzień dobry, Jak masz na imię?

Humań: a co cie to

Euro 2012: hmmm... to imię kogoś mi przypomina. Czym sie zajmujesz na codzien?

Humań: a niczym

Euro 2012: a co cie to no co ty powiesz:P zapytaj mnie o jakie sa newsy z przygotowań do

Euro 2012. Udzielę Ci tez informacji o planowanych stadionach i infrastrukturze.

Humań: siema

Euro 2012: No hej, Jak masz na imię?

Humań: piotrek

Euro 2012: hmmm... to imię kogoś mi przypomina. Czym sie zajmujesz na codzien?

Humań: studjuie

Euro 2012: piotrek no co ty powiesz:P zapytaj mnie o jakie sa newsy z przygotowań do Euro

2012. Udzielę Ci tez informacji o planowanych stadionach i infrastrukturze.

Humań: jaki stadiony beda we wroclawiu

Euro 2012: Wroclaw-40.000, Poznan-42.000, Warszawa-63.000, Gdansk-40.000 Chcesz

wiedzieć więcej zapytaj o miasto, w którym beda rozgrywane mecze.

Humań: wroclaw co będzie sie działo

Euro 2012: a co cie to no co ty powiesz:P zapytaj mnie o jakie sa newsy z przygotowań do

Euro 2012. Udzielę Ci tez informacji o planowanych stadionach i infrastrukturze.

Humań: to co możesz mi powiedzieć na temat stadionu we wroclawiu Euro 2012: We Wroclawiu odbeda sie 3 mecze grupowe, planowany termin zakończenia budowy stadiony w roku 2010 W okolicach stadionu beda tez: bieżnia do rozgrywania zawodów żużlowych - boiska boczne - korty tenisowe - strzelnica - basen kryty i pływalnia odkryta - hala sportowa - boisko do baseballa - kompleks gastronomiczny (bary i restauracje) - powierzchnia handlowo-usługowa.

Humań: a w gdańsku

Euro 2012: W Gdańsku odbeda sie mecze grupowe, ćwierćfinał. Planowany termin

zakończenia budowy stadiony w roku 2010 W okolicach stadionu beda tez: - kompleks gastronomiczny (restauracje i bary) - hotel - powierzchnia handlowo-usługowa.

Humań: po ile beda bilety

Euro 2012: to zależy na jaki mecz. Powiem tak: od 45 euro za najgorsze miejsca podczas

rozgrywek grupowych do 550 euro za najlepsze miejsca podczas meczu finałowego.

Humań: to drogo kurde bela

Euro 2012: piotrek no co ty powiesz:P zapytaj mnie o jakie sa newsy z przygotowań do Euro

2012. Udzielę Ci tez informacji o planowanych stadionach i infrastrukturze

Humań: to drogo kurde bela

Euro 2012: piotrek no co ty powiesz:P zapytaj mnie o jakie sa newsy z przygotowań do Euro

2012. Udzielę Ci tez informacji o planowanych stadionach i infrastrukturze.

Humań: to co piwesz o tej infrastrukturze we wroclawiu

Euro 2012: We Wroclawiu odbeda sie 3 mecze grupowe, planowany termin zakończenia budowy stadiony w roku 2010 W okolicach stadionu beda tez: bieżnia do rozgrywania zawodów żużlowych - boiska boczne - korty tenisowe - strzelnica - basen kryty i pływalnia odkryta - hala sportowa - boisko do baseballa - kompleks gastronomiczny (bary i restauracje) - powierzchnia handlowo-usługowa.

Humań: a infrastruktura

Euro 2012: piotrek no co ty powiesz:P zapytaj mnie o jakie sa newsy z przygotowań do Euro

2012. Udzielę Ci tez informacji o planowanych stadionach i infrastrukturze.

5.   Wnioski

Napisanie dobrego chatterbota, tzn. takiego który inteligentnie i mądrze odpowiada na każde pytanie użytkownika jest bardzo trudnym i pracochłonnym zajęciem dlatego, że każda osoba ma inny styl wypowiedzi. Bot musi mieć naprawdę potężną bazę wiedzy żeby poprawnie, logicznie odpowiadać rozmówcy. Na podstawie przykładów rozmów mogę zauważyć, że gdy pytania botowi zadaje twórca tegoż bota to bot świetnie sobie radzi. Dzieje się tak , ponieważ twórca bota wie jakich słów użyć w pytaniu, aby bot logicznie odpowiedział. Natomiast, jeśli z botem rozmawia osoba z zewnątrz to często bot odpowiada: „No co ty powiesz:P", ponieważ nie może znaleźć w bazie odpowiedniego wyrażenia i ratuje się standardową odpowiedzią, którą udziela gdy nie zna pytania. Rozmowa bota z jego autorem jest o wiele bardziej konstruktywna i treściwa, natomiast w drugiej rozmowie powtarzają się te same odpowiedzi na różne pytania i bot często też nie wiem co odpowiedzieć. Swojego chaterbota umieściłem na stronie http://www.pandorabots.com/pandora/talk?botid=96e5ef6fle36cba5             w             celu

przetestowania go przez różne osoby. Było mi to bardzo pomocne przy poprawianiu błędów w bazie bota oraz dokładaniu nowych zapytań do bazy.

6.   Bibliografia:

1) http://alicebot.org/ - strona projektu ALICE

2)  http://docs.iedenpies.pl/files/AIML.pdf

3) http://gaito.de/content/produkte_gaitobot/editor.asp?language=en

4) http://www.pandorabots.com/botmaster/en/home

5) http://sequoia.ict.pwr.wroc.pl/~witold/aiarr

Bardzo przydatne okazały się tutoriale umieszczone na stronie edytora Gaito.