• 词性标注的数学描述


    将词性标注转为数学描述问题。此文参考 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)转移的概率。

  • 相关阅读:
    Go:获取命令行参数
    Go:文件操作
    Go:类型断言
    GO:interface
    Go:面向"对象"
    Go:工厂模式
    layui中流加载layui.flow
    js显示当前时间
    layui中的分页laypage
    layui中的多图上传
  • 原文地址:https://www.cnblogs.com/yhzhou/p/13334985.html
Copyright © 2020-2023  润新知