首页 > 解决方案 > 如何使用 NLTK 制作更高级的响应聊天机器人?

问题描述

我已经对如何创建聊天机器人(响应部分)进行了大量研究,但是我找不到让它更先进的方法。例如,我不断看到 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 :)",]
    ]```    

标签: pythonnlpnltkbotschatbot

解决方案


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

一些资源:

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

推荐阅读