____________________________________________________________________________________________________



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:

Cel projektu

Opis jezyka AIML

Przyklady rozmowy

Wnioski

Materialy


____________________________________________________________________________________________________



Cel projektu.

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.

Opis użytej techniki.

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 programu.

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ładowe rozmowy.

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.
boniek: CZESC MARCIN. MOZE POROZMAWIAMY O POLSKIEJ PILCE NOZNEJ


Uzytkownik: CZEMU NIE
boniek: A CO KONKRETNIE CIE INTERESUJE


Uzytkownik: NIE WIEM
boniek: MOZE CI COS PODPOWIEDZIEC


Uzytkownik: OK
boniek: NO WIEC MOZEMY POROZMAWIAC O ORANGE EKSTRA KLASIE ALBO O MISTRZOSTWACH EUROPY. NO WIEC


Uzytkownik: MOZE BYC O EURO
boniek: MOGE CI OPOWIEDZIEC O WYNIKACH W TABELI POLSKIEJ LIGI


Uzytkownik: OK.
boniek: CO KONKRETNIE CHCESZ WIEDZIEC


Uzytkownik: KTO JEST PIERWSZY W TABELI
boniek: MISTRZEM POLSKI ZOSTALA WISLA KRAKOW


Uzytkownik: KTO TAM GRA
boniek: NAJLEPSZYMI GRACZAMI TEJ DRUZYNY SA R.MATUSIAK, P. BROZEK, W.LOBODZINSKI I I.DUDKA


Uzytkownik: OK. DZIEKI
boniek: A MOZE CHCESZ POROZMAWIAC O CZYMS JESZCZE?


Uzytkownik: CHCE
boniek: A CO KONKRETNIE CIE INTERESUJE?


Uzytkownik: NO PILKA NOZNA
boniek: NO WIEC MOZEMY POROZMAWIAC O ORANGE EKSTRA KLASIE ALBO O MISTRZOSTWACH EUROPY. NO WIEC

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ę.





Wnioski.

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.



Materiały.

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