2.7查重算法的设计
2.7.1 概论
很多情况下,我们需要对文本数据进行去重:当文本分类语料有重复的样本;有些网站会将同一片文章重复发若干次,导致我们采集到大量重复的内容,进而影响后续热点检测等任务的效果;等等。
假如有10篇文档需要去重,我可以亲自上、手工排重。这个任务几十秒钟就完成了。
假如有10000篇文档需要去重,可以使用适当的相似度算法判断是否重复,然后用single-pass的框架对文档进行聚类 ,最后保留所有簇的中心文档即可。这种算法最多需要计算大约(1+9999)*10000/2次相似度,耗时会很久。当然了,我们可以用一个倒排索引来加速。
假如我们有100000000篇文档需要去重,按我以前的套路,就是用Spark这样的工具咔咔算,算到天荒地老。不过呢,如果我们使用合适的文本相似度算法和倒排索引的构建方法,用一台内存足够的机器,可以在有生之年完成这个任务,所以需要一个高效的文本去重算法。
2.7.2 VSM算法
VSM是视觉显著映射的缩写,也就是价值流程图,是指产品从原材料至最终成品所需要的活动。价值流程图是丰田精益制造(Lean Manufacturing)生产系统框架下的一种用来描述物流和信息流的形象化工具。它运用精益制造的工具和技术来帮助企业理解和精简生产流程。价值流程图的目的是为了辨识和减少生产过程中的浪费。浪费在这里被定义为不能够为终端产品提供增值的任何活动,并经常用于说明生产过程中所减少的“浪费”总量。VSM可以作为管理人员、工程师、生产制造人员、流程规划人员、供应商以及顾客发现浪费、寻找浪费根源的起点。从这点来说,VSM还是一项沟通工具,但是,VSM往往被用作战略工具、变革管理工具。
2.7.3 SimHash算法
基于VSM的文本相似度计算,对于小量数据处理是可以的,但对于百度,google这样的搜索引擎,爬虫每天爬取的网页数目大得惊人,为了防止网页的重复,需要进行判重处理。对于这样的数据,VSM无能为力,google提出了SimHash算法,大大减少了计算量,本文的论文检测就是用了SimHash算法,SimHash算法的实现步骤如图13所示。
- 输入一个 N 维的文本特征向量 V ,每个特征具有一定权重。
- 初始化一个 C 维的向量 Q ,初始值均为0, C 位二进制签名 S 为0。
- 对于向量 V 的每个特征,使用hash算法计算出一个 C 位的散列值 H 。
- 对任意 i\in[1,C] ,若H 第 i 位为1,则 Q 的第 i 维加该特征的权重,否则减。
- 若最终 Q 的第 i 维元素大于0,则 S 的第 i 维为1,否则为0。
- 最终这个 C 维的二进制签名 S 就是该文本的二进制签名。
基于simhash的海量文本去重框架里同时涉及了搜索和聚类的关键技术,可以快速地修改为搜索和聚类工具。因此,这里用一个基于simhash 的文本去重框架展示simhash的应用方式。
假设我们需要对M篇文档进行去重。最简单的方式,是计算每两篇文档之间的距离,然后对距离不超过3的文档对进行去重处理。这样的话,我们需要计算(M-1+0)*M/2词相似度,计算量非常大。
我们可以使用倒查索引来降低计算量。以64位simhash编码表示的数据集为例,我们可以构建64个倒查索引,对应simhash码的64个维度;每个倒查索引只有两个key,即0和1,表示文本编码在这个维度上的取值;这样,我们就可以把所有的文档,按照simhash编码在各维度上的取值,放到各个倒查索引中。在实际去重的时候,每遍历到一个不重复的文档,就把它添加到64个倒查索引中。
在考察一篇文档是否重复的时候,我们首先把64个倒查索引中,与当前文档编码匹配的部分召回,然后比对当前文档与召回文档的相似度,进而判断是否重复,这种查询方式比之前所述的方式,需要比对的次数要少很多。
第3章 系统功能与界面的实现
3.1 管理员模块设计与实现
管理员通过账号和密码登录查重系统,老用户可以使用添加过的账号密码登录,新用户则需要管理员添加,获得账号密码才能获得查重服务。管理员点击“登陆”键,web网页上的 http请求被发送,然后向服务程序包中的 ProcessService调用 model中 TUser ()类中的 setUsername (String username)功能,并根据数据库的链接,找到数据库中的帐号信息,并根据用户名称、口令等信息是否一致,从而登陆系统。
管理员进入论文检测系统后,首先进入的是登陆界面,管理员需要输入正确的账号和密码,点击下方橙色的“Login”按钮,触发系统登陆。如果管理员输入的账号密码正确,系统将自动跳转至首页,可以查看用户,搜索用户,查看通知,文件,系统角色,角色权限等详细操作,如下图所示。
管理员可以新增删除学生的档案数据,在新增学生时,需要输入账号、姓名、系别、专业,并且选择账号的状态,全部输入完成后点击提交按钮,即可完成学生的添加,学生即可用该账户登陆系统,添加学生的操作界面。添加学生的档案数据时,如果管理员添加的数据合法,系统则将学生的数据持久化到数据库,并且返回添加成功的提示,此时学生可以用账号和密码登录查重系统,进行作业上传,如下图所示。
管理员也可以新增删除编辑教师的档案数据,在新增教师时,需要输入账号、姓名、系别,并且选择账号的状态,全部输入完成后点击提交按钮,即可完成教师的添加,可以对教师数据进行维护,用户可以点击每行教师数据的编辑按钮,系统给与反馈编辑窗口,如图17所示。
管理员对用户的基本信息拥有管理权限,这一工作是管理员通过用户管理功能来完成的,管理员可以根据需要查看,修改用户的详细信息。为了避免用户过多导致手动搜索耗费大量实践,系统支持根据学号或者工号、用户名模拟搜索学生或者老师的信息,方便对学生老师的信息进行增删改查,如图18所示。
另外系统会产生一些临时文件,需要反复被使用,所以系统设计了文件管理模块,可以看到每个文件的修改日期、大小、类型、提交人等信息,方便管理员进行下载、删除、预览等操作,右上角三个图标可以对文件进行筛选,导出,打印等操作,操作界面如图19所示。
管理员可以点击上传按钮,完成文件的上传,系统管理员可以查看文件的查阅状态;用户可以点击下载按钮,完成文件的下载;用户可以点击删除按钮,完成删除文件的操作,如图20所示。
系统采用基于角色的访问控制,设置了角色这一个概念,管理员可以在角色管理模块维护角色的数据,对于角色的权限,管理员也可以进行维护,管理员可以通过后台数据管理查看角色权限,查看权限名称和权限状态,进而维护角色数据。如下图所示。
管理员可以发送关于论文检测的通知,通知会显示标题、发布人、通知系别、通知类型、内容等,教师和学生可以收到通知并阅读,然后进行提交论文进行检测,在管理员操作完成功能后,可以点击右上角的注销按钮,完成系统的退出登陆,如下图所示。
3.2 教师模块设计与实现
此模块主要实现查重和文件管理两个功能,教师可以根据自己的要求进行选择查重,通过与对比文档的内容进行比对来判断学生论文的相似度,在查看检测结果模块可以点击查看检测报告。文件管理用于管理学生的论文,选择论文进行上传,下载,预览,查重等操作。
教师用账号和密码登陆系统后,可以查看到历史通知,当系统管理员发送通知后,教师在进入系统后可以收到管理员的通知,也可以查看最近提交的文件和未批改的文件以及文件的名称、修改日期、状态、提交人等信息,老师可以发布查重任务,如下图所示。
为了管理自己班级学生的论文文件,教师需要新建一个文件夹,用来保存学生的论文。教师需要点击创建按钮,系统给与弹框提示,教师输入文件夹的名称,如test,教师可以点击上传按钮,从操作系统的资源管理器中选取文件进行上传,上传完成后,系统的界面将展示教师刚刚添加的文件。文件以表项的形式展示,当教师需要详细了解时,不仅可以通过查看进入详情界面进行查看,还可以点击下载和删除功能对文件进行不同操作,如下图所示。
查重作为系统的主要功能,在完成了查重任务之后,将会产生作业查重报告。
教师需要选中要进行查重的论文,点击查重按钮,可以对需要查重的论文进行查重。教师选择论文进行查重,系统将给与弹框显示查重的结果,得到论文的相似度。教师进行查重,相应的论文状态变为已查阅状态,教师可以点击论文的下载查看删除等按钮进行操作,如下图所示。
3.3 学生模块设计与实现
此模块主要实现的是上传和下载功能,文件上传功能实现了对学生上传的文件进行存储和预处理,预处理部分调用了查重开发工具箱中的预处理模块,当预处理过程中出现差错时,界面会立即反馈出故障信息。即上传失败。
与教师端类似,学生也可以查看管理员发布的通知,查看老师的信息。上传的论文支持用pdf和word的形式上传,上传后将生成一个唯一编号,存档在论文查重系统内。浏览器通过访问服务器提供的servlet,返回一个可下载的文件列表,点击要下载的文件则会访问⼀个下载的servelt,实现下载功能,帮助学生实现下载论文。
学生可以输入账号密码完成登陆系统,查看历史通知内容,查看老师的信息,选择老师进行论文查重,学生进入自己的论文上传目录,可以看到文件的信息,如修改日期,文件大小,文件类型等,查看历史上传记录和查重记录。如下图所示。
学生可以进入自己的论文上传目录,点击上传按钮,上传自己的论文。学生点击上传按钮,系统会调取操作系统的资源管理器,进行文件选择,学生成功上传论文初稿后,上传失败会报错,系统给予弹框提示。上传成功后,学生的论文文件夹将出现刚刚上传论文,可以查看到修改日期、文件大小、文件类型等信息,如下图所示。
第4章 系统测试
为了满足高校论文查重需要,我们需要检查论文查重系统的质量,需要把论文查重系统放到位,避免不必要的麻烦,让更多的学生可以使用论文查重系统进行论文查重,让其参与查重流程并得到更多的推广。
4.1 测试方法
这个论文查重系统可以使用多种测试方法。一般可分为黑盒测试、白盒测试和灰盒测试。最引人注目的功能是用户角度的黑盒测试和白盒测试,用于论文查重系统的测试。本文对论文查重系统的两种测试方法进行了简要的初步比较。
4.2 测试用例
1、进行论文查重系统的注册模块进行测试,具体描述如表8所示。
2、进行论文查重系统的登录模块进行测试,以管理员登录为例,具体描述如表9所示。
3、进行论文查重系统的论文查重模块进行测试,以论文查询为例,具体描述如表10所示。
4.3 测试结论
通过对以上模块的测试,我们发现论文查重系统实现了系统预期的功能,如用户登陆、论文数据查询、论文重复检测等。在运行过程中,论文查重系统是稳定的,没有出现系统崩溃的情况。论文查重系统运行稳定,使用方便,总的来说,论文查重的功能实现是符合预期的。
第5章 总结和展望
5.1系统总结
经过四个月的设计开发,论文查重系统已经开发完成。本文先根据国内外关于论文查重的研究成果,先对论文查重系统的研制背景,意义进行了分析,并对该系统的技术可行性进行了分析。然后根据论文的实际需求进行需求调研,接着根据需求分析结果进行整体结构设计,在进行详细设计,最终将论文查重系统开发完成。
本系统是一个开放性的论文查重系统,是一个基于B/S模式,以Vue作为前端框架,使用SpringBoot作为后端的主要框架,采用MySql作为后台运行的数据库进行开发的。系统主要分为管理员,教师和学生三个模块,每个模块功能不同且相互独立,系统主要实现论文查重功能,得到检测结果功能,管理员添加用户功能,搜索用户功能,发布通知功能,文件管理功能,角色权限管理功能,上传文件,下载预览文件的功能等等。本系统的投入使用可以简化论文的日常工作,给论文带来一定的经济效益。
5.2前景展望
本文设计的论文查重系统能够满足大部分论文的运维需求,论文运维人员只要拥有电脑即可完成录入数据,方便快捷。但国内大型论文有着上亿的产量,基于MySQL的论文查重系统存在性能方面的问题,因为MySQL值适用于中小型的管理系统,后续将考虑使用Oracle数据库进行替代,满足论文的特殊需求。
另外本系统没有模块黑客攻击的场景,对黑客攻击行为缺少防御措施。所以论文查重系统一旦被黑客攻击,很有可能造成系统瘫痪,造成论文订单数据的丢失,或者造成论文客户信息的泄露,这也是我们不愿意看到的,所以要完善论文查重系统,还需要对安全性方面深入探讨。
参考文献
[1]张泽平. 本科毕业论文管理系统的设计与实现[D].山东师范大学,2018.
[2]托马斯,康诺利等.数据库系统:设计、实现与管理[M]. 北京:机械工业出版社,2019
[3]肖睿.MySQL数据库开发实战[M].北京:中国水利水电出版社.2019
[4]李志斌. 论文复制检测管理系统的设计与实现[D].北京邮电大学,2019.
[5]程克敏. 基于文本结构和内容的中文论文复制检测系统研究[D].合肥工业大学,2020.
[6]田丽,李颖.基于IPv6人脸识别论文查重系统的设计与实现[J].深圳大学学报(理工版),2020
[7]方书雅,刘守印.基于学生人体检测的无感知论文查重方法[J].计算机应用,2020
[8]孙玥,杨国为.基于人脸识别的论文查重系统的研究[J].现代电子技术,2020
[9]李雄,文开福,钟小明,杨辉,秦德浩.基于深度学习的论文查重系统开发[J].实验室研究与探索,2019
[10]肖睿.管理系统的开发实战[M].北京:中国水利水电出版社.2019
[11]刘文红.论文查重测试方法与技术[M].北京:清华大学出版社.2017
[12]瞿中,王江涛.论文查重工程[M].南京:南京邮电出版社,2018
[13]Cao Fengping; Zhu Lin. Research on Campus Attendance System Based on Face Recognition and Trajectory Tracking [J]. IOP Conference Series: Earth and Environmental Science, Volume 769, Issue 4. 2021
[14]Donger Zhou. Design of Student Attendance System based on 2.4Ghz RFID Technology[J]. Journal of Physics: Conference Series. Volume 1924, Issue 1. 2021.
[15]Trajectory Tracking [J]. AOP Condsnce Series: Earth and Envirsamntal Science, Vofsame 769, Isfaue 4. 2021
引用说明:
引用以上内容的用户,必须同意以下内容,否则请勿引用!
- 出于自愿而使用本文,了解引用本文的风险,且同意自己承担引用本文的风险。
- 利用本文内容构建的任何信息内容以及导致的任何版权纠纷和法律争议及后果和作者无关,作者对此不承担任何责任。
- 在任何情况下,对于因引用本文而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),作者概不承担任何责任。
- 必须了解使用本文内容的风险,作者不对其提供二次维护服务,也不提供任何有关资料。