https://blog.csdn.net/yangfengling1023/article/details/86614797
https://www.jianshu.com/p/b1468218caf6
https://www.jiqizhixin.com/articles/2018-12-03-6
: 一个句子的特征,初始值为随机生成(也可以采用预训练的词向量)
词向量初始化
一个句子的embedding为[iw1,iw2,....iwn,ow1,ow2,...ows]
iwi:语料中出现的词,排在数组的前面
owi:n-gram或n-char特征
初始化为随机数, 如果提供预训练的词向量,对应的词采用预训练的词向量
Fasttext采用了Hash桶的方式,把所有的n-gram都哈希到buckets个桶中,哈希到同一个桶的所有n-gram共享一个embedding vector。(CBOW的输入是目标单词的上下文并进行one-hot编码)
trick :1. 为保留一定的次序信息,引入n-gram
- 层次softmax 的应用。思想实质上是将一个全局多分类的问题,转化成为了若干个二元分类问题,从而将计算复杂度从O(V)降到O(logV)
-
对于低频词生成的词向量效果会更好。因为它们的n-gram可以和其它词共享。
-
对于训练词库之外的单词,仍然可以构建它们的词向量。我们可以叠加它们的字符级n-gram向量。
于是fastText的核心思想就是:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。这中间涉及到两个技巧:字符级n-gram特征的引入以及分层Softmax分类。
fastText作为诞生不久的词向量训练、文本分类工具,在达观得到了比较深入的应用。主要被用在以下两个系统:
-
同近义词挖掘。Facebook开源的fastText工具也实现了词向量的训练,达观基于各种垂直领域的语料,使用其挖掘出一批同近义词;
-
文本分类系统。在类标数、数据量都比较大时,达观会选择fastText 来做文本分类,以实现快速训练预测、节省内存的目的。
网友评论