-
Notifications
You must be signed in to change notification settings - Fork 78
ru Dialogue State
Состояние диалога — это структурированное представление диалога. Он содержит всю информацию о пользователе, боте и диалоговом процессе.
DeepPavlov Agent подразумевает обработку информации без сохранения состояния, т. е. все компоненты не хранят в своих контейнерах никакой информации о конкретных диалогах. Существует возможность буферизации некоторых общих знаний, которые можно повторно использовать в разных диалогах. Например, News API Annotator некоторое время хранит все полученные от API новости (необязательный параметр), имея возможность использовать эти новости в других диалогах и не отправляя каждый раз запросы API.
Состояние диалога представлено в виде дисциплинарного словаря Python. Его высокоуровневая структура представлена слева на следующем изображении:
По сути, состояние диалога содержит идентификатор диалога, рейтинг, дату начала, дату окончания, список высказываний, профили человека и бота. Профили человека и бота представлены в виде словарей со следующими ключами: идентификатор, тип пользователя, атрибуты, персона, профиль (только для пользователя) и внешний идентификатор пользователя (только для пользователя). Структурная информация о профиле пользователя хранится в профиле (только определенные параметры) и атрибутах. Человеческие атрибуты также содержат состояния из заскриптованных навыков, потому что компоненты не имеют состояния, история диалогов доступна не полностью (обычно мы отправляем в навыки до 3-5 последних высказываний для экономии времени), а навыкам нужно знать, где поддиалог был закончен, и то, что обсуждалось ранее, чтобы не повторять сценарии и/или шаблоны. Структура атрибутов человека показана на изображении ниже:
Каждое человеческое высказывание представляет собой словарь следующей структуры:
Словарь содержит текст, информацию о пользователе, идентификатор высказывания, дату и время, атрибуты, гипотезы и аннотации. Как показано на изображении ниже, аннотации человеческого высказывания включают ключи, которые соответствуют именам аннотаторов человеческого высказывания из файла конфигурации конвейера. Каждое поле содержит форматированный вывод соответствующего аннотатора.
Каждое человеческое высказывание содержит гипотезы с вариантами ответов, относящимися к разным навыкам. Каждая гипотеза имеет следующую структуру: текст, достоверность, присвоенная навыку, название навыка, аннотации, атрибуты человека и бота. Если гипотеза будет выбрана в качестве окончательной, атрибуты человека и бота в гипотезе обновят атрибуты человека и бота на верхнем уровне состояния диалога. Подобно аннотациям человеческого высказывания, аннотации гипотез состоят из выходных данных кандидатов-аннотаторов из файла конфигурации конвейера.
Высказывания ботов имеют структуру, аналогичную человеческим высказываниям, за исключением гипотез, уверенности, исходного текста и активных полей навыков. Они также содержат аннотации высказываний бота, поскольку окончательный ответ может быть составлен из нескольких гипотез, а их аннотации не объединяются автоматически (кроме атрибутов человека и бота).