本项目展示了在文本分类任务中,利用卷积神经网络(CNN)与循环神经网络(RNN)进行模型构建与训练的实践方案。项目结构清晰,支持在 Jupyter Notebook 环境中直接运行验证,源码已托管至 GitHub。
1. CNN + Max Pool
该模块对应 text-classification-cnn-maxpool 工程,主要实现标准的最大池化策略。
- 数据预处理:核心逻辑位于
dataOwn.py。文件负责基于 Word2Vec 构建词向量映射词典,处理词长不足时的 Padding 填充,并实现数据的加载与 Batch 迭代器。 - 模型定义:
CNNDiseaseModel.py封装了 CNN 网络的变量初始化及图结构构建。重点关注placeholder与inference部分。由于标签为单数值而非 One-Hot 编码,损失计算采用了sparse_softmax_cross_entropy_with_logits接口。 - 训练与预测:
CNNDiseaseModelTrain.ipynb:包含完整的模型训练流程。CNNDiseaseModelPredict.ipynb:提供推理接口,支持输入单段文本或指定测试文件路径进行结果评估。
2. CNN + K-Max Pool
此部分与上述工程类似,区别在于使用了 K-Max Pooling 策略。在本实验环境下,其效果与标准 Max Pool 相当。
涉及文件包括:
dataOwn.py:数据加载与预处理。modelOneConv.py:模型结构定义。trainWord2vec.ipynb:词向量训练脚本。predictWord2vec.ipynb:预测脚本。
3. RNN 文本分类
基于 RNN 架构实现的分类方案,可根据需求选择 LSTM 或 GRU 单元。
针对不同的标签格式,代码提供了两套适配方案:
-
整数标签模式:适用于 Label 为单一数字(如 0, 1, 2)的场景。
rnn_model_oneLable.pytrain_rnn_oneLable.ipynbpredict_rnn_onehotLablelNew.ipynb
-
One-Hot 编码模式:适用于 Label 为 One-Hot 向量(如 100000...)的场景。
rnn_model_onehotLable.pytrain_rnn_onehotLable.ipynb
整体而言,该实践涵盖了从词向量构建、数据清洗到模型训练、推理的全链路流程,适合希望深入理解深度学习在 NLP 领域落地细节的开发者参考。

