Как «намерение recognisers» работу?

11

Амазонка Alexa , Nuance в Mix и Facebook, Wit.ai все используют подобную систему , чтобы указать , как преобразовать текстовую команду в умысел - то есть что - то компьютер поймет. Я не уверен, что это за «официальное» название, но я называю это «признание намерений». В основном путь от «пожалуйста , установите мои огни на 50% яркости» в lights.setBrightness(0.50).

Способ, которым они указаны, заключается в том, что разработчик должен предоставить список «типовых высказываний», которые связаны с намерением и, необязательно, помечены местоположениями «сущностей» (в основном параметров). Вот пример из Wit.ai:

например

Мой вопрос: как сделать эти системы? Поскольку все они очень похожи , я полагаю , есть некоторая плодотворная работа , что все они используют. Кто-нибудь знает, что это?

Интересно Houndify использует другую систему , которая больше похожа регулярных выражений: ["please"] . ("activate" | "enable" | "switch on" | "turn on") . [("the" | "my")] . ("lights" | "lighting") . ["please"]. Я предполагаю, что это интегрировано в поиск луча в их системе распознавания голоса, тогда как у Alexa, Wit.ai и Mix, кажется, есть отдельные системы Speech-> Text и Text-> Intent.

Изменить: Я нашел отправную точку - механизм для человека - робот Interaction через Неофициальные голосовые команды . Для сравнения высказываний используется метод скрытого семантического анализа. Я собираюсь прочитать об этом. По крайней мере , он дал мне отправную точку в сети цитируемости.

Edit 2: LSA, по существу , сравнивая слова , используемые (мешок слов) в каждом абзаце текста. Я не вижу , как это может работать очень хорошо для этого случая , как он полностью теряет порядок слов. Хотя , может быть , порядок слов не имеет большого значения для этих видов команд.

Редактировать 3: Скрытая тема Марковские модели выглядят так, как будто они могут быть интересными.

Timmmm
источник
Это сообщение объясняет пристальный классификацию в деталях: mrbot.ai/blog/natural-language-processing/...
znat
Похоже, что для этого используется метод «мешок слов», который я упоминал в своем вопросе. По сути, просто сложите векторы слов в предложении. Это не может быть, как это работает, хотя. Интерфейсы Wit и Nuance показывают, что они распознают сущности, которые не могут сделать суммой слов. Также пакет слов теряет все упорядочение, поэтому что-то вроде «Установить будильник на 10 минут 5» было бы неотличимо от «Установить будильник на 5 минут 10». Там должно быть что - то еще происходит.
Timmmm
Извлечение сущности является еще одной проблемой, когда последовательность имеет значение. Если у вас есть много данных Rnn будет работать в небольших наборов данных, которые часто встречаются в chatbots, условные случайные поля работают очень хорошо
znat
Хорошо, так ... Я ищу более подробный ответ, чем "RNN будет работать". Большинство современных систем обучения последовательности используют RNN, так что это кажется заданным.
Тимммм
намерения - это общее значение предложений (среднее векторов), а сущности - изучение контекста (окружающих слов), в котором они появляются. Rnn или CRF - это просто алгоритмы, которые можно использовать, потому что они учатся на последовательностях. Если вы хотите узнать более подробно, смотрите в исходный код Rasa
znat

Ответы:

4

Хотя вы и не отвечаете непосредственно на ваш вопрос, вас может заинтересовать область автоматического ответа на вопрос . Чтобы ответить на текстовые вопросы на естественном языке, их сначала нужно понять, что совпадает с вашей проблемой.

Хороший ресурс - это курс Юрафского и Мэннинга . В частности, разделы по семантике и ответам на вопросы могут помочь с тем, что вы ищете. Есть сопровождающих лекция видео доступно на YouTube здесь .

dvdnglnd
источник
Я нахожу первую часть вашего ответа очень забавной, но информативной.
Диего
Возможно, это будет лучше в качестве комментария, поскольку, как вы признаете, он не отвечает на вопрос.
kbrose
2

Этот пост имеет подход. В основном они используют пакет слов - они преобразовывают слова в разреженные векторы, а затем складывают их.

Кажется, он работает довольно хорошо, но один существенный недостаток заключается в том, что ответ не зависит от порядка слов, поэтому вы не можете выполнять запросы типа «Сколько килограммов в фунте», если только вы не используете их в особых случаях.

Однако я сделал текст с Alexa, и он довольно нечувствителен к изменениям порядка слов, поэтому, возможно, они используют нечто подобное.

Timmmm
источник
Любопытно - какое преимущество имеют разреженные векторы над наивным байесовским? Мне обоим решать линейно разделимые задачи с наивным предположением о
Ангад