SlideShare una empresa de Scribd logo
1 de 52
Взаимодействие робота и
человека
автор: Веселов В.В., к.т.н
Skolkovo Robotics International Conference
March 20-22, 2015
Методы взаимодействия робота и
человека
• речь
• текст
• звуковые сигналы
• световые сигналы
• жесты
Чатбот, виртуальный собеседник
это компьютерная программа, которая создана для имитации
речевого поведения человека при общении с одним или
несколькими пользователями
https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82
%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B
9_%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%
B4%D0%BD%D0%B8%D0%BA
План
• Известные чатботы
• Элиза
• Алиса
• Rose
• Cleverbot
• HeX
• Fred
• Eugene Goostman
• Построение русскоговорящего чатбота
• архитектура
• поиск ответа
• обработка контекста
• диалоги
• планировщик
Модель чатбота
Текст (вопрос) Текст (ответ, действие)
Чатбот
Модель програмиста
Програмист
Текст (емейл, задание,
документ)
Текст (код, решение)
Кофе Сарказм (побочный продукт)
Алан Мэтисон Тьюринг (1912-1954)
Тест Тьюринга
"I believe that in about fifty years' time it will be
possible, to programme computers, with a storage
capacity of about 10^9, to make them play the imitation
game so well that an average interrogator will not have
more than 70 per cent chance of making the right
identification after five minutes of questioning."
Turing, A.M. (1950). Computing machinery and
intelligence. Mind, 59, 433-460.
Loebner Prize
http://www.loebner.net/Prizef/loebner-prize.html
Eliza
• автор - Джозеф Вейзенбаум (1923-
2008)
Eliza: Hello, I am Eliza.
I am afraid.
Eliza: How long have you been afraid.
Since midterms.
Eliza: Tell me more...
User: I am afraid that I will fail my course.
Do you enjoy being afraid that you will fail your course?
Eliza (source)
["* i remember *", [
• "Do you often think of (2) ?",
• "Does thinking of (2) bring anything else to mind ?",
• "What else do you recollect ?",
• "Why do you remember (2) just now ?",
• "What in the present situation reminds you of (2) ?",
• "What is the connection between me and (2) ?",
• "What else does (2) remind you of ?"
• ]
https://github.com/isaacs/node-eliza/blob/master/elizabot.js
ALICE
• автор: Richard S. Wallace
• http://www.alicebot.org/downloads/programs.htm
l
Пандоработс
Rosette (ChatScript)
автор: Брюс Уилкокс
http://chatscript.sourceforge.net/D
ocumentation/ChatScript_Tutorial
.pdf
http://sourceforge.net/projects/ch
atscript/files/
Cleverbot/ Jabberwacky
• автор: Роло Карпентер
• статистический алгоритм
• "самообучение"
FRED
• автор: Робби Гарнер
HeX
• автор: Джейсон Хатченс
• https://github.com/jasonhutchens/megahal - самообучающийся
чатбот
• Как пройти Тест Тьюринга с помощью обмана
http://www.nyu.edu/gsas/dept/philo/courses/mindsandmachine
s/Papers/hutchens96how.pdf
Elbot
• автор: Фред Робертс
Eugene Goostman 2001
• http://princetonai.com
Команда Густмана сегодня (слева направо):
И. Быковских, С. Уласень, В.Веселов, А. Адащик
Eugene Goostman
• User: hi
• Eugene: Hi. I hope you'll enjoy our conversation!
• User: I hope so
• Eugene: My hopes also! Let's continue. And I forgot to ask you wher you are from...
• User: I am from Spain
• Eugene: Spain? Hope it's a good place to live.
• User: Yes it is
• Eugene: I am glad you agreed. Some another topic?
• User: There are the best climate of the world
• Eugene: And yes, do you make a secret of your name? I still don't know it!
• User: My name is Orio!
• Eugene: Orio? I don't really kown such a name, but OK - Let's be friends!
• User: It's not an English name
• Eugene: No? Well, it is up to you … Could you tell me about your job, but the way?
• User: I am studing at university
Создаем своего чатбота
Учим робота говорить
Архитектура
Препроцессор Процессор Постпроцессор
Память
Структура базы знаний
Знания о
собеседнике
Общие знания:
Энциклопедия
Определения
География
Политика
Литература
Биология
Физика
Цитатник
...
Знания о себе
Имя
Откуда
Семья
Диалоги
Приветствие
Прощание
Что ты любишь?
Решатели
Какого цвета?
Сколько будет?
Планировщик,
управление беседой
Ответы по
умолчанию
Специализированные
знания, сервисы
Пре-процессор
• Коррекция ошибок
1. Создаем таблицу замены
извени=извини
пирвет=привет
2. Разбиваем текст на слова
3. Проверяем есть ли слово в таблице автозамены
4. Делаем замену
5. Генерим фразу
• Проверка наличия смысла
1. Создаем словарь
2. Разбиваем на слова
3. Проверям есть ли слово в словаре
4. Если слова нет, оцениваем близость к словарным словам с такой же длиной
• Исправление ошибок - лучше не надо
Аналитический и синтетический языки
A hunter saw a bear - Охотник увидел медведя
A bear saw a hunter - Медведь увидел охотника
A bear hunter saw - охотник на медведей увидел ...
A hunter bear saw - медведь-охотник увидел ...
Охотник увидел медведя
Охотник медведя увидел
Увидел медведя охотник
Увидел охотник медведя
Медведя охотник увидел
Медведя увидел охотник
Процессор. Поиск ответа
1. Регулярные выражения
* (привет|как дела) *
2. Lexer
3. Поиск по словам
Поиск по словам
Структура данных
Правило 0: {
Входы : [ "я хотел бы купить билеты", "мне нужен авиа билет”,”где купить билеты?”],
Ответ : ["куда вы хотите лететь?“]
},
Правило 1: {
Входы : [ "где моя посылка?“],
Ответ : ["у вас есть номер заказа?“]
} ,
Правило 2: [
Входы : [ "где ближайший банкомат?“],
Ответ : [“где вы сейчас находитесь?”]
}
Правило 3: {
Входы : [ “default“],
Ответ : [“я вас не совсем понял, давайте лучше поговорим о погоде”]
}
Поиск ответа
Структура данных
Правило 0: {
Входы : [ "я хотел бы купить билеты", "мне нужен авиа билет”,”где
купить билеты?”],
Ответ : ["куда вы хотите лететь?“]
},
Правило 1: {
Входы : [ "где моя посылка?“],
Ответ : ["у вас есть номер заказа?“]
} ,
Правило 2: [
Входы : [ "где ближайший банкомат?“],
Ответ : [“где вы сейчас находитесь?”]
}
Правило 3: {
Входы : [ “default“],
Ответ : [“я вас не совсем понял, давайте лучше поговорим о
погоде”]
}
купить
билет
где
посылка
билеты
банкомат
Правило 0, вход 0 Правило 0, вход 2
Правило 0, вход 1
Правило 0, вход 0 Правило 0, вход 2
Правило 1, вход 0 Правило 2, вход 0
Правило 1, вход 0
Правило 2, вход 0
default Правило 3, вход 0
Поиск ответа
купить
билет
где
посылка
билеты
банкомат
Правило 0, вход 0 Правило 0, вход 2
Правило 0, вход 1
Правило 0, вход 0 Правило 0, вход 2
Правило 1, вход 0 Правило 2, вход 0
Правило 1, вход 0
Правило 2, вход 0
Вес слова = 1 / количество входов
Пример:
Где мне найти банкомат?
Расчет весов:
Правило 1, вход 0 = 1 / 2 = 0.5
Правило 2, вход 0 = 1 / 2 + 1 = 1.5
Ответ - где вы сейчас находитесь?
default Правило 3, вход 0 Правило 2: [
Входы : [ "где ближайший банкомат?“],
Ответ : [“где вы сейчас находитесь?”]
}
Процессор. Матчер
Текст (вопрос) Текст (ответ)
Матчер
Обработка контекста
• Как определить что / кого означают местоимения – он, она, оно,
это?
- Где ты живешь?
- В Москве
- Это большой город?
- ?
Обработка контекста
Правило 0: {
Входы : [“ты откуда?”],
Ответы : ["я из Москвы“],
Действие: function {
chatbot.context = “Москва”;
}
},
Правило 1: {
Входы : [ “какое население Москвы?“,”Москва
большой город?”],
Контекстные Входы : [это большой город?“,
“население”],
Контекст: “Москва”,
Ответ : [“Население Москвы составляет около 12,5
миллионов человек по данным 2014 года“]
}
Общий матчер
Контекстный
матчер
Москва
Контекстный
матчер
Семья
Контекстный
матчер
Друг Петя
- Ты откуда?
- Я из Москвы
chatbot.context = “Москва”
- Это большой город?
- Население Москвы составляет около 12,5
миллионов человек по данным 2014 года
Диалоги Купить
авиа
билеты?
Смена
темы
Куда?
Когда?
Сколько
билетов?
Нет Да
Ответ получен, аэропорт
назначения не распознан
Передумал
Ответ получен, аэропорт
назначения распознан
Ответ получен, дата
распознана
Ответ получен, дата не
распознана
Передумал
Ответ получен,
количество
пассажиров
известно
Заказ
билета
Ответ получен, количество
пассажиров неизвестно
Передумал
Программируем диалог
Общий матчер
Контекстный
матчер
Москва
Контекстный
матчер
Семья
Контекстный
матчер
Друг Петя
Диалоговый
матчер 1
Диалоговый
матчер 2
Диалоговый
матчер N
1. Если находимся в режиме диалога, делаем поиск соответствующим диалоговым
матчером
2. Если контекст задан, то ищем в контекстном матчере
3. Если не нашли – тогда используем общий матчер
4. Default
Программируем диалог
Правило 0: {
Входы : [“Хочу в отпуск”],
Ответы : [«Хотите заказать билет на
самолет?“],
Действие: function {
chatbot.dialogueId = “КупитьБилетыДаНет”;
}
}
Правило 1: {
Входы : [ “да“,”купить”],
dialogueId: “КупитьБилетыДаНет”,
Ответ : [“Где хотите отдохнуть?“]
Действие: function {
chatbot.dialogueId = “КупитьБилетыКуда”;
}
}
Правило 2: {
Входы : [ “нет“,”не сейчас”],
dialogueId: “КупитьБилетыДаНет”,
Ответ : [“Может книжку почитать?“]
}
Извлечение данных из фразы
chatbot.question = “меня зовут Джон”;
var myRegexp = /меня зовут (.*)/g;
var match = myRegexp.exec(chatbot.question);
chatbot.memory.username = match[1];
chatbot.response = "Привет " + chatbot.memory.username + "!";
Куда лететь?
var chatbot = new Object();
сhatbot.memory = new Object();
chatbot.question = "хочу полететь в Санкт Петербург";
var desitinationRegex = /.* в (Москву|Одессу|Нью Йорк|Санкт Петербург)/g;
var match = desitinationRegex.exec(chatbot.question);
chatbot.memory.airTicket_destination= match[1];
chatbot.response = "Когда вы хотите лететь в " + chatbot.memory.airTicket_destination + "?";
Человек: хочу полететь в Санкт Петербург
Чатбот: Когда вы хотите лететь в Санкт Петербург?
Куда лететь?
var Правило3 = {
Входы : [ "хочу лететь в","Москву","Одессу","Нью Йорк",
"Санкт Петербург" , “default”],
dialogueId: "КупитьБилетыКуда",
Действие: function () {
var destinationRegex =
/.* в (Москву|Одессу|Нью Йорк|Санкт Петербург)/g;
var match = destinationRegex.exec(chatbot.question);
if (match != null) {
chatbot.memory.airTicket_destination= match[1];
chatbot.response = "Когда вы хотите лететь в " +
chatbot.memory.airTicket_destination + "?";
chatbot.dialogueId = "КупитьБилетыКогда";
} else {
chatbot.dialogueId = "КупитьБилетыКуда";
chatbot.response = "Не совсем вас понял. Уточните куда вы хотите лететь.";
}
}
}
Человек: хочу полететь в Санкт Петербург
Чатбот: Когда вы хотите лететь в Санкт Петербург?
Классы, объекты, онтологии, таксономии
Класс: Млекопитающее
Количество ног: не больше четырех
Класс: Собака Класс: Кошка
Чатботы работающие на онтологиях:
ChatSript
Evi
Siri
Что больше, кто быстрее?
• Кто быстрее - кролик или черепаха?
• Что больше – яблоко или дыня?
Класс Размер, м Сокрость, км/ч Вес, кг
Кролик 0.3 20 2
Черепаха 0.2 0.07 0.5
Яблоко 0.1 0 0.1
Дыня 0.6 0 2
Что больше, кто быстрее?
Человек: что больше яблоко или дыня
Робот: яблоко меньше чем дыня
Человек: кто быстрее кролик или
черепаха
Робот: кролик быстрее чем черепаха
Человек: кто быстрее кролик или волк
Робот: не знаю
MyClass.prototype = {
compareTo: function(compareWith, propertyName) {
if (compareWith instanceof MyClass) {
if (this[propertyName] >
compareWith[propertyName]) {
return 1;
} else if (this[propertyName] <
compareWith[propertyName]) {
return -1;
}
return 0;
}
}
}
var database = new Object;
database["кролик"]=new MyClass("кролик",0.3,20,2);
database["черепаха"]=new
MyClass("черепаха",0.2,0.07,0.5);
database["яблоко"]=new MyClass("яблоко",0.1,0,0.1);
database["дыня"]=new MyClass("дыня",0.6,0,2);
Используем подход Элизы
chatbot.question = “я думаю об искусстве”;
var myRegexp = / я думаю об (.*)/g;
var match = myRegexp.exec(chatbot.question);
chatbot.memory.think_about = match[1];
chatbot.response = “Мне не интересно что ты
думаешь о “ +
chatbot.memory.think_about;
Сколько будет дважды два?
1. Заменяем числительные
expression = expression.replace(/дважды/g, '2 *');
expression = expression.replace(/трижды/g, '3 *');
…
expression = expression.replace(/один/g, '1');
expression = expression.replace(/два/g, '2');
…
expression = expression.replace(/умножить/g, '*');
expression = expression.replace(/прибавить/g, '+');
…
2. Фильтруем, оставляем цифры и операции
3. Пробуем вычислить
Сколько будет дважды два?
Вопрос: привет
Ответ: Не могу посчитать
Вопрос: сколько будет дважды два?
Ответ: 2*2 = 4
Вопрос: два плюс три умножить на два?
Ответ: 2+3*2 = 8
Какой сегодня день?
var weekday = new Array(7);
weekday[0] = "воскресенье";
weekday[1]= "понедельник";
weekday[2] = "вторник";
weekday[3] = "среда";
weekday[4] = "четверг";
weekday[5] = "пятница";
weekday[6] = "суббота";
var whatIsTheDayTodayExp = /.*какой сегодня
день(|?).*/g;
function whichDayToday() {
var match = whatIsTheDayTodayExp.test(question);
if (match) {
var today = new Date();
var weekdayToday = weekday[today.getDay()];
return new Response(70, “Сегодня – “ +
weekdayToday);
}
return 0;
}
function Response(score, response) {
this.score = score;
this.response = response;
}
Постпроцессор
Эмоции
1. Создаем правила для эмоций по словам, выражениям, знакам
препинания, смайликам
2. Анализируем ответ чатбота с помощью матчера
3. Если необходимо, анализируем фразу пользователя
4. Меням изображение (либо махаем руками, моргаем, мигаем
лампочками)
5. Можно использовать динамическую функцию:
X(n) = X (n-1) * w, 0<=w<1
Планировщик
Событие:
Ответ не найден
Раз в день
Случайно, но не чаще
чем раз в 5 минут
Действие:
Предложить тему разговора
Рассказать новость
Рассказать шутку
Поинтересоваться планами
Напомнить о планах на сегодня
Планировщик
Сменить
тему
Поэзия
Пушкин Лермонтов
Профессия
Интересно
ли быть?
Тестирование
• Ручные тесты обычно никто не выполняет (максимум 1-2 раза)
• Тестирование – ответственность программиста, в первую
очередь, а не тестировщика
• Тесты должны быть автоматизированы
Средства тестирования -
• JUnut
• Cucumber
• Selenium
• JMeter
Анализ логов
• Оценка качества беседы
• Создаем обучащий набор данных
• Создаем проверочный набор данных
• Создаем модель
• Проверяем на проверочном наборе
• Исправляем модель, если необходимо
• Периодическая проверка модели
• Методы
• Principal Component Analysis, Partial Least Square
• Neural Networks
• Bayesian Networks
• Правила
Заключение
• Что мы узнали?
• Чему научились?
• Линк на примеры:
• https://github.com/goostmangroup/pushkin
• https://github.com/vladimirveselov/howtobuild_chatbot_examples
• Линк на курс: https://www.kursoteka.ru/course/716
• Нужно ли организовать тест Тьюринга в России для
русскоговорящих роботов?
Демо - Пушкин
Вопросы?

Más contenido relacionado

Similar a [Skolkovo Robotics 2015 Day 2] Владимир Веселов Bot and humans "Взаимодействие робота и человека"

Alfa Future People 2016 - Как «воспитать» из плохого бота хорошего помощника
Alfa Future People 2016 - Как «воспитать» из плохого бота хорошего помощникаAlfa Future People 2016 - Как «воспитать» из плохого бота хорошего помощника
Alfa Future People 2016 - Как «воспитать» из плохого бота хорошего помощникаMicrosoft
 
[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо
[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо
[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна ЛандоNLPseminar
 
Почему оно не находится! / Андрей Аксенов (Sphinx)
Почему оно не находится! / Андрей Аксенов (Sphinx)Почему оно не находится! / Андрей Аксенов (Sphinx)
Почему оно не находится! / Андрей Аксенов (Sphinx)Ontico
 
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Sergey Tihon
 
Про качественный поиск (Андрей Аксенов)
Про качественный поиск (Андрей Аксенов)Про качественный поиск (Андрей Аксенов)
Про качественный поиск (Андрей Аксенов)Ontico
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java DeveloperOlexandra Dmytrenko
 
Пери Инновации - Боты машинное обучение и искусственный интеллект
Пери Инновации - Боты машинное обучение и искусственный интеллектПери Инновации - Боты машинное обучение и искусственный интеллект
Пери Инновации - Боты машинное обучение и искусственный интеллектMicrosoft
 
Methods for building dialog agents and the technologies we used
Methods for building dialog agents and the technologies we used Methods for building dialog agents and the technologies we used
Methods for building dialog agents and the technologies we used Grid Dynamics
 
Software engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияSoftware engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияPavel Egorov
 
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...AINL Conferences
 
Про качественный поиск
Про качественный поискПро качественный поиск
Про качественный поискAndrew Aksyonoff
 
Project Robotester
Project RobotesterProject Robotester
Project Robotesterbromozel
 
скIm2 занятие 2 - seo, семантика
скIm2   занятие 2 - seo, семантикаскIm2   занятие 2 - seo, семантика
скIm2 занятие 2 - seo, семантикаIvan Pronko
 
Мастер-класс Сандлер наносемантикс
Мастер-класс Сандлер наносемантиксМастер-класс Сандлер наносемантикс
Мастер-класс Сандлер наносемантиксBank-Bot
 
как вырастить и воспитать чатбота для дела а. власова, лаборатория наносемантика
как вырастить и воспитать чатбота для дела а. власова, лаборатория наносемантикакак вырастить и воспитать чатбота для дела а. власова, лаборатория наносемантика
как вырастить и воспитать чатбота для дела а. власова, лаборатория наносемантикаSkolkovo Robotics Center
 
как вырастить и воспитать чатбота для дела
как вырастить и воспитать чатбота для делакак вырастить и воспитать чатбота для дела
как вырастить и воспитать чатбота для делаSkolkovo Robotics Center
 
Blackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийBlackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийbeched
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кодаКирилл Борисов
 
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...Ontico
 

Similar a [Skolkovo Robotics 2015 Day 2] Владимир Веселов Bot and humans "Взаимодействие робота и человека" (20)

Alfa Future People 2016 - Как «воспитать» из плохого бота хорошего помощника
Alfa Future People 2016 - Как «воспитать» из плохого бота хорошего помощникаAlfa Future People 2016 - Как «воспитать» из плохого бота хорошего помощника
Alfa Future People 2016 - Как «воспитать» из плохого бота хорошего помощника
 
[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо
[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо
[ИТ-лекторий ФКН ВШЭ]: Диалоговые системы. Татьяна Ландо
 
Почему оно не находится! / Андрей Аксенов (Sphinx)
Почему оно не находится! / Андрей Аксенов (Sphinx)Почему оно не находится! / Андрей Аксенов (Sphinx)
Почему оно не находится! / Андрей Аксенов (Sphinx)
 
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
 
Про качественный поиск (Андрей Аксенов)
Про качественный поиск (Андрей Аксенов)Про качественный поиск (Андрей Аксенов)
Про качественный поиск (Андрей Аксенов)
 
Белоус Екатерина
Белоус ЕкатеринаБелоус Екатерина
Белоус Екатерина
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java Developer
 
Пери Инновации - Боты машинное обучение и искусственный интеллект
Пери Инновации - Боты машинное обучение и искусственный интеллектПери Инновации - Боты машинное обучение и искусственный интеллект
Пери Инновации - Боты машинное обучение и искусственный интеллект
 
Methods for building dialog agents and the technologies we used
Methods for building dialog agents and the technologies we used Methods for building dialog agents and the technologies we used
Methods for building dialog agents and the technologies we used
 
Software engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияSoftware engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требования
 
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
Сергей Уласень (Eugene Goostman) "Организация диалога в системе общения на ес...
 
Про качественный поиск
Про качественный поискПро качественный поиск
Про качественный поиск
 
Project Robotester
Project RobotesterProject Robotester
Project Robotester
 
скIm2 занятие 2 - seo, семантика
скIm2   занятие 2 - seo, семантикаскIm2   занятие 2 - seo, семантика
скIm2 занятие 2 - seo, семантика
 
Мастер-класс Сандлер наносемантикс
Мастер-класс Сандлер наносемантиксМастер-класс Сандлер наносемантикс
Мастер-класс Сандлер наносемантикс
 
как вырастить и воспитать чатбота для дела а. власова, лаборатория наносемантика
как вырастить и воспитать чатбота для дела а. власова, лаборатория наносемантикакак вырастить и воспитать чатбота для дела а. власова, лаборатория наносемантика
как вырастить и воспитать чатбота для дела а. власова, лаборатория наносемантика
 
как вырастить и воспитать чатбота для дела
как вырастить и воспитать чатбота для делакак вырастить и воспитать чатбота для дела
как вырастить и воспитать чатбота для дела
 
Blackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийBlackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложений
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кода
 
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
Как мы админа увольняли, или тонкости организации корпоративной безопасности ...
 

Más de Skolkovo Robotics Center

возможности и барьеры &quot;разговорного&quot; интеллекта а. сандлер, лаборат...
возможности и барьеры &quot;разговорного&quot; интеллекта а. сандлер, лаборат...возможности и барьеры &quot;разговорного&quot; интеллекта а. сандлер, лаборат...
возможности и барьеры &quot;разговорного&quot; интеллекта а. сандлер, лаборат...Skolkovo Robotics Center
 
когнитивные технологии, Ibm
когнитивные технологии, Ibmкогнитивные технологии, Ibm
когнитивные технологии, IbmSkolkovo Robotics Center
 
влияние искусственного интеллекта на пользовательский опыт г. калугина, Yota
влияние искусственного интеллекта на пользовательский опыт  г. калугина, Yotaвлияние искусственного интеллекта на пользовательский опыт  г. калугина, Yota
влияние искусственного интеллекта на пользовательский опыт г. калугина, YotaSkolkovo Robotics Center
 
Искусственный интеллект и пользовательский опыт
Искусственный интеллект и пользовательский опытИскусственный интеллект и пользовательский опыт
Искусственный интеллект и пользовательский опытSkolkovo Robotics Center
 
состояние и перспективы машинного интеллекта с. шумский, нейронет
состояние и перспективы машинного интеллекта с. шумский, нейронетсостояние и перспективы машинного интеллекта с. шумский, нейронет
состояние и перспективы машинного интеллекта с. шумский, нейронетSkolkovo Robotics Center
 
искусственный интеллект в каждый дом – как новые технологии помогают достиг...
искусственный интеллект в каждый дом – как новые технологии помогают достиг...искусственный интеллект в каждый дом – как новые технологии помогают достиг...
искусственный интеллект в каждый дом – как новые технологии помогают достиг...Skolkovo Robotics Center
 
[Skolkovo Robotics V] Современное состояние и перспективы развития технологий...
[Skolkovo Robotics V] Современное состояние и перспективы развития технологий...[Skolkovo Robotics V] Современное состояние и перспективы развития технологий...
[Skolkovo Robotics V] Современное состояние и перспективы развития технологий...Skolkovo Robotics Center
 
[Skolkovo Robotics V] Autonomous driving: context and technical challenges of...
[Skolkovo Robotics V] Autonomous driving: context and technical challenges of...[Skolkovo Robotics V] Autonomous driving: context and technical challenges of...
[Skolkovo Robotics V] Autonomous driving: context and technical challenges of...Skolkovo Robotics Center
 
[Skolkovo Robotics V] Анализ задач и решений модульной, роевой и облачной роб...
[Skolkovo Robotics V] Анализ задач и решений модульной, роевой и облачной роб...[Skolkovo Robotics V] Анализ задач и решений модульной, роевой и облачной роб...
[Skolkovo Robotics V] Анализ задач и решений модульной, роевой и облачной роб...Skolkovo Robotics Center
 
[Skolkovo Robotics V] Facial Expression Recognition in the Wild
[Skolkovo Robotics V] Facial Expression Recognition in the Wild[Skolkovo Robotics V] Facial Expression Recognition in the Wild
[Skolkovo Robotics V] Facial Expression Recognition in the WildSkolkovo Robotics Center
 
[Skolkovo Robotics V] Application of AI in Healthcare
[Skolkovo Robotics V] Application of AI in Healthcare[Skolkovo Robotics V] Application of AI in Healthcare
[Skolkovo Robotics V] Application of AI in HealthcareSkolkovo Robotics Center
 
[Skolkovo Robotics V] Боевые роботы: угрозы учтенные или непредвиденные
[Skolkovo Robotics V] Боевые роботы: угрозы учтенные или непредвиденные[Skolkovo Robotics V] Боевые роботы: угрозы учтенные или непредвиденные
[Skolkovo Robotics V] Боевые роботы: угрозы учтенные или непредвиденныеSkolkovo Robotics Center
 
[Skolkovo Robotics V] Перспективы и ограничения использования бас на немецком...
[Skolkovo Robotics V] Перспективы и ограничения использования бас на немецком...[Skolkovo Robotics V] Перспективы и ограничения использования бас на немецком...
[Skolkovo Robotics V] Перспективы и ограничения использования бас на немецком...Skolkovo Robotics Center
 
[Skolkovo Robotics V] Race for AI: What do VCs expect from AI startups?
[Skolkovo Robotics V] Race for AI:  What do VCs expect from AI startups?[Skolkovo Robotics V] Race for AI:  What do VCs expect from AI startups?
[Skolkovo Robotics V] Race for AI: What do VCs expect from AI startups?Skolkovo Robotics Center
 
[Skolkovo Robotics V] Applying Anthropomorphic Robots Technology
[Skolkovo Robotics V] Applying Anthropomorphic Robots Technology[Skolkovo Robotics V] Applying Anthropomorphic Robots Technology
[Skolkovo Robotics V] Applying Anthropomorphic Robots TechnologySkolkovo Robotics Center
 
[Skolkovo Robotics V] Assistive Market: HERCULE Project
[Skolkovo Robotics V] Assistive Market: HERCULE Project[Skolkovo Robotics V] Assistive Market: HERCULE Project
[Skolkovo Robotics V] Assistive Market: HERCULE ProjectSkolkovo Robotics Center
 
[Skolkovo Robotics V] Collaborative Robots: Research, Technologies and Applic...
[Skolkovo Robotics V] Collaborative Robots: Research, Technologies and Applic...[Skolkovo Robotics V] Collaborative Robots: Research, Technologies and Applic...
[Skolkovo Robotics V] Collaborative Robots: Research, Technologies and Applic...Skolkovo Robotics Center
 
[Skolkovo Robotics V] Overview of the Modern Robotics Market
[Skolkovo Robotics V] Overview of the Modern Robotics Market[Skolkovo Robotics V] Overview of the Modern Robotics Market
[Skolkovo Robotics V] Overview of the Modern Robotics MarketSkolkovo Robotics Center
 
Финальная версия программы Skolkovo Robotics V
Финальная версия программы Skolkovo Robotics VФинальная версия программы Skolkovo Robotics V
Финальная версия программы Skolkovo Robotics VSkolkovo Robotics Center
 

Más de Skolkovo Robotics Center (20)

возможности и барьеры &quot;разговорного&quot; интеллекта а. сандлер, лаборат...
возможности и барьеры &quot;разговорного&quot; интеллекта а. сандлер, лаборат...возможности и барьеры &quot;разговорного&quot; интеллекта а. сандлер, лаборат...
возможности и барьеры &quot;разговорного&quot; интеллекта а. сандлер, лаборат...
 
когнитивные технологии, Ibm
когнитивные технологии, Ibmкогнитивные технологии, Ibm
когнитивные технологии, Ibm
 
влияние искусственного интеллекта на пользовательский опыт г. калугина, Yota
влияние искусственного интеллекта на пользовательский опыт  г. калугина, Yotaвлияние искусственного интеллекта на пользовательский опыт  г. калугина, Yota
влияние искусственного интеллекта на пользовательский опыт г. калугина, Yota
 
Искусственный интеллект и пользовательский опыт
Искусственный интеллект и пользовательский опытИскусственный интеллект и пользовательский опыт
Искусственный интеллект и пользовательский опыт
 
состояние и перспективы машинного интеллекта с. шумский, нейронет
состояние и перспективы машинного интеллекта с. шумский, нейронетсостояние и перспективы машинного интеллекта с. шумский, нейронет
состояние и перспективы машинного интеллекта с. шумский, нейронет
 
искусственный интеллект в каждый дом – как новые технологии помогают достиг...
искусственный интеллект в каждый дом – как новые технологии помогают достиг...искусственный интеллект в каждый дом – как новые технологии помогают достиг...
искусственный интеллект в каждый дом – как новые технологии помогают достиг...
 
[Skolkovo Robotics V] Современное состояние и перспективы развития технологий...
[Skolkovo Robotics V] Современное состояние и перспективы развития технологий...[Skolkovo Robotics V] Современное состояние и перспективы развития технологий...
[Skolkovo Robotics V] Современное состояние и перспективы развития технологий...
 
[Skolkovo Robotics V] Autonomous driving: context and technical challenges of...
[Skolkovo Robotics V] Autonomous driving: context and technical challenges of...[Skolkovo Robotics V] Autonomous driving: context and technical challenges of...
[Skolkovo Robotics V] Autonomous driving: context and technical challenges of...
 
[Skolkovo Robotics V] Анализ задач и решений модульной, роевой и облачной роб...
[Skolkovo Robotics V] Анализ задач и решений модульной, роевой и облачной роб...[Skolkovo Robotics V] Анализ задач и решений модульной, роевой и облачной роб...
[Skolkovo Robotics V] Анализ задач и решений модульной, роевой и облачной роб...
 
[Skolkovo Robotics V] Facial Expression Recognition in the Wild
[Skolkovo Robotics V] Facial Expression Recognition in the Wild[Skolkovo Robotics V] Facial Expression Recognition in the Wild
[Skolkovo Robotics V] Facial Expression Recognition in the Wild
 
[Skolkovo Robotics V] Application of AI in Healthcare
[Skolkovo Robotics V] Application of AI in Healthcare[Skolkovo Robotics V] Application of AI in Healthcare
[Skolkovo Robotics V] Application of AI in Healthcare
 
[Skolkovo Robotics V] Боевые роботы: угрозы учтенные или непредвиденные
[Skolkovo Robotics V] Боевые роботы: угрозы учтенные или непредвиденные[Skolkovo Robotics V] Боевые роботы: угрозы учтенные или непредвиденные
[Skolkovo Robotics V] Боевые роботы: угрозы учтенные или непредвиденные
 
[Skolkovo Robotics V] Перспективы и ограничения использования бас на немецком...
[Skolkovo Robotics V] Перспективы и ограничения использования бас на немецком...[Skolkovo Robotics V] Перспективы и ограничения использования бас на немецком...
[Skolkovo Robotics V] Перспективы и ограничения использования бас на немецком...
 
[Skolkovo Robotics V] Race for AI: What do VCs expect from AI startups?
[Skolkovo Robotics V] Race for AI:  What do VCs expect from AI startups?[Skolkovo Robotics V] Race for AI:  What do VCs expect from AI startups?
[Skolkovo Robotics V] Race for AI: What do VCs expect from AI startups?
 
[Skolkovo Robotics V] Robotics in Korea
[Skolkovo Robotics V] Robotics in Korea[Skolkovo Robotics V] Robotics in Korea
[Skolkovo Robotics V] Robotics in Korea
 
[Skolkovo Robotics V] Applying Anthropomorphic Robots Technology
[Skolkovo Robotics V] Applying Anthropomorphic Robots Technology[Skolkovo Robotics V] Applying Anthropomorphic Robots Technology
[Skolkovo Robotics V] Applying Anthropomorphic Robots Technology
 
[Skolkovo Robotics V] Assistive Market: HERCULE Project
[Skolkovo Robotics V] Assistive Market: HERCULE Project[Skolkovo Robotics V] Assistive Market: HERCULE Project
[Skolkovo Robotics V] Assistive Market: HERCULE Project
 
[Skolkovo Robotics V] Collaborative Robots: Research, Technologies and Applic...
[Skolkovo Robotics V] Collaborative Robots: Research, Technologies and Applic...[Skolkovo Robotics V] Collaborative Robots: Research, Technologies and Applic...
[Skolkovo Robotics V] Collaborative Robots: Research, Technologies and Applic...
 
[Skolkovo Robotics V] Overview of the Modern Robotics Market
[Skolkovo Robotics V] Overview of the Modern Robotics Market[Skolkovo Robotics V] Overview of the Modern Robotics Market
[Skolkovo Robotics V] Overview of the Modern Robotics Market
 
Финальная версия программы Skolkovo Robotics V
Финальная версия программы Skolkovo Robotics VФинальная версия программы Skolkovo Robotics V
Финальная версия программы Skolkovo Robotics V
 

[Skolkovo Robotics 2015 Day 2] Владимир Веселов Bot and humans "Взаимодействие робота и человека"

  • 1. Взаимодействие робота и человека автор: Веселов В.В., к.т.н Skolkovo Robotics International Conference March 20-22, 2015
  • 2. Методы взаимодействия робота и человека • речь • текст • звуковые сигналы • световые сигналы • жесты
  • 3. Чатбот, виртуальный собеседник это компьютерная программа, которая создана для имитации речевого поведения человека при общении с одним или несколькими пользователями https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82 %D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B 9_%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0% B4%D0%BD%D0%B8%D0%BA
  • 4. План • Известные чатботы • Элиза • Алиса • Rose • Cleverbot • HeX • Fred • Eugene Goostman • Построение русскоговорящего чатбота • архитектура • поиск ответа • обработка контекста • диалоги • планировщик
  • 5. Модель чатбота Текст (вопрос) Текст (ответ, действие) Чатбот
  • 6. Модель програмиста Програмист Текст (емейл, задание, документ) Текст (код, решение) Кофе Сарказм (побочный продукт)
  • 8. Тест Тьюринга "I believe that in about fifty years' time it will be possible, to programme computers, with a storage capacity of about 10^9, to make them play the imitation game so well that an average interrogator will not have more than 70 per cent chance of making the right identification after five minutes of questioning." Turing, A.M. (1950). Computing machinery and intelligence. Mind, 59, 433-460.
  • 10. Eliza • автор - Джозеф Вейзенбаум (1923- 2008) Eliza: Hello, I am Eliza. I am afraid. Eliza: How long have you been afraid. Since midterms. Eliza: Tell me more... User: I am afraid that I will fail my course. Do you enjoy being afraid that you will fail your course?
  • 11. Eliza (source) ["* i remember *", [ • "Do you often think of (2) ?", • "Does thinking of (2) bring anything else to mind ?", • "What else do you recollect ?", • "Why do you remember (2) just now ?", • "What in the present situation reminds you of (2) ?", • "What is the connection between me and (2) ?", • "What else does (2) remind you of ?" • ] https://github.com/isaacs/node-eliza/blob/master/elizabot.js
  • 12. ALICE • автор: Richard S. Wallace • http://www.alicebot.org/downloads/programs.htm l
  • 14. Rosette (ChatScript) автор: Брюс Уилкокс http://chatscript.sourceforge.net/D ocumentation/ChatScript_Tutorial .pdf http://sourceforge.net/projects/ch atscript/files/
  • 15. Cleverbot/ Jabberwacky • автор: Роло Карпентер • статистический алгоритм • "самообучение"
  • 17. HeX • автор: Джейсон Хатченс • https://github.com/jasonhutchens/megahal - самообучающийся чатбот • Как пройти Тест Тьюринга с помощью обмана http://www.nyu.edu/gsas/dept/philo/courses/mindsandmachine s/Papers/hutchens96how.pdf
  • 19. Eugene Goostman 2001 • http://princetonai.com Команда Густмана сегодня (слева направо): И. Быковских, С. Уласень, В.Веселов, А. Адащик
  • 20. Eugene Goostman • User: hi • Eugene: Hi. I hope you'll enjoy our conversation! • User: I hope so • Eugene: My hopes also! Let's continue. And I forgot to ask you wher you are from... • User: I am from Spain • Eugene: Spain? Hope it's a good place to live. • User: Yes it is • Eugene: I am glad you agreed. Some another topic? • User: There are the best climate of the world • Eugene: And yes, do you make a secret of your name? I still don't know it! • User: My name is Orio! • Eugene: Orio? I don't really kown such a name, but OK - Let's be friends! • User: It's not an English name • Eugene: No? Well, it is up to you … Could you tell me about your job, but the way? • User: I am studing at university
  • 23. Структура базы знаний Знания о собеседнике Общие знания: Энциклопедия Определения География Политика Литература Биология Физика Цитатник ... Знания о себе Имя Откуда Семья Диалоги Приветствие Прощание Что ты любишь? Решатели Какого цвета? Сколько будет? Планировщик, управление беседой Ответы по умолчанию Специализированные знания, сервисы
  • 24. Пре-процессор • Коррекция ошибок 1. Создаем таблицу замены извени=извини пирвет=привет 2. Разбиваем текст на слова 3. Проверяем есть ли слово в таблице автозамены 4. Делаем замену 5. Генерим фразу • Проверка наличия смысла 1. Создаем словарь 2. Разбиваем на слова 3. Проверям есть ли слово в словаре 4. Если слова нет, оцениваем близость к словарным словам с такой же длиной • Исправление ошибок - лучше не надо
  • 25. Аналитический и синтетический языки A hunter saw a bear - Охотник увидел медведя A bear saw a hunter - Медведь увидел охотника A bear hunter saw - охотник на медведей увидел ... A hunter bear saw - медведь-охотник увидел ... Охотник увидел медведя Охотник медведя увидел Увидел медведя охотник Увидел охотник медведя Медведя охотник увидел Медведя увидел охотник
  • 26. Процессор. Поиск ответа 1. Регулярные выражения * (привет|как дела) * 2. Lexer 3. Поиск по словам
  • 27. Поиск по словам Структура данных Правило 0: { Входы : [ "я хотел бы купить билеты", "мне нужен авиа билет”,”где купить билеты?”], Ответ : ["куда вы хотите лететь?“] }, Правило 1: { Входы : [ "где моя посылка?“], Ответ : ["у вас есть номер заказа?“] } , Правило 2: [ Входы : [ "где ближайший банкомат?“], Ответ : [“где вы сейчас находитесь?”] } Правило 3: { Входы : [ “default“], Ответ : [“я вас не совсем понял, давайте лучше поговорим о погоде”] }
  • 28. Поиск ответа Структура данных Правило 0: { Входы : [ "я хотел бы купить билеты", "мне нужен авиа билет”,”где купить билеты?”], Ответ : ["куда вы хотите лететь?“] }, Правило 1: { Входы : [ "где моя посылка?“], Ответ : ["у вас есть номер заказа?“] } , Правило 2: [ Входы : [ "где ближайший банкомат?“], Ответ : [“где вы сейчас находитесь?”] } Правило 3: { Входы : [ “default“], Ответ : [“я вас не совсем понял, давайте лучше поговорим о погоде”] } купить билет где посылка билеты банкомат Правило 0, вход 0 Правило 0, вход 2 Правило 0, вход 1 Правило 0, вход 0 Правило 0, вход 2 Правило 1, вход 0 Правило 2, вход 0 Правило 1, вход 0 Правило 2, вход 0 default Правило 3, вход 0
  • 29. Поиск ответа купить билет где посылка билеты банкомат Правило 0, вход 0 Правило 0, вход 2 Правило 0, вход 1 Правило 0, вход 0 Правило 0, вход 2 Правило 1, вход 0 Правило 2, вход 0 Правило 1, вход 0 Правило 2, вход 0 Вес слова = 1 / количество входов Пример: Где мне найти банкомат? Расчет весов: Правило 1, вход 0 = 1 / 2 = 0.5 Правило 2, вход 0 = 1 / 2 + 1 = 1.5 Ответ - где вы сейчас находитесь? default Правило 3, вход 0 Правило 2: [ Входы : [ "где ближайший банкомат?“], Ответ : [“где вы сейчас находитесь?”] }
  • 30. Процессор. Матчер Текст (вопрос) Текст (ответ) Матчер
  • 31. Обработка контекста • Как определить что / кого означают местоимения – он, она, оно, это? - Где ты живешь? - В Москве - Это большой город? - ?
  • 32. Обработка контекста Правило 0: { Входы : [“ты откуда?”], Ответы : ["я из Москвы“], Действие: function { chatbot.context = “Москва”; } }, Правило 1: { Входы : [ “какое население Москвы?“,”Москва большой город?”], Контекстные Входы : [это большой город?“, “население”], Контекст: “Москва”, Ответ : [“Население Москвы составляет около 12,5 миллионов человек по данным 2014 года“] } Общий матчер Контекстный матчер Москва Контекстный матчер Семья Контекстный матчер Друг Петя - Ты откуда? - Я из Москвы chatbot.context = “Москва” - Это большой город? - Население Москвы составляет около 12,5 миллионов человек по данным 2014 года
  • 33. Диалоги Купить авиа билеты? Смена темы Куда? Когда? Сколько билетов? Нет Да Ответ получен, аэропорт назначения не распознан Передумал Ответ получен, аэропорт назначения распознан Ответ получен, дата распознана Ответ получен, дата не распознана Передумал Ответ получен, количество пассажиров известно Заказ билета Ответ получен, количество пассажиров неизвестно Передумал
  • 34. Программируем диалог Общий матчер Контекстный матчер Москва Контекстный матчер Семья Контекстный матчер Друг Петя Диалоговый матчер 1 Диалоговый матчер 2 Диалоговый матчер N 1. Если находимся в режиме диалога, делаем поиск соответствующим диалоговым матчером 2. Если контекст задан, то ищем в контекстном матчере 3. Если не нашли – тогда используем общий матчер 4. Default
  • 35. Программируем диалог Правило 0: { Входы : [“Хочу в отпуск”], Ответы : [«Хотите заказать билет на самолет?“], Действие: function { chatbot.dialogueId = “КупитьБилетыДаНет”; } } Правило 1: { Входы : [ “да“,”купить”], dialogueId: “КупитьБилетыДаНет”, Ответ : [“Где хотите отдохнуть?“] Действие: function { chatbot.dialogueId = “КупитьБилетыКуда”; } } Правило 2: { Входы : [ “нет“,”не сейчас”], dialogueId: “КупитьБилетыДаНет”, Ответ : [“Может книжку почитать?“] }
  • 36. Извлечение данных из фразы chatbot.question = “меня зовут Джон”; var myRegexp = /меня зовут (.*)/g; var match = myRegexp.exec(chatbot.question); chatbot.memory.username = match[1]; chatbot.response = "Привет " + chatbot.memory.username + "!";
  • 37. Куда лететь? var chatbot = new Object(); сhatbot.memory = new Object(); chatbot.question = "хочу полететь в Санкт Петербург"; var desitinationRegex = /.* в (Москву|Одессу|Нью Йорк|Санкт Петербург)/g; var match = desitinationRegex.exec(chatbot.question); chatbot.memory.airTicket_destination= match[1]; chatbot.response = "Когда вы хотите лететь в " + chatbot.memory.airTicket_destination + "?"; Человек: хочу полететь в Санкт Петербург Чатбот: Когда вы хотите лететь в Санкт Петербург?
  • 38. Куда лететь? var Правило3 = { Входы : [ "хочу лететь в","Москву","Одессу","Нью Йорк", "Санкт Петербург" , “default”], dialogueId: "КупитьБилетыКуда", Действие: function () { var destinationRegex = /.* в (Москву|Одессу|Нью Йорк|Санкт Петербург)/g; var match = destinationRegex.exec(chatbot.question); if (match != null) { chatbot.memory.airTicket_destination= match[1]; chatbot.response = "Когда вы хотите лететь в " + chatbot.memory.airTicket_destination + "?"; chatbot.dialogueId = "КупитьБилетыКогда"; } else { chatbot.dialogueId = "КупитьБилетыКуда"; chatbot.response = "Не совсем вас понял. Уточните куда вы хотите лететь."; } } } Человек: хочу полететь в Санкт Петербург Чатбот: Когда вы хотите лететь в Санкт Петербург?
  • 39. Классы, объекты, онтологии, таксономии Класс: Млекопитающее Количество ног: не больше четырех Класс: Собака Класс: Кошка Чатботы работающие на онтологиях: ChatSript Evi Siri
  • 40. Что больше, кто быстрее? • Кто быстрее - кролик или черепаха? • Что больше – яблоко или дыня? Класс Размер, м Сокрость, км/ч Вес, кг Кролик 0.3 20 2 Черепаха 0.2 0.07 0.5 Яблоко 0.1 0 0.1 Дыня 0.6 0 2
  • 41. Что больше, кто быстрее? Человек: что больше яблоко или дыня Робот: яблоко меньше чем дыня Человек: кто быстрее кролик или черепаха Робот: кролик быстрее чем черепаха Человек: кто быстрее кролик или волк Робот: не знаю MyClass.prototype = { compareTo: function(compareWith, propertyName) { if (compareWith instanceof MyClass) { if (this[propertyName] > compareWith[propertyName]) { return 1; } else if (this[propertyName] < compareWith[propertyName]) { return -1; } return 0; } } } var database = new Object; database["кролик"]=new MyClass("кролик",0.3,20,2); database["черепаха"]=new MyClass("черепаха",0.2,0.07,0.5); database["яблоко"]=new MyClass("яблоко",0.1,0,0.1); database["дыня"]=new MyClass("дыня",0.6,0,2);
  • 42. Используем подход Элизы chatbot.question = “я думаю об искусстве”; var myRegexp = / я думаю об (.*)/g; var match = myRegexp.exec(chatbot.question); chatbot.memory.think_about = match[1]; chatbot.response = “Мне не интересно что ты думаешь о “ + chatbot.memory.think_about;
  • 43. Сколько будет дважды два? 1. Заменяем числительные expression = expression.replace(/дважды/g, '2 *'); expression = expression.replace(/трижды/g, '3 *'); … expression = expression.replace(/один/g, '1'); expression = expression.replace(/два/g, '2'); … expression = expression.replace(/умножить/g, '*'); expression = expression.replace(/прибавить/g, '+'); … 2. Фильтруем, оставляем цифры и операции 3. Пробуем вычислить Сколько будет дважды два? Вопрос: привет Ответ: Не могу посчитать Вопрос: сколько будет дважды два? Ответ: 2*2 = 4 Вопрос: два плюс три умножить на два? Ответ: 2+3*2 = 8
  • 44. Какой сегодня день? var weekday = new Array(7); weekday[0] = "воскресенье"; weekday[1]= "понедельник"; weekday[2] = "вторник"; weekday[3] = "среда"; weekday[4] = "четверг"; weekday[5] = "пятница"; weekday[6] = "суббота"; var whatIsTheDayTodayExp = /.*какой сегодня день(|?).*/g; function whichDayToday() { var match = whatIsTheDayTodayExp.test(question); if (match) { var today = new Date(); var weekdayToday = weekday[today.getDay()]; return new Response(70, “Сегодня – “ + weekdayToday); } return 0; } function Response(score, response) { this.score = score; this.response = response; }
  • 45. Постпроцессор Эмоции 1. Создаем правила для эмоций по словам, выражениям, знакам препинания, смайликам 2. Анализируем ответ чатбота с помощью матчера 3. Если необходимо, анализируем фразу пользователя 4. Меням изображение (либо махаем руками, моргаем, мигаем лампочками) 5. Можно использовать динамическую функцию: X(n) = X (n-1) * w, 0<=w<1
  • 46. Планировщик Событие: Ответ не найден Раз в день Случайно, но не чаще чем раз в 5 минут Действие: Предложить тему разговора Рассказать новость Рассказать шутку Поинтересоваться планами Напомнить о планах на сегодня
  • 48. Тестирование • Ручные тесты обычно никто не выполняет (максимум 1-2 раза) • Тестирование – ответственность программиста, в первую очередь, а не тестировщика • Тесты должны быть автоматизированы Средства тестирования - • JUnut • Cucumber • Selenium • JMeter
  • 49. Анализ логов • Оценка качества беседы • Создаем обучащий набор данных • Создаем проверочный набор данных • Создаем модель • Проверяем на проверочном наборе • Исправляем модель, если необходимо • Периодическая проверка модели • Методы • Principal Component Analysis, Partial Least Square • Neural Networks • Bayesian Networks • Правила
  • 50. Заключение • Что мы узнали? • Чему научились? • Линк на примеры: • https://github.com/goostmangroup/pushkin • https://github.com/vladimirveselov/howtobuild_chatbot_examples • Линк на курс: https://www.kursoteka.ru/course/716 • Нужно ли организовать тест Тьюринга в России для русскоговорящих роботов?

Notas del editor

  1. Здравствуйте. Добро пожаловать на участие в мастер классе "Взаимодействие робота и человека" Меня зовут Владимир Веселов, я являюсь одним из создателей чатбота Евгений Густман который в 2014 году прошел тест Тьюринга. Немного о себе - закончил Военный инженерно-космический институт им. А.Ф. Можайского, служил на Байконуре на УКСС. Поступил в адъюнктуру уже в академию Можайского, защитил кандидатскую диссертацию. Работал научным сотрудником, преподавателем, программистом. Сейчас работаю инженером-программистом в компании Амазон. В плане науки - занимался различными применениями нейронных сетей, машинного обучения, поисковой оптимизации. Роботы - мое хобби.
  2. Тема нашего мастер класса - Взаимодействие робота и человека. Эта тема может включать в себя различные методы взаимодействия - речь, контакт, передача сигналов на расстоянии. В рамках данного мастеркласса мы рассмотрим аспекты речевого взаимодействия причем распознавание голоса и синтез речи мы рассматривать не будет. Только текстовые сообщения.
  3. Говорящий робот без тела называется чатботом. Поэтому сегодня мы будем упоминать в основном чатботов.
  4. Сначала я расскажу об известных чатботах, мы обсудим их разновидности. Потом перейдем к практическим вопросам создания диалоговой системы и конкретным алгоритмам. По некоторым вопросам я подготовил код на джаваскрипте, который вы сможете потом скачать с github и использовать без ограничений в том числе и для коммерческих приложений – Apache Open Source License.
  5. Общая модель чатбота представлена на слайде. В принципе она очень похожа на модель человека. Для сравнения приведу модель инженера-программиста.
  6. Как видно отличия небольшие. На входе также потребляется кофе, на выходе побочный подукт в виде сарказма.
  7. Проведем небольшой исторический обзор. Для начала вспомним знаменитую статью известного британского математика Алана Тьюринга, написанную в 1950-м году – Computing Machinery and Intelligence. В то время были горячие дискуссии на тему может ли машина думать. Алан Тьюринг сказал что машина думать не может, но может имитировать человека в процессе общения.
  8. В статье он также сделал предположение что к 2000-му году компьютеры настолько хорошо смогут имитировать человека что у среднего собеседника будет не более 70% шансов правильного распознавания - человек или компьютер после 5 минут диалога. То есть, чтобы пройти тест Тьюринга нужно чтобы более 30-ти процентов собеседников приняли программу за человека. Так был определен всеми известный тест Тьюринга, который конечно же доказывает именно возможность имитации человека, но никак ни касается напрямую вопроса оценки мыслительной способности машины. Тьюринг обосновал это тем, что за пять минут беседы с человеком о нем можно узнать все. А 70% - показывает что событие статистически значимо. В статье кстати описывается несколько практических рекомендаций о там как осуществить прохождение теста Тьюринга.
  9. В 1990-м году нью-йоркский миллионер Хью Лобнер решил проверить сбылось ли предсказание Тьюринга. Хью кстати является доктором философии в компьютерных науках, занимался искусственным интеллектом, и сам умеет программировать. Хью решил конечно что тест Тьюринга устарел, и решил его организовать по-своему. Вместо 5-минут - 15. В финале было 10 собеседников (8 чатботов и 2 конфедерата) и 10 судей. После 10-ти раундов, судью ранжировали собеседников по похожести на человека. Правилиа меняются. Сейчас в финале 4 чатбота, 4 судьи, и 4 раунда. Правила постноянно меняются. Да была 5 минутная отметка Тьюринга после которой судья говорил является ли собеседник роботом или компьютером. По началу тема беседы была предопределенной. Потом решили не ограничивать диалоги конкретной темой. С точки зрения практического использования, способность имитировать человека не особо интересна. Разве что для развлечений. Но приз Лобнера сыграл очень важную роль в популяризации чатботов. Каждый может написать свою программу и принять участие в этих соревнованиях. Не нужно иметь диплом, степень, принадлежность к учебному заведению или корпорации. Победители и большинство диалогов с приза Лобнера выложены на сайте Лобнера и доступны всем. Каждый может использовать диалоги с предыдущих конкурсов для разработки своих программ. Также очень интересно обратить внимание на победителей приза Лобнера и посмотреть как чатботы эволюционировали.
  10. В 1964 году Джзеф Вейзенбаум начал писать первого чатбота - Элизу. В 1966 году закончил. По сути это пародия на врачей психоаналитиков. Основная особенность Элизы в том что она использует фрагмент фразы пользователя для формирования ответа.
  11. Исходный код Элизы выложен в открытом доступе. Элиза была очень популярна. Многие пациенты были уверены что они общаются с доктором. Пример кода Элизы. Элиза является четырех кратным победителем Лобнер прайз.
  12. Другой известный чатбот - Алиса. Алиса является многократным победителем конкурса Лобнер Прайз. Была создана в 1995 году профессором Ричардом Валлесом. В проекте по созданию Алисы участвовало несколько сотен студентов. Робот Алиса написан на языке, который называется AIML. Построена на паттерн матчер алгоритме. Имеет возможности для конструирования диалогов. Алиса трех-кратный победитель Лобнер Прайз. AIML и его имплементации являются открытыми. К сожалению для построения русско-говорящего робота они не очень подходят. Почему - объясню позже.
  13. На основе Алисы создан проект - Пандоработ, где каждый может создать своего робота он-лайн.
  14. Розетта -создана Брюсом Вилкоксом в 2010-м году. Неоднократный победитель Лобнер Прайз. Основана на паттерн матчере, используются онтологии. Имеет очень продвинутый и в то же время компактный язык описания паттернов. Использует экспертную систему для нахождения ответов на сложные вопросы. Использует конструируемые диалоги. Брюс Вилкокс является трехкратным и действующим победителем Лобнер прайз. Брюс написал программу, которая называется ChatScript - код открыт, доступен, и может использоваться без всяких ограничений. У Брюса есть замечательные статьи, где он рассказывает как программировать чатботов, а также проводит сравнительный анализ с Алисой.
  15. Отдельного внимания заслуживает CleverBot. Роло Карпентер - дважды победитель Лобнер Прайз. Клевер бот построен на использовании статистики. Его "обучают" пользователи, они говорят как он должен отвечать на какие либо вопросы. Основная проблема - при общении с ним возникает ощущение что говоришь с человеком, страдающим от раздвоения личности.
  16. Робби Гарнер два раза выигрывал Лобнер прайз. Он написал чатбота - FRED. Который изображает из себя школьника, помешанного на сериале Стар Трек. Чатбот представляет из себя цельный персонаж. Кроме этого, он запоминает фразы собеседника, и, если не находит ответа, то ищет наиболее подходящую фразу из накопленной базы данных фраз пользователей.
  17. Еще очень интересный победитель Лобнер прайз - Джейсон Хадченс. Он написал статью "Как пройти тест Тьюринга посредством обмана". http://www.nyu.edu/gsas/dept/philo/courses/mindsandmachines/Papers/hutchens96how.pdf Он использовал цепи Маркова для формирования ответа. Например, если есть начало фразы - The cat, то на основании статистической обработки текстов можно сгенерировать - the cat set. Насколько я помню Джейсон работал в израильской компании a-i, где был создан статистический способ создания чат бота. Причем бот может обучаться на любом языке. К сожалению он напоминал уровень пятилетнего ребенка и дальше не продвигался.
  18. Еще очень интересный победитель Лобнер прайз - Джейсон Хадченс. Он написал статью "Как пройти тест Тьюринга посредством обмана". http://www.nyu.edu/gsas/dept/philo/courses/mindsandmachines/Papers/hutchens96how.pdf Он использовал цепи Маркова для формирования ответа. Например, если есть начало фразы - The cat, то на основании статистической обработки текстов можно сгенерировать - the cat set. Насколько я помню Джейсон работал в израильской компании a-i, где был создан статистический способ создания чат бота. Причем бот может обучаться на любом языке. К сожалению он напоминал уровень пятилетнего ребенка и дальше не продвигался.
  19. Еще очень интересный победитель Лобнер прайз - Джейсон Хадченс. Он написал статью "Как пройти тест Тьюринга посредством обмана". http://www.nyu.edu/gsas/dept/philo/courses/mindsandmachines/Papers/hutchens96how.pdf Он использовал цепи Маркова для формирования ответа. Например, если есть начало фразы - The cat, то на основании статистической обработки текстов можно сгенерировать - the cat set. Насколько я помню Джейсон работал в израильской компании a-i, где был создан статистический способ создания чат бота. Причем бот может обучаться на любом языке. К сожалению он напоминал уровень пятилетнего ребенка и дальше не продвигался.
  20. Наверное основная отличительная способность Густмана - это способность переводить тему разговора в нужное русло, в том случае если ему нечего сказать. Просто приведу пример диалога с Густманом пример У Густмана есть компонент, который мы называли - goal controller. Если был получен сигнал что ответ слабоват (например сработал паттер * yes * или *no *), то бот старается предложить новую тему для разговора. Причем их было запрограммировано только две - место жительства и где работаешь.
  21. Подведем промежуточный итог - страница конкурса Лобнер прайз содержит множество полезной информации которую можно использовать при создании чатбота. Надеюсь что данный опыт будет учтен если подобный конкурс будет проводиться в Сколково. Теперь, когда мы знаем уже довольно много про чатботов, давайте приступим к созданию своего. Признаюсь сразу - я не силен в computational linguistics, поэтому некоторые методы могут показаться слишком примитивными или даже наивными. Но они работают. К тому же не требуют использования дополнительного программного обеспечения. Как говориться, чтобы вылечить пациента не обязательно делать вскрытие. И так, приступим.
  22. Для начала обсудим архитектуру чатбота. Общая схема проста - предварительная обработка, нахождение наиболее подходящей фразы, и возможная до-обработка. На этапе предварительной обработки мы можем исправлять простейшие опечатки, определять язык, можем определить является ли данный текст осмысленным текстом или просто случайный набор символов. Так же на этом этапе мы можем распознавать емейлы, места, номера телефонов. Дальше мы ищем наиболее подходящий ответ. После этого, на основании предыдущих этапов, мы можем сформировать какое-либо дополнительное воздействие (помахать рукой) или даже попытаться перенаправить диалог в другое русло. Евгений Густман, кстати, имеет примерно такую же архитектуру
  23. Теперь рассмотрим структуру робота с точки зрения структуры знаний. Робот должен знать о себе. Уметь рассказать откуда он, чем занимается кто друзья Должен запоминать сведения о собеседнике