语言模型
一段自然语言文本可以看作是一个离散时间序列,给定一个长度为
T
T
T的词的序列
ω
1
,
ω
2
,
.
.
.
,
ω
T
{\omega_{1},\omega_{2},...,\omega_{T}}
ω1,ω2,...,ωT,语言模型的目标就是评估该序列是否合理,即计算该序列的概率。假设序列的每个词是依次生成的,则:
P
(
ω
1
,
ω
2
,
.
.
.
,
ω
T
)
=
Π
t
=
1
T
P
(
ω
t
∣
ω
1
,
.
.
.
,
ω
t
−
1
)
=
P
(
ω
1
)
P
(
ω
2
∣
ω
1
)
.
.
.
P
(
ω
T
∣
ω
1
ω
2
.
.
.
ω
T
−
1
)
P(\omega_{1},\omega_{2},...,\omega_{T})=\Pi_{t=1}^{T}P(\omega_{t} | \omega_{1},...,\omega_{t-1})=P(\omega_{1})P(\omega_{2} | \omega_{1})...P(\omega_{T} | \omega_{1}\omega_{2}...\omega_{T-1})
P(ω1,ω2,...,ωT)=Πt=1TP(ωt∣ω1,...,ωt−1)=P(ω1)P(ω2∣ω1)...P(ωT∣ω1ω2...ωT−1)
语言模型的参数就是词的概率以及给定前几个词情况下的条件概率。设训练数据集为一个大型文本语料库,如维基百科的所有条目,词的概率可以通过该词在训练数据集中的相对词频来计算,例如,
ω
1
\omega_{1}
ω1的概率可以计算为:
P
^
(
ω
1
)
=
n
(
ω
1
)
n
\hat{P}(\omega_{1}) = \frac{n(\omega_{1})}{n}
P^(ω1)=nn(ω1)
其中
n
(
ω
1
)
n(\omega_{1})
n(ω1)为语料库中以\omega_{1}作为第一个词的文本的数量,
n
n
n为语料库中文本的总数量。
P
^
(
ω
2
∣
ω
1
)
=
n
(
ω
1
,
ω
2
)
n
(
ω
1
)
\hat{P}(\omega_{2} | \omega_{1}) = \frac{n(\omega_{1},\omega_{2})}{n(\omega_{1})}
P^(ω2∣ω1)=n(ω1)n(ω1,ω2)
其中
n
(
ω
1
,
ω
2
)
n(\omega_{1},\omega_{2})
n(ω1,ω2)为语料库中以
ω
1
\omega_{1}
ω1作为第一个词,
ω
2
\omega_{2}
ω2作为第二个词的文本的数量。
时序数据的采样
时序数据的采样有两种:随机采样和相邻采样。
(1)随机采样
每次迭代中随机采样一个小批量作为训练数据。在随机采样中,每个样本是原始序列上任意截取的一段序列,相邻的两个随机小批量在原始序列上的位置不一定相毗邻。
(2)相邻采样
在相邻采样中,相邻的两个随机小批量在原始序列上的位置相毗邻。