Wrocław dn. 25.06.2008
Sprawozdanie z projektu dla przedmiotu sztuczna inteligencja:
Autor: Kamil Mróz nr. indeksu 140374
Temat:
ChaterrBOT rozmawiajacy o programie
telewizyjnym
Wprowadzenie:
ChatterBOT to program stworzony do emulowania rozmowy w języku naturalnym. Sam pomysł
może się wydawać łatwy jednak przy tak wielu ilościach słów i tak wielu kombinacjach, oraz
nieskończonych możliwościach jakie niesie nam interpretacja słów napisanie robota wpełni
inteligentnie
prowadzącego rozmowę, a co za tym idzie zdającego test Turinga, jest raczej niemożliwe, a
przynjmniej ciężkie,
pracochłonne i zajmująca duża pamięci. Aby napisac dobrego robta należy dać mu jak największą
bazę wiedzy.
Swojeg bota oparłem na języku opisu wiedzy AIML (Artificial
Intelligence Markup Language). Stworzony on został na potrzeby projektu A.L.I.C.E.
Program którego użyłem do napisania bazy wiedzy mojego bota nazywa sie "GaitoBot". Jest to
darmowy
software o dość przejrzystym interfejsie i możliwości łatwego tworzenia nowych zapytań. Niżej
przedstawię cechy
charakterystyczne dla tego języka.
Wrocław dn. 25.06.2008
This report has been prepared as a requirement for the course: Methods
and algorithms of artificial intelligence:
Author: Kamil Mróz nr. indeksu 140374
Title:
ChaterrBOT that talks about TV
programm
Intruduction:
ChatterBOT is a simple programm that emulates a conversation in natural language. The idea itself
seems to be easy. When you start to analize the problem you can see that the large varaity of words and
many combinations they come in and endless ways of interprating them makes the creating of an intelligent
chatting bot (that passes the Turing test) rather complicated, time-consuming, requairaing a lot of
memory, hard if not impossible. If you want to create a god bot you got to make a large base with
diffrent conversations scenarios. I`ve based creation of my bot on AIML language that was made for project
A.L.I.C.E. (chatter bot that has a very large database and is recognized as one of the best in the world)
The interpreter that I`ve used for this task was "GaitoBot". It`s a free software that has a clear
interface and easy way to input new data to the bot. Below i presented general way of using tha AIML.
Opis użytego języka
AIML jako pochodna XML składa się z tzw. "tagów", czyli znaczników zaczynających się od znaku < a
kończących znakiem >.Nie będę się tu zagłębiał w istotę języka XML, o tym można poczytać w dokumencie
opisującym ten standard. Każdy dokument AIML musi zaczynać się od znacznika <aiml> i kończyć
znacznikiem </aiml>, tak więc dokument pokazany poniżej jest minimalnym i całkowicie
interpretowalnym dokumentem języka AIML.
<aiml>
</aiml>
Jak już wspomniałem wcześniej, dokument AIML składa się z dowolnej liczby obiektów zwanych kategoriami i
określanych znacznikiem , przy czym każdy z nich powinien składać się z dokładnie jednego elementu i
jednego elementu. Wszelkie interpretery AIML powinny zgłosić błąd w sytuacji, kiedy kategoria nie zawiera
obydwu tych elementów. Znacznik określa jakiej wypowiedzi użytkownika dotyczy dana kategoria, natomiast
znacznik definiuje reakcję chatterbota na tą wypowiedź. Dla przykładu utwórzmy prosty dokument AIML
zawierający jedną kategorię i powodujący, że na słowo "Czesc", program udzieli odpowiedzi "Witaj, jak się
masz?"
<aiml>
<category>
<pattern>CZESC</pattern>
<template>Witaj, jak się masz?</template>
</category>
</aiml>
A oto wyjaśnienie głównych tagów które zawiera ten język:
<category>
pojemnik wiedzy zawierający pytanie użytkownika i odpowiedź bota
<pattern>
zapytanie użytkownika
<template>
odpowiedź bota
<srai>
znacznik pozwala na odwołanie się do odpowiedzi dla wskazanego w srai pojemnika wiedzy
<random>
pozwala na udzielenie różnych odpowiedzi na to samo zapytanie
<that>
śledzi wypowiedzi użytkownika, jest to niejako instrukcja if, która pozwala na
generowaniu odpowiedzi będącej następstwem wcześniejszych pytań użytkownika
<topic>
ustawia bieżący temat rozmowy, pozwala na udzielenie odpowiedzi w zakresie poruszonego
tematu nawet jeśli bot nie rozumie pytania
<condition>
znaczni pozwala na zapętlenie bota; wyjściem jest udzielenie odpowiedzi dokładnie
takiej jakiej oczekujemy
<star>
Kolejnym interesującym znacznikiem jest znacznik <star>. Umieszczony wewnątrz tagu <template>
spowoduje wstawienie w tym miejscu ciągu, którym w części <pattern> została zastąpiona gwiazdka
("*").
Sam jezyk nie jest zbyt skomplikowany jednak trzeba czasu i dużych nakładów pracy aby stworzyc baze
odpowiedzi dla której robot będzie przypominał prawdziwego rozmówcę.
Bot stworzony przezemnie dziala w dosc prosty sposób. Jest to bot rozmawiajacy o programie telewizyjnym
wiec najpierw naprowadza rozmówcę na to żeby zdecydował wybrał co chce oglądać. Jeżeli ten nie chce mówi
mu że nie może rozawiać o czymś innym. Później użytkownik wybiera sobie czy chce widzieć hity na dziś,
czy program na teraz czy cały program. Następnie użytkownik może podziękować za rozmowę lub wrócić do
punktu wyjścia i ponownie wybrać to co chce się dowiedzieć. Niestety nie udało mi się stworzyć bazy
danych która by była uaktualniana, bot korzysta z wpisanych na stałe danych.
Przykład działania bota
[czlowiek] czesc
[bot] Witaj.Jestem chaterrbotem stworzonym do rozmowy o programie telewizyjnym.Jak masz na imie?
[czlowiek] michal
[bot] A wiec ? michal? co Cie do mnie sprowadza? Moze chcesz wiedziec o dzisiejszych
telewizyjnych hitach, a moze chcesz zoabczyc co leci teraz w telewizji lub zoabczyc program na caly
dzien?.
[czlowiek] nie bardzo
[bot] Niestety chetnie bym porozmawial o innych rzeczach ale moj zakres tematow dotyczy programu
telwizyjnego
[czlowiek] ok niech bedzie
[bot] Co chcesz wiedziec konkretnie? Hity,program na teraz, caly dzien?
[czlowiek] caly dzien
[bot]A tereaz wybierz program dla ktorego chcesz zobaczyc caly program:
[czlowiek] chce tvp1
[bot] Ok wybrales TVP1, program na teraz: 15:10 Smiechu warte Rozrywka 15:35 Sasiedzi Serial
komediowy 16:00 Moda na sukces Telenowela 16:25 Psi psycholog Telenowela dokumentalna 17:00 Teleexpress
Wiadomosci 17:20 Przebojowe porwanie Komedia 19:00 Wieczorynka Dobranocka 19:30 Wiadomosci Wiadomosci
19:50 Sport Wiadomosci sportowe 20:00 Mistrzostwa Swiata - Rajd Brazylii Rajd terenowy 20:05 Pogoda
Pogoda 20:20 Park jurajski III Film sensacyjny czas 100 min 22:00 F/X Thriller czas 110 min 23:50 Doctor
Who Serial SF 00:35 Doctor Who Serial SF 01:20 Doctor Who Serial SF 02:05 Ostatnia taka jazda Dramat
kryminalny 03:50 Byl taki dzien Felieton
[czlowiek] ok dzieki
[bot] Nie ma za co, chcesz wiedziec cos jeszcze?
[czlowiek] nie dzieki
[bot] ok, dzieki za rozmowe michal:)
Tu bot poprawnie przeprowadzil rozmowe.
A teraz nie dokonca poprawne dzialanie:
[czlowiek] czesc
[bot] Czesc.Jestem chaterrbotem stworzonym do rozmowy o programie telewizyjnym.Jak masz na imie?
[czlowiek] niewazne
[bot] Dobrze, bedziesz dla mnie panem bezimiennym
[czlowiek] spoko
[bot] A wiec co Cie do mnie sprowadza? bezimienny? Moze chcesz wiedziec o dzisiejszych
telewizyjnych hitach, a moze chcesz zoabczyc co leci teraz w telewizji lub zoabczyc program na caly
dzien?
[czlowiek] nic
[bot] Niestety chetnie bym porozmawial o innych rzeczach ale moj zakres tematow dotyczy programu
telwizyjnego
[czlowiek] dobra
[bot] Co chcesz wiedziec? Hity,program na teraz, caly dzien?
[czlowiek] hity
[bot] A tereaz wybierz program dla ktorego chcesz zobaczyc dzisiejsze hity:
[czlowiek] tvn
[bot] Ok wybrales TVN, hity na dzis:TVN Niania Serial komediowy godzina: 20:35 czas: 35 minut
[czlowiek] wiesz cos wiecej
[bot] Niestety nie zrozumialem, wiec wyswietle caly program na dzis dla TVNu: 14:55 You can
dance - Po prostu tancz! Rozrywka 16:00 Rewolwer Western 18:00 Milionerzy Teleturniej 19:00 Fakty
Wiadomosci 19:25 Sport Wiadomosci sportowe 19:35 Pogoda Pogoda 19:45 Uwaga! Magazyn 20:00 Niania Serial
komediowy 20:35 Niania Serial komediowy czas 35 min 21:10 Kawaler Komedia romantyczna czas 125 min 23:15
Trzy serca Film obyczajowy czas 125 min 01:20 Uwaga! Magazyn 01:40 Telesklep Program reklamowy 02:05 Nic
straconego Powtórki programów
[czlowiek] a co polecasz?
[bot] Niestety nie zrozumialem, wiec wyswietle caly program na dzis dla TVNu: 14:55 You can
dance - Po prostu tancz! Rozrywka 16:00 Rewolwer Western 18:00 Milionerzy Teleturniej 19:00 Fakty
Wiadomosci 19:25 Sport Wiadomosci sportowe 19:35 Pogoda Pogoda 19:45 Uwaga! Magazyn 20:00 Niania Serial
komediowy 20:35 Niania Serial komediowy czas 35 min 21:10 Kawaler Komedia romantyczna czas 125 min 23:15
Trzy serca Film obyczajowy czas 125 min 01:20 Uwaga! Magazyn 01:40 Telesklep Program reklamowy 02:05 Nic
straconego Powtórki programów
[czlowiek] ok mow co wiesz
[bot]Nie ma za co, chcesz wiedziec cos jeszcze?
[czlowiek] nie
[bot]Ok, dzieki za rozmowe i milego dnia bezimienny :)
Tu w koncowej części bot się pogubił i użył standartowej odpowiedzi w przypadku gdy się zgubi -
wyświetla cały program z danego programu.
Podsumowanie
Stworzenie bota wpełni spełniające wymagania rozmówcy jest zadaniem dość ciężkim jak już wcześniej o tym
wspomniałem. Moj bot spełnia dobrze swoje zadanie. Potrafi poinformować użytkownika na temat hitów,
programu wybranego przez niego kanału. Niestety nie udało mi się stworzyć programu który by uaktualniał
bazę wiedzy, więc na razie jest ona statyczna. Podczas testowania bota zuważyłem, że dużym problemem jest
brak wykrywania literówek, czy błędów ortograficznych. Powoduje to, że bot gubi się częściej niż powinien.
Zauważyłem też, że bardzo ważne jest testowania bota. Ilośc osób które przetestowały go oraz
wykryły jakieś niedociągnięcia jest wprost proporcjonalna do trafności odpowiedzi i jakości działania
robota. Reasumując, aby dobrze opracować taki projekt należy go wykonywać w grupie i wielokrotnie
testować.
Literatura:
Strona projektu ALICE : http://alicebot.org/
http://www.alicebot.org/documentation/aiml-reference.html
http://www.aiml.info
Włodzisław Duch - Byty Wirtualne 1
Program użyty do stworzenia bota:
GaitoBot AIML editor free version