学Python 掌握人工智能,创建聊天机器人,你不知道有哪些?
在最近几年 Python 一直在快速增长,python作为人工智能首先编程语言后,尤其是在去年跃居为排名第一的编程语言。在 Stack Ovehrflow 上,关于 Python 相关问题的访问数增长的比任何语言都快,作为世界上增长最快的主要编程语言,其相关行业薪资水平水涨船高。
近日,Python 语言作者 Guido van Rossum 在开发者邮件列表上 宣布:Python 2.7 将于 2020 年 1 月 1 日正式终止支持,用户如果想要在这个日期之后继续得到与 Python 2.7 有关的支持,则需要付费给商业供应商。
据悉,Python 2.7 原计划在 2015 年终止支持,但由于大量现有代码没有移植到 Python 3,所以开发者将终止支持的时间推迟到了 2020 年。
作为 Python 2.x 版本的最后一版,Python 2.7 于 2010 年 7 月 3 日发布。开发者表示,发布 Python 2.7 的目的在于,通过提供一些测量两者之间兼容性的措施,使 Python 2.x 的用户更容易将功能移植到 Python 3 上,所以 Python 2.7 也被认为是一种遗留语言。
另外,如果你使用的是 Python 2.7 版本,而且打算参加全国计算机等级考试的话,你将不符合 Python 科目的考试规则。
2020 年元旦之后,来自 Python 核心开发团队、PSF(Python 软件基金会)、Python.org 的支持,统统都停掉。
如果以后你想要对 2.7 的支持,你得给商业供应商掏钱了。当然了,因为 Python 是开源的,所以也欢迎大家来 fork。
官方核心开发团队已经努力工作够长的时间了,离 2020 年的 EOL 日期还有很长,(之前曾说过在 2015 年就终结),所以停止支持 Python 2,我完全没觉得有啥糟糕的。
在 2017 年 12 月 25 日,教育部宣布的全国计算机等级考试改革中,首次加入了 Python 科目,但是软件要求达到 Python 3.5.2 版本及以上 IDLE。
作为一门面向对象的编程语言,Python 相比起其他编程语言,具有语法简练、可读性强、易学易读,且开源、可移植、可拓展、可嵌入等优势,其面向对象也更加安全,是如今最为高效的编程语言之一。更有说法认为, Python 是最接近 AI(人工智能)的编程语言。
值得一提的是,屡次战胜人类围棋手的 AlphaGo,背后的程序很大一部分就是由 Python 语言编写的。
下面教你手把手教你用Python创建微信聊天机器人
准备工作
安装非常简单,从官方源下载安装
pip install -U wxpy
或者从豆瓣源安装
pip install -U wxpy -i "https://pypi.doubanio.com/simple/"
模块初探
安装完成后,我们来试下几个基本的功能
fromwxpy import*
bot = Bot()
运行上面的程序,会弹出二维码,用手机微信扫一扫即可实现登录。
但上面的程序有一个缺点,每次运行都要扫二维码。不过 wxpy 非常贴心地提供了缓存的选项,如下
bot = Bot(cache_path= True)
这样把登录信息保存下来,就不用每次都扫二维码了。
2. 发送消息
bot.file_helper.send( "hello")
这里的 file_helper 就是微信的文件传输助手,我们给文件传输助手发送一条消息,可以在手机端收到如下的消息
3. 接受消息
我们实现一个收到消息自动回复的功能。
@bot.register()
defprint_message(msg):
print(msg.text)
returnmsg.text
# 进入Python命令行,让程序保持运行
embed()
我们打开自己的公众号管理平台,在后端向自己发送消息,就可以收到如下的消息回复
4. 搜索好友及微信群
我们来实现一个搜索公司群、定位老板并转发老板消息的功能
fromwxpy import*
bot = Bot(cache_path= True)
# 定位公司群
company_group = bot.groups().search( '公司微信群')[ 0]
# 定位老板
boss = company_group.search( '老板大名')[ 0]
# 将老板的消息转发到文件传输助手
@bot.register(company_group)
defforward_boss_message(msg):
ifmsg.member == boss:
msg.forward(bot.file_helper, prefix= '老板发言')
# 堵塞线程
embed()
对于老板喜欢在群里面喊话的同学来说,这是一个福音,以后再也不用担心错失老板的重要信息了~~
数据统计
wxpy 的好友统计功能非常好用,可以很方便地统计好友的地理位置分布和性别分布。
下面的代码中,强哥统计了下自己的好友的分布情况,并打印出人数最多的 10 个地区。
fromwxpy import*
bot = Bot(cache_path= True)
friends_stat = bot.friends().stats()
friend_loc = [] # 每一个元素是一个二元列表,分别存储地区和人数信息
forprovince, count infriends_stat[ "province"].iteritems():
ifprovince != "":
friend_loc.append([province, count])
# 对人数倒序排序
friend_loc.sort(key= lambdax: x[ 1], reverse= True)
# 打印人数最多的10个地区
foritem infriend_loc[: 10]:
printitem[ 0], item[ 1]
统计出来的地区分布数据画成图表如下
大多数的好友也来自上海,上面的图表也如实地反应了这一情况。
统计性别分布的代码如下
forsex, count infriends_stat[ "sex"].iteritems():
# 1代表MALE, 2代表FEMALE
ifsex == 1:
print"MALE %d"% count
elifsex == 2:
print"FEMALE %d"% count
聊天机器人
有了上面功能简介部分的基础,我们来实现一个聊天机器人。
聊天机器人基于图灵机器人。图灵机器人可以在图灵机器人-中文语境下智能度最高的机器人大脑注册账号,并创建机器人。
# -*- coding: utf-8 -*-
importjson
importrequests
fromwxpy import*
# 调用图灵机器人API,发送消息并获得机器人的回复
defauto_reply(text):
url = "http://www.tuling123.com/openapi/api"
api_key = "你的api key"
payload = {
"key": api_key,
"info": text,
"userid": "123456"
}
r = requests.post(url, data=json.dumps(payload))
result = json.loads(r.content)
return"[tuling] "+ result[ "text"]
bot = Bot(console_qr= True, cache_path= True)
@bot.register(mp)
defforward_message(msg):
returnauto_reply(msg.text)
embed()
运行上面的程序,发送消息给自己,可以看到如下的对话
机器人太逗了,上来就要红包。