在多个文档中确定与目标文档相似的文档集合的方法和装置与流程

文档序号:12824769阅读:208来源:国知局
在多个文档中确定与目标文档相似的文档集合的方法和装置与流程

本公开内容的实施例一般性地涉及与计算机相关的技术领域,并且更特别地涉及一种在多个文档中确定与目标文档相似的文档集合的方法和装置。



背景技术:

相似文档搜索对于内容管理、内容搜索和内容推荐而言是非常有用的特征。在各种场景中,许多应用都需要从海量的文档中找出与目标文档相似的文档集合。

典型的解决方案是逐个地计算需要确定的文档与目标文档的相似度,然后返回满足相似度准则的那些文档。例如,可以根据倒排索引来逐个地搜索关键词,将各个关键词搜索得到的文档集合的交集确定为相似的文档集合。但是,当需要确定的文档数目变得越来越大时,这种方法花费的时间将变得显著,从而难以在用户所给定的时间中完成该确定。此外,上述方法在性能上以及准确度上也存在问题。



技术实现要素:

鉴于现有技术中存在的上述问题,本公开内容的实施例的目的之一在于提供一种在多个文档中确定与目标文档相似的文档集合的方法和装置,以解决现有技术中的上述以及其他的问题。

根据本公开内容的第一方面,提供了一种在多个文档中确定与目标文档相似的文档集合的方法。该多个文档和目标文档中均可以包括多个词语,每个词语可以对应于一个不同的整数。该方法可以包括:针对该多个文档和目标文档中的每个文档,基于与文档相关联的词语集合来获得与文档相关联的整数集合;根据预定转换规则将与每个文档相关联的整数集合转换为维度相同的向量;以及基于多个文档的相应向量与目标文档的向量之间的差异来确定相似的文档集合。

在一些实施例中,该方法可以进一步包括:根据多个预定转换规则确定多个相似的文档集合;以及将多个相似的文档集合的交集确定为最终的相似文档集合。

在一些实施例中,该方法可以进一步包括:使用多维的向量矩阵来存储多个文档中的每个文档的通过多个预定转换规则得到的多个向量,每个预定转换规则对应于向量矩阵的一个不同维度,每个向量对应于相应维度上的一个坐标值。

在一些实施例中,该方法可以进一步包括:根据多个预定转换规则,针对新的文档得到相应的多个向量;以及将所得到的多个向量存储在向量矩阵中。在一些实施例中,该方法可以进一步包括:使用哈希图来存储向量矩阵。

在一些实施例中,该方法可以进一步包括:将每个维度上的与文档的向量相对应的坐标值之外的坐标值标记为“空”。在这些实施例中,该方法可以进一步包括:在确定相似的文档集合的过程中不考虑被标记为“空”的坐标值。

在一些实施例中,预定转换规则可以包括:针对整数集合中的每个整数,获得相应的二进制数;取出相应二进制数的连续n位,其中n为大于零的整数;将该连续n位转换为十进制数以替代相应整数而形成新的整数集合;以及使用位图法将该新的整数集合转换为位长度2n的位向量。在一些实施例中,该方法可以进一步包括:根据多个预定转换规则确定多个相似的文档集合,其中多个预定转换规则分别取出相应二进制数的互不交叠的多个连续n位,以得到相应的位向量。在一些实施例中,位长度可以是8的整数倍。

在一些实施例中,该方法可以进一步包括:通过直接比较相似的文档集合中的文档的相关联的词语集合与所述目标文档的相关联的词语集合来确定更为精确的相似文档子集。

在一些实施例中,基于多个文档的相应向量与目标文档的向量之间的差异来确定相似的文档集合可以包括:将差异小于预定阈值的文档集合确定为相似的文档集合。在一些实施例中,确定所述相似的文档集合可以包括:确定差异最小的前k个文档,k为大于零的整数。

在一些实施例中,该方法可以进一步包括:基于目标文档的向量和预定阈值,确定符合于预定阈值的向量的值区间;以及将向量落在所述值区间内的文档集合确定为相似的文档集合。在一些实施例中,该方法可以进一步包括:以一为步长递增预定阈值,以使相似的文档集合包括预定数目的文档。

在一些实施例中,与文档相关联的词语集合可以包括文档的关键词集合。在一些实施例中,可以通过词频统计或者名称实体提取增强算法来确定与文档相关联的词语集合。

在一些实施例中,该方法可以进一步包括:将向量添加到搜索引擎的索引段中,以用于通过搜索引擎对向量进行搜索。

根据本公开内容的第二方面,提供了一种在多个文档中确定与目标文档相似的文档集合的装置。该多个文档和目标文档中均包括多个词语,每个词语对应于一个不同的整数。该装置可以包括:获得单元,被配置为针对该多个文档和目标文档中的每个文档,基于与文档相关联的词语集合来获得与文档相关联的整数集合;转换单元,被配置为根据预定转换规则将与每个文档相关联的整数集合转换为维度相同的向量;以及确定单元,被配置为基于该多个文档的相应向量与目标文档的向量之间的差异来确定相似的文档集合。

根据本公开内容的第三方面,提供了一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,这些计算机可读程序指令可以用于执行根据第一方面的方法。

根据本公开内容的第四方面,提供了一种计算机系统,可以包括根据第二方面的装置。

本公开内容的实施例相对于现有技术的方法至少提供了以下的优点。首先,在性能上,本公开内容的实施例可以快速地确定相似文档,即使是在文档集合中的文档数量非常大的时候。这是因为,本公开内容的实施例通过搜索相似的与文档相关联的向量(本文中也称为指纹)组合可以得出可能相似的文本集合,从而缩减了最终需要精确计算更精确相似的文本集合。其次,在准确度上,因为本公开内容的实施例可以使用文档中的所有关键词来生成指纹,所以最终的结果比现有技术的方法(例如,lucene的more-like-this搜索方法)更加准确。

附图说明

通过参考附图阅读下文的详细描述,本公开内容的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开内容的若干实施例,其中:

图1示意性地示出了从文档转换为数值化的词语集合的过程。

图2示意性地示出了根据本公开内容的实施例的在多个文档中确定与目标文档相似的文档集合的方法的流程图。

图3示意性地示出了根据本公开内容的实施例的从数值化的词语集合中提取指纹的示意图。

图4示意性地示出了根据本公开内容的实施例的利用文档的二维指纹矩阵来表示本文的示意图。

图5示意性地示出了根据本公开内容的实施例的利用文档的二维指纹矩阵来搜索相似本文的示意图。

图6示意性地示出了根据本公开内容的实施例的向文档的三维指纹矩阵中添加新的文档的示意图。

图7示意性地示出了根据本公开内容的实施例的利用文档的三维指纹矩阵来搜索相似文档的示意图。

图8示意性地示出了根据本公开内容的实施例的在多个文档中确定与目标文档相似的文档集合的装置的框图。

图9示意性地示出了可以用来实现本公开内容的实施例的示例性计算机系统/服务器的框图。

具体实施方式

下面将参考附图中所示出的若干示例性实施例来描述本公开内容的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开内容,而并非以任何方式限制本公开内容的范围。

相似文档搜索对于内容管理、内容搜索和内容推荐而言是非常有用的特征。考虑到相似的文档仅是文档储存库中的少数文档,一种可能的改进是快速地得到可能相似的文档集合,并且然后精确地对这些候选文档进行检查。本公开内容提出了利用指纹矩阵解决方案来实施这种构思。

在详细介绍本公开内容之前,首先给出本公开内容中的可能使用到的术语的定义。

在本公开内容的上下文中,词汇表是指文档可能包含的所有词语。在一些实施例中,能够选择不同的策略来减少词汇表的大小,例如,可以选择仅名词、动词和重要的形容词来构造词汇表。在本公开内容的上下文中,文档是词汇表中的词语的序列,在我们的模型中,文档只是词语的序列而不论标点和符号。此外,在本公开内容的上下文中,文档和文档可以互换地使用。

在本公开内容的上下文中,关键词集合是指文档的关键词的集合,其可以表示文档的内容。在本公开内容的上下文中,数值化(numeration)方法能够将一个词语映射为一个整数。最终,一个文档能够被表示为整数的集合。可以使用dn来标示这个整数集合并且将它们视为文档本身。在本公开内容的上下文中,词语集合(sow)是使用上述数值化方法对文档的数字表示。sow包含整数集合,该整数集合表示一个文档中的所有词语而不论词语在文档中的重复次数和位置。图1示意性地示出了从文档转换为数值化的词语集合的过程。如图1中所示出的,文档101可以通过关键词提取102得到关键词集合103,关键词集合103可以通过数值化104得到sow105。

在本公开内容的上下文中,文档差异被用来量化两个文档之间的差异。在一些实施例中,可以具有不同的策略来定义文档差异函数。例如,在计算样本之间的单方向差异的示例中,如果一个文档d0具有关键词{clinton,republican,vote,whitehouse},而另一文档d1具有{swing,campaigns,clinton,republican,donald},那么d0到d1的文档差异是diff(d0,d1)==2(d1不具有“vote”和“whitehouse”)而d1到d0的文档差异是diff(d1,d0)=3(d0不具有“swing”、“campaigns”和“donald”)。

在本公开内容的上下文中,文档差异阈值被用来定义“两个相似的文档应当有多相似”。如在前面的示例中,如果将文档差异阈值定义为2,则d1是d0的相似文档,而d0不是d1的相似文档。

确定相似文档的问题可以表达为,给定一个文档差异阈值m和目标文档dt,在储存库中找出相似的文档集合simm(dt),该集合中的文档与目标文档的文档差异不大于阈值m。

simm(dt)={di|diff(dt,di)≤m,di∈repository}(0)对前k个相似文档的搜索也是该问题的一部分,其是从公式(0)得出最为相似的k个文档。

图2示意性地示出了根据本公开内容的实施例的在多个文档中确定与目标文档相似的文档集合的方法200的流程图。在一些实施例中,该多个文档和目标文档中均包括多个词语,每个词语对应于一个不同的整数。

本领域的技术人员可以理解,可以采用各种方法来将词语映射为一个整数并且不同的词语映射为不同的整数,从而将文档表示为不同整数的集合,本公开内容在这个方面不受限制。

如图2中所示出的,方法200在开始之后可以进入步骤201。在步骤201中,可以针对多个文档和目标文档中的每个文档,基于与文档相关联的词语集合来获得与文档相关联的整数集合。

在一些实施例中,与文档相关联的词语集合可以包括所述文档的关键词集合。在一些实施例中,可以通过词频统计或者名称实体提取增强算法来确定与文档相关联的词语集合。本领域的技术人员可以理解,一个文档可能包含许多的细节和噪声信息。需要某种提取和精化来得到文档的主题信息。关键词提取过程可以采用词频统计(tf)、名称实体提取增强算法等等。这个部分并不为本公开内容所关注,并且存在许多方法来得到我们想要的。

在一个特定的实施例中,为了具体说明本公开内容的目的,给出了将与文档相关联的词语集合转换为整数集合的具体示例。在该具体示例中,d0具有相关联的词语集合{clinton,republican,vote,whitehouse},而另一d1具有相关联的词语集合{swing,campaigns,clinton,republican,donald}。按照一种预定的映射规则,可以将上述词语集合如下地转换为整数集合。

d0:{clinton,republican,vote,whitehouse}→d0:{44,17,28,6}

d1:{swing,campaigns,clinton,republican,donald}→

d1:{87,63,44,17,79}

其中,每个词语所对应的整数是预定义的。本公开内容对于词语如何映射为整数并不进行限制,只需要存在这种预定的映射关系即可。

此外,本领域的技术人员可以理解,尽管上面使用了英文词语作为示例来进行说明,但是本公开内容的实施例可以等同地应用到其他语言的技术场景中。

接着,在完成步骤201之后,方法200可以进入步骤202。在步骤202中,可以根据预定转换规则将与每个文档相关联的整数集合转换为维度相同的向量。在本公开内容的上下文中,可以将与一个文档相关联的向量称为该文档的指纹,并且在本公开内容的上下文中,“向量”可以与“指纹”互换地使用。本领域的技术人员可以理解,指纹在某种程度上是原有整数集合的抽象信息。因此,文档的指纹可以用于确定相似的文档集合。本领域的技术人员可以理解,尽管本文中主要采用位向量的形式来具体地阐述本公开内容的实施例,但是根据预定转换规则从整数集合转换得到的其他向量也可以等同地被实施用于本公开的实施例。

在一些实施例中,方法200可以进一步包括:根据多个预定转换规则确定多个相似的文档集合;以及将该多个相似的文档集合的交集确定为最终的相似文档集合。

本领域的技术人员可以理解,文档的指纹虽然可以携带原有整数集合的信息,但是这种信息是具有局限性的。对于一种预定转换规则而言,不同的整数集合可能对应于相同的指纹。因此,为了使得方法200的结果更加准确,可以使用多个不同的预定转换规则针对某个文档分别生成多个不同的指纹。通过不同的指纹可以分别得出不同的相似文档集合。然后,可以将该多个相似的文档集合的交集确定为最终的相似文档集合,从而提高结果的准确性。

图3示意性地示出了根据本公开内容的实施例的从数值化的词语集合中提取指纹的示意图。如图3中所示出的,在确定与文档相关联的词语集合(例如,关键词集合)之后,可以该词语集合表示为整数集合,在图3中表示为sow301。接着,可以通过预定转换规则从sow301中提取处多个指纹。这些指纹在图3中表示为fp0302、fp1303、fpn304等等。此外,指纹也可以从原始文档中提取。

这些指纹能够帮助用户快速地定位相似的文档,用户能够选择使用多个指纹来确保有效性和无冗余性。指纹转换规则能够将不同长度的文档或者整数集合的规格化为维度相同的向量,特别是位长度相同的位向量。这意味着该过程将公平地保持与文档相关联的词语集合中的每个词语的信息,而无需粗略地切分词语的数目。

在一些实施例中,方法200中的预定转换规则可以包括:针对整数集合中的每个整数,获得相应的二进制数;取出相应二进制数的连续n位,其中n为大于零的整数;将所述连续n位转换为十进制数以替代相应整数而形成新的整数集合;以及使用位图法将所述新的整数集合转换为位长度2n的位向量。

在一些实施例中,可以根据多个预定转换规则确定多个相似的文档集合,其中所述多个预定转换规则分别取出所述相应二进制数的互不交叠的多个连续n位,以得到相应的位向量。

在一个特定的实施例中,二进制表示的低2比特的段可以作为指纹-0的提取函数,并且二进制表示的2-3比特的段可以作为另一指纹-1的提取函数。

在该特定的实施例中,针对上文所给出的具体示例,可以存在如下的“指纹”提取过程。

在这种转换中,位图法bitmap的含义是,所得到的位向量中的1表示所转换的整数集合中包括该位所代表的数字,0表示所转换的整数集合中不包括该位所代表的数字。例如,{0,1,0,2}包括0、1、2,所以位向量01112的第一、二、三位为1,而{0,1,0,2}不包括3,所以位向量01112的第四位为0。

换句话说,在该特定的实施例中,文档d0的“指纹”0可以是“01112”,而“指纹”1可以是“10112”。文档d1的“指纹”0可以是“10112”,而“指纹”1可以是“10112”。从该示例可以看出,不同长度的整数集合d0和d1最终被转换为相同位长度的位向量。这有利于在后续步骤中确定不同文档的指纹之间的差异。在一些实施例中,位长度可以是8的整数倍。

在一些实施例中,可以使用多维的向量矩阵来存储所述多个文档中的每个文档的通过所述多个预定转换规则得到的多个向量,每个预定转换规则对应于向量矩阵的一个不同维度,每个向量对应于相应维度上的一个坐标值。在这些实施例中,如果指纹被存储在指纹矩阵中,则该指纹矩阵中的每个点可以存储具有相同指纹组合的文档参考号的列表。

图4示意性地示出了根据本公开内容的实施例的利用文档的二维指纹矩阵来表示本文的示意图。如图4中所示出的,针对上面的特定实施例,文档d0和文档d1可以使用它们各自的两个指纹作为相应维度上的坐标值而存储在指纹矩阵中。

除了使用二维指纹之外,在其他的实施例中,也可以使用更高维度的指纹矩阵来提供用以访问这些指纹的快速搜索能力。如上文所述,指纹矩阵是使用每个指纹fpi作为其维度的矩阵。为了说明的目的,下文还给出了三维指纹的示例,这意味着在指纹提取过程中提取了三个不同的指纹。

图6示意性地示出了根据本公开内容的实施例的向文档的三维指纹矩阵中添加新的文档的示意图。如图6中所示出的,可以根据多个预定转换规则,针对新的文档得到相应的多个向量,并且将所得到的多个向量存储在向量矩阵中。

具体地,为了在指纹矩阵中插入新的文档din,可以将这个文档的参考号以指纹fpmatrix[fp0(din)][fp1(din)][fp2(din)]为坐标添加到这个矩阵中。

在一些实施例中,可以将每个维度上的与文档的向量相对应的坐标值之外的坐标值标记为“空”(blank)。例如,如果不存在任何文档具有例如fp0=b的指纹值,则这个指纹值将被标记为空。可以通过这个标记来跳过指纹矩阵中的空坐标值,从而可以加速相似文档的搜索过程。因此,在一些实施例中,可以在确定相似的文档集合的过程中不考虑被标记为“空”的坐标值。

在方法200中,可以使用文档的指纹作为该文档的定位符,这意味着仅需要花费o(1)的时间来搜索某个文档的指纹组合。此外,这种方式确保了具有相同指纹组合的文档或者其参考号可以被放置在矩阵中的相同位置处。

进一步地,可以存在两种方式来存储指纹矩阵。首先是原始存储,其完整地存储整个指纹矩阵空间并且将文档列表存储在该简明指纹矩阵空间中。其次是哈希映射图(hashmap)存储,它使用指纹组合作为它的关键码(key)并且将指纹组合存储在该映射图中,这对于在稀疏情况中压缩矩阵的大小是有用的。对于上面所提到的新文档,可以将新文档的指纹(fp0(din),fp1(din)...fpn(din))作为关键码并且将它们存放到哈希映射图中以压缩矩阵空间。因此,在一些实施例中,可以使用哈希图来存储向量矩阵。

在这两种存储方式中,原始存储方式在搜索时间上具有优势,因为它是简明的矩阵并且对它的访问是直接的,但是它浪费了许多存储空间来存储空的指纹组合。相对照地,哈希映射图存储方式可以极大地压缩该存储空间。

接着,在完成步骤202之后,方法200可以进入步骤203。在步骤203中,可以基于多个文档的相应向量与目标文档的向量之间的差异来确定相似的文档集合。如上文所描述的,文档的向量部分地体现了与文档相关联的词语集合的信息。进一步如上文所描述的,不论与文档相关联的词语集合的词语数目,文档的向量都具有相同的维度。因此,通过比较不同文档的向量,确定文档的向量之间的差异,就可以确定出与目标文档相似的文档集合。

在一些实施例中,步骤203可以进一步包括:将差异小于预定阈值的文档集合确定为相似的文档集合。本领域的技术人员可以理解,该预定阈值可以根据具体的技术场景和要求进行预先设置。通过调整该预定阈值,可以调整所确定的相似文档集合与目标文档之间的相似度的高低,同时可以调整所确定的相似文档集合中的文档数目。

在一些场景中,在使用某个预定阈值的情况下,可能无法找到用户所要求的预定数目的相似文档。在这些场景中,可以以一为步长来递增该预定阈值,以使相似的文档集合包括预定数目的文档。

在确定相似文本的具体过程中,可以基于目标文档的向量和预定阈值,确定符合于预定阈值的向量的值区间,并且将向量落在值区间内的文档集合确定为相似的文档集合。

下文通过图5和图7分别通过二维指纹矩阵和三位指纹矩阵来具体地阐述确定相似的文档集合的过程。

图5示意性地示出了根据本公开内容的实施例的利用文档的二维指纹矩阵来搜索相似本文的示意图。

根据本公开内容的实施例,在搜索相似本文的阶段中,可以通过指纹组合来找出所有可能的相似文档。在一个具体的示例中,可以假设目标文档为:dt:{clinton,campaigns,virginia,donald}={44,63,26,79},并且可以将文档差异阈值m为1。

首先,可以计算dt的指纹如下:其中函数fp0可以取出各个整数的二进制表示的最低2位,并且将取出的2位表示为十进制。具体地,整数44、63、26、79分别被转换为0、3、2、3。接着可以通过位图法将整数集合{0,3,2,3}转换为位向量11012。在这种转换中,位向量中的1表示所转换的整数集合中包括该位所代表的数字,0表示所转换的整数集合中不包括该位所代表的数字。例如,{0,3,2,3}包括0、2、3,所以位向量11012的第一、三、四位为1,而{0,3,2,3}不包括1,所以位向量11012的第二位为0。

类似地,提取函数fp1可以取出各个整数的二进制表示的次低2位,然后使用类似的过程得出另一个位向量11002。

然后,可以根据目标文档的位向量以及文档差异阈值m来构造符合相似条件的文档的可能指纹。在这个过程中,可以通配符“?”来表示该比特能够是0或者1。此外,在构造可能指纹的过程中,可以不考虑目标文档的指纹中为0的位,而仅需要考虑为1的位。如此,针对函数fp0可以得出用指纹表示的可能的相似文档集合为:针对fp1可以得出用指纹表示的可能的相似文档集合为:

图5中所描绘的阴影区域表示了在二维的指纹矩阵中所表示的与目标文档dt相似的文档所在的区域,该区域是通过两个指纹所确定的可能相似文档集合的交集。如图5中所示出的,上文的具体示例中的文档d0在该搜索范围之外,并且文档d1在该搜索范围之中。这与实际地比较它们之间的相似度的结果是吻合的:diff(dt,d0)==3,diff(dt,d1)=1。

最终,可以通过传统的方式检查出d1中的关键词满足具体场景的相似度要求。上面的计算过程在文档增加时,成本将比逐个比较要少得多。因此,在一些实施例中,可以通过直接比较相似的文档集合中的文档的相关联的词语集合与目标文档的相关联的词语集合来确定更为精确的相似文档子集。

图7示意性地示出了根据本公开内容的实施例的利用文档的三维指纹矩阵来搜索相似文档的示意图。

如图7中所示出的,搜索相似文档的过程开始于针对目标文档的指纹计算:fp0(dt),fp1(dt),fp2(dt),...。然后,在阈值m内的可能指纹将被计算:这个步骤将排除掉具有大于m的差异的那些指纹。

如上文所描述的,在这个过程中,可以通过滤除具有空标记的指纹来加速搜索。如果一个指纹被标记了空标记,这意味着没有文档具有该指纹,所以不需要搜索这些指纹。

针对多个指纹中的每个指纹进行前面的步骤,然后可以得到所有的指纹相似的集合。然后,根据上文公式(4),可以得到根据多个指纹综合得出的相似文本集合:

可以看出,通过本公开的实施例的方法,极大地缩减了需要进行查询的相似文档的范围,并且能够进行最终的相似度计算过程来滤除虚假肯定(false-positive)的情况。

此外,对于确定前k个最佳相似文本的问题,该问题在本公开内容的模型中将会更加简单。从阈值m=0开始,在这种情况中,将会找到对于所使用的指纹而言的完全匹配。如果相似本文集合大小少于k个,则可以逐一地放宽阈值m,同时查看结果的相似文本集合的大小是否足够大。如果满足了用于所需要的预定数目k,则可以返回该k个相似文档。因此,在一些实施例中,方法200可以确定差异最小的前k个文档,k为大于零的整数。

在一些实施例中,可以将向量添加到搜索引擎的索引段中,以用于通过搜索引擎对向量进行搜索。本领域的技术人员可以理解,基于倒排索引(invertedindex)的传统搜索引擎长于一般性的搜索,如果对相似文档搜索能够与传统搜索引擎进行集成可能是一种有吸引力的特征。为了将本公开内容的方法集成在搜索引擎中,可以将所有的指纹存储在搜索引擎的索引字段中,在搜索阶段,可以使用“与(and)”子句来搜索特定的指纹组合。

在完成步骤203之后,方法200可以结束。

在下文中,将给出与本公开内容的实施例的方法有关的理论推导,以证明本公开内容的实施例的正确性和可行性。本领域的技术人员应该理解,在下面的推导过程中,可能使用了特定的场景或者表述,这些特定的场景或者表述仅是为了说明而并不是限制本公开内容的实施例。

在一般的场景中,文档的sow可能由大量的比特集合来表示,所以需要使用词汇表比特的大小来存储sow。但是,文档的sow通常是一个稀疏的比特集合,因为与整个词汇表相比较,一个文档的关键词是非常少的。因此,本公开内容替代地使用了整数集合dn={wn0,wn1,...,wnk}来表示文档。

通常,每个(数学)函数fp(x)可以具有如下的性质:自然地,本公开内容中的用于提取指纹的函数也可以具有如下性质:以及(1)。例如,在上文使用低2比特段作为用于提取指纹的函数的特定实施例中,可以有:

因此,在本公开的特定实施例中,可以使用比特段函数作为用于提取指纹的函数。在上文给出的具体示例中,关键词集合d0:{clinton,republican,vote,whitehouse}的数值化形式可以为:d0={44,17,28,6}。在一些实施例中,该数值转换可以基于惯用的词汇表格。

基于上面的公式(1)和位向量的性质,容易得到以下公式:

bitdiff(fpi(d0),fpi(d1))≤diff(d0,d1)(2),

其中函数bittdiff(i0,i1)可以是针对i0是1而i1是0的比特组合进行计数的函数。

可以定义具有与目标文档dt具有文档差异阈值m的指纹相似集合:

基于上文的公式(0)和公式(2),相似文档集合simm(dt)必须是的子集:

如果具有n个指纹,从上面的公式(3)可以得到:

通过上面的公式(4),能够通过使用指纹相似集合的交集来缩减相似文档集合的搜索范围。

作为简要的总结,本公开内容提出了一种利用指纹矩阵的解决方案来找出相似文档的新方法。这种方法确保了具有相同关键词的文档将以o(1)的速度被返回,该方法将容忍一些虚假肯定的文档以便获得更好性能。本公开内容所提出的这种解决方案的主要步骤可以粗略地分为三个部分:第一,指纹提取:将从文档中提取固定数目的指纹。每个指纹具有相同的位长度,通常是基数8的整数个比特,例如8比特、32比特,等等。第二,指纹矩阵构造:这些指纹将被存储在指纹矩阵中。该矩阵的维度由指纹的固定数目来决定。第三,相似文档搜索:将利用指纹矩阵来得到目标文档的相似文档。

本公开内容提出了一种以可接受的虚假肯定概率在文档差异阈值条件内快速地搜索所有文档的机制。它针对每个文档可以生成若干指纹,并且将这些指纹存储在名为指纹矩阵的数据结构中。在相似文档搜索期间,指纹矩阵能够以相当快的速度缩减搜索的范围。在搜索时间中,通过计算目标文档的指纹,指纹矩阵能够快速地找出可能包含相似文档的存储区,并且可以排除对不相似的路径进行遍历。

图8示意性地示出了根据本公开内容的实施例的在多个文档中确定与目标文档相似的文档集合的装置800的框图。在一些实施例中,该多个文档和目标文档中均可以包括多个词语,每个词语可以对应于一个不同的整数。在图8中,使用虚线框来表示可选的单元。

本领域的技术人员可以理解,图8中仅示出了装置800中的与本公开的实施例紧密相关的单元或组件,在具体的实现中,装置800可以包括使其能够正常操作的其他功能单元或组件。此外,本领域的技术人员还可以理解,装置800的各个单元之间可以存在必要的连接。

如图8中所示出的,装置800可以包括获得单元801、转换单元802、以及确定单元803。

在一些实施例中,获得单元801可以被配置为针对多个文档和目标文档中的每个文档,基于与文档相关联的词语集合来获得与文档相关联的整数集合。在一些实施例中,与文档相关联的词语集合可以包括文档的关键词集合。在一些实施例中,可以通过词频统计或者名称实体提取增强算法来确定与文档相关联的词语集合。

在一些实施例中,转换单元802可以被配置为根据预定转换规则将与每个文档相关联的整数集合转换为维度相同的向量。确定单元803可以被配置为基于多个文档的相应向量与目标文档的向量之间的差异来确定相似的文档集合。在一些实施例中,位长度可以是8的整数倍。在一些实施例中,确定单元803可以进一步被配置为:确定差异最小的前k个文档,k为大于零的整数。

在一些实施例中,转换单元802和确定单元803可以进一步被配置为:根据多个预定转换规则确定多个相似的文档集合,以及将多个相似的文档集合的交集确定为最终的相似文档集合。

在一些实施例中,装置800可以进一步包括存储单元804。存储单元804可以被配置为使用多维的向量矩阵来存储多个文档中的每个文档的通过多个预定转换规则得到的多个向量,每个预定转换规则对应于向量矩阵的一个不同维度,每个向量对应于相应维度上的一个坐标值。

在一些实施例中,转换单元802可以进一步被配置为根据多个预定转换规则,针对新的文档得到相应的多个向量。在这些实施例中,存储单元804可以进一步被配置为,将所得到的多个向量存储在向量矩阵中。

在一些实施例中,装置800可以进一步包括标记单元805。标记单元805可以被配置为将每个维度上的与文档的向量相对应的坐标值之外的坐标值标记为“空”。在这些实施例中,确定单元803可以进一步被配置为:在确定相似的文档集合的过程中不考虑被标记为“空”的坐标值。

在一些实施例中,存储单元804可以进一步被配置为:使用哈希图来存储向量矩阵。

在一些实施例中,预定转换规则可以包括:针对整数集合中的每个整数,获得相应的二进制数;取出相应二进制数的连续n位,其中n为大于零的整数;将该连续n位转换为十进制数以替代相应整数而形成新的整数集合;以及使用位图法将新的整数集合转换为2n长度的向量。

在一些实施例中,转换单元802和确定单元803可以进一步被配置为:根据多个预定转换规则确定多个相似的文档集合,其中该多个预定转换规则分别取出相应二进制数的互不交叠的多个连续n位,以得到相应的向量。

在一些实施例中,确定单元803可以进一步被配置为:通过直接比较相似的文档集合中的文档的相关联的词语集合与目标文档的相关联的词语集合来确定更为精确的相似文档子集。在一些实施例中,确定单元803可以进一步被配置为:将差异小于预定阈值的文档集合确定为相似的文档集合。在一些实施例中,确定单元803可以进一步被配置为:基于目标文档的向量和预定阈值,确定符合于预定阈值的向量的值区间;以及将向量落在该值区间内的文档集合确定为相似的文档集合。

在一些实施例中,装置800可以进一步包括递增单元806。递增单元806可以被配置为以一为步长递增预定阈值,以使相似的文档集合包括预定数目的文档。

在一些实施例中,装置800可以进一步包括添加单元807。添加单元807可以被配置为将向量添加到搜索引擎的索引段中,以用于通过搜索引擎对向量进行搜索。

图9示意性地示出了可以用来实现本公开内容的实施例的示例性计算机系统/服务器912的框图。应当注意,图9中所示出的计算机系统/服务器912仅是一种示例,不对本公开内容的实施方式的功能和使用范围进行任何限制。

如图9中所示出的,计算机系统/服务器912以通用计算设备的形式表现。计算机系统/服务器912的组件可以包括但不限于:一个或者多个处理器或者处理单元916,系统存储器928,连接不同系统组件(包括系统存储器928和处理单元916)的总线918。

总线918表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

计算机系统/服务器912典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器912访问的可用介质,包括易失性和非易失性介质,可移除的和不可移除的介质。

系统存储器928可以包括易失性存储器形式的计算机系统可读介质,例如,存储器930和/或缓存器932。计算机系统/服务器912可以进一步包括其他可移除/不可移除的、易失性/非易失性计算机系统存储介质。尽管图9中未示出,但是可以提供用于对可移除非易失性磁盘(例如“软盘”)读写的磁盘,以及对可移除非易失性光盘(例如cd-rom、dvd-rom或者其他光介质)读写的光盘。在这些情况下,每个磁盘可以通过一个或者多个数据介质接口与总线918相连。存储器928可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开内容的各实施方式的功能。

具有至少一个程序模块942的程序/实用工具940,可以存储在例如存储器928中,这样的程序模块942包括但不限于:操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块942通常执行本公开内容所描述的实施方式中的功能和/或方法。

根据需要,计算机系统/服务器912也可以与一个或多个外部设备(例如显示设备924、存储设备914等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器912交互的设备通信,和/或与使得该计算机系统/服务器912能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口922进行。并且,计算机系统/服务器912还可以通过网络适配器920与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器920通过总线918与计算机系统/服务器912的其他模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器912使用其他硬件和/或软件模块,包括但不限于:微代码、设备磁盘、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带磁盘以及数据备份存储系统等。

在对本公开内容的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。

应当注意,本公开内容的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。

此外,尽管在附图中以特定顺序描述了本公开内容的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开内容的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。

虽然已经参考若干具体实施例描述了本公开内容,但是应当理解,本公开内容不限于所公开的具体实施例。本公开内容旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。

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