Neural Network Course Project

中文短新闻
主题分类系统

基于 BiLSTM+Attention、Transformer 与 BERT 多架构对比,在 TNEWS 15 类新闻数据集上实现 54.36% Val Macro-F1,深入探索多粒度分词、预训练模型微调、数据增强与集成学习。

项目概览
在 TNEWS 今日头条中文新闻短文本分类数据集上,从零搭建两种深度学习架构进行 15 分类对比实验。
49,726
训练样本(清洗后)
15
新闻主题类别
54.36%
最佳 Val Macro-F1
13
消融实验组数
处理流水线
Step 01
数据清洗
去重 · 规范化
Step 02
多粒度分词
Char · Word · Subword
Step 03
词表构建
仅训练集 · min_freq=1
Step 04
模型训练
Warmup · Early Stop
Step 05
评估分析
F1 · 混淆矩阵 · t-SNE
双架构设计
手动实现 BiLSTM+Bahdanau Attention 与 Transformer Encoder,所有核心组件均使用 PyTorch nn 基础算子搭建。
★ Best Model

BiLSTM + Bahdanau Attention

双向 LSTM 编码器捕获前后文语义,加性注意力机制动态聚焦关键位置。2 层 BiLSTM(hidden=256)+ Attention(dim=128)+ 双层分类头。

4.8M
参数量
0.4833
Macro-F1
Epoch 6
Best
Comparison

Transformer Encoder

4 层 Encoder(d_model=512, 8 heads),正弦位置编码 + Multi-Head Self-Attention + FFN + LayerNorm,Global Average Pooling 输出。

15.2M
参数量
0.4222
Macro-F1
Epoch 3
Best
多粒度分词对比
三种分词策略的消融实验,探索字符级、词级、子词级在短文本分类上的表现差异。

Char-level

词表大小4,809
平均序列长度44
min_freq1
上/课/时/学/生/手/机/响/个/不/停

Word-level (jieba)

词表大小67,799
平均序列长度26
min_freq1
上课时/学生/手机/响个/不停

Subword (BERT WPM)

词表大小21,128
平均序列长度44
来源bert-base-chinese
上/课/时/学/生/手/机/响/个/不/停
实验结果
6 组消融实验完整对比,包含失败实验的如实呈现。
模型 分词方式 Val Acc Val Macro-F1 Best Epoch
BiLSTM+Attention Char 0.4999 0.4833 ★ 6
BiLSTM+Attention Word 0.4683 0.4579 5
Transformer Char v1 lr=5e-4 0.1094 0.0131
Transformer Char v2 lr=1e-3 0.4404 0.4093 4
Transformer Word 0.4675 0.4222 3
Transformer Subword 0.1094 0.0131
54.99%
Test Accuracy
54.11%
Test Macro-F1
9,765
测试集样本数
错误归因分析
从模型实际输出中提取的典型 Bad Case,分析短文本分类中的语义歧义与类别混淆。
以色列大规模空袭开始!伊朗多个军事目标遭遇打击,誓言对等反击
True: military Pred: world (66.4%)
出栏一头猪亏损300元,究竟谁能笑到最后!
True: finance Pred: agriculture (70.7%)
苹果创始人的女儿在旧金山新购置一处豪宅:价值1亿,景观无敌
True: house Pred: tech (41.9%)
国产新力量,领克02这个价位你能接受?
True: car Pred: military (72.4%)
"你们的产品让人们越来越懒"——农行董事长为何如此评价?
True: tech Pred: agriculture (40.0%)
核心发现

🏆 BiLSTM 优于 Transformer

短文本(平均 22 字符)上,BiLSTM 的循环结构更适合捕获短距离依赖。Transformer 参数量大(15.2M vs 4.8M),在小数据集上容易过拟合。Transformer 对学习率极度敏感,需要 warmup 才能正常训练。

📝 Char-level 优于 Word-level

字符级分词 Macro-F1 比词级高 2.5 个百分点。短文本中 Char-level 保留更多细粒度信息,而 jieba 分词容易引入切分错误(如"上课时"→"上课/时"),破坏完整语义单元。