【问题标题】:How to make a more advanced responding chatbot with NLTK?如何使用 NLTK 制作更高级的响应聊天机器人?
【发布时间】:2020-01-11 15:18:10
【问题描述】:

我已经对如何创建聊天机器人(响应部分)进行了大量研究,但是我找不到使其更高级的方法。例如,我不断看到 NLTK 反射,但我想知道 NLTK(或其他模块)中是否有更高级的方法可以让我创建学习机器人、智能机器人甚至 AI,但我在寻找模块、教程方面遇到困难或有助于开始和以这种方式进行的文档。反射并不总是像在上下文中响应那样工作得很好,除非您为内容预先编写了许多行代码,这些代码效率低下并且可能并不总是准确的。注意:我不想被勺子喂食,我只想指出我可以做和看的事情的正确方向。

解决方案是 例如用户问:“你最喜欢的演员是谁?”

机器人回复:“布拉德皮特”

(虽然是布拉德,因为广告 xD)

下面是我试图远离的代码。

pairs = [
    [
        r"my name is (.*)",
        ["Hello %1, How are you today ?",]
    ],
     [
        r"what is your name ?",
        ["My name is Chatty and I'm a chatbot ?",]
    ],
    [
        r"how are you ?",
        ["I'm doing good\nHow about You ?",]
    ],
    [
        r"sorry (.*)",
        ["Its alright","Its OK, never mind",]
    ],
    [
        r"i'm (.*) doing good",
        ["Nice to hear that","Alright :)",]
    ]```    

【问题讨论】:

    标签: python nlp nltk bots chatbot


    【解决方案1】:

    会话代理有两种主要风格:retrieval and generative。您展示的正则表达式代码可以被认为是一个非常简单的检索模型。更复杂的检索模型使用分类器(此时几乎总是神经网络)对用户输入进行分类。生成模型将输入到输出的映射视为机器翻译问题,并使用来自 NMT、神经机器翻译的技术。

    一些资源:

    • Speech and Language processing 的新版本,由 Dan Jurafsky 和 ​​James H. Martin 编写,包含三个关于机器人/问答的章节
    • 如果您想构建一些实用的东西,那么您应该使用成熟的库。 IMO,Rasa 在这一点上已经领先了几年

    【讨论】:

      【解决方案2】:

      您想要远离的代码曾经是 cahtbots 的开端(Eliza:https://blog.infermedica.com/introduction-to-chatbots-in-healthcare/)。一个好的起点是完整的对话系统。例如,您可以使用 trindikit for python,它基本上是一个对话管理器。此外,您需要实现某种常识推理数据库(例如,比较 Erik T Mueller:Commonsense Reasoning - An event Calculus based approach)。通常,大多数聊天机器人都专注于特定领域(产品问题、推荐人等),因此您需要准确确定哪些意图可能会引发哪些语音行为,并对它们进行相应的分类和建模(LSTM 用于分类,Bayes 用于生产)。 在这一切之上,您要么必须构建一个表面实现系统,要么使用罐头文本作为模板,当您的领域越来越扩展时,这项工作就会越来越多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-15
        • 1970-01-01
        • 1970-01-01
        • 2012-07-03
        相关资源
        最近更新 更多