4

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

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

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

4

5 回答 5

5

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

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

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

  • COMPLETED_TASKS_REQUEST
  • LAST_COMPLETED_TASK

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

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

然后流量减少到以下内容:

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

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

希望这可以帮助。

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

于 2016-09-30T14:14:42.747 回答
3

This is a NLP task, and for building a system like this require lot of R&D. You can start by building a set of question that might be asked. Analyzing the questions and coming up with word patterns for each type of question. The next step would be to transform the English sentence into some form of formal structure( maybe SQL or lambda calculus). The backend DB should have the data stored in it which can be queried by the formal language.

The main problem lies in converting the English sentence to a formal language. You can start with regex and progress to make it more complex by checking Part of Speech, Syntactic structure of input sentences. Check out NLTK package for doing NLP tasks.

于 2011-10-21T00:52:02.043 回答
1

在聊天机器人库之上,您可以集成像连字符这样的即时消息库,以启用聊天机器人进行移动和 Web 通信。

这里有几个简单的步骤:

  1. Hyphenate 控制台:通过在 Hyphenate 控制台 (console.hyphenate.io) 上注册一个帐户来创建一个聊天机器人实体,通过为机器人创建 Hyphenate IM 帐户来为您的聊天机器人提供身份和声音。
  2. 平台 SDK:将您的应用程序(iOS、Android 或 Web)与 Hyphenate IM 服务和开源 UI 库集成。
  3. Webhook(事件回调):设置 Hyphenate webhook 以接收来自用户的消息,这些消息推送到您的开发人员后端,然后使用您的聊天机器人 AI 库对其进行处理。
  4. 后端 REST API:通过 Hyphenate 从您的开发人员后端提供的 REST API 将聊天机器人的消息推送给用户。
  5. 万岁!Webhooks + 后端 REST API = 在聊天机器人和用户之间中继消息。

http://docs.hyphenate.io/docs/chat-bot-integration

于 2016-11-21T23:39:14.247 回答
1

您可以使用 Microsoft NLP 框架,这些框架非常直接且易于初学者使用。也早先被称为 LUIS,它是 Microsoft 提供的认知服务之一。它基本上是 API 调用的组合。

于 2019-05-12T08:37:45.293 回答
0

不确定您熟悉哪种语言,但在 Java 中,您可以使用 Apache OpenNLP 库来完成。这是一个非常好的和易于使用的自然语言处理库。要给出非常基本的方法,您可以将句子打断并将它们标记为单词。然后你可以对单词进行词形还原,使它们成为基本的单词形式。然后,您可以使用具有适当训练数据的分类器对它们进行分类或分类。更好的培训,更智能的聊天机器人。您还可以选择类别以使聊天机器人以更具吸引力的方式进行对话。这是一篇非常好的文章,带有详细的示例和演示

于 2019-05-12T08:29:07.403 回答