Spring Boot中對自然語言處理工具包hanlp的呼叫詳解

adnb34g發表於2018-11-21

概 述

HanLP 是基於 Java 開發的 NLP 工具包,由一系列模型與演算法組成,目標是普及自然語言處理在生產環境中的應用。而且 HanLP 具備功能完善、效能高效、架構清晰、語料時新、可自定義的特點,因此十分好上手,本文就結合 Spring Boot 來將 HanLP 用起來!

下載 HanLP 資料和程式

由於 HanLP 庫將資料與程式碼分離,因此我們需要分別下載所需資料和 jar 包:

1 所需 data 資料包下載地址為 data.zip

2 所需 jar 包下載地址為 hanlp-release.zip

工程搭建

1 建立一個普通的 Spring Boot 工程,不贅述

2 引入 HanLP 資料 和 配置

下載完成以後,首先解壓 hanlp-release.zip 壓縮包,然後將解壓出的 HanLP jar 包引入 Spring Boot 工程,然後需要來放置 HanLP 所需配置和資料:

1 將解壓後 hanlp-release.zip 壓縮包中的 hanlp.properties 配置檔案置於專案的 resources 資源目錄下

2 然後解壓 data.zip 壓縮包,將解壓出的 data 目錄同樣至於 resources 目錄下( data 中的資料包很重要,是 HanLP 工作所需的詞典和模型 )

建立 IO 介面卡

HanLP 提供了 IO 介面卡,使用者可以實現其提供的 com.hankcs.hanlp.corpus.io.IIOAdapter 介面以在不同的平臺( HDFS Redis 等)上執行 HanLP ,預設的 IO 介面卡 IOAdapter = com.hankcs.hanlp.corpus.io.FileIOAdapter 是基於普通檔案系統的。

接下來我們重寫一下 IOAdapter 類,使用讀寫靜態資原始檔的方法來讀取 HanLP 所需的詞典和模型資料( 即 resources 目錄下剛放置的 data 目錄 )

 

然後我們配置一下 HanLP的配置檔案hanlp.properties,有兩處需要改為以下配置:

root=   // 我們不再需要這種指定 data 目錄的方式

IOAdapter=cn.codesheep.springbt_hanlp_userdefine.config.ResourceFileIoAdapter // 指定自定義的 IOAdapter

好,現在專案就可以工作了,我們接下來寫幾個測試用例測試體驗一把

實驗測試

隨便寫幾個例子來感受一番:

·  分詞功能

@Test

public void testSegment() {

    System.out.println( HanLP.segment("www.codesheep.cn 是一個技術部落格! ") );

}

分詞結果如下:

[www/nx, ./w, codesheep/nx, ./w, cn/nx, /vshi, 一個 /mq, 技術 /n, 部落格 /n, /w]

每個詞段後的 /nx /w 之類的是 HanLP 定義的詞性,可以去看 HanLP 的介面來獲取詳情

·  文字推薦

 

三個關鍵字的語句推薦結果為:

機器學習  →  [ 人工智慧如今是非常火熱的一門技術 ”]

危機公共  →  [ 威廉王子發表演說 呼籲保護野生動物 ]mayun     →  [ 《時代》年度人物最終入圍名單出爐 普京馬雲入選 ]

·  關鍵字提取

@Test

public void testKeyExtract() {

String content = "蘋果公司(Apple Inc. )是美國一家高科技公司。由史蒂夫·賈伯斯、斯蒂夫·沃茲尼亞克和羅·韋恩(Ron Wayne)等人於1976年4月1日創立," + "並命名為美國蘋果電腦公司(Apple Computer Inc. ),2007年1月9日更名為蘋果公司,總部位於加利福尼亞州的庫比蒂諾。"; List<String> keywordList = HanLP.extractKeyword(content, 5); System.out.println(keywordList);

提取結果為:

[ 公司 , 蘋果 , 美國 , Inc, Apple]

體驗一番我們發現其自帶的模型、字典等資料給出的實驗效果已經是非常不錯了,而且使用者還可以自定義或修改 data 目錄下的模型、字典等資料來滿足特定需求,因此還是十分強大的。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2220909/,如需轉載,請註明出處,否則將追究法律責任。

相關文章