Tiviot - program telewizyjny

Raport wykonany w ramach zajęć projektowych z przedmiotu "Metody i Algorytmy Sztucznej Inteligencji"
Prowadzący: dr inż. Witold Paluszyński
Wykonał: Michał Sawicz IVr. AIR/ARS, nr alb. 128302
Data: 28.06.2008

Tiviot - TV Guide

This report has been prepared during the course of "Methods and Algorithms of Artificial Intelligence"
Conducted by: dr inż. Witold Paluszyński
Prepared by: Michał Sawicz IVr. AIR/ARS, ID# 128302
Date: 28.06.2008

Abstract
The subject of this report is a chatterbot created in the AIML (Artificial Intelligence Markup Language). The bot has been created to be able to tell the human it's chatting to, what programme is currently airing on some channel in the television. The bot currently knows of three polish public channels - TVP1, TVP2 and TVP Info, but it's easy to extend its scope through additional AIML files that would be of the same structure as the three example ones. The AIML language does not have any elements that would allow asking any external database, thus it is necessary to provide an AIML file that will contain the data. It's possible to download and prepare the programme data from some web sites using the attached WPXMLTV application.
Spis treści:
  1. Opis zadania
  2. Sposób realizacji
  3. Opis języka AIML
  4. Procedury testowe
  5. Efekt testów
  6. Wnioski
  7. Odnośniki

1. Opis zadania
Zadaniem w projekcie było zaporgramowanie tzw. chatterbota (programu potrafiącego prowadzić rozmowę z człowiekiem z wykorzystaniem np. komunikatora internetowego). Tematem rozmów jest bieżący program telewizyjny. Bot powinien odpowiadać na różnie sformułowane pytania dotyczące tego, co w określonym czasie jest lub będzie emitowane na jednym z znanych kanałów telewizyjnych.
2. Sposób realizacji
W realizacji zadania wykorzystałem język AIML[1] (Artificial Intelligence Markup Language - Język Znaczników dla Sztucznej Inteligencji). Jest to projekt stworzony przez dra Richarda Wallace'a i rozwijany przez niego oraz społeczność w ramach fundacji ALICE[2]. Język pozwala na wydajne tworzenie bazy wiedzy bota, która potem wczytana do dowolnego oprogramowania potrafiącego przetworzyć pliki AIML pozwoli na jego uruchomienie. Do stworzenia podstawowej bazy wiedzy posłużyłem się oprogramowaniem GaitoBot[3], który w graficznym interfejsie pozwala na poprawne zbudowanie poprawnego pliku AIML. Dodatkowo do stworzenia bazy samych programów telewizyjnych zmodyfikowałem aplikację WPXMLTV[4], której jestem współautorem. Aplikacja pozwala na łatwe pobranie danych o programach ze stron WWW oraz utworzenie z tych danych poprawnego pliku AIML przygotowanego dla bota Tiviot. Język AIML nie posiada żadnych możliwości odwołania się do zewnętrznych baz danych, dlatego koniecznym jest regularne tworzenie plików z bazą wiedzy o programach TV.
gaitobot
Rys. 1 Interfejs programu GaitoBot

3. Opis języka AIML
Pokrótce opiszę tu podstawowe elementy języka:

4. Procedury testowania
Aby przetestować działanie bota, pokazałem go grupie znajomych, którzy przeprowadzili z nim rozmowę. Na podstawie wyników tej rozmowy można było stwierdzić, czego jeszcze w bazie wiedzy brakuje, jak należałoby ją zmienić czy rozbudować. Szybko okazało się, że baza wiedzy wymaga ciągłej pracy z logami rozmów z różnymi ludźmi, gdyż często zdarzało się, że człowiek zadawał pytania, na które bot nie umiał poprawnie odpowiedzieć.
5. Efekt testów
Poniżej załączyłem kilka przykładowych rozmów z botem.
Rozmowa nr 1
CzłowiekWitam
TiviotCzesc, jak moge pomoc?
CzłowiekNie wiem, a jak umiesz?
TiviotZnam program telewizyjny kilku kanalow na najblizszy tydzien, czego chcesz sie dowiedziec?
CzłowiekO, a co teraz leci w TV?
TiviotA na jakim kanale?
CzłowiekA jakie znasz?
TiviotObecnie znam program TVP1, TVP2 i TVP3.
CzłowiekA, to co leci na jedynce?
TiviotTVP1 (pon): 12:00 Wiadomosci 12:10 Agrobiznes 12:20 Plebania 12:45 Plebania
CzłowiekO, a na dwojce?
TiviotTVP2 (pon): 12:20 Harry i Hendersonowie 12:40 Jestes tym, co jesz 3
CzłowiekFajnie, a co bedzie pozniej na info?
TiviotTVP INFO (pon): 13:01 Serwis ekonomiczny 13:07 Komentarz - swiat 13:25 Serwis kulturalny 13:30 Serwis info 13:54 Pogoda 13:55 Serwis sportowy
CzłowiekA co bedzie jutro o 20 na jedynce?
TiviotTVP1 (wto): 20:05 Pogoda 20:20 Zasadzka
CzłowiekO, fajny film, dzieki.
TiviotNie ma sprawy, polecam sie na przyszlosc.
Rozmowa nr 2
CzłowiekDzien dobry
TiviotDzien dobry, moge jakos pomoc?
CzłowiekA w czym?
TiviotZnam program telewizyjny kilku kanalow na najblizszy tydzien, czego chcesz sie dowiedziec?
CzłowiekA jakich kanalow?
TiviotObecnie znam program TVP1, TVP2 oraz TVP3.
CzłowiekA czworke?
TiviotTo o czym bedziemy gadac?
CzłowiekNo o telewizji?
TiviotA na jakim kanale?
CzłowiekNo na czworce...
TiviotNiestety nie wiem co masz przez to na mysli, umiem tylko rozmawiac na temat programu TV.
CzłowiekNo tak, ale jakich kanalow?
TiviotObecnie znam program TVP1, TVP2 oraz TVP3.
CzłowiekAha, to co bedzie we czwartek na dwojce?
TiviotTVP2 (czw): 12:10 Harry i Hendersonowie 12:35 Prywatne zycie surykatek 2
CzłowiekAha, czesc.
TiviotCzesc.
Rozmowa nr 3
CzłowiekHej
TiviotWitam, w czym moge pomoc?
CzłowiekA co umiesz?
TiviotZnam program telewizyjny kilku kanalow na najblizszy tydzien, czego sie chcesz dowiedziec?
CzłowiekO, kiedy jakis dobry film bedzie?
TiviotA na jakim kanale?
CzłowiekNa polsacie
TiviotTo o czym bedziemy gadac?
CzłowiekHmm, a o czym chcesz?
TiviotA na jakim kanale?
CzłowiekNa jakim kanale?
TiviotNiestety nie wiem co masz przez to na mysli, umiem tylko rozmawiac na temat programu TV.
CzłowiekNo to kiedy jakis film bedzie?
TiviotTo o czym bedziemy gadac?
CzłowiekO niczym, czesc
TiviotDzien dobry, moge jakos pomoc?

6. Wnioski
Jak łatwo zauważyć po powyższych rozmowach, bot umie poprawnie odpowiedzieć jedynie na pytania dotyczące tego, co rzeczywiście wie. Wystarczy zadać jakieś pytanie spoza 'puli' i chatterbot zaczyna odpowiadać nieprzewidywalnie. Jeśli jednak trzymać się prostych schematów pytań, można się bez problemu dowiedzieć, co można obejrzeć. Ponieważ bot opiera swoje działanie na stosunkowo dynamicznych danych, bardzo przydałaby się możliwość odpytywania zewnętrznej bazy danych na podstawie różnych kryteriów. Aby np. zaprogramować bota tak, by zachował się poprawnie w rozmowie nr 3, należałoby stworzyć osobną bazę wiedzy, w której przechowywane byłyby tylko dane filmów, odpowiadające godzinom emisji. Jeśliby chcieć zrobić to samo z tytułami, nasza baza wiedzy rozrosłaby się do olbrzymich rozmiarów i wymagałaby regenerowania co najmniej raz dziennie. Jeśli udałoby się, poprzez np. rozszerzenie języka AIML o dodatkowe elementy, odpytywać odpowiednio bazę danych, możnaby się łatwo skupić na rozwijaniu poprawnego zachowania bota w różnych sytuacjach. W bieżącej formie język ten nie pozwala na wydajne tworzenie dynamicznej bazy wiedzy. Mimo to, nawet tak prosty bot potrafi odpowiadać w sposób sprawiający dość naturalne wrażenie i na pewno jego rozbudowa pozwoliłaby na dopracowanie go tak, by dało się z nim porozmawiać o wszelkich programach w TV.
Odnośniki
Pliki AIML wykorzystywane w tym bocie można znaleźć w podkatalogu aiml
W katalogu wpxmltv znajdują się zmodyfikowane źródła aplikacji WPXMLTV
[1] AIML - Artificial Intelligence Markup Language
[2] ALICE - Artificial Linguistic Internet Computer Entity
[3] GaitoBot - AIML editor
[4] WPXMLTV - Polish TV XMLTV Parser
Valid HTML 4.01 TransitionalPoprawny CSS!