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