【Embedding】fastText:极快的文本分类工具

2020 年 5 月 11 日 AINLP

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

fastText 模型有两篇相关论文:

  • 《Bag of Tricks for Efficient Text Classification》
  • 《Enriching Word Vectors with Subword Information》

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

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

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

1. Introduction

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

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

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

2. fastText

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

2.1 N-gram

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

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

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

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

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

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

2.2 Embedding Model

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

 

fastText is a library for efficient learning of word representations and sentence classification.

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

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

这样做主要有两个好处:

  • 低频词生成的 Embedding 效果会更好,因为它们的 N-gram 可以和其它词共享而不用担心词频过低无法得到充分的训练;
  • 对于训练词库之外的单词(比如拼错了),仍然可以通过对它们字符级的 N-gram 向量求和来构建它们的词向量。

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

2.3 Classification Model

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

fastText Architecture

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

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

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

3. Experiment

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

3.1 Embeddng

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

3.2 Classification

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

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

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

4. Conclusion

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

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

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

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

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

5. Reference

  1. 《Bag of Tricks for Efficient Text Classification》
  2. 《Enriching Word Vectors with Subword Information》

推荐阅读

AINLP年度阅读收藏清单

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

DistilBERT Understanding

太赞了!Springer面向公众开放电子书籍,附65本数学、编程、机器学习、深度学习、数据挖掘、数据科学等书籍链接及打包下载

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

这门斯坦福大学自然语言处理经典入门课,我放到B站了

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


登录查看更多
0

相关内容

【ACL2020】基于图神经网络的文本分类新方法
专知会员服务
68+阅读 · 2020年7月12日
零样本文本分类,Zero-Shot Learning for Text Classification
专知会员服务
95+阅读 · 2020年5月31日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
57+阅读 · 2020年1月3日
【干货】用BRET进行多标签文本分类(附代码)
专知会员服务
84+阅读 · 2019年12月27日
一文读懂深度学习文本分类方法
AINLP
15+阅读 · 2019年6月6日
一文看懂深度文本分类之 DPCNN 原理与代码
人工智能头条
10+阅读 · 2019年2月11日
FastText的内部机制
黑龙江大学自然语言处理实验室
5+阅读 · 2018年7月25日
实践 | 使用fasttext进行文档分类
黑龙江大学自然语言处理实验室
7+阅读 · 2018年4月29日
专栏 | fastText原理及实践
机器之心
3+阅读 · 2018年1月26日
深度学习在文本分类中的应用
AI研习社
13+阅读 · 2018年1月7日
自然语言处理 (三) 之 word embedding
DeepLearning中文论坛
19+阅读 · 2015年8月3日
SepNE: Bringing Separability to Network Embedding
Arxiv
3+阅读 · 2019年2月26日
SlowFast Networks for Video Recognition
Arxiv
19+阅读 · 2018年12月10日
Arxiv
31+阅读 · 2018年11月13日
Text classification using capsules
Arxiv
5+阅读 · 2018年8月12日
Arxiv
5+阅读 · 2018年1月18日
Arxiv
4+阅读 · 2017年10月30日
Arxiv
8+阅读 · 2014年6月27日
VIP会员
相关资讯
一文读懂深度学习文本分类方法
AINLP
15+阅读 · 2019年6月6日
一文看懂深度文本分类之 DPCNN 原理与代码
人工智能头条
10+阅读 · 2019年2月11日
FastText的内部机制
黑龙江大学自然语言处理实验室
5+阅读 · 2018年7月25日
实践 | 使用fasttext进行文档分类
黑龙江大学自然语言处理实验室
7+阅读 · 2018年4月29日
专栏 | fastText原理及实践
机器之心
3+阅读 · 2018年1月26日
深度学习在文本分类中的应用
AI研习社
13+阅读 · 2018年1月7日
自然语言处理 (三) 之 word embedding
DeepLearning中文论坛
19+阅读 · 2015年8月3日
相关论文
SepNE: Bringing Separability to Network Embedding
Arxiv
3+阅读 · 2019年2月26日
SlowFast Networks for Video Recognition
Arxiv
19+阅读 · 2018年12月10日
Arxiv
31+阅读 · 2018年11月13日
Text classification using capsules
Arxiv
5+阅读 · 2018年8月12日
Arxiv
5+阅读 · 2018年1月18日
Arxiv
4+阅读 · 2017年10月30日
Arxiv
8+阅读 · 2014年6月27日
Top
微信扫码咨询专知VIP会员