自然语言导论分词程序报告.docx
- 文档编号:30743500
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:8
- 大小:250.74KB
自然语言导论分词程序报告.docx
《自然语言导论分词程序报告.docx》由会员分享,可在线阅读,更多相关《自然语言导论分词程序报告.docx(8页珍藏版)》请在冰豆网上搜索。
自然语言导论分词程序报告
自然语言导论分词程序报告
1目录
目录2
1.实验题目3
2.实验环境3
3.程序流程图3
4.实验原理4
5.数据结构5
6.使用截图7
7.性能测试8
8.存在的问题及改进方案9
9.实验总结9
1.实验题目:
设计一个分词程序,并能够利用所提供的字典对一篇文章进行分词。
2.实验环境:
WINDOWSVISTA,DEV-C++
3.程序流程图:
4.实验原理:
最大匹配算法:
首先准备一个分词词表,顺序扫描待分词的句子,将句中候选词按照词长从大到小的顺序依次跟词表中的词进行匹配,匹配成功即作为一个词输出。
这样就使得每次输出的词是长度最大的(相比已知的确定的词表而言)。
如果一个句中的多字候选词跟词表中所有的词都匹配不上,就只能把单字词当作分词结果输出了。
采用双向最大匹配算法将会提高分词的正确性。
5.数据结构:
(1)用于存储字典的几个数组,分别存储4字节、3字节、2字节、1字节的字词和英文标点、数字和字母,这样限制了最大字词数量,超出会产生错误,但是获得了更快速的查找和排序。
charwords4[1000000][9];
charwords3[1000000][7];
charwords2[1000000][5];
charwords1[1000000][3];
charwords[1000000][2];
(2)根据字典中不同长度的单词分别存储到相应的数组中:
switch(len)
{
case8:
strcpy(words4[x4],word);
x4++;
break;
case6:
strcpy(words3[x3],word);
x3++;
break;
case4:
strcpy(words2[x2],word);
x2++;
break;
case2:
strcpy(words1[x1],word);
x1++;
break;
case1:
strcpy(words[x],word);
x++;
break;
}
(3)对每个字典的数组进行冒泡排序为二分查找作准备,二分查找可以减少查询时间,提高分词效率,如果词典已经排序完毕,将会大大减少总用时:
for(i=0;i for(j=0;j { cmp=strcmp(words4[j],words4[j+1]); if(cmp>0) { strcpy(viaword4,words4[j]); strcpy(words4[j],words4[j+1]); strcpy(words4[j+1],viaword4); } } (4)对源文件进行分词处理的格式如下,每次读入5字节数据并进行词语的查询,找到对应单词便可以输出并增加空格,之后更改文件指针重新读数据到缓冲区,如此循环直到源文件处理结束。 while(! feof(sourcefile)) { fgets(buffer,10,sourcefile);//每次读入5字节数据 if(feof(sourcefile)) break; //根据缓冲区的值进行分词操作 } 6.使用截图: 程序界面: 未分词文档: 分词后如下: 7.性能测试: 本程序在导入本字典dic.txt(大小817K)并将字典排序本机用时约1分钟,如不需要对字典进行排序操作则仅需1秒钟,对文档abc.txt(大小3.54M)进行分词用时约30秒,分词准确率接近于80%,仍可以提高。 8.存在的问题及改进方案: (1)导入字典采用的是冒泡排序,速度慢,可以考虑更改为快速排序等其他更快的排序方法来对字典内的词语进行排序,以便用来二分查找词语。 对于已经排好的字典,不进行排序将会大大减少用时。 二分查找方法可以有效的减少查找单词的时间。 (2)仅仅采用了正向最大匹配算法,没有采用双向匹配导致正确率不高,可以继续深入更改为双向匹配算法以提高正确率。 (3)使用的字典为817K,这个字典包含的单词并不全,所以可能导致分词正确率不高,但是,使用更大的字典将耗费更大的存储空间,处理速度也会变慢,如何在这两者之间寻找一个平衡点很重要。 (4)存储字典应用的是几个数组,这样会限制最大词数,太大字典会导致错误,但是数组在排序和查找方面有优势,可以提高整体速度。 9.实验总结: 本次编程运用到大量的文件读写和排序查找方面的算法问题,难度较大,在文件读写和排序方面也遇到一些问题,比如如何判断文件中的换行和结束,二分查找过程中的比较和替换等等,最终完成的程序并不十分完美,和其他同学的程序有所差距,不过能够完成这个分词程序提高了我的编程水平,通过一学期自然语言的学习和亲自完成分词程序也让我对自然语言科学产生了兴趣,这也是我选择这门课的最大收获。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自然语言 导论 分词 程序 报告