机器学习大作业——使用 HMM 实现中文分词算法
一、问题分析
中文分词问题属于自然语言处理(NLP)中的一类问题,其与机器学习有关
的三要素包括:主要模型是隐马尔可夫模型模型(HMM),解决策略是使用动
态规划思想,而优化算法则是使用维特比算法。
HMM 具有五个要素:状态值集合、观察值集合、转移概率矩阵、发射概率
矩阵以及初始状态分布。在中文分词问题中,这五个要素具体分别是:
(1)状态值集合是{B,M,E,S}。其中,B 代表 begin,意思是当前汉字处于词
语中的起始处;M 代表 middle,意思是当前汉字处于词语的中间;E 代表 end,
意思是当前汉字处于词语的末尾;S 代表 single,意思是当前汉字独立成词。
(2)观察值集合:所有汉字甚至包括标点符号(但是不包括空格、特殊字
符以及换行符)所组成的集合。在 HMM 模型中文分词中,输入时一个句子(也
就是观察值序列),输出是这个句子中每个汉字的状态值。一般来说,训练时,
输入的训练数据集越大,包含的汉字以及词语的种类越多(即多样性强),数据
集本身的分词科学,则输出的结果更为准确,贴合语义。
(3)初始状态概率分布矩阵:一般用 Pi 矩阵表示。Pi 矩阵包含了每句话(或
每一行)第一个字符属于{B,M,E,S}这四种状态的概率。未训练时,初始值都是 0,
需要经过训练。
(4)状态转移概率矩阵:一般用 A 矩阵表示。A 矩阵包含了由上一个状态
到该状态的转移概率。转移概率是马尔可夫链;根据有限历史性假设,目前的状
态只与上一个状态有关。因此,在中文分词问题中,A 矩阵就是一个 4×4 的矩
阵(代码中将使用字典来存储),矩阵的横坐标和纵坐标分别是{B,M,E,S}。
(5)发射概率矩阵:一般用 B 矩阵表示。B 矩阵一般用字典存储。下式子中,
P(Observed[i]|Status[j])就是从 B 矩阵获得的。
])[|][(*])[(])[],[( jStatusiObservedPjStatusPjStatusiObservedP �
HMM 模型主要有三个基本问题:
(1)概率计算问题:给定模型λ=(A,B,Pi)和观测序列 O=(o1,o2,...,oT),计算
在模型λ下观测序列 O 出现的概率 P(O|λ)。
(2)学习问题:已知观测序列 O=(o1,o2,...,oT),估计模型λ=(A,B,Pi)的参数
A、B、Pi,使得在该模型下观测序列概率 P(O|λ)最大。
(3)预测问题:已知模型λ=(A,B,Pi)和观测序列 O=(o1,o2,...,oT),求对给定