Wydział
Elektroniki
Bot rozmawiający na temat polskiej
muzyki rockowej
Przedmiot: Metody i algorytmu sztucznej inteligencji – projekt
Prowadzący:
dr inż. Witold Paluszyński
Wykonał:
Jarosław Sierant
nr ind.: 140410
Data:
9 czerwca 2008
Celem zadania było zrealizowanie bota, który umożliwia rozmowy o muzyce (szczególnie na temat polskiej muzyki rockowej). Posiada bazę wiedzy o zespołach i członkach zespołów polskiej sceny rockowej. Posiada wiele ciekawych informacji z życia gwiazd i historii poszczególnych zespołów. Dzięki temu osoba rozmawiająca z nim może uzyskać dużo informacji na ten temat. Bot został stworzony przy użyciu języka AIML. Do napisania samej bazy wiedzy wykorzystano program Gaitobot. Program ten jest w pełni darmowy i dostępnym dla wszystkich na stronie http://gaito.de/.
Artificial Intelligence Markup Language (ang. Język Opisu Sztucznej Inteligencji) jest odmianą języka XML. AIML został wymyślony jako baza wiedzy dla chatterbota A.L.I.C.E, który stanowi mocno rozwiniętą wersję innego znanego chatterbota Eliza.
Język AIML służy do opisu bazy wiedzy dla chatterbotów, których celem jest prowadzenie rozmowy. Jest językiem bardzo prostym strukturalnie, który opiera się na prostym schemacie szablon – odpowiedź.
Każdy dokument AIML musi zaczynać się od znacznika <aiml> i kończyć znacznikiem </aiml>, tak więc każdy taki dokument jest minimalnym i całkowicie interpretowanym dokumentem języka AIML.
Dokument AIML składa się z dowolnej liczby obiektów zwanych kategoriami i określanych znacznikiem <category>, przy czym każdy z nich powinien składać się z dokładnie jednego elementu <pattern> i jednego elementu <template>. Wyrażenie znajdujące się wewnątrz znacznika <pattern> jest to zwrot wypowiedziany przez rozmówce, na który chatterbot reaguje wyrażeniem zapisanym w znaczniku <template>. Teoretycznie tylko te znaczniki wystarczają do napisania prostego chatterbota.
W języku AIML istnieje jeszcze wiele innych znaczników, które ułatwiają pisanie bazy wiedzy dla chatterbota. Ważnym elementem, o którym należy wspomnieć jest znacznik <topic>, wewnątrz którego można tworzyć różne reakcje dla określonych faz rozmowy . Do tego celu wystarczy ustawić zmienną o nawie topic.
Oprócz wyżej wymienionych znaczników w projekcie zostały użyte jeszcze:
<srai> - pozwala definiować twórcy bazy wiedzy synonimy dla pewnych określonych wyrażeń. Dzięki temu uniknąć można wielokrotnego definiowania tych samych reakcji dla różnych wypowiedzi użytkownika.
<random> - mieszczony wewnątrz tagu <template> powoduje, że odpowiedź programu będzie wybrana w sposób losowy z pewnego zestawu możliwych odpowiedzi.
<that> - rozszerza możliwości <template> o sprawdzenie jednej z poprzednich wypowiedzi chatterbota.
<condition> - umieszcza się go wewnątrz znacznika <template>, a pozwala na sprawdzenie wartości określonej zmiennej i reakcję chatterbota w zależności od otrzymanego wyniku.
<get/> i <set> - znaczniki te służą do zapisywania i odczytywania zmiennych (np. zapisywanie imienia rozmówcy).
Aby pokazać jak radzi sobie stworzony chatterbot zostały przedstawione dwie jego rozmowy. Obrazują one jego możliwości oraz w niektórych przypadkach błędy. Związane są one głównie z brakiem odpowiedzi na tak sformułowane pytanie a w niektórych sytuacjach chatterbot niepoprawnie interpretuje pytania użytkownika. Pierwszą rozmowę prowadził twórca tegoż bot i jak widać chatterbot jest bezbłędny. W drugiej widoczne jest już to, że baza wiedzy nie jest na tyle rozbudowana żeby możliwe było odpowiadanie na każde zapytanie.
Rozmowa 1.
Użytkownik: czesc
Czesio: Czesc. Jak masz na imie?
Użytkownik: jarek
Czesio: Czesc Jarek. Ja jestem bot Czesio. Oczym chcesz porozmiawiac? Znam sie troche na muzyce:)
Użytkownik: porozmawiajmy o muzyce
Czesio: To fajnie. Bardzo interesuje sie muzyka - znam sie jednak tylko na polskim rocku.
Użytkownik: jakie znasz zespoly
Czesio: Nie znam co prawda wszystkich polskich zespolow rockowych, ale moge udzielic Ci kilku ciekawych informacji na temat kilku z nich... np. Dzem, Kult, Normalsi, Kombi, Lombard, Lady Pank, no i moja ulubiony Perfect:) Ktory z nich Cie interesuje?
Użytkownik: co wiesz o zespole perfect
Czesio: Perfect jest to jeden z najlepszych polskich zespolow rock'owych lat 80. i 90. Zespol zostal zalozony w roku 1977 przez perkusiste Wojciecha Morawskiego, basiste Zdzislawa Zawadzkiego i gitarzyste Zbigniewa Holdysa. Czlonkowie zespolu zmieniali sie. Obecnie sklad zespolu to: Grzegorz Markowski - spiew, Jacek Krzaklewski - gitara, Dariusz Kozakiewicz - gitara, Piotr Szkudelski - instrumenty perkusyjne, Piotr Urbanek - gitara basowa. Najberzdiej znanymi utworami sa: Autobiografia, Nie plach Ewka i wiele innych. Chcesz zobaczyc jakie albumy wydal ten zespol?
Użytkownik: nie
Czesio: Dobrze...nie bede sie narzucal:)
Użytkownik: jaki jest sklad zespolu perfect
Czesio: Grzegorz Markowski - spiew Jacek Krzaklewski - gitara Dariusz Kozakiewicz - gitara Piotr Szkudelski - instrumenty perkusyjne Piotr Urbanek - gitara basowa
Użytkownik: co wiesz o Grzegorzu Markowskim
Czesio: Grzegorz Markowski (ur. 23 wrzesnia 1953 w Jozefowie kolo Bilgoraja) - polski piosenkarz, od 1979 roku (niektore zrodla podaja 1980) wokalista zespolu Perfect. Swoja kariere zaczynal od spiewania w amatorskiej grupie Watabah, nastepnie jako wokalista w Studio Piosenki ZAKR. Przelomem i zwrotem bylo nagranie slawnego motywu do serialu "07 zglos sie", po ktorej otrzymal od zalozyciela zespolu Perfect, Zbigniewa Holdysa, propozycje wspolpracy.
Użytkownik: fajnie sie rozmawialo to na razie
Czesio: No narazie, do milego...:)
Rozmowa 2.
Użytkownik: witaj jak sie masz?
Czesio: Czesc. Jak masz na imię? //bot nie w pełni dobrze interpretuje wypowiedz użytkownika
Użytkownik: Pawel
Czesio: Czesc Pawel. Ja jestem bot Czesio. Oczym chcesz porozmiawiac? Znam sie troche na muzyce:)
Użytkownik: chce porozmawiac o pogodzie
Czesio: I’m sorry. My responsem are limited. You must ask the right questions //bot nie wie nic na temat pogody, z filmami radzi sobie lepiej
Użytkownik: porozmawiajmy o filmach
Czesio: Nie znam sie na filmach. Moze wolalbys porozmawiac o muzyce?
Użytkownik: dobra
Czesio: Fajnie. Znam sie na najlepszej wg mnie polskiej muzyce rockowej. Pytaj o zespoly czy sklad.
Użytkownik: jakie znasz zespoly?
Czesio: Nie znam co prawda wszystkich polskich zespolow rockowych, ale moge udzielic Ci kilku ciekawych informacji na temat kilku z nich... np. Dzem, Kult, Normalsi, Kombi, Lombard, Lady Pank, no i moja ulubiony Perfect:) Ktory z nich Cie interesuje?
Użytkownik: powiedz mi cos na temat zespolu Lady Pank
Czesio: I’m sorry. My responsem are limited. You must ask the right questions //bot nie ma odpowiedzi na tak postawione pytanie ale jeśli jest trochę inaczej sformułowane to odpowiada poprawnie
Użytkownik: co wiesz o zespole Lady Pank
Czesio: Niezly wybor. Lady Pank - polski zespól rockowy zalozony w 1981 roku w Warszawie przez Jana Borysewicza i Andrzeja Mogielnickiego. Jedna z najpopularniejszych grup w historii polskiego rocka. Zespól wydal ponad 20 plyt i dziesiatki przebojów, m.in. "Tancz glupia, tancz", "Mniej niz zero", "Wciaz bardziej obcy", "Kryzysowa narzeczona", "Zamki na piasku", "Vademecum skauta", "Tacy sami", "Zostawcie Titanica", "Mala wojna", "Zawsze tam gdzie ty", "Na co komu dzis", "Znowu pada deszcz", "Na granicy", "Stacja Warszawa", "Strach sie bac", "Dobra konstelacja". Nazwa grupy pochodzi od tytulu pierwszego nagrania "Mala Lady Punk" (z nieco zmieniona pisownia). Pierwszy koncert pod szyldem Lady Pank zespól zagral w czteroosobowym skladzie (Jan Borysewicz - wokal, gitara; Edmund Stasiak - gitara; Pawel "Kawka" Mielczarek - gitara basowa; Andrzej Polak - perkusja) 14 sierpnia 1982 roku z okazji otwarcia studenckiego klubu Park. Chcesz poznac sklad zespolu?
Użytkownik: tak
Czesio: Jan Borysewicz - gitara solowa, spiew Janusz Panasewicz - spiew Kuba Jablonski - perkusja Krzysztof Kieliszkiewicz - gitara basowa Michal Sitarski - gitara (koncerty)
Użytkownik: jaki zespol lubisz?
Czesio: Lubie rock. Jest najlepszy. //bot błędnie zinterpretował pytanie użytkownika
Użytkownik: jakie sa twoje ulubione utwory?
Czesio: Wiele jest takich utworow... jedne z ulubionych to: Coma-"Nie tylko dla Ciebie", Dzem-"Wehikul czasu" oraz "Kult-Dziewczyna bez zeba na przedzie"
Użytkownik: uciekam
Czesio: Dziekuje za rozmowe:)pa-pa
W początkowej fazie projektu sprawdzane były różne środowiska do tworzenia bazy wiedzy chatterbota. Sprawdzano różne wersje programów między innymi pobranych ze strony projektu A.L.I.C.E, które jednak nie w pełni poprawnie interpretowały cześć wykorzystanych znaczników. Dlatego zdecydowano wykorzystać środowisko Gaitobot. Niepełna wersja tego programy dostępna jest na stronie http://www.gaito.de/. Środowisko to z pośród wszystkich testowanych najlepiej interpretowało wykorzystane w projekcie elementy języka AIML. Jednak nie było ono bezbłędne. Dość często podczas prac należało wczytywać ponownie całą bazę wiedzy chatterbota, gdyż niektóre znaczniki nie działały poprawnie (po przeładowaniu bazy problem znikał). Po zaimplementowaniu dość znacznej bazy wiedzy, przeprowadzono testy chatterbota. Wiadome jest, że każda osoba ma określony sposób mówienia, dlatego najlepszym sposobem sprawdzenia i poprawienia błędów chatterbota jest przeprowadzenia testów przez osoby nie znające jego bazy ani sposobu jej implementacji. Więcej o testowaniu chatterbota opisano w następnym punkcje.
Jak już wspomniano wcześniej najlepszym sposobem sprawdzenia chatterbota jest testowanie go przez osoby nie znające jego bazy wiedzy. Z tego powodu umieszczono go na stronie http://www.pandorabots.com. Dzięki temu wiele osób mogło z nim w łatwy sposób rozmawiać. Ten sposób jednak nie spełnił oczekiwań twórcy. Podobnie jak wspominanie wyżej interpretery, system na tej stornie nie radził sobie w niektórych sytuacjach (źle interpretował niektóre znaczniki lub nie znajdował w bazie wiedzy odpowiedzi na niektóre pytania użytkownika). Przed umieszczeniem czatterbota na podanej stronie wszystkie elementy były testowane w programie Gaitobot i działały poprawnie.
Z wyżej wymienionych powodów najlepszym sposobem, choć nie w wielkim gronie osób, okazało się testowanie chatterbota wśród znajomych, których twórca przekonał do zainstalowania programu Gaitobot. Rozmowy te umożliwiły ulepszenie niektórych zaimplementowanych elementów i dodanie innych dających dużo większe możliwości podczas rozmów. Koledzy informowali mnie w jaki sposób próbowali uzyskiwać informacje od bota, jaka była odpowiedź programu, a jakiej się spodziewali. To właśnie Oni dostarczyli mi najwięcej uwag i spostrzeżeń – w tym miejscu chciałbym jednocześnie wszystkim bardzo serdecznie podziękować za włożoną pracę i trud w testowaniu mojej aplikacji.
Napisanie dobrego chatterbota, takiego który inteligentnie odpowiada na każde pytanie użytkownika jest bardzo trudnym i pracochłonnym zajęciem. Głównie dlatego, że każda osoba ma inny styl wypowiedzi. Bot musi mieć potężną bazę wiedzy żeby poprawnie, logicznie rozmawiać z użytkownikiem. Każdy człowiek, pytając o to samo może użyć wiele różnych sformułowań, które bot musi prawidłowo rozpoznać, dodatkowo niektóre sformułowania powtarzają się w różnych częściach rozmowy i mimo tego, że wyglądają tak samo mogą wymagać innej reakcji czatterbota (zgodnie z aktualnym tematem rozmowy). Na podstawie przykładów rozmów można zauważyć, że gdy pytania botowi zadaje twórca tegoż bota to on świetnie sobie radzi. Natomiast podczas rozmów z osobami z zewnątrz, które mają inny styl mówienia występują problemy w rozpoznawaniu niektórych sformułowań. Dlatego bardzo ważną fazą w tworzeniu chatterbota jest moment testowania. Właśnie wtedy uwidaczniają się błędy, niedoścignięcia oraz braki w bazie wiedzy. Testy umożliwiają wyeliminowanie tych problemów.
Należy również wspomnieć, że polski język jest bardzo bogaty. Jedną sformułowane może być zapisane na wiele sposobów. Do tego dochodzą jeszcze odmiany słów. Powoduje to, że aby prawidłowo interpretować zapytania użytkownika baza wiedzy musi być bardzo rozbudowana. Dużo bardziej niż np. w języku angielskim.
http://home.agh.edu.pl/~luszpaj/index.php?id=8 - opis języka AIML
http://docs.jedenpies.pl/files/AIML.pdf - opis języka AIML
http://www.gaito.de/content/produkte/ - program do tworzenia chatterbota
http://alicebot.org/ - strona projektu ALICE
http://pl.wikipedia.org/ - dane o muzyce dla chatterbota