算法课程设计

发布 2022-10-01 22:01:28 阅读 2269

辽宁科技大学。

课程设计说明书。

设计题目: 中文分词程序设计与实现

学院、系: 装备制造学院。

专业班级: 09计算机二班。

学生姓名: 吴坤鹏。

指导教师: 迟呈英。

成绩。2023年 10 月 29 日。

一. 需求分析。

随着国内互联网的迅猛发展,网络信息量急剧膨胀,如果完全由人工来整理如此繁多的信息,那是难以想象的工作量,同时也不现实的,如何有效、快速、准确的从大量的信息中找到我们所需要的信息,是摆在我们面前的一个重要和迫切的任务,为了解决这个难题,人们采用了中文分词技术,通过分词技术,就可以使得对海量信患的整理更准确更合理,使得检索结果更准确,效率也会大幅度地提高。所谓中文分词,就是把一个汉语句子按照其中词的含义进行切分。随羞人们更深入熬研究,中文信息处理技术得到了广泛应用,并对中文分词技术的要求也越来越高。

中文分词技术已经引起多方的关注,并成为中文信息处理的一个前沿课题l卜21。目前在自然语言处理技术中,中文处理技术远远落后于西文处理技术,许多西文的处理方法中文不能直接采用,就是因为中文必须进行分词处理。中文分词是其它中文信息处理的基础,搜索弓|擎只是中文分词的一个应用,其它应用比如机器翻译(mt)、语音合成、自动分类、自动摘要、自动校对、中文文献瘁全文检索等翻,都需要焉到分词。

分词准确性对搜索弓|擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的,因为搜索弓l擎需要处理数以亿诗的网页,如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。因此对于搜索引擎来说,分词的准确性和速度,二者都需要达到很高的要求,中文分词技术要想更好的服务予更多的产品,需要更多的专业队伍投入到研究中来,因此,中文分词的研究还是一个相当长的探索过程。

目前中文分词得到了很多现实的应用,主要体现在在信息检索、同音字和多音字方面的识别、文本校对、简体繁体的囱动转换、自动标引、自动文撬、视器翻译、语言文字研究、搜索弓|擎研究、自然语言理解和中文信息处哈尔滨]二程大学硕七学位**理等方面m,也是中文智能计算技术发展的前提和基础。随着对中文分词技术关注度的不断提高,大量的学者都加入到了这一研究领域,使中文分词取得了丰硕的研究成果。近10年来,语言学界、人工智能领域和情报检索界的学者们,在中文分词与自动标引的研究与实践上进行了大量的研究,找到了许多解决中文分词的方法,目前关于中文分词研究方法主要有三个方面,即基于字符串匹配的分词方法、基于统计的分词方法和基于理解的分词方法。

中文分词的研究,主要是从词层面进行的研究,这一问题很早就受到了广泛的关注。目前,各种分词系统也不断建立,分词系统在运行速度、准确度等方面已经具有了研究应用的价值,但是在句子中词该如何被界定,仍然是一个比较困难的问题,同时,在不同的应用领域由于应用需求的不同,需要达到的分词效果有很大区别。词的确切概念难以标准化,词的应用领域不同,使得分词规范难以统一,需要达到的分词效果也有很大区别。

在这一长期的研究和实践过程中,分词规范、歧义字段处理和未登录词识别成为困扰我们的主要技术难题,随着计算机技术和汉语语言研究的发展,中文分词技术将会有更大的突破。

二. 设计。

主要分为两大模块:

一个建立一棵树,一个是查询。建树有三个层次,第一层一维数组,第二层是数组,用于二分查找使用,第三层是二叉树。查询分为直接查询第一层的一维数组,第二层用二分查找(第二层汉子相同的平均概率是26,一般第二字成词切相同),第三层直接顺序查找,以及查找句子中的数字和汉子标点。

输出:(1)建树包括:以此字开头的词语有几个;在一维数组中的中位置;结束。

2)查询包括输出每个词的首字。然后输出分词后的结果。

三. 编码与调试。

因为字符串比较所需的时间同字符串的长度成正比,对于较长的词条,这种现象尤为突出。为了消除这种冗余操作,我们提出将词典的词尾部分以自动机的形式来组织。为此,我们将组成单词的每个字以一种链表节点的形式存储,其抽象数据结构的定义如下:

struct node3

string s;

bool isword;

node3 *l,*r;

node3(string s = bool isword = 0, node3 *l = 0, node3 *r = 0):

s(s),isword(isword),l(l),r(r){}

struct node2

string s;

bool isword;

node3 *child;

node2(string s ="bool isword = 0, node3* child =0):

s(s),isword(isword),child(child){}

struct node

string s;

vectorv;

vectordic;

int binarysearch(int x, string sec)//二分查找第二个字。

int l = 0,r = dic[x]. 1;

while (l <=r)

return -1;

node3* remainsearch(node3*p, string cc) /顺序查找剩下的字。

while (p !=0)

return 0;

四. 结果分析。

截取每一个词的第一个字。

讲一段话拆分成词的形式。

逐词遍历法将词典中的所有词按由长到短的顺序在文章中逐字搜索,直至文章结束。也就是说,不管文章有多短,词典有多大,都要将词典遍历一遍。这种方法效率比较低,大一点的系统一般都不使用。

最大正向匹配法通常简称为mm法。其基本思想为:假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前字串中的前i个字作为匹配字段,查找字典。

若字典中存在这样的一个i字词,则匹配成功,匹配字段被作为一个词切分出来。如果词典中找不到这样的一个i字词,则匹配失败,将匹配字段中的最后一个字去掉,对剩下的字串重新进行匹配处理……如此进行下去,直到匹配成功,即切分出一个词或剩余字串的长度为零为止。这样就完成了一轮匹配,然后取下一个i字字串进行匹配处理,直到文档被扫描完为止。

当然,最大匹配算法是一种基于分词词典的机械分词法,不能根据文档上下文的语义特征来切分词语,对词典的依赖性较大,所以在实际使用时,难免会造成一些分词错误,为了提高系统分词的准确度,可以采用正向最大匹配法和逆向最大匹配法相结合的分词方案(即双向匹配法,见(四)。)

全切分要求获得输入序列的所有可接受的切分形式,而部分切分只取得一种或几种可接受的切分形式,由于部分切分忽略了可能的其他切分形式,所以建立在部分切分基础上的分词方法不管采取何种歧义纠正策略,都可能会遗漏正确的切分,造成分词错误或失败。而建立在全切分基础上的分词方法,由于全切分取得了所有可能的切分形式,因而从根本上避免了可能切分形式的遗漏,克服了部分切分方法的缺陷。

全切分算法能取得所有可能的切分形式,它的句子覆盖率和分词覆盖率均为100%,但全切分分词并没有在文本处理中广泛地采用,原因有以下几点:

1)全切分算法只是能获得正确分词的前提,因为全切分不具有歧义检测功能,最终分词结果的正确性和完全性依赖于独立的歧义处理方法,如果评测有误,也会造成错误的结果。

2)全切分的切分结果个数随句子长度的增长呈指数增长,一方面将导致庞大的无用数据充斥于存储数据库;另一方面当句长达到一定长度后,由于切分形式过多,造成分词效率严重下降。

并行分词方法:这种分词方法借助于一个含有分词词库的管道进行,比较匹配过程是分步进行的,每一步可以对进入管道中的词同时与词库中相应的词进行比较,由于同时有多个词进行比较匹配,因而分词速度可以大幅度提高。这种方法涉及到多级内码理论和管道的词典数据结构。

(详细算法可以参考吴胜远的《并行分词方法的研究》。)

五. 参考文献。

1 国家技术监督局.信息处理用现代汉语分词规范,中华人民共和国国家标准gb/t13715.92.中国标准出版社,1993

2 硕士学位**。中文自动分词系统的研究与实现。 周程远 20091101

3硕士学位** .基于条件随机场的中文分词研究与应用, 颜军 20090401

4 网络文章中文分词入门之最大匹配法发表于 2023年01月12号由 52nlp

5一种基于自动机的分词方法。鞍山科技大学。计算机学院,东北大学。信息学院迟呈英,战学刚, 姚天顺。

6种中文分词算法优劣比较,http://www.htmldata.cn/?p=248

六. 总结。

分词是中文自然语言处理的基础,在现实中已经得到广泛应用。比如,google的chrome浏览器就内置了中文分词功能。如上图,我们可以注意到,在chrome中双击无链接文本时,chrome选中的不是一个字,也不是一句话,而是一个词。

当然,中文分词在数据挖掘等方面的应用就更加明显了。掌握自然语言处理的基本知识,已经成为it行业对计算机专业学生的基本要求。

算法课程设计

目录。1 问题描述第1页。2 算法分析第2页。3 伪 第5页。4 设计流程第6页。5 演示程序设计第8页。6 测试与结论第16页。7 设计过程遇到的问题 思考及解决方法 第17页。八 总结第17页。1 问题描述。八皇后问题是一个古老而著名的问题,它是回溯算法的典型例题。该问题是十九世纪德国著名数学家...

算法课程设计

当一个问题具有最优子结构性质时,根据其具体情况可以用动态规划算法或者贪心算法来求解。但当问题同时具有贪心选择性质时,贪心算法则通常会给出一个更简单 直观和高效的解法。贪心算法则通常会给出一个更简单 直观和高效的解法。贪心算法通过一系列的选择来得到一个问题的解,并且每次贪心选择都能将问题化简为一个更小...

算法课程设计

算法课程设计 实践报告。所属学院。专业班级。学生姓名。学生学号。任课教师。2013年6 月30日。一 实践题目及内容 迷宫问题 回溯法,栈的应用 问题描述 迷宫问题是一个经典的程序设计问题,计算机解迷宫问题的基本思想是 穷举求解 的方法,即从入口出发,顺某一方向向前试探,若能走通,则继续往前走 否则...