sprawozdanie

Transkrypt

sprawozdanie
Daniel Jasina
19-04-2013
SZTUCZNA INTELIGENCJA
• Chatboty
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 <category>, co można zobaczyć na przykładowym kodzie:
<?xml version="1.0" encoding="UTF-8"?>
<aiml version="1.0">
<category>
<pattern>What is your name</pattern>
<template>Chatterbot</template>
</category>
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.
<category>
<pattern>my sister *</pattern>
<template> I like your sister. She is <get name="nazwa_zmiennej"/></template>
</category>
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:
<category>
<pattern>hi</pattern>
<template><srai>hello</srai></template>
</category>
<category>
<pattern>hello</pattern>
<template>welcome</template>
</category>
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.

Podobne dokumenty