CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

Lucene中文分词下载(支持 全切分算法 和 最大匹配算法)

楼主linliangyi2006()2006-12-14 15:08:33 在 Java / Web 开发 提问

将分词应用与搜索,通常有“匹配率”和“准确度”的矛盾,有的用户希望输入“人民”能查出“人民币”相关记录,有的用户则希望能提供相对语义精确的信息,这个矛盾大家是如何解决的,有兴趣的一起来讨论一下。  
   
  为了解决这个矛盾,就写了两种算法的  
   
  正反向全切分算法:  
   
  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人死亡&shy;,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   =   无家可归  
   
  问题点数:0、回复次数:12Top

1 楼corn8888()回复于 2006-12-14 15:16:17 得分 0

upTop

2 楼ruanjiantaotao(涛涛)回复于 2006-12-14 15:17:31 得分 0

不错~Top

3 楼linliangyi2006()回复于 2006-12-21 13:18:08 得分 0

最新V1.1版分词器,已更新。  
   
  1.修订了对数量次切分的BUG  
  2.修订了对大文本切分时的重复输出BUG  
   
  下载地址    
  http://groups-beta.google.com/group/SegWord/web/IKAnalyzer.jarTop

4 楼linliangyi2006()回复于 2006-12-26 18:20:33 得分 0

如果用户发现google下载不能使用(经常出现下载一半的现象),可以在以下链接下载:  
   
  [url]http://download.csdn.net/source/160366[/url]Top

5 楼linliangyi2006()回复于 2006-12-27 13:00:15 得分 0

<href=http://download.csdn.net/source/160366>Lucene中文分词器   V1.1   CSDN下载</href>  
   
  <href=http://groups-beta.google.com/group/SegWord/web/IKAnalyzer.jar>Lucene中文分词器   V1.1   Google   下载</href>Top

6 楼YuLimin(阿敏总司令:简单就是美—钻石闪闪您快结贴!)回复于 2006-12-28 20:00:38 得分 0

GoodTop

7 楼linliangyi2006()回复于 2006-12-30 10:17:11 得分 0

新版本V1.2已经发布  
  1.优化词典  
  2.优化对人名,公司名,未知词汇切分  
   
   
  <href=http://download.csdn.net/source/160428>Lucene中文分词器   V1.2   CSDN下载</href>  
   
  <href=http://groups-beta.google.com/group/SegWord/web/IKAnalyzer.jar>Lucene中文分词器   V1.2   Google   下载</href>Top

8 楼pdvv(花猫)回复于 2006-12-30 10:19:41 得分 0

upTop

9 楼linliangyi2006()回复于 2007-01-10 16:12:42 得分 0

最新V1.3版分词器,已更新。  
   
  1.优化数词切分  
  2.优化算法效率  
   
  下载地址:  
  [url=http://download.csdn.net/source/160562]Lucene中文分词器   V1.3   CSDN下载[/url]  
   
  [url=http://groups-beta.google.com/group/SegWord/web/IKAnalyzerV1.3.jar]Lucene中文分词器   V1.3   Google下载[/url]Top

10 楼YuLimin(阿敏总司令:简单就是美—钻石闪闪您快结贴!)回复于 2007-01-11 13:32:44 得分 0

为啥不进行开源分享呢:)Top

11 楼linliangyi2006()回复于 2007-01-11 15:27:34 得分 0

不是不想开源,这点上我也想了很久,目前中国的开源环境不好亚,对开源的做法不让人认可,所以本人只在私下交流,不做开源。Top

12 楼linliangyi2006()回复于 2007-01-19 11:44:51 得分 0

最新V1.4版分词器,已更新。  
  1.修订特定情况下数量词切分造成指针越界异常的BUG  
  2.进一步优化算法效率  
  3.优化词典  
  4.对英文和数词改为分割处理  
   
   
  下载地址:  
  [url=http://download.csdn.net/source/160753]Lucene中文分词器   V1.4CSDN下载[/url]  
   
  [url=http://segword.googlegroups.com/web/IKAnalyzer1.4.rar]Lucene中文分词器   V1.4   Google下载[/url]  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:linliangyi2006

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo