五、FastText
fastText
是Facebook AI Research
在2016
年开源的文本分类器,其提出是在论文《Bag of Tricks for Efficient Text Classification》
中。目前fastText
作为文本分类的基准模型。fastText
的优点是:在保持分类效果的同时,大大缩短了训练时间。在 8个 数据集上,不同模型的测试误差:
单个
epoch
的训练时间(char-CNN
、VDCNN
和fastText
):
fastText
的网络结构与word2vec
的CBOW
非常相似。区别在两个地方:- 输入:单篇文档的所有单词都作为网络的输入。因此这里的参数
C
是动态的,它等于当前文档的单词数量。 - 输出:这里网络的输出是各类别的概率。通常文本分类的类别 远小于词典大小 ,因此可以不必进行分层
softmax
和负采样。
- 输入:单篇文档的所有单词都作为网络的输入。因此这里的参数
隐向量为所有输入单词映射结果的均值:
其中: 表示第 个输入单词在词汇表 中的编号, 为矩阵 的第 行,它是对应输入单词的输入向量。
单个样本的损失函数为( 为真实类别标签):
定义每个输出单元的预测误差 ,与
CBOW
多个单词上下文的推导相同:更新 :
其中 。
更新 :
其中 :
- ,它是所有类别输出向量的加权和,其权重为 。
- 为第 个输入单词在词表 中的编号。
如果考虑词序则分类的效果还可以进一步提升,因此在
fastText
中可以引入N-gram
特征。如:2-gram
合并文档中连续的2个单词作为特征。fastText
生成的词向量嵌入的是分类的信息,而word2vec
生成的词向量更多的嵌入了通用语义信息。fastText
词向量得到的相似度是基于分类类别的相似。如:商品评论情感分类任务中,好吃
和好玩
是相似的,因为它们都是正向情感词。word2vec
词向量得到的相似度是基于语义的相似。此时好吃
和美味
是相似的,因为这二者经常出现在类似的上下文中。