6

词向量系列(5):fastText快速轻量的有监督方法

 2 years ago
source link: https://allenwind.github.io/blog/9233/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Mr.Feng Blog

NLP、深度学习、机器学习、Python、Go

词向量系列(5):fastText快速轻量的有监督方法

FastText使用n-grams作为特征的词向量求取和文本分类方法。

FastText出自论文Bag of Tricks for Efficient Text Classification,可以作为FastText作为文本分类任务的baseline,也可以作为获取词向量的快速低成本方案。

fastText

fastText的网络架构与word2vec中的CBOW做法非常相似,不过其是建立在常规的分类任务上,即通过有监督的方法获得词向量,具体差异有表现在:

  • fastText以文档作为粒度输入,CBOW则是滑动的窗口
  • fastText以文档分类作为模型输出,即输出各个类别的概率分布,因此去掉了word2vec中的分层softmax和负采样技巧
  • fastText提出子词嵌入(subword embedding)的方法,把n-grams特征叠加到原来的文档表征上

fastText的文档特征向量是词向量序列的平均,

h=1Cn∑i=1hih=1C∑i=1nhi

这里CC是动态的,表示当前文档的单词数,hihi是第ii​个词的向量化表示,即Embedding的输出。fastText提出了子词嵌入(subword embedding)的方法,把n-grams特征也纳入考虑,于是用样本的n-grams切分的向量序列的平均来预测样本的标签,

h=1C′(n∑i=1hi+m∑i=1gi)h=1C′(∑i=1nhi+∑i=1mgi)

以此作为文档的表征并输入到softmax中计算类别概率分布。说白了就是添加n-grams特征后,使用GlobalAveragePooling1D。

fastText本身是从监督任务出发训练Embedding,从而获得词向量,词向量的表现受制于监督数据;而word2vec则是无监督语料(自监督标注)训练而来,词向量的表现取决于整体语料特点。

对比word2vec

word2vec的影响下,一开始觉得分类问题训练获得的Embedding做词向量比较奇怪。对比分析一下,其实并不奇怪,在NLP中,任何任务获得的Embedding都能做词向量使用,比如匹配任务,只不过不同任务所表现出来的词与词的关系特点是不一样。下面来对比一下FastText和word2vec词向量的差异。

word2vec vs fastText,

比较/模型 word2vec fastText

训练方法 无监督,准确来说是自监督,基于CBOW和SkipGram 有监督,基于文本分类任务

相似性 基于语义的相似性,如“漂亮”和“美丽”。 基于分类信息,如情感分析任务中,“漂亮”和“性感”是相似,因为它们都是正向情感的词汇。由于ngrams的存在,fastText倾向于判别有相似背景或subword的词为相似,同时也更容易识别OOV。

word2vec(skip-gram、cbow)、GloVe、FastText 的共同点是词的表示是固定的,无法处理上下文依赖问题,下篇介绍动态词向量ELMo。

[1] FastText

[2] Bag of Tricks for Efficient Text Classification

转载请包括本文地址:https://allenwind.github.io/blog/9233
更多文章请参考:https://allenwind.github.io/blog/archives/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK