我用100行Python代码实现了和女神在微信上聊天(附代码)。
介绍一个用python开发的小软件,可以自动和美女聊天。以下全是干货,是我业余时间写的。经过不断优化,现在分享给大家。那我们赶紧开始吧!
准备:
编程工具IDE:pycharm
Python版本:3.6.0
首先,创建一个名为ai_chat.py的新py文件
PS:下面五个步骤的代码可以直接复制到单个py文件中,直接运行。为了方便读者写代码,我把所有代码都贴上来了,但是排版有问题,所以把代码在pycharm里排版截图。
第一步:介绍主要产品包
简单介绍一下上面几个包的功能:pickle包是用来序列化保存数据和反序列化读取文件的,人类无法读取,但是电脑读取的速度超级快。(就是用记事本打开都是乱码)。Json包是一种文本序列化,是人可读的,方便你修改(记事本打开,里面的内容你都能看到,都知道)。Gensim包是自然语言处理中的python包之一,简单易用,是入门NLP算法必须使用的python包。解霸包用于分词,对算法咖一般有效,但速度很快,适合入门。
这些包不是关键。学习的时候可以先跳过。了解了整个程序流程后,就可以一个一个的看文档了。
步骤2:静态配置
这里,path是指对话语料库(训练数据)存储的位置,model_path是模型存储的路径。
下面是个人编程的习惯。我习惯把一些配置,比如文件路径,模型存储路径,模型参数放在一个类里。当然,在开发实际项目时,它存储在一个配置文件中,不会直接写在代码中。这里为了演示方便,写在一起,也方便操作。
第三步:编写一个类,实现数据引导、模型训练、对话预测的一体化。
第一次运行时,它会从静态配置中读取训练数据的路径,读取数据,进行训练,并将训练好的模型存储到指定的模型路径。后续操作是直接导入模型,不需要再次训练。
对于模型类的,就一个一个介绍吧。
Initialize()函数和__init__()函数是对象的初始化和实例化,包括基本参数的赋值、模型导入、模型训练、模型保存,最后返回一个对象给用户。
__train_model()函数,将问题分段,用gesim实现词袋模型,统计每个特征的tf-idf,建立稀疏矩阵,然后建立索引。
__save_model()函数和__load_model()函数成对出现,很多项目都有这两个函数用于保存和导入模型。不同的是,这个项目使用的是文件存储的方式,实际上使用的是在线数据库。
get_answer()函数利用训练好的模型对问题进行分析,最后将预测的答案反馈给用户。
第四步:编写三个工具类型的函数来读写文件。
其中,获取的对话素材可以作为机器的训练数据,用于独立修改对话内容。这里我只是给了几个简单的对话语料库。线上项目其实是需要大量的语料库来训练的,这样对话内容才比较饱满。
这三个工具功能都比较简单。在get_data()函数中,数据是自己编译的。可以根据自己的习惯添加自己的对话数据,这样最终的训练模型和对话模式会更贴近自己的说话风格。
第五步:调用模型,进行对话预测。
主函数main()是你整个程序的起点,控制着所有的步骤。
运行结果:
程序后台运行结果:
如果有任何疑问,想获取源代码(其实代码都在上面),可以在后台私信我,回复:python智能对话。我会把源代码发给你。最后,感谢您的阅读,祝您工作生活愉快!