____________________________________________________________________________________________________
Metody i algorytmy sztucznej inteligencji.
Chatterbot rozmawiajacy o polskiej piłce nożnej.
Prowadzący: dr inż. Witold Paluszyński
27.06.2008 r. IV ARS
____________________________________________________________________________________________________
Wykonał:
Marcin Iskierka 133093
____________________________________________________________________________________________________
This report has been prepared as a requirement for the course:
Methods and algorithms of artificial intelligence
Chatterbot talks about polish football.
Teacher: dr inż. Witold Paluszynski
27.06.2008 r. IV ARS
____________________________________________________________________________________________________
Made By:
Marcin Iskierka 133093
____________________________________________________________________________________________________
RESUME IN ENGLISH
Main target of my project was creating a chatterbot named Boniek which could talk in human language about Polish Football. The chatterbot was based on Charliebot Project and A.L.I.C.E Project which I found on Pandora Project website. It's written in Aiml language which is created to such tasks. The chatterbot has some base of knowledge about events in polish football, including play of Polish National Team in Euro 2008 and main facts about Polish Football League. The main problems I have it was adding a huge base of words and sentence so the chatterbot could at least pretend that he understand human language.
Spis tresci:
____________________________________________________________________________________________________
Celem projektu było stworzenie bota informacyjnego, rozmawiającego w języku naturalnym. Głównym tematem rozmowy mojego chaterbota były rozgrywki Orange Ekstra Klasy i aktualne wydarzenia związane z Polskim Footballem. Chaterbot o imieniu Boniek próbuje nawiązać rozmowę z użytkownikiem informując go przy tym o faktach o które zapyta użytkownik. Przy czym posiada pewną bazę wiedzy na temat wyników rozgrywek polskiej ligi i występów polskiej reprezentacji na Euro 2008.
Moj program został stworzony przy użyciu języka AIML. Artificial Intelligence Markup Language (ang. Język Opisu Sztucznej Inteligencji) pochodnego od języka XML. Język ten służy jak juz zostało to nieformalnie wspomniane, do opisu bazy wiedzy dla programów, których celem jest prowadzenie rozmowy, potocznie zwanych "chatterbotami". AIML został wymyślony pierwotnie jako baza wiedzy dla chatterbota A.L.I.C.E. który jest najbardziej rozwiniętym i znanym Chatterbotem w sieci. Należy tutaj wspomnieć, iż chatterbot A.L.I.C.E. wygrał trzykrotnie konkurs o Nagrodę Loebnera1 oraz zdobył mistrzostwo w turnieju "Chatterbox Challenge" w 2004 roku.
Polskim osiągnięciem w tej dziedzinie jest wnioskujący Bot informacyjny EWA stworzony przez firmę Stanusch Technologies który oparty jest o nowoczesne technologie inteligentnego wnioskowania opartego o Serwer Ontologi. Bot Ewa potrafi kojarzyć fakty i odpowiadać na pytania nie przewidziane wcześniej przez programatora. Mój program natomiast opiera się na schemacie „szablon – odpowiedz” i ma raczej charakter algorytmiczny niż inteligentny, przy projektowaniu musiałem sam przewidzieć różne scenariusze rozmowy użytkownika z botem. Bot rozpoznaje imię rozmawiającego i potrafi się zwrócić do niego używając tego imienia.
Ponieważ wszystkie łatwo dostępne interpretery AIML napisane są dla języka angielskiego, w wyrażeniach regularnych nie używam polskich znaków. Nie są one po prostu interpretowane właściwie. Być może istnieje polska wersja interpretera, która sobie z tym radzi, ja jednak takowej nie znalazłem.
Struktura mojego programu jest oparta o proste techniki tworzenia Chatterbotów i wykorzystuje tylko część możliwości języka AIML. Główny schemat wygląda następująco.
<aiml> <category> <pattern> NIECH BEDZIE </pattern> <that>MOZE POROZMAWIAMY O POLSKIEJ PILCE NOZNEJ</that> <template>A CO KONKRETNIE CIE INTERESUJE?<think><set name="topic">TEMATY</set></think></template> </category> </aiml>
|
Użyłem w nim najprostszych znaczników <pattern>, <that>, i <template> które pozwalają tworzyć pewne schematy rozmów które następnie może odbyć rozmówca z botem.
Przykład 1. Oto jedna z przykładowych rozmów jakie odbyłem z botem podczas pisania programu.
Rozmowa I.
boniek: CZESC, JESTEM BONIEK. A TY?
Uzytkownik:
CZESC JESTEM MARCIN.
|
Tą przykładową rozmowę można uznać za udaną, co spowodowane było moją znajomością bota. Po mimo tego niedokończony jeszcze bot natrafił na błąd w programie i niespodziewanie zakończył działanie.
Przykład 2. Jako drugi przykład podaje rozmowę osoby testującej która jak widać niżej nie była już tak udana.
Rozmowa II
boniek: CZESC, JESTEM BONIEK A TY?
Uzytkownik: Witam jestem Czesiek boniek: CZESC Czesiek MOZE POROZMAWIAMY O POLSKIEJ PILCE NOZNEJ?
Uzytkownik: dobrze boniek: A CO KONKRETNIE CIE INTERESUJE?
Uzytkownik: pilka nozna boniek: MOZEMY POROZMAWIAC O ORANGE EKSTRAKLASIE ALBO O MISTRZOSTWACH EUROPY.NO WIEC?
Uzytkownik: mozemy porozmawiac o polskiej lidze boniek: MOGE PODAC CI TERMINY NAJBLIZSZYCH SPOTKAN
Uzytkownik: wole porozmawiac o czyms innym boniek: MOGE PODAC CI TERMINY NAJBLIZSZYCH SPOTKAN
Uzytkownik: nie chce o tym boniek: MOZEMY POROZMAWIAC O WYSTEPIE POLSKI NA EURO 2008
Uzytkownik: swietnie o tym mozemy porozmawiac boniek: CZESC, JESTEM BONIEK A TY? |
W tej rozmowie można było zauważyć ze tematy rozmowy są wybierane losowo i trafia się, że wylosuje dwa lub więcej razy pod rząd ten sam temat pokazując tym samym swoja słabą stronę, poza tym rozmowa osoby testującej była krótsza i zakończyła się niepowodzeniem gdyż bot nie rozpoznał odpowiedzi na pytanie.
Przykład 3. Przykład trzeci to rozmowa którą przeprowadziłem sam aby pokazać rozwój bota w trakcie programowania.
Rozmowa III
boniek: CZESC, JESTEM BONIEK A TY?
Uzytkownik: JA JESTEM ISKRA boniek: CZESC ISKRA MOZE POROZMAWIAMY O POLSKIEJ PILCE NOZNEJ?
Uzytkownik: OK boniek: A CO KONKRETNIE CIE INTERESUJE?
Uzytkownik: NO NIE WIEM boniek: MOZE CI COS PODPOWIEDZIEC
Uzytkownik: NO DOBRA boniek: MOZEMY POROZMAWIAC O ORANGE EKSTRAKLASIE ALBO O MISTRZOSTWACH EUROPY.NO WIEC?
Uzytkownik: EURO boniek: MOŻE INTERESUJA CIE NAJLEPSI PILKARZE TEGO SEZONU
Uzytkownik: NO MOZE BYC boniek: A CO CHCIAŁBYS WIEDZIEC
Uzytkownik: KTO BYL NAJLEPSZYM STRZELCEM W TYM SEZONIE boniek: MISTRZEM STRZELCOW ZOSTAL PAWEL BROZEK Z WISLY KRAKOW
Uzytkownik: A WIESZ O NIM COS WIECEJ boniek: TO MLODY PILKARZ Z KIELC KTORY AKTUALNIE GRA W WISLE KRAKOW
Uzytkownik: AHA boniek: A MOZE CHCESZ POROZMAWIAC O CZYMS JESZCZE
Uzytkownik: NIE DZIEKI boniek: SPOKO. DO NASTEPNEGO RAZU |
Ta rozmowa była bardzo udana, pokazała dobre strony bota co wynikało z mojej znajomości programu i schematów rozmowy. Od początku do końca bot rozpoznawał moje kwestie i prawidłowo na nie reagował, osiągnięcie jednak takiego efektu pomimo mojej znajomości programu kosztowało mnie wiele prób i poprawek w programie.
Przykład 4. Jako czwarty przykład rozmowy zamieszczam rozmowę osoby testującej, która została zapisana na serwerze projektu PANDORA
Rozmowa IV
boniek: CZESC, JESTEM BONIEK A TY?
Uzytkownik: Czesc jestem Dawid boniek: CZESC Dawid MOZE POROZMAWIAMY O POLSKIEJ PILCE NOZNEJ?
Uzytkownik: dobrze boniek: A CO KONKRETNIE CIE INTERESUJE?
Uzytkownik: no polska pilka nozna boniek: MOZEMY POROZMAWIAC O ORANGE EKSTRAKLASIE ALBO O MISTRZOSTWACH EUROPY.NO WIEC?
Uzytkownik: niech bedzie boniek: MOGE PODAC CI TERMINY NAJBLIZSZYCH SPOTKAN
Uzytkownik: no dobra boniek: NO WIEC DO 18.06 ODBYWAC SIE BEDA ROZGRYWKI GRUPOWE, NIESTETY POLSKA NIE WYSTAPI W DALSZYCH MECZACH BO NIE WYSZLISMY Z GRUPY
Uzytkownik: ok a co będzie pozniej boniek: NIE ROZUMIEM PYTANIA MOGLBYS POWTORZYC
Uzytkownik: co potem boniek: FAZA PUCHAROWA ZACZYNA SIE 19.06 AZ DO 29.06 KIEDY TO W WIEDNIU O 20.45 ODBEDZIE SIE FINAL
Uzytkownik: ok dzieki boniek: CZESC, JESTEM BONIEK A TY? |
Ta rozmowa była dosyć udana, aczkolwiek nie do końca. Bot dwukrotnie nie zrozumiał tego co napisał rozmówca. Za pierwszym razem zachował się poprawnie i poprosił o inne sformułowanie pytania, z drugim razem jednak wyrzucił zdanie powitalne co znaczy ze nie był przygotowany na tego typu odpowiedź i od nowa zaczął rozmowę.
Podczas realizacji projektu natrafiłem na dużo przeszkód takich jak np. schemat rozpoznawania imienia rozmówcy. Oprócz tego przekonałem się ze nie najlepszym rozwiązaniem jest pisanie bota wpisując mu od początku ogromną bazę rozpoznawanych słów i zwrotów ponieważ powtarzają się nieliczne tylko schematy. Tak samo rozwijanie wielu wątków naraz nie jest dobrą technika do budowy takiego bota. Dużą pomoc przy pracy nad projektem dały mi uwagi osoby testującej mojego bota. Która prowadziła swoje rozmowy w zdecydowanie inny sposób niż ja bym to zrobił, prawdopodobnie z powodu różnicy wieku.
Poza tym pomocną okazała się strona Projektu PANDORA która pozwala na zamieszczenie swojego bota na serwerze i umożliwienie testowania go przez innych użytkowników sieci przy czym zapisywała logi z przeprowadzonych rozmów. Rozwiązanie to było o tyle korzystne iż dawało również możliwość tworzenia kategorii podczas testowania gdy bot nie rozpoznawał zadanego pytania lub słowa.
Stworzony przeze mnie bot dostępny był pod adresem: http://www.pandorabots.com/pandora/talk?botid=dd811a2b5e36ca56
Testy przeprowadzone przeze mnie i osoby testujące nasunęły mi wiele wniosków takich jak chociażby fakt, że bot ogranicza się do zadawania wielu pytań i sztucznego odpowiadania na nie, ale tylko jeśli są poprawnie sformułowane, nie nawiązuje natomiast normalnej rozmowy z rozmówcą. Do tego dużo czasu spędza na samym przywitaniu i wygenerowaniu tematu rozmowy, a raczej tematu na jaki ma zostać udzielona informacja. Podczas pracy nad projektem testowałem również bota Ewa firmy Stanusch Technologies o którym już wspomniałem i który również pełni role informacyjna. Bot ten również zadaje wiele pytań użytkownikowi, potrafi jednak poprawnie reagować na postawione jemu pytania i na zdania których nie ma aktualnie w bazie wiedzy, co zdecydowanie deklasuje mój projekt.
http://alicebot.org/
- strona projektu ALICE
http://www.pandorabots.com/botmaster/en/home
- serwis umożliwiający zamieszczenie i testowanie bot'a na
stronie www
http://www.pandorabots.com/pandora/pics/aimless/tutorial.htm
- tutorial pokazujący jak sie dodaje wiedze do "mózgu"
bota
www.fizyka.umk.pl/~duch/Wyklady/AI/Prace06/Dobrowolski-AIML.pdf
- Wprowadzenie do AIML
http://www.stanusch.com/Site/onas.html - strona firmy Stanusch Tech. Producenta Bota Informacyjnego Ewa