Go to file
somunslotus 877baa4b7b optimize 2025-05-26 10:00:06 +08:00
.idea fix redoc online bug 2025-05-23 15:08:32 +08:00
log/TextCNN 初次提交 2025-05-21 15:17:40 +08:00
models 初次提交 2025-05-21 15:17:40 +08:00
saved_dict 初次提交 2025-05-21 15:17:40 +08:00
saved_models 初次提交 2025-05-21 15:17:40 +08:00
static/redoc fix redoc online bug 2025-05-23 15:08:32 +08:00
tmp 初次提交 2025-05-21 15:17:40 +08:00
Dockerfile 隐藏不要的界面 2025-05-22 15:41:56 +08:00
README.md 初次提交 2025-05-21 15:17:40 +08:00
THUCNews.zip 初次提交 2025-05-21 15:17:40 +08:00
build-image.sh 增加构建脚本 2025-05-22 14:05:02 +08:00
check.py 初次提交 2025-05-21 15:17:40 +08:00
predict.py 初次提交 2025-05-21 15:17:40 +08:00
requirements.txt 初次提交 2025-05-21 15:17:40 +08:00
run.py 初次提交 2025-05-21 15:17:40 +08:00
runtest.py 初次提交 2025-05-21 15:17:40 +08:00
test.py 初次提交 2025-05-21 15:17:40 +08:00
test1.py optimize 2025-05-26 10:00:06 +08:00
test_model.py 初次提交 2025-05-21 15:17:40 +08:00
test_pl_vor.py 初次提交 2025-05-21 15:17:40 +08:00
test_test.py 初次提交 2025-05-21 15:17:40 +08:00
train_eval.py 初次提交 2025-05-21 15:17:40 +08:00
utils.py 初次提交 2025-05-21 15:17:40 +08:00
utils_fasttext.py 初次提交 2025-05-21 15:17:40 +08:00

README.md

Chinese-Text-Classification-Pytorch

LICENSE

中文文本分类TextCNNTextRNNFastTextTextRCNNBiLSTM_Attention, DPCNN, Transformer, 基于pytorch开箱即用。

介绍

模型介绍、数据流动过程:我的博客

数据以字为单位输入模型,预训练词向量使用 搜狗新闻 Word+Character 300d点这里下载

环境

python 3.7
pytorch 1.1
tqdm
sklearn
tensorboardX

中文数据集

我从THUCNews中抽取了20万条新闻标题已上传至github文本长度在20到30之间。一共10个类别每类2万条。

类别:财经、房产、股票、教育、科技、社会、时政、体育、游戏、娱乐。

数据集划分:

数据集 数据量
训练集 18万
验证集 1万
测试集 1万

更换自己的数据集

  • 如果用字,按照我数据集的格式来格式化你的数据。
  • 如果用词,提前分好词,词之间用空格隔开,python run.py --model TextCNN --word True
  • 使用预训练词向量utils.py的main函数可以提取词表对应的预训练词向量。

效果

模型 acc 备注
TextCNN 91.22% Kim 2014 经典的CNN文本分类
TextRNN 91.12% BiLSTM
TextRNN_Att 90.90% BiLSTM+Attention
TextRCNN 91.54% BiLSTM+池化
FastText 92.23% bow+bigram+trigram 效果出奇的好
DPCNN 91.25% 深层金字塔CNN
Transformer 89.91% 效果较差
bert 94.83% bert + fc
ERNIE 94.61% 比bert略差(说好的中文碾压bert呢)

bert和ERNIE模型代码我放到另外一个仓库了传送门Bert-Chinese-Text-Classification-Pytorch后续还会搞一些bert之后的东西欢迎star。

使用说明

# 训练并测试:
# TextCNN
python run.py --model TextCNN

# TextRNN
python run.py --model TextRNN

# TextRNN_Att
python run.py --model TextRNN_Att

# TextRCNN
python run.py --model TextRCNN

# FastText, embedding层是随机初始化的
python run.py --model FastText --embedding random 

# DPCNN
python run.py --model DPCNN

# Transformer
python run.py --model Transformer

参数

模型都在models目录下超参定义和模型定义在同一文件中。

对应论文

[1] Convolutional Neural Networks for Sentence Classification
[2] Recurrent Neural Network for Text Classification with Multi-Task Learning
[3] Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification
[4] Recurrent Convolutional Neural Networks for Text Classification
[5] Bag of Tricks for Efficient Text Classification
[6] Deep Pyramid Convolutional Neural Networks for Text Categorization
[7] Attention Is All You Need