联高软件 >
技术文档 >
C# >
简单实用的C#分词源代码(含词库素材下载)
C#软件开发参考文档
简单实用的C#分词源代码(含词库素材下载)
发表:联高软件www.legalsoft.com.cn,本文被阅读:10286 次
摘要:文章:简单实用的C#分词源代码(含词库素材下载) 摘要:一、词库词库大概有5万多词语(Google能搜到,类似的词库都能用),我摘要如下:地区82重要81新华社80技术80会议,发表于北京联高软件有限公司技术文章栏目,代码以高亮显示。
关键字:下载, 素材, 词源, 代码, 实用, gt, summary, 字符, string, 词语, param, 中文, length, 中华, int, public, 字典, hashtable, roottable, temp
一、词库
词库大概有5万多词语(Google能搜到,类似的词库都能用),我摘要如下:
地区 82
重要 81
新华社 80
技术 80
会议 80
自己 79
干部 78
职工 78
群众 77
没有 77
今天 76
同志 76
部门 75
加强 75
组织 75
点击下面链接下载中文词库素材(纯文本文件)
http://www.legalsoft.com.cn/download/cndict.rar
第一列是词,第二列是权重.我写的这个分词算法目前并未利用权重.
二、设计思路
算法简要描述:
对一个字符串S,从前到后扫描,对扫描的每个字,从词库中寻找最长匹配.比如假设S="我是中华人民共和国公民",词库中有"中华人民共和国","中华","公民","人民","共和国"......等词.当扫描到"中"字,那么从中字开始,向后分别取1,2,3,......个字("中","中华","中华人","中华人民","中华人民共","中华人民共和","中华人民共和国",,"中华人民共和国公"),词库中的最长匹配字符串是"中华人民共和国",那么就此切分开,扫描器推进到"公"字.
数据结构:
选择什么样的数据结构对性能影响很大.我采用Hashtable _rootTable记录词库.键值对为(键,插入次数).对每一个词语,如果该词语有N个字,则将该词语的1,1~2,1~3,......1~N个字作为键,插入_rootTable中.而同一个键如果重复插入,则后面的值递增.
三、程序
具体程序如下(程序中包含权重,插入次数等要素,目前的算法并没有利用这些.可以借此写出更有效的分词算法):
进一步应该做的:
1,能识别简单的外语,数字
2,具备简单智能
3,扩充词库
然后就有实用价值了.
[C#] 关于事件处理(C#) (2915)
[C#] 验证控件介绍--RequiredFieldValidator (4263)
[C#] .NET的事务控制. (3805)
[C#] C#中动态创建控件及事件处理程序 (2839)
[C#] C#提取EXCEL文件表格并自动生成HTML页面表格[原创] (2024)
[C#] .Net中的反射使用入门 (2535)
[C#] 怎样用C#实现完整文档打印功能 (6455)
[C#] 一个用C#写的词法分析程序 (1874)
[C#] 用C#编程实现读写BINARY (3343)
[C#] 一个使用C#绘制图形引擎的Framework (3298)
[C#] 什么时候应该使用 ==?什么时候应该使用 Equals? (2352)
[C#] 浅析C#中的图形编程 (3392)
[C#] C#如何把类CLASS实例进行序列化及反序列化为XML文件 (1276)
[C#] C#,深入浅出全接触(四) (3242)
[C#] 如何在C#中实现图片缩放 (8226)
[C#] 360度全方位比较C#和VB (4390)
[C#] 一个用C#过滤HTML代码的函数 (5387)
[C#] Thread and Sync In C# (C#中的线程与同步) (2831)
[C#] C#中SOCKET多线程编程实例 (18022)
[C#] 使用C#轻松编写.Net组件 (3169)