lucene中文分词组件(词典全切分算法)下载

下载地址:
http://groups-beta.google.com/group/SegWord/web/IKAnalyzer.jar

IKAnalyzer基于lucene2.0版本API开发,实现了以词典分词为基础的正反向全切分算法,是Lucene Analyzer接口的实现,代码使用例子如下:


import org.mira.lucene.analysis.IK_CAnalyzer <------- 引用类
import .....

public class IKAnalyzerTest extends TestCase {

RAMDirectory directory;
private IndexSearcher searcher;

public void setUp() throws Exception {

directory = new RAMDirectory();



IndexWriter writer = new IndexWriter(directory,
new IK_CAnalyzer(), <------- 实例化类
true);

Document doc = new Document();
doc.add(Field.Keyword("partnum", "Q36"));
doc.add(Field.Text(
"description", "Illidium Space Modulator"));
writer.addDocument(doc);
writer.close();
searcher = new IndexSearcher(directory);

}

public void testTermQuery() throws Exception {
Query query = new TermQuery(new Term(
"partnum", "Q36"));
Hits hits = searcher.search(query);
assertEquals(1, hits.length());
}
}

分词效果测试,命令行如下:
java -classpath IKAnalyzer.jar;lucene-core-2.0.0.jar org.mira.lucene.analysis.IK_CAnalyzer 中华人民共和国香港特别行政区


该算法适合与互联网用户的搜索习惯和企业知识库检索,用户可以用句子中涵盖的中文词汇搜索,如用“人民”搜索含“人民币”的文章,这是大部分用户的搜索思维;
不适合用于知识挖掘和网络爬虫技术,全切分法容易造成知识歧义,因为在语义学上“人民”和“人民币”是完全搭不上关系的。

分词效果:

1.实现中文单词细粒度全切分

如:中华人民共和国
0 - 2 = 中华
0 - 4 = 中华人民
0 - 7 = 中华人民共和国
1 - 3 = 华人
2 - 4 = 人民
2 - 7 = 人民共和国
4 - 6 = 共和
4 - 7 = 共和国

2.实现对专有名词的识别和切分(人名,公司名)

如:陈文平是开睿动力通讯科技有限公司董事长
0 - 3 = 陈文平 <------ 人名,非汉语词汇
4 - 6 = 开睿 <------ 公司名,非汉语词汇
6 - 8 = 动力
8 - 10 = 通讯
10 - 12 = 科技
12 - 14 = 有限
12 - 16 = 有限公司
14 - 16 = 公司
16 - 18 = 董事
16 - 19 = 董事长
18 - 19 = 长

3.对数词和量词的合理切分

如:据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡,20000余人受伤,近20万人无家可归。
0 - 1 = 据
1 - 4 = 路透社
4 - 6 = 报道
。。。。。。
18 - 20 = 官员
20 - 22 = 星期
20 - 23 = 星期二
22 - 23 = 二
24 - 26 = 29
24 - 27 = 29日
26 - 27 = 日
28 - 30 = 表示
31 - 33 = 日惹
33 - 34 = 市
。。。。。。
40 - 42 = 27
40 - 43 = 27日
43 - 44 = 晨
44 - 45 = 5
44 - 46 = 5时
45 - 46 = 时
46 - 48 = 53
46 - 49 = 53分
48 - 50 = 分发
。。。。。。
52 - 54 = 里氏
54 - 57 = 6.2
54 - 58 = 6.2级
57 - 58 = 级
58 - 60 = 地震
。。。。。。
66 - 70 = 5427
66 - 71 = 5427人
71 - 73 = 死亡
72 - 73 = 亡
74 - 79 = 20000
79 - 81 = 余人
81 - 83 = 受伤
84 - 85 = 近
85 - 87 = 20
85 - 89 = 20万人
87 - 89 = 万人
89 - 93 = 无家可归

新增最大分词算法分词器

下载地址:
http://groups-beta.google.com/group/SegWord/web/IKAnalyzer.jar

实现类 : org.mira.lucene.analysis.MIK_CAnalyzer

效果测试命令行:
java -classpath IKAnalyzer.jar;lucene-core-2.0.0.jar org.mira.lucene.analysis.MIK_CAnalyzer 中华人民共和国香港特别行政区


分词效果:

例子:中华人民共和国香港特别行政区

0 - 7 = 中华人民共和国
7 - 14 = 香港特别行政区

例子:陈文平是开睿动力通讯科技有限公司董事长

0 - 3 = 陈文平
4 - 6 = 开睿
6 - 8 = 动力
8 - 10 = 通讯
10 - 12 = 科技
12 - 16 = 有限公司
16 - 19 = 董事长

例子:据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡?,20000余人受伤,近20万人无家可归。

1 - 4 = 路透社
4 - 6 = 报道
7 - 12 = 印度尼西亚
12 - 14 = 社会
14 - 16 = 事务
18 - 20 = 官员
20 - 23 = 星期二
24 - 27 = 29日
28 - 30 = 表示
31 - 33 = 日惹
34 - 36 = 附近
36 - 40 = 当地时间
40 - 43 = 27日
44 - 46 = 5时
46 - 49 = 53分
48 - 50 = 分发
49 - 51 = 发生
50 - 52 = 生的
52 - 54 = 里氏
54 - 58 = 6.2级
58 - 60 = 地震
60 - 62 = 已经
62 - 64 = 造成
64 - 66 = 至少
66 - 71 = 5427人
71 - 73 = 死亡
75 - 80 = 20000
80 - 82 = 余人
82 - 84 = 受伤
86 - 90 = 20万人
90 - 94 = 无家可归

不错,中文切分词很重要,决定了站内搜索的质量。推荐到首页。

另外,整理一些lucene相关文章,Compass开始引人注目,主要是其将index放在数据库实现,这样,对于应付大访问负载,进行服务器集群cluster提供了基本条件。

最新11月份老外的一篇Compass文章介绍:
Compass: Integrate Search into your apps

http://www.infoq.com/articles/compass-search-tutorial

IKAnalyzer2.0.2 源码及jar包下载: http://www.richmap.cn/bbs/page/bbs_3409_1.html