论文笔记:
[1]王光慈,汪洋.基于FastText的短文本分类[J].电子设计工程,2020,28(03):98-101.DOI:10.14022/j.issn1674-6236.2020.03.022.
[2]梁增宇. 基于改进FastText的中文文本分类研究[D].大连理工大学, 2021.DOI:10.26991/d.cnki.gdllu.2021.003183.
文章目录
FastText 是 Facebook AI Research 推出的文本分类和词训练工具,它的最大特点是 模型简单并且在文本分类的 准确率上,和现有的深度学习的方法效果相近,即在保证了准确率的情况下大大缩短了分类时间。
传统文本分类方法
训练集-》文本预处理-》特征提取-》文本表示-》分类器
文本预处理
首先,我们要在文本中提取关键词表示文本,对于中文文本而言,主要包括了文本分词 、降噪、词性标注、去停用词这四个阶段。
文本表示和特征提取
文本表示
传统常用词袋模型(Bag of Words,BOW)或向量空间模型(Vector Space Model),两种方法最大的不足是忽略文本上小文关系,每个词之间彼此独立,并且无法表征语义信息。
特征提取
向量空间模型的文本表示方法的特征提取对应特征项的选择和特征权重计算两部分。
通常使用的是IF-IDF文本特征
分类器选择
- LR逻辑回归
- 随机森林
- CNN
- FastText
FastText分类器采用分层Softmax使其训练速度快,准确率高而被广泛应用于分本分类领域
FastText原理
FastText方法包括了模型架构、层次softmax和N-gram特征
模型架构
Input:一个词序列
Output:该词序列属于不同类别的概率
序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。
FastText在预测标签时使用了非线性激活函数,FastText模型架构和 Word2Vec[11-13]中的 CBOW 模型很类似。不同之处在于,FastText 预测标签,而 CBOW 模型预测中间词。
层次softmax
当文本分类任务中类别很多时,计算线性分类器的复杂度很高。为了加快效率,FastText模型使用了层次Softmax技巧。层次Softmax技巧建立在哈夫曼编码的基础上,对标签进行编码极大的缩小模型预测目标的数量
N-gram特征
对输入的词序列加入了N-gram处理,可以解决词顺序丢失的问题。
具体做法是将N-gram当成一个词,用embedding向量表示,在计算隐层时,把N-gram的embedding向量也加进去求平均。
具体实现上,FastText采用了Hash桶的方式,把所有的N-gram都哈希到buckets个桶中,哈希到同一个桶的所有N-gram共享一个embedding vector.
优点
- 与LSTM、TextCNN等深度学习模型相比,准确率相差不大的情况下,训练速度更快,更适用于数据集大、标签类别多的文本分类场景。
- FastText支持多语言表达,结合语言结构形态,可以应用于除英语外的多种外文上,N-gram特征可以捕捉到字符级别的词汇表征,在词态丰富的语种上表现更为良好。
缺点
- FastText的输入层增加N-gram特征信息可有效提高文本分类的准确性,但直接用于中文短文本分类的效果不佳。因此,为了提高模型的学习效率,需要对数据集做精细化的特征工程处理。
- FastText选择softmax函数作为线性分类器,但线性分类器不共享参数,在输出空间类别复杂的情况下,泛化能力较差。【但对文本的二分类任务似乎没啥影响】
过拟合问题
互联网真实媒体场景下的文本中,不同人的文本风格不一致,而我们为了学习到更多自然语言信息,需要设计参数众多的复杂神经网络,但是这样的模型往往会过拟合。我们一般采用给损失函数增加正则项、神经元随机丢弃等方法,从而提高模型的泛化能力。
给损失函数增加正则项
在中文短文本分类的实战研究中,文本分词后的词向量维度较大,同时FastText模型的参数过多,为了能学习到有用的特征,需要保证权重更新向量的稀疏性,而L1范数具有特征选择的作用。
从过拟合原理角度分析,增加正则项的目的是为了降低模型复杂度,避免结构误差,而词向量训练的目标是精确匹配词语出现的分布,期望完美拟合。而词语在做One-hot编码后作为模型输入值并无结构误差,因此,在模型损失函数添加L1或L2正则项不太可取。
非随机概率的Dropout算法
通常Dropout指在每轮参数训练过程中,随机让一部分神经元不参与工作。常定义失活概率p,当p为0.5时,表示在每轮训练中有一半的神经元不参与模型的训练过程。
FastText只有三层网络结构,只能考虑在输入层或隐藏层添加Dropout结构。而对于文本分类任务,使用等概率随机失活神经元是不合理的,因为文本中可能存在很多强特征词,例如“比赛”对于体育类别,“明星”对于娱乐类别,若将其丢弃会对神经网络性能损失较大,导致模型对某些关键词的学习效果不佳。
全新不等概率的神经元丢弃法(unequal probability dropout)
简称为updropout,通过提高FastText模型中神经网络的注意力,有目的性丢弃神经元。
t ( c , i ) = m a x { 0.5 , 0.5 l n n ( c , i ) D i − n ( c , i ) } t(c,i)=max\{0.5,\ 0.5ln\frac{n(c,i)}{D_i-n(c,i)}\} t(c,i)=max{0.5, 0.5lnDi−n(c,i)n(c,i)}
若该词为非强特征词,则被随机丢弃的概率为0.5;
若该词为强特征词,则被丢弃的概率小于0.5。
n ( c , i ) 表 示 类 别 c 包 含 关 键 词 i 的 文 档 数 , D i 表 示 数 据 集 中 包 含 关 键 词 i 的 文 档 数 n(c,i)表示类别c包含关键词i的文档数,D_i表示数据集中包含关键词i的文档数 n(c,i)表示类别c包含关键词i的文档数,Di表示数据集中包含关键词i的文档数