Word2vec简介,入门
word2vec构建的过程: https://www.cnblogs.com/Newsteinwell/p/6034747.html
https://blog.csdn.net/zhaoxinfan/article/details/11069485
Word2vec,是用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。
Word2vec(word to vector)顾名思义,这是一个将单词转换成向量形式的工具。通过转换,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
Word2vec为计算向量词提供了一种有效的连续词袋(bag-of-words)和skip-gram架构实现。
词向量
word2vec也叫word embeddings,中文名“词向量”,作用就是将自然语言中的字词转为计算机可以理解的稠密向量。在word2vec出现之前,自然语言处理经常把字词转为离散的单独的符号,也就是One-Hot Encoder。
杭州 [0,0,0,0,0,0,0,1,0,……,0,0,0,0,0,0,0]
上海 [0,0,0,0,1,0,0,0,0,……,0,0,0,0,0,0,0]
宁波 [0,0,0,1,0,0,0,0,0,……,0,0,0,0,0,0,0]
北京 [0,0,0,0,0,0,0,0,0,……,1,0,0,0,0,0,0]
比如上面的这个例子,在语料库中,杭州、上海、宁波、北京各对应一个向量,向量中只有一个值为1,其余都为0。但是使用One-Hot Encoder有以下问题。一方面,城市编码是随机的,向量之间相互独立,看不出城市之间可能存在的关联关系。其次,向量维度的大小取决于语料库中字词的多少。如果将世界所有城市名称对应的向量合为一个矩阵的话,那这个矩阵过于稀疏,并且会造成维度灾难。
使用Vector Representations可以有效解决这个问题。Word2Vec可以将One-Hot Encoder转化为低维度的连续值,也就是稠密向量,并且其中意思相近的词将被映射到向量空间中相近的位置。
如果将embed后的城市向量通过PCA降维后可视化展示出来,那就是这个样子。
我们可以发现,华盛顿和纽约聚集在一起,北京上海聚集在一起,且北京到上海的距离与华盛顿到纽约的距离相近。也就是说模型学习到了城市的地理位置,也学习到了城市地位的关系。
模型拆解
word2vec模型其实就是简单化的神经网络。
输入是One-Hot Vector,Hidden Layer没有激活函数,也就是线性的单元。Output Layer维度跟Input Layer的维度一样,用的是Softmax回归。我们要获取的dense vector其实就是Hidden Layer的输出单元。有的地方定为Input Layer和Hidden Layer之间的权重,其实说的是一回事。
CBOW与Skip-Gram模式
word2vec主要分为CBOW(Continuous Bag of Words)又叫连续词袋和Skip-Gram两种模式。CBOW是从原始语句推测目标字词;而Skip-Gram正好相反,是从目标字词推测出原始语句。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。
对同样一个句子:Hangzhou is a nice city。我们要构造一个语境与目标词汇的映射关系,其实就是input与label的关系。
这里假设滑窗尺寸为1(滑窗尺寸……这个……不懂自己google吧-_-|||)
CBOW可以制造的映射关系为:[Hangzhou,a]—>is,[is,nice]—>a,[a,city]—>nice
Skip-Gram可以制造的映射关系为(is,Hangzhou),(is,a),(a,is), (a,nice),(nice,a),(nice,city)
训练优化
额,到这里,你可能会注意到,这个训练过程的参数规模非常巨大。假设语料库中有30000个不同的单词,hidden layer取128,word2vec两个权值矩阵维度都是[30000,128],在使用SGD对庞大的神经网络进行学习时,将是十分缓慢的。而且,你需要大量的训练数据来调整许多权重,避免过度拟合。数以百万计的重量数十亿倍的训练样本意味着训练这个模型将是一个野兽。
一般来说,有Hierarchical Softmax、Negative Sampling等方式来解决。
Word2vec简介,入门相关推荐
- 文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简
文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为 ...
- 【NLP】5计数词向量底层代码编写和gensim word2vec库入门——斯坦福大学CS224n第一次课作业代码复现
gensim word2vec库入门 背景:词向量 第一部分:基于计数的词向量 共现矩阵 绘制共现词嵌入图 问题1.1:实现distinct_words 问题1.2:实现compute_co_occu ...
- Word2Vec 简介
Word2Vec 简介 Word2vec是一个用于处理文本的双层神经网络.它的输入是文本语料,输出则是一组向量:该语料中词语的特征向量.虽然Word2vec并不是深度神经网络,但它可以将文本转换为深度 ...
- 【MyBatis-Plus】简介 入门案例
?? 博客主页: ?? 00年出生,即将进入职场闯荡,目标赚钱,可能会有人觉得我格局小.觉得俗,但不得不承认这个世界已经不再是以一条线来分割的平面,而是围绕财富旋转的球面,成为有钱人不是为了去掌控球体 ...
- 轻量级Kubernetes-K3S简介入门
1. K3S简介 k3s即轻量级Kubernetes发行版.易于安装,内存减半,所有二进制文件不到40mb.k3s是完全兼容的Kubernetes发行版,有以下更改: 移除过时的功能.Alpha功能. ...
- SpringBoot HATEOAS用法简介(入门)
REST风格简介 介绍HATEOAS之前先简单介绍一下REST,REST 是 Representational state transfer 的缩写,翻译过来的意思是表达性状态转换.REST是一种架构 ...
- 深度学习简介--入门介绍PPT
背景介绍 以下深度学习PPT内容为在 测试组 分享的内容. PPT为自己制作,图片来源于网络(其他博客或文章中),部分蓝色的内容为使用MATLAB的深度学习的电子书内容 MATLAB 深度学习简介电子 ...
- word2vec简介、原理、缺陷及应用。
一.什么是word2vec? word2vec及word to vector,翻译过来就是从单词到向量,它是将自然语言中的单词转化为向量的一种方法.为什么要把单词转化为向量呢?这是由 ...
- 1.vue 2 简介(入门)。
概览 1.Vue定义:一套用于构建用户界面的渐进式 JavaScript 框架(入门). 2.Vue 特点:组件化.不直接操作 DOM (入门). 3.vue创建项目(npm安装→初始化项目)(入门) ...
最新文章
- linux下将多个文件去除文件头合并_shell命令实现当前目录下多个文件合并为一个文件的方法...
- 分享Kali Linux 2017年第18周镜像文件
- INSTALL PARSE FAILED INCONSISTENT CERTIFICATES错误解决方法
- C语言课程设计选哪个,C语言课程设计选题及要求.docx
- python3.8安装插件locust报错error: Microsoft Visual C++ 14.0 is required. Get it with Microsoft Visual C++
- fetch 与引用规格(refspec)—— Git 学习笔记 23
- [渝粤教育] 广东-国家-开放大学 21秋期末考试财政学10573k1
- Postman Request Payload发送请求
- decimal类型对象里面定义什么类型_数据库数据类型decimal理解
- FISCO BCOS性能优化——工具篇
- Hadoop3.1.3搭建集群
- HTML期末大作业: 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做...
- PPT模板的动画去掉或更改
- 计算机运行内存设置方法,电脑运行内存怎么扩大
- 毕业设计 基于stm32的火灾报警系统设计与实现 - 单片机 物联网
- c++ 多线程 “锁”
- IDG刘雨坤:关于SaaS业务七点经验
- xwiki开发者指南-编写一个XWiki组件
- 第一类曲面积分转化为二重积分
- 深度学习(8)——权重衰退