hadoop小學生
精靈王
精靈王
  • 注冊日期2018-09-13
  • 發帖數160
  • QQ3234520070
  • 火幣360枚
  • 粉絲0
  • 關注0
閱讀:1238回復:0

HanLP-地名識別調試方法

樓主#
更多 發布于:2019-07-19 10:42
hanlp收詞特別是實體比較多,因此特別容易造成誤識別。下邊舉幾個地名誤識別的例子,需要指出的是,后邊的機構名識別也以地名識別為基礎,因此,如果地名識別不準確,也會導致機構名識別不準確。


類型1 數字+地名
[1] 暗訪哈爾濱網約車:下10單來7輛“黑車” 1輛套牌
[2] 房天下每日成交512日海寧商品房銷售備案43
[3] 廣西近視手術專家-黃明漢院長99日百色見面會

類型2 前詞+地名首詞成詞或地名尾詞+后詞成詞
[1] 西安國企4000元工資相當于私企多少錢?
[2] 七月份從包頭到山東,十五天左右,有自駕游路線推薦嗎?
[3] 最受考研人歡迎的城市,有你報考高校所在的城市嗎?

類型3 地名本身成詞
[1] 滴滴司機接跨省天價訂單 乘客半路改道至今未付款
[2] 上聯:山水不曾隨我老,如何對下聯?
[3] 上聯:柳著金妝閑釣水,如何對下聯?

Badcase分析及修正
下邊介紹一下排查誤判原因以及修正的方法
首先需要明確以下幾點注意事項
1.實體識別受分詞精度影響。
2.實體識別同樣涉及消歧的問題。
3.HanLP收錄了一些不常見的實體詞,會造成錯誤率升高。
4.HanLP基于隱馬的命名實體識召回率沒有特別要求的話,不需要再去訓練。
這里我們以下邊這個badcase的分析過程為例來說明
[5] 上聯:山水不曾隨我老,如何對下聯?
打開提示模式 HanLP.Config.enableDebug()

運行人名識別代碼

# HanLP命名實體識別
def hanlp_ner(text, ner_type):
   global segment
   ner_li = []
   for term in segment.seg(text):
       if str(term.nature) == ner_type:
           ner_li.append(str(term.word))
   return ner_li
這里ner_type為你要識別的實體類型,如果是人名則ner_type='nr',地名ner_type='ns',機構名ner_type='nt'text為要抽取實體的文本。

識別結果,這里為了清晰,只截取了部分輸出。

粗分結果[上聯/n, /w, 山水/n, /d, 曾隨/ns, /rr, /a, /w, 如何/ryv, /p, 下聯/n, /w]
地名角色觀察:[  S 1163565 ][上聯 Z 20211628 ][A 2701 B 439 X 11 ][山水 B 6 A 1 ][B 214 A 3 C 3 ][曾隨 G 1 H 1 ]
[A 47 B 26 ][C 274 A 75 B 66 D 2 X 2 ][A 40525 B 10497 X 418 ][如何 B 44 ][A 2896 B 454 X 215 ][下聯 Z 20211628 ][B 82 ][  B 1322 ]
地名角色標注:[ /S ,上聯/Z ,/B ,山水/A ,/C ,曾隨/H ,/B ,/B ,/A ,如何/B ,/A ,下聯/Z ,/B , /S]
識別出地名:不曾隨 CH
hanlp_ns ['不曾隨']

顯然,曾隨被認為是地名了,而且粗分結果表示的是未經地名識別模塊分詞和詞性標注的結果,顯然這是由于詞表導致的。由于沒有經過地名識別模塊,所以不需要去地名的發射詞表ns.txt中去找詞語,只需要看核心詞表CoreNatureDictionary.txt中去找

圖片:圖1.JPG



顯然,在核心詞表中“曾隨“被標記為一個地名,把”曾隨“從詞表中刪除掉,并刪除詞表文件CoreNatureDictionary.txt.bin,之后再次運行程序得到下邊的輸出結果

hanlp_ns []
從這個實例,我們也可以看出一些不常見地名如果做成地名詞表,就有導致錯誤識別實體。因此,我們應該保留一份評測語料,每當修改了實體詞表后,需要跑一下測試語料查看準確率,如果降低的太多,則表示這樣加進來是不可行的。同時填加的實體名也有可能會造成分詞錯誤。

下邊說明一下HanLP中有關實體的詞表文件名
1.CoreNatureDictionary.mini.txt
2.CoreNatureDictionary.txt
3.CustomDictionary.txt
4.機構名詞典.txt
5.全國地名大全.txt
6.人名詞典.txt
7.上海地名.txt
8.現代漢語補充詞庫.txt
9.ns.txt
10.nr.txt
11.nt.txt

當然這里列出的是通常最有可能導致誤識別的詞表,如果這些詞表都沒有找到,還需要在HanLP其他詞典文件中尋找。
希望今天的內容對使用HanLP并對隱馬情有獨鐘的小伙伴有幫助。這兩天的一點小體會是,實體識別其實跟分詞是密不可分的,兩者都有共同的處理難點,比如詞義消歧(邊界的確定),詞法分析其實才是真正的NLP的內容之一,而詞法分析跟機器學習其實沒有太大關系。上邊的badcase解決方法不是根本方法,直接去除掉某些詞,會導致一些生僻實體識別不出來。我們是否可以考慮左右信息熵之類的測度函數來解決這種詞是否需要拆開與其前后構成詞。針對詞法分析推薦大家使用深度學習的方法,畢竟了解這些方法也是必須的,雖然你可以在實際種不用,但是不代表你可以偷懶而不去學習。

喜歡0 評分0
DKHadoop用著還不錯!
游客

返回頂部
大乐透开奖结果走势图