IKAnalyzer

我们的项目中中文切词使用的是mmseg,有一个不满意的地方是jar包中的默认词典一定会被加载进去,当我对有些term有意见时,无法删除。

mmseg中Dictionary.java里一段代码保证了/data/words.dic的加载,我无法提供自己的进行替换。

//try load words.dic in jar
InputStream wordsDicIn = this.getClass().getResourceAsStream("/data/words.dic");
if(wordsDicIn != null) {
    File wordsDic = new File(this.getClass().getResource("/data/words.dic").getFile());
    loadWord(wordsDicIn, dic, wordsDic);
}

而IKAnalyzer就比较自由,既可以增加自己的词典,也能指定删除默认词典中的词。

        String text = "给我讲一个黄色笑话";
        Configuration cfg = DefaultConfig.getInstance();
        Dictionary.initial(cfg);
        //将"黄色笑话"从默认词典中删除
        Dictionary.getSingleton().disableWords(Arrays.asList("黄色笑话"));

        StringReader sr = new StringReader(text);

        IKSegmenter ik = new IKSegmenter(sr, true);
        Lexeme lex;
        while ((lex = ik.next()) != null) {
            System.out.print(lex.getLexemeText() + "|");
        }

输出:给我讲一个|黄色|笑话

如何增加新词呢?

DefaultConfig类会默认加载根目录下的配置文件IKAnalyzer.cfg.xml

<properties>

    <comment>IK Analyzer 扩展配置</comment>
    <!-- 用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict">ik.add.dic</entry>
    <!-- 用户可以在这里配置自己的扩展停止词字典    -->
    <!--entry key="ext_stopwords">/dicdata/ext_stopword.dic</entry-->

</properties>

其中ext_dict就是用于添加自定义的扩展词典。  

  

时间: 2024-10-11 12:48:35

IKAnalyzer的相关文章

IKAnalyzer在idea配置运行出现 Main Dictionary not found!!!

下载了IKAnalyzer源码后,配置运行后出现了Main Dictionary not found!!! 异常 跟进去后发现是配置文件没有找到org/wltea/analyzer/dic/main2012.dic,查找发现idea生成的build目录中并没有main2012.dic这个文件 当我把这个文件手动放入dic目录后,运行是可以的.后来经过一顿查找,找到了一个解决方案. Project Structure -> Modules   点右边+,选择1,然后指向resource目录,选择C

IKAnalyzer 分词流程粗览

没有开头语我会死啊~好的,IK是啥.怎么用相信看这篇文章的人都不需要我过多解释了,我也解释不好.下面开始正文: IK的官方结构图: 从上至下的来看: 最上层是我们不需要过度关心的,它们是一些Adapter供Lucene调用. IK Segmentation对应的主类应该是IKSegmenter,是IK工作的核心组件.提供了分词流程的控制. 词元处理子单元:多个不同算法的词元分词器,实现了对不同类型词元的识别. 词典:主要是给CJKSegmenter提供中文词识别能力的Dictionary封装,词

配置solr4.10.0和中文分词IKAnalyzer

全文索引服务solr搭建.公司最近要用到.我又是个java小白.做环境的什么的不再行.就此几下操作. 大部分是看官方提供的reference.pdf来做的,也google了不少.公司还有个大哥指点....笨的可以. 环境如下 OS: centos6.5 java环境: jdk1.7.0_51 tomcat版本: apache-tomcat-7.0.55 solr版本: solr-4.10.0 中文分词插件: IKAnalyzer2012FF_u1 另需准备mysql-connector-java

Elasticsearch之IKAnalyzer的过滤停止词

它在哪里呢? 非常重要! [[email protected] custom]$ pwd/home/hadoop/app/elasticsearch-2.4.3/plugins/ik/config/custom[[email protected] custom]$ lltotal 5252-rw-r--r--. 1 hadoop hadoop 156 Dec 14 10:34 ext_stopword.dic-rw-r--r--. 1 hadoop hadoop 130 Dec 14 10:34

lucene+ikanalyzer实现中文同义词搜索

lucene实现索引的创建与检索:ikanalyzer实现对中文的分词:光到这里已经能够实现中文的检索了,但是光这样还不够,很多项目中的检索,应该还能够对同义词进行处理,比如索引库中有"计算机","电脑"这样的词条,搜索"笔记本"应该也能把"计算机","电脑"这样的词条匹配出来,这就涉及到对同义词的索引检索了. 两种方案: 1.在建立索引时,拆词建索引时就把同义词考虑进去,将同义词的词条加入到索引中,然后检

solr中文分词器IK-analyzer安装

solr本身对中文是不支持的,所以需要下载中文分词器IK-analyzer  下载地址https://code.google.com/archive/p/ik-analyzer/downloads.自己本地系统是centos6.7,所以下载了https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-analyzer/IK%20Analyzer%202012FF_hf1.zip 安装步骤:

Solr5.3.1整合IKAnalyzer

由于solr5.3.1本身不支持中文分词,而msseg4j的分词效果不明显.因而采用IK进行分词,然而参考http://www.superwu.cn/2015/05/08/2134/在google上下载的jar包放到solr目录下直接报如下异常. 严重: Servlet.service() for servlet [default] in context with path [/solr] threw exception [Filter execution threw an exception]

IKAnalyzer 3.2.8 报错问题解决办法

使用IKAnalyzer 3.2.8,今晚因为这个报错抓狂了一个网上,百度.google各种搜都没搜到可以解决的办法. 报错:java.lang.NoClassDefFoundError: Could not initialize class org.wltea.analyzer.dic.Dictionary 后来调试发现,在没有建索引的时候检索报内存溢出. 而在建索引的时候报: java.lang.NoClassDefFoundError: Could not initialize class

【Maven】IKAnalyzer 在Maven Repository不存在

1.在mvnrepository里面找IKAnalyzer,这个中文分词包,一直没有找到,找到github,发现是一个国人写的. http://mvnrepository.com/search?q=IKAnalyzer 2.转换成maven包,安装到本地.找到有现成的mavenproject,拿来主义.clone到本地 https://github.com/wks/ik-analyzer 3.安装到Repository里面 Maven使用方法: 将下面依赖增加project的pom.xml中的<

06.中文分析器IKAnalyzer

为什么需要使用IKAnalyzer Lucene自带的标准分析器无法中文分词 Lucene自带的中文分析器分词不准确 IKAnalyzer支持屏蔽关键词.新词汇的配置 使用示例 建立索引时 略 QueryParser查询时 略 单独使用进行分词 自定义词库 在classpath下定义IKAnalyzer.cfg.xml文件,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties