FastText 介绍
2024-09-01 18:49:40
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 回归方法。
根据上面这些描述,大概可以发现一些端倪
- fasttext对罕见词非常有利,因为罕见词罕见是本身出现的次数足够少,但是构成其的character n-gram肯定比词本身出现的次数多,由于这些子词是共享的,因此可以从高频词中受益。
- 其次,对于OOV问题, 由于一个词可以被拆分成多个子词,当前词OOV,其大部分子词讲道理不会OOV,因此利用这些没有OOV的子词,可以在一定程度上缓解OOV问题。说到这里,想起了面蚂蚁金服时候,一个p8的面试官问了我一些处理OOV问题的方法。
最新文章
- gprs/gsm 在linux下的应用
- 经验分享:Linux 双网卡SNAT和DNAT映射本地端口出外网
- Jquery实现遮罩层,就是弹出DIV周围都灰色不能操作
- SSH 无密码访问其它机器 和 Windows 上 putty 无密码访问 Linux 机器
- 匈牙利算法 cojs.tk 搭配飞行员
- java socket通讯(一) 入门示例
- cadence异型孔
- JavaScript与FileSystemObject
- HTML用法小摘录
- ARES
- android的编译和运行过程深入分析
- ORACLE 如何查询被锁定表及如何解锁释放session
- github桌面软件使用教程
- ioc构架demo
- JVM 几个重要的参数
- MVC5+EF6 完整教程17--升级到EFCore2.0
- SQL——按照季度,固定时间段,分组统计数据
- python 动态加载类对象
- KVM虚拟化环境准备
- as无法关联git
热门文章
- iOS VIPER架构(一)
- 理解 JavaScript 的 async/await
- 【虚拟机-网关】如何在使用应用程序网关和 Nginx 的环境下实现强制 HTTPS 跳转
- Python+Selenium之断言对应的元素是否获取以及基础知识回顾
- ssh连接github连不上
- 手工恢复OSSIM数据库密码
- asp页面无法访问,可尝试开始SQL Server等服务
- UVA12906 Maximum Score (组合)
- Redis的安装以及spring整合Redis时出现Could not get a resource from the pool
- java中IO流之字节字符流的总结概述