`
Qieqie
  • 浏览: 340032 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Lucene中文分词“庖丁解牛”

阅读更多

 Lucene中文分词 “庖丁解牛”

 附件 为本人设计编写的组件,中文分词“庖丁解牛”,具有相当好的使用价值。。。

高效率:我的赛扬PC 1 秒解析 >>> 20000汉字的词语  (实际测试结果数据,可达1秒10万+汉字。)
高可维护性:使用“庖丁”隐喻,形象明晰
高灵活性,可扩展:OOD

对比:《终于突破中文分词的效率问题》http://www.lucene.org.cn/read.php?tid=54&fpage=2 他的效率为 6秒 解析2588汉字
 

2007-08-08:

由于庖丁解牛进行了一些调整和重构,这里的附件代码已经是"较旧"的,最新的下载地址:

http://code.google.com/p/paoding/downloads/list

SVN地址为:http://paoding.googlecode.com/svn/trunk/paoding-analysis/ 

同时也可以通过浏览器访问http://paoding.googlecode.com/svn/trunk/paoding-analysis/  直接浏览代码。

最新的在JavaEye的发布帖子是:

http://www.iteye.com/topic/110148   中文分词 庖丁解牛 2.0.0 发布

 

  • Paoding.rar (1.1 MB)
  • 描述: 中文分词“庖丁解牛”,面向对象,高效率,高扩展性
  • 下载次数: 6782
  • HashBinaryDictionary.java.rar (2.2 KB)
  • 描述: 原来的HashBinaryDictionary.java使用对第一个字符hash+二份查找。这个算法已经不错。 但下面的更新使用了更好的策略。可连续hash词语的字符。理论上这个词典算法应该到达极致了。 覆盖HashBinaryDictionary.java在com/sohospace/dictionary下
  • 下载次数: 2578
  • Main1.java.rar (6.1 KB)
  • 描述: 对一个长度2185856的字符串(4,347,520字节)的分词效率测试。 下载解压后添加到源文件中
  • 下载次数: 2402
分享到:
评论
12 楼 wuyunlong 2007-01-24  
对违禁词汇的屏蔽应该很有意义
11 楼 corbe 2007-01-24  
不哦从,好冻死。
10 楼 Qieqie 2007-01-24  
“庖丁解牛”隐喻:

庖丁是一个能够游刃有余分解牛骨与肉的人。给他一块牛肉(Beef),他能够知道怎样切(dissect)这个肉,把切好的肉放到篮子里(Collector)。

在外人看来,庖丁犹如一个刀神。

他是拥有一系列利刀(Knife)的神。他知道遇到什么肉(字符以及其上下文)就该使用什么样的刀:遇到字母肉,就用字母刀LetterKnife;遇到阿拉伯数字肉,就用NumberKnife刀;遇到中文肉,就用CJKKnife刀,...

这些刀都配备放在刀箱KnifeBox中,这个刀箱可配置不同的刀,应付时势的变化:将来可能会出现火星肉,到时可以放上火星刀...他打算以后采用Spring作为配置文件配置Knife到KnifeBox中.

有一天,庖丁被Lucene发现,引进了他,为其成立了一个新部门(配2成员XAnalyzer和XTokenizer),请他为Lucene服务,从此他如遇知人,拼命、有效地工作着...

9 楼 菲利浦思 2007-01-23  
Qieqie 写道
菲利浦思 写道
这种切分还是有很明显的缺点.例如下面一段文字:
"发展社区老年活动场所和服务设施"

如果我想搜索日本的和服相关资料,输入关键字"和服"的时候,上面的资料也会被搜索出来



搜索引擎是第一步搜索:
      在浩瀚的信息中,快速集结最后可能是所想要的结果,按照可能是最好的顺序展现出来。

人的眼睛是第二步搜索:
      找寻最符合要求的结果,同时将机器无法轻易识别的少数“无效”结果过滤

“和服”问题,涉及了汉语语义的问题,几乎不可完全解决(可作为“特例”解决,或通过排序方法,将他排到相对靠后等价解决)。



实话实说本人之前就是遇到这样的问题,到目前为止还是没有解决,因为不是做语言研究,感觉知识不够用,目前做个项目还要做词性分析,很难!大家继续加油!
8 楼 SteveGY 2007-01-23  
Qieqie 写道
菲利浦思 写道
这种切分还是有很明显的缺点.例如下面一段文字:
"发展社区老年活动场所和服务设施"

如果我想搜索日本的和服相关资料,输入关键字"和服"的时候,上面的资料也会被搜索出来



搜索引擎是第一步搜索:
      在浩瀚的信息中,快速集结最后可能是所想要的结果,按照可能是最好的顺序展现出来。

人的眼睛是第二步搜索:
      找寻最符合要求的结果,同时将机器无法轻易识别的少数“无效”结果过滤

“和服”问题,涉及了汉语语义的问题,几乎不可完全解决(可作为“特例”解决,或通过排序方法,将他排到相对靠后等价解决)。




所以引入rank参数还是应该考虑的,rank的算法决定了这类问题发生时的结果序列。
7 楼 lighter 2007-01-23  
有点不对啊
是精华贴,为什么楼主的积分显示"积分:62";
精华贴应该是加一百分的啊:"评价帖子的建议标准:非常好的主题帖可以点击评为精华,加100分"
6 楼 lighter 2007-01-23  
谢谢,下载来测试..
前一排自己也有写过关于lucene的几篇文章;中文分词的确是一个难点
这一篇文章我加入专栏啦,让更多人了解一下
5 楼 Qieqie 2007-01-23  
菲利浦思 写道
这种切分还是有很明显的缺点.例如下面一段文字:
"发展社区老年活动场所和服务设施"

如果我想搜索日本的和服相关资料,输入关键字"和服"的时候,上面的资料也会被搜索出来



搜索引擎是第一步搜索:
      在浩瀚的信息中,快速集结最后可能是所想要的结果,按照可能是最好的顺序展现出来。

人的眼睛是第二步搜索:
      找寻最符合要求的结果,同时将机器无法轻易识别的少数“无效”结果过滤

“和服”问题,涉及了汉语语义的问题,几乎不可完全解决(可作为“特例”解决,或通过排序方法,将他排到相对靠后等价解决)。


4 楼 菲利浦思 2007-01-23  
这种切分还是有很明显的缺点.例如下面一段文字:
"发展社区老年活动场所和服务设施"

如果我想搜索日本的和服相关资料,输入关键字"和服"的时候,上面的资料也会被搜索出来
3 楼 菲利浦思 2007-01-23  
速度不错,将自动切分和词表切分2个机制的结合得也不错
评分:90分
加油!继续努力!希望能够做到自动识别大多数人名
2 楼 Qieqie 2007-01-23  
示例代码2: 建立索引时...

XAnalyzer analyzer = XFactory.getWriterAnalyzer();//建立索引时应使用的分析器   
String testString = "中华人民共和国在1949年建立,从此开始了新中国的伟大篇章";   
Reader r = new StringReader(testString);   
XTokenizer ts = (XTokenizer) analyzer.tokenStream("", r);   
  
Token t;   
while ((t = ts.next()) != null) {   
   System.out.println(t);   
}   


-------------------
以上是旧版本的paoding的示例代码,新版本的代码应是:

// 将庖丁封装成符合Lucene要求的Analyzer规范
Paoding paoding = PaodingMaker.make();
Analyzer writerAnalyzer = PaodingAnalyzer.writerMode(paoding);
...



解析结果如下:
(中华,0,2)
(中华人民,0,4)
(中华人民共和国,0,7)
(华人,1,3)
(人民,2,4)
(人民共和国,2,7)
(共和,4,6)
(共和国,4,7)
(1949,8,12)
(1949年,8,13)
(年,12,13)
(建立,13,15)
(从此,16,18)
(开始,18,20)
(新中国,21,24)
(中国,22,24)
(伟大,25,27)
(大,26,27)
(大篇,26,28)
(篇章,27,29)
1 楼 Qieqie 2007-01-23  
示例代码:搜索时...
XAnalyzer analyzer = XFactory.getQueryAnalyzer();//搜索时应使用的分析器
String testString = "中华人民共和国在1949年建立,从此开始了新中国的伟大篇章";
Reader r = new StringReader(testString);
XTokenizer ts = (XTokenizer) analyzer.tokenStream("", r);

Token t;
while ((t = ts.next()) != null) {
   System.out.println(t);
}

-------------------
以上是旧版本的paoding的示例代码,新版本的代码应是:

// 将庖丁封装成符合Lucene要求的Analyzer规范
Paoding paoding = PaodingMaker.make();
Analyzer queryAnalyzer = PaodingAnalyzer.queryMode(paoding);
...


解析结果如下:
(中华人民共和国,0,7)
(1949年,8,13)
(建立,13,15)
(从此,16,18)
(开始,18,20)
(新中国,21,24)
(伟大,25,27)
(大篇,26,28)
(篇章,27,29)

相关推荐

    lucene 中文分词 庖丁解牛

    《Lucene中文分词:庖丁解牛》 在信息技术高速发展的今天,全文搜索引擎已经成为网站内容检索不可或缺的一部分。其中,Apache Lucene作为一个开源的全文检索库,被广泛应用于各种项目中,尤其对于处理中文文本,...

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

    《Lucene中文分词——庖丁解牛》 在自然语言处理领域,中文分词是基础且关键的一环。在Java开发中,Apache Lucene是一个强大的全文搜索引擎库,但默认并不支持中文,这就需要借助第三方分词工具。本文将深入探讨...

    lucene3庖丁解牛中文分词器

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

    Lucene 庖丁解牛分词法2.4版本jar包

    总的来说,"庖丁解牛分词法"为Lucene提供了一种高效的中文分词解决方案,显著提升了中文信息检索的准确性和用户体验。通过不断优化和更新,如"paoding-analysis-2.0.4-alpha2"这样的分词工具,使得开发者能够更好地...

    paoding analysis 3.0.1 jar (庖丁解牛分词器)

    由于庖丁官方目前提供可下载尚不支持Lucene 3.0以上版本。因此作者对paoding进行重新编译,使其与最新Lucene 3.0.1版本适用。 Latest paoding 3.0.1 for lucene 3.0.1 使用说明: 先下载2.0.4的版本(h t t p : / ...

    lucene中文分词器(paoding解牛)

    Paoding这个名字来源于中国古代的一种宰牛技术,寓意其对中文文本的“解构”能力,如同庖丁解牛般精细入微。 Paoding的核心特点包括: 1. **智能词典**:Paoding使用了一种动态加载的词典机制,能够根据上下文信息...

    庖丁解牛工具

    “Lucene分词器”是"庖丁解牛工具"的一个重要组成部分。Apache Lucene是一个高性能、全文本搜索库,它是Java开发者常用来构建搜索引擎的工具。而"庖丁解牛"则为Lucene提供了针对中文的分词支持,使得开发者可以更好...

    Lucene加庖丁解牛测试类

    本文将深入探讨“Lucene加庖丁解牛测试类”,旨在帮助读者理解Lucene的核心概念,并通过实际的测试类解析,提升对Lucene的运用能力。 首先,我们需要理解“庖丁解牛”的含义。这源自古代典故,意指做事技艺娴熟,能...

    适用于lucene..5的庖丁解牛分词器

    可以适用于lucene3.5的庖丁解牛分词器jar包

    lucene Analyzer 庖丁解牛 中文分词

    《Lucene Analyzer剖析:中文分词的奥秘》 在信息检索领域,Lucene作为一款强大的全文搜索引擎库,被广泛应用于各种系统中。其核心功能之一就是对输入文本进行高效精准的分词处理,以便进行后续的索引和查询操作。...

    Lucene3.0以上版本庖丁解牛分词法demo

    最新庖丁解牛分词法的使用demo,支持Lucene3.3、3.4等3.0以上版本,庖丁解牛的分词包为自己编译生成的,之前的2.0的版本不能支持Lucene3.0以上版本,所以需要从svn下载最新的庖丁解牛源码,生成jar文件(我同样已...

    庖丁解牛,一种中文分词器

    总的来说,"庖丁解牛"分词器是中文信息处理领域的一个强大工具,它与Lucene的结合进一步增强了对中文文本的处理能力。对于需要处理大量中文文本的开发者来说,掌握这款分词器的使用和集成技巧是非常有价值的。通过...

    庖丁解牛 源码 for Lucene 2.4

    《庖丁解牛 源码 for Lucene 2.4》是一份针对开源全文搜索引擎Lucene 2.4版本的深度解析资料。这个压缩包包含的文件名为"paoding-for-lucene-2.4",很可能是针对中文处理的Paoding Lucene库的源代码分析或扩展。...

    lucene3.0 分词器

    lucene3.0 中文分词器, 庖丁解牛

    sorlr + tomcat+ 庖丁解牛中文分词 配置文档

    标题 "sorlr + tomcat+ 庖丁解牛中文分词 配置文档" 提到的是一个关于在Apache Solr中集成Tomcat服务器,并利用庖丁解牛中文分词工具进行中文处理的配置教程。这个配置过程对于搭建支持中文搜索的Solr环境至关重要。...

    lucene最新版本加庖丁解牛实现搜索引擎

    《使用Lucene最新版与庖丁解牛方法构建搜索引擎》 在信息技术日新月异的今天,搜索引擎已经成为了我们获取信息的重要工具。Apache Lucene是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发中。本文将...

    支持Lucene3.3、3.4的庖丁解牛分词法的源码和jar包

    资源为庖丁解牛分词法的最新源码以及生成的jar包,支持最新的Lucene3.4以及Lucene3.0以上版本。Jar包为本地生成,大家也可以到SVN上检出自己生成,另外庖丁解牛分词法的使用Demo我会接下来上传一份,欢迎分享。

    lucene3.0庖丁+索引搜索程序

    《深入剖析Lucene3.0:庖丁解牛与索引搜索实践》 在IT行业中,搜索引擎技术扮演着至关重要的角色,而Lucene作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene3.0版本,结合“庖丁解...

    庖丁解牛分词器jar包

    Paoding's Knives 中文分词具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。 高效率:在PIII 1G内存个人机器上,1秒 可准确分词 100万 汉字。 采用基于 不限制个数 的词典文件对文章...

Global site tag (gtag.js) - Google Analytics