`
billgmh
  • 浏览: 65474 次
  • 性别: Icon_minigender_1
  • 来自: 广东广州
社区版块
存档分类
最新评论

基于词典的最大匹配的Lucene中文分词程序

阅读更多

把自己之前完成的基于词典的最大匹配的中文分词程序修改成基于Lucene。其中包括了3种词典的组织形式:简单顺序存储SimpleDictionary,首字Hash词典HashDictionary,双重Hash词典;例外实现了两种分词算法:正向最大匹配MaxMatchSegment与反向最大匹配分词ReverseMaxMatchSegment;最后使用使只需根据需要配置spring的配置文件即可选择词典的组织方式与分词算法组装成为分词程序。

运行所需:spring-core.jar   lucene-core.jar

希望大家能试用一下我的分词程序,指出我设计的不足,共同学习。

接下来的目标:完成1、寻找更优的词典组织 2、统计识别未登录词 3、人名识别 4、歧义消除

  • src.rar (15.3 KB)
  • 描述: 原代码
  • 下载次数: 1012
分享到:
评论
20 楼 linliangyi2007 2007-08-27  
修订版更新了
IKAnalyzer V2.0.2 Lucene中文分词器下载地址 : http://download.csdn.net/source/236243
19 楼 billgmh 2007-08-15  
linliangyi2007 写道
http://download.csdn.net/source/227957
这个分词器也是基于正向切分算法的,跟楼主交流一下


应该是我向你多学习才对,对很多算法的理解不是很透彻……
18 楼 linliangyi2007 2007-08-15  
http://download.csdn.net/source/227957
这个分词器也是基于正向切分算法的,跟楼主交流一下
17 楼 billgmh 2007-07-04  
delphixf 写道
DictionaryUtil<HashDictionary> util=new Dictionary<HashDictionary>();
HashDictionary dic=util.readDictionary("HashDic.stu");
dic.insertWord("非负权图");

在HashDictionary中插入新词“非负权图”,再次运用这个字典分词,结果:
基于,0,2)
(非,2,3)
(负,3,4)
(权,4,5)
(图,5,6)
(最短路径,6,10)
(算法,10,12)
(中文,12,14)
(分词的,14,17)
(研究,17,19)
楼主!请教


我在我最新的版本上试了一下是可以识别,可能是我在发布这个版本的代码有误,对你造成不便,实在是对不起。我把我新版本的代码上传了,麻烦你更新一下,谢谢
16 楼 billgmh 2007-07-04  
amigobot 写道
为什么要基于字典分词呢? 难道就为了节省空间
(最短路径,6,10)
如果我查 最短 就会没有返回, 这难道对吗? 反正google不是这样的。
我还是倾向于一元分词, 更精确。


楼上说的没错,基于词典的分词用于建立索引时不能很好地将所有内容都涵盖,所以后来我对算法做了一下改进,在基于词典的基础上加入了一元分词来希望把内容都涵盖进去。

PS:基于词典的分词主要是想用在对查询语句进行切分。而且中文分词不止应用在搜索引擎领域,还能用在机械翻译等方面,这样基于词典分词就有意义了
15 楼 amigobot 2007-07-03  
为什么要基于字典分词呢? 难道就为了节省空间
(最短路径,6,10)
如果我查 最短 就会没有返回, 这难道对吗? 反正google不是这样的。
我还是倾向于一元分词, 更精确。
14 楼 delphixf 2007-06-28  
DictionaryUtil<HashDictionary> util=new Dictionary<HashDictionary>();
HashDictionary dic=util.readDictionary("HashDic.stu");
dic.insertWord("非负权图");

在HashDictionary中插入新词“非负权图”,再次运用这个字典分词,结果:
基于,0,2)
(非,2,3)
(负,3,4)
(权,4,5)
(图,5,6)
(最短路径,6,10)
(算法,10,12)
(中文,12,14)
(分词的,14,17)
(研究,17,19)
楼主!请教
13 楼 billgmh 2007-06-22  
delphixf 写道
楼主,字典文件。您的格式为.stu。请问如何打开。

词典文件是我用Java ObjectWriter将整个词典类实例序列化后写入的文件,用户也可以使用自己自定义txt文件作为词典,使用方法如下:

DictionaryImpl dic=new HashDictionary();
dic.loadDictionary("词典.txt");

另外用户也可以使用我预先定义好的文件stu

DictionaryUtil<HashDictionary> util=new Dictionary<HashDictionary>();
HashDictionary dic=util.readDictionary("HashDic.stu");

12 楼 dihin 2007-06-21  
楼主的头像我很喜欢 呵呵
11 楼 delphixf 2007-06-21  
我在字典中插入一个新词。再次分词。结果一样啊。
10 楼 delphixf 2007-06-21  
楼主,字典文件。您的格式为.stu。请问如何打开。
9 楼 eagleming 2007-06-11  
请教楼主,怎么在nutch下运用啊

zhm0953@126.com
8 楼 hgjn 2007-04-24  
我对你这个分词方法非常感兴趣!
代码有点长,美女能不能顺便给个测试的程序啊 ?
我的邮箱是:hgjn007@163.com
我们可有长期探讨探讨
谢谢!


7 楼 Gellan 2007-04-22  
那里有lucene-core.jar?谢谢
6 楼 duooluu 2007-03-21  
改天来学习
5 楼 echo_0815 2007-03-21  
支持,感谢billgmh
4 楼 cngump 2007-03-14  
不错.支持。
3 楼 jelly 2007-03-14  
顶,很好,这个很有研究价值
2 楼 billgmh 2007-03-11  
最后补充词典文件
1 楼 billgmh 2007-03-11  
补充一些文件

相关推荐

    lucene中文分词工具包

    它支持基于正向最大匹配(MMAX)和逆向最大匹配(RMMAX)等多种分词模式。 4. **歧义处理**:中文分词常常面临歧义问题,如“银行存款”和“银行存心”。IKAnalyzer通过建立歧义分析模型,尝试识别并消除这种歧义,...

    Lucene中文分词器组件

    2. **配置与初始化**:根据项目需求,配置分词器的参数,如自定义词典、分词模式等,然后在Lucene的Analyzer中实例化该分词器。 3. **索引建立**:在创建索引时,使用配置好的分词器对中文文本进行分词,生成分词后...

    lucene中文分词器(paoding解牛)

    3. **模糊匹配**:对于未出现在词典中的新词或错别字,Paoding采用了基于概率模型的模糊匹配算法,能够在一定程度上识别和处理。 4. **自学习能力**:Paoding具备一定的自学习功能,通过对用户搜索行为的学习,不断...

    Lucene3.0分词系统.doc

    无论是英文的简单分词流程,还是中文的基于词典匹配、语义理解或词频统计的分词方法,都是为了构建更精准、高效的文本索引和搜索体验。通过这些技术的应用,Lucene3.0能够支持全球范围内不同语言和文化背景下的文本...

    Lucene中文分词组件 JE-Analysis 1.5.1

    //采用正向最大匹配的中文分词算法,相当于分词粒度等于0 MMAnalyzer analyzer = new MMAnalyzer(); //参数为分词粒度:当字数等于或超过该参数,且能成词,该词就被切分出来 MMAnalyzer analyzer = new ...

    lucene中文分词(庖丁解牛)庖丁分词

    1. 性能优化:通过调整分词器的参数,如最大匹配长度、最小匹配长度等,可以在准确性和速度之间找到平衡。 2. 实时更新:在大型系统中,可能需要实时更新索引,此时需考虑如何在保持服务可用的同时,有效利用庖丁...

    正向最大匹配中文分词算法

    但不管实现如何,目前而言的分词系统绝大多数都是基于中文词典的匹配算法。其中最为常见的是最大匹配算法 (Maximum Matching,以下简称MM算法) 。MM算法有三种:一种正向最大匹配,一种逆向最大匹配和双向匹配。本...

    基于Lucene的中文分词方法设计与实现

    其中,正向最大匹配法是一种常用的分词方法,其基本思路是从左向右取待分词串的最大长度作为匹配长度,然后查找词典,若存在,则匹配成功;否则减少一个字长后继续查找,直到找到为止。 #### 三、基于Lucene的中文...

    lucene6.6+拼音分词+ik中文分词包

    本文将详细讲解如何在Lucene 6.6版本中结合拼音分词和IK中文分词,以及如何利用自定义词典和停用词表提升分词效率。 首先,我们来了解核心组件——Lucene 6.6。这个版本的Lucene引入了多项改进,包括更快的搜索速度...

    lucene中文分词源码,做搜索引擎需要用到的好东西哦

    1. 分词算法:理解不同的分词算法,如基于词典的匹配、HMM模型等,以及它们的优缺点。 2. 词典构建:词典是分词的基础,了解如何构建和维护词典,以及动态更新词典的方法。 3. 分词效率:优化分词过程,减少不必要的...

    c# 中文分词 LUCENE IKAnalyzer

    标题中的"C# 中文分词 LUCENE IKAnalyzer"是指使用C#语言实现的一个中文分词工具,它基于开源全文检索引擎Lucene,并且采用了IKAnalyzer(智能汉字分词系统)的Java版本进行移植。Lucene是一个强大的、高性能的信息...

    支持lucene的词典机械中文分词

    本文将深入探讨一种基于Lucene的词典机械中文分词方法,该方法采用了反向机械分词算法,尤其关注对数字、英文以及中英文数字混合词的特殊处理,旨在提高分词速度和准确性。 首先,反向机械分词算法是一种常用的中文...

    lucene.net中文分词器

    本文将详细介绍一个基于Lucene.NET 2.0的中文分词器,以及它的核心——最大向前匹配算法。 中文分词是中文自然语言处理的基础步骤,它将连续的汉字序列分割成具有独立意义的词语。对于搜索引擎来说,有效的分词可以...

    lucene3庖丁解牛中文分词器

    《深入剖析:Lucene3与庖丁解牛中文分词器》 在信息技术飞速发展的今天,全文检索和搜索引擎已经成为日常开发中不可或缺的部分。Lucene作为一款强大的全文检索库,被广泛应用于各种信息检索系统中。然而,对于中文...

    中文分词及其在基于Lucene的全文检索中的应用

    《中文分词及其在基于Lucene的全文检索中的应用》这篇论文主要探讨了中文分词在全文检索系统,特别是基于Lucene平台的应用。全文检索技术是现代信息检索领域的重要组成部分,而Lucene作为一款开源的全文检索引擎框架...

    IKAnalyzer2012+lucene中文分词

    在这个组合中,IKAnalyzer是主要的中文分词器,而lucene-core则是Apache Lucene项目的基础库,用于构建全文检索应用程序。 IKAnalyzer是一个开源的Java实现的中文分词器,它的全称是"Intelligent Chinese Analyzer...

    lucene2.0与其分词工具包

    "je-analysis"可能是一个早期的中文分析器,用于对中文文本进行预处理,包括词典匹配、分词、去除停用词等步骤,以便于Lucene理解并处理中文内容。这在处理大量中文文档时尤其关键,因为中文没有明显的词边界,传统...

    lucene3.5中文分词案例

    2. 中文分词算法:Lucene 3.5默认使用了IK Analyzer(智能中文分析器),这是一种基于词典的分词方法,通过构建词典并结合正向最大匹配和逆向最大匹配算法,能够有效地对中文文本进行分词。此外,还有如HanLP、jieba...

    Lucene关于几种中文分词的总结

    相比CJKAnalyzer,它更注重中文词汇的识别,通过词典匹配来实现分词。尽管如此,ChineseAnalyzer在处理一些复杂语境和新词时可能会遇到困难。 3. IK_CAnalyzer(MIK_CAnalyzer):这是基于Lucene 2.0开发的第三方...

Global site tag (gtag.js) - Google Analytics