obrazek

                                POLITECHNIKA WROCŁAWSKA

                            Wydział Elektroniki

 

 

 

 

 

 

TEMAT: Bot rozmawiający na temat angielskiej Premiership.

 

 

 

 

KURS: Metody I Algorytmy Sztucznej Inteligencji - projekt.

 

 

 

 

Prowadzący:

Dr inż. Witold Paluszyński

 

Wykonał:                                                                                                                                                                                    Data:

Dawid Pacholski; nr indeksu: 140383                                                                                                                                            01.06.2008r

 

 

 

1. Wstęp.

 

Celem zadania projektowego było zrealizowanie chatterbota, który umożliwia rozmowy o piłce nożnej – a konkretnie o ostatniej kolejce piłkarskiej ekstraklasy Anglii - Premiership. Bot ma zaimplementowaną bazę wiedzy na temat zespołów grających w Premiership, ich ostatnich wyników, różnych statystyk (na temat strzelonych bramek, żółtych i czerwonych kartek itp.). Potrafi on także zaskoczyć nas ciekawymi nowinkami, informacjami o cenach biletów, o stadionach, a nawet o sędziach pracujących w Premiership. Sprawia to, że osoba rozmawiająca z botem może uzyskać dużo interesujących informacji, jak również nierzadko zostać błyskotliwie zaskoczona przez program. Zbudowanie chatterboota sprowadziło się praktycznie do stworzenia dla niego odpowiedniej bazy wiedzy, która to tworzy jego trzon i istotę. W tym celu użyłem języka AIML (jest to typowy język programowania dedykowany właśnie twórcą wszelkiego rodzaju chatterbotów) z wykorzystaniem niezwykle wygodnego i przejrzystego edytora Gaitobot.

 

Program  Gaitobot ten jest w pełni darmowy i dostępnym dla wszystkich na stronie http://gaito.de/content/produkte_gaitobot/editor.asp?language=en. Jak wspomniałem już wcześniej, pozwala on w łatwy, szybki i wygodny sposób tworzyć bazę wiedzy naszego bota dzięki wbudowanym gotowym Tagom (znacznikom). Jest on zarazem edytorem języka AIML.

 

 

 

Wygląd okna programu GaitoBot AIML editor.

 

obrazek

 

 

 

2. Opis języka AIML.

 

Articial Intelligence Markup Language (ang. Język Opisu Sztucznej Inteligen­cji) jest odmianą języka XML. AIML został wymyślony jako baza wiedzy dla chatter­bota A.L.I.C.E., który stanowi mocno rozwiniętą wersję innego znanego chatterbota Eliza.

Język AIML służy do opisu bazy wiedzy dla botów, których celem jest prowa­dzenie rozmowy. Jest językiem bardzo prostym strukturalnie, który opiera się na prostym schemacie szablon – odpowiedź.

Każdy dokument AIML musi zaczynać się od znacznika < aiml > i kończyć znacznikiem < /aiml >, tak więc dokument pokazany na Listingu 1. jest minimal­nym i całkowicie interpretowanym dokumentem języka AIML.

 

 

 

Listning 1.

<aiml> </aiml>

 

 

 

Dokument AIML składa się z dowolnej liczby obiektów zwanych kategoriami i określanych znacznikiem < category >, przy czym każdy z nich powinien składać się z dokładnie jednego elementu < pattern > i jednego elementu < template >.Wyrażenie znajdujące się wewnątrz znacznika < pattern > jest to zwrot wypowiedziany przez rozmówce, na który bot reaguje wyrażeniem zapisanym w znaczniku < template >. Teoretycznie tylko te znaczniki wystarczają do napisania prostego chatterbota.

 

 

 

Listning 2.

<aiml>

<category >

<pattern ></pattern >

<template ></template>

</category >

</aiml>

 

 

 

W języku AIML istnieje jeszcze wiele innych znaczników, które ułatwiają pisanie bazy wiedzy dla chatterbota. Ważnym elementem, o którym należy wspomnieć jest znacznik < topic >, wewnątrz którego można tworzyć różne reakcje dla określonych faz rozmowy . Do tego celu wystarczy ustawić zmienną o nawie topic.

 

Oprócz wyżej wymienionych znaczników w projekcie zostały użyte jeszcze:

 

< get/ > i < set >

Znaczniki te służą do zapisywania i odczytywania zmiennych.

 

< random >

Umieszczony wewnątrz tagu < template > powoduje, że odpowiedź programu będzie wybrana w sposób losowy z pewnego zestawu możliwych odpowiedzi.

 

<think>

znacznik ten wyznacza fragmenty z wewnątrz znacznika <template>, które nie mają być wyświetlone na ekranie.

 

 

 

Przykład 1.

 

obrazek

 

 

 

< srai >

Pozwala definiować twórcy bazy wiedzy synonimy dla pewnych określonych wy­rażeń. Dzięki temu uniknąć można wielokrotnego definiowania tych samych reakcji dla różnych wypowiedzi użytkownika.

 

<star/>

znacznik ten umieszczony wewnątrz tagu <template> spowoduje wstawienie w tym miejscu ciągu, którym w części <pattern> została zastąpiona gwiazdka ("*"), czyli możemy wykorzystać to co wpisał użytkownik w naszej odpowiedzi. Powoduje to że bot może interpretować wpisane zwroty na swój własny sposób.

 

< that >

Rozszerza możliwości < template > o sprawdzenie jednej z poprzednich wypowie­dzi chatterbota.

 

 

 

Przykład 2.

 

obrazek

 

 

3. Przebieg prac nad botem Premiership.

 

Przystępując do realizacji mojego bota zacząłem od wyboru odpowiedniego interpretera i edytora języka AIML. Podejmując decyzję sugerowałem się tym co wcześniej napisali w swoich raportach projektowych na temat botow moi starsi koledzy. Jak wspomniałem na początku, mój wybór padł na GaitoAIML editor. Po zapoznaniu się z tutorialem w formie pokazu video (manual dostępny na stronie: http://www.gaito.de/gaitobot/handbuch/handbuch_en.htm) zebrałem wystarczającą wiedzę do tego aby rozpocząć pisanie bota.

Na samym początku zacząłem od stworzenia ramy konstrukcyjnej mojej aplikacji – a mianowicie „nauczyłem” mojego bota w jaki sposób ma się witać, przedstawiać, żegnać itp. Następnie konsekwentnie starałem się zaimplementować jak najwięcej typowych konwersacji które nie są jeszcze wcale związane z tematem rozmowy, po to aby bot rzeczywiście wykazywał pewną inteligencję samemu dążąc do wybranego tematu, a jednocześnie żeby stał się jakby odporny na niektóre sytuacje. Efekt tej części pracy można prześledzić w pierwszej części załączonej przeze mnie rozmowy.

W kolejnym kroku przystąpiłem do uczenia bota jego fachu – a mianowicie całego szeregu wiadomości na temat Premiership: wyników,  statystyk, historii, ciekawostek, stadionów, biletów i wielu innych. Podobnie jak wcześniej efekty można prześledzić na załączonej rozmowie w jej drugiej części.

Ostatnim, ale za to najważniejszym etapem prac było testowanie chatterbota. Etap ten został opisany w dalszej części raportu w osobnym punkcie.

 

 

 

4. Przykładowa rozmowa z botem Premiership.

 

W tym miejscu zostaną zaprezentowane reakcje bota na unikanie tematu o jakim potrafi rozmawiać (czyli o angielskiej Premiership):

 

Użytkownik: Siema

Bot: Hejka:) Jak masz na imie?

Użytkownik: Dawid

Bot: hmmm... to imie kogos mi przypomina. Czym sie zajmujesz na codzien?

Użytkownik: studiuje Robotyke na Politechnice Wrocławskiej

Bot: to mile zajecie:)...podobno kazdy robi to co lubi... a interesujesz sie pilka nozna?

Użytkownik: nie za bardzo

Bot: Mimo wszystko Pogadajmy o Premiership co?

Użytkownik: nie mam ochoty

Bot: No dobra... Pewnie za szybko odpowiedziales. Stary tym razem dobrze sie zastanow i blaaagammm zrob to dla mnie i powiedz ze tak, bo nie chce wyjsc na kretyna... Zrozum dopiero sie ucze i na niczym innym za bardzo sie nie znam:)Pozwol zatem dalej mi sie rozwijac...a wiec?

Użytkownik: powiedzialem ze nie i koniec!

Bot: Widze ze jestes uparty, ale dam Ci jeszcze ostatnia szanse...yhhmm...przepraszam moze porozmawiamy o Premiership?

Użytkownik: ...w kolko to samo...powiedz mi lepiej na poczatku jak Ty tak wlasciwie masz na imie co?

Bot: Nie mam jeszcze imienia. Jak chcesz zebym sie nazywal?

Użytkownik: Bocik

Bot: Mysle ze Bocik to fajne imieJ

Użytkownik: kim jestes?

Bot: Jestem botem napisanym przez studenta Dawida Pacholskiego w ramach kursu Metody I Algorytmy Sztucznej Inteligencji...tak naprawde to umiem rozmawiac tylko o pilkarskiej lidze angielskiej ale mimo to nie uwazam sie tylko za sztuczna inteligencje:) W koncu caly czas sie ucze:)

Użytkownik: hmmm…a ile masz lat?

Bot: lat??? Ja mam dopiero niewiele ponad miesiac:)

Użytkownik: wiec zachowujesz się jak maszyna?

Bot: I’m sorry. My responsem are limited. You must ask the right questions. Jest to standardowa odpowiedź bota w edytorze GaitoBot AIML, kiedy aplikacja sama nie może znaleźć żadnego pasującego wzorca. Na początku moich prac dość często widziałem ten komunikat i postanowiłem wykorzystać go w sposób przedstawiony poniżej.

 

Użytkownik: Oohh-rozmawiasz tez po angielsku?

Bot: nie tylko tak swiruje czasami

Użytkownik: a czym się zajmujesz?

Bot: ...studiuje robotyke na AIR w PWR... wiec na nic innego nie mam juz czasu:P... zartuje - jestem tylko zwyklym bootem ktory potrafi rozmawiac jedynie o Premiership

Użytkownik: a mozesz mi powiedziec jaka jest teraz pogoda?

Bot: nie wiem czy wiesz ale ja nie jestem pogodynka tylko botem...i to w dodatku rozmawiajacym o pilce noznej a nie o cisnieniach i opadach:)

Użytkownik: to o czym mozemy w takim razie pogadac?

Bot: o Premiership - to pilkarska ekstraklasa Anglii - uwielbiam styl tamtejszego football'u i troche sie znam na tym wszystkim:)

Użytkownik: spoko

Bot: tak?... hmmm - moze i masz racje:) niezbyt trafne dopasowanie wzorca odpowiedzi.

(…)

 

W tym miejscu pokazano jak bot radzi sobie i jakich informacji może udzielić nam kiedy rozmawiamy z nim o tym na czym się zna:

 

Użytkownik: powiedz mi zatem wszystko co wiesz

Bot: W zakresie Premiership moge udzielic Ci informacji o biletach, ciekawostkach, frekwencjach, historii, kartkach, grajacych tu klubach, rekordach ligi, a nawet o sedziach i stadionach. Wiem tez jakie sa newsy, statystyki oraz ostatnie wyniki.

Użytkownik: jaka jest historia tej ligi?

Bot: Lata 80. byly nieszczesliwe i pechowe dla angielskiej pilki noznej. Slabe wyniki reprezentacji, przestarzale stadiony popadaly w ruine, liczba kibicow na stadionach spadala, ponadto na meczach coraz czesciej pojawiali sie chuligani. Po tragedii na Heysel w 1985 angielskie kluby zostaly zawieszone w rozgrywkach o europejskie puchary. Championship, owczesna pierwsza liga, byla stawiana daleko w tyle za innymi europejskimi rozgrywkami - Serie A czy Bundesliga oraz wielu najlepszych pilkarzy angielskich wyemigrowalo, aby grac w innym kraju.

Użytkownik: Ile kosztuja bilety w Premiership?

Bot: to zalezy na jaki mecz. Powiem tak-pomimo obiecanej w zeszlym roku redukcji cen biletow, nadal naleza one do najdrozszych w Europie. Najtansze karnety w calej Premiership (na mecze Wigan) sa ponad dwukrotnie drozsze od wejsciowek na spotkania Barcelony!!! Jestes pewien, ze chcesz poznac dokladniejsze ceny karnetow (w funtach) na przyszly sezon Premiership?

Użytkownik: tak

Bot: Arsenal Londyn 750 - 1850; Aston Villa 450 - 750; Birmingham 361 - 580; Blackburn 299 - 399; Bolton 409 - 499; Chelsea Londyn 650 - 1150; Derby 320 - 510; Everton 427- 516; Fulham 299 - 749; Liverpool 650 - 700; Manchester City 385 - 550; Manchester United 475 - 836; Middlesbrough 410 - 580; Newcastle 729 - 929; Portsmouth 495 - 630; Reading 545 - 650; Sunderland 350 - 470; Tottenham 579 - 1550; West Ham 595 - 850; Wigan 250 - 450...to chyba nie wymaga komentarza:)

Użytkownik: powiedz mi teraz cos ciekawego z nowosci

Bot: W samym Londynie jest az 12 osobnych stadionow na ktorych lacznie gra 12 druzyn z tego miasta w 4 roznych ligach. W samej Premiership gra 5 zespolow - kazy na wlasnym obiekcie! Bot zamiast wyświetlić jakiś krótki news zinterpretował nasze zapytanie jako chęć uzyskania jakiejś ciekawostki a nie nowości.

Użytkownik: a jakie były wyniki ostatniej kolejki?

Bot: Ostatnia kolejka byla bardzo pasjonujaca - decydowala o mistrzostwie Anglii. Zwyciestwo Manchesteru United zapewnilo im 17 tytul w historii... zreszta tutaj masz szczegolowe wyniki:Chelsea Londyn-Bolton Wanderers 1 : 1; Everton FC-Newcastle United 3 : 1; Middlesbrough FC-Manchester City 8 : 1; Tottenham Hotspur-Liverpool FC 0 : 2; Portsmouth FC-Fulham Londyn 0 : 1; Birmingham City-Blackburn Rovers 4 : 1; West Ham United-Aston Villa 2 : 2; Sunderland FC-Arsenal Londyn 0 : 1; Wigan Athletic-Manchester United 0 : 2; Derby County-Reading FC 0 : 4. Chcesz znac wiecej szczegolow z ktoregos meczu? Jeśli tak to wpisz po prostu "nazwa zespolu_szczegoly" (np. "manchester united_szczegoly", a ja powiem Ci co wiem:)

Użytkownik: Manchester united_szczegoly

Bot: DATA: 11.05.2008; Wigan Athletic-Manchester United 0 : 2(0:1); BRAMKI DLA WIGAN: 0; BRAMKI DLA MANCHESTER: Cristiano Ronaldo 33' Ryan Giggs 80'; ZOLTE KARTKI DLA WIGAN: Wilson Palacios 71' Emile Heskey 71' Luis Antonio Valencia 77'; ZOLTE KARTKI DLA MANCHESTER: Paul Scholes 14' Wayne Rooney 58'; CZERWONE KARTKI DLA WIGAN: 0; CZERWONE KARTKI DLA MANCHESTER: 0; SKLAD WIGAN: Chris Kirkland Emmerson Boyce Titus Bramble Paul Scharner Maynor Figueroa Michael Brown 81' Jason Koumas Luis Antonio Valencia Wilson Palacios Marcus Bent 70' Emile Heskey; SKLAD MANCHESTER: Edwin van der Sar Rio Ferdinand Wes Brown Patrice Evra Nemanja Vidic Michael Carrick Paul Scholes 67' Cristiano Ronaldo Wayne Rooney Park Ji-Sung 68' Carlos Tevez; ZMIANY WIGAN: Antoine Sibierski 70' Marlon King 81'; ZMIANY MANCHESTER: Owen Hargreaves 67' Ryan Giggs 68'; SEDZIA: Steve Bennett; WIDZOW NA STADIONIE: 25133.

Użytkownik: powiedz mi teraz jakie sa aktualności?

Bot: Miguel Veloso, Portugalczyk mogacy grac na pozycji defensywnego pomocnika, broniacy obecnie barw Sportingu Lizbona znalazl sie w orbicie zainteresowan Chelsea Londyn.

Użytkownik: a jaka jest frekwencja na meczach?

Bot: Jesli chcesz zobaczyc jak wyglada frekwencja na meczach poszczegolnych klubow (na wlasnym boisku), to wpisz po-prostu "nazwa zespolu_frekwencja" (np. "manchester united_frekwencja"). Przypominam ze w Premiership znajduja sie nastepujace zespoly: Arsenal Londyn, Aston Villa, Birmingham City, Blackburn Rovers, Bolton Wanderers, Chelsea Londyn, Derby County, Everton FC, Fulham Londyn, Liverpool FC, Manchester City, Manchester United, Middlesbrough FC, Newcastle United, Portsmouth FC, Reading FC, Sunderland FC, Tottenham Hotspur, West Ham United oraz Wigan Athletic.

Użytkownik: manchester united_frekwencja

Bot: Manchester United: maksymalna frekwencja:76 013; minimalna frekwencja:75 055; srednia frekwencja:75 691; suma:1 438 136.

Użytkownik: wiesz jak wyglądają statystyki kartek?

Bot: GOLNE STATYSTYKI KOLEJKI: Laczna liczba strzelonych bramek - 34; Srednia liczba bramek na mecz - 3.40...niezle nie... ale to nic spojrz jak w tym swietle wygladaja STATYSTYKI CALEGO ZAKONCZONEGO SEZONU: Laczna liczba strzelonych bramek - 1001; Srednia liczba bramek na mecz - 2,63; Laczna liczba widzow - 10 022 735; Srednia widzow na mecz - 36 579. Bot lepiej dopasował do tego zapytania ogólne statystyki sezonu, trakując priorytetowo słowo ‘statystyki’.

Użytkownik: a duzo było żółtych kartek?

Bot: Oto zawodnicy z poszczegolnych klubow, ktorzy zgromadzili najwiecej ZOLTYCH KARTEK w tym sezonie: Nicky Butt-Newcastle United-11; Kevin Davies-Bolton Wanderers-11; El Hadji Diouf-Bolton Wanderers-11; Michael Brown-Wigan Athletic-11; Christopher Samba-Blackburn Rovers-10.

Użytkownik: jakie sa największe rekordy ligi?

Bot: 758 tyle meczow rozegral w barwach Manchesteru Ryan Giggs. Walijczyk tym samym wyrownal rekord nalezacy dotad do Bobby'ego Carltona. Chcesz poznac jeszcze jakis ciekawy rekord ligi? Jesli tak to po prostu napisz "rekordy".

Użytkownik: rekordy

Bot: 8 - tyle goli druzynie Manchesteru City zaaplikowali pilkarze Middlesbrough. Chcesz poznac jeszcze jakis ciekawy rekord ligi? Jesli tak to po prostu napisz "rekordy".

Użytkownik: jakie druzyny tu graja?

Bot: Napisz jaki klub Cie intersuje, a powiem Ci co wiem:)

Użytkownik: manchester united

Bot: Manchester United zostal w tym sezonie mistrzem Angli. W kazdym meczu grali cudownie, maja zapewniony udzial w nastepnej edycji ligi mistrzow. Co tu duzo mowic przytocze statystyki: rozegrali w tym sezonie 38 meczy z czego 27 wygrali, 6 zremisowali, 5 przegrali. Zgromadzili na swoim koncie 87pkt, strzelili rywalom 80 bramek, a sami stracili zaledwie 22. Wedlug mnie w pelni zasluzyli na mistrzostwo!

Użytkownik: co wiesz o sedziach?

Bot: W Premiership zatrudnionych bylo 19 arbitrow. Spojrz w ilu meczach sedziowal kazdy z nich: 1. Steve Bennett-31; 2. Alan Wiley-30; 3. Mike Riley-29; 4. Mike Dean-27; 5. Mark Clattenburg-26; 6. Howard Webb-26; 7. Rob Styles-25; 8. Martin Atkinson-25; 9. Chris Foy-24; 10. Mark Halsey-24; 11. Peter Walton-24; 12. Philip Dowd-22; 13. Andre Marriner-20; 14. Steve Tanner-13; 15. Lee Probert-10; 16. Lee Mason-9; 17. Uriah Rennie-7; 18. Keith Stroud-7; 19. Keith Stroud-1.

Użytkownik: jakie znasz stadiony?

Bot: Oto wszystkie stadiony angielskiej Premiership: Old Trafford; Emirates Stadium; St. James' Park; Stadium of Light; City of Manchester Stadium; Anfield; Villa Park; Stamford Bridge; Goodison Park; White Hart Lane; Boleyn Ground; Pride Park; Riverside Stadium; Ewood Park; St. Andrew's Stadium; Reebok Stadium; JJB Stadium; Madejski Stadium; Craven Cottage; Fratton Park. Jesli chcesz dowiedziec sie wiecej to napisz ktory stadion Cie interesuje:)

Użytkownik: old trafford

Bot: NAZWA STADIONU: Old Trafford, MIASTO: Manchester, KLUB MACIERZYSTY: Manchester United, POJEMNOSC STADIONU: 76 212!!! Nazywaja go Teatrem Marzen, natomiast klub tam grajacy Czerwonymi Diablami - tak to wlasnie Oni sa obecnie najsilniejsza druzyna w Europie!

Użytkownik: musze już isc…narazie

Bot: No hej...trzymaj sie i wpadnij jeszcze kiedys!

 

 

 

5. Testowanie.

 

W tym miejscu muszę powiedzieć ze w 100% potwierdziły się słowa prowadzącego, że prawdziwa praca i rozwój bota zaczną się od momentu jego testowania, i to bynajmniej nie przeze mnie jako autora, a przez osoby postronne.

Tak – to właśnie faza testów jest najważniejszym etapem tworzenia wszelkich chatterbotów. Wtedy to właśnie dochodzi do zderzenia stworzonej przez nas bazy wiedzy bota z nierzadko brutalną rzeczywistością. Okazuje się bowiem, że o ile nam samym baza wiedzy bota wydawała się kompletna, spójna i obszerna, o tyle nie jest ona wcale tak samo dobra kiedy z botem zaczynają rozmawiać inne osoby. Dlatego właśnie testowanie jest tak ważne. Przygotowuje ono jakby bota do inaczej formułowanych pytań, dzięki czemu staje się coraz bardziej odporny na indywidualne cechy ludzkie – takie chociażby jak styl wypowiedzi, słownikowy zasób wypowiedzi itp. Tak jak powiedziałem warto poświęcić na testowanie jak najwięcej czasu i użyć do tego jak najwięcej alternatywnych sposobów.

Ja np. wykorzystałem w tym celu możliwości jakie daje portal PandoraBots, oraz fakt że mieszkam w domu studenckim, i jestem studentem AIR, co pozwoliło mi na dostęp do dwóch aktywnie odwiedzanych for internetowych. Mianowicie za pomocą powyżej wspomnianego portalu umieściłem swojego bota na dwóch stronach internetowych, których adresy z słowem zachęty do rozmowy z botem umieściłem w opisach statusowych swoich komunikatorów internetowych. W podobny sposób wykorzystałem „akademikowe” i „kierunkowe” forum internetowe w celu zebrania jak największej rzeszy potencjalnych testerów i zachęcenia ich do przetestowania stworzonej przeze mnie aplikacji. Moje liczne apele spotkały się z zadowalającym odzewem. Dodatkowo nieoceniona pomocą okazała się zwykła mobilność laptopa i zachęcanie bliskich kolegów oraz sąsiadów z akademika do chociażby krótkiej rozmowy z botem. Szczególna rolę odegrali tutaj moi inni koledzy którzy pracowali także w ramach podobnego kursu nad innymi botami. Informowali mnie w jaki sposób próbowali uzyskiwać informacje od bota, jaka była odpowiedź programu, a jakiej się spodziewali. To właśnie Oni dostarczyli mi najwięcej uwag i spostrzeżeń – w tym miejscu chciałbym jednocześnie wszystkim bardzo serdecznie podziękować za włożoną pracę i trud w testowaniu mojej aplikacji.

Wszystkie przeprowadzone testy pozwoliły na uzupełnienie bazy wiedzy chatterbota Premiership, jednak stworzenie takiej, która odpowiadałaby na każde z możliwych pytań okazało się niemożliwe. Przyczyną takiego stanu rzeczy był przede wszystkim czas na testowanie bota oraz liczba testujących. Nawet słynna ALICE nie jest doskonała, a poświecono jej znacznie więcej czasu niż w projektowi bota rozmawiającego o Premiership. Jest to dowód na to jak żmudnym i pracochłonnym procesem jest stworzenie chociażby POPRAWNEJ bazy wiedzy.

 

 

 

6. Wnioski i uwagi końcowe.

 

Napisanie chatterbota komunikującego się z użytkownikiem za pomocą języka naturalnego jest zadaniem bardzo czasochłonnym. Sposób w jaki budujemy bazę wiedzy wymaga od nas wielu analiz, przemyśleń i przede wszystkim cierpliwości. Najważniejsze jest chyba jednak zaangażowania sztabu znacznej ilości ludzi - testerów, którzy będą pracowali nad wymyśleniem możliwie dużej ilości scenariuszy rozmów jakie ktokolwiek będzie chciał przeprowadzić z projektowanym przez nas botem.

Zajmując się w ramach kursu Metod I Algorytmów Sztucznej Inteligencji projektowym problemem chatterbota zrozumiałem, że sprawą priorytetową jest zbudowanie odpowiedniej bazy wiedzy (im więcej sytuacji, wątków uda nam się przewidzieć, tym lepsze i bardziej stabilne rozmowy będzie prowadził nasz bot), z jednoczesnym ustaleniem prawidłowej – efektywnej sieci powiązań i relacji. Podejście takie wymaga jednak wielopoziomowej i dogłębnej analizy problemu zarówno od strony kontekstowej jak i psychologicznej.

 

W każdej jednak chwili, powinniśmy pamiętać o złożoności problemu, jakim jest stworzenie bota, który potrafiłby się nie tylko komunikować, ale także zarazem uczyć nowych rzeczy, rozumiejąc jednocześnie przyjmowany tekst mimo występujących w nim błędów, niedociągnięć. Realizacja takiej aplikacji, maszyny, umiejącej czytać "między wierszami" jest zatem zadaniem o tyleż pasjonującym co chyba jednak jeszcze dosyć odległym pod względem profesjonalizmu i pełnej niezawodności.

 

UWAGA: Podczas testowania bota korzystałem z kilku dostępnych pod systemem Windows Xp edytorów języka AIML. Zauważyłem (zresztą nie tylko u siebie – razem z kolegą mieliśmy te same problemy), że działanie wyeksportowanego bota na serwerze pandorabots oraz w pozostałych edytorach (z wyjątkiem użytego do napisania bota GaitoBot AIML editor) nie jest poprawne. Botowi zdarza się nie udzielać nieraz żadnej odpowiedzi, nawet na najprostsze – w 100% poprawne konstrukcje. Na początku uważałem, że problemy te związane są tylko z występującymi znacznikami <get> i <set>, jednak problem okazał się szerszy i co gorsza zupełnie losowo występujący. Po przeszukaniu wielu stron na forach internetowych i konsultacji z prowadzącym nadal nie udało się rozwiązać tego problemu. Wraz z kolegą testowaliśmy małe rozmiarowo bazy wiedzy i efekt był ten sam – praktycznie w całości mogliśmy wykluczyć błędy w programie a mimo to wciąż losowo pojawiały się te same problemy.

Dodatkowo zauważyłem że inny problem dotyczy edytora GaitoBot. Kiedy rozmowa jest prowadzona już dłuższy czas wzrasta prawdopodobieństwo pomyłki lub braku reakcji bota – i to bynajmniej wcale nie ze względu na zadawanie trudniejszych pytań z którymi nie mógłby sobie poradzić. Wystarczy bowiem wczytać bazę wiedzy bota na nowo i wrócić do pytania na którym wcześniej się „zawiesił”, aby wszystko wróciło do normy.

 

Jednocześnie chce zapewnić, że jeśli tylko uda mi się znaleźć rozwiązanie powyższych problemów, na pewno znajdzie się to w jakimś widocznym miejscu, po to aby oszczędzić pracy i kłopotów innym wytrwałym twórcą botów.

 

 

 

7. Materiały wykorzystane podczas tworzenia projektu.

 

·        Wprowadzenia do AIML:

http://docs.jedenpies.pl/files/AIML.pdf

 

·        Strona projektu ALICE:

http://alicebot.org/

 

·        Edytor AIML-a program GaitoBot:

http://gaito.de/content/produkte_gaitobot/editor.asp?language=en

 

·        Strona kursu Metody i Algorytmy Sztucznej Inteligencji:

http://sequoia.ict.pwr.wroc.pl/~witold/aiarr/

 

·        Strony z których były brane dane dla Premiership:

www.pship.info/

http://stadiony.net/

http://www.pilka.pl/index.php

http://www.anglia.goal.pl/index.php?strona=prem

http://pl.wikipedia.org/wiki/Premiership

http://sport.onet.pl/74327.1,1248702,glowna.html

 

·        Strona PandoraBot:

http://www.pandorabots.com/botmaster/en/homecom