Skip to content

ru Dialogue State

dilyararimovna edited this page May 9, 2023 · 1 revision

Состояние диалога в DeepPavlov Dream

Состояние диалога — это структурированное представление диалога. Он содержит всю информацию о пользователе, боте и диалоговом процессе.

DeepPavlov Agent подразумевает обработку информации без сохранения состояния, т. е. все компоненты не хранят в своих контейнерах никакой информации о конкретных диалогах. Существует возможность буферизации некоторых общих знаний, которые можно повторно использовать в разных диалогах. Например, News API Annotator некоторое время хранит все полученные от API новости (необязательный параметр), имея возможность использовать эти новости в других диалогах и не отправляя каждый раз запросы API.

Состояние диалога с высокого уровня

Состояние диалога представлено в виде дисциплинарного словаря Python. Его высокоуровневая структура представлена слева на следующем изображении:

DeepPavlovDream_0

По сути, состояние диалога содержит идентификатор диалога, рейтинг, дату начала, дату окончания, список высказываний, профили человека и бота. Профили человека и бота представлены в виде словарей со следующими ключами: идентификатор, тип пользователя, атрибуты, персона, профиль (только для пользователя) и внешний идентификатор пользователя (только для пользователя). Структурная информация о профиле пользователя хранится в профиле (только определенные параметры) и атрибутах. Человеческие атрибуты также содержат состояния из заскриптованных навыков, потому что компоненты не имеют состояния, история диалогов доступна не полностью (обычно мы отправляем в навыки до 3-5 последних высказываний для экономии времени), а навыкам нужно знать, где поддиалог был закончен, и то, что обсуждалось ранее, чтобы не повторять сценарии и/или шаблоны. Структура атрибутов человека показана на изображении ниже:

DeepPavlovDream_1

Каждое человеческое высказывание представляет собой словарь следующей структуры:

DeepPavlovDream_2

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

DeepPavlovDream_4

Каждое человеческое высказывание содержит гипотезы с вариантами ответов, относящимися к разным навыкам. Каждая гипотеза имеет следующую структуру: текст, достоверность, присвоенная навыку, название навыка, аннотации, атрибуты человека и бота. Если гипотеза будет выбрана в качестве окончательной, атрибуты человека и бота в гипотезе обновят атрибуты человека и бота на верхнем уровне состояния диалога. Подобно аннотациям человеческого высказывания, аннотации гипотез состоят из выходных данных кандидатов-аннотаторов из файла конфигурации конвейера.

DeepPavlovDream_3

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

DeepPavlovDream_6