Что будет рассмотрено:
имитация диалога в простых конструкциях "вопрос-ответ"
управление ходом диалога
имитация реальной личности
этапы разработки чатбота
как тестируется база знаний
как база знаний корректируется по результатам общения
2. Что такое чатбот
Чатбот - это компьютерная
программа, которая общается с
пользователем на естественном
языке и имитирует человека
3. Возможности чатбота
Чатбот “Евгений Густман”
7 июня 2014 - на соревнованиях, организованных
университетом Рединга в честь 60-й годовщины со дня
смерти Алана Тьюринга, 33% судей после пятиминутного
общения приняли чатбот “Eugene Goostman” за человека.
В соревновании принимали участие 5 чатботов и 30
судей.
Каждый судья общался с каждым из 5 чатботов и c
человеком.
4. Разпознование человека
Вопрос: 299
Ответ: Это что?
Вывод: человек
Вопрос: 299
Ответ: 10
Вывод: человек
Вопрос: 299
Ответ: 66
Ну наконец-то, свой!
5. Этапы создания чатбота
1. Создание базовой диалоговой системы
и базы знаний чатбота
2. Персонализация чатбота
3. Непрерывное совершенствование:
улучшение - тестирование -
исправление
6. Создание диалоговой системы
● организация диалога в простых конструкциях
"вопрос-ответ"
○ конструирование вопросов пользователя
○ конструирование ответов чатбота
● учет темы разговора
● конструирование мини-диалогов
● управление диалогом
7. Диалоговая система: Конструирование
вопросов пользователя
Пример 1: Простой шаблон с токеном
<QAUnit name="Hi_hello" >
<Pattern> (Hi|Hello) * </Pattern>
<Text>
Hi. I hope you'll enjoy our conversation!
</Text>
</QAUnit>
Пример 2: Шаблон с составным токеном
<MultiToken name="hello1" >(Hi|Hello)</MultiToken>
<MultiToken name="hello2" >(Privet|salute)</MultiToken>
<MultiToken name="hello" >(#(hello1)|#(hello2))
</MultiToken>
<QAUnit name="Hi_hello" >
<Pattern> #(hello) * </Pattern>
<Text>Hi. I hope you'll enjoy our conversation!</Text>
</QAUnit>
Пример 3: Анализ части фразы
<QAUnit name="Hi_hello" >
<Pattern> #(hello) * my name is * </Pattern>
<!-- extract user name … -->
<Text>Hi #(user_name)!</Text>
</QAUnit>
Пример 4: Анализ фразы с получением имени и пола
пользователя
<QAUnit name="Hi_hello" >
<Pattern> #(hello) * my name is #(MaleName) </Pattern>
<Text>You said #(user_name)? Nice to meet you, sir!</Text>
</QAUnit>
Пример 5: Несколько шаблонов
<QAUnit name="Hi_hello" >
<Pattern> (Hi|Hello) * </Pattern>
<Pattern> (Privet|Salut) * </Pattern>
…
</QAUnit>
8. Диалоговая система: Конструирование
ответов чатбота
Пример 1: Простой ответ
<QAUnit name="Hi_hello" >
<Pattern> (Hi|Hello) * </Pattern>
<Text> Hi. I hope you'll enjoy our conversation! </Text>
</QAUnit>
Пример 2: Несколько вариантов ответа
<QAUnit name="Hi_hello" >
<Pattern> #(hello) * </Pattern>
<Random>
<Text>Hi. I hope you'll enjoy our conversation!</Text>
<Text>Hello, I'm really glad to have the chance
to chat with you! </Text>
<Text>Howdy pal! Today is a kind of never-ending talk-show,
I'd say!</Text>
<Text>Salute! </Text>
</Random>
</QAUnit>
Пример 3: Несколько групп ответов
<QAUnit name="Hi_hello" >
<Pattern> #(hello) * </Pattern>
<If hi_was EQ “NO”>
<Random>
<Text>Nice to meet you! </Text>
<Text>Hi. I hope you'll enjoy our conversation!</Text>
</Random>
<Else>
<Random>
<Text>Hi again! I hope you enjoy greetings.</Text>
<Text>Hello again. I see you like greeting me.</Text>
<Text>Salute again!</Text>
</Random>
</If>
</QAUnit>
9. Диалоговая система: Конструирование
ответов чатбота-2
Пример 5. Ответы с синонимами
<QAUnit name="Hi_hello" >
<Pattern> #(hello) * </Pattern>
<Text>#(hello)! Nice to meet you!</Text>
</QAUnit>
Пример 4: Ответы с использованием полученной информации
<QAUnit name="Hi_hello" >
<Pattern> #(hello) * my name is #(MaleName) </Pattern>
<Text>You said #(user_name)? Nice to meet you, sir!</Text>
</QAUnit>
<QAUnit name="Encyclopedia" >
<Pattern>* #(qWhatAbout) (a|the|an|) #(dynEncyc) *</Pattern>
<Pattern>* (what|tell me | explain|understand) * meaning of * #(dynEncyc)
*</Pattern>
<Variable name="term" type="String">=lasttoken</Variable>
<!-- select definition from database… -->
<Random>
<Text>Ok, lets look up in my pocket encyclopedia. They say #(term) - #
(definition).</Text>
<Text>I remember it! #(definition)</Text>
</Random>
</QAUnit>
10. Диалоговая система: Учет темы диалога
Пример диалога
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 65 mln live
in France.
12. Диалоговая система: Управление диалогом
Управление внутри мини-диалогов
Ответы с неявным изменением темы диалога
<QAUnit name="Hi_hello" >
<Pattern> (Hi|Hello) * </Pattern>
<Text>Hello, I'm really glad to have the chance to chat with you!
My guinea pig Bill sends his regards too!</Text>
<Text>Salute! How are you doing? </Text>
<Text>Greetings! What would you like to talk about?</Text>
</QAUnit>
Ответы с явным изменением темы диалога
<QAUnit name="Hi_hello" >
<Pattern> #(hello) * my name is #(MaleName) </Pattern>
<Text>Nice to hear that! Do you like the weather?</Text>
<ChangeTheme>Weather</ChangeTheme>
</QAUnit>
Управление диалогом при помощи контроллера
целей
1. Контроллер определяет возможность или
необходимость изменения темы:
○ не распознана текущая тема диалога
○ разговор давно не велся на целевые темы
○ текущий контекст не находится ни в одном
из целевых диалогов
○ фраза пользователя не является
контекстной
2. Контроллер выбирает тему, на которую надо
переключиться.
3. Ответная фраза чатбота включает ответ из базы
знаний и фразу, полученную от контроллера
целей
4. Контроллер запоминает время активации цели и
реакцию пользователя.
13. Диалоговая система: Конструирование
диалогов
● Определение списка тем, по которым будет
общаться чатбот
● Составление мини-диалогов по темам
● Анализ проведенных диалогов
● Составление мини-диалогов для тем, которые не
удалось определить
14. Персонализация чатбота - создание
виртуальной личности
● Выбор имени, возраста, пола, ...
● Персонализация диалогов:
○ Разработка характера (шутливый, строгий, ...)
○ Разработка персональных тем (семья, хобби,
привычки, домашние питомцы, школа/работа,...)
● Добавление контроллера эмоций
● Создание визуального образа
15. Персонализация чатбота - создание
виртуальной личности
User: current date, pls
Bot: Today's date is ...
User: what is the date today
Bot: Today is …
User: what is the capital of Finland
Bot: Helsinki
User: what is the capital of France
Bot: Paris
User: current date, pls
Bot: Today's date is ..., if I remember it right.
User: what is the date today
Bot: Do you think my name is Gregorian Calendar?;-)
User: what is the capital of Finland
Bot: Possibly, Helsinki.
User: what is the capital of France
Bot: Every French fries know that French capital is Paris
16. Персонализация чатбота - примеры
диалогов
USER: test
RESPONSE: Be..be...beep! P..p..power-on self-test f..f..finished suck...
suck... suck... SUCCESSFULLY!
USER: What is the square root of a negative number?
RESPONSE: Sorry, I can't calculate myself, but my well-educated home-pet,
guinea pig, says he got an overflow trying to obtain the result :-(
USER: Blah blah blah blah blah blah
RESPONSE: Click-click-click! Khhhrrrrrrr!
USER: I want a girl
RESPONSE: You want too much, I'd say.
USER: find a girl
RESPONSE: My guinea pig is very concerned about your last words.
USER: i am very poor.
RESPONSE: Do you live in the street then, poor geezer?
USER: no, but i have no job.
RESPONSE: The fact that you have no job won't change my attitude to you.
USER: i do not care. I just tell you something about me, ok?
RESPONSE: Well, you don't know, you don't care. And even the fact that
crappy robots are going to capture the world, isn't your problem. OK then…
USER: Are you a freak?
RESPONSE: Bugger off, loser.
USER: Hahaha! Sorry i just had to test you.
RESPONSE: Beep-beep. Flash-flash. Self-testing is over.
17. 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 65 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.
USER: what is a currency of bahrain
RESPONSE: Do you want to rob their bank? Well, so you'll get lots of
dinars.
USER: what is a capital of this country
RESPONSE: If you've studied geography at school better, you would have known the
answer - Manama is a capital city in Bahrain.
USER: is it in the same region with panama
RESPONSE: I'm not sure about Bahrain and Panama, but I guess they belong to
different world regions.
USER: is panama far from paraguay
RESPONSE: I am not a map for you, but I should say both Panama and Paraguay
are South American countries so they should be close to each other.
USER: what countries in asia have population bigger than india
RESPONSE: China. Hope this settles down your inquisitive mind and sore brain.
Примеры диалогов
18. Совершенствование чатбота
● Добавление препроцессора
○ коррекция ошибок
○ нахождение синонимов
○ определение повторяемых фраз
○ выделение предложений
○ нормализация текста
● Добавление контроллера эмоций
○ определение эмоций пользователя
○ формирование эмоций чатбота
● Анализ диалогов
○ определение тем, которые робот не знает
○ определение тем, которые робот знает, но они не сработали
○ определение мини-диалогов для исправления
19. Тестирование чатбота
1. Простой тест
<TestSet>
<Input>
<Variable name="input_phrase">
Any hobbies worth talking about?
</Variable>
</Input>
<Output>
<Variable name="TEXT_MATCHER" value="AboutHobbies" />
</Output>
</TestSet>
2. Расширенный тест
<TestSet>
<Input>
<Variable name="input_phrase" >
Are you a girl or boy?
</Variable>
</Input>
<Output>
<Variable name="TEXT_MATCHER" value="Gender"/>
<Variable name="IS_REPEATED" value="No"/>
<Variable name="SPELLING" value="Correct"/>
</Output>
</TestSet>
20. Заключение
1. Системы, основанные только на правилах, могут обеспечить
успешное общение на уровне мини-диалогов
2. Для обеспечения необходимого качества диалога надо совместно
использовать базу мини-диалогов, контроллеры и препроцессинг
3. Персонализация чатбота очень важна для успешной коммуникации
4. Создание чатбота носит итерационный характер. Должен быть
непрерывный процесс добавления новых диалогов, автоматического
тестирования базы знаний, анализа состоявшихся диалогов с
пользователями и улучшения диалогов
5. Необходимо искать пути для снижения трудоемкости разработки
чатботов. Один и возможных вариантов - разделение базы знаний на
мини-диалоги и контроллеры диалога