微信登录

自然语言处理 - 隐马尔可夫模型 - 用于分词与词性标注基础算法

自然语言处理中的隐马尔可夫模型(HMM):分词与词性标注基础算法

1. 隐马尔可夫模型(HMM)简介

隐马尔可夫模型是一种用于建模序列数据的统计模型,包含 隐含状态(不可见)和 观测序列(可见)。其核心由以下三部分组成:

  • 初始状态概率(π):每个隐含状态作为序列起点的概率。
  • 转移概率矩阵(A):状态之间的转移概率(如从状态 (i) 到 (j) 的概率为 (a_{ij}))。
  • 发射概率矩阵(B):在某个状态下生成特定观测值的概率(如状态 (i) 生成观测 (o) 的概率为 (b_i(o)))。

核心问题

  1. 解码问题:已知模型参数和观测序列,求最可能的隐含状态序列(使用 维特比算法)。
  2. 学习问题:根据观测序列估计模型参数(使用 Baum-Welch算法)。

2. HMM在分词中的应用

中文分词的目的是将连续的字符划分为词语。HMM通过将 字的位置标签(B、M、E、S)作为隐含状态,字作为观测值,实现分词。

状态定义:
  • B(Begin):词语的起始字。
  • M(Middle):词语中间的字。
  • E(End):词语的结尾字。
  • S(Single):单独成词的单字。
例子:句子“我/经常/散步” → 字符序列:我、经、常、散、步。
  1. 真实标签序列:S(我)、B(经)、E(常)、B(散)、E(步)。
  2. 任务:通过HMM推断每个字符对应的标签。
参数假设:
  • 初始概率(π)

    • (π_S=0.6, π_B=0.4)(首个字可能是S或B)。
  • 转移概率(A)
    | | B | M | E | S |
    |—-|——-|——-|——-|——-|
    | B | 0 | 0.7 | 0.3 | 0 |
    | M | 0 | 0.4 | 0.6 | 0 |
    | E | 0.4 | 0 | 0 | 0.6 |
    | S | 0.3 | 0 | 0 | 0.7 |

  • 发射概率(B)
    | 状态 | 我 | 经 | 常 | 散 | 步 |
    |———|——-|——-|——-|——-|——-|
    | B | 0 | 0.8 | 0.1 | 0.7 | 0.2 |
    | M | 0 | 0.1 | 0.8 | 0.1 | 0 |
    | E | 0 | 0.1 | 0.7 | 0 | 0.6 |
    | S | 0.9 | 0 | 0 | 0 | 0 |

维特比算法步骤:
  1. 初始化

    • 时间步 (t=1)(字“我”):
      [
      \delta_1(S) = π_S \cdot b_S(我) = 0.6 \times 0.9 = 0.54 \
      \delta_1(B) = π_B \cdot b_B(我) = 0.4 \times 0 = 0
      ]
  2. 递推计算(t=2到t=5)

    • (t=2)(字“经”):
      [
      \delta2(B) = \max {\delta_1(S) \cdot a{S \to B} \cdot b_B(经)} = 0.54 \times 0.3 \times 0.8 = 0.1296
      ]
      (其他状态类似)
  3. 终止与回溯

    • 最大概率路径为:S → B → E → B → E,对应分词“我/经/常/散步”(实际需根据参数调整)。

3. HMM在词性标注中的应用

词性标注是为每个词语赋予词性标签(如名词、动词)。此处标签为隐含状态,词语为观测值。

例子:句子“She loves cats” → 词性序列:PRP(代词)、VBZ(动词)、NNS(复数名词)。
参数假设:
  • 初始概率(π)

    • PRP: 0.7, VBZ: 0.1, NNS: 0.2.
  • 转移概率(A)
    | | PRP | VBZ | NNS |
    |———-|———|———|———|
    | PRP| 0 | 0.8 | 0.2 |
    | VBZ| 0.3 | 0 | 0.7 |
    | NNS| 0 | 0 | 0 |

  • 发射概率(B)
    | 状态 | She | loves | cats |
    |———|———|———-|———|
    | PRP | 0.9 | 0 | 0 |
    | VBZ | 0 | 0.6 | 0 |
    | NNS | 0 | 0 | 0.8 |

维特比计算:
  1. 初始化(t=1,“She”)
    [
    \delta_1(PRP) = 0.7 \times 0.9 = 0.63
    ]

  2. 递推(t=2,“loves”)
    [
    \delta2(VBZ) = \delta_1(PRP) \cdot a{PRP \to VBZ} \cdot b_{VBZ}(loves) = 0.63 \times 0.8 \times 0.6 = 0.3024
    ]

  3. 最终路径回溯:PRP → VBZ → NNS。


4. 总结

HMM通过 维特比算法 解码最可能的隐含状态序列,广泛应用于分词和词性标注:

  • 分词:将B/M/E/S标签映射为词语边界。
  • 词性标注:根据上下文和词语生成概率标注词性。

改进方向:HMM的局限性在于假设当前状态仅依赖前一状态(一阶马尔可夫性)。现代方法如CRF或深度学习模型(如BiLSTM)能捕捉更长距离依赖。