溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

HanLP自然語言處理包如何安裝與使用

發(fā)布時(shí)間:2021-11-11 13:52:57 來源:億速云 閱讀:201 作者:小新 欄目:數(shù)據(jù)庫

這篇文章主要介紹了HanLP自然語言處理包如何安裝與使用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

        HanLP是由一系列模型與算法組成的Java工具包,目標(biāo)是促進(jìn)自然語言處理在生產(chǎn)環(huán)境中的應(yīng)用。HanLP具備功能完善、性能高效、架構(gòu)清晰、語料時(shí)新、可自定義的特點(diǎn)。

        HanLP能提供以下功能:關(guān)鍵詞提取、短語提取、繁體轉(zhuǎn)簡體、簡體轉(zhuǎn)繁體、分詞、詞性標(biāo)注、拼音轉(zhuǎn)換、自動(dòng)摘要、命名實(shí)體識別(地名、機(jī)構(gòu)名等)、文本推薦等功能,詳細(xì)請參見以下鏈接:http://www.hankcs.com/nlp/hanlp.html  

        HanLP下載地址: https://github.com/hankcs/HanLP/releases,HanLP項(xiàng)目主頁: https://github.com/hankcs/HanLP

        1、HanLP安裝

         hanlp是由jar包、properties文件和data數(shù)據(jù)模型組成,因此,在安裝時(shí),這三種文件都應(yīng)該有??梢酝ㄟ^建立java工程即可運(yùn)行。

         hanlp.properties文件中描述了不同詞典的相對路徑以及root根目錄,因此,可以在此文件中修改其路徑。

         hanlp-1.3.4.jar包中包含了各種算法及提取方法的api,大部分方法都是靜態(tài)的,可以通過HanLP直接進(jìn)行調(diào)用,因此,使用非常方便。

         data文件夾中包含了dictionary和model文件夾,dictionary中主要是各種類型的詞典,model主要是分析模型,hanlp api中的算法需要使用model中的數(shù)據(jù)模型。

         2、HanLP的使用

         普通java工程目錄如下所示:

   HanLP自然語言處理包如何安裝與使用HanLP自然語言處理包如何安裝與使用

           3、HanLP的具體使用

           例如:對excel中的聊天記錄字段進(jìn)行熱點(diǎn)詞的提取,計(jì)算并排序,功能如下所示

           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("關(guān)鍵詞提取:");
        HanlpTest.getWordAndFrequency();
    }
    
    /**
     * 獲取所有關(guān)鍵詞和頻率
     */
    public static void getWordAndFrequency() {
        // String content =
        // "程序員(英文Programmer)是從事程序開發(fā)、維護(hù)的專業(yè)人員。一般將程序員分為程序設(shè)計(jì)人員和程序編碼人員,但兩者的界限并不非常清楚,特別是在中國。軟件從業(yè)人員分為初級程序員、高級程序員、系統(tǒng)分析員和項(xiàng)目經(jīng)理四大類。";
        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 需要進(jìn)行排序的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 關(guān)鍵詞變量
     * @param value 關(guān)鍵詞詞頻變量
     * @param allKeyWords  存放關(guān)鍵詞和詞頻的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 需要提取關(guān)鍵詞的字符串變量
     * @return 返回關(guān)鍵詞以及關(guān)鍵詞詞頻數(shù)的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;
    }

}

運(yùn)行之后,結(jié)果如下:

HanLP自然語言處理包如何安裝與使用HanLP自然語言處理包如何安裝與使用

 由此可見,可以看見從excel中提取出來的熱點(diǎn)詞匯及其頻率。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“HanLP自然語言處理包如何安裝與使用”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI