📰

多模型新闻文本分类系统

NLP 课程实践 · 深圳职业技术大学

TextCNN · TextRNN · 朴素贝叶斯 — 三种架构对比 · 头条新闻 6 分类

3
分类架构
6
新闻类别
91%
最优准确率
5x
推理速度差距

01项目简介

针对中文新闻自动分类场景,设计并实现了 三种不同架构 的文本分类模型进行横向对比:从传统的 朴素贝叶斯 到深度学习的 TextCNNTextRNN。覆盖完整的 NLP 流程——分词、词向量构建、模型训练、评估与可视化,最终通过模块化 Config 统一管理超参数,一键切换模型和训练策略。

02数据集

使用 今日头条客户端 新闻分类数据集:包含 6 个类别(体育、财经、房产、家居、教育、科技),每个类别约 2,000 条短文本。经过 Jieba 分词 + 停用词过滤 + 词频统计后构建词表,保留高频 Top N 词汇作为特征空间。

03三种架构对比

架构类型核心思想准确率训练速度
朴素贝叶斯统计 ML基于词频先验概率的贝叶斯推断,假设特征条件独立~78%
TextCNN深度学习多尺寸卷积核并行提取 n-gram 局部特征 + MaxPooling~91%
TextRNN深度学习双向 LSTM 捕捉长距离语义依赖 + 全连接分类层~89%

朴素贝叶斯

使用 sklearn.naive_bayes.MultinomialNB,将 TF-IDF 加权后的词频向量作为输入。实现简单、无需 GPU、可解释性强——可直接查看每个类别的高贡献词。但受限于"特征独立"假设,无法捕捉词序和上下文关系。

TextCNN

基于 TensorFlow / Keras 实现。核心设计:使用 2、3、4 三种尺寸 的卷积核同时扫描文本序列,分别捕捉双词、三词、四词的局部特征组合,经 GlobalMaxPooling 保留最强信号后拼接,最后通过 Softmax 输出 6 类概率。参数量少、训练稳定、效果最优。

TextRNN

同样基于 TensorFlow / Keras,使用双向 LSTM 对 Embedding 后的序列建模。BiLSTM 能同时关注上下文两个方向的语义信息,理论上比 CNN 更适合序列建模。但实际效果略低于 TextCNN(本数据集中短文本占比高,局部特征更有效),且训练耗时约为 TextCNN 的 2.5 倍。

04系统流程

┌────────────────────┐ │ 原始新闻文本 │ └────────┬───────────┘ ▼ ┌────────────────────┐ │ Jieba 分词 │ │ 停用词过滤 │ └────────┬───────────┘ ▼ ┌────────────────────┐ │ 词表构建 │ │ (Top N 高频词) │ └────────┬───────────┘ ▼ ┌────────────────────┐ │ 文本 → 索引序列 │ │ Padding / 截断 │ └────────┬───────────┘ ▼ ┌──────────────────┼──────────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 朴素贝叶斯 │ │ TextCNN │ │ TextRNN │ │ (sklearn) │ │ (Keras) │ │ (Keras) │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └────────────────┼────────────────┘ ▼ ┌────────────────────┐ │ 模型评估 & 对比 │ │ 准确率 / F1 / 混淆矩阵 │ └────────────────────┘

05模块化设计

Config 统一管理
所有超参数集中在 config.py:词表大小、序列长度、Embedding 维度、卷积核尺寸、学习率、Batch Size、Epochs 等,修改一处全局生效。
模型工厂模式
model = create_model('textcnn', config) 一行切换架构,无需修改训练和评估代码。
腾讯预训练词向量
Embedding 层加载腾讯 AILab 中文词向量初始化并微调(trainable=True),词表按词频截断在 45,600 处,显著优于随机初始化。
自动化评估
训练结束后自动生成准确率、精确率、召回率、F1 值及归一化混淆矩阵图表。
早停 & 模型保存
EarlyStopping + ModelCheckpoint,自动保存验证集最优模型权重。

06实验结论

指标朴素贝叶斯TextCNNTextRNN
准确率78.3%91.2%89.1%
F1 (Macro)0.770.910.89
训练时间 / Epoch<1s~12s~30s
推理延迟 (单条)~0.5ms~2ms~4ms
GPU 需求建议建议
TextCNN 综合最优
在短文本分类场景下,多尺度卷积能高效捕获关键 n-gram 特征,准确率最高且训练效率好。
朴素贝叶斯有实用价值
虽然精度最低,但训练和推理极快、无需 GPU,适合资源受限的轻量级分类场景。
长文本场景 RNN 可能更优
本数据集为短文本,TextCNN 局部特征优势明显。若文本更长,BiLSTM 的全局建模能力可能反超。
Jieba 分词对结果影响显著
分词质量直接影响词表覆盖率和特征表达能力,对比实验证实了精确模式(jieba.cut)优于全模式。

07技术栈

模块技术
分词 & 预处理Jieba · 停用词表
传统模型sklearn · MultinomialNB · TF-IDF
深度学习TensorFlow · Keras · Embedding · Conv1D · LSTM
评估 & 可视化Matplotlib · scikit-learn metrics · 混淆矩阵
模型管理EarlyStopping · ModelCheckpoint · Config 模块