欢迎来到天天文库
浏览记录
ID:57697130
大小:26.09 KB
页数:16页
时间:2020-09-01
《中文信息处理.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、甘肃政法学院本科生实验报告(一)姓名:学院:信息工程学院专业:信息管理与信息系统班级:2013级信息管理与信息系统实验课程名称:中文信息处理原理实验日期:2015年4月9日开课时间:2014-2015学年二学期甘肃政法学院实验管理中心印制实验题目自动分词小组合作否姓名班级2013级信息管理与信息系统学号一、实验目的1.了解中文分词意义2.掌握中文分词的基本方法3.掌握四种分词方法“词典正向最大匹配法、词典逆向最大匹配、基于确定文法的分词法、基于统计的分词方法”。二.实验环境Win764位DEV-C
2、++编译器三、实验内容与步骤1、词典正、逆向最大匹配法2、词典正、逆向最小匹配法3、邻近匹配4、最短路径匹配词典逆向最大匹配法,基本思路是:1、将词典的每个词条读入内存,最长是4字词,最短是1字词;2、从语料中读入一段(一行)文字,保存为字符串;3、如果字符串长度大于4个中文字符,则取字符串最右边的4个中文字符,作为候选词;否则取出整个字符串作为候选词;4、在词典中查找这个候选词,如果查找失败,则去掉这个候选词的最左字,重复这步进行查找,直到候选词为1个中文字符;5、将候选词从字符串中取出、删除,
3、回到第3步直到字符串为空;6、回到第2步直到语料已读完。词典正向最大匹配法,基本思路是:1、将词典的每个词条读入内存,最长是4字词,最短是1字词;2、从语料中读入一段(一行)文字,保存为字符串;3、如果字符串长度大于4个中文字符,则取字符串最左边的4个中文字符,作为候选词;否则取出整个字符串作为候选词;4、在词典中查找这个候选词,如果查找失败,则去掉这个候选词的最右字,重复这步进行查找,直到候选词为1个中文字符;5、将候选词从字符串中取出、删除,回到第3步直到字符串为空;6、回到第2步直到语料已读
4、完。邻近匹配,基本思路是:1、对于待切分的一段字符串C0C1C2…Cn-1,根据C0C1得到所有以C0C1为首的词条集W,如果词条集为空,则将C0切分出来。2、否则取满足max{k
5、C0C1…Ck∈W}的字符串C0C1…Ck切分出来。1、然后将后面的剩余字符串Ck+1…Cn-1作为新的待切分字符串进行同样的处理,直到待切分串为空为止。四、实验过程与分析逆向最大匹配法源代码:#include#include#include#include6、ream>#include#include#include#include#defineMaxWordLength12//最大词长字节(即4个汉字)#defineSeparator""//词界标记#defineUTF8_CN_LEN3//汉字的UTF-8编码为3字节usingnamespacestd;usingnamespace__gnu_cxx;namespace__gnu_cxx{template<>structh7、ash{size_toperator()(conststd::string&x)const{returnhash()(x.c_str());}};}hash_mapwordhash;//词典//读入词典voidget_dict(void){stringstrtmp;//读取词典的每一行stringword;//保存每个词typedefpairsipair;ifstreaminfile("CoreDic8、t.txt.utf8");if(!infile.is_open()){cerr<<"Unabletoopeninputfile:"<<"wordlexicon"<<"--bailingout!"<>word;//读入每行第一个词wordhash.insert(sipair(wo9、rd,1));//插入到哈希中}infile.close();}//删除语料库中已有的分词空格,由本程序重新分词stringdel_space(strings1){intp1=0,p2=0;intcount;strings2;while(p2p1)s2+=s1.substr(p1,p2-p1);p2++;p1=p2;}else{p2++;}}s2+=s1.substr(p1,p2-p1);retu
6、ream>#include#include#include#include#defineMaxWordLength12//最大词长字节(即4个汉字)#defineSeparator""//词界标记#defineUTF8_CN_LEN3//汉字的UTF-8编码为3字节usingnamespacestd;usingnamespace__gnu_cxx;namespace__gnu_cxx{template<>structh
7、ash{size_toperator()(conststd::string&x)const{returnhash()(x.c_str());}};}hash_mapwordhash;//词典//读入词典voidget_dict(void){stringstrtmp;//读取词典的每一行stringword;//保存每个词typedefpairsipair;ifstreaminfile("CoreDic
8、t.txt.utf8");if(!infile.is_open()){cerr<<"Unabletoopeninputfile:"<<"wordlexicon"<<"--bailingout!"<>word;//读入每行第一个词wordhash.insert(sipair(wo
9、rd,1));//插入到哈希中}infile.close();}//删除语料库中已有的分词空格,由本程序重新分词stringdel_space(strings1){intp1=0,p2=0;intcount;strings2;while(p2p1)s2+=s1.substr(p1,p2-p1);p2++;p1=p2;}else{p2++;}}s2+=s1.substr(p1,p2-p1);retu
此文档下载收益归作者所有