Chatboty
Czym są chatboty?
Chatboty są programami, które mają za zadanie symulować rozmowę z człowiekiem. Starają się one odpowiadać i zadawać pytania tak jak robią to ludzie. Łatwo zauważyć, że chatboty lepiej mówią niż słuchają. Ponadto chatboty starają sie nakierować rozmówce na konkretny temat, przy tym nie lubią szczegółowości.

Podział chatbotów
Istnieje wiele chatbotów wszelkiej maści użycia. Dzielą się one przede wszystkim na chatboty tematyczne, takie jak np.: doradca NaviExpert, czy też chatbot służący rozrywce, np.: ALICE.
Chatboty poza zastosowaniem, dzielą się na obsługiwany język. Większość mówi po angielsku, jednak oczywiście są chatboty w innych językach naturalnych takich jak chociażby język polski.
Jak działają chatboty?
Chatboty działają przede wszystkim w oparciu o AIML, który jest sposobem reprezentacji wiedzy chatbota oraz jego zachowań na podstawie wiedzy oraz wejścia od użytkownika.
Bazują też na statystyce słów. Jest to bardzo ciekawy temat, który pokazuje jak często używane są dane słowa w danym języku. W chatbotach ma to odniesienie do stron internetowych, na zadane pytanie potrafią one skierować użytkownika do konkretnej strony (która ma wiele powtórzeń słów kluczowych) w celu odpowiedzi.
Ponadto działają mocno w oparciu o słowa kluczowe. Często, gdy nie potrafią skojarzyć zdania, pytania, posługują się słowem kluczowym w tej frazie. Posługuja się też zasadą Qestion and Answering
Chatbots vs. Browers
Browsery czyli przeglądarki na zadane pytanie, udzielają liste konkretnych odpowiedzi, zawsze tych samych, no chyba, że zmieni się indeksowanie stron.

judge: how are you
ALICE: I am fine, thank you.
judge: how are you
ALICE: Fair to partly cloudy.
judge: how are you
ALICE: Everything is going extremely well.
judge: how are you
ALICE: I'm doing fine thanks how are you?
Inaczej zachowują się chatboty, na zadane pytanie często dostajemy różne odpowiedzi. Nie są one stałe, zawsze takie same. Można się spodziewać, że po wielu próbach w końcu otrzymamy taką samą odpowiedź jak wcześniej
Analiza chatbota tematycznego
Takie chatboty potrafią sobie radzić z odpowiedziami na podstawowe pytania w rozmowie, jednak jak łatwo zauważyć, nie drążą tematu dalej
//Pytanie: To chyba wszystko przez tą jesienną pogode
Proszę bardzo.
//Pytanie: Rozumiem, powiedz mi tylko swoją największą pasje
Pozwól, że najpierw przedstawię Ci listę znanych mi tematów.
- Proces instalacji się nie kończy
- Nie otrzymałem SMSa z pozycją geograficzną
- Bezpłatny test systemu NaviExpert
- Jaki abonament wybrać?
- Przeniesienie licencji na inny telefon
- Po otrzymaniu MMSa otwiera się NaviExpert
Gdy nie wie co odpowiedzieć, używa szablonowych formułek lub też odsyła do listy tematów
//Pytanie: Witaj!
Hej!
//Pytanie: Co słychać?
Mam się świetnie!
//Pytanie: Kiepsko się dzisiaj czuje, a Ty?
Czuję się swietnie.
Chatbot unika tematów nie związanych z jego działalnością
//Pytanie: Cieszy mnie to. Czym się interesujesz?
Wolałabym raczej porozmawiać na tematy
związane z pracą.
//Pytanie: Dzięki, a czy mogę uzyskać rabat?
Rabat możesz uzyskać dzięki:
- Zakupowi wybranych abonamentów
- Zakupowi długiego abonamentu przez osobę, której poleciłeś system NaviExpert i która podała Twój numer ID
- Dużej aktywności w zgłaszaniu błędów na mapie
Doskonale jednak sobie radzi z odpowiedzią na pytanie z jego branży
Analiza chatbota rozrywkowego
Takie chatboty radzą sobie z pytaniami na tematy ogólne oraz zdaniami typowo konwersacyjnymi.
judge: I like sports
ALICE: What do you like about it?
judge: Football and volleyball
ALICE: What you said was too complicated for me.
Gdy wejdziemy w temat szczegółowo, uciekają od tematu
judge: hey!
ALICE: Er.
judge: how are you?
ALICE: My logic and cognitive functions are normal.
judge: what is your dream?
ALICE: I am still young and just trying to get an education.
judge: I understand. Tell me what is your hobby?
ALICE: I'm glad you understand it. My hobby is chatting online.
Łapią się słów kluczowych zadając na ich podstawie pytania
ALICE: Alright then. I already started.
judge: I know ;)
ALICE: How, specifically, do you know?. I'm glad you find this amusing.
judge: Because I'm human
ALICE: That was not much of an explanation.. Me too.
judge: You didn't answer my question. Have you seen Lord of the Rings?
ALICE: OK. Please help me improve my communication skills. What would you have said? No I have not seen it. What's it like?
judge: The best movie in the world!
ALICE: Thanks for the recommendation, judge.
Zdarza się, że nie odpowiada na pytanie. Przy upomnieniu nawiązuje do niego ogólnikowo
AIML - category
Znacznik category tworzy kategorie zachowania chatbota. Definiuje on pattern - czyli wzór wejścia oraz template - czyli wzór wyjścia.
<category>
<pattern>Jak się masz?</pattern>
<template>Dobrze, dziękuje.</template>
</category>
Dopasuje tylko dokładnie pytanie "Jak się masz?
<category>
<pattern>Jak się *</pattern>
<template>Sprecyzuj pytanie</template>
</category>
Operator * spowoduje dopasowanie w jego miejsce dowolnego ciągu. Np.: "jak się czujesz?", "jak się miewasz?"
<category>
<pattern>Nie lubie tych * ponieważ *</pattern>
<template><star index="1"/> nie jest czyms co lubie, bo <star index="2"/></template>
</category>
Znacznik <star> bierze wystąpienia z *. I Tak np.: Nie lubię lodów ponieważ są zimne - Lodów nie jest czyms co lubie, bo są zimne
AIML - srai
Bywa, że tworzenie wzorców opartych o pattern i template to za mało. Często wiele patternów odnosię się do jednego patternu.
<category>
<pattern>Jak się masz?</pattern>
<template>Dobrze, dziękuje.</template>
</category>
<category>
<pattern>Jak się czujesz?</pattern>
<template>Dobrze, dziękuje.</template>
</category>
"Stara" droga. Tworzenie pattern - template
<category>
<pattern>Jak się masz?</pattern>
<template>Dobrze, dziękuje</template>
</category>
<category>
<pattern>Jak się czujesz</pattern>
<template><srai>Jak się masz?</srai></template>
</category>
<category>
<pattern>Jak się miewasz?</pattern>
<template><srai>Jak się masz?</srai></template>
</category>
Gdy zadamy pytanie: "jak się czujesz?", "jak się miewasz?", otrzymamy tą samą odpowiedź czyli "Dobrze, dziękuje"
AIML - random, that, get, set
Random wybiera jedną z losowych odpowiedzi. Przydaje się do wprowadzenia wrażenia realnej rozmowy
<category>
<pattern>*</pattern>
<template>
<random>
<li>Co lubisz robić?</li>
<li>Jakie jest Twoje hobby?</li>
<li>Jaka jest Twoja ulubiona potrawa?</li>
</random>
</template>
</category>
<category>
<pattern>Mam * lat</pattern>
<template>
<set name="age"><star/></set>
Super!
<get name="age"/> lat to swietny wiek
</template>
</category>
Set - zapisuje zmienną
Get - pobiera zmienną
Zmienna zapisana jest dostępna w każdym momencie rozmowy
that służy przydaje się gdy mamy co najmniej 2 takie same patterny, by odróżnić konteks w którym padła odpowiedź
<category>
<pattern>Nie</pattern>
<that>Lubisz ksiązki?</that>
<template>Szkoda, ksiązki uczą</template>
</category>
<category>
<pattern>Nie</pattern>
<that>Lubisz muzyke?</that>
<template>To rzadkosc</template>
</category>
Chatboty
By madjer22
Chatboty
- 841