自然语言处理hanlp的入门基础
?
此文整理的基礎(chǔ)是建立在hanlp較早版本的基礎(chǔ)上的,雖然hanlp的最新1.7版本已經(jīng)發(fā)布,但對(duì)于入門來(lái)說(shuō)差別不大!分享一篇比較早的“舊文”給需要的朋友!
安裝HanLP
HanLP將數(shù)據(jù)與程序分離,給予用戶自定義的自由。 HanLP由三部分組成:HanLP = .jar + data + .properties ,請(qǐng)前往 項(xiàng)目主頁(yè) 下載這三個(gè)部分。
1、下載jar
放入classpath并添加依賴。
2、下載數(shù)據(jù)集
HanLP 中的數(shù)據(jù)分為 詞典 和 模型 ,其中 詞典 是詞法分析必需的, 模型 是句法分析必需的,data目錄結(jié)構(gòu)如下:
data
│
├─dictionary
└─model
用戶可以自行增刪替換,如果不需要句法分析功能的話,隨時(shí)可以刪除model文件夾。
可選數(shù)據(jù)集
?
3、配置文件
示例配置文件:
#本配置文件中的路徑的根目錄,根目錄+其他路徑=絕對(duì)路徑
#Windows用戶請(qǐng)注意,路徑分隔符統(tǒng)一使用/
root=E:/JavaProjects/HanLP/
#核心詞典路徑
CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt
#2元語(yǔ)法詞典路徑
BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt
#停用詞詞典路徑
CoreStopWordDictionaryPath=data/dictionary/stopwords.txt
#同義詞詞典路徑
CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt
#人名詞典路徑
PersonDictionaryPath=data/dictionary/person/nr.txt
#人名詞典轉(zhuǎn)移矩陣路徑
PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt
#繁簡(jiǎn)詞典路徑
TraditionalChineseDictionaryPath=data/dictionary/tc/TraditionalChinese.txt
#自定義詞典路徑,用;隔開多個(gè)自定義詞典,空格開頭表示在同一個(gè)目錄,使用“文件名 詞性”形式則表示這個(gè)詞典的詞性默認(rèn)是該詞性。優(yōu)先級(jí)遞減。
#另外data/dictionary/custom/CustomDictionary.txt是個(gè)高質(zhì)量的詞庫(kù),請(qǐng)不要?jiǎng)h除
CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 現(xiàn)代漢語(yǔ)補(bǔ)充詞庫(kù).txt; 全國(guó)地名大全.txt ns; 人名詞典.txt; 機(jī)構(gòu)名詞典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf
?
配置文件的作用是告訴HanLP數(shù)據(jù)包的位置,只需修改第一行
root=usr/home/HanLP/
?
為data的 父目錄 即可,比如data目錄是 /Users/hankcs/Documents/data ,那么 root=/Users/hankcs/Documents/ 。
?
l??如果選用mini數(shù)據(jù)包的話,則需要修改配置文件:
CoreDictionaryPath=data/dictionary/CoreNatureDictionary.mini.txt
BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.mini.txt
最后將HanLP.properties放入classpath即可:
?
對(duì)于Eclipse來(lái)講
project/bin
對(duì)于IntelliJ IDEA來(lái)講
project/target/classes
或者
project/out/production/project
?
Web項(xiàng)目的話可以放在如下位置:
Webapp/WEB-INF/lib
Webapp/WEB-INF/classes
Appserver/lib
JRE/lib
?
快速上手
HanLP 幾乎所有的功能都可以通過(guò)工具類 HanLP 快捷調(diào)用,當(dāng)你想不起來(lái)調(diào)用方法時(shí),只需鍵入 HanLP. ,IDE應(yīng)當(dāng)會(huì)給出提示,并展示HanLP完善的文檔。
推薦用戶始終通過(guò)工具類 HanLP 調(diào)用,這么做的好處是,將來(lái) HanLP 升級(jí)后,用戶無(wú)需修改調(diào)用代碼。
所有Demo都位于 com.hankcs.demo 下。
?
第一個(gè)Demo:
System.out.println(HanLP.segment("你好,歡迎使用HanLP!"));
l??內(nèi)存要求
1.HanLP 對(duì)詞典的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了長(zhǎng)期的優(yōu)化,可以應(yīng)對(duì)絕大多數(shù)場(chǎng)景。哪怕 HanLP 的詞典上百兆也無(wú)需擔(dān)心,因?yàn)樵趦?nèi)存中被精心壓縮過(guò)。
2.如果內(nèi)存非常有限,請(qǐng)使用小詞典。 HanLP 默認(rèn)使用大詞典,同時(shí)提供小詞典,請(qǐng)參考配置文件章節(jié)。
3.在一些句法分析場(chǎng)景中,需要加載幾百兆的模型。如果發(fā)生 java.lang.OutOfMemoryError ,則建議使用JVM option -Xms1g -Xmx1g -Xmn512m。
l??寫給正在編譯 HanLP 的開發(fā)者
1.如果你正在編譯運(yùn)行從Github檢出的 HanLP 代碼,并且沒(méi)有下載data,那么首次加載詞典/模型會(huì)發(fā)生一個(gè) 自動(dòng)緩存 的過(guò)程。
2.自動(dòng)緩存 的目的是為了加速詞典載入速度,在下次載入時(shí),緩存的詞典文件會(huì)帶來(lái)毫秒級(jí)的加載速度。由于詞典體積很大, 自動(dòng)緩存 會(huì)耗費(fèi)一些時(shí)間,請(qǐng)耐心等待。
3.自動(dòng)緩存 緩存的不是明文詞典,而是雙數(shù)組Trie樹、DAWG、AhoCorasickDoubleArrayTrie等數(shù)據(jù)結(jié)構(gòu)。
如果一切正常,您會(huì)得到類似于如下的輸出:
[你好/vl, ,/w, 歡迎/v, 使用/v, HanLP/nx, !/w]
如果出現(xiàn)了問(wèn)題,一般是由路徑配置不對(duì)而引發(fā)的,請(qǐng)根據(jù)控制臺(tái)輸出的警告調(diào)整。比如:
核心詞典
/Users/hankcs/JavaProjects/HanLP/data/data/dictionary/CoreNatureDictionary.txt加載失敗
說(shuō)明HanLP.properties中的root項(xiàng)配置不對(duì),應(yīng)當(dāng)去掉后綴 data/,改為:
root=/Users/hankcs/JavaProjects/HanLP/
總結(jié)
以上是生活随笔為你收集整理的自然语言处理hanlp的入门基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: BZOJ2115:[WC2011] Xo
- 下一篇: 俄罗斯“指尖旋风”席卷南京