Pull to refresh

Comments 11

Пообщались...
Я: Тут есть кто-нибудь?
Бот: Вот сейчас я тебя совсем не понимаю.
Я: Добрый день!
Бот: Попробуй, пожалуйста, выразить свою мысль по-другому.
Я: Hello!
Бот: Не совсем понимаю, о чём ты.
Я: я могу сделать заказ?
Бот: На какое имя?
Я: Обращайтесь ко мне Мистер X
Бот: На какое имя?
Я: У меня нет имени. Я Мистер X
Бот: На какое имя?
Я: Ладно, пусть будет Георг
Бот: На какое имя?
Я: На имя Георга Карловича
Бот: На какое имя?
Я: мр. Георг Карлович
Бот: На какое имя?
Я: Ок! Пусть будет просто Георг
Бот: На какое имя?
Я: Ты меня убедил. Пусть я буду Вася
Бот: В какой город?
Я: Я живу под Стармином, в поселке Топлые Реды
Бот: В какой город?
Я: В деревне. Топлые Реды!
Бот: В какой город?
Я: Это не город. Это поселок
Бот: В какой город?
Я: пусть город… только маленький ок?
Бот: В какой город?
Я: Топлые Реды
Бот: В какой город?
Я: В Москву!
Бот: Заказ оформлен на имя Вася и будет отправлен в Москва по адресу город… только
Все же не стоит ожидать от Dialogflow человеческой речи и высокого качества распознавания без тонкой настройки. Автор бота не заложил ваши в фразы в настройки определения намерений (Intents), а стандартные метки поиска фактов (@ sys.name, @ sys.address и тд) путаются в названиях городов и именах людей.
Dialogflow — очень удобная платформа, но чтобы она работала хорошо — придется немного попотеть с настройками и обучающими выборками.
Вот собственно эти тонкости и хотелось бы узнать: что нужно сделать, чтобы получить приемлемый результат. Настроить hello world по документации несложно, интересно узнать, как построить что-то близкое к реальности.
Нужно побольше фраз в User says. Именно на них проходит обучение. И чем их больше, том точнее будет определение.
В Dialogflow есть инструменты для обучения, которые повышают точность классификации намерений и вычисления фактов:
* Intents или Намерения (что хочет пользователь) — можете настроить типовые реплики (User Says), а еще использовать модули машинного обучения и тренировки
* Чтобы точно извлекать нестандартные факты (ФИО, названия городов и тд) — настройте сущности
У них все довольно удобно устроено — данные можно загружать через CSV выгрузки, что-то можно через API
С именами у недобота жуткая беда — азиатские ФИО он отказывается воспринимать совсем.
А как настроить ветви в зависимости что сказал пользователь? Например, в зависимости что сказал пользователь (да или нет), в дальнейшем система будет задавать другие запроси.
То что вам нужно называется контекстом: dialogflow.com/docs/contexts

Ещё похожее это диалоги: dialogflow.com/docs/dialogs
Это когда несколькими запросами необходимо получить определённый надо данных.

И в итоге есть Fulfillment (или Webhook), когда можно с помощью торчащего наружу HTTP метода кастомизировать работу бота.
Дякую, вже й попробував реалізувати працює!

Если кому интересно, то задача распознавания имён называется Named Entity Recognition или сокращённо NER. И пока что для решения не придумали ничего новее Conditional random fields, так что до "понимания человеской речи" как до Луны. Скорее этот подход нужно воспринимать как распознавание, основанное на регулярных выражениях и грамматике, которое будет устойчиво к небольшим возмущениям типа пропуска и перестановки слов или появления незнакомых терминов. То есть, модель будет довольно ограничена в свой возможности обобщать, но зато для небольшого круга задач вполне подойдёт и будет работать значительно лучше чем if (userInput.equals("принеси мне сендвич")) {… }. Единственный минус — для настройки придётся разобраться с алгоритмом обучения, иначе можно "скормить" кучу данных, а точность так и не повысится.


P.S. Историческая справка. Dialogflow это бывшие Api.ai, они же Assistant.ai, они же Speaktoit он же Гога, он же Жора. В компании преимущественно работают русскоговорящие. Недавно их купил Google, но в далёком 2013-м они копировали практически один в один сервис Wit.ai, который в 2015-м купил Facebook. Сейчас оба сервиса продолжают активно развиваться .

Я не совсем понял из данного примера, когда бот спросит: «Какую одежду вам доставить?».
Как он поймет мой ответ?
Ведь как параметр что нужно доставить не задано или я что-то упустил?

Создал бота по текущему примеру.

habrBot: Здравствуй!
habrBot: Что можешь сказать о себе?

Я: Привет. Я Вася

habrBot: Расскажи о себе?
habrBot: Здравствуй!

Я: Привет

habrBot: Что можешь сказать о себе?
habrBot: Здравствуй!

Я: Я Василий

habrBot: Приятно познакомиться.
habrBot: Какую одежду вам доставить?

Я: Обувь
habrBot: Вот сейчас я тебя совсем не понимаю.

Я: Одежду
habrBot: Вот сейчас я тебя совсем не понимаю.


Дальше разговор не уходит, можно писать, где живешь и т.д., но ответ боту не ясен.
Only those users with full accounts are able to leave comments. Log in, please.