欢迎来到天天文库
浏览记录
ID:21964082
大小:15.15 KB
页数:9页
时间:2018-10-25
《npl 最大匹配分词new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告Ytinrete课程:自然语言处理导论题目:实现中文分词算法1.实验目的实现中文分词程序2.方法介绍从可行性(对我而言)的角度考虑,我只能实现基于字符串匹配的分词算法。具体为:1.从字典中将词全部存入内存当中。2.将词典的词一个一个跟待处理文件字节匹配,取最大的匹配长度并打印出空格。3.继续读入直到将待处理文件读完。3.源程序//假设字典文件处于相对目录文件名:dic.txt,其中的单词以每行一词存储//源文件为:1998-01-qiefen-file.txt//待处理文件处于相对目录文件名:target.txt(通过kill_space消除空行)//生成文件处于相对目录文件名
2、:complete.txtkill_space.cpp#include#include#include#include/*Name:删除空格Description:删除空格*/usingnamespacestd;intmain(){FILE*f_in,*f_out;//输入输出文件charch;f_in=fopen("1998-01-qiefen-file.txt","r");f_out=fopen("target.txt","w");ch=getc(f_in);while(EOF!=ch){if(''!=ch&&''
3、!=ch)putc(ch,f_out);ch=getc(f_in);}return0;}fenci.cpp/*Name:中文分词程序Description:实现中文分词*/#include#include#include#includeusingnamespacestd;constchar*file_in="1998-01-qiefen-file.txt";constchar*file_out="complete.txt";constchar*dictionary="dic.txt";mapdic;
4、voidinit(void)//初始化,存储字典进map{intcount=0;FILE*dic_in;dic_in=fopen(dictionary,"r");stringword;charch;ch=getc(dic_in);while(EOF!=ch){count++;if(''!=ch){word.append(1,ch);}else{dic.insert(pair(word,count));word.clear();}ch=getc(dic_in);}//cout<5、f_out;//输入输出文件charch1,ch2;stringletter,word,temp_word;f_in=fopen(file_in,"r");f_out=fopen(file_out,"w");ch1=getc(f_in);ch2=getc(f_in);letter.append(1,ch1);letter.append(1,ch2);word=letter;//初始化ch1=getc(f_in);while(EOF!=ch1){ch2=getc(f_in);letter.clear();letter.append(1,ch1);letter.append(1,ch2);6、//temp_word.clear();temp_word=word;temp_word+=letter;if(dic.find(temp_word)!=dic.end()){//找到//word.clear();word=temp_word;}else{//找不到for(inti=0;i7、何抄袭。首先从算法上机械式匹配显然不能满足分词的要求,其次我采用的是顺序匹配,每一次都要遍历整个词典,效率低下,并且词典我是上网找的。(只有252739也就是大概二十五万个词)匹配效果客观来说感觉不是很好,由于词典的缺陷导致很多词无法识别。拿个例子来说,老师提供的源文档:迈向充满希望的新世纪——一九九八年新年讲话(附图片1张)中共中央总书记、国家主席江泽民(一九九七年十二月三十一日)12月31日,中共中央总书记、国家主席江泽民发表1998年新年
5、f_out;//输入输出文件charch1,ch2;stringletter,word,temp_word;f_in=fopen(file_in,"r");f_out=fopen(file_out,"w");ch1=getc(f_in);ch2=getc(f_in);letter.append(1,ch1);letter.append(1,ch2);word=letter;//初始化ch1=getc(f_in);while(EOF!=ch1){ch2=getc(f_in);letter.clear();letter.append(1,ch1);letter.append(1,ch2);
6、//temp_word.clear();temp_word=word;temp_word+=letter;if(dic.find(temp_word)!=dic.end()){//找到//word.clear();word=temp_word;}else{//找不到for(inti=0;i7、何抄袭。首先从算法上机械式匹配显然不能满足分词的要求,其次我采用的是顺序匹配,每一次都要遍历整个词典,效率低下,并且词典我是上网找的。(只有252739也就是大概二十五万个词)匹配效果客观来说感觉不是很好,由于词典的缺陷导致很多词无法识别。拿个例子来说,老师提供的源文档:迈向充满希望的新世纪——一九九八年新年讲话(附图片1张)中共中央总书记、国家主席江泽民(一九九七年十二月三十一日)12月31日,中共中央总书记、国家主席江泽民发表1998年新年
7、何抄袭。首先从算法上机械式匹配显然不能满足分词的要求,其次我采用的是顺序匹配,每一次都要遍历整个词典,效率低下,并且词典我是上网找的。(只有252739也就是大概二十五万个词)匹配效果客观来说感觉不是很好,由于词典的缺陷导致很多词无法识别。拿个例子来说,老师提供的源文档:迈向充满希望的新世纪——一九九八年新年讲话(附图片1张)中共中央总书记、国家主席江泽民(一九九七年十二月三十一日)12月31日,中共中央总书记、国家主席江泽民发表1998年新年
此文档下载收益归作者所有