中文分词源代码解析和下载[转]

    近日,对中文分词算法研究,用java写了一个分词程序,在此与大家一起分享。由于本人精力有限,希望大家能把在实际运行过程中出现的分词不准确的部分回馈给我,也便于进一步的完善。下面简要描述设计思路和算法。

1.       分词的算法

分词算法采用的是最大匹配算法,按从左至右正向最大匹配和从右到左反向最大匹配,当两种分词结果不一致时,按最少切分原则,取切分词数最少的一种,如果两种分词结果切分的词数一样,取反向最大匹配作为分词的结果,这种分词的结果准确率在99%以上,可以满足一般的应用和需求。

2.       程序设计

建立一个字典,字典由多个子字典组成,每个子字典的单词字数相同且已经排序,以独立文件的形式存储于磁盘,字典支持新单词的导入。对于要一段文字,首先过滤一次,把源文件按标点、英文字母、数字、其它符号分解成一个Listlist中若包含中文的为要分词的最小单位,如:你好,你是哪的ABC人,过滤的结果为 你好//你是哪的/ABC/人,要切分的部分有 你好 你是哪的 三部分,然后按分词算法对这三个部分切分。

3.       使用方法

首先导入词库,词库是纯文本文件,每个单词一行,然后可以开始分词,具体运行参见com.xq.Execute.java。词库我用的是“中文词库素材”,大家可以在网上搜到,在此非常感谢“中文词库素材”的作者。

4.       测试

没有字典时,导入“中文词库素材3.2\词库\标准词库\去除拼音字母的标准词库213663词条.TXT”这个文件用时17890毫秒,导入单词数212512,z在这个字典上再导入“中文词库素材3.2\词库\专业扩充词库\区县地名(大词库不包含).txt”用时500毫秒,导入单词:1747,速度还是比较快的。对一篇两千字的文章分词用时110毫秒,准确率在99%以上,当词库越完善,准确率会更高。总体来看,导入词库、分词速度和准确度对于一般的应用是可接受的。测试电脑配置:P43.21G内存。

这次先写到这,欢迎大家与我一起交流,如果大家觉得有必要,我将用几期博客详细解析所有的源代码,我个人的研究方向是中文分词,希望今后能带给大家更好的分词源码。

点击此下载源码

引用:http://www.blogjava.net/xq-studio/archive/2007/09/27/148608.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值