前言
好久没有写点东西了,的确是出于工作需要,不得不使用FastText,其实,我想说的是,FastText具有的优越性和不可替代性。言规正传,什么是FastText呢?
何为FastText
它是由Facebook AI Research最近推出的文本分类和词训练工具,其源码已经托管在Github上。FastText最大的特点是模型简单,只有一层的隐层以及输出层,因此训练速度非常快,在普通的CPU上可以实现分钟级别的训练,比深度模型的训练要快几个数量级。同时,在多个标准的测试数据集上,FastText在文本分类的准确率上,和现有的一些深度学习的方法效果相当或接近。
最近一直在做微信广告文章分类的工作,正好顺手研究了下FastText,并在微信广告文章识别上做了一些尝试。因为代码开源的时间不长,网上相应的文章和资料还比较少, 希望这篇文章对想了解和使用FastText做文本分类的朋友们有所帮助。
技术原理
介绍原理之前,我们先稍微聊一点八卦。FastText的其中一个作者是Thomas Mikolov。熟悉word2vec的朋友应该对这个名字很熟悉,正是他当年在Google带了一个团队倒腾出来了word2vec,很好的解决了传统词袋表示的缺点,极大地推动了NLP领域的发展。后来这哥们跳槽去了Facebook,才有了现在的FastText。从“血缘”角度来看,FastText和word2vec可以说是一脉相承。
回到正题,FastText主要有两个功能,一个是训练词向量,另一个是文本分类。词向量的训练,相对于word2vec来说,增加了subw