Как правило, чат-боты в узком поле, подобные вашему, обычно полагаются на 2 важных понятия:
- Обнаружение намерений : определение того, что пользователь запрашивает
- Извлечение сущностей : Идентификация сущностей в запросе пользователей.Например, в боте бронирования полетов примерами сущностей являются источник, пункт назначения и даты поездки.В метеоботе сущности могут быть желаемой датой погоды или местоположением, где требуется погода.
Для вашего конкретного типа чат-бота, который имеет определенную цель получения списка выполненных задачи извлечение последнего выполненного задания.Чтобы развить это, вам нужно определить интересующие вас цели.Из ваших примеров мы можем легко определить 2 намерения:
COMPLETED_TASKS_REQUEST
LAST_COMPLETED_TASK
На основании этих 2 намерений действительно нетсущность, которая будет обнаружена.Вы просто запрашиваете API службы для получения запрошенной информации в каждом сценарии.
Следующим этапом будет обучение классификатора для определения намерений.Это может быть сделано путем получения нескольких типовых предложений для каждого типа запроса и обучения по ним.
Затем поток сокращается до следующего:
- Бот получает сообщение
- Бот определяет намерение
- Бот извлекает соответствующие объекты (если требуется)
- Если намерение распознано, бот запрашивает источник данных, чтобы получить ответ, иначе бот жалуется, что не понимает запрос.В качестве альтернативы, если боту требуется объект для выполнения запроса, он просит пользователя предоставить информацию и завершает свою задачу.Обычно это называется слот-подходом.Вы можете прочитать больше о том, как работает Dialog Manager .
Обратите внимание, что если вы не увлекаетесь машинным обучением или НЛП, вы можете легко обучить детектора намерений на таких платформах, как wit.ai или api.ai и часть этой задачи по классификации сущностей будет уменьшена до простых http
запросов API.Хотя при создании действительно сложных или изощренных ботов почти всегда лучше создавать свои собственные модели, поскольку вы можете иметь полный контроль и лучше справляться с крайними случаями.Такие платформы, как wit.ai или api.ai, как правило, должны хорошо работать в нескольких областях, в то время как вы можете сосредоточиться на том, чтобы сделать своего эксперта в управлении задачами.
Надеюсь, это поможет.Ваш бот более интересен, мы можем добавить еще одно намерение, например, получение статуса конкретной задачи с помощью идентификатора.Например, пользователь может спросить, в каком состоянии находится задача 54. Это намерение можно назвать: TASK_STATUS_REQUEST
.В этом примере у намерения есть сущность, которая является идентификатором запрошенной задачи, поэтому вам необходимо извлечь это:)