Изменения

Перейти к: навигация, поиск

Диалоговые системы

1786 байт добавлено, 14:06, 9 февраля 2021
м
Целеориентированные диалоговые системы
* растет число «умных» бытовых предметов, которыми можно управлять <ref>[https://iot-analytics.com/state-of-the-iot-update-q1-q2-2018-number-of-iot-devices-now-7b/ Knud Lasse Lueth, State of the IoT 2018: Number of IoT devices now at 7B – Market accelerating]</ref>.
Наиболее часто диалоговые системы используют в продажах, саппорте поддержке и маркетинге. Они используются для выполнения рутинных операций, которые можно свести к конкретному алгоритму, ищут и агрегируют данные, распространяют информацию.
== Определение ==
}}
История диалога (блок 0) используется, чтобы обратиться к множеству внешних источников информации (блок 1). Затем формируется полный контекст диалога, который включает персональные данные пользователя, информацию из внешних источников, историю диалога (блок 2). Контекст при помощи трансформера структурируется и передается множеству компонентов, которые решают определенные задачи: в блоке 4 выполняется оценка настроения пользования (англ. sentiment), поиск именованных сущностей (NER), [[Обработка естественного языка#Частеречная разметка | выделение частей речи (POS)]], разрешение ''кореферентности''; в блоке 5 множество специфичных диалоговых моделей выдают свой ответ. Набор полученных ответов кодируется (блок 6) и ранжируется (блок 7) с учетом контекста.
{{Определение | definition=
Задачей целеориентированных систем является достижение определенных целей при помощи общения с пользователем. Примером цели может быть поиск книги или включение света.
 
{| class="wikitable"
|+ Преимущества и недостатки подходов к подстроению
|-
! !! Классический (на основе правил) !! Нейросетевой
|-
| style="background:#eaecf0;" | '''Преимущества''' ||
* Детерминированность
* Свободное расширение
* Интерпретируемость
||
* Может быть громоздким
* Надо прописывать руками (пока что)
* Сложнее разрабатывать нелинейные диалоговые модели
|-
| style="background:#eaecf0;" | '''Недостатки''' ||
* Самостоятельно обучается
* Не нужно думать о структуре разговора
||
* Черный ящик
* Нельзя быть уверенным в результате
* Сложно изменять
* Может долго обучаться и работать
|}
 
=== Классическая архитектура ===
* '''ASR'''. На вход поступает речь пользователя, которая затем [[Распознавание речи | распознается]] и переводится в текст. Результат работы компонента называют ''гипотезой'', так как полученный текст может соответствовать исходному сообщению не полностью.
* '''NLU'''. Фраза в текстовом виде анализируется системой: определяется домен, намерение, именованные сущности. Для распознавания намерений может применяться обученный на [[Векторное представление слов | векторном представлении фраз]] классификатор. [[Анализ текста Обработка естественного языка#spaCy | Распознавание именованных сущеностей]] является отдельной задачей извлечения информации. Для ее решения используются [[Теория формальных языков | формальные языки]], статистические модели и их комбинации. В результате работы компонента создается формальное описание фразы {{---}} семантический фрейм.
* '''DM'''. Состоянием диалога или контекстом является информация, которая была получена при общении с пользователем ранее. В соответствии с текущим состоянием выбирается политика поведения системы, корректируется семантический фрейм. В качестве поставщика знаний может выступать СУБД или Web API.
Если заменить каждую часть классической архитектуры искусственной нейронной сетью, то получим архитектуру изображенную на рисунке 3.
 
Входом у модели с данной архитектурой может быть компонент, который выполняет предобработку фразы пользователя и передает результаты внешним сетям (Intent Network и Belief Tracker).
Описание каждой части:
* '''Generation Network'''. Генерирует предложение, используя вектор действия <tex> \mathbf{o}_t </tex> и генератор языка. Предложение содержит специальные токены, которые заменяются на сущности из базы данных по указателю.
Входом у модели Данную архитектуру также называют ''сквозной'' (англ. end-to-end trainable), так как на данных обучается каждая ее часть. Модель с данной архитектурой может быть компонентможно обобщить на намерения, который выполняет предобработку фразы пользователя и передает результаты внешним сетям (Intent Network и Belief Tracker)которые не наблюдались во время обучения
Данную архитектуру также называют {| class="wikitable"|+ Преимущества и недостатки подходов к построению диалога|-! !! Классический (на основе правил) !! Нейросетевой|-| style="background:#eaecf0;" | '''Преимущества'сквозной'' (англ||* Детерминированность,* свободное расширение,* интерпретируемость.||* Самостоятельно обучается,* не нужно думать о структуре разговора. end|-to-end trainable)| style="background:#eaecf0;" | '''Недостатки''' ||* Может быть громоздким,* надо прописывать руками, так как на данных обучается каждая ее часть* сложнее разрабатывать нелинейные диалоговые модели. Модель с данной архитектурой можно обобщить на намерения||* Черный ящик,* нельзя быть уверенным в результате,* сложно изменять, которые не наблюдались во время обучения* может долго обучаться и работать.|}
== Чат-ориентированные диалоговые системы ==
Система также имеет модуль адаптации, который анализирует ответы пользователя и решает, исключить предыдущий ответ системы из множества возможных ответов, увеличить вероятность его выбора или уменьшить.
Модель с такой архитектурой можно обучить на субтитрах фильмов. Данные для русского языка можно найти на Толоке<ref> [https://toloka.ai/ru/datasets Датасеты Наборы данных Толоки]</ref> <ref>[https://contest.yandex.ru/algorithm2018/contest/7914/enter/ Диалоги из фильмов, которые предоставлялись на соревновании Яндекс.Алгоритм 2018 (нужна регистрация)]</ref>.
=== Системы с генерацией ответов ===
{| class="wikitable"
|-
! Модель !! Точность связок !! Точность слотов!! Особенности
|-
| [https://arxiv.org/abs/2006.01554 CHAN ] || 52.68 || 97.69|| Использование контекстной иерархической [[Механизм внимания | сети внимания]], динамическое регулирование весов различных слотов во время обучения.
|-
| [https://www.aclweb.org/anthology/2020.acl-main.567.pdf SAS ] || 51.03 || 97.20 || Применение механизма внимания к слотам, разделение информации слотов.
|-
| [https://www.aclweb.org/anthology/2020.acl-main.636.pdf MERET ] || 50.91 || 97.07|| [[Обучение с подкреплением | Обучение с подкреплением]].
|}
Качество определяется по двум метрикам: ''точность слотов'' (англ. slot accuracy) {{---}} запрошенный слот верный, и ''точность связок'' (англ. joint goal accuracy) {{---}} каждый слот в стостоянии верный. Для оценки по данному криетрию обычно используется датасет набор данных [http://dialogue.mi.eng.cam.ac.uk/index.php/corpus/ MultiWOZ].
Лучшие модели по качеству заполнения слотов:
{| class="wikitable"
|-
! Модель !! [https://en.wikipedia.org/wiki/F-score F1]!! Особенности
|-
| [https://github.com/sz128/slot_filling_and_intent_detection_of_SLU Enc-dec + BERT ] || 97.17|| Применение кодера-декодера с языковой моделью BERT.
|-
| [https://www.aclweb.org/anthology/D19-1214.pdf Stack-Propagation + BERT ] || 97.0|| Использование намерений для заполнения слотов, обнаружение намерений на уровне токенов.
|-
| [https://arxiv.org/pdf/1902.10909.pdf Joint BERT ] || 97.0|| Модель заполнения слотов на основе BERT.
|}
ДатасетНабор данных: [https://github.com/sonos/nlu-benchmark/tree/master/2017-06-custom-intent-engines Snips].
Лучшие модели по качеству определения намерений:
{| class="wikitable"
|-
! Модель !! [https://en.wikipedia.org/wiki/Accuracy_and_precision Точность (accuracy)]!! Особенности
|-
| [https://arxiv.org/pdf/1811.05370.pdf ELMo + BLSTM-CRF ] || 99.29|| Улучшение языковой модели ELMo, обучение без учителя для повышения производительности.
|-
| [https://github.com/sz128/slot_filling_and_intent_detection_of_SLU Enc-dec + ELMo ] || 99.14|| Применение кодера-декодера с языковой моделью ELMo.
|-
| Stack-Propagation + BERT || 99.0|| -//-
|}
ДатасетНабор данных: Snips.
== См. также ==
174
правки

Навигация