zoukankan      html  css  js  c++  java
  • Word2vec 模型理解

    通过倒叙的方式讲解word2vec训练词向量的过程, 满足浮躁的初学者理解模型

    目标

    明确我们的目标, 我们希望能够在给定的大量的文档, 学习出文档中每个词的词向量. 这里对词向量训练好坏的最直观的标准是:

    具有相似上下文的词, 它们的词向量越相近

    粗糙的流程

    训练数据

    对于文档中的每个目标词, 我们找出它的上下文, 并且与目标词分别匹配生成一组词对, 例如:

    怎样 和 程序猿 谈 一场 不散场 的 爱情

    这句话中, 假设我们选择程序猿为目标词时, 能够获得下列词对(考虑到训练量问题, 我们需要设置一个上下文的范围,这里我们这是为两个词)

    (程序猿, 怎样)
    (程序猿, 和)
    (程序猿, 谈)
    (程序猿, 一场)

    这里,目标词程序猿就是模型的输入, 程序猿 的上下文就是模型的输出.
    当然, 我们需要将句子中的每个词都作为目标词重复一次以上步骤, 这样我们就可以得到一堆训练数据了
    这就是所谓的Skip-Gram模型

    模型


    图片来源: http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/
    在训练模型前, 我们需要建立一个词典

    • 就是把所有训练文档中出现的词放到一个集合里面(注意集合的概念),
    • 给集合里面每个词排序,确定每个词的序号

    onehot: 一个长度为n的数组,只有一个元素是1.0,其他元素是0.0。
    例如在n为4的情况下,标签2对应的onehot标签就是 0.0 0.0 1.0 0.0

    然后把每个词的词序转为one hot形式, 假如字典有10000个词, 则one hot的长度为10000, 需要对应的位置的值设置为1.0





  • 相关阅读:
    文件操作
    匿名函数
    函数
    运算符
    (模板)扩展kmp算法(luoguP5410)
    poj2406(求字符串的周期,kmp算法next数组的应用)
    poj1961(kmp算法next数组应用)
    hdoj1711(kmp算法)
    (模板)poj3461(kmp模板题)
    fzu1704(高斯消元法解异或方程组+高精度输出)
  • 原文地址:https://www.cnblogs.com/JohnRain/p/9250296.html
Copyright © 2011-2022 走看看