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


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章