`
linliangyi2007
  • 浏览: 1013156 次
  • 性别: 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.Net.rar 2.0 ver asp.net 组件

    Lucene.Net不仅支持英文,还提供了多种语言的分词器,如中文、法语、德语等,确保了不同语言的文本都能得到正确的处理。 **6. 丰富的API** Lucene.Net提供了一套完整的API,开发者可以通过这些API进行索引创建、...

    盘古分词DLL文件

    1. 引入DLL:在开发环境中,将PanGu.dll和PanGu.Lucene.Analyzer.dll添加到项目引用中,确保程序可以访问到这些分词组件。 2. 调用API:通过编程语言提供的DLL调用机制,如C#中的DllImport特性,或者.NET中的...

    lucene中文搜索

    Lucene为此提供了一些专门的中文分词器,例如IK Analyzer、SmartChineseAnalyzer和jieba分词等。这些分词器能将连续的汉字流切割成一个个有意义的词语,为后续的索引和搜索做准备。 2. **词典(Dictionary)**: ...

    Lucene的简单介绍

    索引过程包括准备需要索引的文档、通过分词组件去除标点和停用词、通过语言处理组件进行词元处理(例如转换为小写和词根)、最后将处理后的词(Term)传给索引组件,生成字典和文档的倒排链表。 Lucene索引的结构由...

    lucene in action 电子版

    - **分析器**:深入讲解了Lucene中的分析器组件,包括分词器、过滤器等,以及如何定制化分析流程以满足特定需求。 - **高级分析技巧**:介绍了如何通过组合不同的分析器来提高搜索质量,例如去除停用词、进行词干...

    lucene.ppt

    Lucene不仅用于构建搜索引擎,还可以作为其他项目的组件,如: - Compass:提供ORM集成,让Lucene能与数据库或对象持久化框架配合。 - Nutch:一个开源的Web搜索引擎项目,基于Lucene构建。 - Heritrix:一个可配置...

    Lucene in Action 2nd Edition MEAP Jun 2010

    - **分词**:介绍Lucene如何将文本分成更小的单元,以便于索引和搜索。 - **词干提取和同义词处理**:讨论了如何通过词干提取(Stemming)和同义词处理来增强搜索结果的相关性。 - **自定义分析器**:介绍了如何开发...

    lucene索引

    分词器是 Lucene 将文本分解成可搜索的单词(术语或 tokens)的组件。它根据语言规则和停用词表来处理输入文本。 #### 1.4 分词过滤器(Token Filter) 分词过滤器在分词器之后工作,可以进行词形还原、删除停用词...

    开放源代码的全文检索引擎_Lucene归纳.pdf

    对于像英文这样的语言,词和字符是相同的,但中文等语言需要进行词法分析(如分词)来实现按词检索,这是中文全文检索中的一个挑战。 全文检索系统是基于全文检索理论的软件系统,通常包括建立索引、查询处理、用户...

    lucene2.2API

    - **Analyzer**:在Lucene中,Analyzer是处理文本的关键组件,负责将输入的文本分解为可搜索的词项(tokens)。Lucene 2.2提供了多种Analyzer实现,如StandardAnalyzer,它按照英语语言规则处理文本。 - **...

    一个专业搜索公司关于lucene+solar资料(1)

    - Lucene内置了一些中文分词器,如SmartChineseAnalyzer。 - 可以根据不同的应用场景选择合适的分词器。 - **5.1.2 Lietu中文分词的使用** - Lietu是一款中文分词工具,支持自定义词典等功能。 - 可以灵活应用...

    小旋风垂直搜索平台,快速拱建垂直搜索引擎

    小旋风是一款集多任务、多线程智能网络爬虫、基于xml / xpath的路径规则的数据抽取系统、无缝集成lucene.net2.3全文索引系统,高性能中文分词组件、多数据库支持的综合垂直搜索引擎平台。 它帮您快速搭建任何一个您...

    搜索引擎Luecne技术--助教PPT

    尽管Lucene本身不是一个完整的搜索引擎解决方案,但它提供了构建此类解决方案所需的基础组件。 - **全文检索系统的结构** 全文检索系统的基本结构通常包括以下几个部分: - 数据采集:获取文档或网页等数据源。 ...

    知识库设计

    Document是用来描述文档的,Field是用来描述一个文档的某个属性的,Analyzer是在一个文档被索引之前,需要对文档内容进行分词处理的,IndexWriter是Lucene用来创建索引的一个核心的类,Directory是用来存储索引的...

    benchLucene-开源

    该项目使用了MultiFieldQueryParser,这是Lucene中的一个关键组件。MultiFieldQueryParser允许用户输入包含多个字段的复杂查询,并自动处理这些查询的解析和分析。它支持各种查询语法,包括布尔运算符(AND、OR、NOT...

    elasticsearch-6.2.2.zip、kibana-6.2.2-windows-x86_64.zip.rar

    6. 自动分词和智能搜索:使用Lucene的分词器,支持多种语言。 Kibana 6.2.2 是一个基于Web的可视化界面,用于Elasticsearch的数据探索和可视化。它允许用户通过交互式的仪表板来展示和理解数据: 1. 可视化构建器...

    ElasticSearch.zip

    ik分词器是Elasticsearch在处理中文文本时非常重要的组件,它能够将中文文本进行有效的分词,从而提高搜索的准确性和效率。 首先,我们来详细了解一下Elasticsearch。Elasticsearch基于Lucene库构建,但提供了更高...

    基于java的搜索引擎案例设计与实现

    Java中,我们可以使用Lucene的Analyzer类,它包含不同的分词策略,如基于空格、标点符号或其他规则的分词。 3. **倒排索引(Inverted Index)**:这是搜索引擎的关键数据结构。倒排索引将每个词映射到包含该词的...

    淘特搜索引擎共享版-tot-search-engine.zip

    这个项目可能包含了搜索引擎的核心组件、数据处理模块、索引构建与更新机制以及查询处理和结果排序等功能。从“tot_search_engine.zip”这个文件名来看,我们可以推测这是一份压缩包,其中可能包含源代码、配置文件...

Global site tag (gtag.js) - Google Analytics