欢迎参观 一> 个人小站

一. 词向量表示形式

在使用神经网络模型进行文本分类或者机器翻译时,前提工作是要对整理好的文本数据进行词向量化 (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

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

P(S)=p(w1) p(w1|w2) p(w3|w1w2)...p(wm|w1...wm1)=i=1m p(wi|w1w2...wi1)

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

P(S)=i=1m p(wi|win+1i1)

为了保证 i=1 时有意义,同时保证句子内所有词语的概率和为 1 ,即 s p(s)=1 ,在文本首尾两端增加两个标志:<BOS> w1 w2 ...... wm <EOS> ,那么 w0<BOS>wm+1<EOS>

例如文本 <BOS> A dog was running in a room ,其基于 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)

如果采用 2 元文法:

p(Seg1)=p(|<BOS>)×p(|)×p(|)×p(|)×p(|)×p(|<EOS>)
p(Seg2)=p(|<BOS>)×p(|)×p(|)×p(|)×p(|)×p(|<EOS>)

即分词结果为两个句子概率大者。那么,如何得到 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)
3) 在该模型中,神经网络的参数和词向量是同时进行训练的。

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

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

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


参考文献

[1] A Neural Probabilistic Language Model

[2] 自然语言处理

相关文章: