打造自己的中文分词器之中文分词杂谈(三)
取自 自然语言处理百科
我同意要想写出一个自己的分词器,去分析别人的代码是必须的,但毫无疑问地是这肯定也是个相当痛苦的过程!
我分析过Lucene自带的StandardAnalyzer,刚开始的时候我是想要直接修改StandardAnalyzer的分词就好了,在单字分词的基础上增加基于字典分词的功能,但不久后我发现我得改弦易辙了,因为看上去实在太复杂了,我实在想不出来为啥写个分词器还要动用到javacc这个东西,没办法先去掌握了javacc这个东西如何生成java文件后,发现还是让人感觉太复杂,简单的单字分词就总共有10个类文件!所以我就转而求其他解决方法了。
我这里要感谢一下车东先生,车东先生写了些关于lucene的很好的文章在互联网上流传,为lucene的传播作出了贡献,虽然他的这些文章我记得其实就浏览过一篇,因为我觉得学像类似lucene这样的东东,买本书系统学习研究才行,像在网上找些资料就想学好Lucene我觉得是很不现实的。但车东先生写的一个CJKAnalyzer的分词器让我印象深刻,说实话,这个分词器的实际应用性不大,让我选择,我宁可选择单字分词也不会选择这样不分青红皂白的双字分词,但这个分词器的价值与意义很显然不在它的实际应用,我想车东先生当初写这款分词器的时候估计也存有这样的想法:那就是为分词器的写法提供一个思路或方向,当然前提是你得了解什么是分词器。
目前网络上流传的中文分词器很少,除了Lucene自带的StandardAnalyzer和车东先生写的CJKAnalyzer外,据我所知,还有一款免费的分词器为极易分词(MMAnalyzer,下载地址是:http: //www.zihou.com/bbs/htm_data/12/0808/14.html),这个我不知道是谁写的,也是一款基于字典的分词器,我写的这款ShuzhenAnalyzer主要功能和它是类似的,当初我没有决定自己写之前,我试用过它,结果让我很不满意,因为用起来出现了一个让我迷惑不解的问题,但很显然我没有这样一个耐性去花一天或数天的时间去查找这个原因的所在,况且我也不能查看它的源代码,我也从来不干反编译这种事。所以结果我就决定自己去写款这样的基于字典的分词器了,虽然当时我还没有一个明确的思路,只是感觉一个分词器用起来不应该这么让人头疼,用起来应该很简单才是对的,另外也觉得也是可以写出来的,于是便去干了!
除此外还有中科院的分词叫ICTCLAS,听说是很强大的,还有一款是由一家专门做分词的公司开发出来的,叫海量分词,据说是国内唯一一家专注于分词器开发的公司,做得也是很不错,听说北京一家很有名的垂直搜索引擎公司用的就是他们开发的分词器,这两款都是收费的。这些都是网络上流传的吧。当然了,肯定会有我还不知道的写得很好的,大家有需要的话可以自己去找找。
除了以上说的外,没在网络上流传的分词器当然就是类似百度公司自己写的分词器了,另外google的中文分词器用的据说是国外的一家外国公司开发的,当然了这些都属于商业性质范畴,肯定不会对外公开了。说起来百度的中文分词器在中文切分方面应该是最好的,但我并没有将其与google进行比较验证,因为我不用百度已经很久了,我只是在我思想还不成熟的学生时代用百度比较多,我觉得用google很好,在中文分词方面也没有感觉到什么不爽的。
上面说了段闲话,是因为我在想着该如何再继续写点什么东西的时候,信手随笔便写了出来,我喜欢想到哪里就写到哪里,无拘无束,感觉很爽!我记得以前听到有人写作文的时候,总是想着我要如何如何写,如何如何构思,结果到最后却硬是蹦不出几个字来,而那些信手随笔,想哪写哪的人作文可能却偏偏做得好,道理便是如此。
转自:http://www.blogjava.net/bbmonkey62/archive/2008/07/04/212684.html
作者为:bbmonkey62

