1.
分词算法采用的是最大匹配算法,按从左至右正向最大匹配和从右到左反向最大匹配,当两种分词结果不一致时,按最少切分原则,取切分词数最少的一种,如果两种分词结果切分的词数一样,取反向最大匹配作为分词的结果,这种分词的结果准确率在99%以上,可以满足一般的应用和需求。
2.
建立一个字典,字典由多个子字典组成,每个子字典的单词字数相同且已经排序,以独立文件的形式存储于磁盘,字典支持新单词的导入。对于要一段文字,首先过滤一次,把源文件按标点、英文字母、数字、其它符号分解成一个List,list中若包含中文的为要分词的最小单位,如:你好,你是哪的ABC人,过滤的结果为 你好/,/你是哪的/ABC/人,要切分的部分有 你好 你是哪的 人 三部分,然后按分词算法对这三个部分切分。
3.
首先导入词库,词库是纯文本文件,每个单词一行,然后可以开始分词,具体运行参见com.xq.Execute.java。词库我用的是“中文词库素材”,大家可以在网上搜到,在此非常感谢“中文词库素材”的作者。
4.
没有字典时,导入“中文词库素材3.2\词库\标准词库\去除拼音字母的标准词库213663词条.TXT”这个文件用时17890毫秒,导入单词数212512,z在这个字典上再导入“中文词库素材3.2\词库\专业扩充词库\区县地名(大词库不包含).txt”用时500毫秒,导入单词:1747,速度还是比较快的。对一篇两千字的文章分词用时110毫秒,准确率在99%以上,当词库越完善,准确率会更高。总体来看,导入词库、分词速度和准确度对于一般的应用是可接受的。测试电脑配置:P43.2,1G内存。
这次先写到这,欢迎大家与我一起交流,如果大家觉得有必要,我将用几期博客详细解析所有的源代码,我个人的研究方向是中文分词,希望今后能带给大家更好的分词源码。
点击此下载源码
引用:http://www.blogjava.net/xq-studio/archive/2007/09/27/148608.html