Hanlp在java中文分詞中的使用介紹
專案結構
該專案中, .jar 和 data 資料夾和 .properties 需要從官網 /github 下載, data 資料夾下載
專案配置
修改 hanlp.properties:
1 #/Test/src/hanlp.properties:
2 # 本配置檔案中的路徑的根目錄
3 #root=E:/SourceCode/eclipsePlace/Test
4 root=./
5 ......
配置檔案的作用是告訴 HanLP 資料包即 data 資料夾的位置, root 的值為 data 資料夾的父目錄,可以使用絕對路徑或相對路徑。
測試程式碼
1 package com.test;
2
3 import java.util.List;
4
5 import com.hankcs.hanlp.HanLP;
6 import com.hankcs.hanlp.seg.common.Term;
7 import com.hankcs.hanlp.suggest.Suggester;
8 import com.hankcs.hanlp.tokenizer.NLPTokenizer;
9
10 public class MainTest {
11 public static void main(String[] args) {
12 System.out.println(" 首次編譯執行時, HanLP 會自動構建詞典快取,請稍候…… \n");
13 // 第一次執行會有檔案找不到的錯誤但不影響執行,快取完成後就不會再有了
14 System.out.println(" 標準分詞: ");
15 System.out.println(HanLP.segment(" 你好,歡迎使用 HanLP ! "));
16 System.out.println("\n");
17
18 List<Term> termList = NLPTokenizer.segment(" 中國科學院計算技術研究所的宗成慶教授正在教授自然語言處理課程 ");
19 System.out.println("NLP 分詞: ");
20 System.out.println(termList);
21 System.out.println("\n");
22
23 System.out.println(" 智慧推薦: ");
24 getSegement();
25 System.out.println("\n");
26
27 System.out.println(" 關鍵字提取: ");
28 getMainIdea();
29 System.out.println("\n");
30
31 System.out.println(" 自動摘要: ");
32 getZhaiYao();
33 System.out.println("\n");
34
35 System.out.println(" 短語提取: ");
36 getDuanYu();
37 System.out.println("\n");
38 }
39
40 /**
41 * 智慧推薦部分
42 */
43 public static void getSegement() {
44 Suggester suggester = new Suggester();
45 String[] titleArray = (" 威廉王子發表演說 呼籲保護野生動物 \n" + " 《時代》年度人物最終入圍名單出爐 普京馬雲入選 \n" + " “黑格比”橫掃菲:菲吸取“海燕”經驗及早疏散 \n"
46 + " 日本保密法將正式生效 日媒指其損害國民知情權 \n" + " 英報告說空氣汙染帶來“公共健康危機” ").split("\\n");
47 for (String title : titleArray) {
48 suggester.addSentence(title);
49 }
50 System.out.println(suggester.suggest(" 發言 ", 1)); // 語義
51 System.out.println(suggester.suggest(" 危機公共 ", 1)); // 字元
52 System.out.println(suggester.suggest("mayun", 1)); // 拼音
53 }
54
55 /**
56 * 關鍵字提取
57 */
58 public static void getMainIdea() {
59 String content = " 程式設計師 ( 英文 Programmer) 是從事程式開發、維護的專業人員。一般將程式設計師分為程式設計人員和程式編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程式設計師、高階程式設計師、系統分析員和專案經理四大類。 ";
60 List<String> keywordList = HanLP.extractKeyword(content, 5);
62 System.out.println(keywordList);
63 }
64
65 /**
66 * 自動摘要
67 */
68 public static void getZhaiYao() {
69 String document = " 演算法可大致分為基本演算法、資料結構的演算法、數論演算法、計算幾何的演算法、圖的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法、厄米變形模型、隨機森林演算法。 \n"
70 + " 演算法可以寬泛的分為三類, \n" + " 一,有限的確定性演算法,這類演算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類演算法得出的結果常取決於輸入值。 \n"
71 + " 二,有限的非確定演算法,這類演算法在有限的時間內終止。而,對於一個(或一些)給定的數值,演算法的結果並不是唯一的或確定的。 \n"
72 + " 三,無限的演算法,是那些由於沒有定義終止定義條件,或定義的條件無法由輸入的資料滿足而不終止執行的演算法。通常,無限演算法的產生是由於未能確定的定義終止條件。 ";
73 List<String> sentenceList = HanLP.extractSummary(document, 3);
74 System.out.println(sentenceList);
75 }
76
77 /**
78 * 短語提取
79 */
80 public static void getDuanYu() {
81 String text = " 演算法工程師 \n"
82 + " 演算法( Algorithm )是一系列解決問題的清晰指令,也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。演算法工程師就是利用演算法處理事物的人。 \n"
83 + "\n" + "1 職位簡介 \n" + " 演算法工程師是一個非常高階的職位; \n" + " 專業要求:計算機、電子、通訊、數學等相關專業; \n"
84 + " 學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上; \n" + " 語言要求:英語要求是熟練,基本上能閱讀國外專業書刊; \n"
85 + " 必須掌握計算機相關知識,熟練使用模擬工具 MATLAB 等,必須會一門程式語言。 \n" + "\n" + "2 研究方向 \n"
86 + " 視訊演算法工程師、影像處理演算法工程師、音訊演算法工程師 通訊基帶演算法工程師 \n" + "\n" + "3 目前國內外狀況 \n"
87 + " 目前國內從事演算法研究的工程師不少,但是高階演算法工程師卻很少,是一個非常緊缺的專業工程師。演算法工程師根據研究領域來分主要有音訊 / 視訊演算法處理、影像技術方面的二維資訊演算法處理和通訊物理層、雷達訊號處理、生物醫學訊號處理等領域的一維資訊演算法處理。 \n"
88 + " 在計算機音視訊和圖形影像技術等二維資訊演算法處理方面目前比較先進的視訊處理演算法:機器視覺成為此類演算法研究的核心;另外還有 2D 轉 3D 演算法 (2D-to-3D conversion) ,去隔行演算法 (de-interlacing) ,運動估計運動補償演算法 (Motion estimation/Motion Compensation) ,去噪演算法 (Noise Reduction) ,縮放演算法 (scaling) ,銳化處理演算法 (Sharpness) ,超解析度演算法 (Super Resolution), 手勢識別 (gesture recognition), 人臉識別 (face recognition) 。 \n"
89 + " 在通訊物理層等一維資訊領域目前常用的演算法:無線領域的 RRM 、 RTT ,傳送領域的調製解調、通道均衡、訊號檢測、網路優化、訊號分解等。 \n" + " 另外資料探勘、網際網路搜尋演算法也成為當今的熱門方向。 \n"
90 + " 演算法工程師逐漸往人工智慧方向發展。 ";
91 List<String> phraseList = HanLP.extractPhrase(text, 10);
92 System.out.println(phraseList);
93 }
94 }
執行結果
轉載 自 lsh呵呵
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2222230/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java分詞工具hanlp介紹Java分詞HanLP
- HanLP分類模組的分詞器介紹HanLP分詞
- Hanlp在ubuntu中的使用方法介紹HanLPUbuntu
- 中文分詞原理及常用Python中文分詞庫介紹中文分詞Python
- HanLP中文分詞Lucene外掛HanLP中文分詞
- 分詞工具Hanlp基於感知機的中文分詞框架HanLP中文分詞框架
- HanLP分詞工具中的ViterbiSegment分詞流程HanLP分詞Viterbi
- Hanlp中使用純JAVA實現CRF分詞HanLPJavaCRF分詞
- 基於 HanLP 的 ES 中文分詞外掛HanLP中文分詞
- 自然語言處理工具中的中文分詞器介紹自然語言處理中文分詞
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- 中文分詞演算法工具hanlp原始碼解析中文分詞演算法HanLP原始碼
- Spring MVCD框架中呼叫HanLP分詞的方法SpringMVC框架HanLP分詞
- Python:Python 中 jieba 庫的使用(中文分詞)PythonJieba中文分詞
- Elasticsearch整合HanLP分詞器ElasticsearchHanLP分詞
- Hanlp分詞1.7版本在Spark中分散式使用記錄HanLP分詞Spark分散式
- Spark中分散式使用HanLP(1.7.0)分詞示例Spark分散式HanLP分詞
- hanlp原始碼解析之中文分詞演算法詳解HanLP原始碼中文分詞演算法
- hanlp中文智慧分詞自動識別文字提取例項HanLP分詞
- Hanlp等七種優秀的開源中文分詞庫推薦HanLP中文分詞
- HanLP-實詞分詞器詳解HanLP分詞
- MapReduce實現與自定義詞典檔案基於hanLP的中文分詞詳解HanLP中文分詞
- Hanlp分詞例項:Java實現TFIDF演算法HanLP分詞Java演算法
- pyhanlp 中文詞性標註與分詞簡介HanLP詞性標註分詞
- solr8.6.2 客戶端介面介紹及配置中文分詞器Solr客戶端中文分詞
- 基於hanlp的es分詞外掛HanLP分詞
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- NLP入門學習中關於分詞庫HanLP匯入使用教程分詞HanLP
- HanLP-停用詞表的使用示例HanLP
- Ansj與hanlp分詞工具對比HanLP分詞
- python呼叫hanlp分詞包手記PythonHanLP分詞
- 空間分析:4-1.分詞模型hanLP簡介與安裝分詞模型HanLP
- Android環境下hanlp漢字轉拼音功能的使用介紹AndroidHanLP
- HanLP分詞命名實體提取詳解HanLP分詞
- hanlp新增自定義字典的步驟介紹HanLP
- Java Selenide 介紹&使用JavaIDE
- 中文地址智慧分詞演算法-Java版分詞演算法Java
- Java中文分片語件 - word分詞(skycto JEEditor)Java分詞