FastText 介绍

在面试百度的NLP工程师时,被问及常用的词向量表示学习方法有哪些,我说知道word2vec,然后大佬又问我知道FastText么... 这就很尴尬了,不会!

不同于word2vec, fasttext利用的是词的形态学信息,也就是词的内部构造信息,也就是子词信息。话说,利用fasttext是不是可以拿汉语的偏旁部首来训练字向量?不过n-gram是需要字符序列信息的,汉字的笔画顺序?emmmmmm.........不过利用字向量得到词向量确实很方便。

那什么是子词信息?fasttext采用的character n-gram来做的,比如where这个词,那么它的character 3-gram 子词包含如下

<wh, whe, her, ere, re>以及本身<where>

这对尖括号的妙处在于,可以方便的讲her这个单词与where的子词her进行区分,her的character 3-gram子词包含的是 不包含 her,于是这两个便可以区分开来。

那么为什么要利用子词信息呢?脸书的研究者们认为,像word2vec这类词分布表示模型,词与词之间的信息没有更好的共享,也就是参数没有得到有效的共享,分解为粒度更小的子词后,通过共享子词表示,来达到信息共享的目的。

具体的做法做法

给定一个character n-gram 字典,假设大小为G,并且每个子词都有自己的词向量表示,那么词w的词向量,可以由构成它的所有子词对应的向量求和来表示。另一点,与word2vec不一样的是,fasttext使用的分类的方法,也就是根据与它计算score的另一个词是否是上下文来进行二分类,具体用到的是logistics 回归方法。

根据上面这些描述,大概可以发现一些端倪

  1. fasttext对罕见词非常有利,因为罕见词罕见是本身出现的次数足够少,但是构成其的character n-gram肯定比词本身出现的次数多,由于这些子词是共享的,因此可以从高频词中受益。
  2. 其次,对于OOV问题, 由于一个词可以被拆分成多个子词,当前词OOV,其大部分子词讲道理不会OOV,因此利用这些没有OOV的子词,可以在一定程度上缓解OOV问题。说到这里,想起了面蚂蚁金服时候,一个p8的面试官问了我一些处理OOV问题的方法。

FastText 介绍的更多相关文章

  1. fasttext介绍和试用

    http://fasttext.apachecn.org/cn/docs/v0.1.0/support.html fasttext介绍网站 https://github.com/facebookres ...

  2. 模型介绍之FastText

    模型介绍一: 1. FastText原理及实践 前言----来源&特点 fastText是Facebook于2016年开源的一个词向量计算和文本分类工具,在学术上并没有太大创新.但是它的优点也 ...

  3. 超快的 FastText

    Word2Vec 作者.脸书科学家 Mikolov 文本分类新作 fastText:方法简单,号称并不需要深度学习那样几小时或者几天的训练时间,在普通 CPU 上最快几十秒就可以训练模型,得到不错的结 ...

  4. NLP︱高级词向量表达(二)——FastText(简述、学习笔记)

    FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,不过这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类(paper: ...

  5. [转] fastText

    mark- from : https://www.jiqizhixin.com/articles/2018-06-05-3 fastText的起源 fastText是FAIR(Facebook AIR ...

  6. 转:fastText原理及实践(达观数据王江)

    http://www.52nlp.cn/fasttext 1条回复 本文首先会介绍一些预备知识,比如softmax.ngram等,然后简单介绍word2vec原理,之后来讲解fastText的原理,并 ...

  7. 文本分类需要CNN?No!fastText完美解决你的需求(后篇)

    http://blog.csdn.net/weixin_36604953/article/details/78324834 想必通过前一篇的介绍,各位小主已经对word2vec以及CBOW和Skip- ...

  8. 文本分类需要CNN?No!fastText完美解决你的需求(前篇)

    http://blog.csdn.net/weixin_36604953/article/details/78195462?locationNum=8&fps=1 文本分类需要CNN?No!f ...

  9. windows+python3.6下安装fasttext+fasttext在win上的使用+gensim(fasttext)

    真是坑了好久,faxttext对win并不是很友好,所以遇到了很多坑,记录下来,以供大家少走弯路. 法1:刚开始直接用pip install fasttext,最后一直报下面这个错误 “error:M ...

随机推荐

  1. 如何快速构建CMBD系统-glpi

    一.CMBD系统构建步骤 起初,开发这套CMBD系统是为了帮助朋友公司简化设备统计操作,以代替人工入库方式.举个例子,单位发放笔记本,或者设备更换了硬盘,都需要人工签到,手动输入统计,安装了CMBD系 ...

  2. uvm_mem_mam——寄存器模型(十三)

    有了存储器模型,再来看看存储器的管理 //------------------------------------------------------------------------------ ...

  3. 用Python完成根据日期计算是星期几

    import datetime def week(year,month,day): someday=dayetime.date(year,month,day) result={ "0&quo ...

  4. 全站变灰的CSS代码-适合特殊时刻哀悼

    将下面CSS代码应用到HTML标签或者是BODY标签 filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.o ...

  5. Android视图控件架构分析之View、ViewGroup

    在Android中,视图控件大致被分为两类,即ViewGroup和View,ViewGroup控件作为父控件,包含并管理着子View,通过ViewGroup和View便形成了控件树,各个ViewGou ...

  6. UVA 11853 - Paintball 战场(dfs)

    题意:有n个敌人,每个敌人有一个攻击范围,问你是否存在从西边到东边的路径,如果存在,输出入点和出点最靠北的坐标. 把每个敌人看出一个圆,从上往下跑dfs连通,如果到达底部,那么无解.要求出最靠北的坐标 ...

  7. ansible-galera集群部署

    一.环境准备 1.各主机配置静态域名解析: [root@node1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain local ...

  8. python_98_面向对象_学校

    class School(object):#以后都加object(基类) def __init__(self, name, addr): self.name = name self.addr = ad ...

  9. 【转】 树莓派初次启动攻略for Mac

    http://blog.csdn.net/rk2900/article/details/8632713/ 树莓派初次启动攻略for Mac made by Rk 感谢浙江大学<嵌入式系统> ...

  10. C#与SQLServer数据库连接

    第一种连接数据库方法:直接通过数据库的用户名.密码等连接 步骤: (1)建立SqlConnection对象,指定SqlConnection对象的ConnectionString属性: (2)打开数据库 ...