NLP---FastText

参考:https://blog.csdn.net/sinat_26917383/article/details/54850933
https://www.leiphone.com/news/201608/y8rhWEglraduqcOC.html

1. 简介

  • fastText是Facebook于2016年开源的一个文本分类器。
  • 显著特点快而且准确率高。相对于其它文本分类模型,如SVM,Logistic Regression和neural network等模型,fastText在保持分类效果的同时,大大缩短了训练时间。实验表明 fastText 在准确率上与深度学习分类器具有同等水平,特别是在训练和评估速率上要高出几个数量级。使用 fastText能够将训练时间从几天降至几秒,并且在许多标准问题上是当下最好的表现(例如文本倾向性分析或标签预测)。在使用标准多核CPU的情况下10分钟内处理超过10亿个词汇。
  • 用途:文本分类;学习词向量表征。
  • 关于fastText的两篇论文
    a. Bag of Tricks for Efficient Text Classification (高效文本分类技巧);
    b. Enriching Word Vectors with Subword Information (使用子字信息丰富词汇向量)

2. 原理介绍

2.1 模型框架

输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签,预测标签时使用非线性激活函数。

2.2 原理

  • fastText 模型架构和 Word2Vec 中的 CBOW 模型很类似。不同之处在于,fastText 预测标签,而 CBOW 模型预测中间词。在实现过程中fastText也使用了一些非常棒的技巧:Hierarchical softmax,n-gram,subword。因此,本文通过这些技巧来了解FastText。

2.2.1 Hierarchical softmax

参考https://www.cnblogs.com/pinard/p/7160330.html
以上链接有非常详细的介绍和推导,也非常易于理解。

2.2.2 N-gram

参考:https://cloud.tencent.com/developer/article/1080923

  1. 字粒度的n-gram(或字符级n-gram)
    例如“我在学习自然语言处理”这句话,
    unigram为:我 在 学 习 自 然 语 言 处 理,有10个。
    bigram为:我在 在学 学习 习自 自然 然语 语言 言处 处理,有9个。
  2. 词粒度的n-gram
    例如“我在学习自然语言处理”这句话,
    unigram为:我 在 学习 自然 语言 处理
    bigram为:我 / / /在 在 / / /学习 学习 / / /自然 自然 / / /语言 语言 / / /处理
  3. 字符级n-gram的优点
    a. 对于低频词生成的词向量效果会更好。因为它们的n-gram可以和其它词共享。
    b. 对于训练词库之外的单词,仍然可以构建它们的词向量。我们可以叠加它们的字符级n-gram向量。

2.2.3 bag of words

参考:https://cloud.tencent.com/developer/article/1080923

fastText从输入层输入到隐含层输出部分,主要在做一件事情:生成用来表征文档的向量。那么它是如何做的呢?-----叠加构成这篇文档的所有词及n-gram的词向量,然后取平均。叠加词向量背后的思想就是传统的词袋法,即将文档看成一个由词构成的集合。

2.2.4 subwords

这个技巧应该就是字符级的n-gram。

3. fastText与word2vec比较

参考:https://cloud.tencent.com/developer/article/1080923

  • 不同之处
    (1) CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征,这些特征用来表示单个文档。
    (2) CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过。
    (3) CBOW的输出是目标词汇,fastText的输出是文档对应的类标,这也导致哈夫曼树的建立不同,CBOW根据语料库中每个词的出现次数,fastText根据每个类别的出现次数。

  • 相同之处
    (1) Hierarchical softmax训练过程的相关公式推导基本一致。

4. 源码中的重要细节

  • 词典的数据结构:

其中,entry_type的类型为 enum (枚举),word(0),label(1)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值