鱼C论坛

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

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

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

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

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

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

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


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

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

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

    for comment in comments[film][1]:
        flt = filterword(comment)
        cutted = jieba.lcut(flt)
        filtered.append(cutted)
        for each in cutted:
            if len(each)>0:
                if each not in voca:
                    voca.append(each)
voca = list(set(voca))        

转换词向量
x_data = []
for each in filtered:
    voca_count = [0]*len(voca)
    for word in each:
        voca_count[voca.index(word)] += 1
    x_data.append(voca_count)

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

print x_data.shape, y_data.shape

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

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

with open('voca.p', 'wb') as v:
    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-11-25 10:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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