word2vec [4] fastText

2019-06-15  本文已影响0人  数据小新手

fastText

Fasttext 是一个具有rank constraint 的线性模型,并且可以快速进行训练的模型,可以在几分钟训练数十亿单词的向量。

Word2vec 的方法对于few examples 泛化能力较差

1.模型架构

image-20190615164644019.png

词的表达平均成文本的表示,然后传入线性分类器中,架构类似于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

上一篇下一篇

猜你喜欢

热点阅读