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

上传人:壹****1 文档编号:560556474 上传时间:2023-03-17 格式:DOCX 页数:18 大小:134.24KB
返回 下载 相关 举报
自然语言理解课程实验报告_第1页
第1页 / 共18页
自然语言理解课程实验报告_第2页
第2页 / 共18页
自然语言理解课程实验报告_第3页
第3页 / 共18页
自然语言理解课程实验报告_第4页
第4页 / 共18页
自然语言理解课程实验报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《自然语言理解课程实验报告》由会员分享,可在线阅读,更多相关《自然语言理解课程实验报告(18页珍藏版)》请在金锄头文库上搜索。

1、实验一、中文分词一、实验内容用正向最大匹配法对文档进行中文分词,其中:(1) wordlist.txt 词表文件(2) pku_test.txt 未经过分词的文档文件(3) pku_test_gold.txt 经过分词的文档文件二、实验所采用的开发平台及语言工具Visual C+ 6.0三、实验的核心思想和算法描述本实验的核心思想为正向最大匹配法,其算法描述如下假设句子:S = C CC , 某一词 w = CCC , m为词典1 2 n i 1 2 m 中最长词的字数。(1) 令i=0,当前指针pi指向输入字串的初始位置,执行下面的操作:(2) 计算当前指针pi到字串末端的字数(即未被切分字

2、串的长度)n,如果n=1, 转(4),结束算法。否则,令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) 输出切分结果,结束分词程序。四、系统主要模块流程、

3、源代码1)正向最大匹配算法D2D2+WDL=DL-W(2)原代码如下/ Dictionary.h#include档D1辑出结果D2丛Di主过幵t取于in#include string#include using namespace std;class CDictionarypublic:CDictionary(); /将词典文件读入并构造为一个哈希词典CDictionary();int FindWord(string w); /在哈希词典中查找词private:string strtmp; / 读取词典的每一行string word; /保存每个词string strword55400;/ 将

4、词典文件读入并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() /在哈希词

5、典中查找词,若找到,则返回,否则返回int CDictionary: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=l

6、en-1;while(j=0 & (unsigned char)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)strin

7、g 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 :Segme

8、ntResult.txt -bailing out! endl;exit(-1);while (getline(infile, strtmp) /读入语料库中的每一行并用最大匹配 法处理line = strtmp;line = SegmentSentence(line); / 调用分词函数进行分词处理 outfile1 line endl; / 将分词结果写入目标文件 coutlineendl;infile.close(); outfile1.close();return 0;五、实验结果及分析(1)、实验运行结果I1回G:学习课程大三自然语言理解侯验1中文分词Debugs文分i.exe21略

9、战入驶步的化进现前-片们向O友社了附朋O 类入(,人进、香祝外台向诲的电:年 IZ-TTI - _1 播 新 广民胞人同个际国族湾一 各台第国中国和纪 全世 过胞新 通向同二1们。民人日志响 同敲国口 纪 中刻和的 世三,将程时 、 新 即e征台国 月们 的电胞各 的二声程新 十生钟 心播界兴,区致高政 台行,很视电别们 我特央友 ,中门朋 澳中各济端几国新 经开我 程国 去的 进全,好过。良 设 设,头在划建 建势得计 下取们年优 化展我五代 代导发发 现 现领开个的 义 和的大强九主 快加第会 放党部 社 开产较西步了 共 一快 革持口进成加 改国保 完 中施设 , 义续实建利 主在继 胜

10、会 会 署制社 社济部法,经 康 国年民利主上小 我国顺民以和的类争好人战美展的个发 一类续人造继创着扰是困业-_& 望纪 愿世高崇 同20 共的服的歳展民,人与Tnr国成平各和造Odu- 础设 是,整和基建的调,斗设的面世推 义奋性建全 年意略绩段L, 结战明成了阶-志团文 纪的题界文进己 纟 世有20仍纪至世时平难和苦突 民冲 人和国各争战 为成种各世受新饱好先航的人广区世 美年年新动政O,新进激民行向) 的迈人创O们年 个 别,二 纪标这央特!有人构 创困界 同士01世目中胞去具结。年己的对贫世们里 共1女20在港侨贺过族 面往 我丈牙-一世 标 的神得入展世 问望 的 民 精取进发新造

11、 希,面往(2)实验结果分析在基于字符串匹配的分词算法中,词典的设计往往对分词算法的效率有很大的影响。正向最大匹配分词算法是最基本的字符串匹配算法之一,它能够保证将词典中存在的最长复合词切分出来。实验二:ICTCLAS汉语分词系统说明一、实验内容调用 ICTCLAS 程序对其中的文档进行分词,并标注词性(实验数据包含1个文件:pku_test.txt未经过分词的文档文件)二、实验所采用的开发平台及语言工具Visual C+ 6.0ICTCLAS 汉语分词系统 http:/www.ictclas.org/中科院计算所ICTCLAS 5.0接口文档三、实验的核心思想和算法描述分词系统的主要是思想是

12、先通过CHMM(层叠形马尔可夫模型)进行分词, 通过分层,既增加了分词的准确性,又保证了分词的效率.共分五层,如下图一 所示:基本思路:先进行原子切分,然后在此基础上进行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,const char* pszDstFileName,eCodeType srcCodeType=CODE_TYPE_UNKNOWN,/类型);bool bEnablePOS=false/true 表示可以标注词性3). ICTCLAS5.0 接口文档中的示例include 4include srdlib.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号