方法一:使用pyhanlp,具體方法如下:
pip install pyhanlp # 安裝pyhanlp
進入python安裝包路徑,如
/usr/lib/python2.7/site-packages/pyhanlp/static/
将http://hanlp.properties.in改名為備份檔案。
mv hanlp.properties.in hanlp.properties.in.bak
修改hanlp.properties
vim hanlp.properties
将CustomDictionaryPath修改為你自定義的詞典路徑,如:
CustomDictionaryPath=data/dictionary/custom/self_define_dict.txt; 現代漢語補充詞庫.txt; 全國地名大全.txt; 人名詞典.txt; 機構名詞典.txt; 上海地名.txt ns; data/dictionary/person/nrf.txt nrf;
儲存。
python腳本,調用pyhanlp示例: from pyhanlp import *print HanLP.segment("在你想要放棄的時候,想想是什麼讓你當初堅持走到了這裡。總是有人要赢的,那為什麼不能是我")
運作腳本後,系統會檢查配置檔案hanlp.properties,讀取詞庫的路徑,對于自定義詞典,第一次會重新生成二進制檔案(以後直接用)。
方法二:使用grpc調用hanlp(python調用java包常用手段)
方法三:使用hanlp調用jar包(官方文檔有說明),自定義詞典沒設定成功。
注意事項:對于詞典,直接加載文本會很慢,是以HanLP對于文本檔案做了一些預處理,生成了字尾名為.txt.bin的二進制檔案。
這些二進制檔案相當于緩存,避免了每次加載去讀取多個檔案。
通過這種txt和bin結合的方式,HanLP一方面友善使用者編輯檢視詞典,另一方面bin友善加載,這種方式可謂是兼二者之長,設計上堪稱典範。
打開hanlp的data目錄data\dictionary\custom,删除所有的.txt.bin檔案,這樣一來,HanLP下次加載詞典時會自動建構.txt.bin,這樣一來,你對文本檔案所做的更改才會生效。對于HanLP中的字典,每次更改之後,都必須重新生成bin才可以,否則不會生效。
實際上,這種方式不夠智能,可以改進為檢查檔案日期的方式,如果目前目錄下的最新的詞典檔案比bin檔案新,那麼bin檔案失效,需要重新建構bin。
建構bin的過程是比較緩慢的,它需要把所有的相關文本檔案中的詞語合并到一個裡面,每次建構大概需要2min,建構完成之後下次啟動就很快了。
更改hanlp.properties,添加mine.txt.
#自定義詞典路徑,用;隔開多個自定義詞典,空格開頭表示在同一個目錄,使用“檔案名 詞性”形式則表示這個詞典的詞性預設是該詞性。優先級遞減。
#另外data/dictionary/custom/CustomDictionary.txt是個高品質的詞庫,請不要删除
CustomDictionaryPath=data/dictionary/custom/mine.txt; CustomDictionary.txt; 現代漢語補充詞庫.txt; 全國地名大全.txt ns; 人名詞典.txt; 機構名詞典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf
在data/dictionary/custom/目錄下建立mine.txt,添加一些詞語。比如裡面加上”蘭陵笑笑生“。
随便編一個程式測試一下
List<Term> res = HanLP.segment("蘭陵笑笑生笑道:你他娘的真是個天才");
System.out.println(res);//[蘭陵笑笑生/nr, 笑/v, 道/q, :/w, 你/r, 他/r, 娘/n, 的/uj, 真/d, 是/v, 個/q, 天才/n]
for (String i : HanLP.Config.CustomDictionaryPath) {
System.out.println(i);
}