掌桥专利:专业的专利平台
掌桥专利
首页

一种基于改进Simhash算法的文本查重方法及装置

文献发布时间:2023-06-19 18:46:07


一种基于改进Simhash算法的文本查重方法及装置

技术领域

本发明属于自然语言处理技术的文本查重领域,尤其涉及一种基于改进Simhash算法的文本查重方法及装置。

背景技术

随着信息化时代的高速发展,数据储存容量呈爆炸式增长,同时复杂度高、冗余度高的数字化信息逐渐在各行各业带来问题。相关研究表明,基于互联网的个人云盘、企业云盘、社交网等平台上发布的视频、上传的文档和图片等资料充斥着3%至10%的重复数据或页面,且部分数据库中的数据冗余量已达到60%。大量的相似性文档使用户无法查询到精炼信息,同时所需的巨大储存容量也会影响到文件处理效率。如何对本文进行原创性检测、对本文中内容进行相似度对比检验,成为文本查重领域亟需解决的重要问题。

近年来,针对文本查重领域,各方学者提出了大量的研究成果。其中在文本相似度计算方面,Simhash算法是目前比较准确且高效的方法之一。其主要思想是将高维的特征向量映射为一个F位二进制签名,并通过比较两篇文本的汉明距离来确定文本的相似度。

目前文本查重领域大多采用Simhash算法进行文本相似度计算,其面临一系列的问题和缺陷。例如,第一,Simhash算法对于识别词的替换、句式的变换、或者保证原文含义不变的情况下重写等近似重复问题效果一般。第二,Simhash算法在分词向量聚合的权重计算方面通常设置为1或分词出现的次数,易造成信息丢失,导致最终文本向量的准确性降低。第三,Simhash算法不能很好表现出分词的分布信息及上下文的语义信息,即含有同样分词而不同含义的文本,其分词调整顺后,最终生成的文本向量相同。第四,Simhash算法的汉明相似度计算在汉明距离维度确定的情况下,其文本向量空间有限,易存在大量文本向量重叠的情况。因此,该算法在实际应用上具有一定的局限性。

发明内容

本发明的目的在于针对现有技术的局限和不足,提出一种改进Simhash算法的文本查重方法及装置。

本发明的目的是通过以下技术方案来实现的:

根据本发明的第一方面,提供一种基于改进Simhash算法的文本查重方法,该方法包括以下步骤:

S1,根据文件正文格式类型对文件进行文本解析,构建语料库;

S2,对文本进行预处理,建立符合当前文件集语义场景的分词库和停用词库,对分词库内的分词词性按其含义和上下文内容进行标记并以词性向量表示;

S3,对分词进行权值稀疏词嵌入向量化,根据上下文语义赋予各分词独有的向量;

S4,基于TF-IDF算法与信息熵对Simhash的权重进行优化,计算并分配分词向量权重,设置权重阈值,筛选重要分词向量,加权计算得到文本向量;

S5,利用余弦相似度进行文本相似度计算,提取出相似文件的相同文本。

进一步地,对于正文格式类型为文本流形式的文件,利用文本解析工具对文件的文档、段落、文字块进行提取,具体为,将对应于文本流类型的文档、段落、文字块,分别抽象成Document类对象、Paragraph类对象、Run类对象。

进一步地,对于正文格式类型为图片形式的文件,将图片作为输入,经过OCR技术进行图像预处理、文本检测、文本识别,以提取文件的文本。

进一步地,S2中,将文本利用分词、去停用词技术,结合特定的语义场景,扩充Jieba词库,建立符合当前文件集语义场景的分词库和停用词库;通过结合当前文件集语义场景的专家经验,建立专家词库。

进一步地,S3中对分词进行权值稀疏词嵌入向量化具体为:

a)独热编码:对分词库中每个分词进行独热编码,对停用词库中的所有停用词赋予同一个独热编码向量,其中独热编码向量的长度为分词库容量加一;对语料库中的每个分词,根据分词库和停用词库的编码结果,进行独热编码;

b)共现对构建:通过语料库中相邻上下文分词关系,构造分词共现对,共现对中包含中心分词及其相邻位置上下文分词;

c)嵌入向量生成:通过跳元模型将分词嵌入到语义向量空间中,将高维独热编码向量转化为低维语义向量;所述语义向量空间分为中心分词向量空间与上下文分词向量空间;对跳元模型进行训练,将训练完成之后的中心分词向量矩阵作为分词嵌入向量表示。

进一步地,所述嵌入向量生成过程中,通过向量内积的softmax操作进行概率建模,得到给定中心分词ω

其中,Ω

通过最小化损失函数完成跳元模型训练,损失函数表示如下:

其中,ω

进一步地,S4中,利用TF-IDF函数计算分词的初始权重,分词的熵信息量采用其左分词与右分词的信息熵平均值;利用分词的熵信息量作为因子加入TF-IDF初始权重,并取两者的平方和平均数开根号表示最终分词向量权重。

进一步地,S4中,引入权重阈值来设置各分词权重的最高限值,小于等于权重阈值的分词保持原有计算的权重,超出权重阈值的分词设置权重为权重阈值。

进一步地,S4中,进行分词向量筛选,保留各文本中的n个分词向量进行各文本向量加权计算,文本向量计算的n个分词的组成方案:由各文本中分词权重最高的n个分词组成;或者,由各文本中分词权重越高的分词及各文本的分词与专家词库匹配的分词组成,以上比例为2:1,若与专家词库匹配的分词个数不足n的1/3,则继续选择剩余分词中分词权重越高的分词,直至满足n的个数。

根据本发明的第二方面,提供一种基于改进Simhash算法的文本查重装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,其特征在于,所述处理器执行所述可执行代码时,用于实现上述基于改进Simhash算法的文本查重方法。

本发明的有益效果如下:

1.研发了一种新的文本解析工具DocScrap Py,支持对PDF和Word文件格式的文档、段落、文字块进行快速提取,以更精细化提取文本中重要的内容。

2.在文本预处理阶段,第一,在分词和去停用词的过程中,通过梳理大量语义场景的文件并结合常用的分词表和停用词表,设计出针对企业内部历史文件、学术论文、舆情言论等语义场景的查重系统专属分词库和停用词库。第二,对分词库内的分词词性按其含义和上下文内容进行标记,并根据分词词性的类别创建词性向量。词性向量会在后续权值稀疏词嵌入向量化结束后,进一步对分词向量化的结果进行扩展,作为该分词的一项重要特征,进一步提高分词与文本向量化的准确性。

3.考虑到分词在语义空间中进行量化的优势,本技术方案发明全新的权值稀疏词嵌入向量化替代原先的hash向量化,利用文本机器学习任务对分词的上下文分词进行概率建模,赋予分词向量语义信息,并通过L1正则化为该模型筛选在特定语义场景下与中心分词向量语义关联密切的上下文分词向量,以提高该模型训练的泛化能力。

4.相较于原Simhash算法的权重仅考虑分词在文本中的词频,TF-IDF算法的权重额外考虑该分词在整个语料库中的独特性,其倾向于过滤在语料库各文本中常见的分词,保留重要部分,即分词在某文本中出现的次数越多,在语料库其他文本中出现该分词的文本数量越少,则该分词TD-IDF权重越大,分词在该文本中越重要。因此,TF-IDF权重分配方法改进了分词向量转变为文本向量时,对于关键分词向量的注意力分配机制,使文本向量化更加准确反映其文本特性,降低其余常见分词等噪声的干扰,提升文本向量化的泛化能力。

5.在基于TF-IDF算法计算得出的分词权重基础上,引入分词的熵因子。中心分词的上下文分词信息熵越大,其熵因子越大。即中心分词熵因子越大,表明中心分词的上下文分词不确定性越大,中心分词与上下文分词的搭配越不固定,其在语料库中不同文本内的特殊性越强,进一步反应分词在语料库中的分布特征,提高分词权重设置的准确性。

6.在分词权重分配的基础上,设置分词权重阈值,避免了部分分词权重过高而导致的文本向量失真问题。同时,对分词进行筛选,剔除对于不同文本重要性较弱的分词,降低其余常见分词等噪声的干扰,进一步提升文本向量化的泛化能力。

7.基于Simhash算法的汉明相似度计算在汉明距离维度确定情况下,其文本向量空间有限,导致存在大量文本向量重叠的情况。考虑到保留更多文本的信息量,本技术方案对Simhash计算相似度的算法进行改进,提出使用更为高效、映射空间更广的余弦相似度计算替代汉明相似度计算,以衡量文本向量在个体与方向上的差异。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1为本发明基于改进Simhash算法的文本查重方法总体流程图;

图2为本发明实施例提供的文本解析步骤的框架图;

图3为本发明实施例提供的针对不同正文格式类型的文本解析方法示意图;

图4为本发明实施例提供的自研文本解析工具DocScrap Py的架构图;

图5为本发明实施例提供的文本预处理步骤的框架图;

图6为本发明实施例提供的分词向量化步骤的框架图;

图7为本发明实施例提供的文本向量化步骤的框架图;

图8为本发明实施例提供的相似度计算与相同文本提取步骤的框架图;

图9为本发明比较改进Simhash方法与原Simhash方法在三类不同政策文本集上测试结果的示意图;

图10为本发明基于改进Simhash算法的文本查重装置结构图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

如图1所示,本发明实施例提供一种基于改进Simhash算法的文本查重方法,主要包括以下步骤:

步骤一:文本解析。

根据文件正文格式类型,将PDF和Word文件通过不同的解析方式解析为可被计算机识别的文本,形成文件标题文本库与文件内容文本库,构成语料库,具体示意图如图2所示。

(1.1)若Word和PDF文件正文格式类型为文本流形式,利用自研文本解析工具DocScrap Py,对文件的文档、段落、文字块进行提取,如图3所示。自研文本解析工具DocScrap Py的基本原理是将对应于Word或PDF文本流类型的文档、段落、文字块,分别抽象成Document类对象、Paragraph类对象、Run类对象,具体概念如下,Document是一个Word或PDF文档的对象,不同的Document对象是相互独立的,以提供文本解析工具可同时处理多个文档的能力;Paragraph是Document对象下的段落,一个文档可由多个段落组成,可单独提取有需要的段落文本内容;Run表示Paragraph对象中的文字块,以更精细化提取段落中重要的文本内容。自研文本解析工具DocScrap Py的架构如图4所示。

(1.2)若Word和PDF文件正文格式类型为图片形式,则其图片将作为输入,经过OCR技术进行图像预处理、文本检测、文本识别等步骤,以提取文件的文本,如图3所示。

步骤二:对提取的文本进行预处理,如图5所示。

(2.1)将原始文本利用分词、去停用词等技术,结合特定的语义场景,扩充Jieba词库,建立符合当前文件集语义场景的专属分词库和停用词库。同时,通过结合当前文件集语义场景的专家经验,建立该场景的专家词库。

(2.2)利用词性标注技术对分词库内的分词词性按其含义和上下文内容进行标记并以词性向量表示。词性向量会在下一步进行分词向量化时,进一步对该分词向量化后的结果进行扩展,作为该分词的一项重要特征。

步骤三:对预处理后的分词进行权值稀疏词嵌入向量化,根据上下文语义赋予各分词独有的向量,如图6所示。权值稀疏词嵌入向量化具体步骤如下:

a)独热编码:对分词库中每个分词进行独热(one-hot)编码,对停用词库中的所有停用词赋予同一个独热编码向量,其中独热编码向量的长度为分词库容量加一;对预处理后的语料库中的每个分词,根据分词库和停用词库的编码结果,进行独热编码;

b)共现对构建:通过语料库中相邻上下文分词关系,构造分词共现对,其中共现对中包含中心分词及其相邻位置上下文分词;根据分词共现对构建分词矩阵S,分词矩阵S中的每个元素S

c)嵌入向量生成:首先,通过跳元(Skip-Gram)模型将分词嵌入到语义向量空间中,将高维独热编码向量转化为低维语义向量。其中,语义向量空间分为中心分词向量空间与上下文分词向量空间,分词库与停用词库中的分词在两个语义向量空间中可用矩阵U与V进行表示。具体为:通过向量内积的softmax操作进行概率建模,得到给定中心分词ω

其中,Ω

其次,通过最小化损失函数完成跳元模型训练,损失函数表示如下:

其中,ω

最终,将训练完成之后的中心分词向量矩阵U作为分词嵌入向量表示。

步骤四:基于TF-IDF算法与信息熵对Simhash的权重进行优化,合理计算并分配分词向量权重,设置权重阈值限值,并筛选重要分词向量,以加权计算更为准确的文本向量,如图7所示。

(4.1)利用TF-IDF函数,分词的初始权重定义为:

其中,ω

(4.2)中心分词的熵信息量采用其左分词与右分词的信息熵平均值,公式如下所示:

中心分词熵信息量:

左分词信息熵:

右分词信息熵:

其中,W表示中心分词;E

(4.3)利用分词的熵信息量H

(4.4)引入权重阈值wt

即小于等于权重阈值的分词保持原有计算的权重,超出权重阈值的分词设置权重为权重阈值wt

每个文本的分词权重阈值wt

其中,p表示语料库中的p文本,n表示该文本进行文本向量计算的总分词量,V

步骤五:如图8所示,利用余弦相似度进行文本相似度计算。

步骤六:如图8所示,提取出相似文件的相同文本,并做高亮显示。

以下描述一种基于改进Simhash算法的文本查重方法的示例性实施过程,本实施例以政策文件作为原始文本,本实施例的政策文件查重方法具体实施方式如下:

步骤一:根据政策文件的正文格式类型,将PDF和Word格式的政策文件通过不同的文本解析方式解析为可被计算机识别的文本,形成政策文件标题文本库与政策文件内容文本库,构成语料库。

步骤二:对提取的政策文本进行预处理。

(2.1)将原始文本利用分词、去停用词等技术,结合政策场景,扩充jieba词库,建立符合政策相关的专属分词库和停用词库,例如加入“办公室”、“市委”、“意见”等分词,并结合政策研究领域的专家经验,建立该场景的专家词库。

(2.2)利用词性标注技术对政策分词库内的分词词性按其含义和上下文内容进行标记并以词性向量表示。例如,给定文字块:“我们应贯彻落实政府的意见。”,对其标注的结果是:“我们/代词、应/助动词、贯彻落实/动词、政府的意见/名词”。词性向量会在下一步进行分词向量化时,进一步对该分词向量化后的结果进行扩展,作为该分词的一项重要特征。

步骤三:对预处理后的分词进行权值稀疏词嵌入向量化,根据上下文语义赋予各分词独有的向量。

(3.1)权值稀疏词嵌入向量化具体步骤如下:

a)独热编码:对分词库中每个分词进行独热(one-hot)编码,对停用词库中的所有停用词赋予同一个独热编码向量,其中独热编码向量的长度为分词库容量加一;对预处理后的语料库中的每个分词,根据分词库和停用词库的编码结果,进行独热编码;

b)共现对构建:通过语料库中相邻上下文分词关系,构造分词共现对,其中共现对中包含中心分词及其相邻位置上下文分词;根据分词共现对构建分词矩阵S,分词矩阵S中的每个元素S

c)嵌入向量生成:首先,通过跳元(Skip-Gram)模型将分词嵌入到语义向量空间中,将高维独热编码向量转化为低维语义向量。其中,语义向量空间分为中心分词向量空间与上下文分词向量空间,分词库与停用词库中的分词在两个语义向量空间中可用矩阵U与V进行表示。具体为:

首先,通过向量内积的softmax操作进行概率建模,得到给定中心分词ω

其中,Ω

其次,通过最小化损失函数完成跳元模型训练,损失函数表示如下:

其中,ω

最终,将训练完成之后的中心分词向量矩阵U作为分词嵌入向量表示。

步骤四:基于TF-IDF算法与信息熵对Simhash的权重方面进行优化,合理计算并分配分词向量权重,设置权重阈值限值,并筛选重要分词向量,以加权计算更为准确的文本向量。

(4.1)利用TF-IDF函数,分词的初始权重定义为:

经过计算,当前实施案例的政策文件集下,不同政策文件各分词的TF词频的取值范围为[0.0015,0.049],分词的IDF逆文档频率取值范围为[0.042,3.36]。根据公式,将上述两者相乘后,分词的TF-IDF初始权重取值范围为[0.000914,0.11]。

(4.2)中心分词的熵信息量采用其左分词与右分词的信息熵平均值,公式定义如下所示:

中心分词熵信息量:

左分词信息熵:

右分词信息熵:

经过计算,当前实施案例下,各分词的信息熵取值范围为[0.75,3.18]。

(4.3)利用分词的熵信息量H

(4.4)引入权重阈值wt

即小于等于权重阈值的分词保持原有计算的权重,超出权重阈值的分词设置权重为权重阈值wt

在当前政策文件为场景的实施案例下,权重阈值wt

步骤五:利用余弦相似度进行文本相似度计算,通过与历史政策文件标题文本库和历史政策文件内容文本库的对比,得到相似的政策标题和政策内容。

步骤六:为了便于查重系统使用者对比政策文件标题和内容的相同点,提取出相似政策文件的相同文本,并做高亮显示。

本实施案例中政策文本按照上述设定方法进行查重,称为基于改进Simhash的政策文本查重方法,其文本重复检测结果与原Simhash方法的检测结果对比如图9所示。通过在三类不同政策文本集重复检验对比测试后,其结果表明,本发明的改进Simhash方法在准确率、召回率、f值三个指标上均显著高于原Simhash方法。证明了本发明方法在文本查重问题上具有更好的效果。

与前述基于改进Simhash算法的文本查重方法的实施例相对应,本发明还提供了基于改进Simhash算法的文本查重装置的实施例。

参见图10,本发明实施例提供的基于改进Simhash算法的文本查重装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,用于实现上述实施例中的基于改进Simhash算法的文本查重方法。

本发明基于改进Simhash算法的文本查重装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图10所示,为本发明基于改进Simhash算法的文本查重装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图10所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于改进Simhash算法的文本查重方法。

所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

技术分类

06120115686643