Daniel Jasina SZTUCZNA INTELIGENCJA Chatboty 19-04-2013 1. Sztuczna inteligencja 1. Zarys 2. Test Turinga 2. Chatboty 1. Czym lub kim są? 2. Zastosowania 3. Znane chatboty 4. Działanie 3. AIML 1. Czym dokładnie jest? 2. Struktura i znaczniki 4. RD003JS 1. Algorytm rozróżniania słów i nauka 2. Akceptor 3. Rozmowa 4. Niezdolność do nauki gry w o i x Sztuczna inteligencja Sztuczna inteligencja to dział informatyki, którego zadaniem jest stworzenie programów symulujących inteligencję. Znana jest pod angielską nazwą Artificial Intelligence od której pochodzi skrót AI. Jednym z punktów badań nad sztuczną inteligencją jest próba stworzenia maszyny myślącej. Ponieważ jest to ciężkie zadanie, dużym osiągnięciem byłoby stworzenie programu imitującego samą rozmowę z człowiekiem. Maszyna odpowiadałaby na zadawane jej pytania jak też potrafiłaby je zadawać. O takiej maszynie myślał jeden z twórców informatyki Alan Turing. Na pytanie czy maszyny potrafią myśleć? zdefiniował założenia dla testu, który miał za zadanie sprawdzić czy maszyna byłaby w stanie poprowadzić rozmowę z człowiekiem w taki sposób, żeby ten nie mógł stwierdzić że rozmawia z maszyną. Test wygląda następująco: sędzia - człowiek - prowadzi rozmowę w języku naturalnym z pozostałymi stronami. Jeśli sędzia nie jest w stanie wiarygodnie określić, czy któraś ze stron jest maszyną czy człowiekiem, wtedy mówi się, że maszyna przeszła test. Zakłada się, że zarówno człowiek jak i maszyna próbują przejść test zachowując się w sposób możliwie zbliżony do Ludzkiego. " http://www.pcworld.pl/news/375039/stalo.sie.test.turinga.zaliczony.przez.program.komputerowy.c
Do tej pory udało się prawie zaliczyć test podczas dorocznego festiwalu Techniche w Guwahati. Jednak warto zastanowić się nad tym czy maszyna rzeczywiście jest w stanie myśleć czy raczej odpowiada na pytania w sposób czysto mechaniczny, mając przygotowaną odpowiedź na każde pytanie. Może świadczy to jednak o inteligencja jej twórców, a nie jej samej. Programem, który niemal zaliczył test Turinga jest chatbot CleverBot. Chatboty Chatbot jest to program, który skupia się na rozmowie z ludźmi przez komunikator tekstowy. Ponieważ ludzie nie są świadomi kto pisze po drugiej stronie komputera, łatwo mogą zostać przez niego oszukani. Zadaniem programu nie jest jednak oszukanie człowieka tylko przekazanie mu konkretnych informacji na dany temat, jak i pozyskanie wiedzy. Chatboty najczęściej stosuje się w celach: kontaktu z klientami przekazania informacji urealnienia gier komputerowych prowadzeniu statystyk Do najsławniejszych chatbotów nalezą: Eliza uznawany za pierwszego chatbota. Podawał się on za psychoanalityka. A.L.I.C.E program którego pomysłodawcą był haker Richard Wallace, rozwijany przez społeczność. Suzette udało mu się oszukać jednego z sędziów testu Turinga, przez co zdobył nagrodę Loebnera. Cleverbot udało mu się mniej więcej zaliczyć test Turinga - prawie 60% badanych myślało, że rozmawia z człowiekiem. www.pcworld.pl/news/ Snikers program do rozmowy w języku polskim.
Chatterboty jak też można je nazywać, posiadają bazę wiedzy specjalistycznej ściśle związaną z przeznaczeniem chatbota oraz ogólnej pozwalającej rozmawiać na dowolne tematy. Posiadają również informacje o sobie jak i o rozmówcy. http://www.chatbot.pl/wiedza/ Podstawowymi informacjami, które powinien wiedzieć o sobie chatbot to imię, wiek oraz płeć. Niektóre posiadają też osobowość, a lepsze z nich nawet okazują emocję. Informacje zapisywane są w bazie danych bądź zbierane ze stron internetowych na przykład poprzez odczytywanie plików z danymi w formacie XML. Istnieje specjalny rodzaj języka XML stworzony przez dr. Richarda S. Wallace a specjalnie do tworzenia i interpretacji wiedzy. Nazywa się AIML i tak jak XML składa się ze znaczników. AIML Najważniejszymi znacznikami są znaczniki <pattern> i <template>, wzór i szablon, które odpowiednio określają wzorzec wypowiedzi użytkownika i odpowiedź bota. Znaczniki te znajdują się w, co można zobaczyć na przykładowym kodzie: <?xml version="1.0" encoding="utf-8"?> <aiml version="1.0"> <pattern>what is your name</pattern> <template>chatterbot</template> Aby ułatwić rozumowanie bota używa się symbolu wieloznacznego * - który zastępuje dowolne wyrazy użyte w pytaniu oraz zmiennych pustych znaczników z atrybutem jako nazwy zmiennej. <pattern>my sister *</pattern> <template> I like your sister. She is <get name="nazwa_zmiennej"/></template>
Można określić temat kategorii za pomocą <topic name= temat >, zaś <random> pozwala na wylosowanie 1 z wielu odpowiedzi : <template> <random> <li> Hello</li> <li> Hi</li> <li> Welcome</li> </random> </template> Ponieważ wiele pytań może mieć to samo znaczenie a brzmieć nieco inaczej, aby nie powtarzać tych samych odpowiedzi wystarczy za pomocą znacznika <srai> umieszczonego wewnątrz <template> odwołać się do istniejącego już pytania: <pattern>hi</pattern> <template><srai>hello</srai></template> <pattern>hello</pattern> <template>welcome</template> Wybrane znaczniki języka AIML http://www.inzynieriawiedzy.pl/reprezentacja-wiedzy/aiml
RD003JS RD003JS jest to nazwa mini-chatbota, stworzonego na potrzeby prezentacji. Nie potrafi on prowadzić rozmowy, jednak jest zdolny zapamiętywać zadawane mu pytania i udzielane mu odpowiedzi, dzięki temu po kilkunastu rozmowach mógłby sprawiać wrażenie inteligentnego. Algorytm rozpoznawania pytań: Algorytm rozpoznając pojedyncze wyrazy pytania, porównuje je do wyrazów z bazy pytań z pamięci. Jeśli pytanie zostało rozpoznane, przekazuje indeks grupy pytań do jakiej należało to pytanie, indeks ten jest wyszukiwany w bazie odpowiedzi. Gdy bot zna więcej niż jedną odpowiedź - losuje jedną z tych, która była najczęściej używana. W przypadku gdy nie udało mu się rozpoznać pytania zapisuje je do bazy pytań, po czym zadaje użytkownikowi jedno z pytań, na które nie zna jeszcze odpowiedzi w celu jej zapamiętania. Struktura pamięci bota w xml: <memory><pattern> <id>1</id> <question>co to jest *</question> <pow>0</pow> </pattern> <pattern> <id>2</id> <question>jak masz na imie</question> <pow>0</pow> </pattern> <template> <answer>jestem RD003JS</answer> <pow>0</pow> <qid>2</qid> </template></memory> Objaśnienie znaczników: <memory> - początek i koniec pamięci. <pattern> - wzór pytania (pojemnik na znaczniki wewnętrzne). <id> - index grupy pytań. <question> - treść pytania. <template> - szablon odpowiedzi (pojemnik na znaczniki wewnętrzne). <answer> - treść odpowiedzi. <qid> - index grupy pytań, do której należy dana odpowiedź. <pow> - ilość użyć. Znaczniki te zostały stworzone na potrzeby aplikacji i nie mają nic wspólnego ze znacznikami języka AIML.
Akceptor: pokazuje w jaki sposób wyszukiwane są pytania z bazy danych. Przykładowa rozmowa: Niezdolność do nauki gry w o i x Program nie jest zdolny zapamiętywać przebieg rozmowy (gry). Wie tylko to, co było powiedziane przed chwilą i zapamiętuje odpowiedź na ruch, a nie strategie rozmowy czy gry.