веселов

27
УПРАВЛЕНИЕ ДИАЛОГОМ ЧАТБОТА Веселов В.В. к.т.н. Johnson & Johnson

description

Выступление Владимира Веселова на AINL

Transcript of веселов

Page 1: веселов

УПРАВЛЕНИЕ ДИАЛОГОМ ЧАТБОТА

Веселов В.В. к.т.н.Johnson & Johnson

Page 2: веселов

Чатбот

• В 1950-м году Алан Тьюринг в статье «Искусственный интеллект и вычислительные машины» предсказал, что к 2000-му году компьютеры смогут имитировать диалог человека, так, что средний собеседник не будет иметь больше 70% шансов правильного определения является ли собеседник компьютером или человеком после пяти минут диалога.

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

Page 3: веселов

Эволюция стиральных машин в сравнении с компьтерными технологиями

1797 г. – изобретена первая стиральная машина1893 г. – производство стиральных машин компанией Maytag.1949 г. – запатентована первая стиральная машина, управляемая

перфокартой1978 г. – начато производство стиральных машин с автоматическим

управлением на микросхемах2011 г. – компания LG начала производство стиральных машин и другой

бытовой техники с подключением к интернету2011 г. – компания Apple выпустила iPhone 4S с чатботом Siri2011 г. – в штате Невада официально зарегистрирована первая

роботизированная автомашина ? – создание бытовых и других устройств с диалоговыми системами на

естественном языкеТаким образом, требования к качеству управления диалогом чатбота будут

постоянно возрастать.

Page 4: веселов

Сравнение чатботов

ALICE Façade ChatScript Eugene Goostman

Page 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

Page 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>

Page 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>

Page 8: веселов

Façade (2005)

Компьтерная игра с применением искуственного интеллекта

Паттерн матчер находит не ответ, а определяет discourse act (диалоговое действие) – критика, флирт, согласие, несогласие и т.д.

Использует Jess (экспертная система CLIPS на Java)

Каждая фраза пользователя обрабатывается как факт и добавляется в базу знаний. После этого выполняются активированные правила и создаются новые факты.

Page 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 в предложении

Page 10: веселов

ChatScipt (2010)

Использует упрощенный синтаксис для описания паттернов и правил

Каноническая форма Автоматически распознает является ли фраза

пользователя утверждением, вопросом, либо вопросом и утверждением

Использует WordNet для построения паттернов. Использует онтологии WordNet.

Встроенная база фактов Краткосрочные и долгосрочные переменные

Page 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 *

Page 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 )

Page 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.

Page 14: веселов

Eugene Goostman (2001)

Паттерн матчер со сложными конструкциями. Интерпретатор логических и математических

выражений Поддержка контекста темы Интеграция паттернов с базой данных для

использования онтологий Конструктор диалогов Контроллер цели диалога

Page 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>

Page 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>

Page 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>

Page 18: веселов

Подключение к базе данных

Token 1

Token 2

Token 3

Sentence: “<Token 1> <Token 2> <Token 3>”

Pattern: <Token 1> <Token 2> <Token 3>

Response: <text> <Token 3> <information>

Token 4

Country Capital Population

France Paris 50,000,000

Germany Berlin 60,000,000

..

Database

Tree Matcher

Page 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>

Page 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.

Page 21: веселов

Eugene Goostman (продолжение)

Контроллер диалога:- анализатор достижения цели- регистратор событий, активирующих контроллер

цели- планировщик достижения цели- исполнитель достижения цели

Page 22: веселов

Eugene Goostman (продолжение)

Контроллер диалога:1. Цель – поддержание диалога2. Методы достижения цели – поиск темы,

интересной пользователю3. Событие для активирования цели – срабатывание

всех возможных ответов в QAUnit4. Планировщик цели – определение какие темы еще

не обсуждались5. Исполнитель – добавление предложения,

призывающее переключить тему

Page 23: веселов

Функции управления диалогом

ALICE Façade ChatScript Eugene Goostman

Извлечение фактов из диалога

No Yes Yes No

Определение контекста No No Yes Yes

Переменные состояния Yes Yes Yes Yes

Предопределенные диалоги

Yes No Yes Yes

Контроллер цели

NoCan be

implemented with AIML

NoCan be

implemented

NoCan be

implemented with

ChatScript

Yes

Page 24: веселов

Заключение

Требования к качеству диалогов будут ужесточаться по мере расширения применения чатботов

Основные функции управления диалогом: Паттерн матчер Использование онтологий, в том числе полученных в

результате диалога Определение контекста диалога Переменные состояния Предопределенные диалоги Контроллер достижения цели

Планы на будущее Создание автоматического анализатора диалогов

Page 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!

Page 26: веселов

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

Спасибо!

Page 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%A7ade_pattern_matching_.php?print=1

Eugene Goostman, www.princetonai.com/bot