之前发文剖析了「结巴分词」中用「DAG」和「Viterbi」算法进行中文分词的两个方案。有了前面的基础,这里再来讨论词性标注(POS)与关键词提取。
词性标注
如图,在 DAG分词时所用的 dict 里面含有词汇、词频和词性三个信息。所以,最简单的情况下,只需要在分词时查询 dict 记录下每个词的词性即可。
对于 dict 中没有给出 pos 信息,或者采用 Viterbi 算法对 OOV 做分词时,需要采用另外一种方法。这种方法本质上很简单,也是采用 Viterbi 算法,只是 model 稍微做些改变。
之前的文章介绍用 Viterbi 做中文分词时,我们指出观察空间为所有中文字组成的集合,状态空间为{B,E,M,S},并给出了三个先验的概率表:
这样,Viterbi 算法所基于的 HMM 模型就构建完全了,只需要执行 Viterbi 算法,就能计算出最可能的状态序列,并据此得到分词方案。
针对词性标注,我们对 HMM 模型稍作修改。观察空间不变;状态空间在前述基础上融入词性;初始状态分布表、状态转移概率