【问题标题】:Best way to build a chat bot构建聊天机器人的最佳方式
【发布时间】:2011-10-20 22:40:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: java chatbot


    【解决方案1】:

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

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

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

    • COMPLETED_TASKS_REQUEST
    • LAST_COMPLETED_TASK

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

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

    然后流程减少到以下:

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

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

    希望这会有所帮助。

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

    【讨论】:

      【解决方案2】:

      这是一项 NLP 任务,构建这样的系统需要大量的研发工作。您可以从构建一组可能会被问到的问题开始。分析问题并为每种类型的问题提出单词模式。下一步是将英语句子转换为某种形式的正式结构(可能是 SQL 或 lambda 演算)。后端数据库应该有数据存储在其中,可以通过形式语言查询。

      主要问题在于将英语句子转换为正式语言。您可以从正则表达式开始,并通过检查词性、输入句子的句法结构来使其更复杂。查看 NLTK 包以执行 NLP 任务。

      【讨论】:

        【解决方案3】:

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

        这里有几个简单的步骤:

        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

        【讨论】:

        • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
        • 感谢您的反馈,刚刚更新了评论,希望对您有所帮助。
        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-10-24
            • 2017-01-20
            • 2016-09-12
            • 2019-07-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多