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问题的方法。

最新文章

  1. gprs/gsm 在linux下的应用
  2. 经验分享:Linux 双网卡SNAT和DNAT映射本地端口出外网
  3. Jquery实现遮罩层,就是弹出DIV周围都灰色不能操作
  4. SSH 无密码访问其它机器 和 Windows 上 putty 无密码访问 Linux 机器
  5. 匈牙利算法 cojs.tk 搭配飞行员
  6. java socket通讯(一) 入门示例
  7. cadence异型孔
  8. JavaScript与FileSystemObject
  9. HTML用法小摘录
  10. ARES
  11. android的编译和运行过程深入分析
  12. ORACLE 如何查询被锁定表及如何解锁释放session
  13. github桌面软件使用教程
  14. ioc构架demo
  15. JVM 几个重要的参数
  16. MVC5+EF6 完整教程17--升级到EFCore2.0
  17. SQL——按照季度,固定时间段,分组统计数据
  18. python 动态加载类对象
  19. KVM虚拟化环境准备
  20. as无法关联git

热门文章

  1. iOS VIPER架构(一)
  2. 理解 JavaScript 的 async/await
  3. 【虚拟机-网关】如何在使用应用程序网关和 Nginx 的环境下实现强制 HTTPS 跳转
  4. Python+Selenium之断言对应的元素是否获取以及基础知识回顾
  5. ssh连接github连不上
  6. 手工恢复OSSIM数据库密码
  7. asp页面无法访问,可尝试开始SQL Server等服务
  8. UVA12906 Maximum Score (组合)
  9. Redis的安装以及spring整合Redis时出现Could not get a resource from the pool
  10. java中IO流之字节字符流的总结概述