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

    近日,对中文分词算法研究,用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

你可能感兴趣的:(Java&Android)