通常,像您这样的狭窄领域内的聊天机器人通常依赖于两个重要概念:
- 意图检测:识别用户请求的内容
- 实体提取:识别用户请求中的实体。例如,在航班预订机器人中,实体的示例是来源、目的地和旅行日期。在天气机器人中,实体可以是所需的天气日期或需要天气的位置。
对于您的特定类型的聊天机器人,它具有检索已完成任务列表和检索最后完成任务的明确目标。要开发此功能,您需要定义感兴趣的意图。从您的示例中,我们可以轻松定义 2 个意图:
COMPLETED_TASKS_REQUEST
LAST_COMPLETED_TASK
基于这两个意图,实际上没有要检测的实体。您只需查询您的服务 API 即可在每个场景中检索请求的信息。
下一阶段将是训练一个分类器来识别意图。这可以通过为每种请求类型获取一些示例句子并对其进行培训来完成。
然后流量减少到以下内容:
- 机器人收到消息
- 机器人识别意图
- 机器人提取相关实体(如果需要)
- 如果意图被识别,机器人查询数据源以检索答案,否则机器人抱怨它不理解请求。或者,如果机器人需要一个实体来完成请求,机器人会要求用户提供信息并完成其任务。这通常称为基于槽的方法。您可以阅读有关对话管理器如何工作的更多信息。
请注意,如果您不熟悉机器学习或 NLP,您可以轻松地在 wit.ai 或 api.ai 等平台上训练意图检测器,并且此任务的实体分类部分将简化为简单的http
API 请求。尽管在构建真正复杂或复杂的机器人时,构建自己的模型几乎总是更好,因为您可以完全控制并且可以更好地处理边缘情况。像 wit.ai 或 api.ai 这样的平台通常需要在多个领域表现良好,而您可以专注于让您的平台成为任务管理专家。
希望这可以帮助。
PS:为了让您的机器人更有趣,我们可以添加更多意图,例如检索给定 id 的特定任务的状态。例如,用户可以询问任务 54 的状态是什么。这个意图可以称为:
TASK_STATUS_REQUEST
。在这个例子中,intent 有一个实体,它是请求任务的 id,所以你需要提取它:)