java?使用HanLP?安裝入門詳細(xì)教程
HanLP是一系列模型與算法組成的NLP工具包,目標(biāo)是普及自然語言處理在生產(chǎn)環(huán)境中的應(yīng)用。HanLP具備功能完善、性能高效、架構(gòu)清晰、語料時(shí)新、可自定義的特點(diǎn)。
HanLP 是基于 Java開發(fā)的 NLP工具包,由一系列模型與算法組成,目標(biāo)是普及自然語言處理在生產(chǎn)環(huán)境中的應(yīng)用。而且 HanLP具備功能完善、性能高效、架構(gòu)清晰、語料時(shí)新、可自定義的特點(diǎn),因此十分好上手,下面看下java 使用HanLP 入門教程。
1. 安裝 HanLP
Maven 依賴
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.8.4</version> <!-- 最新版本請查看官網(wǎng) -->
</dependency>
注意:
portable版本內(nèi)置小型詞典,適合基礎(chǔ)任務(wù);若需完整功能,需下載完整數(shù)據(jù)包。
2. 基礎(chǔ)功能
(1) 分詞
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.common.Term;
public class BasicDemo {
public static void main(String[] args) {
String text = "你好,歡迎使用HanLP!這是一段測試文本。";
// 標(biāo)準(zhǔn)分詞
List<Term> termList = HanLP.segment(text);
System.out.println(termList);
// 輸出: [你好/vl, ,/w, 歡迎/v, 使用/v, HanLP/nx, !/w, 這是/r, 一段/m, 測試/vn, 文本/n, 。/w]
}
}(2) 詞性標(biāo)注
HanLP 的分詞結(jié)果已包含詞性(如 n=名詞,v=動(dòng)詞):
for (Term term : termList) {
System.out.println(term.word + " : " + term.nature);
}常用詞性標(biāo)記:
n:名詞v:動(dòng)詞w:標(biāo)點(diǎn)符號nx:外文單詞
3. 進(jìn)階功能
(1) 關(guān)鍵詞提取
import com.hankcs.hanlp.summary.TextRankKeyword; List<String> keywords = HanLP.extractKeyword(text, 5); // 提取前5個(gè)關(guān)鍵詞 System.out.println(keywords); // 輸出: [文本, 測試, HanLP, 歡迎, 使用]
(2) 命名實(shí)體識別(NER)
List<Term> termList = HanLP.segment("馬云在阿里巴巴工作。");
for (Term term : termList) {
if (term.nature.toString().startsWith("nr")) { // nr=人名
System.out.println("人名: " + term.word);
} else if (term.nature.toString().startsWith("ns")) { // ns=地名
System.out.println("地名: " + term.word);
}
}
// 輸出: 人名: 馬云 地名: 阿里巴巴
(3) 自定義詞典
// 方式1:臨時(shí)添加單詞
HanLP.Config.CustomDictionaryPath = new String[]{"data/dictionary/custom/CustomDictionary.txt"};
HanLP.Config.enableDebug();
// 方式2:動(dòng)態(tài)添加
CustomDictionary.add("量子計(jì)算", "n 1024");
CustomDictionary.insert("神經(jīng)網(wǎng)絡(luò)", "n 1024");
// 使用自定義詞典分詞
System.out.println(HanLP.segment("量子計(jì)算是未來趨勢"));
// 輸出: [量子計(jì)算/n, 是/v, 未來/t, 趨勢/n]4. 高級配置
(1) 切換分詞模式
// 極速詞典分詞(不標(biāo)注詞性) List<String> fastSegResult = HanLP.segmentFaster(text); // 標(biāo)準(zhǔn)分詞(帶詞性) List<Term> stdSegResult = HanLP.segment(text); // NLP分詞(高精度,需完整數(shù)據(jù)包) List<Term> nlpSegResult = HanLP.newSegment().enableNameRecognize(true).seg(text);
(2) 加載完整數(shù)據(jù)包
- 下載數(shù)據(jù)包并解壓。
- 配置
hanlp.properties:root=path/to/hanlp-data
5. 完整示例
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.common.Term;
import java.util.List;
public class HanLPFullDemo {
public static void main(String[] args) {
String text = "清華大學(xué)位于北京市海淀區(qū)。";
// 分詞 + 詞性標(biāo)注
List<Term> terms = HanLP.segment(text);
System.out.println("分詞結(jié)果: " + terms);
// 命名實(shí)體識別
terms = HanLP.newSegment().enablePlaceRecognize(true).seg(text);
for (Term term : terms) {
if (term.nature.toString().startsWith("ns")) {
System.out.println("地名: " + term.word);
}
}
// 關(guān)鍵詞提取
List<String> keywords = HanLP.extractKeyword(text, 3);
System.out.println("關(guān)鍵詞: " + keywords);
}
}輸出:
分詞結(jié)果: [清華大學(xué)/nt, 位于/v, 北京市/ns, 海淀區(qū)/ns, 。/w]
地名: 北京市
地名: 海淀區(qū)
關(guān)鍵詞: [海淀區(qū), 北京市, 清華大學(xué)]
6. 常見問題
- 詞典加載失敗:檢查
hanlp.properties中的root路徑是否正確。 - 內(nèi)存不足:使用
portable版本或增加 JVM 內(nèi)存:-Xms512m -Xmx1024m。 - 性能優(yōu)化:對長文本使用
HanLP.segmentFaster()。
官方資源
HanLP 功能強(qiáng)大且靈活,適合中文 NLP 的各種場景!
到此這篇關(guān)于java 使用HanLP 入門教程的文章就介紹到這了,更多相關(guān)java 使用hanlp內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC訪問controller報(bào)錯(cuò)404的解決辦法(總結(jié)超詳細(xì))
純注解配置SpringMVC程序,使用tomcat8.5.95版本啟動(dòng),能啟動(dòng)成功并且訪問index.jsp頁面,但是訪問/save時(shí)出現(xiàn)404無法訪問,本文給大家介紹了SpringMVC訪問controller報(bào)錯(cuò)404的解決辦法,文章總結(jié)的非常詳細(xì),需要的朋友可以參考下2024-05-05
三步輕松實(shí)現(xiàn)Java的SM2前端加密后端解密
SM2算法和RSA算法都是公鑰密碼算法,SM2算法是一種更先進(jìn)安全的算法,在我們國家商用密碼體系中被用來替換RSA算法,這篇文章主要給大家介紹了關(guān)于如何通過三步輕松實(shí)現(xiàn)Java的SM2前端加密后端解密的相關(guān)資料,需要的朋友可以參考下2024-01-01
一篇文章帶你學(xué)習(xí)Mybatis-Plus(新手入門)
這篇文章主要介紹了MyBatis-Plus 快速入門案例(小白教程),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
SpringBoot實(shí)現(xiàn)阿里云短信接口對接的示例代碼
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)阿里云短信接口對接的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
idea報(bào)錯(cuò):程序包org.springframework.web.bind.annotation不存在
在用本地的maven倉庫的時(shí)候會org.springframework.web.bind.annotation不存在的錯(cuò)誤,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解下2023-08-08

