Skip to content

Latest commit

 

History

History
31 lines (15 loc) · 2.25 KB

Fasttext解读(2).md

File metadata and controls

31 lines (15 loc) · 2.25 KB

这个文章主要是谈一下Enriching Word Vectors with Subword Information 这个论文。

有了上一个文章的打底,(上一个文章点击这里)这个论文理解起来就比较简单,所以我写的也比较短。

对于这个论文,我先给出它最核心的部分: 使用负采样的skip-gram的基础上,将每个中心词视为子词的集合,并学习子词的词向量。

这句话涉及到的一个最关键的部分就是子词subword,也是这个论文的核心。

举个例子,现在我们的中心词是"where",设定子词大小为3,那么子词集合分为两个部分,注意是两个部分。

第一部分形如这样:“<wh”,“whe”,“her”,“ere”,“re>”,第二部分就是特殊子词,也就是整词“”。

那么对应到模型是,原来我的输入是“where”的词向量,现在在Fasttext就是所有子词的词向量的和。

注意哦,这里是所有子词,是包含特殊子词,也就是整词的。

对于背景词,直接使用整词就可以。

简单来说,就是输出层使用子词(普通子词加上整词),输出层使用整词。

如果遇到了OOV怎么办?使用普通子词的向量和来表示就可以。

其实这里的子词,在名字上和上一个文章的ngram很类似,不过,这里使用的是就char的n-gram,缓解的问题并不是语序,而是利用了词序形态的规律。

对应到中文,其实就是偏旁部首。 我记得阿里好像有发一个关于fasttext的中文版本,训练的就是偏旁部首。大家有兴趣可以去看一看。

写完了,我对两个文章做个小总结,顺便对文章开头的问题做个回答: fasttext 训练词向量的时候一般是使用Skip-gram模型的变种。在用作文本分类的时候,一般是使用CBOW的变种。

在这里,我想要强调一下,上一段我说的是一般情况,是为了方便大家了解,并不代表说CBOW架构不能训练词向量,skip-gram不能用作文本分类,需要注意这一点哦。