Hanlp實戰HMM-Viterbi角色標註中國人名識別
這幾天寫完了人名識別模組,與分詞放到一起形成了兩層隱馬模型。雖然在演算法或模型上沒有什麼新意,但是勝在訓練語料比較新,對質量把關比較嚴,實測效果很滿意。比如這句真實的新聞 “簽約儀式前,秦光榮、李紀恆、仇和等一同會見了參加簽約的企業家。”,分詞結果: [ 簽約 /v, 儀式 /n, 前 /f, , /w, 秦光榮 /nr, 、 /w, 李紀恆 /nr, 、 /w, 仇和 /nr, 等 /u, 一同 /d, 會見 /v, 了 /ul, 參加 /v, 簽約 /v, 的 /uj, 企業家 /n, 。 /w] ,三個人名“秦光榮”“李紀恆”“仇和”一個不漏。一些比較變態的例子也能從容應對,比如下面:
這是 hankcs 將自己的分詞與 ansj 作比較得出的結果,由於自己可以隨時調整演算法,所以主場佔了很大便宜。但是第一句絕對沒有放水,說實話能識別出“仇和”這麼冷僻的名字著實讓 人 驚喜了一下。
開源專案
本文程式碼已整合到 HanLP 中開源:
原理
推薦仔細閱讀《基於角色標註的中國人名自動識別研究 .doc 》這篇論文,該論文詳細地描述了演算法原理和實現。從語料庫的整理、標註到最後的模式匹配都講得清清楚楚。 hankcs 在這篇論文的基礎上做了改進,主要步驟總結如下:
1 、 對熟語料庫自動標註,將原來的標註轉化為角色標註。角色標註一共有如下幾種:
hankcs 在此基礎上擴充了一個 S ,代表句子的開始。
2 、統計標籤的出現頻次,標籤的轉移矩陣。
3 、對粗分結果角色標註,模式匹配。
hankcs 對論文中的幾個模式串做了拓充,並且採用了 AC 模式匹配演算法。
體會
論文中將三字名稱拆分為 BCD ,實測在 2-gram 模型下, C 很容易被識別為 E ,導致人名缺一半。
人民日報 2014 中的人名並不能覆蓋所有常用字,所以 hankcs 去別的地方找了個人名庫,拆成 BCD 或 BE 補充了進去。
人民日報 2014 語料庫中有很多錯誤,比如
去 /vf 年老 /vi 張中秋 /nr 去 /vf “ /w 泡茶 /vi ” /w , /w 送禮 /vi 遭到 /v 了 /ule 拒絕 /v , /w 老張 /nz 擔心 /v 金額 /n 不夠 /a
中秋很明顯不是人名的組成部分,這個必須手工剔除。
“中秋安全”會識別出“中 秋安全”來,因為 2-gram 詞典中沒有“中秋 @ 安全”這種接續,而有“中 @ 未 ## 人”這種接續。初步的解決方法是手工往 2-gram 詞典裡面加一條“中秋 @ 安全”。這反映了這種方法的侷限性,另一方面也說明詞典的重要性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2217055/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HanLP-基於HMM-Viterbi的人名識別原理介紹HanLPHMMViterbi
- HanLP中人名識別分析詳解HanLP
- HanLP中的人名識別分析詳解HanLP
- hanlp自然語言處理包的人名識別程式碼解析HanLP自然語言處理
- 中文自然語言處理工具hanlp隱馬角色標註詳解自然語言處理HanLP
- 一種融合指代消解序列標註方法在中文人名識別上的應用(下)
- HanLP-命名實體識別總結HanLP
- Python自然語言處理實戰(4):詞性標註與命名實體識別Python自然語言處理詞性標註
- python呼叫hanlp進行命名實體識別PythonHanLP
- HanLP-地名識別除錯方法HanLP地名識別除錯
- Hanlp-地名識別除錯方法詳解HanLP地名識別除錯
- 自然語言處理工具python呼叫hanlp中文實體識別自然語言處理PythonHanLP
- 如何使用機器學習進行影像識別 | 資料標註機器學習
- 面向機器智慧的TensorFlow實戰5:目標識別與分類
- 基於結構化感知機的詞性標註與命名實體識別框架詞性標註框架
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- hanlp中文智慧分詞自動識別文字提取例項HanLP分詞
- Spring Security 實戰乾貨:基於註解的介面角色訪問控制Spring
- OpenCV----實現目標識別與分割OpenCV
- 使用 JSDoc 標註型別JS型別
- 人臉識別檢測專案實戰
- 對doccano自動標註使用的預設UIE模型進行微調以提高特定領域的實體識別能力,提高標註速度UI模型
- 人工智慧資料標註案例之人臉識別 | 景聯文科技人工智慧
- 拆分PPOCRLabel標註的資料集並生成識別資料集
- 實戰四:手把手教你實現數字識別
- PaddlePaddle車牌識別實戰和心得
- NLP專案實戰02:英文文字識別
- Laravel --實戰篇 UUID(唯一識別碼)LaravelUI
- 鴻蒙專案實戰(六):識別本地圖片鴻蒙地圖
- 精通Python自然語言處理 4 :詞性標註--單詞識別Python自然語言處理詞性標註
- 微服務實戰系列(五)-註冊中心Eureka與nacos區別微服務
- 自然語言處理工具HanLP-基於層疊HMM地名識別自然語言處理HanLPHMM地名識別
- 【實戰】基於OpenCV的水錶字元識別(OCR)OpenCV字元
- 基於感知機的人名-性別預測系統 —— Python實現Python
- AI人工智慧—資料標註的主要型別和標註注意事項AI人工智慧型別
- WEB端:裝置標識號如何識別?Web
- SQL Server建立應用程式角色與標準角色SQLServer
- 美軍開發遠端人臉識別系統,實現1公里內目標識別