首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【关于 fastText】 那些你不知道的事

【关于 fastText】 那些你不知道的事

原创
作者头像
杨夕
修改于 2021-03-02 02:02:30
修改于 2021-03-02 02:02:30
1.2K0
举报

作者:杨夕 项目地址:https://github.com/km1994/NLP-Interview-Notes 个人论文读书笔记:https://github.com/km1994/nlp_paper_study 【注:手机阅读可能图片打不开!!!】

一、fastText 动机篇

1.1 word-level Model 是什么?

  • 介绍:基于word单词作为基本单位的,这种方式虽然能够很好的对词库中每一个词进行向量表示

1.2 word-level Model 存在什么问题?

  • OOV 问题
    • 问题描述:容易出现单词不存在于词汇库中的情况;
    • 解决方法:最佳语料规模,使系统能够获得更多的词汇量;
  • 误拼障碍
    • 问题描述:如果遇到了不正式的拼写, 系统很难进行处理;
    • 解决方法:矫正或加规则约束;
  • 做翻译问题时, 音译姓名比较难做到

1.3 Character-Level Model 是什么?

  • 介绍:基于 Character 作为基本单位的,这种方式虽然能够很好的对字库中每一个 Char 进行向量表示

1.4 Character-Level Model 优点?

  • 能够解决 Word-level 所存在的 OOV 问题;
  • 拼写类似的单词 具有类似的 embedding;

1.5 Character-Level Model 存在问题?

  • Character-level 的输入句子变长;
  • 数据变得稀疏;
  • 对于远距离的依赖难以学到;
  • 训练速度降低;

1.6 Character-Level Model 问题的解决方法?

  • Lee 等 提出了利用多层 conv 和 pooling 和 highway layer 的方式来解决该问题,其结构如下所示:
    • 输入的字符首先需要经过 Character embedding 层,并被转化为 character embeddings 表示;
    • 采用 不同窗口大小的卷积核对输入字符的 character embeddings 表示进行卷积操作,论文中采用的窗口的大小分别为 3、4、5 ,也就是说学习 Character-level 的 3-gram、4-gram、5-gram;
    • 对不同卷积层的卷积结果进行 max-pooling 操作,即捕获其最显著特征生成 segment embedding;
    • segment embedding 经过 Highway Network (有些类似于Residual network,方便深层网络中信息的流通,不过加入了一些控制信息流量的gate);
    • 输出结果 再经过 单层 BiGRU,得到最终 的 encoder output;
    • 之后,decoder再利用Attention机制以及character level GRU进行decode
  • 通过这种方式不仅能够解决 Word-level 所存在的 OOV 问题,而且能够捕获 句子的 3-gram、4-gram、5-gram 信息,这个也是 后期 FastText 的想法雏形;

二、 词内的n-gram信息(subword n-gram information) 介绍篇

2.1 引言

在前面,我们已经介绍和比较了 word-level 和 character-level 的优缺点,并根据其特点,提出一种介于 word-level Model 和 Character-level 之间的 Model —— Subword Model。

那么,我们可不可以采取类似于上面的subword的思路来产生更好的word embedding呢?

FAIR的FastText就是利用subword将word2vec扩充,有效的构建embedding。

2.2 fastText 是什么?

2.3 fastText 的结构是什么样?

  • 每个单词通过嵌入层可以得到词向量;
  • 然后将所有词向量平均可以得到文本的向量表达;
  • 在输入分类器,使用softmax计算各个类别的概率;

2.4 为什么 fastText 要使用词内的n-gram信息(subword n-gram information)?

  • 之前方法:
    • 以词汇表中的独立单词作为基本单元来进行训练学习的
    • 存在问题:
      • 低频词、罕见词:由于在语料中本身出现的次数就少,得不到足够的训练,效果不佳
      • 未登录词:如果出现了一些在词典中都没有出现过的词,或者带有某些拼写错误的词,传统模型更加无能为力

2.5 fastText 词内的n-gram信息(subword n-gram information) 介绍?

  • s1. 将一个单词打散到字符级别;
  • s2. 利用字符级别的n-gram信息来捕捉字符间的顺序关系
    • 目的:以此丰富单词内部更细微的语义
  • 举例:
    • 对于一个单词“google”,为了表达单词前后边界,我们加入<>两个字符,即变形为“”;
    • 抽取所有的tri-gram信息:G = { <go, goo, oog,ogl, gle, le>};
    • 通过这种方式:原始的一个单词google,就被一个字符级别的n-gram集合所表达;

2.6 fastText 词内的n-gram信息 的 训练过程?

  • s1:每个n-gram都会对应训练一个向量;
  • s2:原来完整单词的词向量就由它对应的所有n-gram的向量求和得到;
  • s3:所有的单词向量以及字符级别的n-gram向量会同时相加求平均作为训练模型的输入;

2.7 fastText 词内的n-gram信息 存在问题?

  • 由于需要估计的参数多,模型可能会比较膨胀
  • 压缩模型的建议:
    • 采用hash-trick:由于n-gram原始的空间太大,可以用某种hash函数将其映射到固定大小的buckets中去,从而实现内存可控;
    • 采用quantize命令:对生成的模型进行参数量化和压缩;
    • 减小最终向量的维度。

三、 层次化Softmax回归(Hierarchical Softmax) 介绍篇

3.1 为什么要用 层次化Softmax回归(Hierarchical Softmax) ?

  • 传统 softmax
    • 介绍:
      • 以隐藏层的输出h为输入,经过线性和指数变换后,再进行全局的归一化处理,找到概率最大的输出项;
    • 问题:
      • 当词汇数量V较大时(一般会到几十万量级),Softmax计算代价很大,是O(V)量级。

3.2 层次化Softmax回归(Hierarchical Softmax) 的思想是什么?

  • 将一个全局多分类的问题,转化成为了若干个二元分类问题,从而将计算复杂度从O(V)降到O(logV);
  • 每个二元分类问题,由一个基本的逻辑回归单元来实现

3.3 层次化Softmax回归(Hierarchical Softmax) 的步骤?

  • 步骤:
    • 从根结点开始,每个中间结点(标记成灰色)都是一个逻辑回归单元,根据它的输出来选择下一步是向左走还是向右走;
    • 上图示例中实际上走了一条“左-左-右”的路线,从而找到单词w₂。而最终输出单词w₂的概率,等于中间若干逻辑回归单元输出概率的连乘积;

四、fastText 存在问题?

  • 如何构造每个逻辑回归单元的输入
    • 特殊函数 ⟦x⟧
      • 如果下一步需要向左走其函数值定义为1,向右则取-1。在训练时,我们知道最终输出叶子结点,并且从根结点到叶子结点的每一步的路径也是确定的。
    • 每个内部结点(逻辑回归单元)对应的一个向量 v'
      • 以在训练过程中学习和更新
    • h 是网络中隐藏层的输出
    • 如何建立这棵用于判断的树形结构?
    • 霍夫曼树的构造
      • 处理机制:将字符信息编码成为0/1二进制串
      • 结构介绍:给出现频繁的字符较短的编码,出现较少的字符以较长的编码,是最经济的方案
      • 构造步骤:

参考资料

  1. 神经网路语言模型(NNLM)的理解
  2. NLP 面试题(一)和答案,附

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
NLP入门 | 通俗讲解Subword Models
之前介绍的模型都是基于词向量的, 那么能不能换一个角度来表示语言。说英文的时候, 每个单词都是由音节构成的, 而人们听到了连续的音节就可以理解其中的含义, 而音节显然比词粒度更细。
Datawhale
2020/07/23
1.7K0
NLP入门 | 通俗讲解Subword Models
【Embedding】fastText:极快的文本分类工具
今天我们来看 Mikolov 大佬 2016 年的另一大巨作——fastText。2013 年大佬在 Google 开源了 Word2Vec,2016 年刚就职于 FaceBook 就开源了 fastText,全都掀起了轩然大波。
beyondGuo
2020/06/12
2.8K0
NLP中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
一、文本表示和各词向量间的对比 1、文本表示哪些方法? 2、怎么从语言模型理解词向量?怎么理解分布式假设? 3、传统的词向量有什么问题?怎么解决?各种词向量的特点是什么? 4、word2vec和NNLM对比有什么区别?(word2vec vs NNLM) 5、word2vec和fastText对比有什么区别?(word2vec vs fastText) 6、glove和word2vec、 LSA对比有什么区别?(word2vec vs glove vs LSA) 7、 elmo、GPT、bert三者之间有什么区别?(elmo vs GPT vs bert)
zenRRan
2019/06/14
3.9K0
NLP中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
无所不能的Embedding 2. FastText词向量&文本分类
Fasttext是FaceBook开源的文本分类和词向量训练库。最初看其他教程看的我十分迷惑,咋的一会ngram是字符一会ngram又变成了单词,最后发现其实是两个模型,一个是文本分类模型[Ref2],表现不是最好的但胜在结构简单高效,另一个用于词向量训练[Ref1],创新在于把单词分解成字符结构,可以infer训练集外的单词。这里拿quora的词分类数据集尝试了下Fasttext在文本分类的效果, 代码详见 https://github.com/DSXiangLi/Embedding
风雨中的小七
2020/09/08
1.8K0
无所不能的Embedding 2. FastText词向量&文本分类
Python3 使用fastText进行文本分类 新闻分类
这篇论文的模型非常之简单,之前了解过word2vec的同学可以发现这跟CBOW的模型框架非常相似。
大鹅
2021/06/15
3.2K0
技术干货丨fastText原理及实践
fastText是Facebook于2016年开源的一个词向量计算和文本分类工具,在学术上并没有太大创新。但是它的优点也非常明显,在文本分类任务中,fastText(浅层网络)往往能取得和深度网络相媲美的精度,却在训练时间上比深度网络快许多数量级。在标准的多核CPU上, 能够训练10亿词级别语料库的词向量在10分钟之内,能够分类有着30万多类别的50多万句子在1分钟之内。 本文首先会介绍一些预备知识,比如softmax、ngram等,然后简单介绍word2vec原理,之后来讲解fastText的原理,并
达观数据
2018/04/02
4K0
技术干货丨fastText原理及实践
NLP系列文章:子词嵌入(fastText)的理解!(附代码)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/08/29
2.3K0
NLP系列文章:子词嵌入(fastText)的理解!(附代码)
基于深度学习的文本分类应用!
在基于机器学习的文本分类中,我们介绍了几种常见的文本表示方法:One-hot、Bags of Words、N-gram、TF-IDF。这些方法存在两个共同的问题:一是转换得到的向量维度很高,需要较长的训练实践;二是没有考虑到单词与单词之间的关系,只是进行了统计。
Datawhale
2020/08/17
6730
斯坦福NLP课程 | 第12讲 - NLP子词模型
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/16
8180
斯坦福NLP课程 | 第12讲 - NLP子词模型
NLP︱高级词向量表达(二)——FastText(简述、学习笔记)
本文介绍了fastText这款基于子词(subword)的文本分类模型,该模型在文本分类任务上表现优异,具有较快的训练速度,并且支持多种语言。fastText采用子词建模,将文本拆分成子词,然后利用这些子词来训练模型。相较于word2vec和BERT等模型,fastText具有更高的训练效率和更好的性能。同时,fastText还可以用于多语言文本分类,并且不需要额外的预处理或数据标注。
悟乙己
2018/01/02
4K1
NLP︱高级词向量表达(二)——FastText(简述、学习笔记)
Fasttext 总结
这两个改变都是为了做分类,第一个不需要解释,第二个做文本分类只需要考虑一次整个句子的特征就行,所以不使用滑动窗口,这也是为了降低计算复杂度。
Steve Wang
2020/09/14
9560
机器学习|7种经典预训练模型原理解析
目前无论在CV领域还是NLP领域,预训练都是一个很普遍和普适的方法。我们都知道深度学习的模型越庞大,模型参数越多,为了避免过拟合就需要相应大规模的数据集,但对于很多任务而言,样本标注的成本昂贵。相反,大规模无标签数据库相对容易建立,为了充分利用这些无标记数据,我们可以先使用它们在其他一些任务上学习一个好的特征表示,再用于训练目标任务。
智能生信
2021/02/04
5.7K0
fastText细节及实践
fastText模型是类似CBOW的三层结构,关于这个结构的介绍,很多博客都讲了,这里我不多赘述,我主要叙述一下其中的部分细节
mathor
2020/06/18
1.3K1
fastText细节及实践
NLP︱高级词向量表达(二)——FastText(简述、学习笔记)「建议收藏」
1、NLP︱高级词向量表达(一)——GloVe(理论、相关测评结果、R&python实现、相关应用) 2、NLP︱高级词向量表达(二)——FastText(简述、学习笔记) 3、NLP︱高级词向量表达(三)——WordRank(简述) 4、其他NLP词表示方法paper:从符号到分布式表示NLP中词各种表示方法综述
全栈程序员站长
2022/08/10
1.5K0
NLP︱高级词向量表达(二)——FastText(简述、学习笔记)「建议收藏」
【关于 NLP】百问百答
作者:杨夕、芙蕖、李玲、陈海顺、twilight、LeoLRH、JimmyDU、艾春辉、张永泰、金金金
杨夕
2021/03/11
1.1K0
【关于 NLP】百问百答
深度 | 比深度学习快几个数量级,详解Facebook最新开源工具——fastText
导读:Facebook声称fastText比其他学习方法要快得多,能够训练模型“在使用标准多核CPU的情况下10分钟内处理超过10亿个词汇”,特别是与深度模型对比,fastText能将训练时间由数天缩
AI科技评论
2018/03/07
1.1K0
深度 | 比深度学习快几个数量级,详解Facebook最新开源工具——fastText
词向量(1)--从Word2Vec到ELMo
若你是做NLP的,一定对词向量很亲切,若你是做推荐的,对词向量也一定不会陌生,以词向量为代表的序列向量化方法已经成为机器学习中必不可少的实战利器。
流川枫
2020/04/24
9810
word2vec原理(二) 基于Hierarchical Softmax的模型
    word2vec原理(二) 基于Hierarchical Softmax的模型
刘建平Pinard
2018/08/07
1.3K0
word2vec原理(二) 基于Hierarchical Softmax的模型
NLP: Word Embedding 词嵌入(Part2: fastText)
word2vec, n-gram 等 word-embedding 方法选择用vector表示single word 而不考虑词根词缀之间的关系
JiahuiZhu1998
2022/12/03
7700
【特征提取+分类模型】4种常见的NLP实践思路
越来越多的人选择参加算法赛事,为了提升项目实践能力,同时也希望能拿到好的成绩增加履历的丰富度。期望如此美好,现实却是:看完赛题,一点思路都木有。那么,当我们拿到一个算法赛题后,如何破题,如何找到可能的解题思路呢。
昱良
2020/08/28
3.4K0
【特征提取+分类模型】4种常见的NLP实践思路
推荐阅读
相关推荐
NLP入门 | 通俗讲解Subword Models
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档