HanLP-基於HMM-Viterbi的人名識別原理介紹

adnb34g發表於2019-07-24


Hanlp自然語言處理包中的基於HMM-Viterbi處理人名識別的內容大概在年初的有分享過這類的文章,時間稍微久了一點,有點忘記了。看了 baiziyu 分享的這篇比我之前分享的要簡單明瞭的多。下面就把文章分享給大家交流學習之用,部分內容有做修改。

 

 

本文 主要介紹一下 HanLP是如何利用HMM來做人名識別的。基本思想是把詞語序列作為觀測序列,將角色序列作為隱藏序列,當模型預測出最佳隱藏狀態序列後,利用模式最大匹配法,匹配出人名實體。下邊說一模型的三要素在這個應用中所對應的內容,因為訓練階段就是要求解這三個要素的值。

假設有下邊的觀測序列和其對應的隱藏序列

 

觀察值序列:詞 1 詞2 … 詞n

隱變數序列:角色 1 角色2 … 角色n

訓練階段: 統計三個要素(三個矩陣的元素值)

初始機率分佈:

 

各隱變數標記意義列於下表

 

狀態轉移機率分佈:

 

觀測機率分佈:

 

有關這些機率值的計算都很簡單,就是頻率法,留在後邊介紹隱馬時候再寫。

預測階段:

根據訓練得到的三個要素,利用 Viterbi演算法求解得到了最優隱藏變數序列 角色1* 角色2* ... 角色n*

最大模式匹配階段:

利用下邊的模式串匹配出人名

{ BBCD, BBE, BBZ, BCD, BEE,BE,BG,BXD,BZ,CD,EE,FB, Y,XD}

基於 HMM-Viterbi標註的人名識別原理就介紹到這裡,我想我應該把原理說清楚了,如果你還沒有看明白,就等著後續的有關隱馬的文章吧。基於隱馬的人名識別會很容把以一個姓氏作為開頭的詞語識別為人名,特別是地名中有人名字的,因此,人工整理出一些非常用姓氏的人名,以及一些地名是必要的,後續如果整理出來了,我應該會放到專欄文章裡,畢竟都是公開語料上做的,也就不涉及什麼別的不方便。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2651544/,如需轉載,請註明出處,否則將追究法律責任。

相關文章