鱼C论坛

 找回密码
 立即注册
查看: 3306|回复: 14

[技术交流] python小练习(094):基于keras快速搭建神经网络(实战篇)之豆瓣电影评分系统(三)

[复制链接]
发表于 2017-4-17 22:04:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
继续接上一期,上一期中我们成功爬到了2000多条电影评论,以pickle的形式保存。

现在我们就需要对这批数据进行筛选,并转化成我们需要的形式,以便后面进行神经网络的建模和训练。


我还是用了一个过滤函数来清洗数据,删除不必要的符号。
  1. def filterword(s):
  2.     sigbol = u' ,。“”~!@#¥%……&*()——+=【】{}、|;:‘’《》?!#$^&()[]{};:",.<>/?\\-\n'
  3.     for sig in sigbol:
  4.         s = s.replace(sig, '')
  5.         s = s.strip(' ')
  6.     return s
复制代码


用pickle读取保存的评论数据
  1. with open('comments.p') as f:
  2.     comments = pickle.load(f)
复制代码


构建词汇表并去重,并转换标签数据
  1. label = []
  2. voca = []
  3. filtered = []
  4. for film in comments:
  5.     for scores in comments[film][0]:
  6.         label.append([0,0,0,0,0])
  7.         score = int(scores)/10
  8.         label[-1][score-1] = 1

  9.     for comment in comments[film][1]:
  10.         flt = filterword(comment)
  11.         cutted = jieba.lcut(flt)
  12.         filtered.append(cutted)
  13.         for each in cutted:
  14.             if len(each)>0:
  15.                 if each not in voca:
  16.                     voca.append(each)
  17. voca = list(set(voca))        
复制代码


转换词向量
  1. x_data = []
  2. for each in filtered:
  3.     voca_count = [0]*len(voca)
  4.     for word in each:
  5.         voca_count[voca.index(word)] += 1
  6.     x_data.append(voca_count)
复制代码


转化为numpy数组形式
  1. x_data = np.array(x_data)        
  2. y_data = np.array(label)

  3. print x_data.shape, y_data.shape
复制代码


输出:
(2023, 15225) (2023, 5)
可以看到,一共有2023组数据,转化好的词汇表有15225个词(基本上涵盖了常用的短语了,一般中文的常用词汇量在6000~10000左右)

储存转化好的数据,下次建模时就能直接使用了
  1. with open('x_data.p', 'wb') as x:
  2.     pickle.dump(x_data, x)
  3.    
  4. with open('y_data.p', 'wb') as y:
  5.     pickle.dump(y_data, y)

  6. with open('voca.p', 'wb') as v:
  7.     pickle.dump(voca, v)
复制代码


至此,训练数据也已经准备完毕了。

完整源代码:
游客,如果您要查看本帖隐藏内容请回复


下一期中,会详细介绍整个建模及训练过程,并用测试数据进行测试。

再下一期中,会详细介绍如何把这套豆瓣电影评分系统运用起来,如何把一段电影评论快速的转化为电影评分。
我会通过一些实际的电影评论进行测试,看看这套系统是否真正得学习到了如何对电影进行评分。

敬请期待!

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-20 11:05:36 | 显示全部楼层
楼主辛苦了,学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-20 11:27:54 | 显示全部楼层
哈哈哈,看了你这个过滤函数我忍不住笑了一下
因为我之前一直有个疑问,就是replace()函数的替换为什么只能是字符串,要是可以直接把一整个列表里面包含的字符串都统一替换那该多好,然后我的方向是去找replace的用法,看了好几次官方文档说明也没找到可以批量替换的
然后看到你这个过滤函数,我突然有点自嘲了一下,明明可以自己写一个批量替换函数,为什么要把时间花在找官方的使用方法呢。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-26 10:54:00 | 显示全部楼层
95
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-11 12:43:58 | 显示全部楼层
前来学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-12 14:40:11 | 显示全部楼层
get 一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-1 11:39:31 | 显示全部楼层
好好学习,天天向上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 17:19:25 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-18 22:41:15 | 显示全部楼层
特意过来学习python, 同时学习神经网络, 最近要用到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-12 17:29:32 | 显示全部楼层
thanks
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-10 18:18:56 | 显示全部楼层
谢谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-10 19:45:47 | 显示全部楼层
请问楼主这个数据能分享一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-14 12:28:09 | 显示全部楼层
楼主辛苦了,学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-15 23:42:37 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-24 18:40:45 From FishC Mobile | 显示全部楼层
666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 11:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表