来自 | 知乎 作者 | 胡文星
地址 | https://zhuanlan.zhihu.com/p/73176084
编辑 | 机器学习算法与自然语言处理公众号
本文仅作学术分享,若侵权,请联系后台删文处理
前言
使用pytorch实现了TextCNN,TextRNN,FastText,TextRCNN,BiLSTM_Attention,DPCNN,Transformer。 github:Chinese-Text-Classification-Pytorch,开箱即用。中文数据集:
我从THUCNews中抽取了20万条新闻标题,文本长度在20到30之间。一共10个类别,每类2万条。以字为单位输入模型,使用了预训练词向量:搜狗新闻 Word+Character 300d。类别:财经、房产、股票、教育、科技、社会、时政、体育、游戏、娱乐。数据集、词表及对应的预训练词向量已上传至github,开箱即用。 模型效果: bert,ERNIE代码: Bert-Chinese-Text-Classification-Pytorch1.TextCNN
数据处理:所有句子padding成一个长度:seq_len1.模型输入: [batch_size, seq_len]2.经过embedding层:加载预训练词向量或者随机初始化, 词向量维度为embed_size: [batch_size, seq_len, embed_size]3.卷积层:NLP中卷积核宽度与embed-size相同,相当于一维卷积。3个尺寸的卷积核:(2, 3, 4),每个尺寸的卷积核有100个。卷积后得到三个特征图: [batch_size, 100, seq_len-1] [batch_size, 100, seq_len-2] [batch_size, 100, seq_len-3]4.池化层:对三个特征图做最大池化 [batch_size, 100] [batch_size, 100] [batch_size, 100]5.拼接: [batch_size, 300]6.全连接:num_class是预测的类别数 [batch_size, num_class]7.预测:softmax归一化,将num_class个数中最大的数对应的类作为最终预测 [b