Między pattern znajduje się wyrażenie warunkowe, czyli wpowiedz osoby rozmawiającej z botem. Pomiędzy template
natomiast umieszczamy reakcję tworzonego bota na dane wyrażenie warunkowe. Np:
Oczywiście język AIML daje nam wielkie możliwości tworzenia skomplikowanych baz danych dla botów. Służą do tego dodatkowe znaczniki.
Omówię teraz kilko których użyłem w swoim projekcie.
Znacznik ten pozwala definiować synonimy dla wyrażeń. Czyli dla różnych wzorców mamy tą samą reakcję bota. Taki tag okazuje się zbawienny szczególnie wtedy, gdy w trakcie pracy na jakimś zaawansowanym etapie chcemy dokonać poprawki. Zamiast zmieniać w każdej kategorii po kolei, wystarczy dokonać zmiany w kategori głównej. Pozwala to znacznie zaoszczędzić czas podczas pracy.
Następnym znacznikiem jest random. Współpracuje on z li. Z listy różnych możliwych reakcji bota jest losowana jedna. Pozwala to odpowiadać botowi na te same zapytania różnymi zdaniami.
Dzieki temu znacznikowi bot może odwoływać się do wczesniejszych wypowiedzi.
Analogicznie do poprzedniego znacznika, stwarza możliwość sięgnięcia pamięcią wstecz do wczesniejszych wypoiedzi bota.
Przy pomocy get ustawiamy i zapamiętujemy domyślnie jakąś wartość np. imię rozmówcy bota. Później, do odzyskania tego wyrażenia stosujemy set.
Przy tworzeniu bazy wiedzy zdecydowałem sie na użycie edytora o nazwie "EditiX". Jest to bardzo przyjazne narzędzie pozwolające
na doś dużą swobodę w tworzeniu baz wiedzy gdyż edycja bazy polega na pisaniu kodu. Dzięki temu mamy duże możliwości zmian w bzie.
Program bezpłatnie można pobrać ze strony:
Do testowani mojego bota użyłem darmoweo programu o nazwie "Gaito". Identyfikuje się on bardzo łatwą obsługą
dzięki czemu testowanie przebiego dość szybko.
Program bezpłatnie można pobrać ze strony:
Czlowiek: Czesc Bot: Dziendobry. Jestem Czaterbot, jak masz na imie? Czlowiek: Mam na imie Lukasz. Bot: Lukasz Hmm. To bardzo ladne imie. Czlowiek: Dziekuje jestes bardzo mily. Bot: A wiec czego chcialbys sie dowiedziec? Czlowiek: Nie wiem jeszcze. Bot: Czlowiek: Czemu sie nie odzywasz? Czy Ty mnie naprawde sluchasz? Bot: Oczywiście, że tak powiedziales: "Nie wiem jeszcze" Czlowiek: A wczesniej Bot: Tak, powiedziales: "Dziekuje jestes bardzo mily". Czlowiek: A jeszcze wczesniej? Bot: Lukasz meczysz mnie. Przewin sobie nasza rozmowe i sam zobacz! Czlowiek: Ha Ha Ha Bot: Nie smiej sie czekam na przprosiny. Czlowiek: Niegniewaj się. Bot: Ok nie gniewam ale "nie gniewaj" pisze sie oddzielnie! Czlowiek: A wiec jakich informacji mozesz mi udzielic? Bot: Jestem botem ktory udziela informacji na temet miejsc we Wrocławiu w któych możesz kupić auto. Czlowiek: To wspaniale własnie zamierzalem kupic samochod. Bot: Podaj zatem marke samochodu, ktora chcialbys kupic. Czlowiek: Powiedzmy, ze interesuje mnie BMW? Bot: Bardzo dobry wybor. Dealer znajduje sie na ulicy karkonoskiej 61. Czlowiek: A czy moglbys mi rowniez podac numer telefonu do tego salonu? Bot: Numer telefonu jest nastepujacy: 333-10-00. Czlowiek:Ok bardzo mi pomogles zegnam Cie? Bot: Do widzenia. Milo mi bylo ciebie poznac Lukasz. |
Czlowiek: Witam Bot: Witaj, jestem Czaterbot jak masz na imie?? Czlowiek: Mam na imie Krzysiek Bot: Krzysiek Hmm. To bardzo ladne imie. Czlowiek: Dziekuje za taki mily komplement. Bot: A wiec czego chcialbys sie dowiedziec? Czlowiek: Czegos na temat samochodow. Bot: Jestem botem ktory udziela informacji na temet miejsc we Wrocławiu w któych możesz kupić auto. Czlowiek: Cudownie wlasnie takich informacji potrzebuje. Bot: Podaj zatem marke samochodu, ktora chcialbys kupic. Czlowiek: Interesuje mnie Renault. Bot: Bardzo dobry wybor. Dealer znajduje sie na ulicy Sienkiewicza 10. Czlowiek: A jaki jest tam numer telefonu? Bot: Numer telefonu jest nastepujacy: 322-66-77 Czlowiek: Bardzo mi pomogles pa pa. Bot: Zegnam milo sie rozmawialo Krzysiek. |
Czlowiek: Witaj jestem Jacek. Bot: Witaj, jestem czaterbot jak masz na imie??. Czlowiek: Przeciez juz napisalem. Mam na imie Jacek. Bot: Jacek Hmm. To bardzo ladne imie. Czlowiek: No nie wiem ja tak nie uwazam. Bot: Czlowiek: Jestes tam? Bot: Czlowiek: Przepraszam ale czemu sie nie odzywasz?? Bot: Nie masz za co mnie przepraszac. Czlowiek: To wspaniale bo wcale nie mam zamiaru. Bot: Podaj zatem marke samochodu jaka chcesz kupic. Czlowiek: Ale ja nie chce kupic auta! Bot: Czlowiek: Cos nie mozemy sie dogadac! Bot: Czlowiek: No to czesc musze juz isc. Bot: Dzien dobry, jestm Czaterbot jak masz na imie?? |
Czlowiek: Dzien dobry. Bot: Witaj, jestem czaterbot jak masz na imie??. Czlowiek: Mam na imie Mariusz. Bot: Mariusz Hmm. To bardzo ladne imie. Czlowiek: Ha ha ha. Bot: Nie smiej sie, czekam na przeprosiny. Czlowiek: Ze co? Bot: Czlowiek: Super jescze mam cie przepraszc? Za co?? Bot:Mariusz jaka marke preferujesz? Czlowiek: Nie wiem o co Ci chodzi. |
Pisanie czatbotów jest zadaniem niezwykle czasochłonnym. Stworzenie bazy wiedzy na dany temat, która będzie umiała odpowiedzieć na rożnie zadane pytanie, dotyczące jednego zagadnienia, wymaga mnóstwo czasu. Wydaje się, że najlepszym sposobem na stworzenie naprawdę inteligentnego bota byłoby zaangażowanie w pisanie bazy wiedzy wielu ludzi. Pozwoliłoby to na wygenerowanie wielu bardzo różnych zapytań. Niestety takie podejście mogłoby również doprowadzić do kompletnego bałaganu i spowodować, że na jedno zapytanie pojawiało by się kilka zupełnie różnych odpowiedzi. Kolejną istotną sprawą przy tworzeniu bota jest powiązanie ze sobą faktów i powracanie do rozmowy sprzed chwili. Stworzony przeze mnie bot może bardzo precyzyjnie udzielić żądanej informacji lecz rozmowa musi przebiegać według pewnego scenariusza i w tym właśnie momencie ujawnia się brak inteligencji Czaterbota. Stworzenie Czaterbota w pełni inteligentnego wydaje się więc jak na razie zadaniem prawie nie możliwym do wykonania.