分词很显然是第一步。在我看来分词有两个层次:
1、把一句话中的词语按照其所代表的含义分开;(搜索引擎的分词到这一步基本就可以了)
2、对第一个环节分词结果加上词性标注;(动词,名词,等等)
小叮咚的分词程序现在只是基本完成了上面的第一个部分。
要做完第2部分非常困难,首先需要一个分词词性词库,其次需要一个好的算法来标注词性。
这大概就是小叮咚的分词程序一直无法提高的原因吧。
于是就准备参考国内有名的 计算所汉语词法分析系统ICTCLAS, 先看看人家是如何实现的。
汉语词法分词系统 ICTCLAS 是中国科学院的两位研究员开发的一套广受专家好评的汉语分词系统。该系统的功能有:中文分词;词性标注;未登录词识别。详细信息可以看这里。由于对方提供了源代码,所以分析ICTCLAS是个很好的起点。(现在ICTCLAS提供了 windows 和 Linux 下的动态链接库,还没有 Java 和 C# 版本的,我想如果顺利的话这个系列的文章写完,就应该可以实现C#和java版本的了,呵呵)
当然在好的东西也有缺点,在我看来ICTCLAS最大的缺点是没有文档。就像JBOSS,代码虽然免费,可是没有文档,很多人只好乖乖的交服务费或者购买文档了。这也算是一种盈利模式吧,给作者的劳动一些补偿。
分词的两个重点分别是一个好的词库和一套好的分词算法。ICTCLAS 无疑在这两方面都是很出色的。
本篇重点分析一下ICTCLAS所采用的词库的格式。
ICTCLAS 使用的词库是以dct结尾的文件。
我实现的解析ictclas4j。 可直接导入eclipse运行。
词库:这里有一个例子。