版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一、中文分词一、实验内容用正向最大匹配法对文档进行中文分词,其中:(1)wordlist.txt 词表文件 (2)pku_test.txt 未经过分词的文档文件 (3)pku_test_gold.txt 经过分词的文档文件二、实验所采用的开发平台及语言工具 visual c+ 6.0三、实验的核心思想和算法描述本实验的核心思想为正向最大匹配法,其算法描述如下假设句子: , 某一词 ,m 为词典中最长词的字数。(1) 令 i=0,当前指针 pi 指向输入字串的初始位置,执行下面的操作:(2) 计算当前指针 pi 到字串末端的字数(即未被切分字串的长度)n,如果n=1,转(4),结束算法。否则
2、,令 m=词典中最长单词的字数,如果nm, 令 m=n;(3) 从当前 pi 起取m个汉字作为词 wi,判断: (a) 如果 wi 确实是词典中的词,则在wi 后添加一个切分标志,转(c);(b) 如果 wi 不是词典中的词且 wi 的长度大于1,将wi 从右端去掉一个字,转(a)步;否则(wi 的长度等于1),则在wi 后添加一个切分标志,将wi 作为单字词添加到词典中,执行 (c)步; (c) 根据 wi 的长度修改指针 pi 的位置,如果 pi 指向字串末端,转(4),否则, i=i+1,返回 (2);(4) 输出切分结果,结束分词程序。四、系统主要模块流程、源代码(1) 正向最大匹配算
3、法 (2)原代码如下/ dictionary.h #include #include #include using namespace std; class cdictionary public: cdictionary(); /将词典文件读入并构造为一个哈希词典 cdictionary(); int findword(string w); /在哈希词典中查找词 private: string strtmp; /读取词典的每一行string word; /保存每个词string strword55400; ; /将词典文件读入并 cdictionary:cdictionary() ifstre
4、am infile(wordlist.txt); / 打开词典 if (!infile.is_open() / 打开词典失败则退出程序cerr unable to open input file: wordlist.txt - bailing out! endl; exit(-1);int i=0; while (getline(infile, strtmp) / 读入词典的每一行并将其添加入哈 希中 strwordi+=strtmp; infile.close(); cdictionary:cdictionary()/在哈希词典中查找词,若找到,则返回,否则返回 int cdictionar
5、y:findword(string w) int i=0;while (strwordi!=w) & (i55400)i+;if(i maxwordlength) / 如果输入串长度大于最大词长 len = maxwordlength; / 只在最大词长范围内进行处理 string w = s3.substr(0, len); /(正向用)将输入串左边等于最大词长长度串取出作为候选词int n = worddic.findword(w); / 在词典中查找相应的词while(len 1 & n = 0) / 如果不是词int j=len-1;while(j=0 & (unsigned char
6、)wj128)j-;if(j1)break; len -= 1; / 从候选词右边减掉一个英文字符,将剩下的部分作为候选词 w = w.substr(0, len); /正向用 n = worddic.findword(w); s2 += w + separator; / (正向用)将匹配得到的词连同词界标记加到输出串末尾 s3 = s1.substr(m=m+w.length(), s1.length(); /(正向用)从s1-w处开始return s2; int main(int argc, char *argv)string strtmp; /用于保存从语料库中读入的每一行string
7、line; /用于输出每一行的结果ifstream infile(pku_test.txt); / 打开输入文件if (!infile.is_open() / 打开输入文件失败则退出程序cerr unable to open input file: pku_test.txt - bailing out! endl; exit(-1);ofstream outfile1(segmentresult.txt); /确定输出文件if (!outfile1.is_open() cerr unable to open file:segmentresult.txt -bailing out! endl;
8、exit(-1); while (getline(infile, strtmp) /读入语料库中的每一行并用最大匹配法处理line = strtmp;line = segmentsentence(line); / 调用分词函数进行分词处理outfile1 line endl; / 将分词结果写入目标文件coutlineendl;infile.close();outfile1.close();return 0;五、实验结果及分析(1)、实验运行结果(2) 实验结果分析在基于字符串匹配的分词算法中,词典的设计往往对分词算法的效率有很大的影响。正向最大匹配分词算法是最基本的字符串匹配算法之一,它能够
9、保证将词典中存在的最长复合词切分出来。实验二:ictclas 汉语分词系统说明一、实验内容调用ictclas程序对其中的文档进行分词,并标注词性 (实验数据包含1个文件:pku_test.txt 未经过分词的文档文件)二、实验所采用的开发平台及语言工具visual c+ 6.0 ictclas 汉语分词系统/ 中科院计算所ictclas 5.0接口文档三、实验的核心思想和算法描述分词系统的主要是思想是先通过chmm(层叠形马尔可夫模型)进行分词,通过分层,既增加了分词的准确性,又保证了分词的效率.共分五层,如下图一所示:基本思路:先进行原子切分,然后在
10、此基础上进行n-最短路径粗切分,找出前n个最符合的切分结果,生成二元分词表,然后生成分词结果,接着进行词性标注ictclas程序软件使用:(1). 在函数里加入对ictclas50.lib的引用#ifndef os_linux#include #pragma comment(lib, ictclas50.lib) /ictclas50.lib库加入到工程中#endif(2).ictclas_api bool ictclas_fileprocess函数的调用ictclas_api bool ictclas_fileprocess(const char* pszsrcfilename, /文本文件
11、的读取const char* pszdstfilename, /目标文件的存放ecodetypesrccodetype=code_type_unknown, /类型boolbenablepos=false /true表示可以标注词性 );(3) . ictclas5.0接口文档中的示例四、系统源代码/*(1). 在函数里加入对ictclas50.lib的引用*/#ifndef os_linux#include #pragma comment(lib, ictclas50.lib) /ictclas50.lib库加入到工程中#endif#include #include #include #in
12、clude #include #include ictclas50.h using namespace std;int main(int argc, char* argv)if(!ictclas_init() printf(init failsn);return -1;ictclas_fileprocess(pku_test.txt, test_result.txt,code_type_gb,true); /分别表示读取所需分次的文件、存放分词结果的文件、类型、标注词性printf(init okn); /分词结束后输出提示ictclas_exit();return 0;5、 实验结果及分析(
13、1)分词前分词后:(2)实验结果分析 ictclas是中科院计算所研发的中文分词软件,这个软件在第一届国际中文处理研究机构sighan组织的评测中都获得了多项第一名,是公认的当今最好的中文分词软件。综合性能:ictclas 2011分词速500kb/s左右,分词精度98.45%。ictclas分词系统是个nb的系统,效率奇高,比自己搞字典,分词算法效率高了很多倍,用起来也是非常简单的,但有一点不完美的是,该源代码没有配套的文档,阅读起来可能有一定的障碍,尤其是对c/c+不熟的人来说.实验三:基于语言模型的音字转换说明一 实验内容: 1、实验数据包含1个文件:pku_test_gold.txt经
14、过分词的文档文件 2、设计一个基于语言模型的音字转换给定拼音串:jinjitizhigaige可能的汉字串:紧济体质改革经济体质改革经济体制改革使用 2-gram计算:p(cstring1) =p(紧)p(济|紧)p(体质|济)p(改革|体质)p(cstring2) =p(经济)p(体质|经济)p(改革|体质)p(cstring3) =p(经济)p(体制|经济)p(改革|体制) 比较p(cstring1),p(cstring2),p(cstring3)二 实验所用的开发平台及语言工具visual c+ 6.03 实验的核心思想和算法描述 1.先分别统计出“紧”、“经”、“济”、“体”、“制”、
15、“质”、“改”、“革”这几个字出现的个数 2.再计算出各个字出现的概率 3.然后计算出在“紧”字出现概率下“济”字出现的条件概率乘上在“济”字出现是“体质”出现的条件概率以及“体质”出现时“改革”出现的条件概率的乘积,即为该句话出现的概率四系统主要模块流程、源代码#include #include #include using namespace std;string wstr210000;void main()int j=0,num=0;string str;/存放读入的词ifstream infile(pku_test_gold.txt); / 打开输入文件if (!infile.is_o
16、pen() / 打开输入文件失败则退出程序cerr unable to open input file: pku_test_gold.txt - bailing out! =128)wstrj+=str.substr(i,2);i+=2;coutwstrj-1 ;str=str.substr(i,str.length()-2);i=0;elsewstrj+=str.substr(i,1);i+;coutwstrj-1 ;str=str.substr(i,str.length()-1);i=0;num=j;cout总的词数numendl;int jin=0,ji=0,tizhi1=0,tizhi
17、2=0,jingji=0,jinji=0,jtzh1=0,tzh1gg=0,tzh2gg=0,jjtzh1=0,jjtzh2=0;inti=0;while(wstri.length()!=0)if(wstri=紧)jin+;/紧出现的次数加1if(wstri+1=济)jinji+;/紧济出现的次数加1elseif(wstri=济)ji+;/济出现的次数加1if(wstri+1=体)if(wstri+2=质)jtzh1+;/济体质出现的次数加1elseif(wstri=体)if(wstri+1=质)tizhi1+;/体质出现的次数加1if(wstri+2=改)if(wstri+3=革)tzh1g
18、g+;/体质改革出现次数加1elseif(wstri+1=制)tizhi2+;/体制出现的次数加1if(wstri+2=改)if(wstri+3=革)tzh2gg+;/体制改革出现的次数加1elseif(wstri=经)if(wstri+1=济)jingji+;/经济出现的次数加1if(wstri+2=体)if(wstri+3=质)jjtzh1+;/经济体质出现的次数加1elseif(wstri+3=制)jjtzh2+;/经济体质出现的次数加1i+;cout紧的出现次数=jinendl;cout紧济的出现次数jinjiendl;cout济的出现次数jiendl;cout济体质的出现数jtzh1
19、endl;cout体质的出现次数tizhi1endl;cout体质改革的出现次数tzh1ggendl;cout经济的出现次数jingjiendl;cout经济体质的出现次数jjtzh1endl;cout经济体制的出现次数jjtzh2endl;cout体制的出现次数tizhi2endl;cout体制改革的出现次数tzh2ggendl;if(jin!=0)&(jinji!=0)&(jtzh1!=0)&(tzh1gg!=0)coutp(cstring1) =p(紧)p(济|紧)p(体质|济)p(改革|体质)=jin/num*jinji/jin*jtzh1/ji*tzh1gg/tizhi1= (float)jin/num*jinji/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津医科大学基础医学研究中心招考聘用方案高频重点提升(共500题)附带答案详解
- 2024食用油生产线节能减排改造与监测服务合同3篇
- 2024物流行业碳达峰碳中和协议
- 四川省阿坝州2025年全州事业单位公开招聘1212名工作人员历年高频重点提升(共500题)附带答案详解
- 二零二五年度搅拌站生产节能减排承包协议3篇
- 北京市反腐倡廉法制教育基地管理中心招考工作人员高频重点提升(共500题)附带答案详解
- 内蒙古鄂尔多斯应用技术学院引进思想政治理论课教师5人高频重点提升(共500题)附带答案详解
- 二零二五年度装修承揽合同附带后期维护与保修服务范本3篇
- 佛山市顺德区产业服务创新中心2025年招考高频重点提升(共500题)附带答案详解
- 二零二五年度汽车零部件转让及组装服务合同2篇
- 继电保护试题库(含参考答案)
- 《榜样9》观后感心得体会四
- 《水下抛石基床振动夯实及整平施工规程》
- 2025年云南大理州工业投资(集团)限公司招聘31人管理单位笔试遴选500模拟题附带答案详解
- 现代学徒制课题:数字化转型背景下新型师徒关系构建研究(附:研究思路模板、可修改技术路线图)
- 风电危险源辨识及控制措施
- 《教师职业道德与政策法规》课程教学大纲
- 9.2溶解度(第2课时)-2024-2025学年九年级化学人教版(2024)下册
- 安徽省合肥市包河区2023-2024学年三年级上学期语文期末试卷
- 《住院患者身体约束的护理》团体标准解读课件
- 酒店一线员工绩效考核指标体系优化研究
评论
0/150
提交评论