Lucene在学位论文检测系统中的应用
针对当今的学位论文重复率高的现状,文章提出了基于Lucene全文检索在学位论文查重中的重要应用。文章采用的技术主要包括Lucene框架技术,分词技术和搜索查询,并结合多种数据挖掘算法实现论文查重的检测系统,文章主要介绍论文查重的原理、方法和在系统实现过程中用到的核心技术,在技术整合的过程中呈现出该系统的优质性。
本系统用的是Lucene全文检索架构,Lucene作为一个全文检索引擎框架,在构建机制上有众多明显的优点:首先,它可以对任何可以转化成文本格式的数据进行索引的创建,而学术论文包含的doc、PDF和CAJ等等这些格式都是可以转换成文本格式。其次,Lucene主要是运用经典的倒排索引建立索引,并在此基础上通过建立分块索引机制,对于新的文件建立小文件索引,然后将其与原有建立的索引进行合并,从而优化了索引结构,并整体提高了索引工作效率。同时,Lucen.e具.有良好的开发环境和很强的
兼容性,它可以顺利地在不同系统和不同平台上构建索引文件。基于Lucene的这些特点,它可以运用到学术论文的查重。
1相关技术综述
¨Lucene概述
Lucene是基于java语言的免费开源的全文检索引擎的架构,由信息搜索领域的专家Doug Cuttingg,l作,目前是Apache Jakarta家族中的一个开源项目。它为数据访问和管理提供了方便灵活的API,主要包括查询引擎、索引引擎、存储管理和文本分析接口。Lucene的API接口设计的比较通用,利用这些接口可以将Lucene集成到各种应用程序中…。Lucene本质上只是一个软件库或者说是工具包,为用户提供了强大的索引和搜索能力。
1.2分词技术
分词是指将连续的字符序列按照一定的规则切分具有独立语义的词组的过程。分词技术从语言类型上来讲主要分为两类:一类以英文为代表的字母型文字,英文的基本单元是单词,单词之间是以空格作为自然分界符的;另一类是以汉语为代表的东亚语言;汉字只是字、句和段能通过明显的分界符来简单划界,词与词之间没有天然的分隔。因此与英文分词相比,中文要复杂的多且困难的多。目前,主流的中文分词技术包括:基于机械匹配的分词方法、基于统计的分词方法和模拟分词法。机械匹配分词方
法是基于词典的分词方法,主要思想是基于字符串匹配的机械分词,这种方法是按照一定的策略将待分词的字符串与一个“充分大的”机器词典中的词条进行匹配,若能在词典中找到某个字符串,则匹配成功。由于机械分词法的效率和准确性受到词库容量的约束,且不能有效克服歧义切分,所以单纯采用机械分词法切分精度不高、切分准确率低;基于统计的分词法实际上是最大概率分词法,其基本思想是:首先切分出与词表能匹配成功的所有可能的词,然后运用统计语言模型和决策算法决定最优的切分结
果,该方法的优点是具有非常好的切分歧义处理能力和识别新词的能力,但是统计分词方法需要大量的训练文本,计算量大,且分词精度与训练文本的选择有关;模拟分词方法是通过计算机程序模拟人对句子的理解最终达到分词的目的,实现方法主要是通过基于语法分析、语义分词和上下文语境等来实现对词的切分并判断歧义。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即让计算机模拟人对句子的理解过程,具备人类的理解力。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统和复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于模拟的分词系统还处在试验阶段吼
2系统设计
设计目标:利用现有的全文检索技术对论文进行对比查重,结合该领域顶尖的主流技术实现高效、精准的查重效果。Lucene并不是完美的,它在索引和检索方面具备很强的优势,然而在中文分词方面却比较薄弱。Lucene自带有两个中文分词ChineseAnalyzer和CJKAnalyzer功能较弱。它们的分词方法各不同,ChineseAnalyzer分析器采用的是单字分词法,而CJKAnalyzer分析器采用的是二分法,CJKAnalyzer会产生大量的无实际意义或无检索意义的垃圾词汇;ChineseAnalyzer不仅分词效率低,而且分词质量差,需要结合其他的分词方法,才能保证分词的准确性【3】。所以本系统在建立索引中采用的分词技术不依赖于Lucene本身的分词技术,主要是利用现在最高效的分词技术进行分词,结合Lucene在索引建立方面的高效性,使得两者更能高效的结合起来,
现在好多工具都可以自身实现纯文本格式的转换,但是这些工具大多都是基于单一文档或者单一格式的,为了在这上面节省时间,本系统采用了批量转换所有格式文档,将库存文档全部一次性转换成纯文本文档以便后期的使用。
3.3分词技术
分词技术前提是对文本文档按照一定的规则进行词法分析,之后针对文本文档进行分段,最后进行段落的分词。本文采用基于Ictclas中文分词算法的Ansi分词,对文本进行原子切分,切分的时候根据词法分析剔除了的、地、得这类无实际意义的词,保留人名、地名、国家名和用户自定义字典,最大化的减少歧义词的分解,该分词法利用双数组规划进行比对核心词典进行分词,其速度可以达至0300w/s,经过分词之后我们可以计算每个词在文档中的权重
其中Wx,d是词x在d这篇文本中的权重,fx,d是词X在d这篇文本中出现的频率,n是文本的总数,gX是包含词x的文本个数。词的权重(Term weight)表示此词(Term)在此文档中的重要程度,越重要的词(Term)有越大的权重(Term weight),词的权重在计算文档之间的相关性中将发挥更大的作用。词的相关性打分公式如下:
上述公式求得m和n文档的相关性,文档相关性主要用
于调取和检索文档相关的文档。
3.4创建索引
Lucene提供的API可以直接创建和更新索引,在分词重组之后用IndexWriter添加索引,对一级索引进行顺序排列,二级索引采用哈希法进行排列,其中必须包含的是词出现的文档、具体地址和频率,利用链表控制可以节省物理空间,在建立索引的时候把人名、地名这些名称代词和内容分开,方便查询。
3.5查重
由于被查的文档不是纯文本格式,所以要先进行过滤和词法分析建立索引,进行文档索引和库索引的搜索对比,找到重复的索引之后打开库索引中保存的段信息,最终找到文档信息,进行某个索引词在文档中的精细对比,最终可以根据各个词的权重和查找到的概率进行一个论文重复度的计算,达到论文查重的目的。