Wrocław, 29 czerwca 2008

Raport na projekt z przedmiotu
ARE3513 Metody i algorytmy sztucznej inteligencji

Temat:
Chatterbot jako system doradczy w zakresie hostingu

Wykonanie:
Mikołaj Gąsior 133080 ARS

Prowadzący:
dr inż. Witold Paluszyński


Wrocław, 29th of June 2008

This report has been prepared as a requirement for the course:
ARE3513 Methods and algorithms of artificial intelligence

Subject:
Chatterbot as consultative system in webhosting


Author:
Mikołaj Gąsior 133080 ARS

Conducted by:
Witold Paluszyński, PhD

I've decided to create a webhosting consultative chatterbot. After short chat with the customer he is able to show company's offers and solutions in webhosting.

This bot is implemented in AIML. It's a common use language made to develop consultative chatterbots. AIML code is simple-to-create because it is made on XML. It's syntax is based on clean tags.
Bot's name is Nettek and it has already implemented knowledge containing example promo packs - simple offer plus base informations about the webhosting.
Knowledge base is all placed in the XML (AIML language) file(s) so there is no problem to find an interpreter for the bot. There are plenty of scripts in popular programming languages and applications that can maintain AIML. I have used Gaitobot AIML Editor made by Springwald Software. It's a very simple-to-use editor where creating XML tags boils down to placing graphic blocks.
The chatterbot makes a conversation with user and analyses his sentences. By finding specific keywords he creates and serves appropriate solution. System is made of two layers. First one gathers informations from user and the second one generates solution.
I have tested my virtual consultant and it worked just fine.
This bot can be used on webpage and work as a consultant serving information for customers. Chatterbot's knowledge base can be easily extended. It can also be connected with some sort of application that could manage it's content. AIML code that contains specific company's offers and solutions can be generated from some fetch from database (eg. panel made in PHP+MySQL technology).


1. Wstępny opis zadania

Chatterbot został opracowany jako system doradczy przeznaczony dla osoby, która chciałaby zaistnieć w Internecie. Na podstawie posiadanej bazy potrafi klientowi zaoferować korzystne dla niego rozwiązanie. System najpierw prowadzi rozmowę z użytkownikiem, aby dowiedzieć się jakimi usługami jest dokładnie zainteresowany klient. Następnie, po zebraniu odpowiednich informacji, bot proponuje rozwiązania dostępne w firmie, którymi klient będzie zainteresowany i będą one przygotowane pod jego wymagania.

Zadaniem postawionym w projekcie było stworzenie bota, który dzięki swojej rozmowie w zachowaniu przypominałby człowieka oraz posiadał dużą bazę wiedzy.

Przy wykonywaniu projektu trzeba było rozważyć następujące aspekty:
- wybór odpowiedniego języka programowania
- wybór interpretera
- wykorzystanie dostępnych informacji w zakresie webhostingu


2. Metody wykorzystane przy realizacji projektu

Do zaimplementowania bota wykorzystano język AIML. Jest to język przeznaczony do pisania botów internetowych. Do jego stworzenia wykorzystane zostało środowisko GaitoBot AIML. Umożliwia ono tworzenie składni języka i samego bota za pomocą bloczków odpowiadających za poszczególne tagi XML.
Poniżej rysunek przedstawiający przykładowy ekran z programu GaitoBot.

Gaito

Rys.1. Schemat programu GaitoBot.


Bot został zaprojektowany metodą prowadzenia rozmowy w głąb. Wychwytuje on poszczególne słowa kluczowe z rozmowy i na ich podstawie tworzy rozwiązanie końcowe. Został tak skonstruowany, aby potrafił wyjść z większości opresji słownych.


3. Metoda implementacji

AIML - Artificial Intelligence Markup Language (ang. Język Opisu Sztucznej Inteligencji) jest językiem znacznikowym pochodnym od XML. Język AIML służy do opisu bazy wiedzy dla programów, których celem jest prowadzenie rozmowy, potocznie zwanych „chatterbotami”. Język ten został opracowany w 1995 roku przez amerykańskiego naukowca dr Richarda Walles’a pierwotnie jako baza wiedzy dla chatterbota A.L.I.C.E., który stanowi mocno rozwiniętą wersję innego znanego chatterbota „Eliza”.


Podczas programowania w języku AIML należy pamiętać:


4. Testowanie

Bot został przetestowany przez grupę moich znajomych, których wiedza w temacie była różna. Dzięki temu testowanie było sprawniejsze. Osoby testujące sprawdzały bazę wiedzy zarówno pod względem informacji z zakresu hostingu, jaką posiada bot, jak i pod względem "elastyczności językowej" i rozumienia. Dzięki temu mogłem modyfikować i rozbudowywać kod czatterbota. Przy testowaniu można było zarówno powiększać zasób słownikowy, jak i wprowadzać nowe konstrukcje zdaniowe.


5. Przykłady działania programu

Poniżej przedstawione zostały przykłady rozmów z botem. Stworzony czaterbot nie obsluguje polskich znakow diakrytycznych.

Rozmowa 1

Użytkownik: Dzien dobry!

Bot: Witaj! Nazywam sie Nettek i jestem Twoim wirtualnym doradca. Zapoznam Cie z nasza oferta i postaram Ci sie pomoc, wybierajac najlepsze dla Ciebie i/lub Twojej firmy rozwiazanie.
Jak sie nazywasz?

Użytkownik: Nazywam sie Mikolaj.

Bot: Milo mi Cie poznac, Mikolaj. Moze na poczatek - czy chcialbys zobaczyc nasze obecne oferty?

Użytkownik: Tak, bardzo chetnie. Zobaczmy co tam macie...

Bot: W naszej ofercie znajduja sie w tej chwili 3 promocyjne pakiety:
1) Oferta wakacyjna
Roczny abonament dowolnego serwera WWW, gdzie za pierwsze 6 miesiecy zaplacisz tylko 0 zl! Tylko u nas znajdziesz tak bajeczna oferte.
2) Tylko w czerwcu, lipcu i sierpniu specjalna okazja dla naszych Klientow. Pakiet z domenami .eu za darmo!
3) Tylko teraz przy zamowieniu serwera Windows Starter lub Windows Server zalaczamy gratisowo program antywirusowy Kaspersky's Antivirus...
Czy jestes zainteresowany ktoras z ofert?

Użytkownik: Pierwsza propozycja wydaje sie byc ciekawa... Co to jest?

W ofercie wakacyjnej....
Czy nadal jestes zainteresowany i chcialbys zamowic Oferte wakacyjna?
Pamietaj, ze oferta jest aktualna tylko przez wakacje! Nie zwlekaj!

Użytkownik: Tak, jestem zainteresowany.

Bot: Bardzo mi milo, ze nasza oferta "Oferta wakacyjna" wzbudzila Twoje zainteresowanie. Podaj, prosze, swoj numer telefonu. Skontaktuje sie z Toba konsultant i przyjmie Twoje zamowienie.

Użytkownik: 501001002

Bot: Podales numer 501001002. Czy podany numer jest prawidlowy?

Użytkownik: Nie! Poczekaj... to nie jest moj numer telefonu. Pomylilem sie.

Bot: Jaki jest Twoj numer telefonu, jeszcze raz?

Użytkownik: 123

Bot: Podales numer 123. Czy podany numer jest na pewno prawidlowy?

Użytkownik: Tak, juz dobrze podalem pewnie. ;)

Bot: Nie, dziekuje.

Użytkownik: Na razie, milego dnia.


Rozmowa 2

Użytkownik: Czesc! Jak tam?

Bot: Czesc! Nazywam sie Nettek i jestem Twoim wirtualnym doradca. Zapoznam Cie z nasza oferta i postaram Ci sie pomoc, wybierajac najlepsze dla Ciebie i/lub Twojej firmy rozwiazanie. Jak sie nazywasz?

Użytkownik: Mowia mi Mikolaj.

Bot: Milo mi Cie poznac, Mikolaj. Czy chcialbys zobaczyc obecne oferty jakie posiadamy?

Użytkownik: Tak, czemu nie.

Bot: W naszej ofercie znajduja sie w tej chwili 3 promocyjne pakiety:
1) Oferta wakacyjna
Roczny abonament dowolnego serwera WWW, gdzie za pierwsze 6 miesiecy zaplacisz tylko 0 zl! Tylko u nas znajdziesz tak bajeczna oferte.
2) Tylko w czerwcu, lipcu i sierpniu specjalna okazja dla naszych Klientow. Pakiet z domenami .eu za darmo!
3) Tylko teraz przy zamowieniu serwera Windows Starter lub Windows Server zalaczamy gratisowo program antywirusowy Kaspersky's Antivirus...
Czy jestes zainteresowany ktoras z ofert?

Użytkownik: Nie, jednak nie. Moze cos innego?

Bot: Dobrze, sprobuje Ci zaoferowac cos innego. Czy ktoras z ponizszych pozycji pasuje Twoim wymaganiom?
1) Twoja prywatna strona badz strona Twojej firmy
2) Sklep internetowy
3) Hosting Linux
4) Hosting Windows
Mamy najnizsze ceny na rynku!

Użytkownik: Interesuje mnie Hosting Linux.

Bot: Pozwalamy naszym Klientom samemu wybierac platforme, tak aby aplikacje, ktore na nich sa wykonywane dzialaly sprawnie i szybko. Wybrales Hosting Linux. Bardzo dobra decyzja. Systemy Linuksowe sa bardzo szybkie i powszechnie uzywane w biznesie.
W tej chwili mamy dwie oferty:
1) Linux Standard - 1 GB na serwis WWW i poczte, nielimitowana liczba kont e-mail, srodowisko programistyczne (PHP, Python, Perl itd.) dzialajace w oparciu o system Debian w cenie 200 zł + VAT rocznie
2) Linux Bussiness - 50 GB na serwis WWW i poczte, nielimitowana liczba kont e-mail i FTP, srodowisko programistyczne, statystyki odwiedzin, tworzenie kopii zapasowych.
Serwer dziala w oparciu o system Debian.
Cena: 400 z + VAT rocznie
Czy jestes zainteresowany ktoras z ofert? Jezeli tak to podaj nazwe, prosze.

Użytkownik: Nie, dziekuje. Jednak moze cos innego.

Bot: Zatem zadna z ofert Cie interesuje. Dobra, sprobuje zatem zaoferowac cos innego. Sprobuje zatem Ci zaoferowac cos innego.
Czy ktoras z ponizszych pozycji pasuje Twoim wymaganiom
1) Twoja prywatna badz firmowa strona internetowa
2) Sklep internetowy
3) Hosting Linux
4) Hosting Windws
Mamy najnizsze ceny na rynku!

Użytkownik: Hosting Windows moze? Co tam?

Bot: Pozwalamy naszym klientom wybierac system operacyjny pod kontrola ktorego chodza ich serwisy. Dlategotez zaoferowalismy Hosting Windows. Ponizej dwie oferty. Powiedz, czy ktoras Cie interesuje.
1) Windows Starter - 1 GB na serwis WWW i poczte, nielimitowana liczba kont e-mail, ASP i ASP.NET, bazy MS Access, 500 GB transferu rocznie za jedyne 150 zł + VAT rocznie
2) Windows Server - 5 GB na serwisy WWW i poczte, bazy MS Access, 10 baz danych MS SQL, 600 GB transferu rocznie za jedyne 300 zł + VAT rocznie. I jak? Jezeli
jestes zainteresowany to podaj nazwe.

Użytkownik: Windows Starter moze...
Bot: Windows Starter. Wybrales zatem pakiet Windows Starter - 1 GB na serwis WWW i poczte, nielimitowana liczba kont e-mail, ASP i ASP.NET, bazy MS Access, 500 DB transferu rocznie za jedyne 150 zł + VAT rocznie.
Czy nadal jestes zainteresowany, aby zamowic te usluge? W tym przypadku poprosze Cie o kontakt telefoniczny.

Użytkownik: Tak, niech bedzie. W zasadzie przetestuje to.

Bot: Bardzo mi milo, ze nasza oferta Windows Starter wzbudzila Twoje zainteresowanie. Podaj prosze swoj numer telefonu, a skontaktuje sie z Toba konsultant i przyjmie Twoje zamowienie.

Użytkownik: 13

Bot: Podales numer 13. Czy podany numer jest prawidlowy?

Użytkownik: Tak, tak.

Bot: Dziekuje za przyjecie zamowienie! Nasz konsultant skontuje sie z Toba. Czy moge cos dla Ciebie jeszcze zrobic?

Użytkownik: Nie, dzieki.

Bot: Do widzenia!


6. Wnioski

Tematem projektu był bot doradzający przy wybieraniu odpowiedniego rozwiązania hostingowego. Stworzenie tego bota wiązało się z nie lada wyzwaniem, gdyż trudno stworzyć automat przypominający zachowaniem człowieka. Oprócz stworzenia podstawowej bazy wiedzy - stricte związanej z tematem - trzeba było bota poddać testom z udziałem ludzi sprawdzając jego reakcję na wypowiedzi użytkowników. Na bieżąco zatem wprowadzane były do składni języka odpowiednie aktualizacje i poprawki. Trzeba było zarówno powiększać zasób słów, jak i możliwych konstrukcji zdań.

Docelowo napisanego w języku AIML bota można umieścić na stronie WWW, gdzie pełniłby rolę doradcy firmowego on-line. W takiej sytuacji można by część odpowiedzialną za formułowanie odpowiedzi i reagowanie na użytkownika, oddzielić od oferty. Należałoby to zrobić w taki sposób, aby stworzony plik XML był łatwy w edycji, tj. zmiana oferty nie wymagała szukania po całym pliku. Ponadto taką ofertę można by generować z zewnętrznej aplikacji. Dla przykładu, można wykonać cały system zarządzający ofertą w postaci panelu administracyjnego (np. w PHP), który w rezultacie tworzyłby odpowiedni plik AIML. Ten byłby bazą wiedzy chatterbota.

Można pójść jeszcze dalej i zaopatrzyć bota w funkcje informujące użytkownika o tym jak przebiega jego zamówienie lub podać informacje na temat jego konta (zakładamy że użytkownik jest już klientem). W momencie kiedy użytkownik się przedstawi i zweryfikuje (można tutaj użyć czegokolwiek - od hasła po datę urodzenia) i chatterbot będzie posiadał pewną wiedzę, można wysłać zapytanie do bazy danych, które pobierze odpowiednią informację a stworzony plik AIML zostanie załadowany. Są w Internecie interpretery języka AIML napisane w Pythonie, w których można by to zrealizować, np. PyAIML (http://pyaiml.sourceforge.net).
Przy tworzeniu chatterbota, który miałby działać na stronie WWW należy pamiętać żeby stworzyć sesje, które przechowywać muszą aktualny stan wiedzy chatterbota.


7. Źródła

Valid HTML 4.01 Transitional