中文分词程序实验报告

中文分词程序实验报告

ID:12907569

大小:52.50 KB

页数:7页

时间:2018-07-19

中文分词程序实验报告_第1页
中文分词程序实验报告_第2页
中文分词程序实验报告_第3页
中文分词程序实验报告_第4页
中文分词程序实验报告_第5页
资源描述:

《中文分词程序实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、汉语分词程序实验报告一、程序功能描述:本程序每次处理时都用缓冲区的数据从头开始去存储语料库的链表中匹配一个最长的词语来输出,如若没有匹配到的词语则单独输出该首字。为了简化程序所以语料库和预备分词文章都统一采用ASCII码的编码方式,并且不允许文中出现英语单字节编码。别且本程序没有对未登录词和未声明数据结构格式进行处理,都按照普通汉字进行了分词,因此在最后的性能比较中这部分的准确率很差,但是在语料库有存储的部分中都是用最长匹配原则进行了分词,准确率还是达到了很高的水平。分词符采用//+空格的方式来标记分词。语料库的名字默认为:语料库

2、.txt,打开方式为只读读取的文件名字默认为:resource.txt,打开方式为只读输出的文件名字默认为:result.txt,打开方式默认为追加的方式二、算法思路:(1)、从文件中读取语料库存储在内存中,组织成单链表的存储方式(2)、组织以首字的ASCII码为下标的哈希表指向语料库链表(3)、从文件中读满输入缓冲区,以缓冲区的首字的ASCII码做为下标从哈希表中查找首字相同的内存地址。(4)、从该地址开始逐条匹配,记录其中匹配最长的词语的长度和地址。写入文件中并写入分词符。(5)、读满缓冲区,若文件已经读取完毕则查看缓冲区是否

3、用尽,若已经用完则执行第(6)步,否则重复(4)过程。(6)、释放申请的内存空间,程序结束。三、数据结构:typedefstructcoredict{//使用链表来存储语料库chardata[9];structcoredict*nextPtr;}CoreDict,*CoreDictPtr;CoreDictPtrtablePtr=NULL,tailPtr=NULL,newPtr;//指向语料库链表的头和尾CoreDictPtrHash[65536]={NULL};//一个以匹配词语的第一个字的ASCII码为下标的指向链表的哈希表in

4、tMatchLength=0;//在一个单词匹配过程中用来记录能够匹配到的最长的词语的长度CoreDictPtrMatchPtr=NULL;//在一个单词匹配过程中用来记录能够匹配到的最长的词语在链表中的地址四、函数功能:intIsEqual(char[],char[]);//判断两个汉字是否相等intLongMatch(char[],char[]);//voidread(char[],FILE*);//将读入缓冲区读满voidsetoff(char[],int);//将已经匹配好的词语从缓冲区中删除一、性能对比分析:程序性能描述

5、:在语义的判别和歧义消除方法只是用最长匹配法来降低误差,因此这部分的性能提升不是很明显。本程序没有对未登录词和未声明数据结构格式进行处理,都按照普通汉字进行了分词,因此在最后的性能比较中这部分的准确率比较差,但是在语料库有存储的部分中都是用最长匹配原则进行了分词,准确率还是达到了很高的水平。另外由于语料库规模的限制以及为了程序简化着想在普通词汇的搭配,例如形容词的组合方面还有一些低频词的分词方面也有些不是很高效。现有成熟分词程序的情况和大致性能:经过十几年的研究,汉语自动分词技术取得了令人瞩目的成果,出现了一些实用的自动分词系统,

6、如:北京航空航天大学的cDws分词系统、清华大学的SEG分词系统和sE(玎AG分词系统等,这些系统在分词的精确度(精度达到99%以上)和分词速度(速度达到千字,s)方面都具有相当的水平。六、程序性能提高方向:(1).要能识别一些常见的数据格式,例如年月日、电话号码等。(2).可以跳过一些乱码,例如一串乱字符串,还有数字串等。(3).增加判别字符类型的函数,用来判别英文字符、汉语字符、还有另外的字符(4).建立词语之间关联性的数据库,可以从语义方面,甚至语用方面来从逻辑上增加分词的准确性,以达到消除歧义的目的。要是程序能增加上述的功

7、能准确度应该可以达到90%以上。七、源代码:#includetypedefstructcoredict{chardata[9];structcoredict*nextPtr;}CoreDict,*CoreDictPtr;CoreDictPtrtablePtr=NULL,tailPtr=NULL,newPtr;CoreDictPtrHash[65536]={NULL};intMatchLength=0;CoreDictPtrMatchPtr=NULL;intIsEqual(char[],char[]);//判断两个

8、汉字是否相等intLongMatch(char[],char[]);voidread(char[],FILE*);voidsetoff(char[],int);main(){inti;chartemp[9],ch[3],pre[3]={""};un

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。