本文共 782字,閱讀大約須要 2分鐘 !php
HanLP 是基於 Java開發的 NLP工具包,由一系列模型與算法組成,目標是普及天然語言處理在生產環境中的應用。並且 HanLP具有功能完善、性能高效、架構清晰、語料時新、可自定義的特色,所以十分好上手,本文就結合 Spring Boot來將 HanLP用起來!java
注: 本文首發於 My Personal Blog:CodeSheep·程序羊,歡迎光臨 小站git
本文內容腦圖以下:github
因爲 HanLP庫將數據與代碼分離,所以咱們須要分別下載所需數據和 jar包:算法
建立一個普通的 Spring Boot工程,不贅述spring
引入 HanLP數據 和 配置瀏覽器
下載完成之後,首先解壓 hanlp-release.zip
壓縮包,而後將解壓出的 HanLP的 jar包引入 Spring Boot工程,而後須要來放置 HanLP所需配置和數據:架構
將解壓後 hanlp-release.zip
壓縮包中的 hanlp.properties
配置文件置於項目的 resources
資源目錄下機器學習
而後解壓 data.zip
壓縮包,將解壓出的 data目錄一樣至於 resources
目錄下( data 中的數據包很重要,是 HanLP工做所需的詞典和模型 )ide
HanLP 提供了 IO適配器,用戶能夠實現其提供的 com.hankcs.hanlp.corpus.io.IIOAdapter
接口以在不一樣的平臺(HDFS、Redis等)上運行HanLP,默認的 IO適配器 IOAdapter = com.hankcs.hanlp.corpus.io.FileIOAdapter
是基於普通文件系統的。
接下來咱們重寫一下 IOAdapter
類,使用讀寫靜態資源文件的方法來讀取HanLP所需的詞典和模型數據( 即resources目錄下剛放置的 data目錄 )
public class ResourceFileIoAdapter implements IIOAdapter { @Override public InputStream open(String path) throws IOException { ClassPathResource resource = new ClassPathResource( path ); InputStream is = new FileInputStream( resource.getFile() ); return is; } @Override public OutputStream create(String path) throws IOException { ClassPathResource resource = new ClassPathResource( path ); OutputStream os = new FileOutputStream( resource.getFile() ); return os; } }
而後咱們配置一下 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的接口來獲取詳情
@Test public void testSuggest() { Suggester suggester = new Suggester(); String[] titleArray = ( "威廉王子發表演說 呼籲保護野生動物\n" + "《時代》年度人物最終入圍名單出爐 普京馬雲入選\n" + "「黑格比」橫掃菲:菲吸收「海燕」經驗及早疏散\n" + "日本保密法將正式生效 日媒指其損害國民知情權\n" + "人工智能現在是很是火熱的一門技術」" ).split("\\n"); for (String title : titleArray) { suggester.addSentence(title); } System.out.println(suggester.suggest("機器學習", 1)); // 語義 System.out.println(suggester.suggest("危機公共", 1)); // 字符 System.out.println(suggester.suggest("mayun", 1)); // 拼音 }
三個關鍵字的語句推薦結果爲:
機器學習 → [人工智能現在是很是火熱的一門技術」] 危機公共 → [威廉王子發表演說 呼籲保護野生動物] 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目錄下的模型、字典等數據來知足特定需求,所以仍是十分強大的。
因爲能力有限,如有錯誤或者不當之處,還請你們批評指正,一塊兒學習交流!