将词性标注转为数学描述问题。此文参考 NLP --- 词性标注
词性标注转数学描述
词性标注任务描述,已知句子S的单词序列 (W)为((w_1,w_2,...,w_n)),则该句子对应的词性序列(T=(t_1,t_2,...,t_n))便为隐藏的状态序列。现在假设(W)为分词后的句子序列,(T)是(W)的某个可能的词性标注序列,(T^*)为最终的标注结果,即概率最大的词性序列,则有
[T^* = argmaxP(T|W)
]
根据贝叶斯定理
[P(B|A)=frac{P(A|B)P(B)}{P(A)}
]
则有
[T^* = argmaxP(T|W)=argmaxfrac{P(W|T)P(T)}{P(W)}
]
对于一个给定的词序列 (W),其词序列的概率(P(W))对于任意一个标注的序列都是相同的,故可以将上式的(P(W))忽略,变为下式
[T^* = argmaxP(T|W)=argmaxP(W|T)P(T)
]
我们对上式右侧计算进行说明
[P(W|T)P(T)=P((w_1,w_2,...,w_n)|(t_1,t_2,...,t_n))p((t_1,t_2,...,t_n))
]
针对 (P(W|T)=P((w_1,w_2,...,w_n)|(t_1,t_2,...,t_n))),我们利用马尔科夫假设,每个单词的词性仅与该单词相关,则
[P(W|T)=P((w_1,w_2,...,w_n)|(t_1,t_2,...,t_n))=P(w_1|t_1)P(w_2|t_2)...P(w_n|t_n)=prod_{i=1}^{n}P(w_i|t_i)
]
针对 (p((t_1,t_2,...,t_n)))利用链式法则及Bigram语言模型可以转换为下式
[p((t_1,t_2,...,t_n))=P(t_1)P(t_2|t_1)P(t_3|t_2)...P(t_n|t_{n-1})=P(t_1)prod_{i=2}^{n}P(t_i|t_{i-1})
]
整合上述两式与求 (T^*)整合
[T^* = argmaxP(T|W)=argmaxP(W|T)P(T)=prod_{i=1}^{n}P(w_i|t_i)P(t_1)prod_{i=2}^{n}P(t_i|t_{i-1})
]
其中 (P(w_i|t_i))解释为词性为(t_i)的词(w_i)的概率,(P(t_i|t_{i-1}))解释为词性(t_{i-1})到词性(t_i)转移的概率。这两个概率的统计可以基于语料采用最大似然估计来统计得到
[P(w_i|t_i)=frac{C(w_i,t_i)}{C(t_i))} \
P(t_i|t_{i-1})=frac{C(t_i,t_{i-1})}{C(t_{i-1}))}
]
其中 (C(w_i,t_i))指语料库中词(w_i)词性为(t_i)的出现次数,(C(t_i))表示词性(t_i)出现的次数;(C(t_i,t_{i-1}))则为相邻两个词性(t_{i-1},t_i)出现的次数(考虑先后顺序)。
我们知道,在概率的计算中经常会出现underflow问题,所以一般我们都会对概率计算的两端取对数处理,上式转换为
[T^* = argmaxlogP(T|W)=argmaxlogP(W|T)P(T)=argmaxlogprod_{i=1}^{n}P(w_i|t_i)P(t_1)prod_{i=2}^{n}P(t_i|t_{i-1})=argmax(sum_{i=1}^{n}logP(w_i|t_i)+logP(t_1)+sum_{i=2}^{n}logP(t_i|t_{i-1}))
]
令
[A=P(w_i|t_i)
\
pi=P(t_1)
\
B=P(t_i|t_{i-1})
]
上述的表述便于后续我们对维特比算法的描述,其中A是词性为 (t_i)的词(w_i)的概率,(pi)可以解释为开头的词性概率,B可解释为为词性(t_{i-1})到词性(t_i)转移的概率。