引入
??自然语言是一套用来表达含义的复杂系统。这套系统中,词是表义的基本单元,词向量则是用来表示词的向量。把词映射为实数域向量的技术也叫做词嵌入 (word embedding)。近年来,词嵌入逐渐成为自然语言处理的基础知识。
1 为何不采用one-hot向量?
??简单回顾一下one-hot: ??假设词典中不同词的数量为
N
N
N,每个词可以从
0
0
0到
N
?
1
N-1
N?1的连续整数一一对应。这些与词对应的整数叫做词的索引。 ??假设一个词的索引为
i
i
i,为了得到该词的one-hot向量,我们创建了一个全
0
0
0且长度为
N
N
N的向量,并将第
i
i
i位设置位
1
1
1。这样构建的向量将可以直接给神经网络使用。 ??然而,尽管ont-hot向量构建容易,但是这可能出现以下问题:One-hot词向量无法准确表示不同词之间的相似度,如余弦相似度。对于向量
x
,
y
∈
R
d
\boldsymbol{x}, \boldsymbol{y}\in\mathbb{R}^d
x,y∈Rd,其余弦相似度计算为:
x
T
y
∥
x
∥
∥
y
∥
∈
[
?
1
,
1
]
.
\frac{\boldsymbol{x}^\text{T}\boldsymbol{y}}{\|\boldsymbol{x}\|\|\boldsymbol{y}\|}\in[-1,1].
∥x∥∥y∥xTy?∈[?1,1].显然,任意两个不同词的one-hot向量的余弦相似度将为
0
0
0。 ??Word2vec工具的提出是为了解决上述问题: ??1)将每个词表示成一个定长的向量,并使得这些向量能够较好地表达不同词之间的相似和类比关系; ??2)包含两个模型,跳字模型 (skip-gram)和连续词袋模型 (continuous bag of words, CBOW)。
2 跳字模型
??跳字模型假设基于某个词来生成它在文本系列周围的词。例如,假设文本序列是“the”、“man”、“loves”、“his”、“son”,以“love”作为中心词,设背景窗口大小为
2
2
2。如下图所示,跳字模型所关心的是给定中心词“loves”,生成其窗口范围内的背景词“the”、“man”、“his”、“son”的条件概率,即
P
(
“
the
”
,
“
man
”
,
“
his
”
,
“
son
”
∣
“
loves
”
)
.
P(“\text{the}”, “\text{man}”, “\text{his}”, “\text{son}”|“\text{loves}”).
P(“the”,“man”,“his”,“son”∣“loves”).??假定给定中心词的情况下,背景词的生成是相互独立的,那么上式可以改写为
P
(
“
?the"?|?“loves"?
)
?
P
(
?
?man"?|?"loves"?
)
?
P
(
?
?his"?|?"loves")?
?
P
(
?"son"?|?"loves")?
P\left(“\text { the" | “loves" }\right) \cdot P\left({ }^{\cdots} \text { man" | "loves" }\right) \cdot P(\cdots \text { his" | "loves") } \cdot P(\text { "son" | "loves") }
P(“?the"?|?“loves"?)?P(??man"?|?"loves"?)?P(??his"?|?"loves")??P(?"son"?|?"loves")? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
|