识别语料库中的近重复项
NearDuplicatesDetection的Python项目详细描述
#近重复检测(near duplicate detection)
此程序使用康奈尔大学威廉·阿姆斯教授在2012年秋季《信息4300,信息检索》的学生讲座中描述的技术来识别语料库中的近重复。
此程序由帕克·摩尔(PJM336)编写,2012年秋季2012年。
````
pip install git://github.com/parkr/near dup detection.git ```>egg=near duplicatdesdetection
```
`
` ` `
` ` `使用
` ` `
/>` ` ` ` ` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` `检测器类
(`detector.py`)。该类包含检测近重复项所需的方法和实例变量,例如“get_jaccard(file1,file2)”方法、“calculate_sketchs()”方法和基本的“create_3grams()”方法。
该程序实现了检测近重复项的标准过程:
1。为每个文档生成n-grams(本例中为3-grams)。根据64位散列给这些
n-grams分配一个唯一的id。
2。根据50个随机选择的
数字和我们之前生成的一些内容为文档创建25个草图:
-`p`是距离n个随机数最接近的素数,在[1,p-1]
-`b`u's`随机数的范围[0,p-1]
-`x`是n-gram id(步骤1中生成的散列)
-使用公式:`f_s(x)=(a_s*x+b_s)%p`
-注意:此公式为每个文档计算25次(每个
随机对'a_s'和'b_s'计算一次),但仅保存25对中每个对
`f_s(x)`的最小结果。因此,在
计算结束时,每个文档有25个“f_min”,每个
对随机数对应一个。浏览每个文档,并使用
jaccard系数估算公式将其与所有其他文档进行比较:`j(d1,d2)=m/n`,其中:
-`m`=两个文档之间相同的草图值数目(必须在相应的
列表中位于同一索引处)
-`n`=样本数目(草图)
4。在定义了任意jaccard系数阈值“0.5”之后,
程序将打印出jaccard系数
大于先前定义的阈值的文档的名称,以及相应的
jaccard系数。
作为项目的附录,前十个
文档的三个“最近邻居”在最后使用相同的方法计算(以及之前
的数据)。
此程序使用康奈尔大学威廉·阿姆斯教授在2012年秋季《信息4300,信息检索》的学生讲座中描述的技术来识别语料库中的近重复。
此程序由帕克·摩尔(PJM336)编写,2012年秋季2012年。
````
pip install git://github.com/parkr/near dup detection.git ```>egg=near duplicatdesdetection
```
`
` ` `
` ` `使用
` ` `
/>` ` ` ` ` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` `检测器类
(`detector.py`)。该类包含检测近重复项所需的方法和实例变量,例如“get_jaccard(file1,file2)”方法、“calculate_sketchs()”方法和基本的“create_3grams()”方法。
该程序实现了检测近重复项的标准过程:
1。为每个文档生成n-grams(本例中为3-grams)。根据64位散列给这些
n-grams分配一个唯一的id。
2。根据50个随机选择的
数字和我们之前生成的一些内容为文档创建25个草图:
-`p`是距离n个随机数最接近的素数,在[1,p-1]
-`b`u's`随机数的范围[0,p-1]
-`x`是n-gram id(步骤1中生成的散列)
-使用公式:`f_s(x)=(a_s*x+b_s)%p`
-注意:此公式为每个文档计算25次(每个
随机对'a_s'和'b_s'计算一次),但仅保存25对中每个对
`f_s(x)`的最小结果。因此,在
计算结束时,每个文档有25个“f_min”,每个
对随机数对应一个。浏览每个文档,并使用
jaccard系数估算公式将其与所有其他文档进行比较:`j(d1,d2)=m/n`,其中:
-`m`=两个文档之间相同的草图值数目(必须在相应的
列表中位于同一索引处)
-`n`=样本数目(草图)
4。在定义了任意jaccard系数阈值“0.5”之后,
程序将打印出jaccard系数
大于先前定义的阈值的文档的名称,以及相应的
jaccard系数。
作为项目的附录,前十个
文档的三个“最近邻居”在最后使用相同的方法计算(以及之前
的数据)。