论文检测系统的设计与方案的实现—基于VSM模型
当前论文抄袭现象时有发生,对于学术的严谨性产生负面影响。通过基于VSM相似度计算模型,采用ICTCLAS分词技术及MSOLE自动化技术,探讨了论文提交与发布系统中实现论文相似度计算的方法,有利于督促导师对学生论文的指导。
目前,已经通过CALIS认证的四套学位论文提交与发布系统,其基本功能大致相同,都具有6大功能模块:论文提交模块、论文审核与编目模块、文档标准化制作模块、论文发布与检索模块、论文回溯制作模块和服务器管理模块。这四个系统均可以良好地完成论文提交和发布功能,但在论文内容的深度处理上无相应的功能。很多高校采用这四套学位论文提交与发布系统,如果在系统中实现论文相似性的分析,则可以很大程度上提高学生论文的质量,督促导师对学生论文的指导。国内已有独立的论文相似度检测产品出现,如ROST和CNKIAMLC,其中ROST从公布的文档看,是通过自动将文档切割为多个50到200字(可自定义)的小文本进行比对,而CNKIAMLC是采用整句和整段的对比方法[1]。本文从文本相似度研究入手,采用VSM模型和ICTCLAS智能分词系统实现基于词语级别的对比方法,探讨论文相似度计算在论文发布系统中的应用。
1系统实现所涉及的关键技术
1.1 系统设计思路 汉语的书面表达方式是以汉字为最小单位,但在自然语言理解中词是表达语义的基本单位,词可以独立活动,是有意义的语言成分。若干词构成了一篇完整的论文,剔除论文中虚词,统计有实际意义的词形成该篇文章的数字水印。采用统计学的方法比较两篇论文的数字水印,即可计算出论文的相似程度。由于论文包含有题名、摘要、章节内容和参考文献等组成部分,可分别形成论文中各个部分的数字水印,从而实现论文的深度比较。在写文章时人们总是习惯在文章的特定位置表述比较重要的信息,例如:标题是全文内容的高度概括,每一段的主体句常常在段首或段尾,同时由于论文本身允许部分内容的引用,基于词语级别的处理可以采用核心词共现的方法来进行比较,则更具灵活性。
1.2 文本相似度计算 文本相似度计算是指利用计算机自动计算文本间的相似度,文本相似度是表示两个或多个文本之间匹配程度的一个度量参数,相似度越大表明文件相似程度越高。在自然语言处理领域,在统计学的方法中文本的表示主要采用VSM模型,这种方法认为每篇文本都包含一些用概念词表达的揭示其内容的独立属性。这些概念属性构成了文章的主体,同时这些属性可以看成一个维数,文本可以表示成这些维数的集合。对需要比较相似度的文本进行分析,根据文本中的词语将文本映射为n维空间向量,然后通过比较向量间的余弦系数确定文本间的相似度,余弦值越大其相似度越高,计算公式为:
其中,T、T.分别为待比较的两个文本的特征向量,Ti、Ti.分别为向量的第i维,n为特征向量的维数。
1.3 中文分词算法 要对论文进行文本相似度计算,首先必须对论文进行分词。分词的准确性决定了论文相似性计算的准确性。目前的中文分词算法归纳起来主要有两大类:一类是由字典匹配法和基于频度的方法组成,此类方法相对具体、实用;另一类是模拟人类的阅读过程,但由于中文的语法、语义相当复杂,受开发人员主观判断影响较大,所以效果并不如前一种理想,只在某一领域适用。现在常用的中文分词算法有逐词遍历法、二次扫描法和基于词频统计的分词法等。目前,由中国科学院计算技术研究所研制的汉语词法分析系统ICTCLAS[3]是在中文分词领域较为先进的系统,已经向国内外的企业和学术机构颁发了50,000多份授权,在ICTCLAS的众多版本中提供了开源的ICTCLAS版本,可从http://ictclas.org/Download.html下载使用。使用ICTCLAS对需要比较的文本进行预处理,将文本进行分词。
1.4 OLE自动化 应用程序间互相通信的方法有多种:OLE对象链接与嵌入、DDE动态数据交换等。当前OLE技术已经逐步取代了DDE技术,OLE已经成为应用程序间共享对象的工业标准。目前,论文提交方式大都采用Word文档方式提交,Word文档本身是带格式的文件,除了可以在可视环境下进行文档编辑处理,还可以利用Word提供的OLEAutomation[4]自动化程序接口即COM组件对象模型,采用VC++等编程语言实现Word文档操作的自动化。Word中有一百多个可以使用的对象,所有这些对象都可以通过OLE自动化来访问,例如利用该COM组件中TablesOfContents类的pTablesOfContents方法可以提取论文的目录,可按提取的目录自动查找论文中的相关内容,实现对论文各部分的相似性比较,如摘要、论文内容和参考文献的比较。
2系统设计与方案实现
由于目前的论文提交均是通过WEB方式提交服务器,服务器端收集了所有论文的Word文档。因此,可在服务器端直接运行论文相似性分析的程序,可利用夜间服务器的闲暇时间定时运行,减少对论文发布系统的干扰。在设计中笔者采用了VisualC++编写.
2.1 论文处理模块 论文处理模块的作用是利用OLE自动化技术,对上传的Word文档依据论文目录自动提取摘要、论文正文和参考文献文本内容。VisualC++完全支持OLE2.0的OLE自动化,可以用VisualC++编写自动化控制器来操纵MSWord[5]。在VisualC++工程的类型库加载Word的类型库文件,对于Word2003默认路径是\ProgramFiles\M-icrosoftOffice\OFFICE11\MSWORD.OLB,部分代码如下:
voidCWordproDlg::OnWord()
{
,
//构建Word应用程序对象
-ApplicationobjWord;
,,
//读取总页数和有页脚标注的页数
Rangerng=testDoc.Range(covOptional,covOptional);
rng.SetRange(rng.GetEnd()-1,rng.GetEnd());
rng.Select();
intpageCount1=((LPVARIANT)COleVariant(Selection(objWord.
GetSelection()).GetInformation(1)))->lVal;
intpageCount2=((LPVARIANT)COleVariant(Selection(ob-j
Word.GetSelection()).GetInformation(4)))->lVal;
//TTT获得目录内容
Rangeprange(pTableOfContents.GetRange());
TTT=prange.GetText();
//lCount获得目录条数
HyperlinkspHyperlinks(prange.GetHyperlinks());
lCount=pHyperlinks.GetCount();
,,
2.2 分词处理模块 该模块是对论文处理模块中提取的文本进行自动分词,并将分词后的词组存入分词数据库中,形成本篇文章的数字指纹。分词模块的设计上采用了中国科学院计算技术研究所ICTCLAS开源包中的WindowsCAPI版本来实现,在工程中调用ICTCLAS30.dll动态链接库即可。部分代码如下:
#include/ICTCLAS30.h0//引用ICTCLAS30头文件
......
intmain(intargc,char*argv[])
{
//依据配置文件和数据目录初始化ICTCLAS
ICTCLAS
Init();//对输入的文件进行分词并且输出文本文件
ICTCLAS
FileProcess(m
edit1.GetWindowText(ch1,10),/d:\\
test\\output.txt0);
//释放ICTCLAS模块所占用资源,退出ICTCLAS
ICTCLAS-Exit();
//遍历output.txt文件的内容将词组存入分词数据库
......
}
2.3 VSM计算模块 VSM计算模块是读取分词数据库中的文档分词,依据第二节介绍的VSM文本相似度算法来计算两篇论文的相似度,并把计算结果存入计算结果数据库,部分代码如下:
publicdoubleSimilarity(stringtext1,stringtext2)
Dictionary<string,int>.KeyCollectionkeys2=dictionary2.Keys;
foreach(stringkeyinkeys2)
{
dictionary2.TryGetValue(key,outtemp2);
denominator2+=temp2*temp2;
}
//计算text1和text2的文本相似度
similarity=numerator/(Math.Sqrt(denominator1*
denominator2));
......
2.4 WEB发布模块WEB发布模块是论文相似 度的WEB页面查询系统,它基于相似度计算结果的数据库。WEB发布模块可实现在线查询论文的相似度计算结果数据。例如采用PHP语言的GD图形函数库,可以实现在线的图形统计功能。
3设计中的关键问题
3.1 论文格式的规范化 由于需要对论文的各个部分如:标题、摘要、各个章节内容进行分别对比计算,因此论文处理模块必须通过论文的目录来实现对论文内容的定位,采用Word的自动化接口读取目录的相关内容。论文的目录必须是采用Word的自动目录功能生成,因此可在读者通过WEB页面上传论文处,采用VBS脚本检查上传的论文是否存在由Word自动目录功能生成的论文目录,对于检查不存在的可自动跳转到帮助页面教作者如何利用Word生成自动目录。
3.2 分词的精准度 模型中的分词模块是采用ICTCLAS的开源API实现,分词具有一定的局限性。在实际使用中可采用ICTCLAS的行业版来实现分词,可以依据电子、物理、化工等行业词典来提高分词的精准性。同时,可依据本校专业特点收集相关专业的特征词库建立特征词典,在ICTCLAS的API中调用特征词典将会更加具有针对性。
3.3 相似度计算的优化 构成论文文本的词的数量非常之大,导致了表示论文文本的向量空间的维数也相当多,甚至可以达到几万维,文本相似度计算的复杂度将会随着特征向量的维数的增加而快速增大。同时,有噪声或高相关性特征项的增加实际上会降低系统的性能。因此,对论文文本特征向量降维既可提高系统的效率,加快运行速度,还能提高运算精度。可采用常用降维方法中的特征选取法,依据ICTCLAS的行业词典和用户自己建立的特征词典降维。
4结语
笔者利用MSOLE自动化技术、ICTCLAS的分词技术和成熟的VSM相似度计算模型构建了论文相似性计算的原型模型,在实际测试中发现,要实现更加精准的相似度计算很大程度上依赖相似度算法上的优化,今后文本相似度计算过渡到基于语义理解的方法上将会有更加准确的计算结果。
刘翔 施干卫 丁祖荣