文档章节

IKAnalyzer分词技术

D
 D-dragon
发布于 2016/05/09 23:45
字数 593
阅读 354
收藏 1

说到IKAnalyzer,就得先回顾下,为什么要分词。因为搜索这种东西,不是像字符串查询那样,完全按照关键字去对比。比如有一往篇文章,我们要通过一个关键字来搜索这篇文章的内容。首先,我们要对这个文章建立索引,怎么建立的,就是通过分词来建立的,分好词组以后。再通过关键字与每个分词的索引进行比对,有就是有,没得就找不到。如果分词没做好,比如:

在《地藏经》第十二品《见闻利益品》,说读经的时候、没有记忆力

我们用IK分词,结果如下:

在|地藏经|藏经|第|十二|品|见闻|见|闻|利益|品|说|读经|的|时候|没有|有|记忆力|记忆|力|

如果我们输入“地藏”两个字,那么结果就搜索不出来,所以分词对搜索来说,相当重要。

顺便把上面这个分词程序的代码贴出来:

public static void main(String[] args) throws Exception {
        String text = "在《地藏经》第十二品《见闻利益品》,说读经的时候、没有记忆力";
        //手动添加词组
//        List<String> list = new ArrayList<String>();
//        list.add("地藏");
//        Dictionary.initial(DefaultConfig.getInstance());
//        Dictionary.getSingleton().addWords(list);

//创建分词对象
        Analyzer analyzer = new MyIKAnalyzer();
        StringReader reader = new StringReader(text);

        TokenStream ts = analyzer.tokenStream("", reader);
        CharTermAttribute term = ts.getAttribute(CharTermAttribute.class);
        //incrementToken() 之前必须要调用reset,不然会报错
        ts.reset();
        try {
            while(ts.incrementToken()){
                System.out.print(term.toString()+"|");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            reader.close();
        }
    }

由于IK自带的分词词组,不包含“地藏”两个字,我们可以通过代码来添加词组(如上面代码中注释的部分),也可以通过配置文件来实现,由于在android studio里面没有显示resources这个文件夹,要选择“project”来切换显示模式:

在这个文件下,加入IKAnalyzer.cfg.xml、stopword.dic、ext.dic。这三个文件,这个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">ext.dic;</entry> 
	<!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords">stopword.dic;</entry> 
</properties>

也就是说 ext.dic是添加词组的地方,而stopword.dic是过虑关键字的地方(相当于屏蔽的意思),即我们只需要在ext.dic下加入“地藏”两个字即可。

© 著作权归作者所有

共有 人打赏支持
D
粉丝 6
博文 40
码字总数 40334
作品 0
资阳
程序员
IKAnalyzer中文分词器

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

期待变强的菜鸟
2014/09/10
0
0
Lucene的中文分词器IKAnalyzer

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

王国龙_成长
2013/02/05
0
3
solr搜索之demo和集成IKAnalyzer(二)

1 新建demo-solr 关闭运行的solr应用。 进入solr目录:D:solr-4.10.2example 1、在example目录下创建demo-solr文件夹; 2、将./solr下的solr.xml拷贝到demo-solr目录下; 3、在demo-solr下创...

技术小阿哥
2017/11/27
0
0
Lucene使用IKAnalyzer中文分词笔记

本文主要讲解IKAnalyzer(以下简称‘IK’)在Lucene中的具体使用,关于Lucene和IK分词器的背景及其作用在这里就不再熬述。不得不感叹下Lucene版本变更的快速,如今最新已经到了4.9.0,相信任...

Jialy
2014/09/02
0
0
在Solr4.9中使用IKAnalyzer,实现同义词,扩展词库,停顿词的添加

在使用solr4.9的过程中,使用了IKAnalyzer分词器,其中遇到了不少问题,现在做个记录,以备后续只用。 首先使用IKAnalyzer是看到群里有人介绍,但是貌似现在IKAnalyzer已经没人更新了。。。不...

翊骷
2014/09/11
0
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 恨不得给你买张飞机挂票

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @开源中国首席灵魂师:分享张希/曹方的单曲《认真地老去》 来不及认真的年轻过,就认真的老去! 《认真地老去》- 张希/曹方 手机党少年们想听...

小小编辑
41分钟前
69
5
如何实现靠谱的分布式锁?

分布式锁,是用来控制分布式系统中互斥访问共享资源的一种手段,从而避免并行导致的结果不可控。基本的实现原理和单进程锁是一致的,通过一个共享标识来确定唯一性,对共享标识进行修改时能够...

郑加威
今天
1
0
Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部