Word2vec And Doc2vec - 文本向量化
word2vec 与 doc2vec的区别:
两者从字面意思上就可以大致判断出区别来,word2vec主要针对与单词,而doc2vec主要针对于文本:
顾名思义,Word2Vec是在单个单词上训练的,而Doc2vec是在可变长度的文本上训练的,因此,每个模型可以完成的任务是不同的。使用Word2Vec,您可以根据上下文预测单词,反之则可使用Vera,而使用Doc2vec则可以测量完整文档之间的关系。
概述:
文本向量化是自然语言处理中的基础工作,文本的表示直接影响到了整个自然语言处理的性能。
最简单的文本向量化方式是采用one-hot的词袋模型(Bag of word)进行,将单词转换成独热编码,但是维度过大所以渐渐的出现了很多新的方法:word2vec 与 doc2vec
Bag of word的缺点:
- 维度灾难
- 无法保留词序的信息
- 存在语义鸿沟(相同的单词往往在不同的句子中有不同的意思)
word2vec
Word2vec 是 Word Embedding 的方法之一,他是 2013 年由谷歌的 Mikolov 提出了一套新的词嵌入方法。
在 Word2vec 出现之前,已经有一些 Word Embedding 的方法,但是之前的方法并不成熟,也没有大规模的得到应
Word Embedding?
word embedding 是文本表示的一类方法。跟 one-hot 编码和整数编码的目的一样,不过他有更多的优点。
![](https://ripshun.com/wp-content/uploads/2020/11/1_sAJdxEsDjsPMioHyzlN3_A-1024x765.png)
- 他可以将文本通过一个低维向量来表达,不像 one-hot 那么长。
- 语意相似的词在向量空间上也会比较相近。
- 通用性很强,可以用在不同的任务中。
Word Embedding三种方法
- Frequency based Embedding:
a. Count Vectors
b. TF-IDF
c. Co-Occurrence Matrix
- Prediction based Embedding(word2vec)
a. CBOW
b. Skip-Gram
- gloVe(Global Vector)
Count Vectors: 通过向量基于每个单词的频率
Document1 = ‘He is a lazy boy. She is also lazy.’
Document2 = ‘Neeraj is a lazy person.’
![Image for post](https://miro.medium.com/max/707/1*lU-DBHCMYifsASrNBoXgZg.png)
TF-IDF:它表示单词对文档的贡献,即与文档相关的单词应经常使用。例如:有关Messi的文件应包含大量“Messi“字样。
![图片发布](https://miro.medium.com/max/825/1*5KMj7rIOTMOjE1sisMDe-A.png)
- IDF = log(N/n), (N为文本数量,n为在多少个文本出现)
- IDF(This) = log(2/2) = 0.
- IDF(Messi) = log(2/1) = 0.301.
- TF-IDF(This,Document1) = (1/8) * (0) = 0
- TF-IDF(This, Document2) = (1/5) * (0) = 0
- TF-IDF(Messi, Document1) = (4/8)*0.301 = 0.15
Co-Occurrence Matrix:具有上下文窗口的统计方法
主要使用PCA,SVD的方法起义分解,得到分解矩阵,好处在于可以更好的联系句子中单词之间的关系。
![图片发布](https://miro.medium.com/max/1083/1*PRSShSeXZ5i1u5NlpJrK9A.png)
word2vec详细
CBOW
通过上下文来预测当前值。相当于一句话中扣掉一个词,让你猜这个词是什么。cbow输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量,即先验概率。
训练的过程如下图所示,主要有输入层(input),映射层(projection)和输出层(output)三个阶段。
![](https://ripshun.com/wp-content/uploads/2020/11/771778-20180520230049653-409523789.jpg)
Skip-gram
用当前词来预测上下文。相当于给你一个词,让你猜前面和后面可能出现什么词。
![](https://ripshun.com/wp-content/uploads/2020/11/771778-20180520230206206-1078103055.jpg)
Negative Sampling(负采样)
传统的神经网络模型(NNLM):
![](https://ripshun.com/wp-content/uploads/2020/11/771778-20180520235031659-697152737.png)
在word2vec中我们预测的是当前单词与其他单词的一起出现的概率,每一个单词与多个单词形成组合形成了大量的分类,导致计算复杂,为了简化计算,采用负分类的是想,将公式转化,通过判断两个单词的组合是否正确将问题转换为二分类问题
负采样主要思想:将多分类的softmax转成二分类的sigmoid。
以“今天|天气|非常|不错|啊”举例,假设上下文只有一个词,选择目标词是“天气”,那么出现的情况有:今天|天气,非常|天气,不错|天气,啊|天气由于我们假设上下文只有一个词,那么在这些情况中只有【今天|天气,非常|天气】是正确的样本。当我们采用【今天|天气】这个样本时,我们希望输入【天气】,会输出标签【今天】,其他概率都是0。
对于原始的skip-gram模型来说,这对应是一个4分类问题,当输入【今天|天气】时,那么我们可能出现的概率是P(今天|天气)、P(非常|天气)、P(不错|天气)和P(啊|天气),我们的目标就是让P(今天|天气)这个概率最大,但是我们得同时计算其他三类的概率,并在利用反向传播进行优化的时候需要对所有词向量都进行更新。这样计算量很大,比如我们这里就要更新5*100=500个参数(假设词向量维度是100维的)。
但是如果采用负采样,当输入【今天|天气】时,我们从【非常|不错|啊】中选出1个进行优化,比如【不错|天气】,即我们只需计算P(D=1|天气,今天)和P(D=0|天气,不错),并且在更新的时候只更新【不错】、【天气】和【今天】的词向量,这样只需更新300个参数,计算量大大减少了。
参考:https://www.cnblogs.com/linhao-0204/p/9126037.html
GloVe?
正如论文的标题而言,GloVe的全称叫Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具,它可以把一个单词表达成一个由实数组成的向量,这些向量捕捉到了单词之间一些语义特性,比如相似性(similarity)、类比性(analogy)等。我们通过对向量的运算,比如欧几里得距离或者cosine相似度,可以计算出两个单词之间的语义相似性。
步骤:
- 根据语料库构建一个共现矩阵矩阵中的每一个元素Xij代表单词i和上下文单词j在特定大小的上下文窗口(context window)内共同出现的次数。
- 构建词向量和共现矩阵的关系
- 构造损失函数
- 训练(看似无监督训练,其实在训练的过程中提供了共现矩阵中的值,这些值是通过训练集的样本计算而来的。)
dec2vec?
dec2vec是wordvec的衍生,它主要用于对句子的分类上,word2vec将词语分类后,给每个句子创建一个id,通过id和词语进行进一步的训练,将句子分类,从而达到分句的效果。
汇总:
![](https://ripshun.com/wp-content/uploads/2020/11/image.png)
Word2vec And Doc2vec - 文本向量化相关推荐
- wiki中文文本语料下载,在维基百科中文语料训练Word2vec and doc2vec 文本向量化代码示例
首先下载wiki中文语料(大约1.7G) https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 ...
- 【Python自然语言处理】文本向量化的六种常见模型讲解(独热编码、词袋模型、词频-逆文档频率模型、N元模型、单词-向量模型、文档-向量模型)
觉得有帮助请点赞关注收藏~~~ 一.文本向量化 文本向量化:将文本信息表示成能够表达文本语义的向量,是用数值向量来表示文本的语义. 词嵌入(Word Embedding):一种将文本中的词转换成数字向 ...
- NLP - 文本向量化
文章目录 本质 词袋模型 原理 特点 词空间模型 NNLM 模型 RNNLM C&W 模型 C&W & NNLM CBOW 和 Skip-gram 模型 CBOW 模型 改进: ...
- [论文阅读] (24) 向量表征:从Word2vec和Doc2vec到Deepwalk和Graph2vec,再到Asm2vec和Log2vec(一)
<娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...
- 5分钟 NLP 系列: Word2Vec和Doc2Vec
来源:Deephub Imba 本文约800字,建议阅读5分钟 本文主要介绍了Word2Vec和Doc2Vec. Doc2Vec 是一种无监督算法,可从可变长度的文本片段(例如句子.段落和文档)中学习 ...
- Keras系列之文本向量化
作者:<python深度学习>学习笔记,用于自己熟悉和理解 目录 1.实现单词级的one-hot编码:稀疏,高维,硬编码 2.使用词嵌入word embeding:密集,低维,学习得到 2 ...
- word to vector 文本向量化
word to vector 文本向量化 现在趋势是高层用可解释的模型例如 线性模型或者gbdt,下层用带深度的embedding. 文本向量化的 word 2 vector 很不错也有很多自己做得模 ...
- 情感分析的新方法,使用word2vec对微博文本进行情感分析和分类
向AI转型的程序员都关注了这个号??? 大数据挖掘DT数据分析 公众号: datadw 情感分析是一种常见的自然语言处理(NLP)方法的应用,特别是在以提取文本的情感内容为目标的分类方法中.通过这种 ...
- 基于word2vec或doc2vec的情感分析
转载自:http://datartisan.com/article/detail/48.html 情感分析是一种常见的自然语言处理(NLP)方法的应用,特别是在以提取文本的情感内容为目标的分类方法中. ...
最新文章
- 提高EDA(探索性数据分析)效率的 3 个简单工具
- idea刷新项目、清除项目缓存
- poj 2392 dp 不是很懂哎!!!Space Elevator
- [WPF]使用Fody提高效率
- C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件),附源码
- 单调栈 leetcode整理(三)
- 在Win7虚拟机下搭建Hadoop2.6.0伪分布式环境
- Redis windows端连接虚拟机内Redis各种问题
- BEA Tuxedo中间件应用初探
- 【AR】DroidCam笔记本调用手机摄像头(smartphone‘s camera as pc webcam)
- Portainer中文汉化
- HDMI CEC HDCP
- 被使用次数最多的22个Python外部模块
- Java联网3D坦克大战(网络编程)
- GameOff2022参与有感
- Cocos Shader入门基础七:一文彻底读懂深度图。
- MYSQL ERROR 1130 (HY000) 的错误解决方案
- PyTorch官方中文文档上线啦!
- 内存按字节 (Byte)编址,地址从A0000H到DFFFFH,共有多少个字节呢?
- window_onload
热门文章
- MFC界面编程基础(08):菜单(一)
- 【点分治】的学习笔记和众多例题
- Connections could not be acquired from the unde...
- python爬虫可视化题目北京空气质量监测数据获取与分析
- scylladb 4.1 分布式安装部署
- 【论文排版术】学习笔记1
- android adb pull 文件夹,android – 我如何adb拉SD文件夹中的所有文件
- 解决Chrome、Safair、Webkit等内核浏览器默认文本域和文本
- java 计算日期时间差_Java计算日期和时间差
- 一文详解!对于企业来说,商业智能BI到底有什么意义