文本挖掘深度学习之word2vec的R语言实现_光环大数据培训机构

来源:互联网 由 光环IT学院 贡献 责任编辑:李志  
http://hadoop.aura-el.com

文本挖掘深度学习之word2vec的R语言实现_光环大数据培训机构

一、word2vec词向量由来

在word2vec产生前,还有一些语言模型,在自然语言处理 NLP模型中,到达word2vec历经了一些步骤。但是对于NLP模型中,起到确定性作用的是词向量(Distributed Representation/word Embedding)的提出,在这之前有一些基础性的模型如统计语言模型、神经网络概率语言模型。

几个基于统计的传统语言模型与word2vec这种直接预测的方法的比较(图片摘自Stanford CS244)【5】:

1、统计语言模型

统计语言模型的一般形式直观、准确,n元模型中假设在不改变词语在上下文中的顺序前提下,距离相近的词语关系越近,距离较远的关联度越远,当距离足够远时,词语之间则没有关联度。

但该模型没有完全利用语料的信息:

1) 没有考虑距离更远的词语与当前词的关系,即超出范围n的词被忽略了,而这两者很可能有关系的。

例如,“华盛顿是美国的首都”是当前语句,隔了大于n个词的地方又出现了“北京是中国的首都”,在n元模型中“华盛顿”和“北京”是没有关系的,然而这两个句子却隐含了语法及语义关系,即”华盛顿“和“北京”都是名词,并且分别是美国和中国的首都。

2) 忽略了词语之间的相似性,即上述模型无法考虑词语的语法关系。

http://hadoop.aura-el.com

样的句子,因为两个句子中“鱼”和“马”、“水”和“草原”、“游”和“跑”、“中”和“上”具有相同的语法特性。

而在神经网络概率语言模型中,这两种信息将充分利用到。

2、神经网络概率语言模型

神经网络概率语言模型是一种新兴的自然语言处理算法,该模型通过学习训练语料获取词向量和概率密度函数,词向量是多维实数向量,向量中包含了自然语言中的语义和语法关系,词向量之间余弦距离的大小代表了词语之间关系的远近,词向量的加减运算则是计算机在”遣词造句”。

如今在架构方面有比NNLM更简单的CBOW模型、Skip-gram模型;其次在训练方面,出现了Hierarchical Softmax算法、负采样算法(Negative Sampling),以及为了减小频繁词对结果准确性和训练速度的影响而引入的欠采样(Subsumpling)技术。

上图是基于三层神经网络的自然语言估计模型NNLM(Neural Network Language Model)。NNLM可以计算某一个上下文的下一个词为wi的概率,即(wi=i|context),词向量是其训练的副产物。NNLM根据语料库C生成对应的词汇表V。

二、word2vec——词向量特征提取模型

先解释一下词向量:将词用“词向量”的方式表示可谓是将 Deep Learning 算法引入 NLP 领域的一个核心技术。自然语言理解问题转化为机器学习问题的第一步都是通过一种方法把这些符号数学化。

http://hadoop.aura-el.com

的值代表一个具有一定的语义和语法上解释的特征。故可以将词向量的每一维称为一个词语特征。词向量用Distributed Representation表示,一种低维实数向量。

例如,NLP中最直观、最常用的词表示方法是One-hot Representation。每个词用一个很长的向量表示,向量的维度表示词表大小,绝大多数是0,只有一个维度是1,代表当前词。

“话筒”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 …] 即从0开始话筒记为3。

但这种One-hot Representation采用稀疏矩阵的方式表示词,在解决某些任务时会造成维数灾难,而使用低维的词向量就很好的解决了该问题。同时从实践上看,高维的特征如果要套用Deep Learning,其复杂度几乎是难以接受的,因此低维的词向量在这里也饱受追捧。

Distributed Representation低维实数向量,如:[0.792, ?0.177, ?0.107, 0.109, ?0.542, …]。它让相似或相关的词在距离上更加接近。

总之,Distributed Representation是一个稠密、低维的实数限量,它的每一维表示词语的一个潜在特征,该特征捕获了有用的句法和语义特征。其特点是将词语的不同句法和语义特征分布到它的每一个维度上去表示。

再来看看结合deep learning的词向量是如何获取的。谈到word2vec的词向量,就得提到两个模型——DBOW以及skip-gram模型。两个模型都是根据上下文词,来推断当前词发生的概率。可以实现两个基本目标:这句话是否是自然语句;获得词向量。两个模型的大致结构如下图所示:

1、 CBOW加层次的网络结构((Continuous Bag-Of-Words Model,连续词袋模型))

其中第一层,也就是最上面的那一层可以称为输入层。输入的是若干个词的词向量,中间在神经网络概率语言模型中从隐含层到输出层的计算时主要影响训练效率的地方,CBOW和Skip-gram模型考虑去掉隐含层。实践证明新训练的词

http://hadoop.aura-el.com

方法来完善。第三层是方框里面的那个二叉树,叫霍夫曼树,W代表一个词,Wsyn1是非叶节点是一类词堆,还要继续往下分。

这个网络结构的功能是为了完成一个的事情——判断一句话是否是自然语言。怎么判断呢?使用的是概率,就是计算一下这句话的“一列词的组合”的概率的连乘(联合概率)是多少,如果比较低,那么就可以认为不是一句自然语言,如果概率高,就是一句正常的话。

计算的公式是下面的公式:

p(s)=p(w1,w2,?wT)=∏i=1Tp(wi|Contexti)

其中的Context表示的是该词的上下文,也就是这个词的前面和后面各若干个词,这个“若干”(后面简称c)一般是随机的,也就是一般会从1到5之间的一个随机数。

举个例子就是:“大家喜欢吃好吃的苹果”这句话总共6个词,假设对“吃”这个词来说c随机抽到2,则“吃”这个词的context是“大家”、“喜欢”、“好吃”和“的”,总共四个词,这四个词的顺序可以乱,这是word2vec 的一个特点。假设就是计算“吃”这个词的在“大家”、“喜欢”、“好吃”和“的”这四个词作为上下文的条件概率,则

其中σ(x)=1/(1+e?x) ,是sigmoid公式。

这个神经网络最重要的是输出层的那个霍夫曼树的叶子节点上的那些向量,那些向量被称为词向量,词向量就是另外一篇博文里面介绍的,是个好东西。运用上面那个“吃”的例子。

http://hadoop.aura-el.com

为啥要用霍夫曼树来储存词?

答:可以知道霍夫曼树可以储存着语料库所有的词,每一个节点就是一个词(W)或者众多词在一起的向量节点(Wsyn1)。但是用这棵树来存储词的方式的确很特别,原因是因为求解词条件概率时候应用到了神经网络的能量模型:

P(吃︱Context)=p(A|C)=e?E(A,C)∑Vv=1e?E(wv,C)

其中C是这个词的上下文的词向量的和(向量的和),V表示语料库里面的的词元(词组的概念)的个数;整个语料库有W个词。

这个公式的意思就是在上下文C出现的情况下,中间这个词是A的概率,为了计算这个概率,肯定得把语料库里面所有的词的能量都算一次,然后再根据词A的能量,那个比值就是出现A的概率。

这个概率其实并不好统计,为了算一个词的的概率,得算上这种上下文的情况下所有词的能量,然后还计算指数值再加和。所以把语料库的所有词分成两类,分别称为G类和H类,每类一半,其中词A属于G类,那么下面的式子就可以成立了

p(A│C)=p(A|G,C)p(G|C) =e?E(A,C)∑W∈Ge?E(W,C)×11+e?E(H?G,C)

还是存在E能量难算,又把语料库切割下去。这个过程就像是建立分支树的过程。

以下内容为系统自动转化的文字版,可能排版等有问题,仅供您参考:

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 文本挖掘深度学习之 word2vec 的 R 语言实现_光环大数据培训机构

一、word2vec 词向量由来

在 word2vec 产生前,还有一些语言模型,在自然语言处理 NLP 模型中,到 达 word2vec 历经了一些步骤。

但是对于 NLP 模型中,起到确定性作用的是词向 量(Distributed Representation/word Embedding)的提出,在这之前有一些 基础性的模型如统计语言模型、神经网络概率语言模型。

几个基于统计的传统语言模型与 word2vec 这种直接预测的方法的比较(图 片摘自 Stanford CS244)【5】:

1、统计语言模型

统计语言模型的一般形式直观、准确,n 元模型中假设在不改变词语在上下 文中的顺序前提下,距离相近的词语关系越近,距离较远的关联度越远,当距离 足够远时,词语之间则没有关联度。

但该模型没有完全利用语料的信息: 1) 没有考虑距离更远的词语与当前词的关系, 即超出范围 n 的词被忽略了, 而这两者很可能有关系的。

例如,“华盛顿是美国的首都”是当前语句,隔了大于 n 个词的地方又出现 了“北京是中国的首都”,在 n 元模型中“华盛顿”和“北京”是没有关系的, 然而这两个句子却隐含了语法及语义关系,即”华盛顿“和“北京”都是名词, 并且分别是美国和中国的首都。

2) 忽略了词语之间的相似性,即上述模型无法考虑词语的语法关系。

光环大数据 http://hadoop.aura.cn

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 例如,语料中的“鱼在水中游”应该能够帮助我们产生“马在草原上跑”这 样的句子,因为两个句子中“鱼”和“马”、 “水”和“草原”、 “游”和“跑”、 “中”和“上”具有相同的语法特性。

而在神经网络概率语言模型中,这两种信息将充分利用到。

2、神经网络概率语言模型

神经网络概率语言模型是一种新兴的自然语言处理算法, 该模型通过学习训 练语料获取词向量和概率密度函数,词向量是多维实数向量,向量中包含了自然 语言中的语义和语法关系, 词向量之间余弦距离的大小代表了词语之间关系的远 近,词向量的加减运算则是计算机在”遣词造句”。

如今在架构方面有比 NNLM 更简单的 CBOW 模型、Skip-gram 模型;其次在训 练方面, 出现了 Hierarchical Softmax 算法、 负采样算法 (Negative Sampling) , 以及为了减小频繁词对结果准确性和训练速度的影响而引入的欠采样 (Subsumpling)技术。

上图是基于三层神经网络的自然语言估计模型 NNLM(Neural Network Language Model)。

NNLM 可以计算某一个上下文的下一个词为 wi 的概率,即 (wi=i|context),词向量是其训练的副产物。

NNLM 根据语料库 C 生成对应的词 汇表 V。

二、word2vec——词向量特征提取模型

先解释一下词向量:将词用“词向量”的方式表示可谓是将 Deep Learning 算法引入 NLP 领域的一个核心技术。

自然语言理解问题转化为机器学习问题的 第一步都是通过一种方法把这些符号数学化。

光环大数据 http://hadoop.aura.cn

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 词向量具有良好的语义特性,是表示词语特征的常用方式。

词向量的每一维 的值代表一个具有一定的语义和语法上解释的特征。

故可以将词向量的每一维称 为一个词语特征。

词向量用 Distributed Representation 表示,一种低维实数 向量。

例如,NLP 中最直观、最常用的词表示方法是 One-hot Representation。

每 个词用一个很长的向量表示,向量的维度表示词表大小,绝大多数是 0,只有一 个维度是 1,代表当前词。

“话筒”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ?] 即从 0 开始话筒 记为 3。

但这种 One-hot Representation 采用稀疏矩阵的方式表示词,在解决某些 任务时会造成维数灾难,而使用低维的词向量就很好的解决了该问题。

同时从实 践上看,高维的特征如果要套用 Deep Learning,其复杂度几乎是难以接受的, 因此低维的词向量在这里也饱受追捧。

Distributed Representation 低维实数向量,如:[0.792, ?0.177, ?0.107, 0.109, ?0.542, ?]。

它让相似或相关的词在距离上更加接近。

总之,Distributed Representation 是一个稠密、低维的实数限量,它的 每一维表示词语的一个潜在特征,该特征捕获了有用的句法和语义特征。

其特点 是将词语的不同句法和语义特征分布到它的每一个维度上去表示。

再来看看结合 deep learning 的词向量是如何获取的。

谈到 word2vec 的词 向量,就得提到两个模型——DBOW 以及 skip-gram 模型。

两个模型都是根据上 下文词,来推断当前词发生的概率。

可以实现两个基本目标:这句话是否是自然 语句;获得词向量。

两个模型的大致结构如下图所示:

1、 CBOW 加层次的网络结构((Continuous Bag-Of-Words Model,连续词 袋模型))

其中第一层,也就是最上面的那一层可以称为输入层。

输入的是若干个词的 词向量,中间在神经网络概率语言模型中从隐含层到输出层的计算时主要影响训 练效率的地方,CBOW 和 Skip-gram 模型考虑去掉隐含层。

实践证明新训练的词

光环大数据 http://hadoop.aura.cn

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 向量的精确度可能不如 NNLM 模型(具有隐含层),但可以通过增加训练语料的 方法来完善。

第三层是方框里面的那个二叉树, 叫霍夫曼树, W 代表一个词, Wsyn1 是非叶节点是一类词堆,还要继续往下分。

这个网络结构的功能是为了完成一个的事情——判断一句话是否是自然语 言。

怎么判断呢?使用的是概率,就是计算一下这句话的“一列词的组合”的概 率的 连乘(联合概率)是多少,如果比较低,那么就可以认为不是一句自然语 言,如果概率高,就是一句正常的话。

计算的公式是下面的公式:

p(s)=p(w1,w2,?wT)=∏i=1Tp(wi|Contexti)

其中的 Context 表示的是该词的上下文, 也就是这个词的前面和后面各若干 个词,这个“若干”(后面简称 c)一般是随机的,也就是一般会从 1 到 5 之间 的一个随机数。

举个例子就是:“大家 喜欢 吃 好吃 的 苹果”这句话总共 6 个词,假设 对“吃”这个词来说 c 随机抽到 2,则“吃”这个词的 context 是“大家”、 “喜 欢”、“好吃”和“的”,总共四个词,这四个词的顺序可以乱,这是 word2vec 的一个特点。

假设就是计算“吃”这个词的在“大家”、“喜欢”、“好吃”和 “的”这四个词作为上下文的条件 概率,则

其中 σ(x)=1/(1+e?x) ,是 sigmoid 公式。

这个神经网络最重要的是输出层的那个霍夫曼树的叶子节点上的那些向量, 那些向量被称为词向量,词向量就是另外一篇博文里面介绍的,是个好东西。

运 用上面那个“吃”的例子。

光环大数据 http://hadoop.aura.cn

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 笔者自问自答 (以下都是笔者自己的观点, 如有疑问千万不要找我, 哈哈?) :

为啥要用霍夫曼树来储存词?

答:可以知道霍夫曼树可以储存着语料库所有的词,每一个节点就是一个词 (W)或者众多词在一起的向量节点(Wsyn1)。

但是用这棵树来存储词的方式的 确很特别,原因是因为求解词条件概率时候应用到了神经网络的能量模型:

P(吃︱Context)=p(A|C)=e?E(A,C)∑Vv=1e?E(wv,C)

其中 C 是这个词的上下文的词向量的和(向量的和),V 表示语料库里面的 的词元(词组的概念)的个数;整个语料库有 W 个词。

这个公式的意思就是在上下文 C 出现的情况下,中间这个词是 A 的概率,为 了计算这个概率,肯定得把语料库里面所有的 词的能量都算一次,然后再根据 词 A 的能量,那个比值就是出现 A 的概率。

这个概率其实并不好统计,为了算一个词的的概率,得算上这种上下文的情 况下所有词的能量, 然后还计算指数值再加和。

所以把语料库的所有词分成两类, 分别称为 G 类和 H 类,每类一半,其中词 A 属于 G 类,那么下面的式子就可以成 立了

p(A│C)=p(A|G,C)p(G|C) =e?E(A,C)∑W∈Ge?E(W,C)×11+e?E(H?G,C)

还是存在 E 能量难算,又把语料库切割下去。

这个过程就像是建立分支树的 过程。

光环大数据 http://hadoop.aura.cn

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 有了这个霍夫曼树,怎么得出词向量?

答:假如“吃”这个字在最右边的 W,那边他要经过的步骤是:Wsyn1(1)→ Wsyn1(2.2)→W。

每分开一次节点,就有一次节点选择,这个选择就是一个 Logistic 函数, 可能 Wsyn1(1)→Wsyn1 (2.2) 左右的概率分别是[0.6,0.4], Wsyn1 (2.2)→W 的概率是[0.3,0.7],那么 W“吃”就可以表示为[0.4,0.7]。

其中提到的 logistic regression 模型,是因为

P(吃︱Context)=∏k=1Kp(dk|qk,C)=∏k=1K((σ(qk?C))1?dk?(1?σ (qk?C))dk)

这个公式是把 p(A│C)=p(A|G,C)p(G|C) 中的语料库切割无数次之后得到的 最终函数形式。

那么求解函数,就得到了以下的似然函数,最后通过数学等式得 到了如图所示的公式。

dk 表示树枝的左右向,dk=1 向左分,dk=0 向右分。

word2vec 就是这么考虑的,把在霍夫曼树向左的情况,也就是 dk=0 的情况 认为是正类,概率就可以算出来是σ(qijk?Contextij),而负向的(dk=1)就是 1-σ(qijk?Contextij)。

每个叶子节点都产生一个样本,这个样本的 label(也就是属于正类或者负 类标 志)可以用霍夫曼编码来产生,前面说过了,向左的霍夫曼编码 dk=0,所 以很自然地可以用 1-dk 表示每个样本 label。

霍夫曼编码也变成了一个词向量 之前很重要的东西。

2、Skip-gram 模型(Skip-Gram(Continuous Skip-GramModel))

光环大数据 http://hadoop.aura.cn

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com

词 Wi 与 huffman 树直接连接,没有隐藏层的。

使用方法依然与 cbow 加层次 的相似。

在判断“大家 喜欢 吃 好吃 的 苹果”这句话是否自然语言的时候, 是这么来的,同样比如计算到了“吃”这个词,同样随机抽到的 c=2,对吃这个 词需要计算的东西比较多, 总共要计算的概率 是 p(大家|吃), p(喜欢|吃), p(好 吃|吃)和 p(的|吃)总共四个。

P(吃︱Context)=p(大家|吃)×p(喜欢|吃)×p(好吃|吃)×p(的|吃) 中 p(大家│吃)=(1-σ(A?D))?σ(B?D)?σ(C?D)?(还有三个)

把一整句话的所有词的概率都计算出来后进行连乘, 得到的就是这句话是自 然语言的概率。

这个概率如果大于某个阈值,就认为是正常的话;否则就认为不 是自然语言,要排除掉【3】。

有一个比较简易的解读见【4】Skip-gram 表示“跳过某些符号”。

例如句 子 “中国足球踢得真是太烂了” 有 4 个 3 元词组,分别是“中国足球踢得”、 “足 球踢得真是”、“踢得真是太烂”、“真是太烂了”,句子的本意都是“中国足 球太烂”,可是上面 4 个 3 元组并不能反映出这个信息。

此时, 使用 Skip-gram 模型允许某些词被跳过, 因此可组成 “中国足球太烂” 这个 3 元词组。

如果允许跳过 2 个词,即 2-Skip-gram,那么上句话组成的 3 元 词组为:

由上表可知:一方面 Skip-gram 反映了句子的真实意思,在新组成的这 18 个 3 元词组中,有 8 个词组能够正确反映例句中的真实意思;另一方面,扩大了 语料,3 元词组由原来的 4 个扩展到了 18 个。

语料的扩展能够提高训练的准确度, 获得的词向量更能反映真实的文本含义。

光环大数据 http://hadoop.aura.cn

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 完成了两大目标: 考虑距离更远的词语与当前词的关系; 生成充分的语料库, 并且有正确的词意词元。

三、一些应用案例 word2vec

1、广告推荐:布置在 ANSJ 上进行新闻关键词提取,抽调 googlecode.com 包, 得到了计算每个词与最接近词之间的距离 (distance) 、 还可以执行聚类 【利 用 word2vec 对关键词进行聚类】。

2、网络语料库包的训练实践:从网络的一些有名的语料包进行训练、在 cygwin(因为 word2vec 需要 linux 环境,所有首先在 windows 下安装 linux 环 境模拟器),抽调 googlecode.com,并详细解释了函数系数。

【Windows 下使用 Word2vec 继续词向量训练】

3、兴趣挖掘的必要性。

利用 word2vec 给广告主推荐用户,只是简单分析没 有实操,但是提到了论文《互联网广告综述之点击率系统》中的一些方法。

为什么大家选择光环大数据!

大数据培训、 人工智能培训、 Python 培训、 大数据培训机构、 大数据培训班、 数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请大数据 领域具有多年经验的讲师,提高教学的整体质量与教学水准。

讲师团及时掌握时 代的技术,将时新的技能融入教学中,让学生所学知识顺应时代所需。

通过深入 浅出、通俗易懂的教学方式,指导学生较快的掌握技能知识,帮助莘莘学子实现 就业梦想。

光环大数据启动了推进人工智能人才发展的“AI 智客计划” 。

光环大数据专注国内

光环大数据 http://hadoop.aura.cn

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com

大数据和人工智能培训,将在人工智能和大数据领域深度合作。

未来三年,光环大数据 将联合国内百所大学,通过“AI 智客计划” ,共同推动人工智能产业人才生态建设,培 养和认证 5-10 万名 AI 大数据领域的人才。

参加“AI 智客计划” ,享 2000 元助学金!

【报名方式、详情咨询】 光环大数据网站报名:http://hadoop.aura-el.com 手机报名链接:http:// hadoop.aura-el.com /mobile/

光环大数据 http://hadoop.aura.cn


  • 与《文本挖掘深度学习之word2vec的R语言实现_光环大数据培训机构》相关:
  • R语言中不能进行深度学习_光环大数据培训机构
  • R语言学习路线和常用数据挖掘包_光环大数据培训机构
  • 利用R语言对游戏用户进行深度挖掘_光环大数据培训机
  • R语言学习路线图及R数据挖掘包_光环大数据培训机构
  • R语言环境下的文本挖掘tm包_光环大数据培训机构
  • R语言数据挖掘的界面化工具_光环大数据培训机构
  • 基于R语言的数据分析和挖掘方法总结_光环大数据培训
  • 关于深度学习_光环大数据培训机构
  • R语言企业级数据挖掘应用_光环大数据培训机构
  • 基于R语言的数据分析和挖掘方法总结_光环大数据培训
  • 本站网站首页首页教育资格全部考试考试首页首页考试首页职业资格考试最近更新儿童教育综合综合文库22文库2建筑专业资料考试首页范文大全公务员考试首页英语首页首页教案模拟考考试pclist学路首页日记语文古诗赏析教育教育资讯1高考资讯教育头条幼教育儿知识库教育职场育儿留学教育高考公务员考研考试教育资讯1问答教育索引资讯综合学习网站地图学习考试学习方法首页14托福知道备考心经冲刺宝典机经真题名师点睛托福课程雅思GREGMATSAT留学首页首页作文
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.xue63.com All Rights Reserved