文档章节

关于IKAnalyzer自定义分词的切换主词典的方法

小手冰凉丶
 小手冰凉丶
发布于 2016/09/01 11:31
字数 374
阅读 65
收藏 1

定义一个MYCONFIG类实现Configuration接口

package util;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.InvalidPropertiesFormatException;
import java.util.List;
import java.util.Properties;

import org.wltea.analyzer.cfg.Configuration;

public class MyConfig  implements Configuration
{
  private static final Configuration CFG=new MyConfig();
  /**
   * 分词器默认字典路径
   */
  private  String PATH_DIC_MAIN = "org/wltea/analyzer/dic/main2012.dic";
  private static final String PATH_DIC_QUANTIFIER = "org/wltea/analyzer/dic/quantifier.dic";
  
  public static String getEXT_DICT() {
    return EXT_DICT;
}


public static void setEXT_DICT(String eXT_DICT) {
    EXT_DICT = eXT_DICT;
}


private static final String FILE_NAME = "IKAnalyzer.cfg.xml";//保留静态自定义词库的功能
  private static  String EXT_DICT = "ext_dict";//配置扩展词典
  private static final String EXT_STOP = "ext_stopwords";//配置扩展停止词典
  
  private Properties props;
  
  private boolean useSmart;//是否使用Smart方式

  public static Configuration getInstance()
  {
    return CFG;
  }

  

/**
 * 初始化配置文件
 */
public MyConfig()
  {
    this.props = new Properties();

    //InputStream input = getClass().getClassLoader().getResourceAsStream("IKAnalyzer.cfg.xml");
    InputStream input = getClass().getClassLoader().getResourceAsStream(FILE_NAME);
    if (input != null)
      try {
        this.props.loadFromXML(input);
      } catch (InvalidPropertiesFormatException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
  }

  public boolean useSmart()
  {
    return this.useSmart;
  }
  
//设置useSmart标志位
  public void setUseSmart(boolean useSmart)
  {
    this.useSmart = useSmart;
  }

  
  /**
   * 设置主词典路径
   */
  public void setMainDictionary(String path){
      this.PATH_DIC_MAIN=path;
  }
  public String getMainDictionary()
  {
    return PATH_DIC_MAIN;
  }

  /**
   * 获取量词词典路径
   * 
   */
  public String getQuantifierDicionary()
  {
    return PATH_DIC_QUANTIFIER;
  }

  /**
   * 获取扩展字典配置路径
   */
  public List<String> getExtDictionarys()
  {
    List<String> extDictFiles = new ArrayList<String>(2);
    
    String extDictCfg = this.props.getProperty(EXT_DICT);
    if (extDictCfg != null)
    {
      String[] filePaths = extDictCfg.split(";");
      if (filePaths != null) {
        for (String filePath : filePaths) {
          if ((filePath != null) && (!"".equals(filePath.trim()))) {
            extDictFiles.add(filePath.trim());
          }
        }
      }
    }
    return extDictFiles;
  }

  
  /**
   * 获取扩展停止词典配置路径
   */
  public List<String> getExtStopWordDictionarys()
  {
    List<String> extStopWordDictFiles = new ArrayList<String>(2);
    String extStopWordDictCfg = this.props.getProperty(EXT_STOP);
    if (extStopWordDictCfg != null)
    {
        //使用分隔多个扩展字典配置
      String[] filePaths = extStopWordDictCfg.split(";");
      if (filePaths != null) {
        for (String filePath : filePaths) {
          if ((filePath != null) && (!"".equals(filePath.trim()))) {
            extStopWordDictFiles.add(filePath.trim());
          }
        }
      }
    }
    return extStopWordDictFiles;
  }
}

实例化词典时:

MyConfig cfg = new MyConfig.getInstance();

MyConfig.setPath_DIC_MAIN("org/wltea/analyzer/dic/zwm.dic");

Dictionary.initial(cfg);

 

© 著作权归作者所有

小手冰凉丶
粉丝 5
博文 60
码字总数 17316
作品 0
合肥
程序员
私信 提问
Lucene的中文分词器IKAnalyzer

分词器对英文的支持是非常好的。 一般分词经过的流程: 1)切分关键词 2)去除停用词 3)把英文单词转为小写 但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好。 国人林良益写...

王国龙_成长
2013/02/05
1K
3
IKAnalyzer配置了扩展词典不管用呢

IKAnalyzer配置了扩展词典不管用呢,求指教 配置文件如下: IK Analyzer 扩展配置 /mydic.dic; /ext_stopword.dic 我在mydic.dic里加入了红,色,衣,单个字,但是在分词的时候并没有分出来。...

灵桐
2011/10/09
3.5K
6
IKAnalyzer中文分词器

IKAnalyzer3.0介绍 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体...

期待变强的菜鸟
2014/09/10
2.4K
0
【PDF分享】IKAnalyzer中文分词器V3.2.3使用手册.pdf

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已 经推出 了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词...

红薯
2010/09/13
941
0
Lucene 自定义分词

各位大神,帮菜鸟看个问题! 使用Lucene3.5版本以及 IKAnalyzer 分词, 在对IP字段(192.168.2.240)分词时,结果为 : 192.168.2.240;其他表字段同样采用IKAnalyzer 分词; 我的问题是:如何...

learn_more
2015/05/13
264
3

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
48分钟前
4
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
52分钟前
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部