首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

汉语言分词 庖丁解牛 2.0.0版本发布

2012-10-29 
中文分词 庖丁解牛 2.0.0版本发布庖丁解牛 最新版本2.0.0 主要变更: 1)调整了package命名 改为net.paoding

中文分词 庖丁解牛 2.0.0版本发布
庖丁解牛 最新版本2.0.0

主要变更:

1)调整了package命名 改为net.paoding.analysis开头;调整了一些类的命名,主要是XAnalyzer改为
PaodingAnalyzer之类的。

2)并调整了部分代码的相对位置:代码集中在三个包中:
net.paoding.analysis.dictionary 字典抽象--这是核心代码之一
net.paoding.analysis.knife "刀"抽象-分词算法-这是核心代码之二
net.paoding.analysis.analyzer 封装adapter到lucene接口
关键代码没有任何改变,特别是CJKKnife没有发现错误。

3)同时,将字典改为英文命名,避免操作系统中文命名带来不必要影响

4)增加了配置文件;使knife可以在配置文件配置增减,同时字典的安装路径可以随意指定。

5)BUGFIX : highlight位置错误

下载地址:[url]http://code.google.com/p/paoding/downloads/list [/url]
SVN地址:http://paoding.googlecode.com/svn/trunk/paoding-analysis/

-------------------------------
选择"庖丁解牛"作为Lucene中文分词可能有以下理由:

@设计优美-使用庖丁隐喻,容易理解代码设计

@效率极高-极高效率的字典查找算法;尽量避免无谓试探查找

@算法简练-简单易理解的算法,但效率却是非常高效的

@轻松支持最大/最小切词

@字典灵活-
字典文件个数不限;
名称不限,只要符合以dic作为扩展名的均视为字典
目录层级不限(所以可以任意加减字典目录以及目录下的字典)
字典格式简单:不需要特别排序,人工可编辑

@源代码是开放的,遵守http://www.apache.org/licenses/LICENSE-2.0协议

@作者能力:Java基础知识、设计能力扎实、持续关注改进

-------------------------------
"庖丁解牛" 使用指南

1、准备
1)将二进制包paoding-analyis.jar放到自己的classpath下

2)将字典文件安装(也就是拷贝)到某个目录下,比如/data/paoding/dic下

3)把配置文件paoding-analysis.properties放到自己的classpath下

4)打开paoding-analysis.properties,把paoding.dic.home属性设置为字
典的安装目录,比如paoding.dic.home=/data/paoding/dic,特别的,如
果字典是安装在classpath下的dic目录下,则可以简单这样配置该属性:
paoding.dic.home=classpath:dic

2、建立索引
1)将庖丁封装成符合Lucene要求的Analyzer规范,获取writer mode的lucene
分析器,writer mode意味要同时支持最大和最小切词。
Paoding paoding = PaodingMaker.make();
Analyzer writerAnalyzer = PaodingAnalyzer.writerMode(paoding);

Paoding应保存为一个系统单例为好,以重复利用,它是线程安全的.

2)使用Lucene标准API对文件建立索引。
IndexWriter writer = new IndexWriter(dirctory, writerAnalyzer);
...

3、检索查找
1)使用Lucene标准API对文件进行检索,使用和建立索引时相同种的lucene分析器。
QueryParser parser = new QueryParser("content", writerAnalyzer );
...

更具体的使用方式参见
examples/net.paoding.analysis.examples.gettingstarted中的示例代码

------------------------------
"庖丁解牛"google 论坛:
[url]http://groups.google.com/group/paoding [/url]

"中文分词" Javaeye 论坛:
http://analysis.group.iteye.com/

svn地址:
[url]http://paoding.googlecode.com/svn/trunk/paoding-analysis/ [/url]

旧版本地址:
http://paoding.googlecode.com/svn/trunk/paoding-analysis-1/
不建议下载旧版本
log.info("add knike: " + className);
paoding.addKnife(knife);
}
}
return paoding;
} catch (Exception e) {
throw new IllegalStateException("Wrong paoding properties config.",
e);
}
}
}


修改后效率大大提高:
Searching time: 188 毫秒 (第一次加载)
Searching time: 16 毫秒
Searching time: 0 毫秒
Searching time: 15 毫秒
Searching time: 0 毫秒
Searching time: 0 毫秒
Searching time: 0 毫秒



或:
Google:Spring Context下使用"庖丁解牛"

简单摘要(以上面两个链接中的说明为准,这里只是摘要):

   <bean id="writerAnalyzer" ref="paoding"/>       <property name="mode" value="1"/>   </bean>   <bean id="queryAnalyzer" ref="paoding"/>       <property name="mode" value="2"/>   </bean>   <bean id="paoding"  factory-method="make"/>


---------
补:
1、建立索引和使用索引只能使用同一种/模式的分词器
2、2.0.2以后(包含)queryMode和writerMode这两个名称将重构为更好的名称,请留意倒是的API说明或readme变更说明。<fieldType name="text" positionIncrementGap="100"> <analyzer type="index"> <tokenizer mode="index"/> ..... </analyzer> <analyzer type="query"> <tokenizer mode="query"/> ..... </analyzer></fieldType>
ps:之所以使用mode=index来代替mode=write,是因为我觉得index更加符合lucene的习惯,呵呵


或:
Google:Spring Context下使用"庖丁解牛"

简单摘要(以上面两个链接中的说明为准,这里只是摘要):

   <bean id="writerAnalyzer" ref="paoding"/>       <property name="mode" value="1"/>   </bean>   <bean id="queryAnalyzer" ref="paoding"/>       <property name="mode" value="2"/>   </bean>   <bean id="paoding"  factory-method="make"/>


---------
补:
1、建立索引和使用索引只能使用同一种/模式的分词器
2、2.0.2以后(包含)queryMode和writerMode这两个名称将重构为更好的名称,请留意倒是的API说明或readme变更说明。
    28 楼    O.Lions    2007-08-20              强烈支持  感谢这样的分享!!!      29 楼    0000    2007-08-23              我跑个题,打听一下,楼主对句子相似度有没有研究?或者有没有推荐的比较开放的资料?    30 楼    dwangel    2007-08-27              rainsf 写道我终于发现在“高亮错误”的可笑原因,在JDK1.6环境下,直接命令行来运行那几个例子,高亮就没有问题,但我在Eclipse下无论用JDK1.5还是JDK1.6,编译级别无论用5还是6,高亮都一样是错误的,在Tomcat环境下运行情况同样。以上情况看起来很可笑。
真的很郁闷,具体原因出在哪里,还没有时间考究,只知道有这样的事实。切切.王,你也在Eclipse或服务器环境下,或JDK1.5下试试吧,看看情况怎样。。。

eclipse用的编译器是自己改造过的。
如果,是仅在eclipse下出问题,可以考虑用jdk的默认编译器编译下。
ant+javac 31 楼 hlgao 2007-09-03   高亮确实有些问题,我也好奇怪的。
看了你们的说法,我换用netbeans 5.5.1重新编译了一下,发现高亮还是有问题的,会出现一些无关的内容。 32 楼 Qieqie 2007-09-03   高亮的问题是1.x的bug,已经在2.x修改,现在不存在这个问题。

上面rainsf是因为其修改了代码,未改回来导致的。---rainsf最终给我的邮件说明的。

所以,请确认是用的是2.x的。 如有疑问,站内短信联系为佳。

谢谢。

热点排行