自然語言處理hanlp的入門基礎


封面.jpg 

此文整理的基礎是建立在hanlp較早版本的基礎上的,雖然hanlp的最新1.7版本已經發布,但對於入門來說差別不大!分享一篇比較早的“舊文”給需要的朋友!

安裝HanLP

HanLP將數據與程序分離,給予用戶自定義的自由。 HanLP由三部分組成:HanLP = .jar + data + .properties ,請前往 項目主頁 下載這三個部分。

1、下載jar

放入classpath並添加依賴。

2、下載數據集

HanLP 中的數據分爲 詞典 和 模型 ,其中 詞典 是詞法分析必需的, 模型 是句法分析必需的,data目錄結構如下:

data

├─dictionary

└─model

用戶可以自行增刪替換,如果不需要句法分析功能的話,隨時可以刪除model文件夾。

可選數據集

圖1.JPG 

3、配置文件

示例配置文件:

#本配置文件中的路徑的根目錄,根目錄+其他路徑=絕對路徑

#Windows用戶請注意,路徑分隔符統一使用/

root=E:/JavaProjects/HanLP/

#核心詞典路徑

CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt

#2元語法詞典路徑

BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt

#停用詞詞典路徑

CoreStopWordDictionaryPath=data/dictionary/stopwords.txt

#同義詞詞典路徑

CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt

#人名詞典路徑

PersonDictionaryPath=data/dictionary/person/nr.txt

#人名詞典轉移矩陣路徑

PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt

#繁簡詞典路徑

TraditionalChineseDictionaryPath=data/dictionary/tc/TraditionalChinese.txt

#自定義詞典路徑,用;隔開多個自定義詞典,空格開頭表示在同一個目錄,使用“文件名 詞性”形式則表示這個詞典的詞性默認是該詞性。優先級遞減。

#另外data/dictionary/custom/CustomDictionary.txt是個高質量的詞庫,請不要刪除

CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 現代漢語補充詞庫.txt; 全國地名大全.txt ns; 人名詞典.txt; 機構名詞典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf

 

配置文件的作用是告訴HanLP數據包的位置,只需修改第一行

root=usr/home/HanLP/

 

data的 父目錄 即可,比如data目錄是 /Users/hankcs/Documents/data ,那麼 root=/Users/hankcs/Documents/ 。

 

如果選用mini數據包的話,則需要修改配置文件:

CoreDictionaryPath=data/dictionary/CoreNatureDictionary.mini.txt

BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.mini.txt

最後將HanLP.properties放入classpath即可:

 

對於Eclipse來講

project/bin

對於IntelliJ IDEA來講

project/target/classes

或者

project/out/production/project

 

Web項目的話可以放在如下位置:

Webapp/WEB-INF/lib

Webapp/WEB-INF/classes

Appserver/lib

JRE/lib

 

快速上手

HanLP 幾乎所有的功能都可以通過工具類 HanLP 快捷調用,當你想不起來調用方法時,只需鍵入 HanLP. ,IDE應當會給出提示,並展示HanLP完善的文檔。

推薦用戶始終通過工具類 HanLP 調用,這麼做的好處是,將來 HanLP 升級後,用戶無需修改調用代碼。

所有Demo都位於 com.hankcs.demo 下。

 

第一個Demo:

System.out.println(HanLP.segment("你好,歡迎使用HanLP!"));

內存要求

1.HanLP 對詞典的數據結構進行了長期的優化,可以應對絕大多數場景。哪怕 HanLP 的詞典上百兆也無需擔心,因爲在內存中被精心壓縮過。

2.如果內存非常有限,請使用小詞典。 HanLP 默認使用大詞典,同時提供小詞典,請參考配置文件章節。

3.在一些句法分析場景中,需要加載幾百兆的模型。如果發生 java.lang.OutOfMemoryError ,則建議使用JVM option -Xms1g -Xmx1g -Xmn512m。

寫給正在編譯 HanLP 的開發者

1.如果你正在編譯運行從Github檢出的 HanLP 代碼,並且沒有下載data,那麼首次加載詞典/模型會發生一個 自動緩存 的過程。

2.自動緩存 的目的是爲了加速詞典載入速度,在下次載入時,緩存的詞典文件會帶來毫秒級的加載速度。由於詞典體積很大, 自動緩存 會耗費一些時間,請耐心等待。

3.自動緩存 緩存的不是明文詞典,而是雙數組Trie樹、DAWG、AhoCorasickDoubleArrayTrie等數據結構。

如果一切正常,您會得到類似於如下的輸出:

[你好/vl, ,/w, 歡迎/v, 使用/v, HanLP/nx, !/w]

如果出現了問題,一般是由路徑配置不對而引發的,請根據控制檯輸出的警告調整。比如:

核心詞典

/Users/hankcs/JavaProjects/HanLP/data/data/dictionary/CoreNatureDictionary.txt加載失敗

說明HanLP.properties中的root項配置不對,應當去掉後綴 data/,改爲:

root=/Users/hankcs/JavaProjects/HanLP/


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