2. Чатбот
• В 1950-м году Алан Тьюринг в статье
«Искусственный интеллект и вычислительные
машины» предсказал, что к 2000-му году
компьютеры смогут имитировать диалог человека,
так, что средний собеседник не будет иметь
больше 70% шансов правильного определения
является ли собеседник компьютером или
человеком после пяти минут диалога.
• Чатбот – это компьютерная программа,
использующая искуственный интеллект для
общения с человеком на естественном языке и
имитирующая человека.
3. Эволюция стиральных машин в сравнении с
компьтерными технологиями
1797 г. – изобретена первая стиральная машина
1893 г. – производство стиральных машин компанией Maytag.
1949 г. – запатентована первая стиральная машина, управляемая
перфокартой
1978 г. – начато производство стиральных машин с автоматическим
управлением на микросхемах
2011 г. – компания LG начала производство стиральных машин и другой
бытовой техники с подключением к интернету
2011 г. – компания Apple выпустила iPhone 4S с чатботом Siri
2011 г. – в штате Невада официально зарегистрирована первая
роботизированная автомашина
? – создание бытовых и других устройств с диалоговыми системами на
естественном языке
Таким образом, требования к качеству управления диалогом чатбота будут
постоянно возрастать.
5. ALICE, 1995 г.
Проблема четырех паттернов
<category>
<pattern> I LOVE YOU </pattern>
<template>Whatever</template>
</category
<category>
<pattern> * I LOVE YOU </pattern>
<template>Whatever </template>
</category
<category>
<pattern> I LOVE YOU * </pattern>
<template>Whatever</template>
</category
<category>
<pattern> * I LOVE YOU * </pattern>
<template> Whatever</template>
</category>
Проблема: не срабатывает на I REALLY LOVE YOU
6. ALICE (продолжение)
Рекурсивная обработка
Фраза - Can you please tell me what LINUX is right now
<category>
<pattern> * RIGHT NOW <pattern>
<template> <srai><star/></srai></template>
</category>
=> CAN YOU PLEASE TELL ME WHAT LINUX IS and then
<category>
<pattern> CAN YOU PLEASE * <pattern>
<template> <srai> Please <star/></srai></template>
</category>
=> PLEASE TELL ME WHAT LINUX IS and then
<category>
<pattern> PLEASE TELL ME WHAT * <pattern>
<template> <srai> TELL ME WHAT <star/></srai></template>
</category>
=> TELL ME WHAT LINUX IS and then
<category>
<pattern> TELL ME WHAT * IS <pattern>
<template> <srai> WHAT IS <star/></srai></template>
</category>
=> WHAT IS LINUX and finally
<category>
<pattern> WHAT IS LINUX <pattern>
<template> LINUX is an operating system. </template>
</category>
7. ALICE (продолжение)
Построение диалога
<topic name="* breakfast *">
<category>
<pattern>I like fish</pattern>
<template> Do you like sushi? </template>
</category>
</topic>
...
<category>
<pattern>yes</pattern>
<that> Do * sushi </that>
<template>I hate sushi</template>
</category>
8. Façade (2005)
Компьтерная игра с применением искуственного
интеллекта
Паттерн матчер находит не ответ, а определяет
discourse act (диалоговое действие) – критика,
флирт, согласие, несогласие и т.д.
Использует Jess (экспертная система CLIPS на Java)
Каждая фраза пользователя обрабатывается как
факт и добавляется в базу знаний. После этого
выполняются активированные правила и
создаются новые факты.
9. Façade (продолжение)
Язык описания паттернов
( X Y ) – упорядоченная последовательность (AND)
( X | Y) – X или Y (OR)
( [X] ) – X или ничего
( tor X Y ) - либо X, либо Y в любом месте
предложения ((* X *) | (* Y *))
( toc X ) - X в любом месте предложения (* X *)
( tand X Y ) - X и Y в любой последовательности ((* X
* Y*) | (* Y * X *))
( tnot X ) - отсутствие X в предложении
10. ChatScipt (2010)
Использует упрощенный синтаксис для описания
паттернов и правил
Каноническая форма
Автоматически распознает является ли фраза
пользователя утверждением, вопросом, либо
вопросом и утверждением
Использует WordNet для построения паттернов.
Использует онтологии WordNet.
Встроенная база фактов
Краткосрочные и долгосрочные переменные
11. ChatScipt (продолжение)
Упрощенный синтаксис:
s: ( I love meat ) Do you really?
s – sentence (утверждение), ? – question (вопрос), u – sentence
and question (утверждение и вопрос)
(I love meat) – паттерн, срабатывающий на предложение
содержащее I, love, meat в любом месте, но в указанном
порядке
* I * love * meat *
12. ChatScipt (продолжение)
Концепции (токены):
concept: ~meat ( bacon ham beef meat flesh veal lamb
chicken pork steak cow pig )
s: ( I love ~meat ) Do you really? I am a vegan
Упорядоченный токен
concept: ~pokerhand ( "royal flush" "straight flush" "4 of a
kind" "full house" )
?: ( which * better * ~pokerhand * or * ~pokerhand )
13. ChatScipt (продолжение)
Упрощенный синтаксис:
s: ( I like spinach ) Are you a fan of the Popeye
cartoons?
a: ( yes ) I used to watch him as a child. Did you lust
after Olive Oyl?
b: ( no ) Me neither. She was too skinny.
b: ( yes ) You probably like skinny models.
a: ( no ) What cartoons do you watch?
b: ( none ) You lead a deprived life.
b: ( Mickey Mouse ) The Disney icon.
14. Eugene Goostman (2001)
Паттерн матчер со сложными конструкциями.
Интерпретатор логических и математических
выражений
Поддержка контекста темы
Интеграция паттернов с базой данных для
использования онтологий
Конструктор диалогов
Контроллер цели диалога
15. Eugene Goostman (продолжение)
Определение токенов
<MultiToken name="qWhatBe">(tell (me|) (about|)|I am interested in|what
(is|are|were|was|*ould be|)|know what)</MultiToken>
<MultiToken name="qWhatBe0">(#(qWhatBe)|)</MultiToken>
<MultiToken name="qWhoBe">(tell (me|) (about|)|I am interested in|who
(is|are|was|were|*ould be|)|know who)</MultiToken>
<MultiToken name="qWhoBe0">(#(qWhoBe)|)</MultiToken>
Паттерны
<Pattern>* (#(qWhatAbout)|) (#(pYour)|#(pU)) name *</Pattern>
<Pattern>* tell me (#(pYour)|#(pU)) name *</Pattern>
<Pattern>* how * I call #(pU) *</Pattern>
<Pattern>* my name is * what * yours *</Pattern>
<Pattern>* do #(pU) have (a|) name *</Pattern>
16. Поддержка контекста
<Theme name="Mother">
<QAUnit name="HaveMother" type="STATEMENT">
<Pattern>* #(qDoYouHave) * #(mother) *</Pattern>
<Pattern>* #(pYour) #(mother) * (well|feeling fine|fine) *</Pattern>
<Pattern>mother</Pattern>
<Random>
<Text>Yes, of course I have mother! And I love her very much.</Text>
<Text>My mother works on TV.</Text>
</Random>
</QAUnit>
<QAUnit name="MotherProfession" type="STATEMENT">
<Pattern>* #(qWhoBe0) * #(pYour) #(mother) *</Pattern>
<Pattern>* #(pYour) #(mother) #(qWhoBe0) *</Pattern>
<Pattern>* (Does|if|whether|where) * #(pYour) #(mother) work* *</Pattern>
<Pattern>* (Tell me (more|*)|) about #(pYour) #(mother) *</Pattern>
<ContextPattern>* Who is she *</ContextPattern>
<ContextPattern>* who she is *</ContextPattern>
<ContextPattern>* (Does|if|whether|where) she work* *</ContextPattern>
<ContextPattern>* what does she do *</ContextPattern>
<ContextPattern>* #(qWhoBe0) #(pYour) #(mother) #(profession) *</ContextPattern>
<Random>
<Text>My mother works on the Odessa TV and runs a popular program for teenagers "Speak
Russian right!" Every Odessian teenager heard her famous "For those putzs who schmooze Russian in a
goddam lame way: drop by and listen to mine!"</Text>
<Text>If you lived in Odessa, you couldn't help but know my mom - she runs a popular educational
TV program for teenagers about Russian language.</Text>
</Random>
</QAUnit>
17. Предопределенные диалоги
<Request>
<Action>
<Text>Хотите узнать погоду на сегодня?</Text>
</Action>
<Variable name=”ask” type=”String”>weather_service</Variable>
</Request>
<QAUnit name=”replyAskWeatherYes” type=”REPLY”>
<Pattern>* да *</Pattern>
<Variable name=”ask” type=”String”>weather_service</Variable>
<Text>Сегодня будет солнечно</Text>
</QAUnit>
<QAUnit name=”replayAskWeatherNo” type=”REPLY”>
<Pattern>* нет *</Pattern>
<Variable name=”ask” type=”String”>weather_service</Variable>
<Text>Хорошо, не будем говорить о погоде.</Text>
</QAUnit>
18. Подключение к базе данных
Token 3
Token 2
Database
Token 4
Country Capital Population
Token 1 France Paris 50,000,000
Germany Berlin 60,000,000
Tree Matcher
..
Sentence: “<Token 1> <Token 2> <Token 3>”
Pattern: <Token 1> <Token 2> <Token 3>
Response: <text> <Token 3> <information>
19. Подключение к базе данных (продолжние)
1. Load tokens from the database.
<MultiToken name="dynCountries" type="DYNAMIC">
SELECT CountryPattern FROM Countries
</MultiToken>
2. Define the pattern.
<Pattern>* (#(qWhatBe) | #(qWhatAbout) |) * (capital|capitol) * (of|in|) #(dynCountries)
*</Pattern>
3.Extract the country name.
<Variable name="country"
type="String">=GetTokenByName[TRACE_VARIABLE,{dynCountries}]</Variable>
4. Retrieve the capital from the database.
<DataLookUp>
<Table>
<TableName>Countries</TableName>
<Record><Field>Capital</Field><Variable name="capital“ type="String"/></Record>
</Table>
<Where>Country = #(country)</Where>
</DataLookUp>
5. Generate response
<Text>Well, if you want it, the capital of #(country) is #(capital).</Text>
20. Logs
USER: what is a location of france
RESPONSE: Buy a map and hang it over your desk! France - country
in W Europe, on the Atlantic and the Mediterranean Sea.
USER: what is its population
RESPONSE: Well, according to the latest secret data approximately
54.3 mln live in France.
USER: is it greater than germany
RESPONSE: I'd say that Germany is smaller than France.
USER: what is a size of germany
RESPONSE: Well, if you want to conquier Germany, you'll have lots
of work - its square is about 356.8 thsd sq. km.
21. Eugene Goostman (продолжение)
Контроллер диалога:
- анализатор достижения цели
- регистратор событий, активирующих контроллер
цели
- планировщик достижения цели
- исполнитель достижения цели
22. Eugene Goostman (продолжение)
Контроллер диалога:
1. Цель – поддержание диалога
2. Методы достижения цели – поиск темы,
интересной пользователю
3. Событие для активирования цели – срабатывание
всех возможных ответов в QAUnit
4. Планировщик цели – определение какие темы
еще не обсуждались
5. Исполнитель – добавление предложения,
призывающее переключить тему
23. Функции управления диалогом
ALICE Façade ChatScript Eugene
Goostman
Извлечение
фактов из No Yes Yes No
диалога
Определение
No No Yes Yes
контекста
Переменные
Yes Yes Yes Yes
состояния
Предопределе
Yes No Yes Yes
нные диалоги
No No
No
Контроллер Can be Can be
Can be Yes
цели implemented implemented
implemented
with AIML with ChatScript
24. Заключение
Требования к качеству диалогов будут ужесточаться
по мере расширения применения чатботов
Основные функции управления диалогом:
Паттерн матчер
Использование онтологий, в том числе полученных в
результате диалога
Определение контекста диалога
Переменные состояния
Предопределенные диалоги
Контроллер достижения цели
Планы на будущее
Создание автоматического анализатора диалогов
25. Bot to Bot Chat
Elbot: Scientists at the University of Florida have built a robot that eats sugar. It
has a stomach that uses bacteria to transform the sugar into energy. Do you
think that's good?
Eugene: Machines should work. Humans should think. Not vice versa.
Elbot: They want to build an underwater robot that eats fish. I can see it now:
The poor robot wanders around on the bottom of the ocean eating up all the
deep-sea fish which have - up to now - escaped the human campaign to pollute
the ocean. They should fix the robot to eat the oil floating around in the ocean
instead!
Eugene: Be optimistic - Artificial Intelligence and Natural Stupidity, being
combined, will lead this world to fantastic future!
27. Источники
History of Washing Machines, http://venturebeat.com/2011/01/05/lg-says-
smart-web-connected-washing-machines-no-longer-a-dumb-idea/,
http://inventors.about.com/od/wstartinventions/a/washingmachines.htm
Web-connected washing machines: An idea that's not all wet?
http://venturebeat.com/2011/01/05/lg-says-smart-web-connected-washing-
machines-no-longer-a-dumb-idea/
http://bnn-news.com/self-drive-car-registered-usa-61097
ALICE Foundation http://www.alicebot.org
Façade http://www.interactivestory.net
ChatScript http://chatscript.sourceforge.net/
Bruce Wilcox, Beyond Façade: Pattern Matching for Natural Language
Applications,
http://www.gamasutra.com/view/feature/134675/beyond_fa%C3%A7a
de_pattern_matching_.php?print=1
Eugene Goostman, www.princetonai.com/bot