【環境】python 2.7java
方法一:使用pyhanlp,具體方法以下:python
pip install pyhanlp # 安裝pyhanlpvim
進入python安裝包路徑,如緩存
/usr/lib/python2.7/site-packages/pyhanlp/static/python2.7
將http://hanlp.properties.in更名爲備份文件。測試
mv hanlp.properties.in hanlp.properties.in.bakspa
修改hanlp.properties設計
vim hanlp.propertiesip
將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);
}