Algorithm 在大型数据集中检测重复/相似文本?

Algorithm 在大型数据集中检测重复/相似文本?,algorithm,similarity,Algorithm,Similarity,我有一个拥有数千条记录的大型数据库。每次用户发布信息时,我都需要知道是否已经有相同/相似的记录。有什么算法或开源实现可以解决这个问题吗 我们使用的是中文,“相似”的意思是记录的内容最为相同,可能是80%-100%是相同的。每个记录都不会太大,大约2k-6k字节。这个答案的复杂性非常高(最坏的情况是五次,预期的情况是四次,第一次验证数据库,然后四次/三次添加一个记录),所以它不能很好地扩展,不幸的是,现在我想不出更好的答案 该算法称为,它是用python语言实现的。算法本身是三次最坏情况和二次期望

我有一个拥有数千条记录的大型数据库。每次用户发布信息时,我都需要知道是否已经有相同/相似的记录。有什么算法或开源实现可以解决这个问题吗


我们使用的是中文,“相似”的意思是记录的内容最为相同,可能是80%-100%是相同的。每个记录都不会太大,大约2k-6k字节。这个答案的复杂性非常高(最坏的情况是五次,预期的情况是四次,第一次验证数据库,然后四次/三次添加一个记录),所以它不能很好地扩展,不幸的是,现在我想不出更好的答案

该算法称为,它是用python语言实现的。算法本身是三次最坏情况和二次期望。然后你必须对每一个可能的记录对都这样做,这是二次的。当然,在添加记录时,这只是线性的


编辑:对不起,我误读了文档,difflib只是二次的,而不是三次的。使用它,而不是其他算法。

我曾经使用过一种类似的方法,在通常情况下,基于单词统计构建一个搜索索引,然后使用新项目,就像是对该索引进行搜索一样-如果搜索中顶部项目的分数太高,则新项目太相似。毫无疑问,一些标准的文本搜索库可以用于此目的,尽管如果只有几千条记录,构建自己的记录是非常简单的。

看看shngle-min散列技术。这是一个可以帮助你的方法。


您能否提供更多关于记录中字段的详细信息(数字、文本、日期等)?