博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
itchat微信助手,kaggle 电影数据集分析,基于内容的电影推荐
阅读量:3889 次
发布时间:2019-05-23

本文共 2300 字,大约阅读时间需要 7 分钟。

项目的github地址:

1.项目运行

配置完成环境后:(关于调用的服务接口所需要的秘钥我都没有修改,但为了你程序能一直运行最好自己申请相应的服务

运行项目:运行WeixinChat文件中的main方法

需要打开chrome浏览器,以及数据库处于运行状态。
打开时间大约为1分钟,因为需要先运行电影数据集分析。
打开完成后,需要扫描二维码进行登录,之后找其他人和你聊天完成测试。

出现问题请留言反馈。

2.项目成果演示:

1.操作说明:                                                                 2.对话功能                                 3.藏头诗功能:

                  

                      4.定时任务                                                         5.小冰颜值测试                                         6.小冰作诗

                

          7.电影排行榜                                   8.基于内容的电影推荐                                9.搜索电影详细信息

                     

2.环境和准备工作:

1.建立数据库:

a:定时消息数据库构建:

id:时间戳int(11)
给谁发消息,usrname varchar(256)
什么时候发 sendtime int(11)
发送什么 message text
CREATE table send(
id int(11) PRIMARY KEY,
usrname varchar(256),
sendtime int(11),
message text
)

b:电影排行榜表

电影id
电影名称

CREATE TABLE `movierank` (

 `id` int(11) PRIMARY KEY,
 `title` varchar(256) DEFAULT NULL,
)

2.申请阿里云产品:

智能语音交互,(来实现wav格式的语音转化为汉字):修改AccessToken文件中:init方法中的access_key_id ,access_key_secret以及change方法中的appKey。

3.申请图灵机器人权限

(完成图灵机器人和小冰对话功能):修改WeixinChat文件,gettuling方法中的apiKey。

4.配置ffmpeg环境

(用来将mp3格式语音转化为wav格式):参考

5.选取合适的chromedriver,并修改moviename文件中的spider类的init方法中的路径。

(用来使用selenium):参考

6.python3.6环境。

3.可以做的优化:

1.当前只支持同时和一个人对话,因为偷懒只保存了单个状态变量,应该修改为使用字典存储临时变量。

2.增加定时提醒任务格式,且改为定时从数据库查询任务。
3.对某些耗时任务比如生成藏头诗等最好新建线程来完成。
4.模块重新整理,不太纯粹。
5.增加日志系统

4项目模块讲解:

因为有源码,所以自己去github上下载源码对照着看吧,我就不贴代码了

因为项目很简单,直接看代码就能看懂,我也不多bb,只介绍一下模块功能。

data文件为项目的数据集和rnn藏头诗的训练模型和chrome的启动程序。

代码一共7个文件,不同模块不同文件,6个文件中都为类,在WeixinChat脚本中调用这6个类。

1.itchat微信聊天模块:位于WeixinChat文件中。

可以参考官方文档,也可以参考这个总结:。

基本的回复逻辑在此文件的process方法中,通过全局的状态变量来确定当前进行到了哪一步。

2.语音转化文字模块:见AccessToken文件中VoiceChange类的change方法。

itchat下载语音:msg['Text'](msg['FileName'])保存的为mp3格式,需要使用ffmpeg来转化成wav格式,转换之后调用阿里云提供的功能接口进行转化。

参考:

AccessToken文件中的其他方法的原理请访问阿里云智能语音交互官方文档。

3.机器人聊天模块:见整个xiaobing文件和WeixinChat文件中的gettuling和bingreplay方法

图灵机器人请参考官方文档,小冰这个部分时我舍友直接从网上找的代码,忘记是谁的了。

xiaobing文件包括图片颜值测试和图片作诗功能。

4.定时任务模块:见WeixinChat文件send方法和process方法某一部分。

参考:,关于sched参考:

刚开始通过sched实现,发现会阻塞线程,然后又通过timer来完成的。

当前我只实现了一种格式:n分钟后提醒我xxxxx,直接通过正则匹配获取数据然后使用threading.Timer开启定时任务。虽然将信息保存到了数据库,但是数据库并没有参与定时任务的生成,只用来记录定时任务信息。

但是这样只支持短时间的任务生成。如果是长时间则需要开启线程来定时查询数据库,这样也更合适一些。

5.藏头诗模块:见rccpoem文件。

我们之前实验给的源码,我反正看不懂。

6.电影推荐模块:见movie文件。

参考文档:

1.
2.
3.

第三篇文章写得非常不错,强烈推荐。

这三篇文章都有讲解,我的代码也有注释,我就不写讲解了,都是最基本的调接口。

github中有一个电影数据分析的notebook,可以参考。

7.电影详细信息模块:见moviename文件的search方法。

参考:

因为电影推荐数据集是英文,所以我们需要将推荐出来的英文名字转化成中文。如何转化呢:通过豆瓣电影搜索,默认搜索出来的第一个电影就是我们要找的电影。豆瓣搜索:

我以为只是简单的路径截取就好,没想到数据是通过ajax加载的,找了半天也没找到json数据的url,所以只能通过selenium来模拟浏览器操作然后进行爬取了。

但是在测试的时候我发现了一个干扰项:搜索出来的第一个是个小组,不是电影,所以注意一下自己写的xpath语法。

转载地址:http://pfihn.baihongyu.com/

你可能感兴趣的文章
Aapche POI txt 导入excel
查看>>
C语言 ## __VA_ARGS__ 宏
查看>>
C++项目中的extern "C" {}
查看>>
(转)C++中extern “C”含义深层探索
查看>>
【日常小记】linux中强大且常用命令:find、grep
查看>>
Linux多线程编程(不限Linux)
查看>>
C/C++内存泄漏及检测
查看>>
C中的继承和多态
查看>>
linux修改ssh端口和禁止root远程登陆设置
查看>>
What really happens when you navigate to a URL
查看>>
偶遇with ties
查看>>
linux 编译指定库、头文件的路径问题
查看>>
使用gdb调试运行时的程序小技巧
查看>>
linux后端服务程序之信号处理
查看>>
Padding也要小心
查看>>
linux异步IO编程实例分析
查看>>
小组开发环境搭建: apache+ftp+cvs+samba
查看>>
Learning C with gdb
查看>>
不可不知的json库
查看>>
JSON格式解析和libjson使用简介
查看>>