0x00 背景

最近在做毕设,需要使用Google的word2vec。查阅了相关资料,总结后,写下这篇。

注,本文大多取自以下内容:
cbow例子,取自知乎,已取得答主同意
word2vec数学原理详解
word2vec今生前世

0X01 简介

word2vec是Google与2013年开源推出的一个用于获取word vecter的工具包,利用神经网络为单词寻找一个连续向量看空间中的表示。

word2vec有两种网络模型,分别为:
  • Continous Bag of Words Model (CBOW)
  • Skip-Gram Model
  • 在开始之前,需要一些准备知识(统计语言模型):
  • 《word2vec的前世今生》
      http://www.cnblogs.com/iloveai/p/word2vec.html
  • 吴军博士的《数学之美》

0X02 CBOW网络模型

  • 输入层:
    假设当前词为W,Context(W)由W前后C个词构成。
    所以输入层中有2c个词向量,
  • v(Context(W)1), ······,v(Context(W)2c)

  • 投影层:
    将输入层的2c个向量累加,即
  • 输出层:
    输出层为一棵二叉树,以词库中的词作为叶子结点,并以词频为权重构造出来的Huffman树,如果词库中有D个词,则有D个叶子结点。
  • 0X03 CBOW模型流程举例

    假设 Courpus = { I drik coffee everyday } ,根据 “I”“drink”“everyday”来预测“coffee”。

    投影层将每个词向量加起来,

    这里Xw即上图Uo ,当Xw传导到输出层时,因为输出层为一棵二叉树,每一次分支都可视为进行一次二分类,将分到左边为负类,分到右边为正类。
    根据sigmoid函数,可将二分类函数写成:

    所以,一个结点被分到正类的概率是:

    被分到负类的概率是:

    这里Θ向量是待定参数。

    将每个分支的概率相乘就是所需的 P( W | Context(W) )

    对概率函数取对数,即

    并对式子求 Xw的偏导 和 Θ 的偏导。
    详细过程在《word2vec中的数学原理详解》

    http://suanfazu.com/t/word2vec-zhong-de-shu-xue-yuan-li-xiang-jie-duo-tu-wifixia-yue-du/178

    最终,通过大量的数据迭代,使用梯度下降更新W和W’,来最小化loss函数,训练结束后的W就是词向量的矩阵,任何一个单词的One-Hot表示乘以这个矩阵W就可以得到其词向量的表示。


    0X04 word2vec的使用

    我用的是python的gensim库

    from gensim.models.word2vec import Word2vec
    model = Word2Vec(data_set,size,window,negative,iter)
    model.save(file)      // 训练完后保存
    model = Word2Vec.load(file)
    model.wv['compute']  // 词向量保存在wv实例里,得到“compute”的词向量
    model.wv.similarity('woman', 'man')  // 求词与词之间的相关性

    几个重要的参数:
    sg : 为0则cbow(默认),为1则Skip-gram
    size:特征向量的维度
    window:预测词与当前词的最大距离
    negative:if > 0 ,使用负样本,通常5-20,默认5个噪声词
    iter:词库的迭代次数

    当然了,想了解更多可以上官网看看。
    附上链接
    https://radimrehurek.com/gensim/models/word2vec.html

谈谈Word2Vec的CBOW模型相关推荐

  1. Word2vec之CBOW 模型

    Word2vec之CBOW 模型 CBOW模型流程举例 假设我们现在的语料库是这一个简单的只有四个单词的文本: Step 1. 得到上下文词的one-hot向量作为输入,同时得到预期的输出one-ho ...

  2. Word2vec之CBOW

    一.Word2vec word2vec是Google与2013年开源推出的一个用于获取word vecter的工具包,利用神经网络为单词寻找一个连续向量看空间中的表示.word2vec是将单词转换为向 ...

  3. Word2vec之CBOW模型和Skip-gram模型形象解释

    Word2vec中两个重要模型是:CBOW和Skip-gram模型 首先Wordvec的目标是:将一个词表示成一个向量 这里首先说下我对CBOW模型的理解 这是主要是举个例子简化下 首先说下CBOW的 ...

  4. Word2Vec之Skip-Gram与CBOW模型

    Word2Vec之Skip-Gram与CBOW模型 word2vec是一个开源的nlp工具,它可以将所有的词向量化.至于什么是词向量,最开始是我们熟悉的one-hot编码,但是这种表示方法孤立了每个词 ...

  5. 自己动手写word2vec (四):CBOW和skip-gram模型

    系列所有帖子 自己动手写word2vec (一):主要概念和流程 自己动手写word2vec (二):统计词频 自己动手写word2vec (三):构建Huffman树 自己动手写word2vec ( ...

  6. word2vec包中cbow模型--学习笔记

    基于Hierarchical softmax的CBOW模型 网络结构:包括3层,分别为输入层,投影层和输出层 假设Context(w)是由词w的前后各c个词组成 输入层:包含Context(w)中2c ...

  7. word2vec原理(五):skip-gram和CBOW模型代码实现

    目录 代码一 代码二 第一部分代码对于skip-gram和CBOW模型是通用的,第二部分是实现skip-gram模型的代码. 代码一: import os from six.moves.urllib. ...

  8. word2vec中的CBOW模型

    模型结构 CBOW模型,中文译为"连续词袋模型",完成的任务是给定中心词  的一定邻域半径(比如半径为2,通常成为windows,窗口,这里窗口的大小为5)内的单词 ,预测输出单词 ...

  9. 理解 Word2Vec 之 Skip-Gram 模型

    20211003 NLP系列:Word2Vec原始论文:Efficient Estimation of Word Representations in Vector Space - 简书 原始论文翻译 ...

最新文章

  1. 十年磨剑 中国光伏产业强势崛起
  2. PhpStorm 中文设置教程
  3. 渲染管道(3)几何阶段一“概述”
  4. sql_mysql注入基础篇
  5. python字典嵌套实例
  6. okta-spring_通过Okta的单点登录保护Spring Boot Web App的安全
  7. hdu6107 倍增法st表
  8. stm32实验报告心得体会_STM32实验报告
  9. tab和TabHost
  10. python怎么安装xlutils_Python3安装xlutils
  11. Nginx 优秀的核心架构设计揭秘,让你搞懂高并发之道
  12. 使用wsimport构建WebService客户端
  13. chrome自动发送邮件插件
  14. linux读usb转ttl串口数据,ubuntu16.04使用USB转TTL(ch340)串口转usb调试过程
  15. 《大数据之路:阿里巴巴大数据实践》-第2篇 数据模型篇 -第10章 维度设计
  16. Python 基于jieba的三国演义词频分析与可视化
  17. Adobe Photoshop CS6 仅需要两个步骤快速去除图片中的文字
  18. 数据分析专题报告范文6篇_数据分析系列篇(6):如何写好一个专题的分析报告...
  19. 对未来人工智能的一些预测和想法
  20. Solr Server服务器端安装配置

热门文章

  1. linux go设置阿里云代理
  2. matlab神经网络训练显示秩亏,MATLAB在测量数据处理中的应用.doc
  3. 项目纪实丨MySQL Bug引发客户现场升级失败 万里DBA 6小时攻克难关
  4. vlc录制网络流_vlc如何播放网络流
  5. lisp正负调换_坐标提取lisp程序 -
  6. 既生 HTTP 何生 WebSocket ?
  7. HTML代码转成字符串数组
  8. 爬虫实战|从笔趣阁爬取书籍并简单保存
  9. Python 10-日期时间
  10. 如何用PHP调用学小易题库,如何使用 PHP 输出 hello world?()