天天看點

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)這些詞典的格式與原理都是類似的,請閱讀相應的文章或代碼修改它。

繼續閱讀