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

标签 java chatbot

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

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

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

最佳答案

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

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

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

  • COMPLETED_TASKS_REQUEST
  • LAST_COMPLETED_TASK

基于这 2 个意图,确实没有检测到实体。您只需查询您的服务 API 即可检索每个场景中请求的信息。

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

然后流程缩减为:

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

请注意,如果您不喜欢机器学习或 NLP,您可以轻松地在 wit.ai 或 api.ai 等平台上训练意图检测器,并且此任务的实体分类部分将简化为简单的 http API 请求。尽管在构建真正复杂或复杂的机器人时,构建自己的模型几乎总是更好,因为您可以完全控制并更好地处理边缘情况。 wit.ai 或 api.ai 等平台通常需要在多个领域表现良好,而您可以专注于让自己成为任务管理方面的专家。

希望这对您有所帮助。

PS:为了让您的机器人更有趣,我们可以再添加一个意图,例如在给定 ID 的情况下检索特定任务的状态。例如,用户可以询问任务 54 的状态。此意图可以称为: TASK_STATUS_REQUEST。在此示例中,意图有一个实体,它是所请求任务的 ID,因此您需要提取该实体 :)

关于java - 构建聊天机器人的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7843109/

相关文章:

java - Selenium moveToElement() 到 Selenide

python - 在 Dialogflow V2 API 的 EventInput 中设置参数

json - 为什么在对话流中创建的丰富消息不会出现在 Slack 上测试的机器人中?

java - 将时间戳转换为日期和时间 Java

java - android studio中的gradlew.bat无效目录

python - DialogFlow 检测意图文本

chatbot - 如何使用 langchain 创建多用户聊天机器人

javascript - 如何在使用 C# 中的 Microsoft Bot Framework SDK V4 开发的 ChatBot 中添加条件 w.r.t 自适应卡?

java - Web 服务 (JAX-WS) 和继承

java - 负载因子对查找时间的影响?