В Части 1 этой серии я представил Эдди и объяснил, как Эдди может ответить на ряд взаимосвязанных вопросов. В этом посте объясняются ситуации, когда Эдди терпит неудачу. Мы обсуждаем проблемы, с которыми сталкивается бот, пытаясь понять реальные запросы пользователей и ответить на них по-человечески.

Понимание пользовательских запросов

Когда пользователи взаимодействуют с поисковой системой, такой как Google/Bing, они часто получают желаемый ответ в нескольких запросах. Пользователи задают вопрос и читают кучу заголовков веб-результатов. Если их не устраивают результаты, они либо переформулируют запрос, либо предоставляют поисковой системе дополнительный контекст. Это облегчает поисковым системам получение релевантных результатов. Поскольку у голосовых помощников нет визуального интерфейса для отображения нескольких результатов, им становится сложно дать лучший ответ с первой попытки. Более того, в голосовых интерфейсах отсутствуют такие механизмы, как автозаполнение и исправление орфографии, которые обычно направляют пользователя при поиске в текстовых интерфейсах. Чтобы преодолеть эти проблемы, мы проанализировали различные типы пользовательских запросов и предложили систему, которая может обрабатывать каждый из них.

Различные способы поиска одной и той же информации

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

Поэтому мы предлагаем добавить механизм переформулирования запросов перед отправкой запросов средству извлечения. Механизм будет генерировать несколько формулировок одного и того же запроса. Затем Эдди может вернуть несколько ответов, и для чтения будет выбран лучший из них. Мы черпаем вдохновение из статьи Активные ответы на вопросы для реализации такого движка.

Неоднозначные запросы пользователей

Пользовательские запросы часто бывают короткими, неоднозначными и лишенными контекста. Например,

Запрос пользователя«Что такое НДС?»
Ответ Эдди — «Апостольская библиотека Ватикана (чаще называемая
Ватиканской библиотекой или просто Ват, — это библиотека Святого Престола,
расположенная в Ватикане
».

Пользователь хотел спросить о «налоге на добавленную стоимость (НДС)» в Индии. Однако Эдди перепутал его с НДС Библиотеки Апостолов Ватикана. Таким образом, то, что очень очевидно в разговоре между двумя людьми в Индии, может быть неочевидным для бота, у которого нет контекста вашей национальности. В идеале Эдди должен был запросить у пользователя больше контекста —

"Вы имеете в виду библиотеку НДС или налог в Индии?"

Многогранные пользовательские запросы

У пользователей сложные информационные потребности. Им не удается сформулировать свои потребности в одном запросе. Такие системы, как Eddie, возвращают результаты, даже если заданный вопрос является неполным или неясным. В реальной жизни такие системы должны задавать уточняющие вопросы пользователю, чтобы лучше понять его потребности. Например,
вот пример из статьи Задавание уточняющих вопросов в беседах с целью поиска информации в открытой области.

Чтобы справиться как с неоднозначными, так и с многоаспектными запросами, мы предлагаем добавить модуль уточнения в любую систему чат-ботов для поиска информации. Уточняющая система может генерировать уточняющие вопросы на основе текущей истории диалога, темы и запроса. Он также может обратиться к указателю существующих вопросов по этой теме и выбрать лучший вопрос, который нужно задать. Уточняющая система будет в основном состоять из 2 частей — модели генерации вопросов и модели выбора вопросов. Более подробную информацию можно найти здесь".

Проблема смены темы и возврата темы

Прежде чем начать разговор с Эдди, пользователь сообщает Эдди тему разговора. Получая ответ на вопрос, Эдди использует тему и все вопросы (или последние n вопросов) в истории как контекст. Однако в беседе пользователи часто переключаются между разными подтемами, что делает части беседы нерелевантными для текущего вопроса. Другими словами, не вся история может быть одинаково взвешена, чтобы ответить на текущий вопрос. Пользователи переключаются с подтемы, а затем возвращаются к ней через некоторое время. Эта проблема подробно раскрыта в статье — Внимательный выбор истории для ответа на разговорный вопрос.

Следуя статье, мы предлагаем использовать механизм History Attentive Mechanism длямоделирования истории в нейронной модели считывателя документов. Прошлые вопросы/ответы могут быть взвешены в зависимости от их релевантности текущему запросу, и мы можем использовать встраивание ответов позиционной истории (PosHAE) для моделирования контекста.

Предоставление естественных ответов

В недавнем прошлом большое внимание уделялось тому, чтобы ответы ботов были похожи на человеческие. MS MARCO запускает задачу Генерация естественного языка, чтобы сформулировать ответ задачи контроля качества в формате, в котором он может быть прочитан с умного динамика и иметь смысл без какого-либо дополнительного контекста.

Чтобы сделать Эдди разговорным, мы добавили в конвейер компонент генерации естественного языка. Компонент преобразует ответ читателя на основе диапазона в ответ в произвольной форме с использованием модели Seq2Seq (P ointer Generator Networks). Модель принимает вопрос и диапазон ответов в качестве входных данных и возвращает ответ в свободной форме в качестве выходных данных. Например,

Вопрос: они взяли бутылку?
Объем ответов: так что они поймали бутылку
Естественный ответ: Да

Как видно из примера, намного удобнее ответить Да/Нет на вопрос делал/есть, чем читать диапазон ответов. Мы обучили модель PGNet на наборе данных CoQA, так как ответы в CoQA имеют свободную форму, в отличие от QuAC.

Мы заметили, что такая модель достаточно хороша для переформулирования ответов на вопросы «Да/Нет». Тем не менее, они не очень хорошо подходят для других типов вопросов.

Эдди: Идеальный дизайн системы

Нельзя отрицать тот факт, что голосовые помощники — это будущее Интернета. Взаимодействие с голосовыми помощниками гораздо более похоже на человека, чем просмотр множества веб-результатов. Тем не менее, обеспечение человеческого опыта все еще надумано.

Для достижения этой цели мы предлагаем новый сквозной дизайн для разработки такого многодоменного, многооборотного, контекстуального и интеллектуального агента контроля качества.

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

Взгляд в будущее

Вопросы пользователей являются открытыми, двусмысленными, многогранными, без ответа или часто значимыми в данном контексте. Обработка таких сложных информационных потребностей делает разработку Эдди сложной задачей.

Предложенный нами дизайн хорошо сочетается с многочисленными компонентами, необходимыми для создания такой системы. Однако мы еще не смоделировали компонент Персонализация. Мы также планируем улучшить нашу модель чтения документов, чтобы обрабатывать вопросы, ответы на которые охватывают несколько отрывков (Многошаговое рассуждение).

Пожалуйста, не стесняйтесь обращаться ко мне (https://miteshksingh.github.io/), если вы хотите узнать больше об этом усилии.