基于签名压缩机制的近似重复文本检测方法及装置与流程

文档序号:12665922阅读:171来源:国知局
基于签名压缩机制的近似重复文本检测方法及装置与流程

本发明涉及近似重复文档检测技术领域,特别是涉及一种基于签名压缩机制的近似重复文本检测方法及装置。



背景技术:

随着大数据时代大量信息的增长,近似重复文档检测方法应用越来越多,但也面临诸多挑战。通常,大数据要求大量化、快速化、多样化、价值化,相应的,要求近似重复文档检测具有可量测性、效率性、健壮性和有效性。尽管在近似重复文档检测领域已经有大量研究,但在满足上述所有要求时仍有难度。

现有技术中,常用的近似重复文档检测方法为:使用标准化压缩距离(Normalized Compression Distance,NCD)算法,计算出2篇待检测文档的NCD值,当NCD值小于预设阈值时,确定2篇待检测文档为近似重复文档。

具体地,先利用现有的压缩算法分别压缩两个待检测文档x和文档y,将文档压缩后的大小分别记作C(x)、C(y),并将文档x和文档y首尾相连后,压缩首尾相连后的文档x和文档y,将压缩后的大小记作C(xy);根据标准化压缩距离计算公式计算文档x和文档y的NCD值,若计算出来的NCD值小于预设阈值,则确定文档x和文档y为近似重复文档。

然而,由于压缩每一个文档和每一对相关文档是非常耗时的,需要O(n2)的时间复杂度,其中,n是文档数量,可以看出,当文档很多时,近似重复文档的检测速度非常慢。



技术实现要素:

本发明实施例的目的在于提供一种基于签名压缩机制的近似重复文本检测方法及装置,以提高近似重复文档的检测速度。具体技术方案如下:

一种基于签名压缩机制的近似重复文本检测方法,包括:

确定当前检测文档x和y;

获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y));

将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值;

根据基于签名的标准化压缩距离值,得到所述当前检测文档x和y是否为近似重复文档的比较结果。

如上所述的方法,其中,所述确定当前检测文档x和y的步骤,包括:

获取多个待检测文档;

根据签名提取规则,分别提取所述每个待检测文档的签名;

压缩所述每个待检测文档的签名,得到所述每个待检测文档的签名压缩长度;

从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y;

所述获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y))的步骤,包括:从所述每个待检测文档的签名压缩长度中,获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y));

所述方法,还包括:

返回所述从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y的步骤,直至每个待检测文档都与其他待检测文档完成比较。

如上所述的方法,其中,所述根据签名提取规则,分别提取所述每个待检测文档的签名之前,所述方法还包括:

使用正则表达式,去除所述每个待检测文档中的超文本标记语言HTML框架元素。

如上所述的方法,其中,所述根据签名提取规则,分别提取所述每个待检测文档的签名,包括:

使用标点符号作为定位点,在每个所述待检测文档中提取位于每个所述定位点前后的字或单词作为每个所述待检测文档的签名。

如上所述的方法,其中,所述从所述每个待检测文档的签名压缩长度中,获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y))的步骤之后,还包括:

判断所述签名压缩长度C(sig(x))和C(sig(y))是否满足第一剪枝规则;

若满足,返回所述从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y的步骤,直至判断所述签名压缩长度C(sig(x))和C(sig(y))不满足所述第一剪枝规则;

若不满足,执行所述将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值的步骤;

其中,所述第一剪枝规则为:其中,τ为预设近似度阈值。

如上所述的方法,其中,在判断所述签名压缩长度C(sig(x))和C(sig(y))不满足所述第一剪枝规则之后,还包括:

判断所述每个待检测文档的签名压缩长度中,是否存在同时小于C(sig(x))和C(sig(y))的签名压缩长度C(sig(z));

若存在,判断所述签名压缩长度C(sig(x))、C(sig(y))和C(sig(z))是否满足第二剪枝规则;

若满足,返回所述从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y的步骤,直至判断所述签名压缩长度C(sig(x))和C(sig(y))不满足所述第二剪枝规则;

若不满足,执行所述将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值的步骤;

其中,所述第二剪枝规则为:|NCD(x,z)-NCD(y,z)|≥τ,τ为所述预设近似度阈值,NCD(x,z)为所述待检测文档x和y的标准化压缩距离值,NCD(y,z)为所述待检测文档y和z的标准化压缩距离值。

如上所述的方法,其中,所述基于签名的标准化压缩距离的计算公式为:

所述根据基于签名的标准化压缩距离值,得到所述当前检测文档x和y是否为近似重复文档的比较结果,包括:

若SigNCD(x,y)≤τ,则比较结果为所述当前检测文档x和y是近似重复文档;其中,τ为预设近似度阈值。

一种基于签名压缩机制的近似重复文本检测装置,包括:

确定模块,用于确定当前检测文档x和y;

获取模块,用于获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y));

计算模块,用于将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值;

比较模块,用于根据基于签名的标准化压缩距离值,得到所述当前检测文档x和y是否为近似重复文档的比较结果。

如上所述的装置,其中,所述确定模块具体用于:获取多个待检测文档;根据签名提取规则,分别提取所述每个待检测文档的签名;压缩所述每个待检测文档的签名,得到所述每个待检测文档的签名压缩长度;从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y;

所述获取模块具体用于:从所述每个待检测文档的签名压缩长度中,获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y));

所述装置还包括触发模块,用于触发所述确定模块,直至所述确定模块确定每个待检测文档都与其他待检测文档完成比较。

如上所述的装置,其中,所述确定模块具体用于:使用标点符号作为定位点,在每个所述待检测文档中提取位于每个所述定位点前后的字或单词作为每个所述待检测文档的签名。

本发明实施例提供的基于签名压缩机制的近似重复文本检测方法及装置,确定当前检测文档x和y;获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y));将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值;根据基于签名的标准化压缩距离值,得到所述当前检测文档x和y是否为近似重复文档的比较结果。可见,本发明实施例通过提取文档的签名,并对文档签名进行压缩,利用标准化压缩距离公式计算出基于签名的标准化压缩距离值,与现有技术对文档本身进行压缩相比,减少了大量的数据计算量,解决了NCD不能处理大规模文档的问题,提高了近似重复文档的检测速度。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

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

图1为本发明实施例提供的基于签名压缩机制的近似重复文本检测方法的一种流程图;

图2为本发明实施例提供的基于签名压缩机制的近似重复文本检测方法的另一种流程的示意图;

图3为本发明实施例提供的基于签名压缩机制的近似重复文本检测装置的一种结构示意图;

图4为本发明实施例提供的基于签名压缩机制的近似重复文本检测装置的另一种结构示意图。

具体实施方式

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

图1为本发明实施例提供的基于签名压缩机制的近似重复文本检测方法的一种流程图。如图1所示,本实施例提供的方法可以包括:

步骤101、确定当前检测文档x和y。

本步骤中,在确定当前检测文档x和y时,首先获取多个待检测文档;再根据签名提取规则,分别提取所述每个待检测文档的签名;压缩所述每个待检测文档的签名,得到所述每个待检测文档的签名压缩长度;从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y。

具体的,在压缩所述每个待检测文档的签名时,可以使用现有的压缩算法,例如,snappy算法,lg4算法,sip算法等,本实施例对此不作具体限定。

需要说明的是,由于很多待检测文档都是HTML结构,这种HTML结构的文档除了包含文字,通常会插入图像、广告甚至是无关材料,这会导致待检测文档的语义被分割。实际应用中,在本步骤之前,可以使用正则表达式,去除所述每个待检测文档中的HTML框架元素,例如可以利用空格取代<script>…</script>,<style>…</style>,<a>…</a>,<iframe>…</iframe>等HTML框架元素。

签名提取是本实施例中最基础的步骤,在本实施例中,使用标点符号作为定位点,在每个所述待检测文档中提取位于每个所述定位点前后的字或单词作为每个所述待检测文档的签名。

需要说明的是,由于标点符号在每个待检测文档中出现的可能性大,且出现次数高、散布平均,因此在本实施例中,以标点符号作为所述定位点,但在实际应用中,所述定位点的选择也可以选择常见的词或字,本实施例对此不作具体限定。

步骤102、获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y))。

本步骤具体是从所述每个待检测文档的签名压缩长度中,获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y))。

虽然在之前的步骤中提取了每个待检测文档的签名,已经大幅降低了计算的复杂度,但大量的待检测文档中仍会存在近似度较低的文档,这些近似度较低的文档没必要进行近似重复比较,因此,在本实施例中,进一步设置了剪枝规则来过滤这些非必要的比较。

具体的,在获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y))之后,判断所述签名压缩长度C(sig(x))和C(sig(y))是否满足第一剪枝规则,若满足,返回所述从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y的步骤,直至判断所述签名压缩长度C(sig(x))和C(sig(y))不满足所述第一剪枝规则;若不满足,执行所述将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值的步骤;其中,所述第一剪枝规则为:其中,τ为预设近似度阈值。

进一步的,在判断所述签名压缩长度C(sig(x))和C(sig(y))不满足所述第一剪枝规则之后,判断所述每个待检测文档的签名压缩长度中,是否存在同时小于C(sig(x))和C(sig(y))的签名压缩长度C(sig(z));若存在,判断所述签名压缩长度C(sig(x))、C(sig(y))和C(sig(z))是否满足第二剪枝规则;若满足,返回所述从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y的步骤,直至判断所述签名压缩长度C(sig(x))和C(sig(y))不满足所述第二剪枝规则;若不满足,执行所述将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值的步骤;其中,所述第二剪枝规则为:|NCD(x,z)-NCD(y,z)|≥τ,τ为所述预设近似度阈值,NCD(x,z)为所述待检测文档x和y的标准化压缩距离值,NCD(y,z)为所述待检测文档y和z的标准化压缩距离值。

步骤103、将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值。

步骤104、根据基于签名的标准化压缩距离值,得到所述当前检测文档x和y是否为近似重复文档的比较结果。

所述基于签名的标准化压缩距离的计算公式为:

若SigNCD(x,y)≤τ,则比较结果为所述当前检测文档x和y是近似重复文档;其中,τ为预设近似度阈值。例如,若所述预设近似度阈值为τ=0.7,当计算得到的SigNCD(x,y)≤τ时,确定所述待检测文档x和待检测文档y是近似重复文档。

在得到所述当前检测文档x和y是否为近似重复文档的比较结果之后,返回所述从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y的步骤,直至每个待检测文档都与其他待检测文档完成比较。

如图2所示,在实际应用中,初始的待检测文档可以表示为一个初始文档集合{d1,d2,...,dn},首先对初始文档集合进行预处理,即,去除文档中的HTML框架元素,得到文档集合{d11,d12,...,d1n},提取预处理后的文档集合的签名,得到待检测文档的签名集合{d21,d22,...,d2n},压缩签名集合d2i(1≤i≤n)中的签名,得到压缩后的签名压缩长度集合{d31,d32,...,d3n},根据签名压缩长度进行升序排序,得到升序排序的签名压缩长度集合{d34,d37,...,d3i,...},通过剪枝规则得到与d34可能近似重复的文档子集{d34,d37,...,d3i},利用标准化压缩距离公式,计算得到基于签名的标准化压缩距离值并进行判断是否近似重复。

下面以两个文档为例,对本实施例提出的基于签名压缩机制的近似重复文本检测方法的应用过程进行说明。

待检测文档x的内容为:<p>梯度下降的精华,在于下面这个式子:</p><p><imgsrc="http://images.cnitblog.com/blog/189953/201309/17164202-252c0b77deb04fe8ad867438a04d2f2c.GIF"alt=""/></p><p>这个式子是什么意思呢?是将系数减去导数(导数前的系数先暂时不用理会),为什么是减去导数?我们看一个二维的例子。</p><p>假设有一个曲线如图所示:</p><p><imgsrc="http://images.cnitblog.com/blog/189953/201309/17164627-a936bceeceb4499e9b4d3f14258999d9.GIF"alt=""/></p><p>假设我们处在红色的点上,那么得到的导数是个负值。此时,我在当前位置(x轴)的基础上减去一个负值,就相当于加上了一个正值,那么就朝导数为0的位置移动了一些。</p><p>如果当前所处的位置是在最低点的右边,那么就是减去一个正值(导数为正),相当于往左移动了一些距离,也是朝着导数为0的位置移动了一些。</p><p>这就是梯度下降最本质的思想。</p>

待检测文档y的内容为:<p>梯度下降的精华就在于下面这个式子:</p><p><imgsrc="http://images.cnitblog.com/blog/189953/201309/17164202-252c0b77deb04fe8ad867438a04d2f2c.GIF"alt=""/></p><p>这个式子是什么意思呢?是将系数减去导数(导数前的系数先暂时不用理会),为什么是减去导数?我们看一个二维的例子。</p><p>假设有一个曲线如图所示:</p><p><imgsrc="http://images.cnitblog.com/blog/189953/201309/17164627-a936bceeceb4499e9b4d3f14258999d9.GIF"alt=""/></p><p>假设我们处在红色的点上,那么得到的导数是个负值。此时,我在当前位置(x轴)的基础上减去一个负值,就相当于加上了一个正值,那么就朝导数为0的位置移动了一些。</p><p>如果当前所处的位置是在最低点的右边,那么就是减去一个正值(导数为正),相当于往左移动了一些距离,也是朝着导数为0的位置移动了一些。</p><p>这就是梯度下降最本质的思想。</p>

步骤一:对上述两个文档进行预处理,即,使用正则表达式,去除所述当前检测文档x和y中的HTML框架元素,预处理后的文档x和y分别为:

预处理后的当前检测文档x:梯度下降的精华,在于下面这个式子:这个式子是什么意思呢?是将系数减去导数(导数前的系数先暂时不用理会),为什么是减去导数?我们看一个二维的例子。假设有一个曲线如图所示:假设我们处在红色的点上,那么得到的导数是个负值。此时,我在当前位置(x轴)的基础上减去一个负值,就相当于加上了一个正值,那么就朝导数为0的位置移动了一些。如果当前所处的位置是在最低点的右边,那么就是减去一个正值(导数为正),相当于往左移动了一些距离,也是朝着导数为0的位置移动了一些。这就是梯度下降最本质的思想。

预处理后的当前检测文档y:梯度下降的精华就在于下面这个式子:这个式子是什么意思呢?是将系数减去导数(导数前的系数先暂时不用理会),为什么是减去导数?我们看一个二维的例子。假设有一个曲线如图所示:假设我们处在红色的点上,那么得到的导数是个负值。此时,我在当前位置(x轴)的基础上减去一个负值,就相当于加上了一个正值,那么就朝导数为0的位置移动了一些。如果当前所处的位置是在最低点的右边,那么就是减去一个正值(导数为正),相当于往左移动了一些距离,也是朝着导数为0的位置移动了一些。这就是梯度下降最本质的思想。

步骤二:以逗号为所述定位点,分别提取当前检测文档x的签名sig(x)和当前检测文档y的签名sig(y)。

签名sig(x)为:华在)为上那时我值就值那边那)相离也

签名sig(y)为:)为上那时我值就值那边那)相离也

步骤三:使用压缩算法Snappy,压缩所提取的签名sig(x)和sig(y),得到签名压缩长度C(sig(x))和C(sig(y))。

签名压缩长度C(sig(x))=56,签名压缩长度C(sig(y))=50。

步骤四:如果上述签名压缩长度C(sig(x))和C(sig(y))不满足第一剪枝规则和第二剪枝规则,利用压缩算法计算得到所述签名sig(x)和sig(y)联合后的签名压缩长度C(sig(x)sig(y))=60。

步骤五:将所述签名压缩长度C(sig(x))、C(sig(y))和C(sig(x)sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值:

假设所述预设近似度阈值τ大于0.179,则得到的所述当前检测文档x和y的比较结果为:当前检测文档x和y是近似重复文档。

本实施例提供的方法,通过确定当前检测文档x和y;获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y));将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值;根据基于签名的标准化压缩距离值,得到所述当前检测文档x和y是否为近似重复文档的比较结果。与现有技术对文档本身进行压缩相比,减少了大量的数据计算量,解决了NCD不能处理大规模文档的问题,提高了近似重复文档的检测速度。

图3为本发明实施例提供的基于签名压缩机制的近似重复文本检测装置的一种结构示意图。如图3所示,本实施例提供的装置可以包括:确定模块21、获取模块22、计算模块23和比较模块24。

确定模块21,用于确定当前检测文档x和y;

获取模块22,用于获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y));

计算模块23,用于将所述签名压缩长度C(sig(x))和C(sig(y))代入标准化压缩距离公式,计算出基于签名的标准化压缩距离值;

比较模块24,用于根据基于签名的标准化压缩距离值,确定所述待检测文档x和待检测文档y是否为近似重复文档。

所述确定模块21具体用于:获取多个待检测文档;根据签名提取规则,分别提取所述每个待检测文档的签名;压缩所述每个待检测文档的签名,得到所述每个待检测文档的签名压缩长度;从所述每个待检测文档中,选择2个未比较的待检测文档确定为当前检测文档x和y;相应的,所述获取模块22具体用于从所述每个待检测文档的签名压缩长度中,获得所述当前检测文档x和y的签名压缩长度:C(sig(x))和C(sig(y));如图4所示,所述装置还可以包括第一触发模块31,用于触发所述确定模块21,直至所述确定模块21确定每个待检测文档都与其他待检测文档完成比较。

所述确定模块21具体可以用于:使用正则表达式,去除所述每个待检测文档中的HTML框架元素;使用标点符号作为定位点,在每个所述待检测文档中提取位于每个所述定位点前后的字或单词作为每个所述待检测文档的签名。

所述确定模块21具体用于:使用标点符号作为定位点,在所述待检测文档x中提取位于每个所述定位点前后的字或单词作为所述待检测文档x的签名sig(x),并在所述待检测文档y中提取位于所述定位点前后的字或单词作为所述待检测文档y的签名sig(y)。

如图4所示,所述装置还可以包括判断模块32和第二触发模块33,所述判断模块32用于判断所述签名压缩长度C(sig(x))和C(sig(y))是否满足第一剪枝规则;所述第二触发模块33用于若判断模块32的判断结果为满足,触发所述确定模块21,直至判断所述签名压缩长度C(sig(x))和C(sig(y))不满足所述第一剪枝规则;若判断模块32的判断结果为不满足,触发所述计算模块23;其中,所述第一剪枝规则为:其中,τ为预设近似度阈值。

所述判断模块32还用于判断所述每个待检测文档的签名压缩长度中,是否存在同时小于C(sig(x))和C(sig(y))的签名压缩长度C(sig(z));若存在,判断所述签名压缩长度C(sig(x))、C(sig(y))和C(sig(z))是否满足第二剪枝规则;所述第二触发模块33还用于若所述判断模块32的判断结果为满足,触发所述确定模块21,直至判断所述签名压缩长度C(sig(x))和C(sig(y))不满足所述第二剪枝规则;若所述判断模块32的判断结果为不满足,则触发所述计算模块23;其中,所述第二剪枝规则为:|NCD(x,z)-NCD(y,z)|≥τ,τ为所述预设近似度阈值,NCD(x,z)为所述待检测文档x和y的标准化压缩距离值,NCD(y,z)为所述待检测文档y和z的标准化压缩距离值。

具体的,所述基于签名的标准化压缩距离的计算公式为:

所述比较模块24具体用于若SigNCD(x,y)≤τ,则比较结果为所述当前检测文档x和y是近似重复文档;其中,τ为预设近似度阈值。

本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1