欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    自然语言理解课程实验报告.doc

    • 资源ID:2373617       资源大小:485.50KB        全文页数:18页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    自然语言理解课程实验报告.doc

    实验一、中文分词一、实验内容用正向最大匹配法对文档进行中文分词,其中:(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),结束算法。否则,令 m=词典中最长单词的字数,如果n<m, 令 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) 正向最大匹配算法 (2)原代码如下/ Dictionary.h #include <iostream> #include <string> #include <fstream> using namespace std; class CDictionary public: CDictionary(); /将词典文件读入并构造为一个哈希词典 CDictionary(); int FindWord(string w); /在哈希词典中查找词 private: string strtmp; /读取词典的每一行string word; /保存每个词string strword55400; ; /将词典文件读入并 CDictionary:CDictionary() ifstream 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 CDictionary:FindWord(string w) int i=0;while (strwordi!=w) && (i<55400)i+;if(i<55400)return 1;elsereturn 0; / 主程序main.cpp#include "Dictionary.h"#define MaxWordLength 14 / 最大词长为个字节(即个汉字)# define Separator " " / 词界标记CDictionary WordDic; /初始化一个词典/对字符串用最大匹配法(正向)处理 string SegmentSentence(string s1)string s2 = "" /用s2存放分词结果string s3 = s1;int l = (int) s1.length(); / 取输入串长度int m=0;while(!s3.empty() int len =(int) s3.length(); / 取输入串长度 if (len > 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)wj<128)j-;if(j<1)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 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; exit(-1); while (getline(infile, strtmp) /读入语料库中的每一行并用最大匹配法处理line = strtmp;line = SegmentSentence(line); / 调用分词函数进行分词处理outfile1 << line << endl; / 将分词结果写入目标文件cout<<line<<endl;infile.close();outfile1.close();return 0;五、实验结果及分析(1)、实验运行结果(2) 实验结果分析在基于字符串匹配的分词算法中,词典的设计往往对分词算法的效率有很大的影响。正向最大匹配分词算法是最基本的字符串匹配算法之一,它能够保证将词典中存在的最长复合词切分出来。实验二:ICTCLAS 汉语分词系统说明一、实验内容调用ICTCLAS程序对其中的文档进行分词,并标注词性 (实验数据包含1个文件:pku_test.txt 未经过分词的文档文件)二、实验所采用的开发平台及语言工具Visual C+ 6.0 ICTCLAS 汉语分词系统http:/www.ictclas.org/ 中科院计算所ICTCLAS 5.0接口文档三、实验的核心思想和算法描述分词系统的主要是思想是先通过CHMM(层叠形马尔可夫模型)进行分词,通过分层,既增加了分词的准确性,又保证了分词的效率.共分五层,如下图一所示:基本思路:先进行原子切分,然后在此基础上进行N-最短路径粗切分,找出前N个最符合的切分结果,生成二元分词表,然后生成分词结果,接着进行词性标注ICTCLAS程序软件使用:(1). 在函数里加入对ICTCLAS50.lib的引用#ifndef OS_LINUX#include <Windows.h>#pragma comment(lib, "ICTCLAS50.lib") /ICTCLAS50.lib库加入到工程中#endif(2).ICTCLAS_API bool ICTCLAS_FileProcess函数的调用ICTCLAS_API bool ICTCLAS_FileProcess(const char* pszSrcFileName, /文本文件的读取const char* pszDstFileName, /目标文件的存放eCodeTypesrcCodeType=CODE_TYPE_UNKNOWN, /类型boolbEnablePOS=false /true表示可以标注词性 );(3) . ICTCLAS5.0接口文档中的示例四、系统源代码/*(1). 在函数里加入对ICTCLAS50.lib的引用*/#ifndef OS_LINUX#include <Windows.h>#pragma comment(lib, "ICTCLAS50.lib") /ICTCLAS50.lib库加入到工程中#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <string>#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;五、 实验结果及分析(1)分词前分词后:(2)实验结果分析 ICTCLAS是中科院计算所研发的中文分词软件,这个软件在第一届国际中文处理研究机构SigHan组织的评测中都获得了多项第一名,是公认的当今最好的中文分词软件。综合性能:ICTCLAS 2011分词速500KB/s左右,分词精度98.45%。ICTCLAS分词系统是个NB的系统,效率奇高,比自己搞字典,分词算法效率高了很多倍,用起来也是非常简单的,但有一点不完美的是,该源代码没有配套的文档,阅读起来可能有一定的障碍,尤其是对C/C+不熟的人来说.实验三:基于语言模型的音字转换说明一 实验内容: 1、实验数据包含1个文件:pku_test_gold.txt经过分词的文档文件 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.0三 实验的核心思想和算法描述 1.先分别统计出“紧”、“经”、“济”、“体”、“制”、“质”、“改”、“革”这几个字出现的个数 2.再计算出各个字出现的概率 3.然后计算出在“紧”字出现概率下“济”字出现的条件概率乘上在“济”字出现是“体质”出现的条件概率以及“体质”出现时“改革”出现的条件概率的乘积,即为该句话出现的概率四系统主要模块流程、源代码#include <iostream>#include <fstream>#include <string>using namespace std;string wstr210000;void main()int j=0,num=0;string str;/存放读入的词ifstream infile("pku_test_gold.txt"); / 打开输入文件if (!infile.is_open() / 打开输入文件失败则退出程序cerr << "Unable to open input file: " << "pku_test_gold.txt" << " - bailing out!" << endl; exit(-1);while (getline(infile, str,' ') / 读入每一个词放入字符串数组中int i=0;while(str.length()!=0)if(unsigned char)stri>=128)wstrj+=str.substr(i,2);i+=2;cout<<wstrj-1<<" "str=str.substr(i,str.length()-2);i=0;elsewstrj+=str.substr(i,1);i+;cout<<wstrj-1<<" "str=str.substr(i,str.length()-1);i=0;num=j;cout<<"总的词数"<<num<<endl;int jin=0,ji=0,tizhi1=0,tizhi2=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="革")tzh1gg+;/体质改革出现次数加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<<"'紧'的出现次数="<<jin<<endl;cout<<"'紧济'的出现次数"<<jinji<<endl;cout<<"'济'的出现次数"<<ji<<endl;cout<<"'济体质'的出现数"<<jtzh1<<endl;cout<<"'体质'的出现次数"<<tizhi1<<endl;cout<<"'体质改革'的出现次数"<<tzh1gg<<endl;cout<<"'经济'的出现次数"<<jingji<<endl;cout<<"'经济体质'的出现次数"<<jjtzh1<<endl;cout<<"'经济体制'的出现次数"<<jjtzh2<<endl;cout<<"'体制'的出现次数"<<tizhi2<<endl;cout<<"'体制改革'的出现次数"<<tzh2gg<<endl;if(jin!=0)&&(jinji!=0)&&(jtzh1!=0)&&(tzh1gg!=0)cout<<"p(CString1) =p(紧)×p(济|紧)×p(体质|济)×p(改革|体质)="<<jin<<"/"<<num<<"*"<<jinji<<"/"<<"jin"<<"*"<<jtzh1<<"/"<<ji<<"*"<<tzh1gg<<"/"<<tizhi1<<"= "<<(float)jin/num*jinji/jin*jtzh1/ji*tzh1gg/tizhi1<<endl;elsecout<<"p(CString1) =p(紧)×p(济|紧)×p(体质|济)×p(改革|体质)= 0"<<endl;if(jingji!=0)&&(jjtzh1!=0)&&(tzh1gg!=0)cout<<"p(CString2) =p(经济)×p(体质|经济)×p(改革|体质)="<<jingji<<"/"<<num<<"*"<<jjtzh1<<"/"<<"jingji"<<"*"<<tzh1gg<<"/"<<tizhi1<<"= "<<(float)jingji/num*jjtzh1/jingji*tzh1gg/tizhi1<<endl;elsecout<<"p(CString2) =p(经济)×p(体质|经济)×p(改革|体质)= 0"<<endl;if(jingji!=0)&&(jjtzh2!=0)&&(tzh2gg!=0)cout<<"p(CString3) =p(经济)×p(体制|经济)×p(改革|体制)="<<jingji<<"/"<<num<<"*"<<jjtzh2<<"/"<<"jingji"<<"*"<<tzh2gg<<"/"<<tizhi2<<"= "<<(float)jingji/num*jjtzh2/jingji*tzh2gg/tizhi2<<endl;elsecout<<"p(CString3) =p(经济)×p(体制|经济)×p(改革|体制)= 0"<<endl;/*/ 五实验结果及分析(1)实验结果 (2)实验结果分析将模型的单位延伸至语言分析的结果,统称为语言元素,元素间概率计算利用已有词模型的参数近似估计,避免概率模型的大幅度增加,提高语言单位获取的灵活性;能够处理长距离语言关系和递归问题

    注意事项

    本文(自然语言理解课程实验报告.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开