• 目录

    • 前言:
    • 1、Word2Vec两种模型的大致印象
    • 2、CBOW模型流程举例
    • 3、CBOW模型流程举例
    • 总结:

目录

前言:

针对word2vec是如何得到词向量的?这篇文章肯定能解决你的疑惑。该篇文章主要参考知乎某大神的回答,个人在此基础上做了一个总结。

word2vec是如何得到词向量的?这个问题比较大。从头开始讲的话,首先有了文本语料库,你需要对语料库进行预处理,这个处理流程与你的语料库种类以及个人目的有关,比如,如果是英文语料库你可能需要大小写转换检查拼写错误等操作,如果是中文日语语料库你需要增加分词处理。这个过程其他的答案已经梳理过了不再赘述。得到你想要的processed corpus之后,将他们的one-hot向量作为word2vec的输入,通过word2vec训练低维词向量(word embedding)就ok了。不得不说word2vec是个很棒的工具,目前有两种训练模型(CBOW和Skip-gram),两种加速算法(Negative Sample与Hierarchical Softmax)。本文旨在阐述word2vec如何将corpus的one-hot向量(模型的输入)转换成低维词向量(模型的中间产物,更具体来说是输入权重矩阵),真真切切感受到向量的变化,不涉及加速算法。

1、Word2Vec两种模型的大致印象

刚才也提到了,Word2Vec包含了两种词训练模型:CBOW模型和Skip-gram模型。
CBOW模型根据中心词W(t)周围的词来预测中心词。
Skip-gram模型则根据中心词W(t)来预测周围词。

2、CBOW模型流程举例

其实数学基础及英文好的同学可以参照斯坦福大学Deep Learning for NLP课堂笔记。
当然,懒省事儿的童鞋们就跟随我的脚步慢慢来吧。
先来看着这个结构图,用自然语言描述一下CBOW模型的流程:

NOTE:花括号内{}为解释内容.

  1. 输入层:上下文单词的onehot. {假设单词向量空间dim为V,上下文单词个数为C}
  2. 所有onehot分别乘以共享的输入权重矩阵W. {V*N矩阵,N为自己设定的数,初始化权重矩阵W}
  3. 所得的向量 {因为是onehot所以为向量} 相加求平均作为隐层向量, size为1*N.
  4. 乘以输出权重矩阵W’ {N*V}
  5. 得到向量 {1*V} ,激活函数处理得到V-dim概率分布 {PS:因为是onehot嘛,其中的每一维都代表着一个单词},概率最大的index所指示的单词为预测出的中间词(target word)
  6. 与true label的onehot做比较,误差越小越好

所以,需要定义loss function(一般为交叉熵代价函数),采用梯度下降算法更新W和W’。训练完毕后,输入层的每个单词与矩阵W相乘得到的向量的就是我们想要的词向量(word embedding),这个矩阵(所有单词的word embedding)也叫做look up table(其实聪明的你已经看出来了,其实这个look up table就是矩阵W自身),也就是说,任何一个单词的onehot乘以这个矩阵都将得到自己的词向量。有了look up table就可以免去训练过程直接查表得到单词的词向量了。
这回就能解释题主的疑问了!如果还是觉得我木有说明白,别着急!跟我来随着栗子走一趟CBOW模型的流程!

3、CBOW模型流程举例

假设我们现在的Corpus是这一个简单的只有四个单词的document:
{I drink coffee everyday}
我们选coffee作为中心词,window size设为2
也就是说,我们要根据单词”I”,”drink”和”everyday”来预测一个单词,并且我们希望这个单词是coffee。

第一步:先确定输入和输出单词的one-hot向量

第二步:初始化一个权重矩阵W(自定义),然后分别利用输入的单词的onehot向量X和W相乘得到向量V(代表一个单词)

第三步:将得到的三个单词的V向量相加作为隐藏层的矩阵(隐藏层也就代表周围词的一个集合(即符合由周围的词来预测中心的词))

第四步:将隐藏层向量乘以W’

第五步:激活函数处理得到V-dim概率分布 {PS: 因为是onehot嘛,其中的每一维都代表着一个单词},概率最大的index所指示的单词为预测出的中间词(target word)。与true label的onehot做比较,误差越小越好

总结:

目前博主也是刚开始接触NLP相关的知识,许多东西还处于小白阶段,以上的总结如有不足或错误希望大家指导批评。

word2vec中单词向词向量的转换过程详解相关推荐

  1. 嵌入层(Embedding Layer)与词向量(Word Embedding)详解

    文章目录 常见的语言表示模型 词向量与Embedding区分 Embedding层--keras中的one-hot映射为 向量的层:词向量(word embedding)--一种语言模型表示方法 分布 ...

  2. 【Word2Vec】word2vec是如何得到词向量的?

    前言 word2vec是如何得到词向量的?这个问题比较大.从头开始讲的话,首先有了文本语料库,你需要对语料库进行预处理,这个处理流程与你的语料库种类以及个人目的有关,比如,如果是英文语料库你可能需要大 ...

  3. 【word2vec】Distributed Representation——词向量

    Distributed Representation 这种表示,它最早是 Hinton 于 1986 年提出的,可以克服 one-hot representation 的缺点. 其基本想法是: 通过训 ...

  4. Python中Print()函数的用法___实例详解(二)(全,例多)

    Python中Print()函数的用法___实例详解(二)(全,例多) 目录 十一.Print()小例子 十二.Print()中文输入显示乱码问题 十三.Print()写入文件 十四.print()在 ...

  5. SVM-支持向量机原理详解与实践之一

    SVM-支持向量机原理详解与实践 前言 去年由于工作项目的需要实际运用到了SVM和ANN算法,也就是支持向量机和人工神经网络算法,主要是实现项目中的实时采集图片(工业高速摄像头采集)的图像识别的这一部 ...

  6. SVM-支持向量机原理详解与实践之四

    SVM-支持向量机原理详解与实践之三 SVM原理分析 核函数与核技巧 什么是核 什么是核,核其实就是一种特殊的函数,更确切的说是核技巧(Kernel trick),清楚的明白这一点很重要. 为什么说是 ...

  7. SVM-支持向量机原理详解与实践之三

    SVM-支持向量机原理详解与实践之二 SVM原理分析 以下内容接上篇. 拉格朗日对偶性(Largrange duality)深入分析 前面提到了支持向量机的凸优化问题中拉格朗日对偶性的重要性. 因为通 ...

  8. PX4飞控中利用EKF估计姿态角代码详解

    PX4飞控中利用EKF估计姿态角代码详解 PX4飞控中主要用EKF算法来估计飞行器三轴姿态角,具体c文件在px4\Firmware\src\modules\attitude_estimator_ekf ...

  9. Python计算向量夹角:向量夹角计算方法详解

    Python计算向量夹角:向量夹角计算方法详解 在数值分析和几何学中,我们经常需要计算两个向量之间的夹角.在Python中,我们可以使用numpy库中的函数来计算向量之间的夹角. 首先,我们需要将向量 ...

最新文章

  1. 交换机工作原理、MAC地址表、路由器工作原理详解
  2. Android互联网访问,get方式,post方式等方式
  3. c语言从.txt读入第二行数,从txt中读入数据到数组中(fscanf)的实现代码
  4. ASP.NET Core 2.1基于SignalR和Vue实时通讯
  5. 走心地讨论一下,一个中国码农在硅谷求职的实用经历
  6. Oracle中常用的to_Char用法详解(有FMT的详细列表)
  7. 数据库实战:SQL Server系列网络课程资料集
  8. 集体智慧编程 - 读书笔记
  9. 速达启动时显示“对象名ACCSET无效“
  10. imagemagick /tmp/magick-xxxxxxxx
  11. 您的计算机无法正常启动,3种简单的方法 修复错误 ‘您的电脑无法正常启动’...
  12. NCTF-Writeup
  13. SpringBoot整合jsp
  14. JAVA调用IBM的Lotus Notes
  15. js 将图片置灰_将图片转换成黑白(灰色)的css和js的方法
  16. 数字通信调制方式的误码率matlab仿真,包括OOK,PRK,FSK以及QAM
  17. phpstudy安装和使用
  18. 一、Python语言概述
  19. C语言关于输入某天日期求是本年第几天(计算天数)
  20. 离线安装金蝶Apusic中间件

热门文章

  1. 测试报告参考规范之测试结果和分析
  2. oracle19C安装好后 创建新用户 和 赋权限
  3. 实用英文地址书写格式
  4. 【ML吴恩达】5 简单回归中的均方误差MSE
  5. 使用matlab读取图像并通过matlab自带的fft2,fftshift,ifftshift,ifft2等函数获取该图像的傅里叶频谱图,幅度图,相位谱图,幅度图,相位谱图,幅度谱重建图以及相位谱重建
  6. 用最复杂的方式学会数组(Python实现动态数组)
  7. 基于 Canvas 的 HTML5 工控机柜 U 位动态管理
  8. 苹果应用商店增加新功能 可帮助分发“不适合公开发布应用”
  9. 南方数码iData数据工厂二次开发图层选择
  10. #洛谷 通往奥格瑞玛的道路