花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也没把"中文信息处理基础"看完.想看完,估计我得先去 "数据结构自考网站" 把算法基础打好再说。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?