深度学习神经网络的数据预处理word2vec 学习笔记(一)

神经网络深度学习word2vec的学习笔记

一、文本向量化概念

在自然语言处理的过程中,文本向量化是文本重要的一种表示方式,顾名思义,就是将不同的文本以向量的方式表示。这样表示原因在于不论是英文还是中文,词语都是表达文本处理的最基本单元。当然还有将文章段落或者句子作为处理单元进行处理的,例如由word2vec拓展而来的doc2vec或者str2vec,其基本思想是类似的。

二、词袋模型和One-hot模型

将一个文章或句子进行分词处理,例如,I am who I am 这一句由这个词典可以表示{ "I":1 , "am":2, "who":3},这样句子可以由3维的向量表示[2,2,1]。再比如句子 who am I,就可以用[1,1,1]表示。向量的每一维表示落入字典每一个单词的个数,就像一个一个的词袋,装进对应落入词袋的词。

词袋模型虽然容易实现,但有以下几个缺点:

1、维度灾难,若字典含有10000个不同的单词,那么就必须用一个10000维的向量来表示句子,若句子只有几个单词,那么该向量大部分元素都是零。

2、无法保留语序。

3、存在语义鸿沟问题。

One-hot模型算是词袋模型的分解,一句话里每个单词用一个词向量表示,比如who am I就表示成[0,0,1],[0,1,0],[1,0,0]。显然维数更多,和词袋模型类似的问题。

三、分布假说

前面说到,词袋模型不包含语义信息,为了解决这个问题,人们提出了分布假说(distributional hypothesis):

核心思想是:上下文相似的词语,其语义也相似。

所以构建词向量模型的时候,我们需要考虑句子的上下文,而灵活的对上下文进行建模是神经网络的优点,word2vec应运而生。

四、word2vec模型(都是神经网络模型)

1、神经网络语言模型NNLM(老旧)

三层模型,输入、隐藏、输出层。基本概念就是还是使用贝叶斯公式(最大后验概率),去求当输入为长度为n的文本序列\omega _{i-(n-1)}\omega _{i-1}时,\omega _{i}最大概率是什么。

也就是说,输出层输出的向量的维度V,V等于词表的大小,向量每个元素是词表中对应单词是\omega _{i}的概率。

输入层的操作则是将\omega _{i-(n-1)}\omega _{i-1}的每一个词向量拼接(由词袋模型生成的词向量),维度是n。

中间隐藏层的维度是我们自己来定的,我们可以将其定为h。

NNLM模型意在构建一个语言概率模型,其运行机理相当于用一个长度为n的窗口去滑动语料库训练,预测时用同样长度的窗口来预测。NNLM训练模型的中间产物,也就是隐藏层的参数,就可以作为这个单词的词向量了。(所以一开始是个中间产物)

2.C&W模型(老旧)

和NNLM不同的一点,输出层不是维度为V的概率分布,而是一个Score,打分。这个分怎么打呢,就是输入层中的某个词语\omega替换成语料库里的其它词语(大概率肯定是错误的词语),目标函数是max(0,1-score(正样本w,c)+score(负样本w,c))这样正样本的期望得分比负样本要高1分。

C&W模型的目标词在输入层,而NNLM的目标词在输出层。

这两者产生的词向量都是中间隐藏层这个副产物。

3.CBOW模型(流行)和Skip-gram模型

输入是将输入的n个词向量求平均,而不是直接拼接。去除了隐藏层,输出层就直接是词向量了。(方便)

输入的n个词肯定是包含了目标词的上下文。这样就能推断出上下文的语义了。

目标函数和NNLM类似的。

Skip-gram之后再研究

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值