fasttext 词向量

1 目的和思想

fasttext 模型的目的:分类(额外产物:词向量)
fasttext 的整体思想:引入字符n-gram,利用词及n-gram来预测类别
模型出自:Bag of Tricks for Efficient Text Classification

2 模型原理

模型实现:

  1. 将整篇文档的词及n-gram向量叠加平均得到文档向量
  2. 使用文档向量做h-softmax,形成多分类

2.1 n-gram

比如:“apple” 和“apples”,两个单词都有公共字符,即它们的内部形态类似。在word2vec中,这种单词内部形态信息因为它们被转换成不同的id丢失了,fastText使用了字符级别的n-grams来表示一个单词。对于单词“apple”,假设n的取值为3,则它的trigram有

“<ap”, “app”, “ppl”, “ple”, “le>”

2.2 Hierarchical Softmax

分层softmax的作用和在CBOW中相似,利用树降低复杂度,从N降到logN,需要计算w的概率,是指从root结点开始随机走,走到w的概率
在这里插入图片描述

3 fasttext 总结

fasttext利用了CBOW来设计的,最大的特点是增加了字符级的n-gram。对于低频词生成的词向量,可以共现其他词的n-gram。可以通过叠加词向量来表示新词的词向量

3.1 fasttext和CBOW

3.1.1 相同点

  1. fastText模型有三层:输入层、隐含层、输出层(Hierarchical Softmax)
  2. 输入都是多个经向量表示的单词,输出都是一个特定的target,隐含层都是对多个词向量的叠加平均

3.1.2 不同点

  1. fasttext是通过词预测类别,CBOW是通过周围词预测中心词
  2. fastText输入是多个单词及其n-gram,这些特征用来表示单个文档,而CBOW的输入是目标单词的周围词
  3. fastText输入的是向量,CBOW输入的是onehot编码的词

4 相关知识

4.1 标准softmax

softmax函数常在神经网络输出层充当激活函数,目的就是将输出层的值归一化到0-1区间

5 fasttext 函数使用

fasttext包目前只能在linux和mac上使用,如下是gensim.models.FastText

5.1 输入

输入分好的词

sentences = [["我","是","谁"], ["我","是","中国人"]]

5.2 函数及参数

from gensim.models import FastText
model = FastText(sentences,
                 size=4,       # 词向量维度
                 window=3,     # 周围词的范围
                 min_count=1,  # 去掉低词频
                 iter=10,      # 迭代次数
                 min_n=3,      # n-gram最小长度, fasttext特点
                 max_n=6,      # n-gram最大长度
                 word_ngrams=1)  # 0:word2vec, 1:增加n-gram

5.3 输出及应用

每个词对应的词向量
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值