编写简单的中文分词程序
日期:2007年5月18日 作者: 查看:[大字体 中字体 小字体]-
几个月之前,在网上找到了一个中文词库素材(几百K),当时便想写一个分词程序了.我对汉语分词没有什么研究,也就凭自己臆想而写.若有相关方面专家,还请多给意见.
一、词库
词库大概有5万多词语(Google能搜到,类似的词库都能用),我摘要如下:
地区 82
重要 81
新华社 80
技术 80
会议 80
自己 79
干部 78
职工 78
群众 77
没有 77
今天 76
同志 76
部门 75
加强 75
组织 75
第一列是词,第二列是权重.我写的这个分词算法目前并未利用权重.二、设计思路
算法简要描述:
对一个字符串S,从前到后扫描,对扫描的每个字,从词库中寻找最长匹配.比如假设S="我是中华人民共和国公民",词库中有"中华人民共和国","中华","公民","人民","共和国"......等词.当扫描到"中"字,那么从中字开始,向后分别取1,2,3,......个字("中","中华","中华人","中华人民","中华人民共","中华人民共和","中华人民共和国",,"中华人民共和国公"),词库中的最长匹配字符串是"中华人民共和国",那么就此切分开,扫描器推进到"公"字.
数据结构:
选择什么样的数据结构对性能影响很大.我采用Hashtable _rootTable记录词库.键值对为(键,插入次数).对每一个词语,如果该词语有N个字,则将该词语的1,1~2,1~3,......1~N个字作为键,插入_rootTable中.而同一个键如果重复插入,则后面的值递增.
三、程序
具体程序如下(程序中包含权重,插入次数等要素,目前的算法并没有利用这些.可以借此写出更有效的分词算法):
ChineseWordUnit.cs //strUCt--(词语,权重)对
1 public struct ChineseWordUnit
2 {
3 private string _word;
4 private int _power;
5
6 /**//// <summary>
7 /// 中文词语单元所对应的中文词。
8 /// </summary>
9 public string Word
10 {
11 get - [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 下一页
-
- 编写简单的中文分词程序 相关文章:
- ·ASP.NET编写简单的中文分词程序
- 编写简单的中文分词程序 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:ASP.NET控件开发之
精品推荐
热点TOP10
- ·常用网页播放器代码
- ·网页播放器代码全集及详细说明[精]
- ·Jsp分页原代码,及用法
- ·WEB编程开发常用的代码
- ·网页中的多媒体播放控制
- ·几个日期特效的代码
- ·十七款播放器的特点介绍 下载
- ·Membership角色与权限管理
- ·42个网页设计小技巧
- ·常用辅助代码
- ·总结网页代码常用小技巧,网页制作必学
- ·层(div或table)的左右滚动
- ·网页javascript精华代码集
- ·ASP里使用MD5加密的函数及示例
- ·微软网页制作:Expression Web初窥
- ·position:relative/absolute等级
- ·世界上最有用100个网站你是否关注过?
- ·select发展史
- ·5种Web图像格式简述 图片说明版
- ·太有创意了!看看这些让人称绝的404错误页面
