【NLP】特征工程_word2Vec_01_基础

在这里插入图片描述

前言

word2vec是一种文本特征工程基本挖掘方法,相关模型值得学习借鉴。
词向量模型word2vec,顾名思义可以将 自然语言词文本(语料) 量化为数学所使用的向量,故其常作为文本相关模型(如文本相似性;NLP…)研究的基本工作。
场景: 谷歌2013提出word2vec是目前最常用的词嵌入模型之一,word2vec实际是一种浅层的神经网络模型,常见的有两种网络结构,CBOW和Skip-gram模型
推荐: https://www.jianshu.com/p/1405932293ea
Efficient Estimation of Word Representations in Vector(中文参考:https://www.cnblogs.com/shuzirank/p/6519888.html)

知识点: word2vec,CBOW, Skip-gram


向量化算法 word2vec基础

word2vec可以将所有的词进行向量化,词与词之间可以通过一些模型去挖掘他们之间的关系,使之产生联系。

词袋(bag of word)模型:

是最早的以词语为基本处理单元的文本向量化方法,它是将词库里的每个词都作为一个维度,下面举例说明该方法的原理.

1). 给出两个文本

  • 小黄喜欢小绿
  • 小绿喜欢小青

2). 基于上述文本构建词库(词典/全局索引)
{小:1, 黄:2, 喜:3, 欢:4, 绿:5, 青:6}

3). 上述词库包含6个词,每个词汇有唯一的索引, 那么1中的文本则可以使用6维的向量来表示
[4, 1, 2, 2, 4, 2]
[4, 2, 2, 2, 4, 1]

该向量与原来文本中的词汇出现的顺序没有关系, 而是词典中每个单词在文本中出现的频率, 该方法虽然简单易行,但还存在以下缺陷:

  • 维度灾难
  • 存在语义鸿沟问题, 因为向量并不包含词汇语义关系,只是基于数量统计
  • 无法保留词序信息
  • 耦合性太高,当有新的词加入词库后,整个向量都得更新

word2vec基础

一般来说词语是表达语义的基本单元,因为词袋模型只是将词语符号化,所以词袋模型是不包含任何语义信息的, 那么如何是 “词表示” 包含语义信息呢?

distributional hypothesis(分布假说)提出了解决上述问题的理论基础,该假说核心思想:上下文相似的词,其语义也相似

神经网络语言模型
  1. NNLM(前馈神经网络语言模型)
    目标:构建一个语言概率模型

具体可参考: http://blog.sina.com.cn/s/blog_66a6172c0102v1zb.html

  1. C&W模型
    目标: 以生成词向量为目标的模型
CBOW模型和Skip-gram模型

在这里插入图片描述

为了更高效地获取词向量,有研究者在NNLM和C&W模型的基础上保留其核心部分,得到了CBOW(Continuous Bag of -Words)模型和Skip-gram模型

https://arxiv.org/pdf/1301.3781.pdf 原论文解释如下(更多请访问原论文):

  1. CBOW模型(连续池袋模型)
    该模型类似于前馈NNLM,去掉了其中的非线性隐层,所有词共享映射层,而非共享映射矩阵。所有的词映射到同样的位置,对这些向量进行平均。因为历史词序并不能影响映射结果,所以我们将这个模型结构称为Bag-of-Words模型。况且,我们也使用了未来的词。我们使用4个未来词和4个历史词作为输入在下节提到的任务中取得了最优的性能,其中,优化目标是能准确分类中间的词。训练复杂度为:。我们将这个模型记为CBOW。与传统的Bag-of-Words模型不同,它使用连续分布式的context表示。模型结构如上图所示。值得注意的是,输入层与映射层之间的权重矩阵,与NNLM一样,是所有词位置共享的。

  2. Skip-gram模型
    第二个模型结构与CBOW类似,不同与CBOW根据context来预测当前word,本模型尝试优化根据另外一个词来预测同一个句子中这个词的类别。更准确来讲,我们使用当前词作为输入,经过连续映射层,到log-linear分类器,来预测指定窗口内,位于该词前后的词。我们发现,增加窗口的大小可以改善学习到的词向量的质量,但是也增加了计算复杂度。既然离得最远的词通常与当前词的关系要远远小于离得近的,所以我们给那些离得较远的词较小的权重,使得它们采样到的概率要小。该模型结构的训练复杂度正比于:,其中C为词的最大距离。若我们选择C=5,那么对于每个训练词,我们从1~C随机选择一个数R,使用R个历史词与R个未来词作为正确的标注(R words from history and R words from the future of the current word as correct labels)。这就需要我们进行2R次词分类:将当前词作为输入,2R个词中的每个词作为输出。

skip gram 详细可参考https://www.jianshu.com/p/1405932293ea文章比较通俗易懂

3.区别
Skip-gram和CBOW实际上是word2vec两种不同思想的实现:
CBOW的目标时根据上下文来预测当前词语的概率,且上下文所有的词对当前词痴线概率的影响的权值是一样的,因此叫continuous bag-of-words模型。如袋子中取词,取出数量足够的词就可以了,取出的先后顺序则是无关紧要的。
Skip-gram刚好相反,其实根据当前词语来预测上下文概率的。
在实际使用中,算法本身无高分之分,可根据最后效果来进行算法选择。

eg:
Pushkin is a goog man
CBOW(适用小型场景): 
	[Pushkin, a] -> is
	[is, good] -> a
	...
Skip-Gram(适用大型场景):
	[is, Pushkin], [is, a], [a, is], [a, good] ....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pushkin.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值