趁着两天周末,我打算详细讲解一下基于one-hot的CNN文本分类和基于word2vec的Alexnet文本分类。也算是对知识的一个学习巩固。
声明一下,这两章专题代码我参考了网友的,仅作交流学习用,然后还附上了我自己实操的情况。项目源码附在这里https://github.com/weiyuyan/TextCNN
先看一下作者项目的概貌。
首先.idea 文件是当把pycharm作为IDE时自动生成的文件夹,用来存放项目的信息,包括版本控制信息、历史记录等等。
pycache又是做什么的呢?打开发现
打开里面是几个.pyc后缀的文件,都是乱码。
原来,python解释器会将 *.py 脚本文件进行编译,并将编译结果保存到pycache目录中。下次再执行工程时,若解释器发现这个 *.py 脚本没有修改过,就会跳过编译这一步,直接运行以前生成的保存在 pycache文件夹里的 *.pyc 文件。
这样工程较大时就可以大大缩短项目运行前的准备时间;如果你只需执行一个小工程,没关系 忽略这个文件夹就行。
接下来,graph、model和prediction三个文件夹是之后程序运行才会产生的,我们先不讨论。
"sougo_text_data"是经典的九分类搜狗新闻语料。
my_data_helper.py是模型数据读取模块。
function_helper.py是一个辅助功能模块。
cnn_sougo_classification.py是核心的cnn训练模块。
cnn_classification_prediction.py是最后利用模型进行测试的模块。
至于dnn_sougou_classify.py,这个我还没仔细研究,作者是说利用CNN+DNN进行分类???还有DNN这一说法?算了先不管。总之先学习CNN的。
这一篇就先到这里,然后接下来我们开始从my_data_helper.py讲起。