Bartosz Owczarek

Transkrypt

Bartosz Owczarek
Bartosz Owczarek, 133317
Wrocław, 02.06.2007
Informatyka Systemów Autonomicznych
Bot informacyjny w sieci IM jako agent - opis i zastosowanie
dr inż. Marek Piasecki
1. Wstęp
Od wielu lat mówi się, iż rozwój technologii bazującej na inteligentnych agentach
zrewolucjonizuje dziedzinę komputerową. Ma to dotyczyć nie tylko sposobu
komunikowania się użytkownika z komputerem, ale także wytwarzania oprogramowania.
Jednak jak się okazuje, ów przepowiadany rewolucjonizm nie nastąpił, gdyż dziś
włączając komputer nie komunikujemy się z agentem personalnym, który doradza nam
jak się ubrać czy też przedstawia plan dnia. Także jeśli chodzi o tworzenie
oprogramowania, to gdy projektujemy system dla sklepu internetowego, nie tworzymy go
z ogólnodostępnych modułów agentowych. Powstaje więc pytanie dlaczego istnieje tak
mało systemów agentowych i co należałoby zrobić, aby to zmienić ? W tej pracy
skupimy się na agencie programowym, który dotyczy sposobu komunikowania się z
komputerem, a ściślej mówiąc popularnych przez kilka ostatnich lat botach
informacyjnych w sieciach IM.
2. Definicja bota informacyjnego
Bot informacyjny jest to program, który wykonuje pewne czynności w imieniu
człowieka. Zazwyczaj jego funkcją jest udawanie ludzkiego zachowania, czy też
automatyczne wykonywanie określonych czynności.
W przypadku botów w sieci IM (Instant Messaging) rolą bota jest właśnie
udawanie inteligentnego rozmówcy, który w języku naturalnym potrafi odpowiedzieć
mniej lub bardziej trafnie na pytania zadawane przez użytkownika. Ponadto, może
udostępniać jakąś pulę funkcji, z których może korzystać użytkownik w trakcie rozmowy
z botem. Oczywiście taki bot musi posiadać pewną wiedzę, na podstawie której potrafi
odpowiedzieć na zadawane przez użytkownika pytania.
3. Zastosowania botów informacyjnych
Jeśli chodzi o zastosowania botów informacyjnych w sieciach IM to jak się
okazuje mogą one mieć zastosowanie zarówno w przypadku zwykłych użytkowników,
jako pewna „podręczna” baza wiedzy, czy też zastosowanie w rozbudowanych
systemach biznesowych, z którymi się integrują. W przypadku pierwszego zastosowania
bot może wykonywać określone operacje na bazie wiedzy, takie jak: wyświetlanie
prognozy pogody w danym mieście, wyświetlanie solenizantów z danego dnia, czy też
boty te mogą posiadać słownik wyrazów obcych w swojej bazie wiedzy i pełnić rolę
prostego tłumacza Doskonałym przykładem jest popularny ostatnio „Infobot”, którego
opis i specyfikacje możemy znaleźć na stronie www.infobot.pl. W drugim przypadku
także mamy dostępną pulę funkcji, ale jest ona ściśle związana z funkcjonalnością jaką
udostępnia system, z którym integruje się bot. Dodatkowo dochodzi wiele innych
istotnych problemów do rozwiązania jak choćby uwierzytelnianie i autoryzacja
użytkowników sieci IM.
W naszym projekcie zrealizowanym dla firmy, głównym celem było właśnie
zaprojektowanie
i
zaimplementowanie
bota
informacyjnego
zintegrowanego
z
istniejącym systemem biznesowym. Głównym powodem powstania takiego pomysłu,
była możliwość udostępnienia użytkownikom informacji znajdujących się w systemie,
poprzez komunikatory działające w różnych sieciach IM. A więc, baza danych, na której
oparty jest system to właśnie baza wiedzy bota (jednocześnie stanowiąca jego otoczenie),
na podstawie której, realizuje cele, dla których został stworzony. Cele te możemy
pogrupować na dwie funkcjonalności, które obejmuje specyfikacja bota:
-
„push” – czyli zwykła rozmowa użytkownika z botem, w której użytkownik może
zapytać się bota o informacje znajdujące się w bazie danych.
-
„puli” - czyli bot powinien automatycznie wysyłać pewne powiadomienia do
użytkowników zapisanych w jego bazie wiedzy. Powiadomienia te są wyzwalane
zmianami w systemie, z którym jest zintegrowany.
4. Bot jako agent programowy
Jak się okazuje nie istnieje ogólnie przyjęta definicja agenta programowego. W
literaturze, czy też w Internecie możemy znaleźć wiele definicji agenta programowego.
Jedna z nich, której twórcą jest firma IBM brzmi:
„Agenci programowi to jednostki programowe podejmujące działania w imieniu
użytkownika lub innych programów, w pewnym stopniu niezależnie lub autonomicznie,
które działając stosują pewną wiedzę lub reprezentację celów lub potrzeb użytkownika”
Analizując powyższą definicje widać, iż odnosi się ona także do działania bota
informacyjnego. Mimo, iż nie istnieją ogólnie przyjęte definicje agentów programowych,
to mamy do czynienia z szeroką gamą cech przypisywanych agentom programowym.
Autorzy zazwyczaj wybierają pewien podzbiór tych cech, dokładają dodatkowe cechy i w
ten sposób tworzą definicje agentów programowych. Główne cechy przedstawione są na
rysunku 1.
rozumowanie oparte o zgromadzoną
wiedzę
reaktywność
ukierunkowanie na
osiąganie celów
umiejętność przemieszczania się
bycie godnym zaufania
autonomia
umiejętność
dostosowania się
oddziaływanie
umiejętność uczenia się
umiejętność przewidywania
umiejętność rozumowania
umiejętność
porozumiewania się
umiejętność
współdziałania
inteligencja
Rysunek 1. Główne cechy agenta programowego
W przypadku bota także możemy wyodrębnić podzbiór cech głównych agenta
programowego. Są to:
- obserwacja otoczenia
- reakcja na zmiany w otoczeniu
- ciągłe działanie
- autonomiczność
- adaptacyjność
Ponadto, z definicji agent programowy działa w pewnym otoczeniu i potrafi
reagować na impulsy pochodzące z tego otoczenia. W naszym projekcie bota istnieją dwa
takie otoczenia (rysunek 2). Mianowicie jest to:
- serwer - na którym uruchomiony jest bot informacyjny wraz z systemem (bazą
danych), z którym się integruje. Tutaj wszelkie zmiany występujące w systemie są
monitorowane przez bota.
-
sieci IM - poprzez które użytkownicy komunikują się z botem. Reaguje na
wiadomości wysyłane poprzez użytkowników jak i na komunikaty serwerów sieci
IM.
Otoczenie bazy danych (system)
Serwer na którym działa bot informacyjny
Baza danych
Internet
Otoczenie sieci IM
...
Użytkownik 1
Użytkownik 2
Użytkownik n
Rysunek 2. Otoczenia opisywanego bota informacyjnego
Jeśli chodzi o system operacyjny na którym rezyduje bot to nie jest on istotny z
punktu widzenia otoczenia. Natomiast specyfikacja i założenia projektowe opisywanego
bota powodują, iż nie reaguje on na wszystkie możliwe bodźce z otoczeń, w których się
znajduje. Wśród zdarzeń. na które reaguje bot możemy wyróżnić:
- wiadomości przychodzące od użytkowników różnych sieci IM
- komunikaty sterujące przychodzące od danego serwera sieci IM (wypływają one
praktycznie tylko na stan połączenia bota)
- zmiany stanu w zintegrowanym systemie, ściślej bazie danych na której działa system
(a więc baza danych jest monitorowana w przypadku dodawania, edycji, usuwania
rekordów )
Natomiast sposób oddziaływania na wyżej wymienione bodźce z otoczenia obejmuje:
- wysyłanie wiadomości do użytkowników IM
- wysyłanie komunikatów sterujących (związanych ze stanem połączenia) do serwera
sieci IM
- pobieranie informacji z bazy danych
- zapisywanie informacji do bazy danych
Oprócz obserwacji otoczenia i reagowania na odpowiednie bodźce, bot posiada
także inną istotną cechę agenta programowego, czyli ciągłe działanie w czasie i
przestrzeni. Mianowicie bot informacyjny działa przez bardzo długi czas, aż do momentu
wyłączenia serwera sieci IM (czy też zerwania połączenia). Ponadto, jest on aktywny
przez cały czas swojego „życia”, nawet gdy nie przychodzą bodźce z otoczenia
wydelegowane od użytkowników. Aktywność ta, to właśnie obserwowanie otoczenia
jakim jest system, z którym integruje się bot informacyjny i reagowanie na zdarzenia w
nim występujące (opisane wcześniej). Kolejne istotne cechy bota informacyjnego jako
agenta:
- autonomiczność (bot sam inicjuje działanie)
- adaptacyjność (bot ciągle uczy i dostosowuje się do użytkowników)
można odnieść do opisywanego bota informacyjnego w niewielkim stopniu. Jeśli chodzi
o adaptacyjność to istnieje możliwość rozbudowania bazy wiedzy bota, poprzez
definiowanie nowych funkcjonalności jakie ma realizować. Nie ma tutaj możliwość
autonomicznego uczenia się bota np. poprzez rozmowę z użytkownikami, gdyż jest ona
ściśle związana z bezpieczeństwem systemu, z którym jest on zintegrowany. Ponadto,
rozmowa z botem zrealizowana jest na zasadzie „menu”, filtrowanego przez
odpowiednie uprawnienia użytkowników znajdujących się w systemie, co można odnieść
do cechy dostosowywania się do otoczenia, jakimi są użytkownicy w sieciach IM.
Implementacja bardziej inteligentnego bota, który umożliwiałby prowadzenie rozmowy
w języku naturalnym jest bardzo skomplikowana, zarówno jeśli chodzi dziedzinę
sztucznej inteligencji jako takiej oraz kwestie bezpieczeństwa. Dodatkowo, takiego bota
należałoby uczyć przez długi okres czasu, aby nabył odpowiednią wiedzę, dzięki której
mógłby realizować funkcje i cele, dla których został stworzony.
W prostych przykładach, gdzie bot informacyjny stara się zrozumieć sens
prowadzonej rozmowy i w miarę inteligentnie odpowiadać na wysyłane wiadomości,
możemy sobie wyobrazić, że został tak zaimplementowany, aby rozpoznawać frazę
zdania związaną z osobą i orzeczeniem. Na przykład, gdy użytkownik wysyła
wiadomość:
"I am feeling very bad today."
bot rozpoznaje frazę “I am”, którą podmienia na „Why are you” i konkatenuje z resztą
zdania „feeling very bad today”, dodając znak zapytania na końcu zdania. Ostatecznie
bot wysyła wiadomość:
„Why are you feeling very bad today?”
Oczywiście jest to bardzo prosty algorytm, gdzie stosując odpowiednie słowniki i
wyrażenia regularne jesteśmy w stanie szybko i efektywnie to zaimplementować. Mimo,
iż jest to mało funkcjonalne jeśli chodzi o zastosowanie w omawianym projekcie, to
widać jak w prosty sposób możemy z całkiem „głupiego” bota zrobić „bardziej”
inteligentnego. W podobny sposób działał pierwszy w historii zaimplementowany
chatterbot Eliza. Przykładowa rozmowa z nim wyglądała następująco:
How do you do. Please state your problem.
>> I spend too much time with computers.
Why do you mention computers ?
>> You are one.
Does it please you to believe I am one ?
>> Yes.
You seem to be quite positive.
>> I suppose I am.
How long have you been ?
Więcej szczegółów na temat implementacji opisywanego bota informacyjnego
można znaleźć w pracy Rafała Jagielnickiego pt. „Bot informacyjny w sieci IM jako
agent – realizacja”.
5. Wnioski
W powyższej pracy przedstawione zostały podstawowe informacje związane z
zastosowaniem botów informacyjnych jako inteligentnych agentów programowych.
Starałem się uargumentować dlaczego bot informacyjny to właśnie inteligentny agent
programowy oraz opisać jego cechy, otoczenia, w których „żyje”, odnosząc się do
zrealizowanego dla firmy projektu. Historia tworzenia botów informacyjnych zaczyna się
od roku 1966, gdzie przez Joseph’a Wiezenbaum’a został stworzony pierwszy chatterbot
o kodowej nazwie Eliza. Zajmował on tylko 200 linii kodu i modelował zachowanie
psychiatry.
Jak widać od roku 1966 minęło sporo (~40) lat, a mimo to nadal nie mamy do
czynienia z botami informacyjnymi, których możemy określić mianem inteligentnych
agentów programowych. Świadczy to przede wszystkim o trudnościach z jakimi
programiści muszą się zmierzyć, które bezpośrednio związane są z dziedziną sztucznej
inteligencji. Jednak mimo to w dzisiejszych czasach, gdzie komunikatory sieci IM (np.
Gadu-Gadu) na dobre zadomowiły się w naszym codziennym życiu, możemy znaleźć
istotne zastosowanie botów informacyjnych, tych „mniej inteligentnych” (chodzi tu
głównie o modelowanie zachowania inteligentnego rozmówcy) w aplikacjach
biznesowych np. tworzonych dla sklepów internetowych. W rozmowie z takim botem
poprzez sieci IM możemy wyszukiwać interesujące nas produkty, przeglądać cenniki,
dokonywać zakupów itd.
Literatura
[1] Dokumentacja i kod źródłowy opisywanego projektu
[2] M. Paprzycki, Rozdział XI „Agenci programowi jako metodologia tworzenia
oprogramowania”.
[3] http://pl.wikipedia.org
[4] http://jerz.setonhill.edu/if/canon/eliza.htm - Eliza

Podobne dokumenty