中文自动分词程序文档.DOCVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中文自动分词程序文档 田硕 张顺昌 (软件所) 汉语自动分词算法按照不同分类标准,可以分为基于规则、基于统计的分词方法和基于词典切分、无词典切分两种。本程序采用词典切分、基于规则的方法实现汉语自动分词。由于很难取得大规模的标注语料,所以我们没有采取基于统计的方法来做分词,而是采取基于词典的自动分词,依照词典newdict.txt(计算所自然语言处理平台下载)采用正向最大匹配算法对输入文件自动分隔处理,得到输出结果。而且效果还是不错的。 本文第一部分主要介绍程序实现中的词典处理、正向最大匹配算法和自动分词的过程,第二部分程序的测评结果及分析,最后大体介绍作业分工及使用方法。 程序实现 该程序按照特定的中文词典,来进行自动分词。其中使用的分词词典来源于计算所自然语言处理平台的共享词典,运用正向最大匹配算法,得到分词处理之后的输出结果。 1.1词典处理 对于字典的组织,经过简单的统计分析,我们发现汉语中双字的词占多数,所以该程序采用基于双字hash的分词词典机制[1],其结构分为三级,前两级为索引。这样可以快速的定位待分词,可以明显的提高分词的效率。 1) 首字Hash 索引 首字Hash 索引的每个单元包括三项内容: ①关键字(2 bytes) :词的第一个汉字A ; ②是否为词(1 bit) :标示单个首字A 是否为词; ③次字Hash 索引指针(4 bytes) :指向以汉字A 起始的所有词语的第二个汉字的索引。 2) 次字Hash 索引(仅对能跟第一个字构成‘词或词的前缀’的字建立,与第一个字无关的 汉字并无相应结点) 次字Hash 索引的每个单元也包括三项内容: ①关键字(2 bytes) :词的第二个汉字B ; ②是否为词(1 bit) :标示双字串AB 是否为词; ③剩余字串组指针(4 bytes) :指向以双字串AB 起始的所有词语的剩余字串有序数组。 3) 剩余字串组 剩余字串组是以双字串AB 起始的所有词语剩余字串的有序数组,每个单元包括两项内容: ①剩余字串(不定长2n bytes) :除去词的前两个字(A、B) 后的剩余部分; ②是否为词(n - 1 bit) :标示从第一个汉字A 至对应位置的子串是否也构成一个词。 利用动态分配的内存空间存储。装载词典时动态申请内存空间,整个程序中都不会释放,直到程序退出。这样可以提高分词的效率。 详细结构见下图: 1.2正向最大匹配算法     for(i=0; ilen; i++) { while(!strncmp(p, str[i].han_item, num)) { strncpy(record,str[i].han_item, num); record[num]=\0; num+=2; } if(strlen(str[i].han_item)==(num-2)) oldnum = num-2; else num = oldnum; if(oldnumdis) dis = oldnum; } return dis; 1.3分词处理流程 a.载入分词词典 b.建立双字hash结构 c.读入待分词文件的一行,并调用处理函数标志分词位置。 d. 根据上步做出的分词标志分词,并将用空格分开的词写入到输出文件,转c直至待分词文件结束。 e.从内存中卸载词典,释放内存,退出。 2.测评 我们用两篇中文文章(test1.txt、 test2.txt, 摘自kyxk.net文学版帖子)作为测试用例,对该程序进行测评: 正确率P=切分结果中正确词次数/评测语料中总词次数[3] 对上面提到的两篇文章(分别为3KB和4KB)做了测试,平均正确率为: P = 95.27% [注:]可能是字典的原因或者是测试集太小的缘故,正确率不是很高。再就是没考虑切分歧义的问题,但对于一般应用还是可以了。 任务分工 田硕 (软件所 200628015029025)主要完成了词典收集,论文整理,设计等准备工作和文档撰写等后续工作。 张顺昌 (软件所 200628015029049)主要完成了双字hash结构的设计和代码实现部分,主要是用标准C来实现的,还包括最后测试部分。 程序运行方法 程序最后输出为hanseg.exe, 是在命令行下运行的,开发是在Windows下实现的。但采用的是标准C,所以可以很方便的移植到UNIX/Linux-like平台下面(只需重新编译一下即可)。其运行方法如下: C:\hanseg input_file output_file input_file :待分词的输入文件 output_file:分词结果输出文件。 [注]:由于每次处理的是一个字符串,所以很容易从源

文档评论(0)

sunhongz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档