FastText
FastText是facebook开源的一个词向量与文本分类工具 ,其最大的优点就是快,同时不失精度。 此算法有两个主要应用场景:
- 文本分类
- 词向量训练
FastText原理简介
- 模型简单,其结构有点类似word2vector中的CBOW架构,如下图所示。FastText将句子特征通过一层全连接层映射到向量空间后,直接将词向量平均处理一下,就去做预测。
- 使用了n-gram的特征,使得句子的表达更充分。笔者会在实战中详细介绍这部分的操作。
- 使用 Huffman算法建立用于表征类别的树形结构。这部分可以加速运算,同时减缓一些样本不均衡的问题。
实战
-
n-gram特征增广:使用了unigram和bigram的特征
-
数据预处理:将句子特征padding成300维的向量,同时对label进行onehot编码。
-
定义模型:
- 使用了一个简单的Embedding层(其实本质上就是一个Dense层),
- 然后接一个GlobalAveragePooling1D层对句子中每个词的输出向量求平均得到句子向量,
- 之后句子向量通过全连接层后,得到的输出和label计算损失值。
这下面是模型结构的的