lucene中文分词组件共享
IKAnalyzer基于lucene2.0版本API开发,实现了以词典分词为基础的 正反向全切分 以及 正反向最大匹配切分 两种算法,是Lucene Analyzer接口的实现,代码使用例子如下:
下载地址:
Lucene中文分词器 V1.2 CSDN下载
Lucene中文分词器 V1.2 Google下载
正反向全切分算法:
实现类 : org.mira.lucene.analysis.IK_CAnalyzer
分词效果测试,命令行如下:
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 = 无家可归
最大匹配分词算法
实现类 : 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 = 香港特别行政区
?例子:据路透社报道,印度尼西亚社会事务部一官员星期二(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 = 无家可归
?
1 楼 liangwj72 2007-09-17 哇,不错,不错,好东西。能介绍一下里面的人名等未登录词识别算法吗?