Hanlp自然語言處理中的詞典格式說明
使用過 hanlp的都知道hanlp中有許多詞典,它們的格式都是非常相似的,形式都是文字文件,隨時可以修改。本篇文章詳細介紹了hanlp中的詞典格式,以滿足使用者自定義的需要。
基本格式
詞典分為詞頻詞性詞典和詞頻詞典。
1、 詞頻詞性詞典(如 CoreNatureDictionary.txt)
( 1 ) 每一行代表一個單詞,格式遵從 [單詞] [詞性A] [A的頻次] [詞性B] [B的頻次] ...。
( 2 ) 支援省略詞性和頻次,直接一行一個單詞。
( 3 ) .txt詞典檔案的分隔符為空格或製表符,所以不支援含有空格的詞語。如果需要支援空格,請使用英文逗號,分割的純文字.csv檔案。在使用Excel等富文字編輯器時,則請注意儲存為純文字形式。
2、 詞頻詞典(如 CoreNatureDictionary.ngram.txt)
( 1 ) 每一行代表一個單詞或條目,格式遵從 [單詞] [單詞的頻次]。
( 2 ) 每一行的分隔符為空格或製表符。
少數詞典有自己的專用格式,比如同義詞詞典相容《同義詞詞林擴充套件版》的文字格式,而轉移矩陣詞典則是一個 csv表格。
下文主要介紹通用詞典,如不註明,詞典特指通用詞典。
資料結構
Trie樹(字典樹)是HanLP中使用最多的資料結構,為此,我實現了通用的Trie樹,支援泛型、遍歷、儲存、載入。
使用者自定義詞典採用 AhoCorasickDoubleArrayTrie和二分Trie樹儲存,其他詞典採用基於雙陣列Trie樹(DoubleArrayTrie)實現的AC自動機AhoCorasickDoubleArrayTrie。關於一些常用資料結構的效能評估,請參考wiki。
儲存形式
詞典有兩個形態:文字檔案 (filename.txt)和快取檔案(filename.txt.bin或filename.txt.trie.dat和filename.txt.trie.value)。
1、 文字檔案
· 採用明文儲存, UTF-8編碼,CRLF換行符。
2、 快取檔案
( 1 ) 就是一些二進位制檔案,通常在文字檔案的檔名後面加上 .bin表示。有時候是.trie.dat和.trie.value。後者是歷史遺留產物,分別代表trie樹的陣列和值。
( 2 ) 如果你修改了任何詞典,只有刪除快取才能生效。
修改方法
HanLP的核心詞典訓練自人民日報2014語料,語料不是完美的,總會存在一些錯誤。這些錯誤可能會導致分詞出現奇怪的結果,這時請開啟除錯模式排查問題:
HanLP.Config.enableDebug();
( 1 ) 核心詞性詞頻詞典
a) 比如你在 data/dictionary/CoreNatureDictionary.txt中發現了一個不是詞的詞,或者詞性標註得明顯不對,那麼你可以修改它,然後刪除快取檔案使其生效。
B) 目前 CoreNatureDictionary.ngram.txt的快取依賴於CoreNatureDictionary.txt的快取,修改了後者之後必須同步刪除前者的快取,否則可能出錯
( 2 ) 核心二元文法詞典
a) 二元文法詞典 data/dictionary/CoreNatureDictionary.ngram.txt儲存的是兩個詞的接續,如果你發現不可能存在這種接續時,刪掉即可。
B) 你也可以新增你認為合理的接續,但是這兩個詞必須同時在核心詞典中才會生效。
( 3 ) 命名實體識別詞典
a ) 基於角色標註的命名實體識別比較依賴詞典,所以詞典的質量大幅影響識別質量。
b ) 這些詞典的格式與原理都是類似的,請閱讀相應的文章或程式碼修改它。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2638447/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- HanLP 自然語言處理 for nodejsHanLP自然語言處理NodeJS
- 配置Hanlp自然語言處理進階HanLP自然語言處理
- 自然語言處理:分詞方法自然語言處理分詞
- Pyhanlp自然語言處理中的新詞識別HanLP自然語言處理
- hanlp自然語言處理包的基本使用--pythonHanLP自然語言處理Python
- Hanlp自然語言處理工具之詞法分析器HanLP自然語言處理詞法分析
- 自然語言處理之jieba分詞自然語言處理Jieba分詞
- 自然語言處理中的分詞問題總結自然語言處理分詞
- 如何編譯執行HanLP自然語言處理包編譯HanLP自然語言處理
- 自然語言處理工具hanlp定製使用者詞條自然語言處理HanLP
- 自然語言處理工具HanLP-N最短路徑分詞自然語言處理HanLP分詞
- 自然語言處理NLP(6)——詞法分析自然語言處理詞法分析
- 自然語言處理之:搭建基於HanLP的開發環境自然語言處理HanLP開發環境
- Hanlp自然語言處理工具的使用演練HanLP自然語言處理
- hanlp自然語言處理包的人名識別程式碼解析HanLP自然語言處理
- 開源自然語言處理工具包hanlp中CRF分詞實現詳解自然語言處理HanLPCRF分詞
- 自然語言處理工具hanlp關鍵詞提取圖解TextRank演算法自然語言處理HanLP圖解演算法
- 入門自然語言處理必看:圖解詞向量自然語言處理圖解
- NPL---自然語言處理單詞界定問題自然語言處理
- 自然語言處理(NLP)自然語言處理
- 詞!自然語言處理之詞全解和Python實戰!自然語言處理Python
- 自然語言處理中的語言模型預訓練方法自然語言處理模型
- 自然語言處理工具包HanLP的Python介面自然語言處理HanLPPython
- 自然語言處理(NLP)系列(一)——自然語言理解(NLU)自然語言處理
- python呼叫自然語言處理工具hanlp記錄Python自然語言處理HanLP
- 自然語言處理入門基礎之hanlp詳解自然語言處理HanLP
- 自然語言處理(NLP)概述自然語言處理
- 自然語言處理NLP(四)自然語言處理
- Python自然語言處理Python自然語言處理
- 自然語言處理工具包 HanLP在 Spring Boot中的應用自然語言處理HanLPSpring Boot
- 自然語言處理工具中的中文分詞器介紹自然語言處理中文分詞
- 自然語言處理工具python呼叫hanlp的方法步驟自然語言處理PythonHanLP
- Python 自然語言處理(基於jieba分詞和NLTK)Python自然語言處理Jieba分詞
- 自然語言處理中的遷移學習(下)自然語言處理遷移學習
- 自然語言處理中的遷移學習(上)自然語言處理遷移學習
- 精通Python自然語言處理 4 :詞性標註--單詞識別Python自然語言處理詞性標註
- 自然語言處理工具hanlp自定義詞彙新增圖解自然語言處理HanLP圖解