花2周时间开发的中文分词终于有点小样了

 花了近2周的时间,自己开发的中文分词程序终于有点小样了.在这两周的中文分词开发中,不断挑战自己的基础,感觉中文分词涉及到的东西越来越“研究级”, 像我等非"研究级"coder还是要适可而止啊。

目前而言,只实现了以下功能:
1,中英文,数字混合识别,比如
 微软(Microsoft)是一家年收入上100亿的世界性软件公司
 微软/(/Microsoft/)/是/一家/年收入/上/100/亿/的/世界性/软件/公司/

2,全角字符识别
 SUN已经开放了JAVA的源代码
 SUN/已经/开放/了/JAVA/的/源代码/

3,时间日期识别
 2007年2月17日是中国的除夕
 2007年2月17日/是/中国/的/除夕/

4,基于Strategy设计模式实现算法可扩充

5,可训练和扩充的词典设计
  通过语料库的训练可以扩大词典收录的词汇数,而且可以提供更有价值的概率信息。特别是对于一些专属行业。如果没有现成的优选专业词典。通过训练学习的方式习得是最佳方式.

6,基于概率的复合算法
 目前基于匹配的分词算法大部分都采用正向/反向最大化算法,而一般认为反向最大化优于正向最大化,但有时候正向分出的结果却比反向更优,所以通过计算总的概率来选择最优的分词结果:
 比如: 中国是世界上5个常任理事国之一
 反向: 中/国是/世界/上/5/个/常任/理事国/之一/
 正向: 中国/是/世界/上/5/个/常任/理事国/之一/
 所以正向的结果是最优的。而正向的切分的词出现的总概率也是最高的.

7,人名识别
 人名识别是所有新词识别技术中最成熟的。因为姓名是有规律,比如姓+名,但是简单应用这些规则,不但不能很好识别名字,反而对其他的分词识别产生干扰。有点可惜,人名识别还未实现。

总结一下。我参考过的资料(评价仅代表我个人观点):
1,
名称:ShootSearch 中文分词组件(c#开源)
地址:http://gforge.osdn.net.cn/frs/?group_id=96
评价:一个完整可用的中文分词组件。包含中英文,数字混合识别,非常感谢开发者的共享;其中人名基于简单的"姓+名"的识别方式,并不可靠。基于正向最大匹配算法,准确性不是很高。另外的整个组件的架构和代码质量比较一般。但基于国内.net开发者的现状。能做到这个程度而且还是开源的,已属不易。

2,
名称:Mini分词器(Java开源)
地址:http://sourceforge.net/projects/wordsegment/
评价:仅仅是一个demo,而且只考虑"中文"切分,不过这个demo提供了一个很好原型,架构和设计思想都值得借鉴。而且还提供了详细的中文设计文挡。实属不可多得的参考资料.

3,
名称:中文信息处理基础
地址:http://ccl.pku.edu.cn/doubtfire/Course/Chinese%20Information%20Processing/2002_2003_1.htm
评价:北大中文系语言学专业研究生课程,做中文分词不得不看。而且还提供了很不错的语言素材资料。

其他比较零散的资料,意义不是很大。 能把上面三份资料完全研习好,估计开发的分词程序已经比较准确了。到目前为止,ME也没把"中文信息处理基础"看完.想看完,估计我得先去 "数据结构自考网站" 把算法基础打好再说。

 

posted @ 2007-02-12 09:48  kwklover  阅读(7480)  评论(24编辑  收藏  举报