打造微信聊天机器人2

摘要:利用微信公众号开发一个聊天机器人。

在上一篇文章里,我们已经完成了聊天机器人的基本框架,现在我们要让它更进一步。

机器鹦鹉

上篇文章里的实现服务器只能给指定的用户回复消息,这是因为我们把回复里的toUser字段写死了。正确的做法应该是从收到的消息里解析出fromUser字段,然后填在回复的toUser字段,这样就可以跟任意用户对话了。为了免去处理XML的麻烦,从现在开始,我们将彻底放弃上一篇文章里的代码,转而使用现成的框架WeRoBot

首先还是使用pip安装WeRoBot。

pip install WeRoBot

WeRoBot的用法,在它的文档里已经写得比较详细了,只需要依葫芦画瓢就可以写出一个简单的机器人。

import werobot

robot = werobot.WeRoBot(token='你的Token')

@robot.text
def echo(message):
    return message.content

robot.run()

这段代码实现了一个会学舌机器鹦鹉,它接收文本消息并将消息内容原样返回。WeRoBot把消息验证和XML处理都封装好了,因此这段代码比之前的要简单许多。

女神Alice

解决了接收和回复消息的基本问题,接下来就要给我们的机器人添加“智能”了。感谢科学家和程序员们的辛勤劳动,我们并不需要自己编写复杂的算法,只需要增加短短的几行代码就可以召唤一个专属女神Alice陪你聊天了!首先要安装aiml模块。

pip install aiml

改造一下刚才的代码,完成从鹦鹉到女神的飞跃!

import werobot
import aiml
import os

os.chdir('/usr/lib/python2.7/site-package/aiml/alice')
alice = aiml.Kernel()
alice.learn("startup.xml")
alice.respond('LOAD ALICE')

robot = werobot.WeRoBot(token='你的Token')

@robot.text
def echo(message):
    return alice.respond(message.content)

robot.run()

你可以尝试调戏一下自己的机器人,效果绝对超乎想像,反正我是被震惊到了。不过……只能用English。

现在,让我们来了解一下女神Alice的身世。Alice是"Artificial Linguistic Internet Computer Entity"的缩写,是由Richard Wallace开发的自然语言聊天机器人,曾经多次活动人工智能领域的大奖。如果你仔细阅读了上面的代码,就会注意到/usr/lib/python2.7/site-package/aiml/alice这个目录。这里就是Alice的智慧所在,里面有很多扩展名为aiml的文件,这些文件定义了Alice对各种问题的回答方式。如果你打开这些aiml文件看一下,就会对女神的心思了然于胸了。想了解更多关于AIML的信息,请访问官方网站PandoraBots提供了一些帮助创建AIML机器人的工具。

不管Alice有多么善解人意,本质上来讲,她都是按照预先写好的规则来回复,她的“智慧”取决于我们提供的规则库。接下来将尝试采用当下最火热的机器学习的方式来实现更加智能的聊天机器人。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,731评论 0 15
  • 摘要:利用微信公众号开发一个聊天机器人。 前置条件 Linux基础 一点儿CGI和Python基础 一台运行Lin...
    FunFeast阅读 4,798评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,008评论 25 709
  • 什么才是真正的责任感?我一直以为自己是个有责任感的人,但是对照责任的公式来看,我的责任感真的只是说说而已。责任=身...
    我要我的价值阅读 1,722评论 0 0
  • 今天基本上师姐们都走完了,最早走的那一批在周五,今天早上这批已经是最后走的了。从此以后,大学里面我再也没有师姐了,...
    杨俣俣阅读 1,761评论 0 0