fastText
Fasttext 是一个具有rank constraint 的线性模型,并且可以快速进行训练的模型,可以在几分钟训练数十亿单词的向量。
Word2vec 的方法对于few examples 泛化能力较差
1.模型架构

词的表达平均成文本的表示,然后传入线性分类器中,架构类似于CBOW,但是中间词被label代替。使用softmax 函数来计算每个类别的概率。在Fig1中 xn是normalized 之后的bag of features of n-th document,yn是label.
1.1 hierarchical softmax
和word2vec 类似,能够将训练的时间复杂度降低。
1.2 n-gram features
使用 bag of n-grams 作为additional features 来批货一些额外的信息。 使用hash trick 来mapping n-grams.
fastText 相比于word2vec的主要改进
word2vec把语料库中的每个单词当成原子的,它会为每个单词生成一个向量。这忽略了单词内部的形态特征,比如:“apple” 和“apples”,“达观数据”和“达观”,这两个例子中,两个单词都有较多公共字符,即它们的内部形态类似,但是在传统的word2vec中,这种单词内部形态信息因为它们被转换成不同的id丢失了。
为了克服这个问题,fastText使用了字符级别的n-grams来表示一个单词。对于单词“apple”,假设n的取值为3,则它的trigram有
“<ap”, “app”, “ppl”, “ple”, “le>”
其中,<表示前缀,>表示后缀。于是,我们可以用这些trigram来表示“apple”这个单词,进一步,我们可以用这5个trigram的向量叠加来表示“apple”的词向量。
这带来两点好处:
\1. 对于低频词生成的词向量效果会更好。因为它们的n-gram可以和其它词共享。
\2. 对于训练词库之外的单词,仍然可以构建它们的词向量。我们可以叠加它们的字符级n-gram向量。
2.核心思想
将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。这中间涉及到两个技巧:字符级n-gram特征的引入以及分层Softmax分类。
Reference:
Bag of Tricks for Efficient Text Classification
网友评论