马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
至此,训练数据也已经准备完毕了。
完整源代码:
下一期中,会详细介绍整个建模及训练过程,并用测试数据进行测试。
再下一期中,会详细介绍如何把这套豆瓣电影评分系统运用起来,如何把一段电影评论快速的转化为电影评分。
我会通过一些实际的电影评论进行测试,看看这套系统是否真正得学习到了如何对电影进行评分。
敬请期待! |