您好,登錄后才能下訂單哦!
這篇文章主要介紹了HanLP自然語言處理包如何安裝與使用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
HanLP是由一系列模型與算法組成的Java工具包,目標是促進自然語言處理在生產環境中的應用。HanLP具備功能完善、性能高效、架構清晰、語料時新、可自定義的特點。
HanLP能提供以下功能:關鍵詞提取、短語提取、繁體轉簡體、簡體轉繁體、分詞、詞性標注、拼音轉換、自動摘要、命名實體識別(地名、機構名等)、文本推薦等功能,詳細請參見以下鏈接:http://www.hankcs.com/nlp/hanlp.html
HanLP下載地址:
https://github.com/hankcs/HanLP/releases,HanLP項目主頁:
https://github.com/hankcs/HanLP
1、HanLP安裝
hanlp是由jar包、properties文件和data數據模型組成,因此,在安裝時,這三種文件都應該有。可以通過建立java工程即可運行。
hanlp.properties文件中描述了不同詞典的相對路徑以及root根目錄,因此,可以在此文件中修改其路徑。
hanlp-1.3.4.jar包中包含了各種算法及提取方法的api,大部分方法都是靜態的,可以通過HanLP直接進行調用,因此,使用非常方便。
data文件夾中包含了dictionary和model文件夾,dictionary中主要是各種類型的詞典,model主要是分析模型,hanlp api中的算法需要使用model中的數據模型。
2、HanLP的使用
普通java工程目錄如下所示:
3、HanLP的具體使用
例如:對excel中的聊天記錄字段進行熱點詞的提取,計算并排序,功能如下所示
package com.run.hanlp.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.common.Term;
import com.hankcs.hanlp.suggest.Suggester;
import com.hankcs.hanlp.summary.TextRankKeyword;
import com.hankcs.hanlp.tokenizer.NLPTokenizer;
import com.hankcs.hanlp.tokenizer.StandardTokenizer;
import com.run.util.ExcelUtil;
public class HanlpTest {
public static final Logger log = Logger.getLogger(HanlpTest.class);
public static void main(String[] args) {
log.info("關鍵詞提取:");
HanlpTest.getWordAndFrequency();
}
/**
* 獲取所有關鍵詞和頻率
*/
public static void getWordAndFrequency() {
// String content =
// "程序員(英文Programmer)是從事程序開發、維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限并不非常清楚,特別是在中國。軟件從業人員分為初級程序員、高級程序員、系統分析員和項目經理四大類。";
List<Map<String, Integer>> content = ExcelUtil.readExcelByField("i:/rundata/excelinput",5000,5);
Map<String, Integer> allKeyWords=new HashMap<>();
for(int i=0;i<content.size();i++){
Map<String, Integer> oneMap=content.get(i);
for(String str:oneMap.keySet()){
int count = oneMap.get(str);
CombinerKeyNum(str,count,allKeyWords);
}
}
List<Map.Entry<String,Integer>> sortedMap=sortMapByValue(allKeyWords);
log.info(sortedMap);
}
/**
*
* @param allKeyWords 需要進行排序的map
* @return 返回排序后的list
*/
public static List<Map.Entry<String,Integer>> sortMapByValue(Map<String,Integer> allKeyWords){
List<Map.Entry<String,Integer>> sortList=new ArrayList<>(allKeyWords.entrySet());
Collections.sort(sortList, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return (o2.getValue() - o1.getValue());
}
});
return sortList;
}
/**
*
* @param key 關鍵詞變量
* @param value 關鍵詞詞頻變量
* @param allKeyWords 存放關鍵詞和詞頻的map
*/
public static void CombinerKeyNum(String key,int value,Map<String,Integer> allKeyWords){
if(allKeyWords.containsKey(key)){
int count=allKeyWords.get(key);
count+=value;
allKeyWords.put(key, count);
}else{
allKeyWords.put(key, value);
}
}
/**
*
* @param content 需要提取關鍵詞的字符串變量
* @return 返回關鍵詞以及關鍵詞詞頻數的map
*
*/
public static HashMap<String, Integer> getKeyWordMap(String content) {
List<Term> list = StandardTokenizer.SEGMENT.seg(content);
TextRankKeyword textmap = new TextRankKeyword();
Map<String, Float> map = textmap.getTermAndRank(content);
Map<String, Integer> mapCount = new HashMap<>();
for (String str : map.keySet()) {
String keyStr = str;
int count = 0;
for (int i = 0; i < list.size(); i++) {
if (keyStr.equals(list.get(i).word)) {
count++;
}
}
mapCount.put(keyStr, Integer.valueOf(count));
}
// log.info(mapCount);
return (HashMap<String, Integer>) mapCount;
}
}
運行之后,結果如下:
由此可見,可以看見從excel中提取出來的熱點詞匯及其頻率。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“HanLP自然語言處理包如何安裝與使用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。