[未完] 深度学习 之 词向量(Word Embedding)篇 :word2vec

欢迎参观 一> 个人小站

一. 词向量表示形式

在使用神经网络模型进行文本分类或者机器翻译时,前提工作是要对整理好的文本数据进行词向量化 (Word Embedding) ,既使用向量形式代表词。

1.1 One-hot representation

表示形式:向量维度的大小为数据中词汇表的大小,每个单词对应的位置置为1。例如 { I love china }love 的词向量为 [ 0, 1, 0 ] 。该表达形式最为简单,缺点是当词汇表特别大时,所占存储空间也特别大。

1.2 Dristributed representation

表示形式:以稠密的低维向量表示每个词。


二. 语言模型 ( Language Model )

如何判断一个句子是否流畅?例如 我在学习 而不是 我玩学习 ,语言模型可以解决这个问题。

2.1 统计语言模型

2.1.1 背景

给定一段文本序列,符号表达形式为:

s=w1 w2 w3 ... wm s = w 1   w 2   w 3   . . .   w m

wi w i 通常是已经分好词的“词语”,称为统计基元。那么这段文本的概率为:

P(S)=p(w1) p(w1|w2) p(w3|w1w2)...p(wm|w1...wm1)=i=1m p(wi|w1w2...wi1) P ( S ) = p ( w 1 )   p ( w 1 | w 2 )   p ( w 3 | w 1 w 2 ) . . . p ( w m | w 1 . . . w m − 1 ) = ∏ i = 1 m   p ( w i | w 1 w 2 . . . w i − 1 )

为方便计算,每个词只考虑与它前 n 个词有关,这便是语言模型中经典的 n 元文法 (N-gram) 模型,一般 n3 n ⩽ 3 。求文本的概率公式变为:

P(S)=i=1m p(wi|wi1in+1) P ( S ) = ∏ i = 1 m   p ( w i | w i − n + 1 i − 1 )

为了保证 i=1 i = 1 时有意义,同时保证句子内所有词语的概率和为 1 1 ,即 s p(s)=1 ,在文本首尾两端增加两个标志: <BOS> w1 w2 ...... wm <EOS> < B O S >   w 1   w 2   . . . . . .   w m   < E O S > <script type="math/tex" id="MathJax-Element-9"> \ w_{1}\ w_{2}\ ......\ w_{m}\ </script> ,那么 w0 w 0 <BOS> < B O S > <script type="math/tex" id="MathJax-Element-11"> </script> , wm+1 w m + 1 <EOS> < E O S > <script type="math/tex" id="MathJax-Element-13"> </script> 。

例如文本 <BOS> A dog was running in a room < B O S >   A   d o g   w a s   r u n n i n g   i n   a   r o o m ,其基于 2 2 元文法的文本概率为:

p(A dog was running in a room)=p(A|<BOS>) × p(dog|A) × p(was|dog) × p(running|was) × p(in|running) × p(a|in) × p(room|a) × p(room|<EOS>)

2.1.2 应用

统计语言模型可用作汉语分词,比如给定字符串 text :他是研究生物的。而可能的分词结果有两种:

Seg1: 他 | 是 | 研究生 | 物 | 的
Seg2: 他 | 是 | 研究 | 生物 | 的

根据贝叶斯公式,

Segˆ=argmax p(seg|text)=argmax p(text|seg)×p(seg)p(text)=argmax p(text|seg)×p(seg)=p(seg) S e g ^ = a r g m a x   p ( s e g | t e x t ) = a r g m a x   p ( t e x t | s e g ) × p ( s e g ) p ( t e x t ) = a r g m a x   p ( t e x t | s e g ) × p ( s e g ) = p ( s e g )

如果采用 2 2 元文法:

p(Seg1)=p(|<BOS>)×p(|)×p(|)×p(|)×p(|)×p(|<EOS>)
p(Seg2)=p(|<BOS>)×p(|)×p(|)×p(|)×p(|)×p(|<EOS>) p ( S e g 2 ) = p ( 他 | < B O S > ) × p ( 是 | 他 ) × p ( 研 究 | 是 ) × p ( 生 物 | 研 究 ) × p ( 的 | 生 物 ) × p ( 的 | < E O S > )

即分词结果为两个句子概率大者。那么,如何得到 n n 元文法模型?请参考文献 [2]

2.1.3 缺陷

n 元文法 (N-gram) 模型有两个明显的缺陷:其一,在计算概率时只考虑到前 n-1 个词;其二,没有考虑到词语之间的相似性。例如,由 The cat is walking in the bedroom. 可以推测出 A dog was running in a room. 句子的概率。因为这两句话在语义和语法结构上相似。

2.2 神经网络语言模型

为了解决统计语言模型的缺陷,Yoshua Bengio 等人提出了神经网络语言模型,请参考文献 [1] 。该语言模型:

1) 词表中的每个词都对应一个m 维的特征向量,维数一般设为 300 ,是远远小于词表大小的。当两个向量的相差不是很大时,则这两个向量代表的词相似。
2) 根据一段词序列中的每个特征向量可以得到这段序列的联合概率,即 P(S) P ( S )
3) 在该模型中,神经网络的参数和词向量是同时进行训练的。

神经网络语言模型结构如下,训练一个简单神经网络函数 f (i, wt1,,wtn) f   ( i ,   w t − 1 , · · · , w t − n ) 来拟合词 wt w t 是词 i i 的概率p(wt=i | w1w2...wi1)

nmlm

word2vec 则是一个可以通过对数据进行训练,将词表达成向量形式的工具 。其包括


参考文献

[1] A Neural Probabilistic Language Model

[2] 自然语言处理

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值