`
linliangyi2007
  • 浏览: 1004028 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

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 中华人民共和国香港特别行政区

java 代码
  1. import org.mira.lucene.analysis.IK_CAnalyzer  <------- 引用类   
  2. import .....   
  3.   
  4. public class IKAnalyzerTest extends TestCase {   
  5.   
  6.  RAMDirectory directory;   
  7.  private IndexSearcher searcher;   
  8.     
  9.  public void setUp() throws Exception {   
  10.   
  11.   directory = new RAMDirectory();   
  12.   
  13.     
  14.   
  15.   IndexWriter writer = new IndexWriter(directory,   
  16.    new IK_CAnalyzer(),  <------- 实例化类   
  17.    true);   
  18.   
  19.   Document doc = new Document();   
  20.   doc.add(Field.Keyword("partnum""Q36"));   
  21.   doc.add(Field.Text("description""Illidium Space Modulator"));   
  22.   writer.addDocument(doc);   
  23.   writer.close();   
  24.   searcher = new IndexSearcher(directory);   
  25.   
  26.  }   
  27.   
  28.  public void testTermQuery() throws Exception {   
  29.   Query query = new TermQuery(new Term("partnum""Q36"));   
  30.   Hits hits = searcher.search(query);   
  31.   assertEquals(1, hits.length());   
  32.  }   
  33. }   
  34.   


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

分词效果:

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 = 无家可归

 

分享到:
评论
2 楼 ilovephll 2007-09-17  
真是碰到好东西了
1 楼 liangwj72 2007-09-17  
哇,不错,不错,好东西。能介绍一下里面的人名等未登录词识别算法吗?

我自己也曾经写过一个最大概率切词的工具,和你一样,把散列的单字按多元切词法合并一下。于是索引和检索也是需要分成为两个不同的Analyzer。但一直没搞定人名、地名识别的问题。

这是我所见过的最好的java的切词器。真强啊。干嘛不放到论坛上?放在这个地方太少人看到了,9个月过去了,居然是0条评论...

相关推荐

    Lucene中文分词组件 JE-Analysis 1.5.1

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

    Lucene中文分词器组件

    Lucene中文分词器组件,不错的。

    Lucene中文分词器包

    来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器。 1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP) 2. 对数量词、地名、路名的...

    lucene.NET 中文分词

    lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮

    Lucene中文分词组件 JE-Analysis 1.4.0

    分词效率: 第一次分词需要1-2秒(读取词典),之后速度基本与Lucene自带分词持平 运行环境: Lucene 1.9+ 内存消耗: 30M+ 1.4.0 —— 2006-08-21 增加词典的动态扩展能力 1.3.3 —— 2006-07...

    lucene中文分词公用组件V1.3

    1.修正了1.2版本在数量词处理的缺陷 2.优化分词性能 3.优化词典 请参考lucene中文分词公用组件V1.2之前版本使用说明

    lucene中文分词器(paoding解牛)

    lucene搜索引擎中文分词器,版本2.0.4,强大的中文分词效果在其它中文分词器当中独领风骚

    lucene中文分词公用组件V1.4

    在lucene中文分词公用组件V1.3基础上做一下更新: 1.修订特定情况下数量词切分造成指针越界异常的BUG 2.进一步优化算法效率 3.优化词典 4.对英文和数词更改为分割处理

    Lucene.Net中文分词组件 Lucene.Net.Analysis.Cn

    Lucene.Net中文分词组件 Lucene.Net.Analysis.Cn

    lucene中文分词工具包

    IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包,将一段文字进行IK分词处理一般经过:词典加载、预处理、分词器分词、歧义处理、善后结尾 五个部分

    lucene中文分词jar包

    关于lucene中文分词的一个辅助jar包

    Lucene3.0分词系统.doc

    Lucene3.0分词系统.doc

    转 Lucene中文分词组件 JE-Analysis 1.5.1 天狼

    博文链接:https://phantom.iteye.com/blog/66068

    lucene3.0 分词器

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

    lucene分词测试代码

    用java写的图形分词测试的小东西,用的分词器是: 来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器,其使用“正向全切分算法”,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I...

    Lucene中文分词源码详解

    Lucene,作为一种全文搜索的辅助工具,为我们进行条件搜索,无论是像Google,Baidu之类的搜索引 擎,还是论坛中的搜索功能,还是其它C/S架构的搜索,都带来了极大的便利和比较高的效率。本文主要是利用Lucene对MS Sql...

    Lucene与中文分词技术的研究及应用

    Lucene与中文分词技术的研究及应用Lucene与中文分词技术的研究及应用Lucene与中文分词技术的研究及应用

Global site tag (gtag.js) - Google Analytics