zoukankan      html  css  js  c++  java
  • IK分词器 IKAnalyzer 简单demo

    所用IKAnalyzer:IK-Analyzer-2012FF   百度云:http://pan.baidu.com/s/1bne9UKf  

      

    实例代码:

     1 package com.test.ik.analyzer;
     2 
     3 import java.io.IOException;
     4 import java.io.StringReader;
     5 import java.util.ArrayList;
     6 import java.util.List;
     7 
     8 import org.apache.lucene.analysis.Analyzer;
     9 import org.apache.lucene.analysis.TokenStream;
    10 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
    11 import org.wltea.analyzer.cfg.Configuration;
    12 import org.wltea.analyzer.cfg.DefaultConfig;
    13 import org.wltea.analyzer.dic.Dictionary;
    14 import org.wltea.analyzer.lucene.IKAnalyzer;
    15 
    16 /**
    17  * 文件名称: IkAnalyzer<br>
    18  * 文件描述: IkAnalyzer demo<br>
    19  * 版权所有: jstarseven<br>
    20  * 完成日期: 2015-10-20 下午4:18:54<br>
    21  * 
    22  * @see
    23  * @param
    24  * @since JDK1.6
    25  */
    26 public class IkAnalyzer {
    27 
    28     public static void main(String[] args) throws Exception {
    29 
    30         // 检索内容
    31         String text = "据说WWDC要推出iPhone6要出了?与iPhone5s土豪金相比华夏怎样呢?神圣纪事,天空之城,囧囧@2014巴西世界杯 test中文"
    32                 + "我在漫长的纠结与反省中觉悟到时间其实改变不了什么的,至少对于放弃一种好的而去相信一种坏的甚至慵懒的事物是这样的。我曾经朝九晚五,不会去日晒雨淋,坐在舒适的办公环境里,友好的同事关系,虽然工资不高,生活却也是很惬意的,如果习惯了,时间它能改变些什么呢?我不知道,也不曾去幻想,因为眼前的景物足够我安静的睡去,做足了美梦,只觉得哪怕是睁开眼睛都是件疲惫的事情,都是一件多余的事情,不必去动脑经想生活的意义是什么?";
    33         List<String> list = new ArrayList<String>();
    34         list.add("test中文");
    35         // 尚未初始化,因为第一次执行分词的时候才会初始化,为了在执行分此前手动添加额外的字典,需要先手动的初始化一下
    36         Configuration configuration = DefaultConfig.getInstance();
    37         // 主字典路径
    38         String mainDictionaryPath = configuration.getMainDictionary();
    39         // 量词字典路径
    40         String quantifierDictionaryPath = configuration.getQuantifierDicionary();
    41         // 获取停止词(stopword)字典路径列表,可一次返回多个停止词词典
    42         List<String> stopList = configuration.getExtStopWordDictionarys();
    43         // 获取扩展字典路径列表,可一次返回多个扩展词典
    44         List<String> extlist = configuration.getExtDictionarys();
    45         System.out.println(mainDictionaryPath);
    46         System.out.println(quantifierDictionaryPath);
    47         for (String word : extlist) {
    48             System.out.println(word);
    49         }
    50         for (String word : stopList) {
    51             System.out.println(word);
    52         }
    53         // DictionaryIK 分词器的词典对象
    54         // initial 初始化字典实例 字典采用单例模式,一旦初始化,实例就固定 注意该方法只能调用一次
    55         Dictionary.initial(configuration);
    56         // getSingleton 获取初始化完毕的字典单例
    57         // addWords 加载用户扩展的词汇列表到 IK 的主词典中,增加分词器的可识别词语
    58         Dictionary.getSingleton().addWords(list);
    59         // disableWords(Collection<String> words) 屏蔽词典中的词元
    60 
    61         // 创建分词对象 true为smart模式
    62         Analyzer analyzer = new IKAnalyzer(true);
    63         StringReader reader = new StringReader(text);
    64 
    65         TokenStream ts = analyzer.tokenStream("", reader);
    66         CharTermAttribute term = ts.getAttribute(CharTermAttribute.class);
    67         // 遍历分词数据
    68         try {
    69             while (ts.incrementToken()) {
    70                 System.out.print(term.toString() + "|");
    71             }
    72         } catch (IOException e) {
    73             e.printStackTrace();
    74         } finally {
    75             reader.close();
    76         }
    77     }
    78 }

    运行效果:

    org/wltea/analyzer/dic/main2012.dic
    org/wltea/analyzer/dic/quantifier.dic
    ext0.dic
    ext1.dic
    stopword.dic
    加载扩展词典:ext0.dic
    加载扩展词典:ext1.dic
    加载扩展停止词典:stopword.dic
    据说|wwdc|要|推出|iphone6|要|出了|与|iphone5s土豪金|相比|华夏|怎样|呢|神圣纪事|天空之城|囧囧|2014|巴西世界杯|test中文|我|在|漫长的纠结|与|反省|中|觉悟|到|时间|其实|改变|不|了|什么的|至少|对于|放弃|一种|好|的|而去|相信|一种|坏|的|甚至|慵懒|的|事物|是|这样|的|我|曾经|朝九晚五|不会|去|日晒雨淋|坐在|舒适|的|办公|环境|里|友好|的|同事|关系|虽然|工资|不高|生活|却|也是|很|惬意|的|如果|习|惯了|时间|它能|改|变些|什么|呢|我|不知道|也|不曾|去|幻想|因为|眼前|的|景物|足够|我|安静|的|睡去|做足了美梦|只|觉得|哪怕是|睁开眼睛|都是|件|疲惫|的|事情|都是|一件|多余|的|事情|不|必去|动脑|经|想|生活|的|意义|是什么|

    配置文件:IKAnalyzer.cfg.xml

    <?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">ext0.dic;ext1.dic;</entry> 
    
        <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords">stopword.dic;</entry> 
        
    </properties>

    文件路径:

    扩展字典:

    ext0.dic:

    巴西世界杯
    iPhone5s土豪金

    ext1.dic:

    神圣纪事
    天空之城
    囧囧
    漫长的纠结
    朝九晚五
    美梦
    觉悟
    做足了美梦


     -END-

  • 相关阅读:
    JavaWeb 内存马一周目通关攻略
    Android应用攻与防
    JavaWeb 内存马二周目通关攻略
    Mysql 5.7 windows安装 zip安装
    [JavaScript] 单例模式
    [JavaScript] 策略模式
    Leecode刷题笔记
    Java面经
    一些开源项目在ARM上的移植
    ffmpeg和SDL的多媒体编程(二)输出到屏幕
  • 原文地址:https://www.cnblogs.com/jstarseven/p/4898150.html
Copyright © 2011-2022 走看看