HanLP分詞命名實體提取詳解html
分享一篇大神的關於hanlp分詞命名實體提取的經驗文章,文章中分享的內容略有一段時間(使用的hanlp版本比較老),最新一版的hanlp已經出來了,也能夠去看看新版的hanlp在這方面有何提高!算法
文本挖掘是抽取有效、新穎、有用、可理解的、散佈在文本文件中的有價值知識,而且利用這些知識更好地組織信息的過程。對於文原本說,因爲語言組織形式各異,表達方式多樣,文本里面提到的不少要素,如人名、手機號、組織名、地名等都稱之爲實體。在工程領域,招投標文件裏的這些實體信息相當重要。利用天然語言處理技術從形式各異的文件中提取出這些實體,能有效提升工做效率和挖掘實體之間的潛在聯繫。網絡
文本預處理架構
一、文本清洗機器學習
目前,大部分招中標項目信息都是發佈在各個網站上,因此咱們獲取的主要是網絡文本。網頁中存在不少與文本內容無關的信息,好比廣告,導航欄,html、js代碼,註釋等等。文本清洗,就是經過正則匹配去掉這些干擾信息,抽取出乾淨的文本內容。工具
二、中文分詞性能
中文分詞(Chinese Word Segmentation) 指的是將一個漢字序列切分紅一個一個單獨的詞。分詞就是將連續的字序列按照必定的規範從新組合成詞序列的過程。一篇文本中不是全部詞都很重要,咱們只需找出起到關鍵做用、決定文本主要內容的詞進行分析便可。目前幾大主流的分詞技術可移步到這篇博客中:中文分詞技術小結、幾大分詞引擎的介紹與比較學習
筆者採用的是HanLP分詞工具。 網站
HanLP是由一系列模型與算法組成的Java工具包,目標是普及天然語言處理在生產環境中的應用。HanLP具有功能完善、性能高效、架構清晰、語料時新、可自定義的特色。spa
HanLP提供下列功能:
中文分詞
1.最短路分詞(Dijkstra精度已經足夠,且速度比N最短快幾倍)
2.N-最短路分詞(與Dijkstra對比,D已夠用)
3.CRF分詞(對新詞較有效)
4.索引分詞(長詞切分,索引全部可能詞)
5.極速詞典分詞(速度快,精度通常)
6.用戶自定義詞典
7.標準分詞(HMM-Viterbi)
命名實體識別
1.實體機構名識別(層疊HMM-Viterbi)
2.中國人名識別(HMM-Viterbi)
3.音譯人名識別(層疊隱馬模型)
4.日本人名識別(層疊隱馬模型)
5.地名識別(HMM-Viterbi)
篇章理解
1.關鍵詞提取( TextRank關鍵詞提取)
2.自動摘要( TextRank自動摘要,提取關鍵句子)
3.短語提取( 基於互信息和左右信息熵的短語提取)
簡繁拼音轉換
1.拼音轉換( 多音字,聲母,韻母,聲調)
2.簡繁轉換(繁體中文分詞,簡繁分歧詞)
智能推薦
1.文本推薦(句子級別,從一系列句子中挑出與輸入句子/詞語最類似的那一句)
2.語義距離(基於《同義詞詞林擴展版》)
命名實體提取
HanLP分詞提供詞性標註的功能,因此調用分詞接口後得到帶有詞性標註的單詞集合。例如:
String word = "河南大明建設工程管理有限公司受林州市水土保持生態建設管理局委託,
林州市合澗鎮劉家凹小流域2017年省級水土保持補償費項目進行了公開招標";
List<Term> termList= HanLP.segment( word );
System.out.println(termList.toString());
獲得的輸出結果爲:
[河南/ns, 大明/nz, 建設工程/nz, 管理/vn, 有限公司/nis, 受/v, 林州市/ns, 水土保持/gg, 生態/n, 建設/vn, 管理局/nis, 委託/vn, ,/w, 就/d, 林州市/ns, 合澗鎮/ns, 劉家凹/nr, 小流域/nz, 2017/m, 年/qt, 省級/b, 水土保持/gg, 補償費/n, 項目/n, 進行/vn, 了/ule, 公開招標/v]
每一個詞性表明什麼能夠參考 HanLP詞性標註集
招中標項目文本樣式多變、內容複雜,咱們沒法直接定位文本中的某一位置來提取實體。小編採用基於統計和基於規則相融合的機器學習方法。
首先,統計這些實體出現的先後文單詞和詞性,並考慮他們之間的聯繫,歸納出特定實體先後出現的高頻詞彙。
其次,利用這些高頻詞彙構建出「前文+特定實體+後文」的規則。
最後,利用這一規則在全文中進行模式匹配。利用投票原理,對匹配度高的規則分配高分,相反,匹配度低的規則賦予低分。而後,對全部匹配的規則進行分數排序,獲得投票分數最高的規則,並從規則中剝離出特定實體,這個實體即爲咱們的目標實體。
例如,招標單位的提取,咱們統計出改實體出現的前文頻率較高的爲:招標人、招標單位、建設單位、採購人、採購單位、業主等,後文爲:委託、招標等。一般出現這些詞彙的先後就是招標單位。而後咱們再根據這個詞的詞性,判斷它是否屬於機構名、團體名。若是是機構團體名,則斷定該單詞爲招標單位名稱。這樣,就能夠得到咱們須要的實體。其餘實體的提取與此相似。
以下圖:咱們得到的文本是網絡片斷
去除標籤、雜數據,獲得的純文本爲:
調用HanLP分詞接口,獲得下圖的分詞列表:
2. List<Term> termList = segment.seg(content);
最後,根據「前文+特定實體+後文」正則匹配,得出提取的實體,以下圖:
技術實施流程圖
做者:XiaoXiao_Yang77
原文:https://blog.csdn.net/XiaoXiao_Yang77/article/details/78437915