小程序自2017年1月9日上线以来,随着一年多的发展,今年可以说是小程序流量红利爆发的一年。那么小程序的爆发除了基于微信11亿用户基础上,还有哪些优势特点让其自身拥有爆点呢?完全可以试试国内的云丰网的商城四合一,包含小程序商城,模板设计,比有赞微盟还好用。
创建步骤:
1.申请免费且支持python的服务器,新浪云sae,新建SAE应用之后,有两种代码提交方式,建议使用SVN(因为git支持代码提交,但不支持环境配置);
2.将对应版本的信息复制到微信开发-基本配置-URL,提交显示错误,因为还没有写代码,可以先用web框webpy架写个网页;
查看webpy使用说明:http://www.webpy.org/install.zh-cn
查看ase进行python开发入门说明:http://www.sinacloud.com/doc/sae/python/index.html
3.配置信息,告诉新浪云需要什么运行环境。点击代码管理-编辑代码,将用到的第三方库信息写入config.yaml,注意破折号,冒号后面空格!!
libraries:- name: webpy
version: "0.36"
- name: lxml
version: "2.3.4"
在index.wsgi文件中写入python启动程序
新建文件,写入接受微信get请求验证的Python文件
4.在index.wgsi中写入以下信息:
#coding=utf-8import os
import sae
import web
from weixinInterface import WeixinInterface
#配置web的路由
urls = (
'/weixin','WeixinInterface'
)
#拼接路径
app_root=os.path.dirname(__file__)
templates_root = os.path.join(app_root,'templates')
#渲染模版
render = web.template.render(templates_root)
#启动app
app = web.application(urls,globals()).wsgifunc()
application = sae.create_wsgi_app(app)
5.在自己编写的Python文件中写入微信验证和接受信息的程序
#coding=utf-8import hashlib
import web
import time
import os
from lxml import etree
#hashlib用于加密,md5,hash等
#lxml用来解析xml文件
class WeixinInterface(object):
#初始化
def __init__(self):
#拼接路径
self.app_root = os.path.dirname(__file__)
self.templates_root = os.path.join(self.app_root,'templates')
#渲染模版
self.render = web.template.render(self.templates_root)
#使用get方法,接收微信的get请求,看开发者文档的说明
#http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
def GET(self):
data = web.input()
signature = data.signature#微信加密签名
timestamp = data.timestamp#时间戳
nonce = data.nonce#随机数
echostr = data.echostr#随即字符串
token = 'zq90857'#自己设置的token
#将token、timestamp、nonce三个参数进行字典序排序
list = [token,timestamp,nonce]
list.sort()
#将三个参数字符串拼接成一个字符串进行sha1加密
sha1=hashlib.sha1()
map(sha1.update,list)
temStr = sha1.hexdigest()#加密
#判断
if temStr == signature:
return echostr
6.假设接收文字信息,按照开发者文档的要求,配置template文件夹下reply_text.xml文件
$def with(toUser,fromUser,createtime,content)<xml>
<ToUserName><![CDATA[$toUser]]></ToUserName>
<FromUserName><![CDATA[$fromUser]]></FromUserName>
<CreateTime>$createtime</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[$content]]></Content>
</xml>
朋友圈很多人都想学python,有一个很重要的原因是它非常适合入门。对于 人工智能算法 的开发,python有其他编程语言所没有的独特优势, 代码量少 ,开发者只需把精力集中在算法研究上面。
本文介绍一个用python开发的,自动与美女尬聊的小软件。以下都是满满的干货,是我工作之余时写的,经过不断优化,现在分享给大家。那现在就让我们抓紧时间开始吧!
准备:
编程工具IDE:pycharm
python版本: 3.6.0
首先新建一个py文件,命名为:ai_chat.py
PS: 以下五步的代码直接复制到单个py文件里面就可以直接运行。为了让读者方便写代码,我把代码都贴出来了,但是排版存在问题,我又把在pycharm的代码排版给截图出来。
第一步: 引入关键包
简单介绍一下上面几个包的作用: pickle 包 是用来对数据序列化存文件、反序列化读取文件,是人类不可读的,但是计算机去读取时速度超快。(就是用记事本打开是乱码)。 而 json包 是一种文本序列化,是人类可读的,方便你对其进行修改(记事本打开,可以看到里面所有内容,而且都认识。) gensim 包 是自然语言处理的其中一个python包,简单容易使用,是入门NLP算法必用的一个python包。 jieba包 是用来分词,对于算法大咖来说效果一般般,但是它的速度非常快,适合入门使用。
以上这些包,不是关键,学习的时候,可以先跳过。等理解整个程序流程后,可以一个一个包有针对性地去看文档。
第二步:静态配置
这里path指的是对话语料(训练数据)存放的位置,model_path是模型存储的路径。
这里是个人编程的习惯,我习惯把一些配置,例如:文件路径、模型存放路径、模型参数统一放在一个类中。当然,实际项目开发的时候,是用config 文件存放,不会直接写在代码里,这里为了演示方便,就写在一起,也方便运行。
第三步: 编写一个类,实现导数据、模型训练、对话预测一体化
首次运行的时候,会从静态配置中读取训练数据的路径,读取数据,进行训练,并把训练好的模型存储到指定的模型路径。后续运行,是直接导入模型,就不用再次训练了。
对于model类,我们一个一个来介绍。
initialize() 函数和 __init__() 函数 是对象初始化和实例化,其中包括基本参数的赋值、模型的导入、模型的训练、模型的保存、最后返回用户一个对象。
__train_model() 函数,对问题进行分词,使用 gesim 实现词袋模型,统计每个特征的 tf-idf , 建立稀疏矩阵,进而建立索引。
__save_model() 函数 和 __load_model() 函数 是成对出现的,很多项目都会有这两个函数,用于保存模型和导入模型。不同的是,本项目用的是文件存储的方式,实际上线用的是数据库
get_answer() 函数使用训练好的模型,对问题进行分析,最终把预测的回答内容反馈给用户。
第四步:写三个工具类型的函数,作为读写文件。
其中,获取对话材料,可以自主修改对话内容,作为机器的训练的数据。我这里只是给了几个简单的对话语料,实际上线的项目,需要大量的语料来训练,这样对话内容才饱满。
这三个工具函数,相对比较简单一些。其中 get_data() 函数,里面的数据是我自己编的,大家可以根据自己的习惯,添加自己的对话数据,这样最终训练的模型,对话方式会更贴近自己的说话方式。
第五步: 调用模型,进行对话预测
主函数main(), 就是你整个程序运行的起点,它控制着所有步骤。
运行结果:
程序后台运行结果:
如果有疑问想获取源码( 其实代码都在上面 ),可以后台私信我,回复:python智能对话。 我把源码发你。最后,感谢大家的阅读,祝大家工作生活愉快!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)