不同规则的中文分词对Lucene索引的影响

原创 2004年12月28日 14:47:00

不同规则的中文分词对Lucene索引的影响

                                                                                                                              田春峰 欢迎订阅作者微博


在中文全文索引中为了建立反向索引需要对文档中的句子进行切分,相关理论请参见车东的介绍。

lucene 1.3 以后的版本中支持中文建立索引了,他默认的切分规则是按一个个汉字分的。例子见后。

这里主要对比以下3种中文切分对lucene 索引的影响。

第一种:默认的单字切分;

第二种:二元切分(见车东的文章);

第三种:按照词义切分(使用小叮咚的逆向最大切分法)。

上面3种切分的效果如下:

原句:"搜索引擎的发展历史证明,没有做不到只有想不到,让人们更方便准确的获取信息是搜索引擎的使命。"

    Lucene默认分词结果:

    org.apache.lucene.analysis.standard.StandardAnalyzer:

       [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [便] [] [] [] [] [] [] [] [] [] [] [] [] [] [使] []

   二元切分结结果:

    org.apache.lucene.demo.CJKAnalyzer:

      [搜索] [索引] [引擎] [擎的] [的发] [发展] [展历] [历史] [史证] [证明] [没有] [有做] [做不] [不到] [到只] [只有] [有想] [想不] [不到] [让人] [人们] [们更] [更方] [方便] [便准] [准确] [确的] [的获] [获取] [取信] [信息] [息是] [是搜] [搜索] [索引] [引擎] [擎的] [的使] [使命]

    小叮咚切分结果:

    org.apache.lucene.demo.ChineseAnalyzer:

      [搜索] [引擎] [] [发展] [历史] [证明] [] [] [不到] [只有] [] [不到] [人们] [] [方便] [准确] [] [获取] [信息] [] [搜索] [引擎] [] [使命]

   

    Lucene索引中,最小的索引单位是Token。基本上可以这样理解Token,在英文中Token是一个单词,在汉语中是不同切分结果中[]内的单词。

   

我的测试数据:
今天各大网站和blog的新闻,包括经济、政治、教育、娱乐、科技等几大类总共212K的文本文件。

    经过Lucene生成索引后的统计信息如下:

    单字切分:


   
单字切分的前15Term

    
 

    词义切分:


   
词义切分的前15Term

    

    通过上面的对比可以看出: 单字切分的Term要比词义切分的Term。原因很明显,汉语中常用的字大概4000多个,所以单字切分的Term上限也大概就是这么多,词义切分就不同了,我这里的词义词典大概有4万多个。

    从直觉观察来看,索引文件中的Term越多,搜索结果也越快,搜索的相关性也越高。

    另外一个有意思的情况是索引文件大小的变化。

    在我得测试数据大概80K大小的时候,上面的两种方法产生的索引文件区别不大,可是当数据量大于100K的时候,单字切分的索引文件已经比词义切分索引文件大了30K了。由于目前对索引文件格式还不了解,现在只能猜测为什么会出现这样的结果了。因为单字切分的Term少,那么指向这个Term的链接信息就越多,(搜索结果也越不相关)。反之亦然。

        上面的测试数据中没有过滤常用的汉字。常用的汉字对搜索是没有作用的,比如:的,是等。 
    20041228
   

       csdn 的blog 不稳定才发到这里,呵呵

      参考:机器人-小叮咚    小叮咚的主页       
                  搜索引擎:数字信息搜索,理论著作

版权声明:本文为博主原创文章,在不删除、修改文章内容的情况下,可以自由转载。

lucene的建立索引,搜索,中文分词

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包。 现在最新的lucene已经更新到6.0版本了。但是这个最新版,需要适配jdk1.80...
  • young_so_nice
  • young_so_nice
  • 2016年05月11日 12:17
  • 2171

lucene内存索引库、分词器

6.3内存索引库 6.3.1特点                   在内存中开辟一块空间,专门为索引库存放。这样有以下几个特征: 1)    因为索引库在内存中,所以访问速度更快。 2)    在...
  • Jerome_s
  • Jerome_s
  • 2014年07月04日 14:33
  • 1701

lucene学习记录(2) - 实时索引,中文分词

实时索引 在lucene中, Directory和IndexWriter都是线程安全的, IndexReader也是 但reader不能实时反应writer的修改, 必须重新打开reader才可以 目...
  • Sidyhe
  • Sidyhe
  • 2016年07月03日 23:34
  • 1204

全文检索之lucene的优化篇--分词器

在创建索引库的基础上,加上中文分词器的,更好的支持中文的查询。引入jar包je-analysis-1.5.3.jar,极易分词.还是先看目录。          建立一个分词器的包,...
  • shuyun123456789
  • shuyun123456789
  • 2017年01月16日 14:03
  • 1088

终于搞明白了Lucene倒排索引原理和中文分词

输入一篇中文文本后:1. 首先进行中文分词,将一段文本切分成以词为单位的文本2. 对分词后的文本创建Lucene倒排索引 转载文章:《Lucene倒排索引技术》    Lucene是一个高性能的jav...
  • dorothyle
  • dorothyle
  • 2011年05月30日 17:28
  • 1469

lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录管理)基于lucene5.5.3

前言: lucene全文搜索之一中讲解了lucene开发搜索服务的基本结构,本章将会讲解如何创建索引器、管理索引目录和中文分词器的使用。 包括标准分词器,IKAnalyzer分词器以及两种索引目录的创...
  • eguid_1
  • eguid_1
  • 2016年11月08日 21:45
  • 1389

用于Lucene的各中文分词比较

用于Lucene的各中文分词比较 作者: Claymore 时间: 2011-09-09 17:53:26 Arial Tahoma Verdana 宋体 楷体  字体减小 字体加大 ...
  • chs_jdmdr
  • chs_jdmdr
  • 2012年03月16日 10:26
  • 22266

全文检索技术学习(三)——Lucene支持中文分词

分析器(Analyzer)的执行过程如下图是语汇单元的生成过程: 从一个Reader字符流开始,创建一个基于Reader的Tokenizer分词器,经过三个TokenFilter生成语汇单元To...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2017年05月21日 00:23
  • 2149

lucene中文分词器Jceseg和IK Analyzer使用示例

  • 2015年05月09日 20:06
  • 33.61MB
  • 下载

Lucene6.5.0 下中文分词IKAnalyzer编译和使用

前言 lucene本省对中文分词有支持,不过支持的不好,其分词方式是机械的将中文词一个分成一个进行存储,例如:成都信息工程大学,最终分成为::成|都|信|息|工|程|大|学,显然这种分词方式是低效且...
  • Fanpei_moukoy
  • Fanpei_moukoy
  • 2017年03月28日 16:47
  • 2991
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不同规则的中文分词对Lucene索引的影响
举报原因:
原因补充:

(最多只允许输入30个字)