31
правка
Изменения
Нет описания правки
Системы с ограниченными ответами (англ. retrieval/example-based) по последовательности фраз выдают наиболее подходящий ответ из списка возможных. Преимуществом таких систем является то, что ответы строго контролируются: можно удалить нежелательные шутки, нецензурные или критикующие выражения.
'''Интерактивная система неформальных ответов''' (англ. informal response interactive system, IRIS) представлена на рисунке 4. Прямоугольником обозначены функциональные модули, цилиндром {{---}} базы данных. Особенностью данной системы является то, , Здесь выполняется сравнение не только текущей фразы пользователя, но и вектора текущей истории диалога с другими диалогами в базе данных, что позволяет учесть контекст. Первая фраза пользователя попадает в модуль инициализации, который обеспечивает приветствие пользователя и извлечение его имени. Имя пользователя используется менеджером диалога, чтобы инициализировать вектор истории диалога. Если пользователь не известен системе (его имя отуствует в Vocabulary Learning), то система инициализирует историю случайным вектором из хранилища историй. Когда инициализация заканчивается, система спрашивает пользователя, чего он хочет. В каждой новой фразе менеджер диалога выполняет замену слов из словаря на плейсхолдеры (Dynamic replacement), после чего выполняется токенизация и векторизация фразы. Если встречаются токены, которых нет ни в истории, ни в словаре, то они обозначаются неизветсными (англ. unknown vocabulary terms (OOVs). Неизвестные токены обрабатываются специальным модулем (Vocabulary learning), который либо получает определение от пользователя, либо из внешнего источника информации. Система вычисляет косинусное расстояние между текущей фразой пользователя и всеми фразами, хранимыми в базе данных. Это значение используется, чтобы извлечь от 50 до 100 фраз, которые могут быть ответами. Затем вычисляется та же метрика, но уже между вектором текущей истории диалога (которая включает как высказывания пользователя, так и фразы системы) и векторами других историй. Чтобы усилить последние фразы в текущей истории, используется коэффициент забывания. Полученные метрики объединяются при помощи log-linear <tex> e^{c_1 + c_2} </tex>, фразы ранжируются, и выбирается случайная сверху. Система также имеет модуль адаптации, который анализирует ответы пользователя и решает, исключить предыдущий ответ системы из множества возможных ответов, увеличить вероятность его выбора или уменьшить.
[[Файл : Ds-iris.png | 350px | thumb | right |
Рисунок 4 <ref>[https://www.aclweb.org/anthology/P12-3007.pdf Rafael E. Banchs, Haizhou Li, IRIS: a Chat-oriented Dialogue System based on the Vector Space Model]</ref>. Архитектура IRIS]]
Первая фраза пользователя попадает в модуль инициализации, который обеспечивает приветствие пользователя и извлечение его имени. Имя пользователя используется менеджером диалога, чтобы инициализировать вектор истории диалога. Если пользователь не известен системе (его имя отуствует в Vocabulary Learning), то система инициализирует историю случайным вектором из хранилища историй. Когда инициализация заканчивается, система спрашивает пользователя, чего он хочет. В каждой новой фразе менеджер диалога при помощи модуля Dynamic replacement выполняет замену слов из словаря на плейсхолдеры (их определения, например, Иван <tex> \to </tex> имя), после чего выполняется токенизация и векторизация фразы. Если встречаются токены, которых нет ни в истории, ни в словаре, то они считаются неизветсными (англ. unknown vocabulary terms, OOVs). Неизвестные токены обрабатываются модулем Vocabulary learning, который получает определение от пользователя или из внешнего источника информации. Система вычисляет косинусное расстояние между текущей фразой пользователя и всеми фразами, хранимыми в базе данных. Полученное значение используется, чтобы извлечь от 50 до 100 фраз, которые могут стать ответами. Затем вычисляется та же метрика, но уже между вектором текущей истории диалога (которая включает высказывания как пользователя, так и системы) и векторами других историй. Чтобы усилить последние фразы в текущей истории, используется ''коэффициент забывания''. Полученные метрики объединяются при помощи лог-линейной комбинации <tex> e^{w_1c_1 + w_2c_2} </tex>, а результат используется для ранжирования потенциальных ответов. Итоговый ответ выбирается случайно среди нескольких ответов на вершине списка. Система также имеет модуль адаптации, который анализирует ответы пользователя и решает, исключить предыдущий ответ системы из множества возможных ответов, увеличить вероятность его выбора или уменьшить. Модель с такой архитектурой можно обучить на фильмахсубтитрах фильмов. Данные для русского языка можно найти на Толоке<ref> [https://toloka.ai/ru/datasets Датасеты Толоки]</ref> <ref>[https://contest.yandex.ru/algorithm2018/contest/7914/enter/ Диалоги из фильмов, которые предоставлялись на соревновании Яндекс.Алгоритм 2018 (нужна регистрация)]</ref>.
=== Системы с генерацией ответов ===
Системы с генерацией ответов (англ. generation-basebased) генерируют ответ пословно. Такие системы более гибкие, но фильтровать их сложней.
== Существующие диалоговые системы ==
'''AliMe Assist''' {{---}} помощник для пользователей магазина AliExpress. Его архитектура представлена на рисунке 5. Серым цветом выделены блоки, где используются методы машинного обучения. Система состоит из 3 подсистем: поиск информации или решения, выполнение задачи для клиента и путая переписка простое общение в чате. Для извлечения намерения вопрос <tex> q </tex> проверяется на соответствие шаблонам при помощи ''дерева суффиксов '' (англ. trie-based pattern matching). Если соответствие найти не удалось, то вопрос передается классификатору, построенному на CNN-сети. На вход сети подаются эмбеддинги слов вопроса и семантических тэгов, которые относятся к нему и контексту (предыдущему вопросу). Для получения эмбеддингов используется FastText. Выбор CNN-сети вместо RNN основан на том, что первая сеть учитывает контекстную информацию слов (слова перед и после текущего слова) и работает быстрей. Точность классификации 40 намерений составляет 89,91%.
[[Файл : Ds-alime.png | 350px | thumb | right |
Рисунок 5<ref>[https://arxiv.org/pdf/1801.05032.pdf Feng-Lin Li, Minghui Qiu, AliMe Assist: An Intelligent Assistant for Creating an Innovative E-commerce Experience]</ref>. Архитектура AliMe Assist]]
'''Xiaolce ''' {{---}} чат-бот, развиваемый китайским отделением Microsoft. Состоит из множества навыков, которые делятся на эмоциональные и рациональные. Имеется навык, который комментирует картинки или сочиняет по ним стихи. Сценарии диалога делятся на персональные и социальные. Бот старается установить эмоциональную связь с пользователем, чтобы продлить диалог с ним.
'''Microsoft Cortana ''' {{---}} виртуальный голосовой помощник. Состоит из можества навыков, натренированных на конкретные задачи. В отличие от классической архитектуры, где выбирается подходящий навык, здесь текст проходит через все навыки, после чего выбирается подходящий ответ. Также каждый навык использует результаты обработки предыдущей фразы от всех навыков. При таком подходе требуется больше ресурсов, но он позволяет существенно увеличить точность. Схематично процесс обработки фразы пользователя представлен на рисунке 6.
[[Файл : Ds-cortana-arch.png | 350px | thumb | right |
Рисунок 6<ref>[https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/CortanaLUDialog-FromSLTproceedings.pdf R. Sarikaya, P. A. Crook, AN OVERVIEW OF END–TO–END LANGUAGE UNDERSTANDING AND DIALOG MANAGEMENT FOR PERSONAL DIGITAL ASSISTANTS]</ref>. АрхитектураКортаны]]
== Фреймворки ==
=== DeepPavlov.ai ===
Основывается на таких библиотеках как TensorFlow, Keras и PyTorch. Включает множество компонентов, каждый из которых решает отдельюу отдельную задачу диалоговых систем. Имеется модель для распознавания именованных сущностей, намерений, обработки истории диалога, анализа поведения пользователя и другие. Поведение агента диалоговой системы определяется набором навыков, каждый из которых строится из модулей. Когда агент получает фразу пользователя, специальный менеджер решает, какому навыку передать ее для обработки. Схема ядра представлена на рисунке 7. Пример использования приведен на рисунке 8.
[[Файл : Ds-dp-arch.png | 300px | thumb | right |
Рисунок 7. Схема ядра DeepPavlov]]
{|-valign="top"
|[[Файл: Ds-deeppavlov-hello.png | thumb | 600px | Рисунок 8. Тривиальный бот на DeepPavlov ]]
|}
*[[Обработка естественного языка]]
*[[Механизм внимания]]
*[[Синтез речи]]
== Примечания ==
== Источники информации ==
* [упсhttps://www.youtube.com/watch?v=uLsI4fanlRI&t=4327s Лекция по подходам к построению диалоговых систем от Михаила Бурцева]* [https://www.youtube.com/watch?v=Asftac_wcs8 Семинар Multitask vs Transfer от Антона Астахова]* [http://datareview.info/article/neyronnyiy-mashinnyiy-perevod-s-primeneniem-gpu-vvodnyiy-kurs-chast-2/ Нейронный машинный перевод с применением GPU. Вводный курс. Часть 2]* [https://www.cs.cmu.edu/~tianchez/data/TianchezPhdProposal.pdf Tiancheng Zhao, Learning Generative End-to-end Dialog Systems with Knowledge]* [https://www.alibabacloud.com/blog/progress-in-dialog-management-model-research_596140 Alibaba Clouder, Progress in Dialog Management Model Research]* [https://github.com/voicy-ai/DialogStateTracking DialogStateTracking]* [https://habr.com/ru/company/abbyy/blog/437008/ NLP. Основы. Техники. Саморазвитие. Часть 1]* [https://habr.com/ru/company/abbyy/blog/449514/ NLP. Основы. Техники. Саморазвитие. Часть 2: NER]* [https://www.baeldung.com/java-pattern-matching-suffix-tree Fast Pattern Matching of Strings Using Suffix Tree in Java]