概述
fasttext是facebook开源的一个词向量与文本分类工具,TastText模型 是word2vec 作者 Mikolov转战 Facebook 后于2016年7月发表在论文Bag of Tricks for Efficient Text Classification上,在学术上并没有太大创新,但它的优点也非常明显,它的官网(fasttext.cc)上是这样介绍的:
FastText is an open-source, free, light weight library that allows users to learn text representations and text classifiers.It works on standard, generic hardware. Models can later be reduced in size to even fit on mobile devices.
fastText最惊艳的地方在于,和最前沿深度神经网络模型相比,它在分类精度等指标毫不逊色的情况下,把训练和推断速度降低了几个数量级!按Facebook的报告,在普通多核CPU上,10亿词的文本训练时间小于10分钟,50万句子分到31.2万类别用时小于1分钟。下面这张图可以清楚地看到这一点,
fastText能够做到效果好,速度快,主要依靠两个秘密武器:一是利用了词内的n-gram信息(subword n-gram information),二是用到了层次化Softmax回归(Hierarchical Softmax)的训练trick。这里有一点需要特别注意,一般情况下,使用fastText进行文本分类的同时也会产生词的embedding,即embedding是fastText分类的产物。除非你决定使用预训练的embedding来训练fastText分类模型,这另当别论。下面我们会详细的介绍fastText的原理。
FastText原理
模型架构
fastText的架构和word2vec中的CBOW的架构类似,因为它们的作者都是Facebook的科学家Tomas Mikolov,而且确实fastText也算是words2vec所衍生出来的。
Continuous Bog-Of-Words: