SlideShare a Scribd company logo
1 of 27
Download to read offline
УПРАВЛЕНИЕ ДИАЛОГОМ
ЧАТБОТА
              Веселов В.В. к.т.н.
               Johnson & Johnson
Чатбот
•   В 1950-м году Алан Тьюринг в статье
    «Искусственный интеллект и вычислительные
    машины» предсказал, что к 2000-му году
    компьютеры смогут имитировать диалог человека,
    так, что средний собеседник не будет иметь
    больше 70% шансов правильного определения
    является ли собеседник компьютером или
    человеком после пяти минут диалога.
•   Чатбот – это компьютерная программа,
    использующая искуственный интеллект для
    общения с человеком на естественном языке и
    имитирующая человека.
Эволюция стиральных машин в сравнении с
 компьтерными технологиями

1797 г. – изобретена первая стиральная машина
1893 г. – производство стиральных машин компанией Maytag.
1949 г. – запатентована первая стиральная машина, управляемая
    перфокартой
1978 г. – начато производство стиральных машин с автоматическим
    управлением на микросхемах
2011 г. – компания LG начала производство стиральных машин и другой
    бытовой техники с подключением к интернету
2011 г. – компания Apple выпустила iPhone 4S с чатботом Siri
2011 г. – в штате Невада официально зарегистрирована первая
    роботизированная автомашина
? – создание бытовых и других устройств с диалоговыми системами на
    естественном языке
Таким образом, требования к качеству управления диалогом чатбота будут
    постоянно возрастать.
Сравнение чатботов
   ALICE
   Façade
   ChatScript
   Eugene Goostman
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
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>
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>
Façade (2005)

   Компьтерная игра с применением искуственного
    интеллекта
   Паттерн матчер находит не ответ, а определяет
    discourse act (диалоговое действие) – критика,
    флирт, согласие, несогласие и т.д.
   Использует Jess (экспертная система CLIPS на Java)
    Каждая фраза пользователя обрабатывается как
    факт и добавляется в базу знаний. После этого
    выполняются активированные правила и
    создаются новые факты.
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 в предложении
ChatScipt (2010)
   Использует упрощенный синтаксис для описания
    паттернов и правил
   Каноническая форма
   Автоматически распознает является ли фраза
    пользователя утверждением, вопросом, либо
    вопросом и утверждением
   Использует WordNet для построения паттернов.
    Использует онтологии WordNet.
   Встроенная база фактов
   Краткосрочные и долгосрочные переменные
ChatScipt (продолжение)
                     Упрощенный синтаксис:
s: ( I love meat ) Do you really?

s – sentence (утверждение), ? – question (вопрос), u – sentence
   and question (утверждение и вопрос)

(I love meat) – паттерн, срабатывающий на предложение
    содержащее I, love, meat в любом месте, но в указанном
    порядке
* I * love * meat *
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 )
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.
Eugene Goostman (2001)

   Паттерн матчер со сложными конструкциями.
   Интерпретатор логических и математических
    выражений
   Поддержка контекста темы
   Интеграция паттернов с базой данных для
    использования онтологий
   Конструктор диалогов
   Контроллер цели диалога
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>
Поддержка контекста
<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>
Предопределенные диалоги
<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>
Подключение к базе данных
                      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>
Подключение к базе данных (продолжние)

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>
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.
Eugene Goostman (продолжение)
Контроллер диалога:
- анализатор достижения цели

- регистратор событий, активирующих контроллер

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

- исполнитель достижения цели
Eugene Goostman (продолжение)
Контроллер диалога:
1. Цель – поддержание диалога
2. Методы достижения цели – поиск темы,
   интересной пользователю
3. Событие для активирования цели – срабатывание
   всех возможных ответов в QAUnit
4. Планировщик цели – определение какие темы
   еще не обсуждались
5. Исполнитель – добавление предложения,
   призывающее переключить тему
Функции управления диалогом
               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
Заключение
   Требования к качеству диалогов будут ужесточаться
    по мере расширения применения чатботов
   Основные функции управления диалогом:
     Паттерн матчер
     Использование онтологий, в том числе полученных в
      результате диалога
     Определение контекста диалога
     Переменные состояния
     Предопределенные диалоги
     Контроллер достижения цели
   Планы на будущее
       Создание автоматического анализатора диалогов
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!
Вопросы, ответы



         Спасибо!
Источники
   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

More Related Content

What's hot

Лекция 1. Начало.
Лекция 1. Начало.Лекция 1. Начало.
Лекция 1. Начало.Roman Brovko
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman Brovko
 
Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Roman Brovko
 
Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Roman Brovko
 
Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Roman Brovko
 
Devclub 01/2017 - (Не)адекватное Java-интервью
Devclub 01/2017 - (Не)адекватное Java-интервьюDevclub 01/2017 - (Не)адекватное Java-интервью
Devclub 01/2017 - (Не)адекватное Java-интервьюAnton Arhipov
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPython Meetup
 
Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.Roman Brovko
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.Roman Brovko
 
Лекция 6. Классы 1.
Лекция 6. Классы 1.Лекция 6. Классы 1.
Лекция 6. Классы 1.Roman Brovko
 
TechTrain 2019 - (Не)адекватное техническое интервью
TechTrain 2019 - (Не)адекватное техническое интервьюTechTrain 2019 - (Не)адекватное техническое интервью
TechTrain 2019 - (Не)адекватное техническое интервьюAnton Arhipov
 
Лекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GILЛекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GILRoman Brovko
 
0. основы r
0. основы r0. основы r
0. основы rmsuteam
 
Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Mikhail Kurnosov
 
Лекция 10. Классы 2.
Лекция 10. Классы 2.Лекция 10. Классы 2.
Лекция 10. Классы 2.Roman Brovko
 
ITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd Almaty
 

What's hot (20)

Лекция 1. Начало.
Лекция 1. Начало.Лекция 1. Начало.
Лекция 1. Начало.
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.
 
Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.
 
Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.
 
Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.
 
Devclub 01/2017 - (Не)адекватное Java-интервью
Devclub 01/2017 - (Не)адекватное Java-интервьюDevclub 01/2017 - (Не)адекватное Java-интервью
Devclub 01/2017 - (Не)адекватное Java-интервью
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
Лекция 6. Классы 1.
Лекция 6. Классы 1.Лекция 6. Классы 1.
Лекция 6. Классы 1.
 
Tomita 4марта
Tomita 4мартаTomita 4марта
Tomita 4марта
 
TechTrain 2019 - (Не)адекватное техническое интервью
TechTrain 2019 - (Не)адекватное техническое интервьюTechTrain 2019 - (Не)адекватное техническое интервью
TechTrain 2019 - (Не)адекватное техническое интервью
 
Лекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GILЛекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GIL
 
0. основы r
0. основы r0. основы r
0. основы r
 
Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)
 
Лекция 10. Классы 2.
Лекция 10. Классы 2.Лекция 10. Классы 2.
Лекция 10. Классы 2.
 
Tomita одесса
Tomita одессаTomita одесса
Tomita одесса
 
ITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd - Метапрограммирование
ITCrowd - Метапрограммирование
 

Viewers also liked

Platenbeurs
PlatenbeursPlatenbeurs
PlatenbeursCStefaan
 
電腦通訊的用途
電腦通訊的用途電腦通訊的用途
電腦通訊的用途angeldong
 
電腦通訊的用途2
電腦通訊的用途2電腦通訊的用途2
電腦通訊的用途2angeldong
 
Licenciatura en artes
Licenciatura en artesLicenciatura en artes
Licenciatura en artesJBONILLASA
 
Diseños de investigación
Diseños de investigaciónDiseños de investigación
Diseños de investigaciónAlbert AP
 
電腦通訊的用途(1)
電腦通訊的用途(1)電腦通訊的用途(1)
電腦通訊的用途(1)angeldong
 
SISTEM PERSAMAAN LINEAR SATU VARIABEL
SISTEM PERSAMAAN LINEAR SATU VARIABELSISTEM PERSAMAAN LINEAR SATU VARIABEL
SISTEM PERSAMAAN LINEAR SATU VARIABELAgung Fazrin
 
Amitosis dan Mitosis Cell Division
Amitosis dan Mitosis Cell DivisionAmitosis dan Mitosis Cell Division
Amitosis dan Mitosis Cell DivisionSutami Suparmin
 
Indian business
Indian businessIndian business
Indian businessSoprano1
 
Peluang Kerja Teknik Lingkungan
Peluang Kerja Teknik LingkunganPeluang Kerja Teknik Lingkungan
Peluang Kerja Teknik LingkunganSutami Suparmin
 
Soal Prediksi UN Biologi SMP Bimbel 4J Operation
Soal Prediksi UN Biologi SMP Bimbel 4J OperationSoal Prediksi UN Biologi SMP Bimbel 4J Operation
Soal Prediksi UN Biologi SMP Bimbel 4J OperationSutami Suparmin
 

Viewers also liked (16)

Moda teens1
Moda teens1Moda teens1
Moda teens1
 
Platenbeurs
PlatenbeursPlatenbeurs
Platenbeurs
 
電腦通訊的用途
電腦通訊的用途電腦通訊的用途
電腦通訊的用途
 
電腦通訊的用途2
電腦通訊的用途2電腦通訊的用途2
電腦通訊的用途2
 
Licenciatura en artes
Licenciatura en artesLicenciatura en artes
Licenciatura en artes
 
Narendra
NarendraNarendra
Narendra
 
Dobbins power point
Dobbins power pointDobbins power point
Dobbins power point
 
Diseños de investigación
Diseños de investigaciónDiseños de investigación
Diseños de investigación
 
電腦通訊的用途(1)
電腦通訊的用途(1)電腦通訊的用途(1)
電腦通訊的用途(1)
 
SISTEM PERSAMAAN LINEAR SATU VARIABEL
SISTEM PERSAMAAN LINEAR SATU VARIABELSISTEM PERSAMAAN LINEAR SATU VARIABEL
SISTEM PERSAMAAN LINEAR SATU VARIABEL
 
Amitosis dan Mitosis Cell Division
Amitosis dan Mitosis Cell DivisionAmitosis dan Mitosis Cell Division
Amitosis dan Mitosis Cell Division
 
Indian business
Indian businessIndian business
Indian business
 
Peluang Kerja Teknik Lingkungan
Peluang Kerja Teknik LingkunganPeluang Kerja Teknik Lingkungan
Peluang Kerja Teknik Lingkungan
 
Soal Prediksi UN Biologi SMP Bimbel 4J Operation
Soal Prediksi UN Biologi SMP Bimbel 4J OperationSoal Prediksi UN Biologi SMP Bimbel 4J Operation
Soal Prediksi UN Biologi SMP Bimbel 4J Operation
 
Hukum Ilmu Tajwid
Hukum Ilmu TajwidHukum Ilmu Tajwid
Hukum Ilmu Tajwid
 
VIEWLEX # 08
VIEWLEX # 08VIEWLEX # 08
VIEWLEX # 08
 

Similar to Chanbot

Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...AINL Conferences
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''DneprCiklumEvents
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''DneprCiklumEvents
 
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
 
RDSDataSource: Чистые тесты на Swift
RDSDataSource: Чистые тесты на SwiftRDSDataSource: Чистые тесты на Swift
RDSDataSource: Чистые тесты на SwiftRAMBLER&Co
 
Дмитрий Прокопцев — R-ссылки в С++11
Дмитрий Прокопцев — R-ссылки в С++11Дмитрий Прокопцев — R-ссылки в С++11
Дмитрий Прокопцев — R-ссылки в С++11Yandex
 
CSS глазами машин
CSS глазами машинCSS глазами машин
CSS глазами машинRoman Dvornov
 
Аспектно ориентированное программирование для Java автоматизаторов
Аспектно ориентированное программирование для Java автоматизаторовАспектно ориентированное программирование для Java автоматизаторов
Аспектно ориентированное программирование для Java автоматизаторовCOMAQA.BY
 
Игорь Лабутин «Коллекционируем данные в .NET»
Игорь Лабутин «Коллекционируем данные в .NET»Игорь Лабутин «Коллекционируем данные в .NET»
Игорь Лабутин «Коллекционируем данные в .NET»SpbDotNet Community
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?tfmailru
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Тестирование мультиязычного сервиса a la Russe
Тестирование мультиязычного сервиса a la RusseТестирование мультиязычного сервиса a la Russe
Тестирование мультиязычного сервиса a la RusseTatyana Pischasova
 
Тестирование мультиязычного веб-сервиса a la Russe
Тестирование мультиязычного веб-сервиса a la Russe Тестирование мультиязычного веб-сервиса a la Russe
Тестирование мультиязычного веб-сервиса a la Russe SQALab
 
Groovy presentation.
Groovy presentation.Groovy presentation.
Groovy presentation.Infinity
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 

Similar to Chanbot (20)

Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''
 
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
 
RDSDataSource: Чистые тесты на Swift
RDSDataSource: Чистые тесты на SwiftRDSDataSource: Чистые тесты на Swift
RDSDataSource: Чистые тесты на Swift
 
Agile theming with kalatheme & panopoly
Agile theming with kalatheme & panopolyAgile theming with kalatheme & panopoly
Agile theming with kalatheme & panopoly
 
Дмитрий Прокопцев — R-ссылки в С++11
Дмитрий Прокопцев — R-ссылки в С++11Дмитрий Прокопцев — R-ссылки в С++11
Дмитрий Прокопцев — R-ссылки в С++11
 
Template Toolkit – зло!?
Template Toolkit – зло!?Template Toolkit – зло!?
Template Toolkit – зло!?
 
TT
TTTT
TT
 
CSS глазами машин
CSS глазами машинCSS глазами машин
CSS глазами машин
 
Аспектно ориентированное программирование для Java автоматизаторов
Аспектно ориентированное программирование для Java автоматизаторовАспектно ориентированное программирование для Java автоматизаторов
Аспектно ориентированное программирование для Java автоматизаторов
 
Игорь Лабутин «Коллекционируем данные в .NET»
Игорь Лабутин «Коллекционируем данные в .NET»Игорь Лабутин «Коллекционируем данные в .NET»
Игорь Лабутин «Коллекционируем данные в .NET»
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Тестирование мультиязычного сервиса a la Russe
Тестирование мультиязычного сервиса a la RusseТестирование мультиязычного сервиса a la Russe
Тестирование мультиязычного сервиса a la Russe
 
Тестирование мультиязычного веб-сервиса a la Russe
Тестирование мультиязычного веб-сервиса a la Russe Тестирование мультиязычного веб-сервиса a la Russe
Тестирование мультиязычного веб-сервиса a la Russe
 
Groovy presentation.
Groovy presentation.Groovy presentation.
Groovy presentation.
 
5793.ppt
5793.ppt5793.ppt
5793.ppt
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 

Chanbot

  • 1. УПРАВЛЕНИЕ ДИАЛОГОМ ЧАТБОТА Веселов В.В. к.т.н. Johnson & Johnson
  • 2. Чатбот • В 1950-м году Алан Тьюринг в статье «Искусственный интеллект и вычислительные машины» предсказал, что к 2000-му году компьютеры смогут имитировать диалог человека, так, что средний собеседник не будет иметь больше 70% шансов правильного определения является ли собеседник компьютером или человеком после пяти минут диалога. • Чатбот – это компьютерная программа, использующая искуственный интеллект для общения с человеком на естественном языке и имитирующая человека.
  • 3. Эволюция стиральных машин в сравнении с компьтерными технологиями 1797 г. – изобретена первая стиральная машина 1893 г. – производство стиральных машин компанией Maytag. 1949 г. – запатентована первая стиральная машина, управляемая перфокартой 1978 г. – начато производство стиральных машин с автоматическим управлением на микросхемах 2011 г. – компания LG начала производство стиральных машин и другой бытовой техники с подключением к интернету 2011 г. – компания Apple выпустила iPhone 4S с чатботом Siri 2011 г. – в штате Невада официально зарегистрирована первая роботизированная автомашина ? – создание бытовых и других устройств с диалоговыми системами на естественном языке Таким образом, требования к качеству управления диалогом чатбота будут постоянно возрастать.
  • 4. Сравнение чатботов  ALICE  Façade  ChatScript  Eugene Goostman
  • 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!
  • 26. Вопросы, ответы Спасибо!
  • 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