1. 首页
  2. 教育
  3. 深度学习

fastText有两大用途——文本分类和Word Embedding

今天我们来看Mikolov大佬2016年的另一大巨作——fastText。2013年大佬在Google开源了Word2Vec,2016年刚就职于FaceBook就开源了fastText,全都掀起了轩然大波。

今天我们来看Mikolov大佬2016年的另一大巨作——fastText。2013年大佬在Google开源了Word2Vec,2016年刚就职于FaceBook就开源了fastText,全都掀起了轩然大波。

fastText模型有两篇相关论文:

《BagofTricksforEfficientTextClassification》

《EnrichingWordVectorswithSubwordInformation》

截至目前为止,第一篇有1500多引用量,第二篇有2700多引用量。

从这两篇文的标题我们可以看出来fastText有两大用途——文本分类和WordEmbedding。

由于fastText模型比较简单,所以我们可以把两篇论文放在一起看。

1.Introduction

fastText提供了简单而高效的文本分类和WordEmbedding方法,分类精度比肩深度学习而且速度快上几个数量级。

举个例子:使用标准的CPU可以在十分钟的时间里训练超过10亿个单词,在不到一分钟的时间里可以将50万个句子分到31万个类别中。

可以看到fastText的速度有多惊人。

2.fastText

fastText之所以能做到速度快效果好主要是两个原因:N-Gram和Hierarchicalsoftmax。由于Hierarchicalsoftmax在Word2Vec中已经介绍过了,所以我们只介绍一下N-gram。

2.1N-gram

N-gram是一种基于统计语言模型的算法,常用于NLP领域。其思想在于将文本内容按照字节顺序进行大小为N的滑动窗口操作,从而形成了长度为N的字节片段序列,其片段我们称为gram。

以“谷歌是家好公司”为例子:

二元Bi-gram特征为:谷歌歌是是家家好好公公司

三元Tri-gram特征为:谷歌是歌是家是家好家好公好公司

当然,我们可以用字粒度也可以用词粒度。

例如:谷歌是家好公司二元Bi-gram特征为:谷歌是是家家好好公司三元Tri-gram特征为:谷歌是家是家好家好公司

N-gram产生的特征只是作为文本特征的候选集,后面还可以通过信息熵、卡方统计、IDF等文本特征选择方式筛选出比较重要的特征。

2.2EmbeddingModel

这边值得注意的是,fastText是一个库,而不是一个算法。类似于Word2Vec也只是一个工具,Skip-Gram和CBOW才是其中的算法。

fastTextisalibraryforefficientlearningofwordrepresentationsandsentenceclassification.

fastText在Skip-Gram的基础上实现WordEmbedding,具体来说:fastText通过Skip-Gram训练了字符级别N-gram的Embedding,然后通过将其相加得到词向量。

举个例子:对于“where”这个单词来说,它的Tri-gram为:“”。由于字符串首尾会有符号,所以这里用< 表示前缀, >表示后缀。textFast是对这些Tri-gram进行训练,然后将这5个tri-gram的向量求和来表示“where”的词向量。

这样做主要有两个好处:

低频词生成的Embedding效果会更好,因为它们的N-gram可以和其它词共享而不用担心词频过低无法得到充分的训练;

对于训练词库之外的单词(比如拼错了),仍然可以通过对它们字符级的N-gram向量求和来构建它们的词向量。

为了节省内存空间,我们使用HashMap将N-gram映射到1到K,所以单词的除了存储自己在单词表的Index外,还存储了其包含的N-gram的哈希索引。

2.3ClassificationModel

一般来说,速度快的模型其结构都会比较简单,fastText也不例外,其架构图如下图所示:

fastText有两大用途——文本分类和Word Embedding

fastTextArchitecture

其中,为一个句子的N-gram特征。

我们看到这个架构是不是感觉似曾相似?

fastText与Word2Vec的CBOW架构是非常相似的,但与CBOW不同的是:fastText输入不仅是多个单词Embedding向量,还将字符级别的N-gram向量作为额外的特征,其预测是也不是单词,而是Label(fastText主要用于文本分类,所以预测的是分类标签)。

3.Experiment

我们简单看下fastText的两个实验——Embedding和文本分类;

3.1Embeddng

sisg是fastText用于Embedding的模型,实验效果如下:

fastText有两大用途——文本分类和Word Embedding

3.2Classification

分类实验的精度fastText比char-CNN、char-RCNN要好,但比VDCNN要差。(但这里注意:fastText仅仅使用10个隐藏层节点,训练了5次epochs。)

fastText有两大用途——文本分类和Word Embedding

在速度上fastText快了几个数量级。(此处注意:CNN和VDCNN用的都是TeslaK40的GPU,而fastText用的是CPU)

fastText有两大用途——文本分类和Word Embedding

下面是标签预测的结果,两个模型都使用CPU并开了20个线程:

fastText有两大用途——文本分类和Word Embedding

4.Conclusion

一句话总结:fastText是一个用于文本分类和Embedding计算的工具库,主要通过N-gram和Hierarchicalsoftmax保证算法的速度和精度。

关于Hierarchicalsoftmax为什么会使fastText速度那么快?而在Word2Vec中没有看到类似的效果?

我觉得是因为fastText的标签数量相比Word2Vec来说要少很多,所以速度会变的非常快。其次Hierarchicalsoftmax是必要的,如果不同的话速度会慢非常多。

另外,fastText可能没有什么创新,但他却异常火爆,可能有多个原因,其中包括开源了高质量的fastText,类似Work2Vec,当然也会有Mikolov大佬和Facebook的背书。

总的来说,fastText还是一个极具竞争力的一个工具包。

5.Reference

《BagofTricksforEfficientTextClassification》

《EnrichingWordVectorswithSubwordInformation》

责任编辑:lq

免责声明:本站旨在传递信息,不代表有传资讯的观点和立场。本站遵循行业规范,如转载您的文章未标注版权,请联系我们(QQ:78799268)改正。本站的原创文章,如若转载,请注明出处:http://www.ainoline.cn/jiaoyu/shenduxuexi/16947.html

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

邮件:78799268@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code