Wrocław, 16 czerwca 2008

Raport opracowany na zaliczenie przedmiotu:
ARE3513 "Metody i algorytmy sztucznej inteligencji."

Temat:
Chatterbot jako system konwersacyjno-doradczy o tematyce produktów finansowych.


Wykonanie:
Piotr Kotwica 140349 ARS
Jarosław Leśniak 133118 ARS

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


Wrocław, June 16 2008

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

Subject:
Chatterbot as conversational-consultative financial system.


Authors:
Piotr Kotwica 140349 ARS
Jarosław Leśniak 133118 ARS

Conducted by:
Dr Witold Paluszyński

We decided to write a bot as a conversational-consultative financial system. In our everyday life we have got many opportunities to invest our money in financial instruments. The main problem is to get the best opportunity. This way we thought about our bot.
We decided to implement it in AIML as it is popular language for creating bots. We named our bot Cashier and put inside it special implemented financial data base. It is the core of our bot. It has been implemented in GaitoBot AIML Environment, it is easy to use editor for AIML language designed by Springwald Software. Bot is making conversation and taking special words(keys) from user and then gives for him special bunch of financial instruments. System is working on 2 levels - on the first gaining words from user and on the second giving advices.
We have received good results, as it is not easy to write bot which is well informed and equiped in good data base. It was great adventure to write Cashier, but during our works we had to overcome some implementing problems with platforms compatibility. This bot has been tested and trained using PandoraBots hosting service and GaitoBot Tester.
We achieved the aim of the project, almost every user who has been asking Cashier for investment opportunities achieved important for him informations, it was about 80% effectiveness, so well as for bots using only one specified part of knowledge.


1. Wstęp i opis zadania.

Chatterbot został opracowany jako system doradczy przeznaczony dla osoby, która chciałaby zainwestować pieniądze. System skonstruowany jest tak, aby bot najpierw poprowadził rozmowe, w której ma na celu dowiedzieć się jakiego typu inwestycjami zainteresowany jest klient. Następnie, po wyborze odpowiedniego instrumentu finansowego, którym klient będzie zainteresowany system proponuje pewien pakiet rozwiązań, przygotowanych pod jego wymagania.

Celem naszego projektu było skonstruowanie bota, który dzięki swojej umiejętnośći prowadzenia rozmowy, w zachowaniu przypominałby człowieka, oprócz tego powinien mieć odpowiednio dużą bazę wiedzy, którą będzie wykorzystywał do wysuwanych propozycji.

Opracowując projekt w naszym przygotowaniu musieliśmy zająć się takimi aspektami pracy jak:
- wybór odpowiedniego języka programowania;
- odnalezienie optymalnego do tworzenia bota interpretera;
- zaznajomienie się z aspektami rynku finansowego i produktami, które oferuje;
- zastanowienie się nad strategią prowadzenia rozmowy i konstruowania pytań, w taki sposób, aby otrzymane odpowiedzi były wygodne dla systemu, do konstruowania odpowiednich rozwiązań.


2. Metody wykorzystane przy realizacji projektu.

W celu zaimplementowania naszego bota Cashiera, wykorzystaliśmy język jakim jest AIML, jest to język przygotowany dla celów pisania botów internetowych. Celem stworzenia aplikacji wykorzystaliśmy środowisko GaitoBot AIML Editor. Umożliwia on logiczne tworzenie składni języka i samego bota za pomocą specjalnych bloczków odpowiadających za poszczególne znaczniki wykorzystywane w kodzie do implementacji umiejętności bota.


Schemat bloczków

Rys.1. Schemat bloczków programy GaitoBot.


Cashier w założeniu powinien rozmawiać tak jak człowiek, aby osoba która prowadzi z nią rozmowę, nie odczuła obecności maszyny, bądź odpowiedzi z automatu. Celem osiągnięcia takiego efektu trzeba zaimplementować w bocie bazę wiedzy, im lepsza baza wiedzy zostanie podana botowi tym płynniej i logiczniej będzie wychodził z opresji podczas rozmowy. Rozmowa taka ma symulować w naszym przypadku rozmowę z doradcą finansowym, który proponuje naszemu klientowi odpowiednie rozwiązania.


3. Metoda implementacji i przyjęta strategia.

Dla potrzeb implementacji Cashier-a skorzystaliśmy ze środowiska GaitoBot AIML dostarczonego przez Springwald Software. Implementacja kodu jest bardzo intuicyjna i opiera się na wybieraniu odpowiednich bloczków, na podstawie których komponujemy bazę wiedzy bota.
Cashier został skonstruowany 3-poziomowo:
- poziom pierwszy: przywitanie z użytkownikiem i rozpoczęcie rozmowy na temat inwestycji;
- poziom drugi: wyłuskanie z rozmowy słów kluczowych, na podstawie których wysuwane będą w stronę użytkownika odpowiednie propozycje;
- poziom trzeci: przyjęcie zgody od użytkownika lub decyzja o rezygnacji z dalszej eksploracji możliwości bota, powiązane z zakończeniem rozmowy i pożegnaniem.

Zdecydowaliśmy się w trakcie pisania na zastosowanie reguł języka AIML do zaprojektowania bazy wiedzy.
Wykorzystaliśmy do tego celu:
- znaczniki ' li ' w powiązaniu ze znacznikami ' random ' za pomocą których, Cashier przechowywał dane na temat instrumentów finansowych i zwracał je na ekrna na prośbę użytkownika;
- znaczniki ' condition ' wykorzystane do zaprojektowania pętli w trakcie rozmowy, dzięki nim możliwe stało się powrócenie do pewnej newralgicznej części rozmowy i ponowne proponowanie nowych rozwiązań;
- znaczniki ' that ' dzięki którym możliwe stało się filtrowanie wypowiedzi i przechwytywanie słów kluczowych po odpowiedniej kwestii wypowiedzianej przez bota;
- znaczniki ' set ' oraz ' get ' odpowiednio do wprowadzania danych wejściowych do odpowiednio nazwanych zmiennych wewnętrznych oraz do wyłuskiwania danych ze zmiennej w której wcześniej pewna dana została zapisana.


Panel GaitoBot.

Rys.2. Panel główny programu GaitoBot z przykładową częścią kodu.


Cashier został zaprojektowany metodą prowadzenia rozmowy wgłąb, wychwytuje on poszczególne słowa klucze z rozmowy, na ich podstawie dopiero komponuje odpowiednie rozwiązania końcowe.
Jego konstrukcja jest tak przemyślana, aby podczas rozmowy nie zdarzały się momenty, w których Cashier nie wie co powiedzieć, w każdej sytuacji powinien wyjść z opresji. Zaprojektowany bot jest również wrażliwy na wulgarne odpowiedzi.


4. Przykłady i wyniki działania programu.

Poniżej przedstawione zostanie kilka listingów rozmów przeprowadzonych z Cashierem, które prezentują jego możliwości. Podczas rozmowy używamy języka polskiego, jednak nie używamy polskich liter.

Listing 1.

User: - Dzien dobry.
Cashier: - Dzien dobry, jestem Twoim wirtualnym doradca finansowym, milo Cie spotkac, zapewne jestes zainteresowany inwestycjami.
Nazywam sie Cashier. Jak Ty sie nazywasz?
User: - Mam na imie Piotrek.
Cashier: - Witaj wiec u nas Piotrek! Czy chcialbys u nas ulokowac pieniadze?
User: - Tak, jestem bardzo zainteresowany.
Cashier: - Powiedz jakiego typu inwestycja by Cie interesowala?
User: - Na przykład lokaty i akcje.
Cashier: - Prosze, abys sprecyzowal najpierw jedna inwestycje, ktora Cie interesuje.
User: - akcje Cashier: - Widze ze interesuja Cie akcje, bierzemy na powaznie w naszych rozwazaniach tylko rynek finansowy, powiedz co bys powiedzial na pewny zysk, jakim sa obligacje skarbowe?
User: - Nie dziekuje, interesuje mnie duzo wiekszy zysk. Cashier: - Zastanow sie, czy chcialbys miec duza stope zwrotu? Jednoczesnie zaakceptowal ryzyko zwiazane z obracaniem pieniedzmi na duza skale i towarzyszacymi temu zagrozeniami dla Twoich finansow. Podaj jeden typ inwestycji, ktory by Cie interesowal: obligacje skarbowe, akcje, fundusze inwestycyjne, fundusze akcji, fundusze stabilnego wzrostu, lokaty.
Prosze wybierz odpowiedni.
User: - akcje Cashier: - Odpowiedni dla Ciebie zestaw instrumentow finansowych to: Koszyk z branzy hutniczej KONSSTALI (KONSORCJUM STALI S.A. ) z jednostkami uczestnictwa o wartosci na poziomie 57,90 PLN. W zwiazku z rozwojem sektora budownictwa w Polsce, sektor produkcji stali ma opymistyczna koniunkture. Minimalny zakup to 200 jednostek akcyjnych, powiazany z prowizja na poziomie 4% wartosci koncowej zakupu.
Czy chcialbys zmienic swoja decyzje i wybrac inny instrument finansowy? Przypominam, ze masz do wyboru: obligacje skarbowe, akcje, fundusze inwestycyjne, fundusze akcji, fundusze stabilnego wzrostu, lokaty. Czy chcialbys cos zmienic? Co wybierasz?
User: - fundusze inwestycyjne
Cashier: - W takim razie alternatywnie do poprzedniej propozycji proponuje skomponowany dla Ciebie produkt, powstal on w oparciu o wybrany przez Ciebie instrument fundusze inwestycyjne.
Aby nie zaszla zadna pomylka prosze powtorz krotko raz jeszcze nazwe narzedzia ktore Cie interesuje.
User: - fundusze inwestycyjne
Cashier: - Tym razem bedzie to portfel oparty na narzedziu jakim jest fundusze inwestycyjne.
Spojrz na ponizsza propozycje. Millennium Akcji Fundusz Inwestycyjny Otwarty zapewniajacy zysk w przeciagu ostatnich 2 lat w wysokosci 5,58% zainwestowanych srodkow. Rozsadnym rozwiazaniem jest rowniez zdywersyfikowanie kwoty przeznaczonej na inwestycje pomiedzy dwoma funduszami. Propozycja druga, celem dywersyfikacji kapitalu jest Millennium Pieniezny Fundusz Inwestycyjny Otwarty zapewniajacy w przeciagu ostatnich dwoch lat zysk na poziomie 7,28%.
Jesli ta propozycja jest dla Ciebie interesujaca, prosze wyraz zgode na spisanie wstepnej umowy dotyczacej zaproponowanego pakietu inwestycyjnego.
Jesli sie zgadzasz, prosze wpisz: 'Wyrazam zgode';
jesli nie, prosze abys podal inna opcje sposrod wspominanych wczesniej (obligacje skarbowe, akcje, fundusze inwestycyjne, fundusze akcji, fundusze stabilnego wzrostu, lokaty).
Jesli nie masz ochoty na dalsza podroz inwestycyjna, prosze wpisz 'rezygnuje'.
User: - wyrazam zgode
Cashier: - Ciesze sie ze zaproponowana wczesniej oferta odpowiada Twoim potrzebom, w takim razie prosze abys w celu podpisania jawnej umowy zglosil sie do naszej siedziby: MFinance ul. Krakowska 16 Wroclaw. Po przyjsciu na miejsce, prosze powolac sie na moje imie, przypominam Cashier, personel naszej firmy zaopiekuje sie Toba. Pozdrawiam i zycze milego dnia.
User: - dziekuje i wzajemnie milego dnia!
Cashier: - :)

Jak widać w powyższym przykładzie rozmowa przebiegła pozytywnie, Cashier po przedstawieniu, przejął inicjatywe w rozmowie, dopytując Usera o to co go interesuje z gamy produktów, które jest mu w stanie zaproponować.
Kolejno Cashier proponuje produkty i możliwości ich zmiany, daje to możliwość prowadzenia rozmowy, aż do wyczerpania sporych, aczkolwiek ograniczonych zasobów bazy wiedzy Cashiera. W pewnym momencie proponowane produkty zaczną się bowiem powtarzać co w lini prostej prowadzi do domysłów, że mamy styczność z maszyną, a nie człowiekiem.

Poniżej zamieszczony zostanie krótki listing prezentujący reakcję bota na nieznane mu słowo.

Listing 2.

User: - kalendarz
Cashier: - Hmmmm co miales na mysli? Zacznijmy od poczatku, pogubilem sie. Rozpocznijmy od przywitania. :)
User: - jak to?
Cashier: - Nie rozumiem, pewnie uwazasz ze to moja wina?! Zakladam ze masz jeszcze czas, spokojnie, zaczynamy od poczatku. Rozpocznijmy od przywitania. :)

Sposob zaprezentowany powyżej, ukazuje w jaki sposób zachowuje się Cashier, jeśli nie dopasuje odpowiedzi uzyskanej od użytkownia do posiadanej bazy wiedzy. W miły sposób zachęca do rozpoczecia od nowa i nakierowania sposobu prowadzenia rozmowy na znajomy dla niego sposób. Podobną strategią reaguje na pewną gamę wulgaryzmów, przywołując użytkownika do porządku i zachęcając mimo wszystko do dalszej rozmowy. W bazie danych bota zaimplementowane zostało kilka odpowiedzi, celem zamaskowania powtarzalności tej samej odpowiedzi. Podczas normalnej rozmowy i wystąpienia błędu użytkownik praktycznie nie jest w stanie odgadnąć, że ma styczność z botem.

Dwa powyższe listingi prezentują tylko kilka możliwości, które posiada stworzony przez nas bot, jest on wyposażony w sporą dawkę wiedzy, która sukcesywnie i w łatwy sposób może być uzupełniana, dodawana i aktualizowana, jako że tematyka w której bot się porusza jest bardzo szeroka i dynamiczna. Nic nie stoi na przeszkodzie, aby jego baza rozwijała się dynamiacznie i adekwatnie do zmieniającego się rynku. Uzupełnieniu w bardzo intuicyjny i prosty sposób mogą ulec odpowiedzi na tematy niezwiązane z tematem głównym.
Poprzez jego napisanie spełnione zostały założenia teoretyczne projektu, w ramach których Cashier miał być botem, który mógłby zastąpić doradcę finansowego, przy odpowiednim zaimplementowaniu większej bazy wiedzy i możliwych reakcji na inne metody rozmowy Cashier z powodzeniem z tym zadaniem by sobie radził, jego spsób prowadzenia rozmowy, a więc luźna rozmowa z klientem w trakcie której, dowiadujemy się o potrzebach finansowych użytkownika, a następnie wysuwanie w jego kierunku propozycji konkretnych produktów spełniają wymagania i strategie działania systemu doradczego opartego o inwestycje.


5. Podsumowanie wyników.

Przeprowadzone przez nas testy na różnych osobach, w różnym wieku, pozwalają obiektywnie stwierdzić, iż napisany przez nas bot jest w pełni interaktywny, zachęcający do współpracy i kontynuowania rozmowy. Jako, że jego tematyka oparta jest na jednej dziedzinie wiedzy, powiązanej bezpośrednio z finansami osobistymi, niemożliwe jest prowadzenie pogawędek na inne tematy, ale też, nie to mieliśmy w zamyśle pisząc ten projekt. Z zadania, które zostało postawione przed naszym botem, Cashier wywiązuje się bardzo dobrze. Średnio podczas testów wykonywanych na Testerze GaitoBot proces pogawędki, bez żadnych błędów kończył się w 80% przypadków, w ocenie ilościowej 8 na 10 osób kończylo rozmowę z Cashierem usatysfakcjonowana otrzymanymi informacjami. Implementacja reguł opierała się poczatkowo na testach z wykorzystaniem serwisu hostującego PandoraBots.com później dokonywana była na module testowym GaitoBot Editor. Dodawane były na bieżąco w trakcie testów reakcje bota na różne zapytania, pochodzące od różnych użytkowników (jest to najskuteczniejsza metoda eliminacji błędów składniowych dla bota w starciu z językiem naturalnym).


6. Wnioski końcowe i uwagi dotyczące wykonanego projektu.

Opracowany przez nas bot, został wystawiony również publicznie, celem testowania i wyciągania wniosków z błędów, które były popełniane podczas jego pisania. Testowany i trenowany byl na portalu www.pnadorabots.com. Jest to portal zajmujący się szeroką tematyką botów internetowych, zajmuje się hostingiem botów, co warte podkreslenia jest bezpłatny. Podczas testowania bota wynikły problemy ze składnią języka, prawdopodobnie była to niekompatybilność systemu PandoraBots oraz GaitoBot Editor-a, początkowe próby testowania przebiegały pomyślnie i na bieżąco wprowadzane były do składni języka odpowiednie aktualizacje i poprawki, niestety w pewnym momencie projekt przerósł możliwości PandoraBots, portal hostujący ewidentnie nie radził sobie z rozpoznawaniem wzorców rozmowy na podstawie znacznika 'that' co skutecznie utrudniło możliwość jego testowania przez szerokie grono internautów. Mimo tego niepowodzenia, projekt postanowiliśmy ukończyć za pomocą GaitoBots Editor-a oraz wbudowanego modułu umożliwiającego testowanie końcowe napisanego programu. Program uruchamia się pod edytorem, w którym został napisany, a więc GaitoBot AIML Editor.


Moduł testowy.

Rys.3. Moduł testowy programu GaitoBot wykorzystany do testowania i trenowania bota.



7. Bibliografia.

- Boty internetowe - w pełni wyczerpujące informacje na temat budowania botów, wyjaśnienia dotyczące składni języka AIML;

- ALICE AI Foundation – projekt ALICE, fundacja sztucznej inteligencji, pionierzy języka AIML, dokumentacja do języka AIML, podstawy języka i przykłady;

- PandoraBots – serwis do tworzenia i testowania online botów, wykorzystany przez nas do przeprowadzania rozmów online, na stronie można znaleźć również bogaty zestaw dokumentacji do AIML, szczególnie do przeprowadzania edycji bota online na podstawie prowadzonych rozmów;

- Strona GaitoBot AIML Editor – strona producenta edytora GaitoBot, na której znajdują się również bogate informacje na temat tworzenia botów oraz samouczki podstaw AIML-a;

- Bankier.pl - portal o tematyce finansowej, stał się bazą wiedzy dla naszego bota;

- Onet.pl (Finanse) - dział finansowy portalu, posłużył nam do budowania bazy wiedzy dla bota;



Valid HTML 4.01 Transitional