Изменения

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

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

1773 байта добавлено, 16:36, 23 января 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=
|-
| style="background:#eaecf0;" | '''Преимущества''' ||
* Детерминированность,* Свободное свободное расширение,* Интерпретируемостьинтерпретируемость.
||
* Может быть громоздкимСамостоятельно обучается,* Надо прописывать руками (пока что)* Сложнее разрабатывать нелинейные диалоговые моделине нужно думать о структуре разговора.
|-
| style="background:#eaecf0;" | '''Недостатки''' ||
* Самостоятельно обучаетсяМожет быть громоздким,* Не нужно думать о структуре разговоранадо прописывать руками,* сложнее разрабатывать нелинейные диалоговые модели.
||
* Черный ящик,* Нельзя нельзя быть уверенным в результате,* Сложно сложно изменять,* Может может долго обучаться и работать.
|}
* '''ASR'''. На вход поступает речь пользователя, которая затем [[Распознавание речи | распознается]] и переводится в текст. Результат работы компонента называют ''гипотезой'', так как полученный текст может соответствовать исходному сообщению не полностью.
* '''NLU'''. Фраза в текстовом виде анализируется системой: определяется домен, намерение, именованные сущности. Для распознавания намерений может применяться обученный на [[Векторное представление слов | векторном представлении фраз]] классификатор. [[Анализ текста Обработка естественного языка#spaCy | Распознавание именованных сущеностей]] является отдельной задачей извлечения информации. Для ее решения используются [[Теория формальных языков | формальные языки]], статистические модели и их комбинации. В результате работы компонента создается формальное описание фразы {{---}} семантический фрейм.
* '''DM'''. Состоянием диалога или контекстом является информация, которая была получена при общении с пользователем ранее. В соответствии с текущим состоянием выбирается политика поведения системы, корректируется семантический фрейм. В качестве поставщика знаний может выступать СУБД или Web API.
Если заменить каждую часть классической архитектуры искусственной нейронной сетью, то получим архитектуру изображенную на рисунке 3.
 
Входом у модели с данной архитектурой может быть компонент, который выполняет предобработку фразы пользователя и передает результаты внешним сетям (Intent Network и Belief Tracker).
Описание каждой части:
* '''Generation Network'''. Генерирует предложение, используя вектор действия <tex> \mathbf{o}_t </tex> и генератор языка. Предложение содержит специальные токены, которые заменяются на сущности из базы данных по указателю.
 
Входом у модели с данной архитектурой может быть компонент, который выполняет предобработку фразы пользователя и передает результаты внешним сетям (Intent Network и Belief Tracker).
Данную архитектуру также называют ''сквозной'' (англ. end-to-end trainable), так как на данных обучается каждая ее часть. Модель с данной архитектурой можно обобщить на намерения, которые не наблюдались во время обучения.
Система также имеет модуль адаптации, который анализирует ответы пользователя и решает, исключить предыдущий ответ системы из множества возможных ответов, увеличить вероятность его выбора или уменьшить.
Модель с такой архитектурой можно обучить на субтитрах фильмов. Данные для русского языка можно найти на Толоке<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.
== См. также ==
31
правка

Навигация