fasttext

word-level Model

以word(词)作为基本单位的模型,这种方式可以很好地对词库中每一个词进行向量表示
存在问题:

  1. OOV问题:容易出现单词不在词库中地情况
    解决办法:最佳语料规模,使系统能够获得更多地词汇量
  2. 误拼障碍
    解决办法:拼写矫正、规则约束
  3. 做翻译问题时,音译姓名比较难做到

Character-Level Model

基于char(字符)作为基本单位的模型,这种方式可以很好地对字库中每一个char进行向量表示
优点:

  1. 能够解决word-level存在的OOV问题
  2. 类似的单词,具有类似的embedding

存在问题:

  1. char-level的输入句子变长
  2. 数据变得稀疏
  3. 对远距离的依赖难以学到
  4. 训练速度降低

Fasttext

一种介于 word-level Model 和 Character-level 之间的 Model —— Subword Model。
FastText就是利用subword将word2vec扩充,有效的构建embedding。
fasttext:将每个 word 表示成 bag of character n-gram 以及单词本身的集合。
那么,对于word w w w,其n-gram集合用 G w G_w Gw表示,每个n-gram的矢量表示为 z g z_g zg,则每个单词可以表示成其所有n-gram的矢量和。而中心词 w w w与上下文词 c c c的分数可表示为:
在这里插入图片描述
之后可以按照经典的word2vec算法训练得到特征向量,即保持了word2vec计算速度快的优点,又解决了训练集中的OOV表示问题。

fasttext网络结构

在这里插入图片描述
每个单词通过嵌入层得到词向量
将所有词向量取平均得到文本的向量表达
利用分类器,使用softmax计算各个类别的概率。

fastText 要使用词内的n-gram信息

依据词/字符级别的训练方法都存在问题,例如
依据词的:低频词、罕见词,由于其出现的次数少,得不到足够的训练;OOV问题。
依据字符的:词表过大,训练速度慢、输入句子变长、数据稀疏。
因此fasttext采用subword级别的方法可以解决上述问题。

fastText 词内的n-gram信息

  1. 将一个单词打散到字符级别
  2. 利用字符级别的n-gram信息来捕捉字符间的顺序关系,从而丰富单词内部更细微的语义。

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

  1. 每个n-gram都会训练为一个向量
  2. 原单词的词向量就由它对应的所有n-gram向量求和得到。
  3. 所有的单词向量以及字符级别的n-gram向量同时相加求平均作为分类器的输入。

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

参数过多,模型可能比较膨胀

解决办法:

  • L采用hash-trick:由于n-gram原始的空间太大,可以用某种hash函数将其映射到固定大小的buckets中去,从而实现内存可控;
  • 采用quantize命令:对生成的模型进行参数量化和压缩;
  • 减小最终向量的维度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值