一. 词向量表示形式
在使用神经网络模型进行文本分类或者机器翻译时,前提工作是要对整理好的文本数据进行词向量化 (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 背景
给定一段文本序列,符号表达形式为:
wi w i 通常是已经分好词的“词语”,称为统计基元。那么这段文本的概率为:
为方便计算,每个词只考虑与它前 n 个词有关,这便是语言模型中经典的 n 元文法 (N-gram) 模型,一般 n⩽3 n ⩽ 3 。求文本的概率公式变为:
为了保证 i=1 i = 1 时有意义,同时保证句子内所有词语的概率和为 1 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 元文法的文本概率为:
2.1.2 应用
统计语言模型可用作汉语分词,比如给定字符串 text :他是研究生物的。而可能的分词结果有两种:
Seg1: 他 | 是 | 研究生 | 物 | 的
Seg2: 他 | 是 | 研究 | 生物 | 的
根据贝叶斯公式,
如果采用 2 2 元文法:
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 维的特征向量,维数一般设为 ,是远远小于词表大小的。当两个向量的相差不是很大时,则这两个向量代表的词相似。
2) 根据一段词序列中的每个特征向量可以得到这段序列的联合概率,即
P(S)
P
(
S
)
。
3) 在该模型中,神经网络的参数和词向量是同时进行训练的。
神经网络语言模型结构如下,训练一个简单神经网络函数 f (i, wt−1,⋅⋅⋅,wt−n) f ( i , w t − 1 , · · · , w t − n ) 来拟合词 wt w t 是词 i i 的概率 。
而 word2vec 则是一个可以通过对数据进行训练,将词表达成向量形式的工具 。其包括
参考文献
[1] A Neural Probabilistic Language Model
[2] 自然语言处理