- 引言
- 1 FastText
- 1.1 相关资料
- 1.2 介绍
- 2 TextCNN
- 2.1 相关资料
- 2.2 介绍
- 3 DPCNN
- 3.1 相关资料
- 3.2 介绍
- 4 TextRCNN
- 4.1 相关资料
- 4.2 介绍
- 5 TextBiLSTM+Attention
- 5.1 相关资料
- 5.2 介绍
- 6 HAN
- 6.1 相关资料
- 6.2 介绍
- 7 Bert
- 7.1 相关资料
- 7.2 介绍
- 8 封装的源码汇总
更多模型介绍基于深度学习的文本分类 模型大致分类如下:
- 词嵌入向量化:word2vec, FastText等等
- 卷积神经网络特征提取:Text-CNN, Char-CNN等等
- 上下文机制:Text-RNN, BiRNN, RCNN等等
- 记忆存储机制:EntNet, DMN等等
- 注意力机制:HAN等等
论文:《Bag of Tricks for Efficient Text Classification》 Keras实现源码 Tensorflow实现源码
1.2 介绍(1)简介 Fasttext是Facebook推出的一个便捷的工具,包含文本分类和词向量训练两个功能 Fasttext的分类实现很简单:把输入转化为词向量,取平均,再经过线性分类器得到类别。输入的词向量可以是预先训练好的,也可以随机初始化,跟着分类任务一起训练。
(2)优点
- 模型本身复杂度低,但效果不错,能快速产生任务的baseline
- Facebook使用C++进行实现,进一步提升了计算效率
- 采用了char-level的n-gram作为附加特征,比如paper的trigram是 [pap, ape, per],在将输入paper转为向量的同时也会把trigram转为向量一起参与计算。这样一方面解决了长尾词的OOV (out-of-vocabulary)问题,一方面利用n-gram特征提升了表现
- 当类别过多时,支持采用hierarchical softmax进行分类,提升效率
(3)适用场景 对于文本长且对速度要求高的场景,Fasttext是baseline首选。同时用它在无监督语料上训练词向量,进行文本表示也不错。不过想继续提升效果还需要更复杂的模型。
2 TextCNN 2.1 相关资料论文《Convolutional Neural Networks for Sentence Classification》 Python 实现工具包 Tensorflow实现文本分类
2.2 介绍TextCNN是Yoon Kim在2014年提出的模型,开创了用CNN编码n-gram特征的先河
模型结构如图,图像中的卷积都是二维的,而TextCNN则使用「一维卷积」,即filter_size * embedding_dim,有一个维度和embedding相等。这样就能抽取filter_size个gram的信息。以1个样本为例,整体的前向逻辑是:
- 对词进行embedding,得到[seq_length, embedding_dim]
- 用N个卷积核,得到N个seq_length-filter_size+1长度的一维feature map
- 对feature map进行max-pooling(因为是时间维度的,也称max-over-time pooling),得到N个1x1的数值,拼接成一个N维向量,作为文本的句子表示
- 将N维向量压缩到类目个数的维度,过Softmax
在TextCNN的实践中,有很多地方可以优化(参考这篇论文《A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification》):
- Filter尺寸:这个参数决定了抽取n-gram特征的长度,这个参数主要跟数据有关,平均长度在50以内的话,用10以下就可以了,否则可以长一些。在调参时可以先用一个尺寸grid search,找到一个最优尺寸,然后尝试最优尺寸和附近尺寸的组合
- Filter个数:这个参数会影响最终特征的维度,维度太大的话训练速度就会变慢。这里在100-600之间调参即可
- CNN的激活函数:可以尝试Identity、ReLU、tanh
- 正则化:指对CNN参数的正则化,可以使用dropout或L2,但能起的作用很小,可以试下小的dropout率(
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?