已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号:1110211014 本科毕业论文(设计)(2013届) 基于VSM模型的文档相似度检查软件的 设计与实现院 系 计算机科学与技术系 专 业 计算机科学与技术 姓 名 指导教师 职 称 助 教 合肥师范学院2013届本科生毕业论文(设计)基于VSM模型的文档相似度检查软件的设计与实现摘 要近年来,论文抄袭、学术打假日益成为学术界和媒体界关注的话题。尤其在现在的高校中,学生经常为了应付老师布置的作业而直接或间接的抄袭别人的劳动成果。长此下去,高校学生的诚信度将受到严重质疑,那么采取一种有效的方法遏制学生抄袭的现象,成为一个现实的需求。因此,文本相似度检测应运而生。本次设计的基于VSM模型的文档相似度检查系统主要是进行一个理论的研究。系统适用于对学生提交的实验报告、电子档作业等进行检测,从而提高学生独立完成作业的积极性。本系统基于C#语言和数据库技术,采用著名的向量空间模型VSM方法,对文本分词、词频统计及相似度计算三大功能进行模块化的设计,条理清晰,实现了文档相似度的计算,对检测学生的抄袭行为有很大的实用价值。关键词:论文抄袭 VSM模型 文档相似度 数据库技术ABSTRACTIn recent years, the plagiarism, the academic crackdown is increasingly becoming a topic of concern in academia and the media industry. Especially in the universities, in order to meet the teacher assignments , the students often directly or indirectly plagiarize the labor of others. If this trend continues, the integrity of the college students will be seriously questioned.Then taking an effective way to curb the phenomenon of student plagiarism becomes a realistic demand. Therefore, the text similarity detection came into being.This similarity examination system based on VSM model is mainly a theoretical research. Its suitable for students to submit the testing lab reports and electronic archives work, etc, so as to boost the enthusiasm of the students to finish the homework independently. The system which using the famous method of VSM vector space model is based on c # language and database technology.The text participle , word frequency statistics and similarity calculation function carries on the modular design.This system implements the computing document similarity. It is of great value to detect students plagiarism. Key words: Thesis plagiarism VSM model Document similarity Database technology目 录第1章 绪论11.1课题背景11.2课题研究意义11.3开发语言11.4设计任务2第2章 系统原理介绍22.1系统原理概述22.2系统相关知识点简介32.3系统实现思想6第3章 系统架构设计73.1系统需求分析73.2系统功能概述73.3系统性能要求93.4功能模块设计93.5数据库设计10第4章 系统实现124.1系统运行环境124.2界面实现124.3相关代码分析16第5章 系统测试175.1相似度检测175.2记录查看检测20第6章 总结与展望216.1系统总结216.2系统展望22致 谢23参考文献24附 录25第1章 绪论1.1课题背景随着计算机的广泛应用以及Internet的普及,互联网逐渐成为当今世界上最大的信息库,人们可以非常便捷从网络中获得想要的信息,但与此同时也带来了一些问题,诸如非法复制、非法分发等文档侵权。在如今的高校中,学生的论文抄袭、作业抄袭现象更是屡见不鲜。学生日益对自己的作业马虎了事,随便抄抄了事。尤其是对于有些枯燥的专业课程通常要进行实验并撰写电子实验报告,这就给不想动手动脑的同学以可乘之机。这种现象长此发展下去,不仅老师不能把握学生专业课程学习的情况,而且学生学习的积极性也会严重下降,抄袭的风气将影响到整个高校的学术氛围。那么文本进行相似度检测应用就成了眼下一个现实的需求。目前,国内外有很多学者在研究文本相似度计算问题。诸如国内学者潘谦红、王炬等就提出利用属性论计算文本相似度1,张焕炯、王国胜等提出基于汉明距离的文本相似度计算方法2。而由现代搜索技术之父,杰拉德索尔顿(Gerard Salton)等提出的基于向量空间模型(VSM:Vector Space Model)的相似度计算方法已被广泛的应用于相似度计算领域。如在电信行业中,利用VSM模型分析转网的客户数据,找出两个客户之间的相似度,以确定两个客户是否是同一用户,最终确定流失客户的流失方向。基于这些学者对文档相似度计算的研究以及现实的需求,本系统采用VSM模型实现对文本的相似度计算,在一定程度上可以有效地对学生的相关作业进行检测。1.2课题研究意义抄袭是一种造假的行为。高校是用来培养人才的,要求学生德智体美劳全方位发展。学生在诚信的尺度上就不合格,那么在很大程度上失去了高校培养人才的意义,也更加难以保证学生走向社会后更好的为社会服务。针对出现的问题,我们要积极采取措施加以遏制。本系统主要是对相似度的检测进行一个理论的研究,了解文档相似度的实现原理以及相关技术。当然也可以对学生作业有无抄袭情况进行一个检测,要求与数据库连接但无需网络的连接,这个在一定程度上可以辅助老师检查学生作业抄袭的情况。老师对学生的监督有了一定的方法和依据,那么就尽量减少了学生抄袭的念头,进而提高学生自主学习的积极性,营造一个良好的学习氛围。1.3开发语言C#又读做“C sharp”,是微软公司在2000年6月发布的一种程序设计语言。微软公司对C#的定义是:“C#是一种类型安全的、现代的、简单的,由C和C+衍生出来的面向对象的编程语言,它是牢牢植根于C和C+语言之上的,并可立即被C和C+的使用者熟悉。C#的目的就是综合Visual Basic的高生产率和C+的行动力3。”由于C#面向对象的卓越设计,它成为构建各类组件的理想之选无论是高级的商业对象还是系统级的应用程序。本系统选择C#作为开发语言,一方面是因为自己对这种语言比较熟知,另一方面是因为它的确有着一些优于其他语言的特点:(1)拥有C/C+的强大功能以及Visual Basic简易使用的特性,而且看起来与Java有着惊人的相似。因集众家之长,使其不仅安全,而且易于掌握和使用。(2)不仅有实时的编译器,而且含有比一般语言更丰富的数据类型。无论是从输出格式,还是网络I/O,都有一整套标准的类和数据类型。(3)强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程。(4)能够消除很多常见的C+编程错误,如变量由环境自动初始化、变量的类型安全等。系统以Microsoft Visual Studio 2005作为开发工具4,可以非常灵活的对界面进行设计,而且点击控件自动生成的代码非常规整,易于理解。1.4设计任务本系统对文档相似度检测进行一个理论研究的同时,也要实现相似度检测的基本功能。文档相似度检测主要有三大功能,文档分词、词频统计、相似度计算。从这三大功能入手,首先要对文档进行分词,分词要考虑到具体的一些分词方法,何种方法能更精确方便的对文档进行分词。本系统是利用现成的词库,采用正向最大匹配算法对文档实现分词。接下来进行词频统计,词频统计即通过连接数据库,在编程语言中利用SQL语句对数据库表进行操作,统计出所需要的数据。相似度计算,即将统计的结果返回进行计算。相似度检测完成后,还需实现的是让用户能够清晰明了的看到两篇的相似度检测情况,在此设计了查看记录界面,在后面的介绍中会具体介绍。最后,在主界面中设计一个帮助说明的界面,以显示一些操作说明和注意事项。第2章 系统原理介绍2.1系统原理概述本系统是基于向量空间模型(VSM)来设计的。我们将每一篇文档都看成一个向量,每个词作为向量的一个维度,而词的频率看成其值(有向),即向量,这样每篇文章的词及其频率就构成了一个i维空间图,两个文档的相似度就是两个空间图的接近程度,即它们之间夹角的大小,我们通过计算余弦系数来体现。计算机不会像人一样自动识别文档里的每个词,所以要对文档进行分词处理,然后统计词频,最后根据余弦系数计算公式得出相似度比较结果。2.2系统相关知识点简介2.2.1数据库技术数据库技术是现代信息科学技术的重要组成部分,是计算机数据处理与信息管理系统的核心5。数据库技术解决了计算机信息处理过程中大量数据有效组织和存储的问题,实现了数据共享,保障了数据安全,从而高效地检索数据和处理数据。数据库技术主要起着两方面的作用:(1) 信息系统开发。利用数据库技术,并结合具体的编程语言,可以开发一个信息系统,从而解决业务数据的输入和管理问题。在信息系统开发中,主要利用的是RDBMS的基本功能,即数据定义功能,数据操纵功能,数据查询功能以及数据控制功能6。(2) 数据分析与展示。利用RDBMS的数据查询功能对数据库中的数据进行关联组合或者汇总分析,并以表格、图形或报表形式将分析结果返回设计系统进行展示,从而解决业务数据的综合利用问题。本系统以Mircroft SQL Server 2005作为后台辅助工具。通过连接数据库,将数据存到数据库表中,结合编程语言,对数据库表的数据进行操作,以及将信息返回到系统显示给用户。2.2.2向量空间模型VSM模型(VSM:Vector Space Model)即向量空间模型,由Salton等人于20世纪70年代提出,并成功地应用于著名的SMART文本检索系统。向量空间模型的基本思想为将文本简化为特征向量表示,将相似度计算问题简化为空间向量的运算,由此使得问题的复杂性大大降低7。该方法根据文本中的词语将文本映射为n维空间向量,通过计算空间向量的余弦值来确定文本的相似度,即利用空间的相似性来解决文本上的相似性,直观易懂。通过向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。我们可以这样来理解一下向量空间模型。对于每篇文档来说,它都是由很多词条组成的。对此,我们可以对文档(Document)和其所包含的词条(Term)之间的关系进行一个研究。我们可以将一篇文档看成一个向量D(term1,term2,termn)。这样,假设某两篇文档中都出现了term1和term2,就可以用一个二维的坐标来表示文档和词条之间的关系,如图2-1所示:Term1Term2文档1文档2图2-1 文档和词条的向量空间从图中可看出,文档1中Term1共出现3次,Term2出现1次;而文档2中Term2出现3次,Term1出现1次。所以,可以用向量D1(3,1)、D2(1,3)来表示这两篇文档。以此类推,一个搜索引擎的索引库,可以看成是一个由词条组成的N维向量空间。每一篇文档均为其中的一个向量。在这种情况下,文档之间就出现了特定的关系。例如,当两篇文档内容相近时,它们的词条也就差不多。因此,从逻辑上看,它们可能就会在这个向量空间中处于一种很“接近”的位置。此时,“接近”真实含义指的是这两个向量之间的夹角比较小8。2.2.3中文分词技术众所周知,中文是世界上最复杂的语言之一。那么要对文本进行相似度计算,首先就要进行分词处理。分词,即将一段文本拆分成多个词。现有的分词方式主要有单字分词、二分法、词典分词。单字分词,顾名思义即在对中文文本进行分词时,以字为单位进行切分。按这种方式建立索引,则索引中所有的词条的集合就是中文汉字库的一个子集合。字索引比较灵活,但需要复杂的单字匹配算法,以及大量的CPU运算8。二分法,即将每两个字当作一个词语进行切分,然后建立索引。它明显的减少了每个词条后位置信息的长度。如Lucene的CJKAnalyzer就是对中文采取二分的方式进行分词8。本系统采用词典分词的方法。词典分词,是目前来讲分词比较准确的一种方法,即通过构造一个常用词词典来对遇到的文本进行词语的切分。中国科学院计算技术所研究的ICTCLAS在中文分词领域是较为先进的分词系统,其分词词典也是世界公认的精准。使用词典分词法在文本中匹配单词时用到一些常用的算法:正向最大匹配算法即是:从左到右将待分词文本中的几个连续字符与词库匹配,如果匹配上,则切分出一个词。逆向最大匹配法从被处理文档的末端开始匹配扫描,每次取最末端的2i个字符(i字字串)作为匹配字段,若匹配失败,则去掉匹配字段最前面的一个字,继续匹配。其采用的分词词典是逆序词典,对文档进行处理时先要进行倒排处理,生成逆序文档9。有的时候,需多种方式对文本进行切分,当它们切分的结果相同,表示这个词就是真正需要的词。本系统采用正向最大匹配算法对文档进行词语切分。2.2.4Tf统计方法Tf的全称Term Frequency,也就是词条频率。用数学方法来描述即某个词语出现的次数除以该文档中的词条总数。常用于情报检索与文本挖掘,用以评估一个词对于一个文档的重要程度。如今在信息科学领域,比较经典的词频统计方法有基于匹配的词频统计算法和基于树结构的词频统计算法。对于单关键词匹配算法国内外都有了深入的研究,比较著名的匹配算法有BF(Brute Force)算法、KMP(Knuth-Morris-Pratt)算法、BM(Boyer-Moore)算法等10。1BF算法BF算法亦称蛮力算法。其基本思想是:首先S1和T1比较,若相等,则再比较S2和T2,一直到TM为止;若S1和T1不等,则T向右移动一个字符的位置,再依次进行比较。如果存在k,1kN,且Sk+1k+M=T1M,则匹配成功;否则失败。2KMP算法KMP算法是由高德纳(Donald Ervin Knuth)和 Vaughan Pratt 在1977年合作发明的。其基本思想为:假设在模式匹配的进程中,执行Ti和Wj的匹配检查。若Ti=Wj,则继续检查Ti+1和Wj+1是否匹配。若TiWj,则分成两种情况:若j=1,则模式串右移一位,检查Ti+1和W1是否匹配;若1j=m,则模式串右移j-next(j)位,检查Ti和Wnext(j)是否匹配。重复此过程直到j=m或i=n结束。3BM算法BM算法由Bob Boyer 和J Strother Moore在1977年提出,它是一个非常有效的字符串匹配算法。它的基本思想是:假设将主串中自位置i起往左的一个子串与模式进行从右到左的匹配过程中,若发现不匹配,则下次应从主串的i + dist(si)位置开始重新进行新一轮的匹配,其效果相当于把模式和主串向右滑过一段距离distance(si),即跳过distance(si)个字符而无需进行比较。基于匹配的词频统计方法,不可避免的是要对待处理的文档进行多次扫描。当待处理文档数据量比较大时,这无疑是要付出更高的时间和空间代价。针对这个问题,有学者又提出了基于树结构的词频统计算法。其基本思想是:首先根据已有的关键词集合构建一棵查找树,然后利用这个查找树对文档进行扫描,从而进行关键词的统计。进行词频统计时,非常好的是每当从文档中读取一个词与查找树比较时,只需对文档扫描一遍,则可统计出所有关键词的信息。这种方法减少了一些不必要的匹配过程,大大提高了统计效率。以上两种类型的词频统计方法是比较成熟的算法。本系统进行词频统计的方法主要是借助于数据库,理解起来比较容易。其基本思想是:首先连接数据库,利用分词的特性,将分好一个个词分别作为一条记录通过SQL语句插入到数据库相应的表中。对生成的两个分词表进行等值连接,得到两个分词表共同出现的词语记录集合,并去除重复记录,将这个结果作为一张新表。再分别让两个分词表与新表,即共同词表进行等值连接,得到这些共同词在每个分词表出现的记录集合,并分别将结果集插入到新的表中。到这里已经为词频统计做足了准备工作。最后就是利用group by语句进行分组以及Count函数进行统计。2.2.5数据降维数据降维,是词频统计中所要考虑的一个因素。当文档中的词条数目很多,即向量的维度较高,那么为了提高效率,我们需要降低维度,即去除一些无关紧要的词语,减少词语的数量。而且采取降维的策略在一定程度上,还可以提高精度。本系统在考虑时这个问题时,主要是利用SQL语句对分词的结果集进行一个筛选的操作,简单的去除一些标点符号及无关的常用词。2.2.6相似度计算方法基于向量空间模型,我们将两篇文档理解为两个向量,将它们之间的相似度理解为这两个向量在空间上的接近程度,即它们之间的夹角。我们通过计算余弦系数11来比较两篇文章的相似度,余弦系数计算方法为,向量内积/各个向量的模的乘积。公式如下: (2-2)其中,、分别为待比较的两个文本的特征向量,、分别为向量的第i维,n为特征向量的维数12。余弦计算的好处是其值正好是一个介于0到1的数,如果向量一致就是1,如果正交就是0,符合相似度百分比的特性。2.3系统实现思想我们将两篇文档当作两个向量,通过计算相似度来宏观的表现它们的接近程度。本系统主要按如下的思路进行:根据2.2节相关技术的介绍,本系统采用向量空间模型,主要功能分为三个模块进行,分词处理,词频统计,相似度计算。分词处理主要利用词库,通过正向最大匹配算法对载入的文档分词。在词频统计之前,要做一个预处理工作,即连接数据库,将分好的词写入数据库相应表中。词频统计,则是在预处理工作的基础上,利用SQL语句对数据库表进行操作,对表进行等值连接,统计出所需要的数据。相似度计算,也要通过SQL语句,将统计的结果返回系统进行余弦系数值的计算。第3章 系统架构设计3.1系统需求分析抄袭是一种严重的造假行为。当前出现的各种学术造假、论文抄袭现象,已严重的影响到整个高校的学术氛围。大学是一个要求学生独立自主学习的地方,而现在越来越多的学生放慢自己的行为,对老师布置的作业抄抄了事。这样老师既不能对学生的学习情况得到一个真实的掌握,学生学习的积极性也慢慢下降。这牵涉到的是一个诚信问题。诚信是社会道德的一道防线,也是大学生诚信责任的一道防线。现在这道防线岌岌可危,我们应采取积极地措施加以保护。本课题就学生抄袭作业现象做了一个系统设计。系统一方面在理论方面进行了一定的探究,了解了文档相似度相关方面的知识,另一方面在实际的应用上也有一定的可考价值。本系统进一步完善优化,老师可以将此作为检查学生抄袭情况的工具,尽量减少学生抄袭的念头。3.2系统功能概述3.2.1系统流程首先,用户看到的是一个欢迎使用的界面,点击进入之后即是主界面,然后是进行文档相似度检测,得到两篇文章的相似度。完成相似度计算后,可以查看到相应的检测记录,相似度超过一定范围会给出提示。还可以通过帮助说明,了解到具体如何操作以及一些注意事项。最后退出系统。系统的总体框架结构如图3-1所示: 图3-1 总体结构图3.2.2功能模块介绍本课题设计的基于VSM模型的文本相似度检测系统13主要是进行一个理论的研究,可以对学生的作业进行检测,不需要连接网络,每一次检测的对象都是放在同一文件夹下,然后分别对文档进行相似度的检测。另外,本系统对图片、表格等是不进行识别和检测的。根据实际的需求,基于VSM模型的文档相似度检测系统主要有两个功能模块:文档相似度检测模块、检测记录查看模块。文档相似度检测模块是核心模块,主要实现如下功能:(1)载入两篇文档载入两篇文档即选择相应格式的文档载入到相应的控件中。(2)文档进行分词处理由于汉语自身的特点,词与词之间没有明显的分割符号,所以文档要进行相似度计算的第一步就是要分词。对文档进行分词处理,主要是利用现成的词库,并采用正向最大匹配算法对文档进行分词。(3)将分好的词写入数据库相应表中将分好的词写入数据库,即在分好词的基础上,通过连接数据库,将每个词作为一条记录插入到数据库相应表中。这主要是为词频统计做准备工作。(4)词频统计词频统计,依旧是在和数据库打交道,对两个分词表做等值连接,将两篇文档共同出现的词语记录检索出来,插入一张新表中,再让这两个存入分词的表分别与新表做等值连接,从而可以统计出这些共同词在相应文档中出现的次数。所以,利用数据库的方法简单且易于明白的解决了词频统计的问题。(5)相似度计算相似度计算则是将统计的结果返回系统并保存到数组中,然后代入余弦系数计算公式中,即得相似度结果。检测记录查看模块主要是用来对检测的结果进行查看。当两篇文档的相似度比较结果超出一定范围,则给出提示,表示有抄袭的嫌疑。3.3系统性能要求(1)系统设计的合理性在设计系统时要考虑实际的系统性能和硬件要求,不能忽视所处环境,也不能一味地追求新的设计方法,要保证系统实现的合理性。(2)系统的简单易用性本系统侧重于对相似度检测进行一个理论的研究,所以并不需要过于美观、应用的界面,作为用户最终需要的只是两篇文档的相似度比较结果。因此设计时本着“简单易用”的原则,方便用户操作。(3)系统的可靠性对于需要比较的两篇文档,可能是数据量非常大的文本,那么此时就要考虑到系统运行的效率,采取相应的算法加以优化,尽可能的保证系统高性能有效的运行。3.4功能模块设计本系统有三大模块,文档相似度检测模块、检测记录查看模块、帮助说明模块。文档相似度检测模块中要实现五大功能:文档载入,文档分词,分词入库,词频统计,相似度计算。检测记录查看模块中主要实现:记录查看以及信息提示的功能。帮助说明模块主要是对系统如何进行操作以及一些注意事项进行说明。具体功能模块图如图3-2所示:图3-2 功能模块图3.5数据库设计文档相似度检测模块中主要实现三个功能,文档分词,词频统计以及相似度计算。其中词频统计是一个核心功能,而如何进行词频统计,这是一个比较关键的问题。实现的方法有多种,本系统使用的方法比较易于理解。即通过连接数据库,将分好的词写入数据库相应表中,在主代码中嵌入SQL语句,从而统计出相应的词频。数据库的创建主要是逻辑结构设计和物理结构设计的结果,在计算机系统上建立实际的数据结构、导入数据14。数据库中一共存放六张表,前面两张表是用来存放要比较文档的分词信息,后面四张表都是通过SQL语句,分别进行查询,然后将得到的结果集插入到相应的表中。当系统对两篇文档的相似度计算完成时,前五张表的信息将通过SQL语句清除。在建表时,注意将每个表的主键设置成标识符自动增1,数据类型根据每张表实际存放的信息合理的选择。 表3-1是用来存放文档1分词信息:表3-1 文档1分词表列名数据类型允许空word_num1intNoword_name1nchar(100)Yes表3-2是用来存放文档2分词信息:表3-2 文档2分词表列名数据类型允许空word_num2intNoword_name2nchar(100)Yes表3-3是用来存放文档1和文档2共同出现的词的信息,即对文档1分词表和文档2分词表进行等值连接,并且用distinct关键字去掉重复的记录,将得到的结果集插入到共同词表中:表3-3 共同词表列名数据类型允许空word_num3intNoword_samenchar(100)Yes表3-4是用来存放文档1中出现共同词的记录信息,即对文档1分词表和共同词表进行等值连接,从而得出这些共同词在文档1分词表中出现的记录,注意此时是不能够用distinct关键字的。我们的目的是为了统计出这些共同词在文档1中出现的次数,所以此处不用distinct去重,否则没有意义。并且共同词表数据类型的设置跟分词表的数据类型设置保持一致。表3-4 文档1共同词表列名数据类型允许空count_num1intNocount_name1nchar(100)Yes表3-5是用来存放文档2中出现共同词的记录信息,和文档1共同词表一样,将文档2分词表和共同词表进行等值连接,得到共同词在文档2分词表中出现的记录,便于后面的统计。表3-5 文档2共同词表列名数据类型允许空count_num2intNocount_name2nchar(100)Yes表3-6是用来存放文档1和文档2相似度计算结果的信息,这个表中的信息将长期存储在数据库中,供用户查看。这个表的实现主要是通过SQL语句,将前台系统相应控件中的结果作为一条记录插入到表中。 表3-6 相似度计算结果表列名数据类型允许空s_timedatetimeYestest1nvarchar(150)Yestest2nvarchar(150)Yessimilaritydecimal(10,2)Yess_promisenchar(10)Yes第4章 系统实现4.1系统运行环境1、硬件环境:处理器:Inter Core 或更高内存:2GB2、软件环境: 操作系统:Windows XP或者Windows 7后台辅助工具:Microsoft SQL Server 2005语言开发工具:Microsoft Visual Studio 20054.2界面实现4.1.1登录界面在基于VSM模型的文档相似度检测系统中,登录界面主要是用来指引用户进入本系统,然后开始相关的操作。点击“Enter”后,登录窗体被隐藏,主界面窗体弹出。本系统的登录界面如4-1所示:图4-1 登录界面4.1.2功能模块界面主界面主要有三个选项卡,分别为文档相似度检测,文档相似度检测记录,关于。1文档相似度检测界面图4-2 文档相似度检测界面用户进入主界面后,选择两篇文档载入,这两篇文档的格式可以是txt、 rtf格式, 并且richtextbox中的内容为只读形式,防止误操作修改了文档中的内容,造成相似度计算结果的不准确。接下来就是文档相似度检测的工作。点击文档分词,即对载入的两篇文档进行分词,此时的效果就是两个richtextbox文本框中的内容均被反斜杠切分成一个个词语。分词入库的实现,即只要遇到反斜杠就将这个词作为一条记录插入数据库相应表中。此时后台数据库的两张表里分别被填充了分词信息。再进行词频统计,文档1分词表和文档2分词表进行等值连接,并且用distinct关键字去掉重复的记录,并将结果集插入共同词表中。这个过程利用sql语句简单的去除了一些常用的词语及一些标点符号。然后文档1分词表和文档2分词表分别和共同词表进行等值连接,从而得出这些共同词在两个分词表中出现的记录,注意此时是不能够用distinct关键字的。最后点击相似度计算按钮,得出结果,并用百分数表示。这个操作会将控件中的相关结果,如测试时间,测试文档的名称,相似度计算结果,以及相似度是否在允许范围这些信息作为一条记录插入数据库的检测记录信息表中。2检测记录查看界面图4-3 检测记录查看界面文档相似度检测记录选项卡中,我们可以对检测的结果进行查看。点击表中记录,相应的信息就会显示在各个textbox控件中,并且当相似度的结果超过一定范围,就给予红色警示。3帮助说明界面图4-4 帮助说明界面帮助说明界面主要是对系统如何操作以及操作时要注意哪些事项进行一些说明。4.3相关代码分析1.分词入库:while (s1!= 0 & (rtxtbox1.Find(/)!= -1) pos1 = rtxtbox1.Find(/); word1 = s1.Substring(0,pos1); n=word1.Length ; string strSQL = insert into word1 (word_name1)Values(word_name1); SqlCommand cmd = new SqlCommand(strSQL, myConn); cmd.Parameters.AddWithValue(word_name1, word1); cmd.ExecuteNonQuery(); s1 = s1.Remove(0,n+1); s1=s1.Replace(n,); rtxtbox1.Text = s1.Trim(); 这段代码主要是将分好的词写入数据库中相应的表中。对字符串进行循环处理,首先用richtextbox控件的find()方法找个反斜杠的位置,然后截取反斜杠之前的字符,将其作为一条记录插入数据库的表中,这里用到sql语句实地对数据库进行操作。然后将这个词语连带反斜杠一起删除,再继续执行循环体。2.检索共同词string strSQL1 = insert into sword_same(word_same) select DISTINCT word_name1 from word1,word2 where word1.word_name1=word2.word_name2 and word_name1 not in(地,你,我,他,她,了,个,.,的,。,,);这段Sql命令主要是将两个分词表做等值连接,得到两篇文档中共同出现的词语,同时在集合中去除一些常用词以及标点符号。3.将词频统计的结果返回string strSql3 = select ROUND(CAST(count(*) as float)/(select count(*) from word1),2) wordCount from word_count1 group by count_name1; SqlCommand cmd13 = new SqlCommand(strSql3, myConn); List num3 = new List(); SqlDataReader read3 = cmd13.ExecuteReader(); while (read3.Read() double no3 = Convert.ToDouble(read3wordCount); num3.Add(no3); Sql命令是得到共同词频率的集合。首先对word_count1进行分组处理,利用count()函数得到每个共同词出现的次数,注意要将其用CAST()函数转换为Float类型。再对每一个共同词都进行这样的处理,用其出现次数即记录个数除以总的分词记录数,即得到一个共同词频率集合。通过read()方法,对结果集依次进行读取,取出wordCount属性即共同词词频将其保存到数组中。第5章 系统测试5.1相似度检测1文档分词载入两篇文档到richtextbox文本框中,点击文档分词按钮,此时文档1文档2的内容均以反斜杠的形式被分词,并提示“文档分词成功!”。分词效果如图5-1所示:图5-1 文档分词2分词入库点击Go!按钮,提示“入库成功!”。此时会将每一个分好的词作为一条记录插入到数据库相应的两个分词表中,此时后台数据库的两个分词表里分别被填充了分词信息。在后台数据库表中的显示结果如图5-2和图5-3所示:图5-2 文档1分词信息图5-3 文档2分词信息3词频统计点击词频统计按钮,提示“词频统计成功!”。此时会将文档1分词表和文档2分词表进行等值连接的结果集存入一张新表,即共同词表。在后台数据库表中的显示结果如图5-4所示。然后再将文档1分词表和文档2分词表分别和共同词表进行等值连接,从而得出这些共同词在两个分词表中出现的记录。在后台数据库表中的显示结果如图5-5和5-6所示。图5-4 共同词表信息图5-5 文档1共同词信息图5-6 文档2共同词信息4相似度计算点击相似度计算按钮,在文本框中显示相似度百分比。如图5-7所示:图5-7 检测结果5.2记录查看检测 点击相似度计算按钮后,此时会将控件中的相关结果,如测试时间,测试文档的名称,相似度计算结果,以及相似度是否在允许范围这些信息作为一条记录插入数据库的检测记录信息表中。在后台数据库中的显示信息如图5-8所示:图5-8 检测记录信息点击文档检测记录查看选项卡,可以查看刚才相似度检测的情况。当两篇文档的相似度超过一定范围会给出警示信息,“有抄袭的嫌疑”,检测信息如图5-9所示:图5-9 检测记录查看界面第6章 总结与展望6.1系统总结经过几个月的努力,我的毕业设计终于可以完整的画上一个句号了。本系统界面简洁,易于操作,使用户使用起来不感觉到复杂。不需要连接网络,处理本地文档时很方便,也不用庞大的空间来存储文档数据。每一次相似度计算之后会自动清除检测时存储的数据,不需要占用太大的存储空间。支持多种文件格式,包括TXT、RTF等文档。功能设计模块化,条理清晰,使用户很容易了解到文档相似度检测是如何实现的。人机交互,做到温馨化提示。通过SQL语句对数据库表的操作是本系统的一大特色。这个主要体现在词频统计和相似度计算两个功能模块上。对分词统计有多种方法可行,本系统借助数据库对分词进行统计。这种方法比较容易理解,操作起来比较清晰。相似度计算,则要将统计的结果集返回。这个也是需要使用SQL语句对数据库进行频繁的操作。虽然整个系统的功能界面比较简洁,但所有细节上的功能都在后台代码中进行。比如相似度计算完成后,此时就要通过SQL语句将分词表、两篇文档的共同词表、共同词在每篇文档出现的结果集表的记录信息全部清除。这样一方面不会干扰接下来两篇文档的相似度比较,另一方面也不会占用太大存储空间。点击相似度计算完成后的另一个功能就要实现将各控件中的结果插入到数据库中的检测记录表中,同时对datagridview数据源进行重新绑定,将数据库中检测记录表的信息展示到datagridview中。这些功能的实现都不能简单的在系统的测试过程中看到,而是体现在后台当然,头一次做这种理论性较强的系统,由于时间关系以及自己的专业水平和技术水平有限,还是存在许多不完善的地方。比如如何更精确的分词,采取科学的数据降维方法等,这些都是我以后需要改进的地方。做一个系统,要考虑很多方面的问题,所以可以和别人适当的进行交流,以使自己的系统功能更加强大。我想不论一件事情有多难,只要花心思,动脑筋,一定会有结果的。此次毕业设计是对我两年来所学知识的一个综合检测,让我对专业课知识有了进一步的巩固,对今后步入社会工作更多一点自信,这是我大学生涯难忘的经历。6.2系统展望本系统侧重对文档相似度进行一个理论的研究,其中涉及很多关键技术,比如分词技术,词频统计技术。这些国内外学者都有过比较深入的研究。我要做的是在以后的学习中进一步对这些技术加以理解和研究,以期使系统功能更加强大,真正成熟的运用到教学工作中。就现在的系统而言,还有一些需要进一步改进的地方:(1)本系统可以实现对句子的语意相似性15进行判断以及对其结构上的相似性进行分析说明。(2)对文档进行更精确的分词。这些需要改进的地方,我会在以后的学习中进一步加以完善。致 谢首先,我要感谢合肥师范学院给我提供的良好的学习和生活环境,感谢计算机系所有老师对我的培养与关怀,感谢此次指导我毕业设计的李宜兵老师对我的细心指导,感谢在我遇到困难时给我帮助的每一位同学。毕竟是走过了三年的大学生活,对来之不易的本科学习生活更是有了不一样的理解。在合肥师范学院的两年里,不论在学习、生活还是思想认识上我都有了很大的改变。我在努力的学习专业课知识同时,也在认真地计划着我的未来。我知道人一定要有目标,更要有恒心和毅力来完成这个目标。所以,两年的本科学习生活,让我收获了很多。我也认识了更多的志同道合的朋友,一路上他们给了我很多帮助与支持。本次系统的设计给了我很多宝贵的经验,我相信这必将是我走向社会的一笔重要财富。最后,再一次感谢我的母校,我的恩师,我的同学!祝各位老师身体健康,工作顺心!愿我校的教育事业蓬勃发展!参考文献1 潘谦红,王炬,史忠植.基于属性论的文本相似度计算N.计算机学报,1999,22(6):652-655.2 张焕炯,王国胜,钟义信.基于汉明距离的文本相似度计算J.计算机工程与应用.2001,37(19):21-22.3 杜松江,卢东方,张佳.C#程序设计语言M.北京:北京邮电大学出版社,2011,3-7.4 明日科技,王小科,吕双.C#开发典型模块大全M.北京:人民邮电出版社,2010,2-27.5 Inmon W H.数据仓库.王志海等译M.北京:机械工业出版社,2005,34-98.6 施伯乐,丁宝康, 汪卫.数据库系统教程M.北京:高等教育出版社,2003,147-151.7 TSATSARONIS G,PANAGIOTOPOULOU V. A generalized vector space model for text retrieval based on semantic relatedness. Proceedings of the EACL 2009 Student Research Workshop,2010:70-78.8 邱哲,符滔滔.开发自己的搜索引擎Lucene 2.0+HeritrixM.北京:人民邮电出版社,2007,104-232.9 罗刚.使用C#开发搜索引擎M.北京:清华大学出版社,2011,174-198.10 宣云儿,李晓菲.基于词频统计的情报学研究泛化分析J.情报杂志,2011,5(2):112-115.11 Qinglin Guo. The similarity computing of documents based on VSM. IEEE International Computer Software and Applications
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 后台开发合同范本
- 年度质子交换膜燃料电池(REMFC)发电装置市场分析及竞争策略分析报告
- 年度偏磷酸竞争策略分析报告
- 窗帘质保合同范本
- 返利协议合同范本
- 叉车搬运承包合同范本
- 化妆品广告制作合同范本
- 电商平台与业务员合同范本
- 怎样申请合同范本
- 雷达买卖合同三篇
- 旅游发展产业大会总体方案
- 民用机场竣工验收质量评定标准
- 汽车应急启动电源项目商业计划书写作范文
- 浅谈“低起点-小步子-勤练习-快反馈”教学策略
- 双向细目表和单元测试卷及组卷说明
- 电缆桥架安装施工组织设计(完整版)
- 离子色谱法测定空气中二氧化硫
- 水蒸汽热力性质表
- 两癌筛查质控评估方案
- 汽车污染途径及其控制措施毕业论文
- 漫话链条 p p t
评论
0/150
提交评论