Сегодня я расскажу как сделать умного чат — бота с которым можно поговорить и так же мы дадим ему функционал ассистента. Если тема понравится, то мы продолжим улучшать нашего бота и сделаем его ещё умнее.
Для тех, кто не знает, что такое питон(Немного про язык и установку).
Python — высокоуровневый интерепритируемый язык программирования. Его преимущества — простой синтаксис. И огромное количество дополнительных библиотек.
Для установки переходим на сайт python.org . В раздел «Downloads». И выбираете подходящую версию, выбирайте python 3.x, так как python 2 отличается от python 2 синтаксисом и не только. Лично я буду работать на python 3.6
О чат — боте
Сам чат-бот состоит из ядра. Ядро — набор фраз и ответов к ним. Когда чат-боту поступает вопрос, то он идёт к ядру. В ядре ответ подбирается по типу предполагаемого ответа(приветствие, как дела . ). Далее обычно найдя такой тип, выдаётся случайный ответ из возможных в этом блоке.
пример блока
Как написать свою программу на python? #python #программирование
Писать такую систему вручную тяжело так как есть ряд проблем самописной системы: обучение, надо, чтобы всё что пользователи спрашивают у бота приходило вам и вы могли дообучать бота, если он ответил неправильно. Вам придется писать сервер и это будет сложно, а главное сложно найти бесплатный сервер, админ панель, ну согласитесь, что с неё будет удобнее управлять, следить и обучать бота.
Dialogflow
Как создать бота, с которым будут разговаривать
У голосовых ботов не самая лучшая репутация — большинство людей бросает трубку, понимая, что на другом конце провода ИИ-оператор. Тем не менее все большее количество компаний внедряют голосовых ботов для взаимодействия с клиентами, ведь при правильном подходе диалоговой ИИ может не только увеличить ваше конкурентное преимущество, но и изменить характер коммуникации между бизнесом и конечным пользователем.
Почему боты раздражают? Как сделать их умнее? Должен ли робот звучать как человек? Рассказываем, как сделать бота, с которым будут разговаривать
вместе со Светланой Захаровой, руководителем отдела по работе с клиентами и партнерами Just AI.
В начале был сценарий
Самая частая причина глупости ботов — плохо проработанный сценарий (он же скрипт). Сценарий не только обеспечивает логику разговора с собеседником, но и отвечает за то, чтобы беседа была живой и информативной для пользователя. Зачастую как только пользователь снимает трубку, на него обрушивается шквал «суперпредложений» или, наоборот, начинается длинный рассказ о том, что обратившаяся компания представляет те или иные услуги, что для нее важен для нее каждый клиент и т.д. В обоих случаях звонок заканчивается очень быстро. Сценарий должен одновременно нести ценность для потенциального клиента в плане содержательности, и при этом быть компактным.
Пример плохого сценария :
— Бот: Здравствуйте, это Ольга, сеть пиццерий «Just pizza». Уделите мне минуту?
Как создать программу в блокноте (Часть I)
— Клиент: Хорошо, давайте.
— Бот: «Just pizza» основана в 2013 году и с тех пор не перестает радовать клиентов ароматной пиццей от высококлассных поваров. Сеть пиццерий распространена по всей России, ее филиал находится даже в деревне Пупкино. В этом году нам исполнилось 10 лет, и в честь этого мы проводим специальную акцию — комбо-набор из трех пицц всего за 999 рублей + десерт в подарок. Хотите оформить заказ прямо сейчас?
— Клиент: «длинные гудки»
Пример хорошего сценария:
— Бот: Здравствуйте, это Ольга, сеть пиццерий «Just pizza». Уделите мне минуту?
— Клиент: Хорошо, давайте.
— Бот: Мы проводим акцию в честь юбилея сети «Just pizza» и предлагаем вам приобрести три пиццы по выгодной цене — всего 999 рублей! Если вы воспользуетесь предложением прямо сейчас, то получите десерт в подарок! Хотите разместить заказ?
Подробно о том, как писать оскароносные сценарии для диалогов чат-бота, мы рассказывали в статье на VC. Эта инструкция вполне подойдет и для голосового бота. Если кратко:
- Определите цели и задачи чат-бота: бот для консультации, сбора NPS-анкет, лидогенерации и т.д.;
- Составьте базу вопросов и ответов. Подробно распишите путь пользователя, продумайте, какая информация ему нужна, какие цели он преследует. Так будет проще написать действительно полезные реплики;
- Продумайте личность бота и tone of voice. Вы можете наделить бота даже индивидуальным голосом (сделать это можно с помощью сервиса Aimyvoice);
- Используйте закрытые вопросы. Чтобы привести пользователя к цели, бот должен управлять диалогом. В этом помогут закрытые вопросы, когда нужно выбрать «да» или «нет»;
- Тестируйте и улучшайте сценарий. После публикации бота отслеживайте диалоги и улучшайте сценарий, если случаются типовые ошибки. Не забывайте обновлять бота по мере изменений данных о продуктах или услугах.
Еще одна причина «неумности» ботов — несовершенство технологий.
Бот, ты меня не понимаешь
Бывают случаи, когда клиент идет не по скрипту и задает боту вопрос, которого нет в сценарии. Например, клиент звонит, чтобы заказать пиццу, и на этапе согласования даты и времени вдруг переспрашивает ее размер. Диалог пошел не по сценарию, бот не понимает, на какой этап сценария вернуть собеседника и начинает повторять один и тот же вопрос о времени доставки.
Сразу видно, бот либо без NLU-ядра, либо был обучен на очень скудной базе диалогов. NLU-ядро — технология natural language understanding, которая позволяет ботам понимать человеческую речь. Следует помнить, что бот с NLU в любом случае, вне зависимости от того, как четко вы сформулировали свой запрос, пытается соотнести его с каждым интентом (намерением пользователя), который он знает. Соответственно, от качества и количества обучающих данных полностью зависит то, как хорошо бот будет понимать и уметь делать то, что мы от него хотим.
Бот, извини, перебью
Бывало ли такое, что по ходу длинной реплики бота с перечислением услуг и предложений вы уже определились, что хотите выбрать, но были вынуждены дослушать сообщение до конца, чтобы наконец перейти к следующему этапу? Такой диалог утомляет и приобретает негативный оттенок. Чтобы этого избежать, в вашем боте должна быть настроена функция перебиваний (англ. barge-in). Эта фича позволяет ИИ-оператору реагировать на прерывание реплики и оперативно обрабатывать новый запрос собеседника.
Что у тебя с голосом?
Одной из причин, по которым людям не нравится разговаривать с роботами, — неестественная синтетическая речь. Некоторые компании решают эту проблему путем записи всех реплик голосом диктора, но впоследствии эти сообщения трудно персонализировать. Оптимальное решение — гибридный синтез, который умеет менять слова в аудиозаписи в реальном времени и озвучивать переменные голосом диктора: дату и время доставки, ФИО клиента и другие данные, не предусмотренные в сценарии диалога. Для каждого проекта роботизированного обзвона диктор записывает большое количество реплик, благодаря чему потом достигается высокое качество и естественность звучания робота. Протестировать работу гибридного синтеза вы можете здесь.
Ты что, бот?
Некоторые боты, напротив, звучат настолько естественно, что человек на другом конце провода может не сразу идентифицировать робота. Но если все же в какой-то момент абонент спрашивает: «Я разговариваю с роботом?» — ИИ-оператору лучше признаться, но сделать это так, чтобы собеседник не закончил разговор. Для этого нужен проработанный дружелюбный tone of voice: например, виртуальный помощник может сказать «Да, я робот, но, пожалуйста, не отключайтесь, меня ведь могут уволить». Люди, в отличие от машин, эмпатичны и вероятнее всего после такой реплики человек улыбнется и продолжит диалог.
Источник: just-ai.com
Создайте своего собственного помощника голосовых команд с 80 строками кода Javascript.
В этом руководстве мы создадим виртуального помощника (например, Siri или Google Assistant) в браузере всего с 80 строками кода javascript. Приложение можно протестировать здесь, в котором оно будет слушать голосовые команды пользователей и отвечать синтетическим голосом.
Что вам нужно:
- Google Chrome (25+)
- Текстовый редактор
Поскольку Web Speech API все еще является экспериментальным, приложение работает только в поддерживаемых браузерах (Chrome 25+ и Edge 79+).
Какие компоненты нам нужно построить?
Чтобы создать это веб-приложение, нам нужно реализовать четыре компонента:
1. Простой пользовательский интерфейс для отображения того, что говорят пользователи и что отвечает помощник.
2. Преобразуйте речь в текст.
3. Обработайте текст и выполните действие.
4. Преобразуйте текст в речь.
UI
Первым шагом является создание простого пользовательского интерфейса, который содержит button для запуска помощника, div для отображения команд пользователя и ответов помощника, p компонент для отображения информации об обработке.
const startBtn = document.createElement(«button»); startBtn.innerHTML = «Start listening»; const result = document.createElement(«div»); const processing = document.createElement(«p»); document.write(«
My Siri
Give it a try with ‘hello’, ‘how are you’, ‘what’s your name’, ‘what time is it’, ‘stop’, .
«); document.body.append(startBtn); document.body.append(result); document.body.append(processing);
Речь в текст
Нам нужно создать компонент для захвата голосовой команды и преобразования ее в текст для дальнейшей обработки. В этом руководстве мы используем Web Speech API SpeechRecognition . Поскольку этот API доступен только в поддерживаемых браузерах, мы покажем предупреждающее сообщение и заблокируем пользователям доступ к кнопке запуска в неподдерживаемых браузерах.
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; if (typeof SpeechRecognition === «undefined») < startBtn.remove(); result.innerHTML = «Browser does not support Speech API. Please download latest chrome.»; >
Необходимо создать экземпляр SpeechRecognition , можно задать набор различных свойств для настройки распознавания речи. В этом приложении мы устанавливаем continuous и interimResults равными true , чтобы отображать голосовой текст в реальном времени.
const recognition = new SpeechRecognition(); recognition.continuous = true; recognition.interimResults = true;
Добавлен дескриптор для обработки события onresult из API речи. В этом обработчике мы отображаем голосовые команды пользователей в текстовой форме и вызываем функцию process для выполнения действий. Функция process будет реализована на следующем шаге.
function process(speech_text) < return «. «; >recognition.onresult = event => Siri said: $`; processing.innerHTML = «»; result.appendChild(p); // add text to speech later > else < processing.innerHTML = `listening: $`; > >
Нам также необходимо связать UI button с объектом recognition , чтобы запустить / остановить распознавание речи.
let listening = false; toggleBtn = () => < if (listening) < recognition.stop(); startBtn.textContent = «Start listening»; >else < recognition.start(); startBtn.textContent = «Stop listening»; >listening = !listening; >; startBtn.addEventListener(«click», toggleBtn);
Обработайте текст и выполните действие.
На этом этапе мы создаем простую логику разговора и обрабатываем некоторые основные действия. Помощник может отвечать на hello , what’s your name , how are you , предоставлять информацию о текущем времени, stop прослушивать или открывать новую вкладку для поиска вопросов, на которые он не может ответить. Вы можете расширить эту process функцию с помощью некоторых библиотек AI, чтобы сделать помощника умнее.
function process(rawText) < // remove space and lowercase text let text = rawText.replace(/s/g, «»); text = text.toLowerCase(); let response = null; switch(text) < case «hello»: response = «hi, how are you doing?»; break; case «what’syourname»: response = «My name’s Siri.»; break; case «howareyou»: response = «I’m good.»; break; case «whattimeisit»: response = new Date().toLocaleTimeString(); break; case «stop»: response = «Bye!!»; toggleBtn(); // stop listening >if (!response) < window.open(`http://google.com/search?q=$`, «_blank»); return «I found some information for » + rawText; > return response; >
Текст в речь
На последнем этапе мы используем speechSynthesis контроллер Web Speech API, чтобы дать нашему помощнику голос. API прост и понятен.
speechSynthesis.speak(new SpeechSynthesisUtterance(response));
Вот и все!! у нас есть крутой помощник всего в 80 строках кода. Демо можно найти здесь.
Источник: evogeek.ru