自然语言炼丹之路(三之六)筑基丹fasttext

Bag of tricks for Efficient Text Classification 对于高效率文本分类的技巧

这是FaceBook的Armand Joulin 2017发表在EACL上的,四作是word2vec的作者。EACL和NAACL是ACL的两个分别在欧洲和北美洲办的子会议。已经开源在fasttext.cc上,更详细的介绍和使用可以去这儿查看。

背景知识

之前的深度学习文本分类模型效果好,不需要特征工程,但是速度太慢,无法在大规模分类任务上使用。基于机器学习的则多数是线性分类模型,速度快,效果还可以,但效果和特征工程有很大关系。
fasttext模型效果与其他模型差不多,但是速度快了多个数量级,可以达到在多核CPU10分钟内训练10亿词,在1分钟内训练312k类别的50万个句子。fasttext的分类任务基于CBOW,词训练任务则基于skipgram。
技巧方面主要是提出了快速的线性分类器和基于softmax和n-gram的fasttext模型。

hashing trick

1-gram 词表3万
2-gram 词表10万
3-gram 词表40万
总词表53万,前3万个一个词映射一个向量,后40万每6个词映射为1个向量,共将近7万个向量。

模型

(一) 分类模型

这是基于CBOW的,可以看到和CBOW很像。一句话,词表是V大小,每个词onehot后输入是1*V的,和V*D大小权重矩阵W相乘之后取平均得到1*D隐层向量,然后乘D*labels大小的权重矩阵W’得到1*labels大小的向量,做softmax得到预测句子标签的概率输出(当然也可以接SVM做分类)。
请添加图片描述
可以看到除了最后的W’维度和最前面的输入是句子所有词之外,其他的基本和CBOW是相同的。
相同点:
1、都是log-linear模型(对数线性模型),模型非常简单。当然softmax只是输出概率,所以说都是线性模型也完全ok。
2、都是对输入词向量做平均,然后预测输出。
3、模型结构完全一样。
不同点:
1、Fasttext提取句子特征,CBOW提取上下文特征。
2、Fasttext需要标注语料,是监督模型;CBOW是无监督模型。
Fasttext的问题和解决方法:
1、类别过多时,softrmax依旧很慢, 使用层次softmax解决。
2、使用词袋模型,没有词序信息,使用n-gram模型解决。n-gram的n大的时候也会慢,可使用hash去解决,但hash会导致不太准确。

(二)子词词向量训练模型

之前学习我们知道,用词向量会产生OOV词(尤其网络语料因为简写和拼写错误等),且可能考虑不到词内部信息。而用字符向量则会很慢。所以这里采用子词词向量(subword embedding)的方式,即使用字符的n-gram代替词,例如where的3-gram子词表示是由<wh,whe,her,ere,re>的词向量和where本身组合而来。<开头是词头,>结尾是词缀。
这时候的loss是对skip-gram的loss做了变形:
s ( w , c ) = ∑ g ∈ G w z g T v c s(w,c)=\sum_{g\in{G_w}}z_g^Tv_c s(w,c)=gGwzgTvc
v c v_c vc是中心子词向量,z是周围子词向量。

历史意义

1、提出使用子词训练词向量的方法,一定程度解决OOV词,且不需特征工程。
2、提出新的文本分类方法,快速高效。
3、开源fasttext,工业界、学术界应用大大加速。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值