文章目录

  • 参考文章
  • 一、 DeepNLP的核心
  • 二、 NLP中的文本表示(Representation)
    • 1. One Hot Representation
    • 2. 整数编码
    • 3. Distributed Reprensentation
      • 背景
      • 如何将语义融入到词表示中?
      • 如何利用上下文
  • 三、 NLP语言模型
  • 四、词的分布式表示
    • 1. 基于矩阵的分布表示
    • 2. 基于聚类的分布表示
    • 3. 基于神经网络的分布表示
  • 五、 词嵌入(Word Embedding)
    • 1. 概念
    • 2. 理解
    • 3. 实现方式
  • 六、 神经网络语言模型与word2vec
    • 1. 神经网络语言模型
    • 2. word2vec 与 CBOW、Skip-gram
      • ① CBOW
        • 简介
      • ② Skip-gram
        • 简介
  • 七、总结
  • 七、扩展知识

参考文章

  • 秒懂词向量Word2vec的本质
  • 通俗理解word2vec
  • 莫烦PYTHON GITHUB
  • word2vec和word embedding有什么区别?
  • YJango的Word Embedding–介绍 - YJango的文章
  • 李宏毅机器学习视频
  • 词嵌入 | Word embedding

一、 DeepNLP的核心

核心关键:语言表示(Representation)

二、 NLP中的文本表示(Representation)

文本是一种非结构化的数据信息,是不可以直接被计算的。

文本表示的作用就是将这些非结构化的信息转化为结构化的信息,这样就可以针对文本信息做计算,来完成我们日常所能见到的文本分类,情感判断等任务。

主要介绍以下三种

  • 独热编码 | one-hot representation
  • 整数编码
  • 分布式编码|Distributed Reprensentation

1. One Hot Representation

示例

~~~~假设有1000个词汇量,排在第一个位置的代表英语中的冠词aaa,aaa就用[1,0,0,....][1,0,0,....][1,0,0,....]表示,只有第一个位置为111,其余都是000,如下图所示

在one hot representation编码的每个单词都是一个维度,彼此相互独立

优点

  1. 解决了分类器难以处理离散数据的问题
  2. 一定程度上起到了扩充特征的作用

缺点

  1. 它是一个词袋模型,不考虑词语词之间的顺序(文本中词的顺序信息也是很重要i的)
  2. 词语词之间完全独立,没有相互联系,这显然是不符合实际。
  3. 其得到的特征是离散稀疏的,得到的向量过于稀疏,导致计算和存储的效率不高

2. 整数编码

一个数字来表示一个词

  • 猫:1
  • 狗:2
  • 牛:3
  • 羊:4


将句子中的每个词拼起来就是可以表示一句话的向量。

缺点

  • 无法表达词语之间的关系
  • 对于模型解释而言,整数编码可能具有挑战性

3. Distributed Reprensentation

第四节详细阐述分布式表示

代表性的就是词嵌入(Word Embedding),具体将在后面讲解

背景

每个单词之间彼此无关是不符合现实的,实际上大量单词之间会有着相关性

  • 语义:girl 和 women虽然在年龄上不同,但都是女性
  • 复数:word和words仅仅是复数和单数的差别
  • 时态:buy和bought表达的是"买"

one hot representation的编码方式就不会考虑这些差别

我们更希望用诸如“语义”,“复数”,“时态”等维度去描述一个单词。每一个维度不再是0或1,而是连续的实数,表示不同的程度。

如何将语义融入到词表示中?

Harris在1954年提出的分布假说(distributional hypothesis):上下文相似的词,其语义也相似

Firth在1957年对分布假说进一步阐述和明确:词的语义由其上下文决定(a word is characterized by
thecompany it keeps)

示例

给machine阅读大量文本,例如下图中的两例,机器通过上下文认为“马英九”和“蔡英文”是相似类型的词


基于分布假说的词表示方法

根据建模的不同分为以下三类

  • 基于矩阵的分布表示
  • 基于聚类的分布表示
  • 基于神经网络的分布表示

上述方法的核心思想

  • 选择一种方式描述上下文
  • 选择一种模型刻画某个词(下文称"目标词")与其上下文之间的关系

如何利用上下文

1 Count based

若是两个单词wiw_iwiwjw_jwj经常一起出现,那么这两个单词就有紧密的联系

2 Predition based

三、 NLP语言模型

在详细介绍词的分布式表示之前,需要将NLP中的一个关键概念描述清楚:语言模型。

语言模型包括文法语言模型统计语言模型

一般我们指的是统计语言模型。之所以要将语言模型摆在词表示方法之前,是因为后面的表示方法马上要用到这一概念。

  • 统计语言模型:

    • 统计语言模型把语言(词的序列)看作一个随机事件,并赋予相应的概率来描述其属于某种语言集合的可能性。
    • 给定一个词汇集合 VVV,对于一个由 VVV 中的词构成的序列S=⟨w1,⋅⋅⋅,wT⟩∈VnS = ⟨w_1, · · · , w_T ⟩ \in V_nS=w1,,wTVn,统计语言模型赋予这个序列一个概率P(S)P(S)P(S),来衡量SSS符合自然语言的语法和语义规则的置信度。

用一句简单的话说,就语言模型就是计算一个句子的概率大小的这种模型。有什么意义呢?

一个句子的打分概率越高,越说明他是更合乎人说出来的自然句子。就是这么简单。

常见的统计语言模型有NNN元文法模型(N-gram Model),
最常见的是unigram model、bigram model、trigram model等等。

形式化讲,统计语言模型的作用是为一个长度为 mmm 的字符串确定一个概率分布 P(w1;w2;.....;wm)P(w_1; w_2;..... ; w_m)P(w1;w2;.....;wm),表示其存在的可能性,其中 w1w_1w1wmw_mwm 依次表示这段文本中的各个词。一般在实际求解过程中,通常采用下式计算其概率值:

P(wi∣w1,w2,...wi−1)≈P(wi∣wi−(n−1),...,wi−1)P(w_i|w_1,w_2,...w_{i-1}) \approx P(w_i|w_{i-(n-1)},...,w_{i-1})P(wiw1,w2,...wi1)P(wiwi(n1),...,wi1)
同时通过这些方法均也可以保留住一定的词序信息,这样就能把一个词的上下文信息capture住。
具体的语言模型请自行搜索。

四、词的分布式表示

1. 基于矩阵的分布表示

~~~~基于矩阵的分布表示通常又称为分布语义模型,在这种表示下,矩阵中的一行,就成为了对应词的表示,这种表示描述了该词的上下文的分布。由于分布假说认为上下文相似的词,其语义也相似,因此在这种表示下,两个词的语义相似度可以直接转化为两个向量的空间距离。

~~~~常见到的Global Vector 模型( GloVe模型)是一种对“词-词”矩阵进行分解从而得到词表示的方法,属于基于矩阵的分布表示。

2. 基于聚类的分布表示

3. 基于神经网络的分布表示

基于神经网络的分布表示一般称为词向量、词嵌入(wordembedding)或分布式表示(distributedrepresentation)\color{red}{基于神经网络的分布表示一般称为词向量、词嵌入( word embedding)或分布式表示( distributed representation})wordembeddingdistributedrepresentation),这就是此次文章的主角

神经网络词向量表示技术通过神经网络技术对上下文,以及上下文与目标词之间的关系进行建模

由于神经网络较为灵活,这类方法的最大优势在于可以表示复杂的上下文
在前面基于矩阵的分布表示方法中,最常用的上下文是词。如果使用包含词序信息的 n−gramn-gramngram 作为上下文,当 nnn 增加时,n−gramn-gramngram的总数会呈指数级增长,此时会遇到维数灾难问题。 而神经网络在表示 n−gramn-gramngram 时,可以通过一些组合方式对 nnn个词进行组合,参数个数仅以线性速度增长。有了这一优势,神经网络模型可以对更复杂的上下文进行建模,在词向量中包含更丰富的语义信息。

五、 词嵌入(Word Embedding)

1. 概念

~~~~基于神经网络的分布表示又称为词向量、词嵌入,神经网络词向量模型与其它分布表示方法一样,均基于分布假说核心依然是上下文的表示以及上下文与目标词之间的关系的建模

前面提到过,为了选择一种模型刻画某个词(下文称“目标词”)与其上下文之间的关系,我们需要在词向量中capture到一个词的上下文信息。同时,上面我们恰巧提到了统计语言模型正好具有捕捉上下文信息的能力。那么构建上下文与目标词之间的关系,最自然的一种思路就是使用语言模型。从历史上看,早期的词向量只是神经网络语言模型的副产品。

~~~~ 2001年, Bengio 等人正式提出神经网络语言模型( Neural Network Language Model ,NNLM),该模型在学习语言模型的同时,也得到了词向量。所以请注意一点:词向量可以认为是神经网络训练语言模型的副产品。

2. 理解

one−hotone-hotonehot表示法具有维度过大的缺点,那么现在将vector做一些改进:

  • 1、将vector每一个元素由整形改为浮点型,变为整个实数范围的表示;
  • 2、将原来稀疏的巨大维度压缩嵌入到一个更小维度的空间。如下图所示,这也是词向量又名词嵌入的缘由。


优势

  • 将文本通过一个低维向量来表达,不像 one-hot 那么长。
  • 语意相似的词在向量空间上也会比较相近。
  • 通用性很强,可以用在不同的任务中。

3. 实现方式

主要的实现方式

  • word2vec(Google)
  • GloVe
  • wordRank
  • FastText(Facebook)

六、 神经网络语言模型与word2vec

1. 神经网络语言模型

通过神经网络训练模型可以得到词向量,主要的神经网络语言模型如下所示

  • Neutral Network Language Model(NNLM)
  • Log-Bilinear Language Model(LBL)
  • Recurrent Neutral Netword based Language Model(RNNLM)
  • Collobert和Weston在2008年提出的C&W Model
  • Mikolov等人提出CBOW和SKip-gram Model

2. word2vec 与 CBOW、Skip-gram

上面的5个神经网络语言模型,只是逻辑概念上的东西。

具体模型我们得通过设计将其实现出来,而实现CBOW( Continuous Bagof-Words)和 Skip-gram 语言模型的工具正是 word2vec

C&W 模型的实现工具是SENNA。

所以说,分布式词向量并不是word2vec的作者发明的,他只是提出了一种更快更好的方式来训练语言模型罢了。分别是:连续词袋模型Continous Bag of Words Model(CBOW)和Skip-Gram Model,这两种都是可以训练出词向量的方法,再具体代码操作中可以只选择其一,不过据论文说CBOW要更快一些。

① CBOW

简介

通过上下文来预测中间那个词

② Skip-gram

简介

根据当前词来预测上下文

Skip-Gram Model 论文

七、总结

  • Word Embedding是词的一种表示方式,属于Distributed Representation中的一类
  • Word2Vec 是实现Word Embedding的一种方式
    • Word2Vec的两种训练模式是:CBOW和kip-gram

七、扩展知识

  • word2vec中的数学原理详解

Word2Vec 与 Word Embedding的关系相关推荐

  1. 2.文本预处理(分词,命名实体识别和词性标注,one-hot,word2vec,word embedding,文本数据分析,文本特征处理,文本数据增强)

    文章目录 1.1 认识文本预处理 文本预处理及其作用 文本预处理中包含的主要环节 文本处理的基本方法 文本张量表示方法 文本语料的数据分析 文本特征处理 数据增强方法 重要说明 1.2 文本处理的基本 ...

  2. NLP(词向量、word2vec和word embedding)

    最近在做一些文本处理相关的任务,虽然对于相关知识有所了解,而且根据相关开源代码也可以完成相应任务:但是具有有些细节,尤其是细节之间的相互关系,感觉有些模糊而似懂非懂,所以找到相关知识整理介绍,分享如下 ...

  3. word2vec和word embedding有什么区别?

    目录 〇.序 一.DeepNLP的核心关键:语言表示(Representation) 二.NLP词的表示方法类型 三.NLP语言模型 四.词的分布式表示 五.词嵌入( word embedding) ...

  4. 06_1.Pytorch中如何表示字符串、word embedding、One - hot、Embedding(Word2vec、BERT、Glove)【学习总结】

    1.6.1.如何表示字符串 1.6.1.1.word embedding 1.6.1.1.1.文本表示(Representation) 1.6.1.1.2.独热编码 | one-hot represe ...

  5. Word2Vec+ Word Embedding

    word2vec和word embedding有什么区别? 2018年06月18日 22:53:30 阿华Go 阅读数:1625 作者:Scofield 链接:https://www.zhihu.co ...

  6. Pytorch:jieba分词、hanlp分词、词性标注、命名实体识别、one-hot、Word2vec(CBOW、skipgram)、Word Embedding词嵌入、fasttext

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 文本预处理及其作用: 文本语料在输送给模型前一般需要一系列的预 ...

  7. 关于词嵌入(Word Embedding)的一些总结

    看了课程半天没搞懂词嵌入是啥,梳理一下相关知识.参考: https://www.jianshu.com/p/2fbd0dde8804 https://blog.csdn.net/m0_37565948 ...

  8. 词嵌入来龙去脉 word embedding、word2vec

    文章目录 0词嵌入来龙去脉 1 NLP的核心关键:语言表示(Representation) 2 NLP词的表示方法类型 2.1词的独热表示one-hot representation 2.2词的分布式 ...

  9. Word Embedding与Word2Vec学习

    一.词嵌入背景 Embed这个词,英文的释义为, fix (an object) firmly and deeply in a surrounding mass, 也就是"嵌入"之 ...

  10. CS224n 2019 Winter 笔记(一):Word Embedding:Word2vec and Glove

    CS224n笔记:Word2Vec:CBOW and Skip-Gram 摘要 一.语言模型(Language Model) (一)一元模型(Unary Language Model) (二)二元模型 ...

最新文章

  1. 高招攻略 领英助你清晰解读大数据专业
  2. date javascript 时区_js Date 时间戳 时区等问题总结
  3. python dicom图像分割_处理医疗影像的Python利器:PyDicom
  4. Nginx模块开发入门
  5. C++内存管理(1)
  6. python xgboost用法_XGBoost使用教程(纯xgboost方法)一
  7. tomcat监控脚本
  8. 题目1003:A+B
  9. 中汽中心软件测评中心与紫光国微达成芯片认证合作
  10. C# Get请求携带body
  11. html和css的编程规范,Bootstrap CSS编码规范
  12. Nginx之(一)Nginx是什么
  13. c语言指针的作用 举例,c语言指针详解(c语言指针用法举例)
  14. 嵌入式——嵌入式与单片机傻傻分不清
  15. visio2003中、origin中、matlab中,字体的大小以pt为单位,与word中的几号字大小是如何对应?
  16. 【Roboware编译(小锤子)无法选择Debug选项】
  17. 一名股票量化交易者该如何管理股票数据——股票代码表的维护
  18. 棋子的移动问题(递归问题)
  19. java使用正则表达式获取字符串中的所有英文单词或数字
  20. 计算机图形学——绘制钻石图案

热门文章

  1. poj 1905 Expanding Rods (数学 计算方法 二分)
  2. 一个对iBatis的总结写的不错(转载)
  3. 在vs中使用正则表达式
  4. [转] 面试必问的16个经典问题的回答思路
  5. HTML5 桌面通知:Notification API
  6. C#虚基类继承与接口的区别
  7. Gentoo解决Windows系统txt文本中文乱码问题
  8. 《神经网络和深度学习》系列文章七:实现我们的神经网络来分类数字(下)...
  9. php qr生成二维码
  10. Intent在Activity间的传值