最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IKAnalyzer結(jié)合Lucene實現(xiàn)中文分詞(示例講解)

 更新時間:2017年10月13日 09:03:51   作者:funnyboy0128  
下面小編就為大家?guī)硪黄狪KAnalyzer結(jié)合Lucene實現(xiàn)中文分詞(示例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、基本介紹

隨著分詞在信息檢索領(lǐng)域應(yīng)用的越來越廣泛,分詞這門技術(shù)對大家并不陌生。對于英文分詞處理相對簡單,經(jīng)過拆分單詞、排斥停止詞、提取詞干的過程基本就能實現(xiàn)英文分詞,單對于中文分詞而言,由于語義的復(fù)雜導(dǎo)致分詞并沒英文分詞那么簡單,一般都是通過相關(guān)的分詞工具來實現(xiàn),目前比較常用的有庖丁分詞以及IKAnalyzer等。這里我們主要通過一個簡單的Demo聊聊IKAnalyzer的基本使用。IKAnalyzer是一個開源的,基于java開發(fā)的分詞工具包,它獨立于Lucene項目,同時提供了Lucene的默認實現(xiàn)。

2、IKAnalyzer結(jié)合Lucene實現(xiàn)簡單的中文分詞

我們通過一個基本的Demo來實踐說明,步驟如下:

step1:準備相關(guān)的Jar依賴,lucene-core-5.1.0.jar、ik.jar,然后新建項目,引入相關(guān)依賴項目結(jié)構(gòu)如下:

IkDemo-src
     -con.funnyboy.ik
-IKAnalyzer.cfg.xml
     -stopword.dic
-ext.dic
-Reference Libraries
     -lucene-core-5.1.0.jar
     -ik.jar

IKAnalyzer.cfg.xml:配置擴展詞典以及停止詞典 內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
<properties> <comment>IK Analyzer 擴展配置</comment>
   <entry key="ext_dict">ext.dic;</entry>
   <entry key="ext_stopwords">stopword.dic;</entry>
</properties>

其中的ext.dic配置自己的擴展字典,stopword.dic配置自己的擴展停止詞字典

step2:通過java代碼驗證測試

public class MyIkTest {
  public static String str = "中國人民銀行我是中國人";
  public static void main(String[] args) { 
     MyIkTest test = new MyIkTest(); 
     test.wordCount("", str);
   }
   private void wordCount(String arg,String content) {
     Analyzer analyzer = new IKAnalyzer(true); // IK實現(xiàn)分詞 true:用最大詞長分詞 false:最細粒度切分 
    StringReader reader = null; 
    TokenStream ts = null; try { 
      reader = new StringReader(content); 
      ts = analyzer.tokenStream(arg,reader); 
      CharTermAttribute term = ts.addAttribute(CharTermAttribute.class); 
      ts.reset(); 
      Map<String, Integer> map = new HashMap<String, Integer>(); //統(tǒng)計 
      while (ts.incrementToken()) { 
        String str = term.toString(); 
        Object o = map.get(str); 
        if (o == null) { 
          map.put(str, new Integer(1)); 
         } else { 
          Integer i = new Integer(((Integer) o).intValue() + 1); 
           map.put(str, i); 
        } 
       } 
      List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(map.entrySet()); 
      Collections.sort(list,new Comparator<Map.Entry<String, Integer>>() { 
        public int compare(Map.Entry<String, Integer> o1,Map.Entry<String, Integer> o2) { 
          return (o2.getValue() - o1.getValue()); 
        } });  
       for (int k=0;k<list.size();k++) { 
        Entry<String, Integer> it=list.get(k); 
        String word = it.getKey().toString(); 
        System.err.println(word+"["+it.getValue()+"]"); 
       }  
    } catch (Exception e) {
     } finally { 
      if(reader != null){ 
         reader.close(); 
      } 
      if (analyzer != null) { 
        analyzer.close(); 
      } 
     } 
   }
  }

執(zhí)行程序測試結(jié)果如下:

中國人民銀行[1]

中國人[1]

我[1]

3、配置說明

a、如何自定義配置擴展詞典和停止詞典 IKAnalyzer.cfg.xml中定義了擴展詞典和停止詞典,如果有多好個可以通過;配置多個。擴展詞典是指用戶可以根據(jù)自己定義的詞義實現(xiàn)分詞,比如人名在默認的詞典中并未實現(xiàn),需要自定義實現(xiàn)分詞,卡可以通過在ext.dic中新增自定義的詞語。停止詞是指對于分詞沒有實際意義但出現(xiàn)頻率很高的詞,比如嗎、乎等語氣詞,用戶也可以通過在stopword.dic中自定義相關(guān)的停止詞。

b、關(guān)于最大詞長分詞和最小粒度分詞的區(qū)分 在IKAnalyzer構(gòu)造方法中可以通過提供一個標示來實現(xiàn)最大詞長分詞和最小粒度分詞,true為最大詞長分詞,默認是最小粒度分詞。對"中國人民銀行我是中國人"分別測試結(jié)果如下:

最大詞長分詞結(jié)果如下:

中國人民銀行[1]

中國人[1]

我[1]

最小粒度分詞結(jié)果如下:

國人[2]
中國人[2]
中國[2]
人民[1]
中國人民銀行[1]
我[1]
人民銀行[1]
中國人民[1]
銀行[1]

以上這篇IKAnalyzer結(jié)合Lucene實現(xiàn)中文分詞(示例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 線程池運用不當引發(fā)的一次線上事故解決記錄分析

    線程池運用不當引發(fā)的一次線上事故解決記錄分析

    遇到了一個比較典型的線上問題,剛好和線程池有關(guān),另外涉及到死鎖、jstack命令的使用、JDK不同線程池的適合場景等知識點,同時整個調(diào)查思路可以借鑒,特此記錄和分享一下
    2024-01-01
  • java實現(xiàn)統(tǒng)一異常處理的示例

    java實現(xiàn)統(tǒng)一異常處理的示例

    一個全局異常處理類需要處理三類異常1.業(yè)務(wù)類異常,2.運行時異常 ,3.Error,本文給大家介紹java實現(xiàn)統(tǒng)一異常處理的示例,感興趣的朋友一起看看吧
    2021-06-06
  • ElasticSearch的完整安裝教程

    ElasticSearch的完整安裝教程

    這篇文章主要給大家分享介紹了ElasticSearch的完整安裝教程,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用ElasticSearch具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對其優(yōu)化

    在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對其優(yōu)化

    這篇文章主要介紹了在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對其優(yōu)化的方法,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01
  • java中線程安全的list詳細特性和用法

    java中線程安全的list詳細特性和用法

    這篇文章主要給大家介紹了關(guān)于java中線程安全的list詳細特性和用法的相關(guān)資料,Java中有多種線程安全的List,其中比較常用的有Vector、Collections.synchronizedList()和CopyOnWriteArrayList三種方式,需要的朋友可以參考下
    2024-03-03
  • Spring事務(wù)處理原理步驟詳解

    Spring事務(wù)處理原理步驟詳解

    這篇文章主要介紹了Spring事務(wù)處理原理步驟詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • HelloSpringMVC配置版實現(xiàn)步驟解析

    HelloSpringMVC配置版實現(xiàn)步驟解析

    這篇文章主要介紹了HelloSpringMVC配置版實現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Spring?RestTemplate如何利用攔截器打印請求參數(shù)和返回狀態(tài)

    Spring?RestTemplate如何利用攔截器打印請求參數(shù)和返回狀態(tài)

    這篇文章主要介紹了Spring?RestTemplate如何利用攔截器打印請求參數(shù)和返回狀態(tài)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 通過代碼理解java泛型

    通過代碼理解java泛型

    本篇文章通過代碼實例讓大家充分的理解java泛型的相關(guān)知識點內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2018-08-08
  • SpringMvc配置靜態(tài)資源訪問路徑的實現(xiàn)

    SpringMvc配置靜態(tài)資源訪問路徑的實現(xiàn)

    本文主要介紹了SpringMvc配置靜態(tài)資源訪問路徑的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評論

滨海县| 高台县| 鹿邑县| 邵阳市| 开原市| 卓尼县| 灵武市| 亚东县| 安塞县| 隆安县| 云浮市| 宁城县| 诏安县| 昌都县| 肇庆市| 西林县| 元谋县| 宁安市| 望城县| 沐川县| 乌兰浩特市| 修文县| 延长县| 肃宁县| 汶川县| 绥德县| 大冶市| 会理县| 泰州市| 龙井市| 南和县| 六枝特区| 奈曼旗| 杭锦旗| 竹溪县| 若羌县| 黑水县| 太仆寺旗| 新宁县| 卓尼县| 汽车|