16.06.2008r
Raport z projektu przygotowanego na laboratorium Metod i Algorytmów Sztucznej Inteligencji. Wykonał: Adam Przybyło nr albumu: 140396
Prowadzący: dr inż. Witold Paluszyński
This report has been prepared as a requirement for the course: Methods and algorithms of artificial intelligence.
Author: Adam Przybyło gradebook no.: 140396
Instructor: dr inż. Witold Paluszyński
Summary:
Chatterbot is type of computer program designed to simulate an intelligent conversation with human. A large knowledge database is required to carry on meaningful dialog. This database is created in special language called AIML. Artificial Intelligence Markup Language is an XML dialect for creating natural language bots. It contains several elements, the most important ones are <category>, <pattern> and <template>. I used GaitoBot AIML editor to create database for my chatterbot. This program is kind of designer, where you do not need to worry about putting all marks in right position. It also contains a friendly tutorial which quickly introduces basics of using AIML. It all looks simple, but creating a good database is very time-consuming. After creating some basic categories it is possible to test our bot. The biggest problem is to create a bot which will handle dialogs with different people. Everyone has a different way to say the same thing. To build a good database we need lots of hours spent on updating it.
Założenia projektu:
Celem projektu było napisanie chatterbota, który
będzie w stanie prowadzić konwersację na temat sytuacji drużyn NBA
przed rundą playoff.
Chatterbot jest rodzajem programu
komputerowego, który umożliwia prowadzenie rozmowy z
człowiekiem. Jego odpowiedzi są generowane na podstawie bazy wiedzy.
Baza ta jest napisana w języku AIML. Jest to język znacznikowy,
oparty o XML. Jest prosty strukturalnie i opiera się na prostym
schemacie „szablon – odpowiedź”. Do zapytania
użytkownika (szablonu) jest dopasowywana odpowiedź bota. Stworzenie
bazy wiedzy zapewniający logiczną i inteligentną rozmowę z
człowiekiem zajmuje zatem dużo czasu, ponieważ konieczne jest
przeanalizowanie i wprowadzenie wszystkich możliwych scenariuszy
rozmowy.
Realizacja zadania:
Baza wiedzy została stworzona w darmowym edytorze firmy Springwald Software –GaitoBot AIML. Umożliwia on wprowadzanie kolejnych kategorii zbudowanych ze specjalnych znaczników. Jedynym znacznikiem który musi pojawić się w bazie bota jest <aiml>. Od takiego znacznika musi się zaczynać każdy dokument w języku AIML. </znacznik> oznacza zakończenie danego znacznika. Podstawowymi znacznikami są: <category>, <pattern> oraz <template>. Każda kategoria musi zawierać dokładnie jeden znacznik <pattern> i <template>. Znacznik <pattern> definiuje jakiej wypowiedzi dotyczy dana kategoria, a <template> oznacza odpowiedź bota. Przykładowa kategoria:
<aiml>
<category>
<pattern>CZESC</pattern>
<template>Witaj, jak się masz?</template>
</category>
</aiml>
Taka kategoria powoduje, że na „Czesc” zadane przez użytkownika, bot odpowie: „Witam, jak się masz?”. Podobnie tworzone są kolejne kategorie. Kolejne znaczniki rozszerzają możliwości bazy wiedzy. Często używane znaczniki to:
<star> - zastępuje dowolny ciąg znaków (pewnym utrudnieniem jest to że nie może oznaczać ciągu pustego),
<srai> - powoduje odwołanie do innej kategorii,
<that> - pozwala na sprawdzenie poprzednich wypowiedzi bota,
<random> - pozwala na losowe wygenerowanie jednej z zapisanych odpowiedzi na dane pytanie,
<topic> - umożliwia określenie tematu rozmowy, dzięki czemu odpowiedzi bota będą dotyczyły danego tematu,
<set>, <get> - umożliwiają operowanie na zmiennych.
Dzięki temu, że język AIML nie jest zbyt skomplikowany tworzenie bazy wiedzy przebiegało bardzo szybko. Jego prostota ma też swoje wady, ponieważ powoduje, że trzeba wpisywać kilka, lub czasem kilkanaście kategorii aby odpowiedzieć na bardzo podobne zapytania. Bot został także umieszczony na stronie www.pandorabots.com. Serwis ten umożliwia stworzenie własnego bota oraz przygotowanie bazy wiedzy. Dzięki temu bot jest dostępny w Internecie. Bardzo ułatwiłoby to testowanie, ponieważ miałoby do niego dostęp więcej osób. Niestety system ten błędnie odczytuje bazę wiedzy stworzoną w GaitoBocie. Prawdopodobnie gdyby baza była od początku tworzona poprzez stronę pandorabots wszystko działałoby prawidłowo. Przydatną funkcją na tym serwisie są tzw. logi z rozmów. Dzięki nim możliwe jest przejrzenie wszystkich rozmów przeprowadzonych z botem. Pozwala to na znalezienie wypowiedzi, z którymi bot sobie nie poradził i zaktualizowanie bazy wiedzy. Z tego względu jedynym sposobem testowania okazało się poproszenie kolegów, korzystających z GaitoBota o pomoc. Nie były to do końca miarodajne testy, ponieważ pisząc wcześniej bota przewidywali jak prowadzić rozmowę. Mimo wszystko ich pomoc pomogła rozwinąć bazę wiedzy. Sporą wadą GaitoBota był brak obsługi polskich liter. A więc nie było możliwości obsługi np.: zwrotu „Cześć”, a jedynie „Czesc”. Powoduje to brak zrozumienia przez bota osób korzystających z polskich liter.
Przykładowe rozmowy:
Rozmowa 1:
Użytkownik: Czesc
Bot: Witam, jak masz na imie?
Użytkownik: Adam, a Ty?
Bot: Adam to ladne imie. Ja jestem EmDzej.
Użytkownik: O czym pogadamy?
Bot: Najchetniej porozmawialbym o koszykowce, a dokladnie o playoff'ach w NBA. Zgadzasz sie?
Użytkownik: Tak
Bot: To super!
Użytkownik: To co mi powiesz?
Bot: Te playoffy zapowiadają się pasjonująco.
Użytkownik: Dlaczego?
Bot: Poniewaz prawie wszystkie druzyny prezentuja bardzo wysoki poziom. Niewiele jest zespolow z gory skazanych na porazke.
Użytkownik: Powiedz mi cos o Celtics.
Bot: Boston dokonal przed sezonem najwiekszych zmian w skladzie. W zamian za polowe skladu pozyskal dwie gwiazdy NBA - Kevina Garnetta i Raya Allena. Dzieki temu Celtics uzykali najlepszy bilans w calej NBA. Niektorzy uwazaja, ze nie da sie zbudowac mistrzowskiej druzyny w jeden sezon oraz narzekaja na trenera. Ale wg mnie Boston to najwiekszy kandydat do mistrzostwa.
Użytkownik: Jakie szanse mają Suns?
Bot: W trakcie sezonu przeprowadzili jeden z najwiekszych transferów tego sezonu. W zamian za podstawowego skrzydlowego Shawna Mariona sciagneli samego Shaq'a O'Neala. Jednak transfer tez wiazal sie ze zmiana szybkiego stylu gry na bardziej statyczny. Nie sadze aby po tak radykalnej zmianie potrafili odnalezc swoj rytm. Zwlaszcza ze nie jest to juz ten sam Shaq co 2 sezony temu, kiedy zdobyl mistrzostwo z Miami Heat.
Użytkownik: To kto wygra?
Bot: Wg mnie Boston Celtics.
Użytkownik: Tez tak uważam
Bot: To dobrze, ze sie zgadzamy.
Użytkownik: To czesc
Bot: Do usłyszenia.
Powyższa rozmowa to przykład dialogu prowadzonego z botem przez jego twórcę. Doskonale wie na jakie pytania bot potrafi odpowiadać, także dla obserwatora bot sprawia wrażenie inteligentnego rozmówcy.
Rozmowa 2:
Użytkownik: Hej!
Bot: I’m sorry. My responses are limited. You must ask the right questions. //taka informacja pojawia się gdy bot nie zna odpowiedzi na zapytanie
Użytkownik: Witaj
Bot: Dzien dobry, milo Cie poznac.
Użytkownik: Mi rowniez
Bot: I’m sorry. My responses are limited. You must ask the right questions. //ponownie bot nie znal odpowiedzi
Użytkownik: O czym porozmawiamy?
Bot: Moze podyskutujemy o fazie playoff w NBA? Zgadzasz sie?
Użytkownik: Co to jest playoff?
Bot: Playoff to rozgrywki po sezonie zasadniczym. Awansuje do nich 16 najlepszych druzyn, po 8 z kazdej konferencji. Rywalizuja w systemie pucharowym, w seriach do 4 zwyciestw. Chcesz dowiedziec sie wiecej?
Użytkownik: Tak
Bot: Swietnie.
Użytkownik: Kto gra?
Bot: W konferencji zachodniej grają Los Angeles Lakers z Denver Nuggets, New Orleans Hornets z Dallas Mavericks, San Antonio Spurs z Phoenix Suns i Utah Jazz z Houston Rockets. W konferencji wschodniej grają Boston Celtics z Atlanta Hawks, Detroit Pistons z Philadelphia Sixers, Orlando Magic z Toronto Raptors i Cleveland Cavaliers z Washington Wizards.
Użytkownik: Kto jest lepszy? Lakers czy Nuggets?
Bot: I’m sorry. My responses are limited. You must ask the right questions. //zbyt złożone zapytanie, bot nie znalazł odpowiedzi
Użytkownik: Powiedz mi kto wygra Lakers czy Nuggets?
Bot: Ostatnia druzyna ktorej udalo sie uzyskac awans. Na papierze ma swietnych graczy na kazdej pozycji. Fantastyczni strzelcy - Allen Iverson, Carmelo Anthony to byli zwyciezcy klasyfikacji najlepiej punktujacych. Marcus Camby to najlepszy obronca zeszlego sezonu. A jednak druzyna gra duzo ponizej oczekiwan. Najwiecej krytyki spada na trenera, ktory nie umie tego zbioru gwiazd poukladac w druzyne. \\bot źle zrozumiał zapytanie i udzielił odpowiedzi nieprawidłowej
Użytkownik: Glupi jestes!
Bot: Dopiero sie ucze, daj mi szanse.
Użytkownik: Spływaj
Bot: I’m sorry. My responses are limited. You must ask the right questions. //użytkownik wpisał polską literę, dlatego nie zostało to rozpoznane
Użytkownik: Spadaj!
Bot: Bardzo milo mi sie z Toba rozmawialo, ale do widzenia. //bot kończy rozmowę
Rozmowa do pewnego momentu była prowadzona całkiem nieźle, mimo kilku pomyłek bota. Widać brak odpowiedzi na kilka wydawało by się oczywistych zapytań.
Inne rozmowy były prowadzone w mniej lub bardziej udany sposób. Ze względu na mały zasób wiedzy bota, bardzo łatwe było zadanie mu pytania, na które nie zna odpowiedzi. Część rozmów mimo dobrego początku nie rozwijała się później tak jak chcieli użytkownicy. Bot nie znał odpowiedzi na ich pytania co prowadziło do zakończenia rozmowy.
Wnioski:
Po
wpisaniu pierwszych kilku kategorii pisanie bota wydawało się bardzo
proste. Jednak w miarę jak trzeba było obsłużyć więcej zwrotów
okazało się, że jednak jest to dosyć uciążliwe. Stworzenie bota,
który będzie swobodnie rozmawiał na przynajmniej jeden temat
jest możliwe tylko przy pomocy wielu osób oraz ciągłego
aktualizowania bazy wiedzy. Konieczne jest nie tylko dodawanie
odpowiedzi na kolejne zapytania, ale także analiza i prawidłowe
zbudowanie struktur powiązanych ze sobą odpowiedzi. Przykładem
takiego bota, nieustannie rozwijanego dzięki pomocy wielu osób
jest bot A.L.I.C.E. Mimo tych trudności pisanie bota było ciekawym
doświadczeniem i na swój sposób zabawą. Przyjemne było
bowiem patrzenie jak bot radzi sobie z coraz większą ilością
wyrażeń.
Materiały:
www.pandorabots.com – serwis poświęcony chatterbotom,
www.e-basket.pl, www.nba.com – źródło informacji o drużynach, analizy przed playoff,
www.docs.jedenpies.pl/files/AIML.pdf – źródło informacji nt. podstaw języka AIML,
www.pandorabots.com/pandora/talk?botid=f5d922d97e345aa1 – strona, na której można porozmawiać z A.L.I.C.E.,
www.gaito.de – strona edytora GeitoBot AIML.