• Fasttext 总结


    Fasttext是继word2vec词向量模型提出之后提出的模型(或者说算法),因为训练速度非常快而比较受工业界关注。Fastext本身也和word2vec模型有很多相似之处,这篇博文将会简单梳理一下fasttext相关知识,关于word2vec那部分就不细讲了。

    Fasttext涉及两篇论文,也分别代表了它的两个应用方向

    1. Bag of Tricks for Efficient Text Classification(201607) - 文本分类
    2. Enriching Word Vectors with Subword Information(201607)- 训练词向量

    正如其名,两个方向的目标都是快,而且不损失太多质量。

    Fasttext-文本分类

    Fasttext应用到文本分类中,使用的CBOW的变种,和CBOW有如下区别:

    1. 使用类别标签替换中心词做预测
    2. 使用句子中所有单词作为输出,而不是滑动窗口

    这两个改变都是为了做分类,第一个不需要解释,第二个做文本分类只需要考虑一次整个句子的特征就行,所以不使用滑动窗口,这也是为了降低计算复杂度。

    使用霍夫曼树作为输出层(即Hierarcial Softmax),非叶子节点上的向量为二分类提供计算,叶子节点对应的是所有类别(而不是词汇表所有词的向量)。

    模型开始训练时,词向量(参数)随机初始化,结束后保存起来用于预测就行,我们目的是分类,而不是词向量。

    Fasttext模型的输入不仅仅是针对每个单词,并且加入了词序信息,词序信息通过n-gram的形式加入。n-gram对应的单位是word,而不是char。

    Fasttext-获取词向量

    使用负采样的skip-gram,将每个中心词看作子词的集合,并学习这些子词的词向量。

    子词(subword)是论文核心,以中心词为where为例,设定子词大小为3,那么子词集合分为两部分,整词和子词。

    整词即<where>
    子词<wh, whe, her,ere,re>
    最终<wh, whe, her,ere,re, where>

    背景词则直接使用整词。

    输入层使用子词(子词+整词),输出层使用整词。

    如果OOV,则使用子词的向量和表示该词,这也是subword的一个优势所在。

    fasttext在做文本分类的时候,一般使用CBOW;在训练词向量的时候,一般使用skip-gram

  • 相关阅读:
    OpenCV 轮廓填充drawContours函数解析
    C++ MultiByteToWideChar和WideCharToMultiByte用法详解
    删除后缀dll文件,无需下载软件
    MYSQL误删除DELETE数据找回
    神经网络减少GPU显存占用的技术
    keras tensorflow 获取某层输出和层内参数的值
    聚光灯矩阵
    tf.linalg.band_part 和 tf.matrix_band_part
    机器学习,BootStrap
    极大团算法思路小记
  • 原文地址:https://www.cnblogs.com/wanghongze95/p/13842425.html
Copyright © 2020-2023  润新知