前言
本文整理自TensorFlow练习1: 对评论进行分类,修改了原文代码中的一些bug,重构了一下代码,并添加了一些注释,最后还添加了如何使用训练后的模型进行预测,希望对初学者有一定的帮助。原作者的博客中还有很多tensorflow相关的练习,大家可以多多关注一下,感谢作者的分享。
数据集
本例子是对电影评论作分类,分为正面的评论和负面的评论。原文中提供了两份数据集:
第三方包
- numpy
- tensorflow
- pickle
- nltk
创建词汇表
把数据集中的数据通过中文分词,分解出每一个单词,作词形还原,例如复数单词还原为原单词(cats->cat),过滤出现频率过高和过低的单词,最后以列表形式返回:
准备特征集
把每条评论转换为向量, 转换原理:假设词汇表为[‘woman’, ‘great’, ‘feel’, ‘actually’, ‘looking’, ‘latest’, ‘seen’, ‘is’] 当然实际上要大的多。例如:评论’i think this movie is great’ 转换为 [0,1,0,0,0,0,0,1],把评论中出现的字在词汇表中标记,出现过的标记为1,其余标记为0:
把数据集转换为特征集
调用上述方法把数据集中的每条评论转换为向量,并在最后拼接分类,标识该条评论是正面还是负面:
整理数据
通过上述的步骤,我们已经创建了词汇表和把词汇表转换为向量,这时我们可以把结果保存起来,方便以后的调用,该方法可以保存数据或者重新加载数据:
定义待训练的神经网络
定义前馈神经网络,每添加一个层,需要有输入, 参数权重,偏置,以及最后的输出, 当然还有激励函数:
使用数据训练神经网络
使用整理好的数据训练神经网络,最后保存模型:
使用模型预测
把评论字符串转换为向量,调用保存的模型,进行预测,[0]为正面评论,[1]为负面评论:
结果
训练的结果:
预测的结果:
完整代码
|
|