基于词典的最大匹配的Lucene中文分词程序
把自己之前完成的基于词典的最大匹配的中文分词程序修改成基于Lucene。其中包括了3种词典的组织形式:简单顺序存储SimpleDictionary,首字Hash词典HashDictionary,双重Hash词典;例外实现了两种分词算法:正向最大匹配MaxMatchSegment与反向最大匹配分词ReverseMaxMatchSegment;最后使用使只需根据需要配置spring的配置文件即可选择词典的组织方式与分词算法组装成为分词程序。
运行所需:spring-core.jar?? lucene-core.jar
希望大家能试用一下我的分词程序,指出我设计的不足,共同学习。
接下来的目标:完成1、寻找更优的词典组织 2、统计识别未登录词 3、人名识别 4、歧义消除
1 楼 billgmh 2007-03-11 补充一些文件 2 楼 billgmh 2007-03-11 最后补充词典文件 3 楼 jelly 2007-03-14 顶,很好,这个很有研究价值 4 楼 cngump 2007-03-14 不错.支持。 5 楼 echo_0815 2007-03-21 支持,感谢billgmh 6 楼 duooluu 2007-03-21 改天来学习 7 楼 Gellan 2007-04-22 那里有lucene-core.jar?谢谢 8 楼 hgjn 2007-04-24 我对你这个分词方法非常感兴趣!代码有点长,美女能不能顺便给个测试的程序啊 ?
我的邮箱是:hgjn007@163.com
我们可有长期探讨探讨
谢谢!
9 楼 eagleming 2007-06-11 请教楼主,怎么在nutch下运用啊
zhm0953@126.com 10 楼 delphixf 2007-06-21 楼主,字典文件。您的格式为.stu。请问如何打开。 11 楼 delphixf 2007-06-21 我在字典中插入一个新词。再次分词。结果一样啊。 12 楼 dihin 2007-06-21 楼主的头像我很喜欢 呵呵 13 楼 billgmh 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");
14 楼 delphixf 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)
楼主!请教
15 楼 amigobot 2007-07-03 为什么要基于字典分词呢? 难道就为了节省空间
(最短路径,6,10)
如果我查 最短 就会没有返回, 这难道对吗? 反正google不是这样的。
我还是倾向于一元分词, 更精确。 16 楼 billgmh 2007-07-04 amigobot 写道为什么要基于字典分词呢? 难道就为了节省空间
(最短路径,6,10)
如果我查 最短 就会没有返回, 这难道对吗? 反正google不是这样的。
我还是倾向于一元分词, 更精确。
楼上说的没错,基于词典的分词用于建立索引时不能很好地将所有内容都涵盖,所以后来我对算法做了一下改进,在基于词典的基础上加入了一元分词来希望把内容都涵盖进去。
PS:基于词典的分词主要是想用在对查询语句进行切分。而且中文分词不止应用在搜索引擎领域,还能用在机械翻译等方面,这样基于词典分词就有意义了 17 楼 billgmh 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)
楼主!请教
我在我最新的版本上试了一下是可以识别,可能是我在发布这个版本的代码有误,对你造成不便,实在是对不起。我把我新版本的代码上传了,麻烦你更新一下,谢谢 18 楼 linliangyi2007 2007-08-15 http://download.csdn.net/source/227957
这个分词器也是基于正向切分算法的,跟楼主交流一下 19 楼 billgmh 2007-08-15 linliangyi2007 写道http://download.csdn.net/source/227957
这个分词器也是基于正向切分算法的,跟楼主交流一下
应该是我向你多学习才对,对很多算法的理解不是很透彻…… 20 楼 linliangyi2007 2007-08-27 修订版更新了
IKAnalyzer V2.0.2 Lucene中文分词器下载地址 : http://download.csdn.net/source/236243