HanLP-地名识别调试方法
HanLP收詞特別是實(shí)體比較多,因此特別容易造成誤識(shí)別。下邊舉幾個(gè)地名誤識(shí)別的例子,需要指出的是,后邊的機(jī)構(gòu)名識(shí)別也以地名識(shí)別為基礎(chǔ),因此,如果地名識(shí)別不準(zhǔn)確,也會(huì)導(dǎo)致機(jī)構(gòu)名識(shí)別不準(zhǔn)確。
?
類型1 數(shù)字+地名
[1] 暗訪哈爾濱網(wǎng)約車(chē):下10單來(lái)7輛“黑車(chē)” 1輛套牌
[2] 房天下每日成交5月12日海寧商品房銷售備案43套
廣西近視手術(shù)專家-黃明漢院長(zhǎng)9月9日百色見(jiàn)面會(huì)
?
類型2 前詞+地名首詞成詞或地名尾詞+后詞成詞
[1] 西安國(guó)企4000元工資相當(dāng)于私企多少錢(qián)?
[2] 七月份從包頭到山東,十五天左右,有自駕游路線推薦嗎?
[3] 最受考研人歡迎的城市,有你報(bào)考高校所在的城市嗎?
?
類型3 地名本身成詞
[1] 滴滴司機(jī)接跨省天價(jià)訂單 乘客半路改道至今未付款
[2] 上聯(lián):山水不曾隨我老,如何對(duì)下聯(lián)?
[3] 上聯(lián):柳著金妝閑釣水,如何對(duì)下聯(lián)?
?
Badcase分析及修正
下邊介紹一下排查誤判原因以及修正的方法
首先需要明確以下幾點(diǎn)注意事項(xiàng)
1.實(shí)體識(shí)別受分詞精度影響。
2.實(shí)體識(shí)別同樣涉及消歧的問(wèn)題。
3.HanLP收錄了一些不常見(jiàn)的實(shí)體詞,會(huì)造成錯(cuò)誤率升高。
4.HanLP基于隱馬的命名實(shí)體識(shí)召回率沒(méi)有特別要求的話,不需要再去訓(xùn)練。
這里我們以下邊這個(gè)badcase的分析過(guò)程為例來(lái)說(shuō)明
[5] 上聯(lián):山水不曾隨我老,如何對(duì)下聯(lián)?
打開(kāi)提示模式 HanLP.Config.enableDebug()
?
運(yùn)行人名識(shí)別代碼
?
# HanLP命名實(shí)體識(shí)別
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為你要識(shí)別的實(shí)體類型,如果是人名則ner_type='nr',地名ner_type='ns',機(jī)構(gòu)名ner_type='nt'。text為要抽取實(shí)體的文本。
?
識(shí)別結(jié)果,這里為了清晰,只截取了部分輸出。
?
粗分結(jié)果[上聯(lián)/n, :/w, 山水/n, 不/d, 曾隨/ns, 我/rr, 老/a, ,/w, 如何/ryv, 對(duì)/p, 下聯(lián)/n, ?/w]
地名角色觀察:[ ?S 1163565 ][上聯(lián) 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 ][對(duì) A 2896 B 454 X 215 ][下聯(lián) Z 20211628 ][? B 82 ][ ?B 1322 ]
地名角色標(biāo)注:[ /S ,上聯(lián)/Z ,:/B ,山水/A ,不/C ,曾隨/H ,我/B ,老/B ,,/A ,如何/B ,對(duì)/A ,下聯(lián)/Z ,?/B , /S]
識(shí)別出地名:不曾隨 CH
hanlp_ns ['不曾隨']
?
顯然,曾隨被認(rèn)為是地名了,而且粗分結(jié)果表示的是未經(jīng)地名識(shí)別模塊分詞和詞性標(biāo)注的結(jié)果,顯然這是由于詞表導(dǎo)致的。由于沒(méi)有經(jīng)過(guò)地名識(shí)別模塊,所以不需要去地名的發(fā)射詞表ns.txt中去找詞語(yǔ),只需要看核心詞表CoreNatureDictionary.txt中去找
?
顯然,在核心詞表中“曾隨“被標(biāo)記為一個(gè)地名,把”曾隨“從詞表中刪除掉,并刪除詞表文件CoreNatureDictionary.txt.bin,之后再次運(yùn)行程序得到下邊的輸出結(jié)果
?
hanlp_ns []
從這個(gè)實(shí)例,我們也可以看出一些不常見(jiàn)地名如果做成地名詞表,就有導(dǎo)致錯(cuò)誤識(shí)別實(shí)體。因此,我們應(yīng)該保留一份評(píng)測(cè)語(yǔ)料,每當(dāng)修改了實(shí)體詞表后,需要跑一下測(cè)試語(yǔ)料查看準(zhǔn)確率,如果降低的太多,則表示這樣加進(jìn)來(lái)是不可行的。同時(shí)填加的實(shí)體名也有可能會(huì)造成分詞錯(cuò)誤。
?
下邊說(shuō)明一下HanLP中有關(guān)實(shí)體的詞表文件名
1.CoreNatureDictionary.mini.txt
2.CoreNatureDictionary.txt
3.CustomDictionary.txt
4.機(jī)構(gòu)名詞典.txt
5.全國(guó)地名大全.txt
6.人名詞典.txt
7.上海地名.txt
8.現(xiàn)代漢語(yǔ)補(bǔ)充詞庫(kù).txt
9.ns.txt
10.nr.txt
11.nt.txt
?
當(dāng)然這里列出的是通常最有可能導(dǎo)致誤識(shí)別的詞表,如果這些詞表都沒(méi)有找到,還需要在HanLP其他詞典文件中尋找。
希望今天的內(nèi)容對(duì)使用HanLP并對(duì)隱馬情有獨(dú)鐘的小伙伴有幫助。這兩天的一點(diǎn)小體會(huì)是,實(shí)體識(shí)別其實(shí)跟分詞是密不可分的,兩者都有共同的處理難點(diǎn),比如詞義消歧(邊界的確定),詞法分析其實(shí)才是真正的NLP的內(nèi)容之一,而詞法分析跟機(jī)器學(xué)習(xí)其實(shí)沒(méi)有太大關(guān)系。上邊的badcase解決方法不是根本方法,直接去除掉某些詞,會(huì)導(dǎo)致一些生僻實(shí)體識(shí)別不出來(lái)。我們是否可以考慮左右信息熵之類的測(cè)度函數(shù)來(lái)解決這種詞是否需要拆開(kāi)與其前后構(gòu)成詞。針對(duì)詞法分析推薦大家使用深度學(xué)習(xí)的方法,畢竟了解這些方法也是必須的,雖然你可以在實(shí)際種不用,但是不代表你可以偷懶而不去學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的HanLP-地名识别调试方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: apache zookeeper jav
- 下一篇: python 卡方分箱算法_python