HanLP介紹:http://hanlp.linrunsoft.com/?
github地址:https://github.com/hankcs/HanLP?
說明:使用hanlp實(shí)現(xiàn)分詞、智能推薦、關(guān)鍵字提取、摘要等,更多功能參考官網(wǎng)?
項(xiàng)目結(jié)構(gòu)
?
該項(xiàng)目中,.jar和data文件夾和.properties需要從官網(wǎng)/github下載,data文件夾下載
項(xiàng)目配置
修改hanlp.properties:
#/Test/src/hanlp.properties:
#本配置文件中的路徑的根目錄
#root=E:/SourceCode/eclipsePlace/Test
root=./
......
配置文件的作用是告訴HanLP數(shù)據(jù)包即data文件夾的位置,root的值為data文件夾的父目錄,可以使用絕對路徑或相對路徑。
測試代碼
package com.test;
import java.util.List;
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.common.Term;
import com.hankcs.hanlp.suggest.Suggester;
import com.hankcs.hanlp.tokenizer.NLPTokenizer;
public class MainTest {
? ? public static void main(String[] args) {
? ? ? ? System.out.println("首次編譯運(yùn)行時(shí),HanLP會(huì)自動(dòng)構(gòu)建詞典緩存,請稍候…… ");
? ? ? ? //第一次運(yùn)行會(huì)有文件找不到的錯(cuò)誤但不影響運(yùn)行,緩存完成后就不會(huì)再有了
? ? ? ? System.out.println("標(biāo)準(zhǔn)分詞:");
? ? ? ? System.out.println(HanLP.segment("你好,歡迎使用HanLP!"));
? ? ? ? System.out.println(" ");
? ? ? ? List
? ? ? ? System.out.println("NLP分詞:");
? ? ? ? System.out.println(termList);
? ? ? ? System.out.println(" ");
? ? ? ? System.out.println("智能推薦:");
? ? ? ? getSegement();
? ? ? ? System.out.println(" ");
? ? ? ? System.out.println("關(guān)鍵字提?。?);
? ? ? ? getMainIdea();
? ? ? ? System.out.println(" ");
? ? ? ? System.out.println("自動(dòng)摘要:");
? ? ? ? getZhaiYao();
? ? ? ? System.out.println(" ");
? ? ? ? System.out.println("短語提取:");
? ? ? ? getDuanYu();
? ? ? ? System.out.println(" ");
? ? }
? ? /**
? ? ?* 智能推薦部分
? ? ?*/
? ? public static void getSegement() {
? ? ? ? Suggester suggester = new Suggester();
? ? ? ? String[] titleArray = ("威廉王子發(fā)表演說 呼吁保護(hù)野生動(dòng)物 " + "《時(shí)代》年度人物最終入圍名單出爐 普京馬云入選 " + "“黑格比”橫掃菲:菲吸取“海燕”經(jīng)驗(yàn)及早疏散 "
? ? ? ? ? ? ? ? + "日本保密法將正式生效 日媒指其損害國民知情權(quán) " + "英報(bào)告說空氣污染帶來“公共健康危機(jī)”").split("\n");
? ? ? ? for (String title : titleArray) {
? ? ? ? ? ? suggester.addSentence(title);
? ? ? ? }
? ? ? ? System.out.println(suggester.suggest("發(fā)言", 1)); // 語義
? ? ? ? System.out.println(suggester.suggest("危機(jī)公共", 1)); // 字符
? ? ? ? System.out.println(suggester.suggest("mayun", 1)); // 拼音
? ? }
? ? /**
? ? ?* 關(guān)鍵字提取
? ? ?*/
? ? public static void getMainIdea() {
? ? ? ? String content = "程序員(英文Programmer)是從事程序開發(fā)、維護(hù)的專業(yè)人員。一般將程序員分為程序設(shè)計(jì)人員和程序編碼人員,但兩者的界限并不非常清楚,特別是在中國。軟件從業(yè)人員分為初級(jí)程序員、高級(jí)程序員、系統(tǒng)分析員和項(xiàng)目經(jīng)理四大類。";
? ? ? ? List
? ? ? ? System.out.println(keywordList);
? ? }
? ? /**
? ? ?* 自動(dòng)摘要
? ? ?*/
? ? public static void getZhaiYao() {
? ? ? ? String document = "算法可大致分為基本算法、數(shù)據(jù)結(jié)構(gòu)的算法、數(shù)論算法、計(jì)算幾何的算法、圖的算法、動(dòng)態(tài)規(guī)劃以及數(shù)值分析、加密算法、排序算法、檢索算法、隨機(jī)化算法、并行算法、厄米變形模型、隨機(jī)森林算法。 "
? ? ? ? ? ? ? ? + "算法可以寬泛的分為三類, " + "一,有限的確定性算法,這類算法在有限的一段時(shí)間內(nèi)終止。他們可能要花很長時(shí)間來執(zhí)行指定的任務(wù),但仍將在一定的時(shí)間內(nèi)終止。這類算法得出的結(jié)果常取決于輸入值。 "
? ? ? ? ? ? ? ? + "二,有限的非確定算法,這類算法在有限的時(shí)間內(nèi)終止。然而,對于一個(gè)(或一些)給定的數(shù)值,算法的結(jié)果并不是唯一的或確定的。 "
? ? ? ? ? ? ? ? + "三,無限的算法,是那些由于沒有定義終止定義條件,或定義的條件無法由輸入的數(shù)據(jù)滿足而不終止運(yùn)行的算法。通常,無限算法的產(chǎn)生是由于未能確定的定義終止條件。";
? ? ? ? List
? ? ? ? System.out.println(sentenceList);
? ? }
? ? /**
? ? ?* 短語提取
? ? ?*/
? ? public static void getDuanYu() {
? ? ? ? String text = "算法工程師 "
? ? ? ? ? ? ? ? + "算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時(shí)間內(nèi)獲得所要求的輸出。如果一個(gè)算法有缺陷,或不適合于某個(gè)問題,執(zhí)行這個(gè)算法將不會(huì)解決這個(gè)問題。不同的算法可能用不同的時(shí)間、空間或效率來完成同樣的任務(wù)。一個(gè)算法的優(yōu)劣可以用空間復(fù)雜度與時(shí)間復(fù)雜度來衡量。算法工程師就是利用算法處理事物的人。 "
? ? ? ? ? ? ? ? + " " + "1職位簡介 " + "算法工程師是一個(gè)非常高端的職位; " + "專業(yè)要求:計(jì)算機(jī)、電子、通信、數(shù)學(xué)等相關(guān)專業(yè); "
? ? ? ? ? ? ? ? + "學(xué)歷要求:本科及其以上的學(xué)歷,大多數(shù)是碩士學(xué)歷及其以上; " + "語言要求:英語要求是熟練,基本上能閱讀國外專業(yè)書刊; "
? ? ? ? ? ? ? ? + "必須掌握計(jì)算機(jī)相關(guān)知識(shí),熟練使用仿真工具M(jìn)ATLAB等,必須會(huì)一門編程語言。 " + " " + "2研究方向 "
? ? ? ? ? ? ? ? + "視頻算法工程師、圖像處理算法工程師、音頻算法工程師 通信基帶算法工程師 " + " " + "3目前國內(nèi)外狀況 "
? ? ? ? ? ? ? ? + "目前國內(nèi)從事算法研究的工程師不少,但是高級(jí)算法工程師卻很少,是一個(gè)非常緊缺的專業(yè)工程師。算法工程師根據(jù)研究領(lǐng)域來分主要有音頻/視頻算法處理、圖像技術(shù)方面的二維信息算法處理和通信物理層、雷達(dá)信號(hào)處理、生物醫(yī)學(xué)信號(hào)處理等領(lǐng)域的一維信息算法處理。 "
? ? ? ? ? ? ? ? + "在計(jì)算機(jī)音視頻和圖形圖像技術(shù)等二維信息算法處理方面目前比較先進(jìn)的視頻處理算法:機(jī)器視覺成為此類算法研究的核心;另外還有2D轉(zhuǎn)3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),運(yùn)動(dòng)估計(jì)運(yùn)動(dòng)補(bǔ)償算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),縮放算法(scaling),銳化處理算法(Sharpness),超分辨率算法(Super Resolution),手勢識(shí)別(gesture recognition),人臉識(shí)別(face recognition)。 "
? ? ? ? ? ? ? ? + "在通信物理層等一維信息領(lǐng)域目前常用的算法:無線領(lǐng)域的RRM、RTT,傳送領(lǐng)域的調(diào)制解調(diào)、信道均衡、信號(hào)檢測、網(wǎng)絡(luò)優(yōu)化、信號(hào)分解等。 " + "另外數(shù)據(jù)挖掘、互聯(lián)網(wǎng)搜索算法也成為當(dāng)今的熱門方向。 "
? ? ? ? ? ? ? ? + "算法工程師逐漸往人工智能方向發(fā)展。";
? ? ? ? List
? ? ? ? System.out.println(phraseList);
? ? }
}
運(yùn)行結(jié)果

---------------------?
作者:lsh呵呵?
來源:CSDN?
原文:https://blog.csdn.net/nima1994/article/details/72819973?utm_source=copy?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
電子發(fā)燒友App































評論