Hanlp自然語言處理中的詞典格式說明

adnb34g發表於2019-03-15


使用過 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章