论坛首页 Java企业应用论坛

基于词典的最大匹配的Lucene中文分词程序

浏览 26889 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-11  

把自己之前完成的基于词典的最大匹配的中文分词程序修改成基于Lucene。其中包括了3种词典的组织形式:简单顺序存储SimpleDictionary,首字Hash词典HashDictionary,双重Hash词典;例外实现了两种分词算法:正向最大匹配MaxMatchSegment与反向最大匹配分词ReverseMaxMatchSegment;最后使用使只需根据需要配置spring的配置文件即可选择词典的组织方式与分词算法组装成为分词程序。

运行所需:spring-core.jar   lucene-core.jar

希望大家能试用一下我的分词程序,指出我设计的不足,共同学习。

接下来的目标:完成1、寻找更优的词典组织 2、统计识别未登录词 3、人名识别 4、歧义消除

  • src.rar (15.3 KB)
  • 描述: 原代码
  • 下载次数: 1012
   发表时间:2007-03-11  
补充一些文件
0 请登录后投票
   发表时间:2007-03-11  
最后补充词典文件
0 请登录后投票
   发表时间:2007-06-21  
楼主,字典文件。您的格式为.stu。请问如何打开。
0 请登录后投票
   发表时间:2007-06-21  
我在字典中插入一个新词。再次分词。结果一样啊。
0 请登录后投票
   发表时间:2007-06-22  
delphixf 写道
楼主,字典文件。您的格式为.stu。请问如何打开。

词典文件是我用Java ObjectWriter将整个词典类实例序列化后写入的文件,用户也可以使用自己自定义txt文件作为词典,使用方法如下:

DictionaryImpl dic=new HashDictionary();
dic.loadDictionary("词典.txt");

另外用户也可以使用我预先定义好的文件stu

DictionaryUtil<HashDictionary> util=new Dictionary<HashDictionary>();
HashDictionary dic=util.readDictionary("HashDic.stu");

0 请登录后投票
   发表时间:2007-06-28  
DictionaryUtil<HashDictionary> util=new Dictionary<HashDictionary>();
HashDictionary dic=util.readDictionary("HashDic.stu");
dic.insertWord("非负权图");

在HashDictionary中插入新词“非负权图”,再次运用这个字典分词,结果:
基于,0,2)
(非,2,3)
(负,3,4)
(权,4,5)
(图,5,6)
(最短路径,6,10)
(算法,10,12)
(中文,12,14)
(分词的,14,17)
(研究,17,19)
楼主!请教
0 请登录后投票
   发表时间:2007-07-03  
为什么要基于字典分词呢? 难道就为了节省空间
(最短路径,6,10)
如果我查 最短 就会没有返回, 这难道对吗? 反正google不是这样的。
我还是倾向于一元分词, 更精确。
0 请登录后投票
   发表时间:2007-07-04  
amigobot 写道
为什么要基于字典分词呢? 难道就为了节省空间
(最短路径,6,10)
如果我查 最短 就会没有返回, 这难道对吗? 反正google不是这样的。
我还是倾向于一元分词, 更精确。


楼上说的没错,基于词典的分词用于建立索引时不能很好地将所有内容都涵盖,所以后来我对算法做了一下改进,在基于词典的基础上加入了一元分词来希望把内容都涵盖进去。

PS:基于词典的分词主要是想用在对查询语句进行切分。而且中文分词不止应用在搜索引擎领域,还能用在机械翻译等方面,这样基于词典分词就有意义了
0 请登录后投票
   发表时间:2007-07-04  
delphixf 写道
DictionaryUtil<HashDictionary> util=new Dictionary<HashDictionary>();
HashDictionary dic=util.readDictionary("HashDic.stu");
dic.insertWord("非负权图");

在HashDictionary中插入新词“非负权图”,再次运用这个字典分词,结果:
基于,0,2)
(非,2,3)
(负,3,4)
(权,4,5)
(图,5,6)
(最短路径,6,10)
(算法,10,12)
(中文,12,14)
(分词的,14,17)
(研究,17,19)
楼主!请教


我在我最新的版本上试了一下是可以识别,可能是我在发布这个版本的代码有误,对你造成不便,实在是对不起。我把我新版本的代码上传了,麻烦你更新一下,谢谢
  • src.zip (91.9 KB)
  • 下载次数: 649
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics