FastText文本分类中的n-grams

FastText

FastText是facebook Tomas Mikolov提出的,也是在其word2vec的cbow模型的衍生物,该模型仅用一个隐层(仅仅求了平均,并未使用激活函数的非线性变换,故在Word2Vec模型中其实被叫做投影层Project Layer),一个分层的softmax,可以媲美深度神经网络,速度极快。在实际测试的时候,发现该模型比较适合数据量大的数据集,个人感觉他自己训练词向量如果数据太少的话,词向量的语义就不能保证,并且相比于rnn其前后文捕获能力,参数量等等也不够。

FastText模型结构

论文Bag of Tricks for Efficient Text Classification中给出的用于文本分类的FastText模型如下:
在这里插入图片描述
该模型看起来很简单,输入为一个句子的embed+n-gram,hidden是求输入的平均(未加入非线性),n-gram是加入顺序。对于模型的介绍这里就不说了,我们来关注一下embed+n-gram。

FastText n-grams

FastText的官方文档:https://fasttext.cc/docs/en/supervised-tutorial.html
文档中提到FastText模型默认是unigram,unigram指的是单个未划分单元,fastText中在单词级别上,故而unigram为单词。
在word级别上,n-grams是第i个词只与前面n-1个词有关,如bigrams:

在这里插入图片描述

如想对模型进行微调或是通过使用n-grams提高模型效果,如下代码(其中wordNgrams为1-5,lr为0.1-1.0,当数据量很大尤其是标签数很多时,可以选择loss=‘hs’,使用hierarchical softmax,dim为词向量的维度dimension):

    model = fasttext.train_supervised(
        data_path+filename,
        lr=0.1,
        dim=200,
        epoch=20,
        wordNgrams=2,
        loss='hs'
    )

n-grams如何计算

n-grams依据马尔科夫假设(Markov Assumption):一个词的出现仅与它之前的若干个词有关,表示如下:
在这里插入图片描述
以bigrams为例,即为:
在这里插入图片描述
每一项条件概率(wn|wn-1)使用极大似然估计计算,也就是词频:
在这里插入图片描述
举个例子,假设我们有两个句子:

我 喜欢 吃 苹果
你 喜欢 吃 什么
我 爱 吃 葡萄

那么p(喜欢|我)=p(我喜欢)/p(我)=1/2=0.5
p(吃|喜欢)=p(喜欢吃)/p(喜欢)=1/2=0.5

NLP中的N-gram模型更加详细的解说可参见https://blog.csdn.net/songbinxu/article/details/80209197#Naive_Bayes_6

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值