构建聊天机器人的最佳方式

Sap*_*Sap 4 java chatbot

我可以从什么框架开始创建一个简单的聊天机器人?机器人的重点非常有限(对于我的项目管理网站http://ayeboss.com).

可以将它与iPhone上的SIRI进行比较.我想创建一个简单的"回答"聊天,它将回答诸如"给我所有已完成的任务到目前为止"或"显示我最后完成的任务"或"显示|列表|给我我的待处理任务"等问题.用户询问后问题我想向用户提供数据

截至目前,我正在创建一个可能问题的正则表达式字典,如果没有匹配,那么我会进行lucene搜索以找到最接近的匹配.我做得对吗?

pel*_*umi 5

通常,像您这样的狭窄领域内的聊天机器人通常依赖于两个重要概念:

  • 意图检测:识别用户请求的内容
  • 实体提取:识别用户请求中的entites.例如,在航班预订中,实体的示例是源,目的地和旅行日期.在天气机器人中,实体可以是天气或需要天气的位置的期望日期.

对于您的特定类型的聊天机器人,其明确目标是检索已完成任务的列表并检索上次完成的任务.要开发它,您需要定义感兴趣的意图.从您的示例中我们可以轻松定义2个意图:

  • COMPLETED_TASKS_REQUEST
  • LAST_COMPLETED_TASK

基于这2个意图,实际上没有可检测到的实体.您只需查询服务API以检索每个方案中的请求信息.

下一阶段将培训分类器以识别意图.这可以通过为每种请求类型获取一些示例句子并对其进行培训来完成.

然后将流程简化为以下内容:

  1. Bot接收消息
  2. Bot识别意图
  3. Bot提取相关实体(如果需要)
  4. 如果意图被识别,则bot查询数据源以检索答案,否则bot抱怨它不理解请求.或者,如果机器人需要一个实体来完成请求,那么机器人会要求用户提供信息并完成其任务.这通常称为基于插槽的方法.您可以阅读有关Dialog Manager如何工作的更多信息.

请注意,如果您没有进入机器学习或NLP,您可以在wit.ai或api.ai等平台上轻松训练意图检测器,此任务的实体分类部分将简化为简单的httpAPI请求.虽然在构建真正复杂或复杂的机器人时,构建自己的模型几乎总是更好,因为您可以完全控制并且可以更好地处理边缘情况.像wit.ai或api.ai这样的平台通常需要在多个领域中表现良好,同时您可以专注于使您的任务管理成为专家.

希望这可以帮助.

PS:为了让您的机器人更有趣,我们可以添加一个更多的意图,例如检索给定id的特定任务的状态.例如,用户可以询问任务54的状态是什么.可以调用此意图: TASK_STATUS_REQUEST.在这个例子中,intent有一个实体,它是所请求任务的id,所以你需要提取:)