HanLP分詞命名實體提取詳解
HanLP分詞命名實體提取 詳解
分享一篇大神的關於 hanlp分詞命名實體提取的經驗文章,文章中分享的內容略有一段時間(使用的hanlp版本比較老),最新一版的hanlp已經出來了,也可以去看看新版的hanlp在這方面有何提升!
文字挖掘是抽取有效、新穎、有用、可理解的、散佈在文字檔案中的有價值知識,並且利用這些知識更好地組織資訊的過程。對於文字來說,由於語言組織形式各異,表達方式多樣,文字里面提到的很多要素,如人名、手機號、組織名、地名等都稱之為實體。在工程領域,招投標檔案裡的這些實體資訊至關重要。利用自然語言處理技術從形式各異的檔案中提取出這些實體,能有效提高工作效率和挖掘實體之間的潛在聯絡。
文字預處理
1、文字清洗
目前,大部分招中標專案資訊都是釋出在各個網站上,所以我們獲取的主要是網路文字。網頁中存在很多與文字內容無關的資訊,比如廣告,導航欄, html、js程式碼,註釋等等。文字清洗,就是透過正則匹配去掉這些干擾資訊,抽取出乾淨的文字內容。
2、中文分詞
中文分詞 (Chinese Word Segmentation) 指的是將一個漢字序列切分成一個一個單獨的詞。分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。一篇文字中不是所有詞都很重要,我們只需找出起到關鍵作用、決定文字主要內容的詞進行分析即可。目前幾大主流的分詞技術可移步到這篇部落格中:中文分詞技術小結、幾大分詞引擎的介紹與比較
筆者採用的是 HanLP分詞工具。
HanLP是由一系列模型與演算法組成的Java工具包,目標是普及自然語言處理在生產環境中的應用。HanLP具備功能完善、效能高效、架構清晰、語料時新、可自定義的特點。
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分詞介面,得到下圖的分詞列表:
1. Segment segment = HanLP.newSegment().enableOrganizationRecognize(true);
2. List<Term> termList = segment.seg(content);
最後,根據 “前文+特定實體+後文”正則匹配,得出提取的實體,如下圖:
技術實施流程圖
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2375527/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HanLP-實詞分詞器詳解HanLP分詞
- HanLP 關鍵詞提取演算法分析詳解HanLP演算法
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- MapReduce實現與自定義詞典檔案基於hanLP的中文分詞詳解HanLP中文分詞
- hanlp中文智慧分詞自動識別文字提取例項HanLP分詞
- hanlp原始碼解析之中文分詞演算法詳解HanLP原始碼中文分詞演算法
- HanLP-命名實體識別總結HanLP
- HanLP分詞工具中的ViterbiSegment分詞流程HanLP分詞Viterbi
- Elasticsearch整合HanLP分詞器ElasticsearchHanLP分詞
- 開源自然語言處理工具包hanlp中CRF分詞實現詳解自然語言處理HanLPCRF分詞
- Hanlp中使用純JAVA實現CRF分詞HanLPJavaCRF分詞
- HanLP中文分詞Lucene外掛HanLP中文分詞
- java分詞工具hanlp介紹Java分詞HanLP
- python呼叫hanlp進行命名實體識別PythonHanLP
- 分詞工具Hanlp基於感知機的中文分詞框架HanLP中文分詞框架
- Ansj與hanlp分詞工具對比HanLP分詞
- HanLP分類模組的分詞器介紹HanLP分詞
- 自然語言處理工具hanlp關鍵詞提取圖解TextRank演算法自然語言處理HanLP圖解演算法
- 基於hanlp的es分詞外掛HanLP分詞
- python呼叫hanlp分詞包手記PythonHanLP分詞
- Hanlp分詞例項:Java實現TFIDF演算法HanLP分詞Java演算法
- Spark中分散式使用HanLP(1.7.0)分詞示例Spark分散式HanLP分詞
- 基於 HanLP 的 ES 中文分詞外掛HanLP中文分詞
- HanLP二元核心詞典詳細解析HanLP
- 中文分詞演算法工具hanlp原始碼解析中文分詞演算法HanLP原始碼
- Spring MVCD框架中呼叫HanLP分詞的方法SpringMVC框架HanLP分詞
- Hanlp在java中文分詞中的使用介紹HanLPJava中文分詞
- HanLP程式碼與詞典分離方案與流程HanLP
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- 一文詳解BERT模型實現NER命名實體抽取-王文廣模型
- HanLP中人名識別分析詳解HanLP
- 自然語言處理工具HanLP-N最短路徑分詞自然語言處理HanLP分詞
- 關鍵詞提取
- HanLP中的人名識別分析詳解HanLP
- Hanlp分詞1.7版本在Spark中分散式使用記錄HanLP分詞Spark分散式
- Hanlp等七種優秀的開源中文分詞庫推薦HanLP中文分詞
- 空間分析:4-1.分詞模型hanLP簡介與安裝分詞模型HanLP
- NLP自然語言處理 jieba中文分詞,關鍵詞提取,詞性標註,並行分詞,起止位置,文字挖掘,NLP WordEmbedding的概念和實現自然語言處理Jieba中文分詞詞性標註並行