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

Temat: Bot rozmawiający o sytuacji drużyn przed rundą playoff NBA.



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

Subject: Chatterbot talking about NBA’s teams status before playoff round.



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



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

  2. 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:



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.



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



  1. 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ń.


  2. Materiały: