基于VSM模型的文本相似度检查软件的设计与实现.docx
- 文档编号:23093008
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:32
- 大小:576.36KB
基于VSM模型的文本相似度检查软件的设计与实现.docx
《基于VSM模型的文本相似度检查软件的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于VSM模型的文本相似度检查软件的设计与实现.docx(32页珍藏版)》请在冰豆网上搜索。
基于VSM模型的文本相似度检查软件的设计与实现
学号:
1110211014
本科毕业论文(设计)
(2013届)
基于VSM模型的文档相似度检查软件的设计与实现
院系计算机科学与技术系
专业计算机科学与技术
姓名
指导教师
职称助教
基于VSM模型的文档相似度检查软件的设计与实现
摘要
近年来,论文抄袭、学术打假日益成为学术界和媒体界关注的话题。
尤其在现在的高校中,学生经常为了应付老师布置的作业而直接或间接的抄袭别人的劳动成果。
长此下去,高校学生的诚信度将受到严重质疑,那么采取一种有效的方法遏制学生抄袭的现象,成为一个现实的需求。
因此,文本相似度检测应运而生。
本次设计的基于VSM模型的文档相似度检查系统主要是进行一个理论的研究。
系统适用于对学生提交的实验报告、电子档作业等进行检测,从而提高学生独立完成作业的积极性。
本系统基于C#语言和数据库技术,采用著名的向量空间模型VSM方法,对文本分词、词频统计及相似度计算三大功能进行模块化的设计,条理清晰,实现了文档相似度的计算,对检测学生的抄袭行为有很大的实用价值。
关键词:
论文抄袭VSM模型文档相似度数据库技术
ABSTRACT
Inrecentyears,theplagiarism,theacademiccrackdownisincreasinglybecomingatopicofconcerninacademiaandthemediaindustry.Especiallyintheuniversities,inordertomeettheteacherassignments,thestudentsoftendirectlyorindirectlyplagiarizethelaborofothers.Ifthistrendcontinues,theintegrityofthecollegestudentswillbeseriouslyquestioned.Thentakinganeffectivewaytocurbthephenomenonofstudentplagiarismbecomesarealisticdemand.Therefore,thetextsimilaritydetectioncameintobeing.
ThissimilarityexaminationsystembasedonVSMmodelismainlyatheoreticalresearch.It’ssuitableforstudentstosubmitthetestinglabreportsandelectronicarchiveswork,etc,soastoboosttheenthusiasmofthestudentstofinishthehomeworkindependently.ThesystemwhichusingthefamousmethodofVSMvectorspacemodelisbasedonc#languageanddatabasetechnology.Thetextparticiple,wordfrequencystatisticsandsimilaritycalculationfunctioncarriesonthemodulardesign.Thissystemimplementsthecomputingdocumentsimilarity.Itisofgreatvaluetodetectstudent’splagiarism.
Keywords:
ThesisplagiarismVSMmodelDocumentsimilarityDatabasetechnology
第1章绪论
1.1课题背景
随着计算机的广泛应用以及Internet的普及,互联网逐渐成为当今世界上最大的信息库,人们可以非常便捷从网络中获得想要的信息,但与此同时也带来了一些问题,诸如非法复制、非法分发等文档侵权。
在如今的高校中,学生的论文抄袭、作业抄袭现象更是屡见不鲜。
学生日益对自己的作业马虎了事,随便抄抄了事。
尤其是对于有些枯燥的专业课程通常要进行实验并撰写电子实验报告,这就给不想动手动脑的同学以可乘之机。
这种现象长此发展下去,不仅老师不能把握学生专业课程学习的情况,而且学生学习的积极性也会严重下降,抄袭的风气将影响到整个高校的学术氛围。
那么文本进行相似度检测应用就成了眼下一个现实的需求。
目前,国内外有很多学者在研究文本相似度计算问题。
诸如国内学者潘谦红、王炬等就提出利用属性论计算文本相似度[1],张焕炯、王国胜等提出基于汉明距离的文本相似度计算方法[2]。
而由现代搜索技术之父,杰拉德·索尔顿(GerardSalton)等提出的基于向量空间模型(VSM:
VectorSpaceModel)的相似度计算方法已被广泛的应用于相似度计算领域。
如在电信行业中,利用VSM模型分析转网的客户数据,找出两个客户之间的相似度,以确定两个客户是否是同一用户,最终确定流失客户的流失方向。
基于这些学者对文档相似度计算的研究以及现实的需求,本系统采用VSM模型实现对文本的相似度计算,在一定程度上可以有效地对学生的相关作业进行检测。
1.2课题研究意义
抄袭是一种造假的行为。
高校是用来培养人才的,要求学生德智体美劳全方位发展。
学生在诚信的尺度上就不合格,那么在很大程度上失去了高校培养人才的意义,也更加难以保证学生走向社会后更好的为社会服务。
针对出现的问题,我们要积极采取措施加以遏制。
本系统主要是对相似度的检测进行一个理论的研究,了解文档相似度的实现原理以及相关技术。
当然也可以对学生作业有无抄袭情况进行一个检测,要求与数据库连接但无需网络的连接,这个在一定程度上可以辅助老师检查学生作业抄袭的情况。
老师对学生的监督有了一定的方法和依据,那么就尽量减少了学生抄袭的念头,进而提高学生自主学习的积极性,营造一个良好的学习氛围。
1.3开发语言
C#又读做“Csharp”,是微软公司在2000年6月发布的一种程序设计语言。
微软公司对C#的定义是:
“C#是一种类型安全的、现代的、简单的,由C和C++衍生出来的面向对象的编程语言,它是牢牢植根于C和C++语言之上的,并可立即被C和C++的使用者熟悉。
C#的目的就是综合VisualBasic的高生产率和C++的行动力[3]。
”由于C#面向对象的卓越设计,它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。
本系统选择C#作为开发语言,一方面是因为自己对这种语言比较熟知,另一方面是因为它的确有着一些优于其他语言的特点:
(1)拥有C/C++的强大功能以及VisualBasic简易使用的特性,而且看起来与Java有着惊人的相似。
因集众家之长,使其不仅安全,而且易于掌握和使用。
(2)不仅有实时的编译器,而且含有比一般语言更丰富的数据类型。
无论是从输出格式,还是网络I/O,都有一整套标准的类和数据类型。
(3)强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程。
(4)能够消除很多常见的C++编程错误,如变量由环境自动初始化、变量的类型安全等。
系统以MicrosoftVisualStudio2005作为开发工具[4],可以非常灵活的对界面进行设计,而且点击控件自动生成的代码非常规整,易于理解。
1.4设计任务
本系统对文档相似度检测进行一个理论研究的同时,也要实现相似度检测的基本功能。
文档相似度检测主要有三大功能,文档分词、词频统计、相似度计算。
从这三大功能入手,首先要对文档进行分词,分词要考虑到具体的一些分词方法,何种方法能更精确方便的对文档进行分词。
本系统是利用现成的词库,采用正向最大匹配算法对文档实现分词。
接下来进行词频统计,词频统计即通过连接数据库,在编程语言中利用SQL语句对数据库表进行操作,统计出所需要的数据。
相似度计算,即将统计的结果返回进行计算。
相似度检测完成后,还需实现的是让用户能够清晰明了的看到两篇的相似度检测情况,在此设计了查看记录界面,在后面的介绍中会具体介绍。
最后,在主界面中设计一个帮助说明的界面,以显示一些操作说明和注意事项。
第2章系统原理介绍
2.1系统原理概述
本系统是基于向量空间模型(VSM)来设计的。
我们将每一篇文档都看成一个向量,每个词作为向量的一个维度,而词的频率看成其值(有向),即向量,这样每篇文章的词及其频率就构成了一个i维空间图,两个文档的相似度就是两个空间图的接近程度,即它们之间夹角的大小,我们通过计算余弦系数来体现。
计算机不会像人一样自动识别文档里的每个词,所以要对文档进行分词处理,然后统计词频,最后根据余弦系数计算公式得出相似度比较结果。
2.2系统相关知识点简介
2.2.1数据库技术
数据库技术是现代信息科学技术的重要组成部分,是计算机数据处理与信息管理系统的核心[5]。
数据库技术解决了计算机信息处理过程中大量数据有效组织和存储的问题,实现了数据共享,保障了数据安全,从而高效地检索数据和处理数据。
数据库技术主要起着两方面的作用:
(1)信息系统开发。
利用数据库技术,并结合具体的编程语言,可以开发一个信息系统,从而解决业务数据的输入和管理问题。
在信息系统开发中,主要利用的是RDBMS的基本功能,即数据定义功能,数据操纵功能,数据查询功能以及数据控制功能[6]。
(2)数据分析与展示。
利用RDBMS的数据查询功能对数据库中的数据进行关联组合或者汇总分析,并以表格、图形或报表形式将分析结果返回设计系统进行展示,从而解决业务数据的综合利用问题。
本系统以MircroftSQLServer2005作为后台辅助工具。
通过连接数据库,将数据存到数据库表中,结合编程语言,对数据库表的数据进行操作,以及将信息返回到系统显示给用户。
2.2.2向量空间模型
VSM模型(VSM:
VectorSpaceModel)即向量空间模型,由Salton等人于20世纪70年代提出,并成功地应用于著名的SMART文本检索系统。
向量空间模型的基本思想为将文本简化为特征向量表示,将相似度计算问题简化为空间向量的运算,由此使得问题的复杂性大大降低[7]。
该方法根据文本中的词语将文本映射为n维空间向量,通过计算空间向量的余弦值来确定文本的相似度,即利用空间的相似性来解决文本上的相似性,直观易懂。
通过向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。
我们可以这样来理解一下向量空间模型。
对于每篇文档来说,它都是由很多词条组成的。
对此,我们可以对文档(Document)和其所包含的词条(Term)之间的关系进行一个研究。
我们可以将一篇文档看成一个向量D(term1,term2,……,termn)。
这样,假设某两篇文档中都出现了term1和term2,就可以用一个二维的坐标来表示文档和词条之间的关系,如图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的全称TermFrequency,也就是词条频率。
用数学方法来描述即某个词语出现的次数除以该文档中的词条总数。
常用于情报检索与文本挖掘,用以评估一个词对于一个文档的重要程度。
如今在信息科学领域,比较经典的词频统计方法有基于匹配的词频统计算法和基于树结构的词频统计算法。
对于单关键词匹配算法国内外都有了深入的研究,比较著名的匹配算法有BF(BruteForce)算法、KMP(Knuth-Morris-Pratt)算法、BM(Boyer-Moore)算法等[10]。
1.BF算法
BF算法亦称蛮力算法。
其基本思想是:
首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不等,则T向右移动一个字符的位置,再依次进行比较。
如果存在k,1≤k≤N,且S[k+1…k+M]=T[1…M],则匹配成功;否则失败。
2.KMP算法
KMP算法是由高德纳(DonaldErvinKnuth)和VaughanPratt在1977年合作发明的。
其基本思想为:
假设在模式匹配的进程中,执行T[i]和W[j]的匹配检查。
若T[i]=W[j],则继续检查T[i+1]和W[j+1]是否匹配。
若T[i]<>W[j],则分成两种情况:
若j=1,则模式串右移一位,检查T[i+1]和W[1]是否匹配;若1 重复此过程直到j=m或i=n结束。 3.BM算法 BM算法由BobBoyer和JStrotherMoore在1977年提出,它是一个非常有效的字符串匹配算法。 它的基本思想是: 假设将主串中自位置i起往左的一个子串与模式进行从右到左的匹配过程中,若发现不匹配,则下次应从主串的i+dist(si)位置开始重新进行新一轮的匹配,其效果相当于把模式和主串向右滑过一段距离distance(si),即跳过distance(si)个字符而无需进行比较。 基于匹配的词频统计方法,不可避免的是要对待处理的文档进行多次扫描。 当待处理文档数据量比较大时,这无疑是要付出更高的时间和空间代价。 针对这个问题,有学者又提出了基于树结构的词频统计算法。 其基本思想是: 首先根据已有的关键词集合构建一棵查找树,然后利用这个查找树对文档进行扫描,从而进行关键词的统计。 进行词频统计时,非常好的是每当从文档中读取一个词与查找树比较时,只需对文档扫描一遍,则可统计出所有关键词的信息。 这种方法减少了一些不必要的匹配过程,大大提高了统计效率。 以上两种类型的词频统计方法是比较成熟的算法。 本系统进行词频统计的方法主要是借助于数据库,理解起来比较容易。 其基本思想是: 首先连接数据库,利用分词的特性,将分好一个个词分别作为一条记录通过SQL语句插入到数据库相应的表中。 对生成的两个分词表进行等值连接,得到两个分词表共同出现的词语记录集合,并去除重复记录,将这个结果作为一张新表。 再分别让两个分词表与新表,即共同词表进行等值连接,得到这些共同词在每个分词表出现的记录集合,并分别将结果集插入到新的表中。 到这里已经为词频统计做足了准备工作。 最后就是利用groupby语句进行分组以及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_num1 int No word_name1 nchar(100) Yes 表3-2是用来存放文档2分词信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VSM 模型 文本 相似 检查 软件 设计 实现