УДК 004.896
Д. А. Евсеев, М. С. Бурцев
Московский физико-технический институт (национальный исследовательский университет)
Использование графовых и текстовых баз знаний в диалоговом ассистенте DREAM
В работе описываются компоненты диалогового ассистента DREAM для извлечения сущностей из реплики пользователя, связывания сущностей с базой знаний и извлечения фактов из базы знаний для формирования ответной реплики. Компонент для извлечения сущностей находит в реплике пользователя подстроки, соответствующие сущностям. Далее, для найденных подстрок выполняется поиск ids соответствующих сущностей в Wikidata и названий страниц Википедии. Производится запрос в базу знаний по ids сущностей для извлечения фактов: триплетов Wikidata и параграфов Википедии. В случае, если реплика пользователя является фактоидным вопросом, факты используются в вопросно-ответных компонентах по графу знаний (KBQA) и по тексту (ODQA). Параграфы страницы Википедии используются в сценарном навыке для обсуждения интересующей пользователя сущности (DFF Wiki Skill), а также в навыке на основе генеративной модели (Knowledge Grounding Skill). Применение баз знаний в диалоговом ассистенте позволяет проводить анализ реплики пользователя и генерировать интересные и содержательные реплики.
Ключевые слова: извлечение сущностей, связывание сущностей с базой знаний, граф знаний, вопросно-ответная система, диалоговый ассистент.
D.A. Evseev, M.S. Burtsev Moscow Institute of Physics and Technology
Using graph and text knowledge bases in DREAM
dialogue assistant
The paper describes components of DREAM dialogue assistant for detection of entities in the user utterance, entity linking and extraction of facts from the knowledge base for a response generation. The entity extraction component finds substrings which correspond to entities in the user utterance. Entity substrings are linked to Wikidata ids and Wikipedia page titles, which are used in queries to knowledge bases for extraction of facts, viz. Wikidata triplets and Wikipedia page paragraphs. If the user utterance is a factoid question, knowledge base question answering and open-domain question answering components find answer in extracted facts. Wikipedia paragraphs are utilized in the scenario of DFF Wiki Skill for discussion of entities the user is interested in and in the skill based on the generative model (Knowledge Grounding Skill). Knowledge bases in the dialogue assistant allow us to analyze the user utterance and generate interesting and meaningful responses.
Key words: entity extraction, entity linking, knowledge graph, question answering system, dialogue assistant.
© Евсеев Д. А., Бурцев М. С., 2022
(с) Федеральное государственное автономное образовательное учреждение высшего образования
«Московский физико-технический институт (национальный исследовательский университет)», 2022
1. Введение
Большинство диалоговых ассистентов [1-4] состоят из компонентов для понимания реплики пользователя (Natural Language Understanding), навыков для генерации ответной реплики (Natural Language Generation) и отслеживания состояния диалога и переключения между различными навыками. Аннотаторы для понимания реплики пользователя включают в себя различные классификаторы (намерений пользователя, эмоций, и т. д.) и системы для извлечения сущностей из реплики. Сущности, извлеченные из реплики, помогают понять, что пользователь хочет поговорить на определенную тему или сменить тему диалога. Связывание сущностей с графовой базой знаний или текстовой базой данных позволяет извлекать дополнительную информацию о сущностях, которая может использоваться в различных навыках для генерации ответной реплики.
В данной работе описываются компоненты диалогового ассистента DREAM для извлечения сущностей из реплики пользователя и связывания с базой знаний Wikidata [5] и базой данных страниц Википедии. Триплеты Wikidata и параграфы Википедии используются в навыке для ответа на фактоидные вопросы, сценарных навыках, навыках для обсуждения темы по страницам Википедии и генерации реплики с использованием фактов.
Аннотатор для извлечения сущностей (Entity Detection) основан на модели маркировки последовательности на основе RoBERTa-tinv [6]. Данный компонент определяет для каждого токена реплики, относится ли он к сущности, в соответствии с ВЮ-разметкой, и возвращает найденные подстроки с сущностями. Далее происходит классификация подстрок по 42 типам с помощью другой модели на основе RoBERTa-tinv.
Аннотатор для связывания сущностей с базой знаний (Entity Linking) определяет, какому id из Wikidata и странице Википедии соответствует каждая из подстрок. Данный аннотатор извлекает для каждой из подстрок из базы данных ids возможных сущностей и определяет, какая из сущностей является наиболее подходящей для подстроки. Для определения, какая из сущностей больше подходит под контекст, используется модель на основе BERT-small [7]. Компонент для связывания сущностей отличается эффективностью в плане использования ресурсов (2.4 Gb RAM, 1.2 Gb GPU).
База знаний Wikidata содержит триплеты в виде <субъект, отношение, объект>, например <Россия, столица, Москва>. Ids большинства из сущностей Wikidata привязаны к страницам Википедии. После связывания сущности с базой знаний аннотатор Wlki Parser извлекает из Wikidata все триплеты, в которых данная сущность является субъектом. Аннотатор Fact Retrieval извлекает из Википедии параграфы с соответствующими заголовками. Типы сущностей из Wikidata были разделены по темам сценарных навыков (путешествия, музыка, спорт, и т. д.), и для каждой из тем был составлен список заголовков параграфов Википедии, которые могут содержать наиболее интересные факты.
В случае, если реплика пользователя является фактоидным вопросом, поиск ответа происходит в Wikidata (аннотатор KBQA) или параграфах из Википедии (аннотатор Text QA). Навык для ответа на фактоидные вопросы (Factoid QA) выбирает из возможных ответов KBQA и Text QA ответ с наибольшей вероятностью.
В DREAM триплеты из Wikidata и параграфы Википедии, найденные для сущности из реплики пользователя, используются в сценарных навыках для генерации ответной реплики. Сценарные навыки основаны на конечных автоматах. Происходит определение, какому из состояний соответствует реплика пользователя, после этого происходит генерация шаблонной ответной реплики и переход в следующее состояние диалога. Сущность, извлеченная из реплики пользователя, а также триплеты из Wikidata могут использоваться для определения соответствия реплики пользователя определенному состоянию, а также для заполнения слотов шаблонной ответной реплики.
Для диалога на темы, не поддерживаемых тематическими сценарными навыками (например, космос), используются навыки DFF Wlki Skill и Knowledge Grounding Skill, сценарий DFF Wlki Skill которого основан на обсуждении страницы Википедии на данную тему. На каждом шаге DFF Wlki Skill выдает пользователю отрывок из определенного раздела
страницы (например, первый запуск спутника в космос), спрашивает мнение пользователя или предлагает обсудить следующий раздел темы. Knowledge Grounding Skill - это нейро-сетевой навык для генерации реплик, основанный на модели Blenderbot [8]. Данная модель архитектуры Трансформер [9] принимает на вход историю диалога (несколько предыдущих реплик), параграф из Википедии, найденный по сущности из реплики пользователя, и генерирует ответную реплику. Использование в навыках диалогового ассистента фактов (в графовом или текстовом виде) позволяет генерировать содержательные реплики на темы, интересные для пользователя диалогового ассистента.
2. Краткий обзор применения баз знаний в диалоговых ассистентах
Системы для извлечения сущностей активно используются в диалоговых ассистентах. В Alquist [1] для извлечения сущностей используется модель маркировки последовательностей на основе BiLSTM [10], обученная на вручную собранном датасете. Датасет содержит 16 типов сущностей (фильм, музыкальный жанр и т. д.). После извлечения из реплики подстроки с сущностью выполняется поисковый запрос к определенной тематической базе знаний (LastFM — для музыки, TMDb — для фильмов и т. д.). Информация, извлеченная из баз знаний, используется в Alquist в сценарных навыках.
В Chirpy Cardinal [11] для извлечения сущностей из текста применяется Stanford CoreNLP [12]. Для связывания подстроки с сущностью с названием страницы Википедии и соответствующей сущностью Wikidata выполняется поиск названий страниц-кандидатов для данной подстроки в индексе ElasticSearch. Для каждой из страниц есть список алиасов (различных названий) даннной страницы в гиперссылках Википедии (к примеру, Москва может упоминаться как «Москва», «город Москва», «столица России» и т. д.) с соответствующим числом упоминаний для каждого алиаса. Сортировка названий страниц происходит по числу упоминаний алиасов, наиболее совпадающих по n-граммам с подстрокой, извлеченной из реплики. В Chirpy Cardinal 2 версии [2] для связывания сущностей с базой знаний — система [13], в которой векторы на выходе BERT для каждого из токенов текста подаются на вход полносвязного слоя для классификации на число классов, соответствующих числу рассматриваемых сущностей (700 К). Извлеченные сущности используются для переключения между различными навыками, параграфы страниц Википедии — в навыке, реплики которого состоят из фактов из параграфов или вопросов, интересен ли пользователю определенный раздел страницы.
В Proto для извлечения сущностей из текста используется модель маркировки последовательностей на основе BERT. Для связывания подстрок с сущностями с Wikidata и Википедией применяется подход из Chirpy Cardinal, улучшенный за счет ранжирования сущностей по контексту. Для определения наиболее вероятной сущности для подстроки на вход BERT подавался контекст (две последние реплики в диалоге) и топ-3 элемента из раздела «Категории» страницы Википедии для данной сущности.
В Emora [4] извлечение сущностей основано на биаффинном слое [14]. Связывание сущностей с базой знаний происходит с использованием метода газетир. С помощью данного метода извлекаются все возможные подстроки в реплике пользователя, которые соответствуют сущностям в базе знаний по алгоритму [15]. Информация из баз знаний используется для заполнения слотов в шаблонах в компонентах для генерации ответной реплики.
В Gunrock [16] для извлечения сущностей применяется модель на основе BiLSTM-CRF [17]. Для обучения модели используется датасет из реплик пользователей Alexa, в которых с помощью синтаксического парсинга выделены именованные группы. Связывание сущностей происходит с Google Knowledge Graph. Для выбора сущности, наиболее подходящей под контекст, вычисляются скалярные произведения эмбеддигов сущностей в контексте и их описаний. В качестве эмбеддинга сущности используется усреднение векторов токенов подстроки с сущностью на выходе BERT, в качестве эмбеддинга описания - усреднение токенов описания. В Gunrock факты из базы знаний использовались для заполнения слотов в шаблонных репликах сценарных навыков. Для генерации реплик в диалоге с ис-
пользованием фактов используются DialoGPT-medium [18], обученный на датасете Wizard of WTikipedia [19] и Blenderbot.
В DREAM компонент для извлечения сущностей поддерживает больше типов сущностей (42), чем в рассмотренных выше диалоговых ассистентах. Модель, обученная определять сущность из базы знаний, наиболее подходящую под контекст, используется в DREAM и Proto. В Chirpy Cardinal извлечение релевантных фактов из базы данных основано на модели DPR [20], в Proto - на Sentence-BERT [21]. В DREAM в Fact Retrieval отсутствует модель для поиска фактов с помощью модели, определяющей, насколько факт подходит к истории диалога, и планируется к добавлению в последующих версиях DREAM. Во всех диалоговых ассистентах факты из баз знаний применяются в сценарных навыках, при этом в DREAM и Chirpy Cardinal 2 для диалога на темы, не поддерживаемые сценарными навыками, используется навык для обсуждения страниц Википедии. В DREAM данный навык поддерживает в качестве базы данных не только Википедию, но и wikiHow и новости. Во всех ассистентах (кроме Emora) присутствуют навыки для генерации реплик с использованием фактов (на основе DialoGPT или Blenderbot), при этом в Chirpy Cardinal 2 используется генеративная модель для заполнения слотов в шаблонных репликах на основе фактов.
3. Схема компонентов диалогового ассистента DREAM, использующих базы знаний
Диалоговый ассистент DREAM построен на базе оркестратора DeepPavlov-Agent, который включает следующие типы сервисов:
• Аннотатор — сервис для препроцессинга реплики пользователя (разбиения на предложения, извлечения сущностей и т. д.).
• Скилл (навык) — сервис для генерации возможной ответной реплики диалогового ассистента.
• Селектор навыков (Skill Selector) — сервис для определения набора навыков, которые будут генерировать реплику бота на текущем шаге.
• Пост-аннотатор — сервис для обработки сгенерированной реплики (например, классификации реплики как токсичной/не токсичной, удаление нецензурных слов).
• Селектор ответной реплики (Response Selector) — сервис для выбора наиболее подходящей реплики из набора возможных реплик, сгенерированных скиллами.
Схема компонентов DREAM, которые используют базы знаний, изображена на рис. 1.
Анализ содержания реплики пользователя в диалоговом ассистенте происходит следующим образом (рассмотрим на примере вопроса «Кто сыграл роль Шелдона Купера в сериале Теория большого взрыва?»):
1) Реплика пользователя подается на вход аннотатора Entity Detection, который извлекает подстроки из реплики с сущностями. В данном примере будут извлечены подстроки «Шелдона Купера» и «Теория Большого взрыва».
2) Далее с помощью аннотатора Entity Linking подстроки, извлеченные Entity Detection, связываются с базой знаний WTikidata. В данном примере подстроке «Шелдона Купера» соответствует сущность из WTikidata Q629583 («Шелдон Купер»), подстроке «Теория большого взрыва» - сущность Q8539 («Теория большого взрыва»).
3) Аннотатор WTiki Parser извлекает из базы знаний триплеты с фактами о сущностях, найденных Entity Linking. К примеру, для сущности Q629583 будут извлечены триплеты <Q629583, Р175, Q190972> (Шелдон Купер, актер, Джим Парсонс).
Рис. 1. Схема компонентов DREAM. использующих базы знаний
4) Faet Rctricval извлекает из Викииедии параграфы страниц, соответствующих сущностям, извлеченным Entitv Linking. К примеру, для сущности Q8539 будет извлечен параграф «Теория Большого взрыва американский ситком, созданный Чаком Лорри и Биллом Прэди ...».
4. Извлечение сущностей (Entity Detection)
Аннотатор Entity Detection извлекает из текста подстроки с сущностями. Сервис состоит из двух компонентов:
• извлечение подстрок с сущностями из ренлик;
• классификация подстрок но тинам.
Для извлечения подстрок с сущностями используется модель классификации токенов на основе RoBERTa-tinv. На вход Трансформера подается последовательность токенов реплики, эмбеддинги токенов на выходе RoBERTa подаются на вход полноевязного слоя для классификации на три тега: «B-ENT» токен в начале подстроки с сущностью, «I-ENT» внутренняя часть подстроки с сущностью, «О» токен не относится к сущности.
Для классификации сущностей но 42 тинам (CITY, COUNTRY, FILM, и т. д.) реплика подается на вход другой модели RoBERTa-tinv. Эмбеддинги токенов сущности на выходе RoBERTa усредняются, и полученный эмбеддинг подается на вход полноевязного слоя.
Модели были обучены на датаеете обработанных страниц Викииедии. В каждом из параграфов гиперееылки на другие страницы связываются с сущностями Wikidata (например, в предложении «Saint Petersburg is situated on the Neva River, ...» страница e названием «Ncva River», на которую указывает гиперееылка «Neva River», соответствует сущности Wikidata с id Q645). Большинство сущностей Wikidata имеют тин, который выражается отношением Р31 («instante of», «является»), например <Neva River, instante of, river>.
Была составлена таблица соответствия тегов модели классификации сущностей и типов \¥1к1с1а1а, а также с помощью этой таблицы словарь тех'ов для каждой из сущностей. При обработке парахрафов Википедии для получения датаеета для каждой из гиперееылок был найден соответствующий тех". Каждый пример из датаеета содержит токены текста, список индексов токенов сущностей и список тех'ов сущностей.
На тестовой выборке полученншх) датаеета модель извлечения подстрок с сущностями достигает П 82.6. Модель классификации подстрок с сущностями но тегам достигает И 79.6.
5. Связывание сущностей (Entity Linking)
Аннотатор Entity Linking находит для подстрок с сущностями соответствующие ids сущностей Wikidata и названия страниц Википедии.
5.1. Извлечение возможных сущностей
Для хранения индекса сущностей используется база данных SQLite, преимущество которой в том, что она не загружается в RAM. Строка таблицы содержит название (или алиае) сущности, Wikidata id сущности, название страницы Википедии, количество связей в графе Wikidata для данной сущности, тег Entity Detection и короткое текстовое описание. С помощью расширения FTS5 производится нолнотекстовый поиск но названиям сущностей. Запрос к базе знаний состоит из подстроки с сущностью, которая иепльзуетея для поиска, и списка тех'ов Entity Detection для фильтрации возможных сущностей. Для каждой из подстрок извлекается список возможных сущностей с описаниями, отсортированный но убыванию числа связей в Wikidata.
5.2. Ранжирование сущностей по контексту
Для определения, какая из возможных сущностей лучше подходит иод контекст, используется модель на основе BERT-small. На вход BERT подается текст, в котором сущность заменена на специальный [ENT|-tokch, и текстовое описание сущности (рис. 2). Вычисляется билинейная форма эмбеддинга ENT-токена и эмбеддинга CLS-токена на выходе BERT, далее следует softmax-слой для классификации на два класса: 1 если описание подходит иод контекст, 0 если не подходит.
Контекст и описание сущности подаются на вход одного и того же ВЕЯТ-вшаИ
Рис. 2. Ранжирование возможных сущностей по контексту*
* Цветное изображение иллюстраций данной статьи см.: https://mipt.ru/upload/medialibrary/5e8/03.pdf
6. Извлечение фактов из баз знаний
Аннотатор Wiki Parser принимает на вход ids сущностей, найденных с помощью аннотатора Entity Linking, и извлекает из Wikidata триплеты для этих сущностей, которые затем используются в сценарных навыках и для ответа на фактоидные вопросы.
Для большинства сущностей Wikidata существует соответствующая страница Википедии. Аннотатор Fact retrieval принимает на вход ids сущностей от Entity Linking и использует отображение WTikidata ids на названия статей Википедии для извлечения страниц Википедии для сущностей. Страницы Википедии состоят из разделов, каждый из которых имеет заголовок. Для использования наиболее информативных фактов в тематических навыках был составлен список заголовков для каждого навыка. Fact Retrieval возвращает параграфы страниц Википедии, разделенные по тематическим навыкам. Например, для Animals Skill (навык для ведения сценарного диалога на темы, связанные с животными) Fact Retrieval извлечет параграфы страницы про животное из реплики пользователя с заголовками «Ареал обитания», «подвиды», и т. д.
7. Ответ на вопросы по графу знаний Wikidata (KBQA)
Компонент KBQA (Knowledge Base Question Answering) [22] предназначен для ответа на фактоидные вопросы пользователя с помощью триплетов, извлеченных аннотатором WTiki Parser. KBQA преобразует вопрос на естественном языке в SPARQL-запрос, выполнение которого с использованием базы знаний WTikidata дает ответ на вопрос.
Для конвертации вопроса в SPARQL-запрос в KBQA происходит определение, какому типу SPARQL-запроса соответствует вопрос, а затем слоты шаблона SPARQL-запроса заполняются сущностями и отношениями. Для определения типа SPARQL-запроса используется модель классификации на основе BERT-small. В данной модели эмбеддинг CLS-токена на выходе BERT подается на вход полносвязного слоя для классификации на девять классов, соответствующих различным типам SPARQL-запросов. Модель обучается на датасете LC-QUAD2.0 [23] и достигает на тестовой выборке Fl = 81.7, accuracy = 91.4.
В слоты шаблона SPARQL-запроса для сущностей заполняются ids сущностей, извлеченных аннотатором Entity Linking. Для определения наиболее вероятных отношений для топ-5 возможных сущностей из WTikidata для каждого из слотов извлекаются все триплеты сервисом WTiki Parser и происходит ранжирование отношений с помощью модели на основе RoBERTa. На вход RoBERTa подается вопрос и названия отношений, разделенные специальным токеном. Эмбеддинг CLS-токена подается на вход полносвязного слоя для классификации на два класса: 1 — если отношения из SPARQL-запроса для вопроса, 0 — если отношения не соответствуют SPARQL-запросу для вопроса. Модель обучается на датасете LC-QUAD2.0 и достигает на тестовой выборке Fl = 87.2.
После ранжирования отношений происходит перебор комбинаций возможных сущностей и отношений, и возможные ответы сортируются по убыванию произведения вероятностей возможных сущностей и отношений, система KBQA возвращает наиболее вероятный ответ.
8. Ответ на вопросы по тексту (Text QA)
Компонент Text QA предназначен для ответа на фактоидные вопросы пользователя по тексту. На вход компонента поступают параграфы страниц из Википедии для сущностей в реплике пользователя, извлеченные с помощью Fact Retrieval. В основе Text QA модель на основе BERT, которая находит подстроки с возможными ответами в параграфах. Для нахождения ответа в параграфе на вход BERT подаются токены вопроса и параграфа, разделенные SEP-токеном. Эмбеддинги токенов на выходе BERT подаются на вход двух полносвязных слоев, один из которых определяет токен, наиболее вероятный для начала ответа, другой — наиболее вероятный токен конца ответа. В случае если параграф не со-
держит ответа, в качестве наиболее вероятного токена начала и конца ответа используется CLS-токен.
Модель обучается на датасете SQuAD 1.1 [24], в который добавлены примеры с параграфами, не содержащими ответ на вопрос, но при этом близкими к вопросу по tf-idf и достигает Fl = 75.16, ЕМ = 67.78. Вероятность pi возможного ответа ai вычисляется по формуле 1:
-, els start els end
Pi = 1—Pi~ * Pi - , (!)
els start els end n
где pi - и pi - — вероятности CLS-токена, которые возвращают полносвязные слои для определения токенов начала и конца ответа.
Сервис Text QA возвращает ответ с наибольшей вероятностью р*.
9. Использование аннотаций в сценарных навыках диалогового ассистента
Для генерации ответной реплики в диалоговом ассистенте используются тематические навыки на основе конечных автоматов. К примеру, Animals Skill поддерживает диалог с пользователем про животных, Sport Skill — на спортивные темы и т. д. В тематических сценарных навыках происходит определение, какому состоянию (State) соответствует реплика пользователя, далее происходит генерация ответной реплики для данного состояния.
Триплеты из Wikidata, извлеченные с помощью Wiki Parser, используются в селекторе навыков для определения набора тематических навыков для генерации ответной реплики. Например, если в реплике пользователя была сущность «собака», для которой извлечен триплет (Q144, Р279, Q39201) «собака, подкласс домашнее животное», объект в данном триплете «домашнее животное» используется для выбора Animals Skill в качестве навыка для генерации ответной реплики.
Триплеты из Wikidata могут также использоваться в тематических навыках для заполнения слотов в шаблонах реплик. К примеру, в Sport Skill, если в реплике пользователя было имя спортсмена, используется ответная шаблонная реплика «Он играет на позиции POSITION в команде TEAM», где вместо слотов в Sport Skill происходит вставка значений из триплетов с отношениями Р413 (амплуа игрока, позиция в команде) и Р54 (член спортивной команды).
10. Навык для ответа на фактоидные вопросы (Factoid QA)
Сервис Factoid QA активируется, если классификатор реплик пользователя определил реплику как фактоидный вопрос. Для более точного детектирования фактоидного вопроса в Factoid QA происходит определение частей речи токенов реплики с помощью spaCv, и если в реплике не содержится ни существительного (NN, NNP), ни глагола (VB, VBZ, VBP), реплика не считается фактоидным вопросом.
При классификации реплики пользователя как фактоидный вопрос происходит поиск возможных ответов в графе знаний (KBQA) и страницах Википедии (ODQA). Аннотаторы KBQA и ODQA возвращают ответы с соответствующими вероятностями. Factoid QA выбирает ответ аннотатора с максимальной вероятностью.
11. Обсуждение сущностей по страницам Википедии и wikiHow
DFF WTiki Skill предназначен для обсуждения сущности, интересной пользователю, по страницам Википедии. Если в реплике пользователь упоминает сущность, тип которой не относится к типам, относящимся к тематическим сценарным навыкам (путешествия, музыка, спорт, и т. д.), активируется DFF WTiki Skill. Включение DFF WTiki Skill может происходить при наличии в аннотациях WTiki Parser сущности определенного типа или при извлечении определенной подстроки Entity Detection, которая совпадает с названием страницы Википедии. Пример диалогв с DFF WTiki Skill изображен на рис. 3.
User: Let's talk about space. [Пользователь предложи: тему "космос"]
But: In 1949, the Bumper WAG reached an altitude of, becoming the first human made object to enter space, according to NASA, although V 2 Rocket MW 18014 crossed the К rm n line earlier, in 1944. Would you like to learn more? [DFF Wiki Skili выдает часть одного из параграфов и
User: yes [Пользователь дает утвердительный ответ]
Bot: The first successful orbital launch was of the Soviet uncrewed Sputnik 1 ("Satellite 1") mission on 4 Clctober 1957. The satellite weighed about, and is believed to have orbited Earth at a height of about, Do you want to hear about first human outer space flight? [DFF Wiki Skill выдает следующую часть параграфа, далее предлагает для обсуждения следующий подраздел (первый
Bot: The first successful human spaceflight was Vostok 1 ("East lrr), carrying the 27 year old Russian cosmonaut, Yuri Gagarin, on 12 April 1961. The spacecraft completed one orbit around the globe, lasting about 1 hour and 48 minutes. Would you like to know about first astronomical body space explorations? [DFF Wild Siaif рассказывает про первый полет в космос и предлагает следующий
User: let's talk about music. [Пользователь хочет поговорить на другую тему, выход из
Рис. 3. Пример диалога DFF Wiki Skill
Для каждого из типов сущностей в DFF Wiki Skill есть список заголовков страниц, по которым будут отобраны параграфы для обсуждения. Данный список необходим, потому что не все параграфы страницы Википедии могут содержать интересные факты. К примеру, для темы «Освоение космоса» используются заголовки «Важнейшие этапы освоения космоса», «Частная космонавтика», и т. д.
Сценарий DFF Wiki Skill построен следующим образом: при детектировании в реплике пользователя сущности из списка поддерживаемых типов в навыке генерируется вопрос, хочет ли пользователь поговорить на данную тему. В случае утвердительного ответа случайным образом выбирается заголовок из списка заголовков и генерируется вопрос, хочет ли пользователь обсудить данный подраздел страницы. Параграф иод выбранным заголовком разбивается на несколько частей длиной не более 50 токенов с сохранением деления на предложения. В случае утвердительного ответа DFF Wiki Skill выдает первую часть из параграфа под данным заголовком и случайный вопрос, чтобы узнать мнение («Do you want more details?», «What is your opinion?», и т. д.). Если пользователь не предлагает сменить тему, происходит последовательная выдача дальнейшего контента параграфа с запросами мнения.
Если в DFF Wiki Skill текущий параграф подошел к концу, выбирается следующий случайный параграф из списка и генерируется вопрос, интересен ли пользователю данный подраздел. В случае если под заголоком параграфа есть гиперееылка на другую страницу Википедии, происходит переход на эту страницу и случайный выбор заголовков, описанный выше.
По ходу обсуждения страницы пользователь может задать уточняющий вопрос но содержанию страницы. В этом случае в сценарии происходит переход на узел для обработки фактоидных вопросов. На сервис Text QA отправляется запрос с вопросом пользвателя и списком параграфов текущей страницы. Сервис находит в каждом из параграфов возможный ответ, выбирает наиболее вероятный и возвращает в DFF Wiki Skill.
Если пользователь задает вопрос «Как ...?», например, «Как извлечь файлы из архива?», активируется сценарий DFF Wiki Skill для обсуждения страницы wikiHow. Из реплики с помощью регулярных выражений извлекается подстрока, например «извлечь файлы из
архива», и происходит поиск страницы wikiHow, название которой совпадает с запросом пользователя.
Страницы wikiHow состоят из ношах'овых инструкций выполнения какш'о-либо действия, на странице может быть несколько разделов с зах'оловками. Обработанные страницы хранятся в базе в виде словаря списков нарахрафов, где ключ словаря это зах'оловок, а каждый из параграфов это этан процесса, онисанншх) на странице. Аналогично обсуждению страницы Википедии, DFF Wiki Skill спрашивает, интересен ли пользователю раздел с данным зах'оловком, и в случае утвердительншх) ответа последовательно выдает этапы выполнения действия с вопросами, интересно ли пользователю узнать дальше.
12. Навык для генерации реплик с использованием фактов (Knowledge Grounding Skill)
Сценарные навыки определяют, какому из состояний соответствует реплика пользователя, и генерируют ответ для данншх) состояния. В случае если реплика пользователя не подходит ни под одно из возможных состояний в сценариях, в диалш'овом ассистенте DREAM используется навык на основе х'снсративной модели (Knowledge Grounding Skill).
Knowledge Grounding Skill основан на Blenderbot модели энкодер-декодер архитектуры Трансформер для 1'енерации реплик в диалш'е с помощью фактов. Модель принимает на вход парахраф из страницы Википедии о сущности из реплики пользователя, извлеченный с помощью Fact Retrieval, историю диалога (несколько предыдущих реплик) и генерирует ответное предложение (рис. 4). Blenderbot был обучен на датасете Wizard of Wikipedia и достигает PPL 10.97. Использование фактов позволяет генерировать содержательные реплики на темы, интересные пользователю.
Рис. 4. Схема генерации реплики в Blenderbot с использованием параграфа из Википедии
13. Заключение
В данной работе были описаны компоненты диалш'овшх) ассистента DREAM, использующие базу знаний Wikidata и базу данных параграфов Википедии. Аннотатор Entity Detection детектирует в реплике пользователя подстроки, соответствующие сущностям. Entity Linking находит для извлеченных подстрок ids сущностей из Wikidata и названия страниц Википедии. Далее происходит извлечение фактов для сущности из реплики пользователя: триплетов из Wikidata и параграфов из Википедии. Факты из базы знаний используются в сценарных навыках для заполнения слотов в шаблонных репликах. Навык Factoid QA отвечает на фактоидные вопросы путем выбора между ответом по графу знаний
(KBQA) или по тексту (Text QA). Для диалога на темы, не поддерживаемые сценарными навыками, применяется DFF Wiki Skill, который обсуждает тему по страницам Википедии и генеративная модель в Knowledge Grounding Skill, которая генерирует реплику на основе извлеченных фактов. Использование баз знаний позволяет проводить анализ содержания реплик пользователя и генерировать интересные ответные реплики.
Литература
1. Konrad J., Pichl J., Marek P., Lorenc P., Та V.D., Kobza O., Hylova L., Sedivy J. Alquist 4.0: Towards social intelligence using generative models and dialogue personalization // arXiv preprint arXiv:2109.07968. 2021.
2. Chi E.A., Chiam C., Chang Т., Lim S.K., Rastogi C., Iyabor A. [et al.\. Neural, neural everywhere: Controlled generation meets scaffolded, structured dialogue // Alexa Prize Proceedings. 2021.
3. Saha S., Das S., Soper E., Pacquetet E., Srihari R.K. Proto: A Neural Cocktail for Generating Appealing Conversations // arXiv preprint arXiv:2109.02513. 2021.
4. Finch S.E., Finch J.D., Huryn D., Hutsell W., Huang X., He H., Choi J.D. An Approach to Inference-Driven Dialogue Management within a Social Chatbot // arXiv preprint arXiv:2111.00570. 2021.
5. Vrandecic D., Krotzsch M. Wikidata: a free collaborative knowledgebase // Communications of the ACM. 2014. V. 57, N 10. P. 78-85.
6. Liu Y., Ott M., Goyal N., Du J., Joshi M., Chen D., Levy O., Lewis M., Zettlemoyer L., Stoyano, V. Roberta: A robustly optimized bert pretraining approach // arXiv preprint arXiv:1907.11692. 2019.
7. Devlin J., Chang M.W., Lee K., Toutanova K. BERT: Pre-training of deep bidirectional transformers for language understanding // Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Volume 1 (Long and Short Papers). 2019. P. 4171-4186.
8. Roller S., Dinan E., Goyal N., Ju D., Williamson M., Liu Y., Ott M., Shuster K., Smith E.M. [et al.\. Recipes for building an open-domain chatbot // arXiv preprint arXiv:2004.13637. 2020.
9. Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A. N., Kaiser L., Polosukhin I. Attention is all you need // Advances in neural information processing systems. 2017. V. 30.
10. Hochreiter S., Schmidhuber J. Long short-term memory // Neural computation. 1997. V. 9, N 8. P. 1735-1780.
11. Paranjape A., See A., Kenealy K., Li H., Hardy A., Qi P. [et al.\. Neural generation meets real people: Towards emotionally engaging mixed-initiative conversations // arXiv preprint arXiv:2008.12348. 2020.
12. Manning C.D., Surdeanu M., Bauer J., Finkel J.R., Bethard S., McClosky D. The Stanford CoreNLP natural language processing toolkit // Proceedings of 52nd annual meeting of the association for computational linguistics: system demonstrations. 2014. P. 55-60.
13. Broscheit S. Investigating entity knowledge in BERT with simple neural end-to-end entity linking // Proceedings of the 23rd Conference on Computational Natural Language Learning (CoNLL). 2019. P. 677-685.
14. Dozat Т., Manning C.D. Deep biaffine attention for neural dependency parsing // arXiv preprint arXiv:1611.01734. 2016.
15. Aho A.V., Corasick M.J. Efficient string matching: an aid to bibliographic search // Communications of the ACM. 1975. V. 18, N 6. P. 333-340.
16. Liang K., Chau A., Li Y., Lu X., Yu D., Zhou M., Jain I., Davidson S., Arnold J., Nguyen M., Yu, Z. Gunrock 2.0: A user adaptive social conversational system // arXiv preprint arXiv:2011.08906. 2020.
17. Huang Z., Xu W., Yu K. Bidirectional LSTM-CRF models for sequence tagging // arXiv preprint arXiv:1508.01991. 2015.
18. Zhang Y., Sun S., Galley M., Chen Y.C., Brockett C., Gao X., Gao J., Liu J., Dolan, B. Dialogpt: Large-scale generative pre-training for conversational response generation // arXiv preprint arXiv:1911.00536. 2019.
19. Dinan E., Roller S., Shuster K., Fan A., Auli M., Weston, J. Wizard of wikipedia: Knowledge-powered conversational agents // arXiv preprint arXiv:1811.01241. 2018.
20. Karpukhin V., Oguz B., Min S., Lewis P., Wu L., Edunov S., Chen D., Yih W.T. Dense passage retrieval for open-domain question answering // arXiv preprint arXiv:2004.04906. 2020.
21. Reimers N., Gurevych I. Sentence-bert: Sentence embeddings using siamese bert-networks // arXiv preprint arXiv:1908.10084. 2019.
22. Evseev D. A., Arkhipov M. Y. Sparql query generation for complex question answering with bert and bilstm-based model // Computational Linguistics and Intellectual Technologies. 2020. P. 270-282.
23. Dubey M., Banerjee D., Abdelkawi A., Lehmann J. Lc-quad 2.0: A large dataset for complex question answering over wikidata and dbpedia // International semantic web conference. Springer, Cham. 2019. P. 69-78.
24. Rajpurkar P., Zhang J., Lopyrev K., Liang P. Squad: 100,000+ questions for machine comprehension of text // arXiv preprint arXiv:1606.05250. 2016.
References
1. Konrad J., Pichl J., Marek P., Lorenc P., Ta V.D., Kobza O., Hylova L., Sedivy J. Alquist 4.0: Towards social intelligence using generative models and dialogue personalization. arXiv preprint arXiv:2109.07968. 2021.
2. Chi E.A., Chiam C., Chang T., Lim, S.K., Rastogi C., Iyabor A., et al, Neural, neural everywhere: Controlled generation meets scaffolded, structured dialogue. Alexa Prize Proceedings. 2021.
3. Saha S., Das S., Soper E., Pacquetet E., Srihari R.K. Proto: A Neural Cocktail for Generating Appealing Conversations. arXiv preprint arXiv:2109.02513. 2021.
4. Finch S.E., Finch J.D., Huryn D., Hutseil W., Huang X., He H., Choi J.D. An Approach to Inference-Driven Dialogue Management within a Social Chatbot. arXiv preprint arXiv:2111.00570. 2021.
5. Vrandecic D., Krotzsch M. WTikidata: a free collaborative knowledgebase. Communications of the ACM. 2014. V. 57, N 10. P. 78-85.
6. Liu Y., Ott M., Goyal N., Du J., Joshi M., Chen D., Levy O., Lewis M., Zettlemoyer L., Stoyano, V. Roberta: A robustly optimized bert pretraining approach. arXiv preprint arXiv:1907.11692. 2019.
7. Devlin J., Chang M.W., Lee K., Toutanova K. BERT: Pre-training of deep bidirectional transformers for language understanding. Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Volume 1 (Long and Short Papers). 2019. P. 4171-4186.
8. Roller S., Dinan E., Goyal N., Ju, D., Williamson M., Liu Y., Ott M., Shuster K., Smith, E.M., et al., Recipes for building an open-domain chatbot. arXiv preprint arXiv:2004.13637. 2020.
9. Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A.N., Kaiser L., Polosukhin I. Attention is all you need. Advances in neural information processing systems. 2017. V. 30.
10. Hochreiter S., Schmidhuber J. Long short-term memory. Neural computation. 1997. V. 9, N 8. P. 1735-1780.
11. Paranjape A., See A., Kenealy K., Li H., Hardy A., Qi P., et al, Neural generation meets real people: Towards emotionally engaging mixed-initiative conversations. arXiv preprint arXiv:2008.12348. 2020.
12. Manning C.D., Surdeanu M., Bauer J., Finkel J.R., Bethard S., McClosky D. The Stanford CoreNLP natural language processing toolkit. Proceedings of 52nd annual meeting of the association for computational linguistics: system demonstrations. 2014. P. 55-60.
13. Broscheit S. Investigating entity knowledge in BERT with simple neural end-to-end entity linking. Proceedings of the 23rd Conference on Computational Natural Language Learning (CoNLL). 2019. P. 677-685.
14. Dozat T., Manning C.D. Deep biaffine attention for neural dependency parsing. arXiv preprint arXiv:1611.01734. 2016.
15. Aho A.V., Corasick M.J. Efficient string matching: an aid to bibliographic search. Communications of the ACM. 1975. V. 18, N 6. P. 333-340.
16. Liang K, Chau A., Li Y., Lu X., Yu D., Zhou M., Jain I., Davidson S., Arnold J., Nguyen M., Yu, Z. Gunrock 2.0: A user adaptive social conversational system. arXiv preprint arXiv:2011.08906. 2020.
17. Huang Z., Xu W., Yu K. Bidirectional LSTM-CRF models for sequence tagging. arXiv preprint arXiv:1508.01991. 2015.
18. Zhang Y., Sun S., Galley M., Chen Y.C., Brockett C., Gao X., Gao J., Liu J., Dolan, B. Dialogpt: Large-scale generative pre-training for conversational response generation. arXiv preprint arXiv:1911.00536. 2019.
19. Dinan E., Roller S., Shuster K., Fan A., Auli M., Weston, J. Wizard of wikipedia: Knowledge-powered conversational agents. arXiv preprint arXiv:1811.01241. 2018.
20. Karpukhin V., Oguz B., Min S., Lewis P., Wu L., Edunov S., Chen D., Yih W. T. Dense passage retrieval for open-domain question answering. arXiv preprint arXiv:2004.04906. 2020.
21. Reimers N., Gurevych I. Sentence-bert: Sentence embeddings using siamese bert-networks. arXiv preprint arXiv:1908.10084. 2019.
22. Evseev D. A., Arkhipov M. Y. Sparql query generation for complex question answering with bert and bilstm-based model. Computational Linguistics and Intellectual Technologies. 2020. P. 270-282.
23. Dubey M., Banerjee D., Abdelkawi A., Lehmann J. Lc-quad 2.0: A large dataset for complex question answering over wikidata and dbpedia. International semantic web conference. Springer, Cham. 2019. P. 69-78.
24. Rajpurkar P., Zhang J., Lopyrev K., Liang P. Squad: 100,000+ questions for machine comprehension of text. arXiv preprint arXiv:1606.05250. 2016.
Поступим в редакцию 16.06.2022