21
Организация диалога с чатботом Уласень С.Н., к.т.н.

Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Embed Size (px)

DESCRIPTION

Что будет рассмотрено: имитация диалога в простых конструкциях "вопрос-ответ" управление ходом диалога имитация реальной личности этапы разработки чатбота как тестируется база знаний как база знаний корректируется по результатам общения

Citation preview

Page 1: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Организация диалога с чатботом

Уласень С.Н., к.т.н.

Page 2: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Что такое чатбот

Чатбот - это компьютерная программа, которая общается с пользователем на естественном языке и имитирует человека

Page 3: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Возможности чатботаЧатбот “Евгений Густман”7 июня 2014 - на соревнованиях, организованных университетом Рединга в честь 60-й годовщины со дня смерти Алана Тьюринга, 33% судей после пятиминутного общения приняли чатбот “Eugene Goostman” за человека.

В соревновании принимали участие 5 чатботов и 30 судей. Каждый судья общался с каждым из 5 чатботов и c человеком.

Page 4: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Разпознование человекаВопрос: 299Ответ: Это что? Вывод: человек

Вопрос: 299Ответ: 10 Вывод: человек

Вопрос: 299Ответ: 66

Ну наконец-то, свой!

Page 5: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Этапы создания чатбота1. Создание базовой диалоговой системы

и базы знаний чатбота 2. Персонализация чатбота3. Непрерывное совершенствование:

улучшение - тестирование - исправление

Page 6: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Создание диалоговой системы● организация диалога в простых конструкциях

"вопрос-ответ"○ конструирование вопросов пользователя○ конструирование ответов чатбота

● учет темы разговора● конструирование мини-диалогов● управление диалогом

Page 7: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Диалоговая система: Конструирование вопросов пользователяПример 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>

Page 8: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Диалоговая система: Конструирование ответов чатботаПример 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>

Page 9: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Пример 5. Ответы с синонимами<QAUnit name="Hi_hello" >

<Pattern> #(hello) * </Pattern><Text>#(hello)! Nice to meet you!</Text>

</QAUnit>

Диалоговая система: Конструирование ответов чатбота-2Пример 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>

Page 10: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Диалоговая система: Учет темы диалога

Пример диалога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.

Page 11: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Диалоговая система: Учет темы диалога2. Вложенная конструкция

<QAUnit name="hi_how_are_you_good_1">

<Pattern>* I * (am (doing|feeling|) | feel) *</Pattern>

<Text>Yeah, it's lovely day!</Text>

<QAUnit .../>

<QAUnit .../>

</QAUnit>

1. Контекстная конструкция

<Theme name="How_are_you">

<QAUnit …. />

<QAUnit …. />

<QAUnit name="hi_how_are_you_good_1">

<Pattern>* I * (am (doing|feeling|) | feel) *</Pattern>

<ContextPattern>* #(aGood) *</ContextPattern>

<ContextPattern>* (no|not |not that) #(aBad) *</ContextPattern>

<Random>

<Text>Yeah, it's lovely day!</Text>

<Text>Nice to hear that! </Text>

</Random>

</QAUnit>

</Theme>

Page 12: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Диалоговая система: Управление диалогомУправление внутри мини-диалогов

Ответы с неявным изменением темы диалога<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. Контроллер запоминает время активации цели и реакцию пользователя.

Page 13: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Диалоговая система: Конструирование диалогов

● Определение списка тем, по которым будет общаться чатбот

● Составление мини-диалогов по темам● Анализ проведенных диалогов● Составление мини-диалогов для тем, которые не

удалось определить

Page 14: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Персонализация чатбота - создание виртуальной личности

● Выбор имени, возраста, пола, ...● Персонализация диалогов:

○ Разработка характера (шутливый, строгий, ...)

○ Разработка персональных тем (семья, хобби, привычки, домашние питомцы, школа/работа,...)

● Добавление контроллера эмоций● Создание визуального образа

Page 15: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

User: current date, plsBot: Today's date is ...

User: what is the date todayBot: Today is …

User: what is the capital of FinlandBot: Helsinki

User: what is the capital of FranceBot: Paris

Персонализация чатбота - создание виртуальной личности

User: current date, plsBot: Today's date is ..., if I remember it right.

User: what is the date todayBot: Do you think my name is Gregorian Calendar?;-)

User: what is the capital of FinlandBot: Possibly, Helsinki.

User: what is the capital of FranceBot: Every French fries know that French capital is Paris

Page 16: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Персонализация чатбота - примеры диалогов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.

Page 17: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

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.

Примеры диалогов

Page 18: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Совершенствование чатбота● Добавление препроцессора

○ коррекция ошибок○ нахождение синонимов○ определение повторяемых фраз○ выделение предложений○ нормализация текста

● Добавление контроллера эмоций○ определение эмоций пользователя○ формирование эмоций чатбота

● Анализ диалогов○ определение тем, которые робот не знает○ определение тем, которые робот знает, но они не сработали○ определение мини-диалогов для исправления

Page 19: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Тестирование чатбота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>

Page 20: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Заключение1. Системы, основанные только на правилах, могут обеспечить

успешное общение на уровне мини-диалогов2. Для обеспечения необходимого качества диалога надо совместно

использовать базу мини-диалогов, контроллеры и препроцессинг3. Персонализация чатбота очень важна для успешной коммуникации4. Создание чатбота носит итерационный характер. Должен быть

непрерывный процесс добавления новых диалогов, автоматического тестирования базы знаний, анализа состоявшихся диалогов с пользователями и улучшения диалогов

5. Необходимо искать пути для снижения трудоемкости разработки чатботов. Один и возможных вариантов - разделение базы знаний на мини-диалоги и контроллеры диалога

Page 21: Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на естественном языке"

Вопросы, ответы