项目的github地址:https://github.com/qihe777/itchatApplication

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格式):参考https://blog.csdn.net/zhangpeterx/article/details/88581437

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

(用来使用selenium):参考https://blog.csdn.net/qq_26200629/article/details/86141131

6.python3.6环境。

3.可以做的优化:

1.当前只支持同时和一个人对话,因为偷懒只保存了单个状态变量,应该修改为使用字典存储临时变量。
2.增加定时提醒任务格式,且改为定时从数据库查询任务。
3.对某些耗时任务比如生成藏头诗等最好新建线程来完成。
4.模块重新整理,不太纯粹。
5.增加日志系统

4项目模块讲解:

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

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

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

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

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

可以参考官方文档,也可以参考这个总结:python实现微信接口(itchat)。

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

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

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

参考:python 将MP3格式转换为WAV格式(ffmpeg安装,使用pycharm安装包)
AccessToken文件中的其他方法的原理请访问阿里云智能语音交互官方文档。

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

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

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

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

参考:Python 定时任务的实现方式,关于sched参考:python定时任务-sched模块

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

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

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

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

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

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

参考文档:
1.TMDb 5000部电影数据的分析
2.Kaggle入门 - TMDB 5000 电影推荐数据分析
3.Movies Recommender System

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

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

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

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

参考:[爬虫]使用selenium爬取豆瓣电影搜索结果,并存入MongoDB数据库中

因为电影推荐数据集是英文,所以我们需要将推荐出来的英文名字转化成中文。如何转化呢:通过豆瓣电影搜索,默认搜索出来的第一个电影就是我们要找的电影。豆瓣搜索:https://movie.douban.com/subject_search?search_text=avatar&cat=1002

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

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

itchat微信助手,kaggle 电影数据集分析,基于内容的电影推荐相关推荐

  1. ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类

    ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类 目录 输出结果 实现代码 输出结果 先看文档分类后的结果,一共得到五类电影: 实现代码 # -*- c ...

  2. ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类

    ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类 目录 输出结果 实现代码 输出结果 先看输出结果 实现代码 # -*- coding: ut ...

  3. 基于内容的电影推荐:物品画像和用户画像

    文章目录 基于内容的电影推荐:物品画像(基于tf-idf).用户画像及推荐结果 1. 基于内容的推荐算法 2. 基于内容的推荐实现步骤 2.1 物品的标签来自哪儿? 2.2 基于内容推荐的算法流程 2 ...

  4. 基于内容的电影推荐:物品画像

    基于内容的电影推荐:物品画像 物品画像构建步骤: 利用tags.csv中每部电影的标签作为电影的候选关键词 利用TF·IDF计算每部电影的标签的tfidf值,选取TOP-N个关键词作为电影画像标签 将 ...

  5. 基于内容的电影推荐:物品画像用户画像为用户产生TOP-N推荐结果

    基于内容的电影推荐:物品画像 基于内容的电影推荐:物品画像 基于TF-IDF的特征提取技术 算法原理 算法举例 加载数据集 基于TF·IDF提取TOP-N关键词,构建电影画像 完善画像关键词 基于内容 ...

  6. 基于内容的电影推荐:用户画像

    基于内容的电影推荐:用户画像 用户画像构建步骤: 根据用户的评分历史,结合物品画像,将有观影记录的电影的画像标签作为初始标签反打到用户身上 通过对用户观影标签的次数进行统计,计算用户的每个初始标签的权 ...

  7. 基于内容的个性化推荐算法

    一.什么是推荐算法 随着移动互联网的高速发展与智能手机的普及,海量的有用信息虽然为人们提供了更多的价值,然而信息的泛滥也意味着为了寻找合适的信息必须付出更多的时间成本.事实上,有时候仅仅是浏览和简单的 ...

  8. 基于内容推荐算法html,基于内容的互联网推荐算法

    摘 要 本文介B了网络推荐的算法思想.帮助读者了解这个研究领域.在介绍了推荐系统的概念和定义之后,重点介绍了基于内容的互联网推荐算法. 关键词 推荐系统 推荐算法 互联网 中图分类号:TP391.3 ...

  9. 老王的电影网站,基于内容的推荐 - 推荐系统入门(二)

    "这书都挺厚的啊",老王看了看,又掂了掂桌上新买的<推荐系统 技术.评估及高效算法><推荐系统实战>,不禁叹了一口气... "先来个简单的,总比没 ...

  10. 基于内容的商品推荐技术的简单实现方法

    基于内容的推荐技术 最近做学校的一个商城项目需要推荐功能,于是翻看了几篇论文,感觉基于内容的推荐技术比较合适,索性就拿来用用.通过提取用户最近的商品收藏或者搜索记录中的有用信息,得到喜好模型从而计算相 ...

最新文章

  1. php全局变量GLOBAL
  2. [转载]正确解决:坑爹的0xc000007b——应用程序无法正常启动
  3. 玩转OpenVswitch(一):端口与网桥
  4. C++异常处理,Error,C和C++ 解决容错,栈自旋,Standard Exception【C++异常处理】(60)
  5. mysql第四章表单查询样题_查询mysql表单中前10条,然后在li中循环输出。
  6. 2021-05-19 一个简单有趣的LQR控制可视化例子及代码
  7. Windows中的权限设置、文件压缩、文件加密、磁盘配额和卷影副本
  8. 二叉树的最小深度Python解法
  9. HTTP状态代码及其定义
  10. 图解 Python 算法
  11. vue将文本渲染html,vue2.0 之文本渲染-v-html、v-text
  12. Python报错:PermissionError: [Errno 13] Permission denied 解决方案详解
  13. python2.7开发环境搭建_windows python2.7 django 开发环境搭建
  14. 编写python程序、输出*图形_Python用程序输出字母“C”的图案
  15. 《SharePoint Portal Server 2003 深入指南》即将完稿 大纲
  16. 比较好用的二进制文件编辑与比较软件
  17. 如何更改 think-cell 图表的默认颜色?
  18. hdu2586How far away ?
  19. 陈强教授《机器学习及R应用》课程 第六章作业
  20. matlab 多子图_MATLAB|subplot子图分块绘制的方法

热门文章

  1. 用C++可编程管线渲染obj模型
  2. DW里面html鼠标点击特效,【好好学习】-DW-鼠标点击 爆米花特效 代码
  3. Java对接海康威视明眸门禁设备
  4. Xshell6 解压直接使用
  5. 在禁用UAC时无法激活此应用
  6. 蔡学镛告诉我们—做好技术PPT的要点
  7. 不开机win7计算机还原,Win7开机出现Windows错误恢复解决方法
  8. 如何快速比对两个文件夹中的文件
  9. DoNet6新特性 PriorityQueue 优先队列终于来啦~
  10. 打地鼠java的实验报告_java实验报告18-“打地鼠”游戏程序设计.doc