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.
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.
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.
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;