我正在尝试检测文章或论坛帖子是否是数据库中的重复条目。我已经考虑了一下,得出的结论是,重复内容的人将使用以下三种方法之一(以下降的方式很难检测):
- 简单复制粘贴整个文本
- 复制和粘贴与自己合并的部分文本
- 从外部站点复制文章并假扮自己
准备分析文本
基本上任何异常;目的是使文本尽可能“纯净”。为了获得更准确的结果,通过以下方式对文本进行“标准化”:
- 去除重复的空白并修剪前导和尾随。
- 换行符被标准化为\ n。
- HTML标签被删除。
- 使用称为Reging Fireball的RegEx,URL被剥离。
- 我在应用程序中使用BB代码,然后转到。
- (ä)有香味的和外来的(英式除外)均转换为非外来形式。
我将有关每篇文章的信息存储在(1)统计信息表和(2)关键字表中。
(1)统计信息表 以下是关于文本内容的统计信息(非常类似于此帖子)
- 文字长度
- 信数
- 字数
- 句子数
- 每句话平均字数
- 自动可读性指数
- 枪杀雾分数
对于欧洲语言,应使用Coleman-Liau和自动可读索引,因为它们不使用音节计数,因此应产生合理准确的分数。
(2)关键词表
通过排除大量停用词(常用词)(例如“ the”,“ a”,“ of”,“ to”等)来生成关键字。
样本数据
- text_length,3963年
- letter_count,3052
- word_count,684
- 句子数,33
- word_per_sentence,21岁
- gunning_fog,11.5
- auto_read_index,9.9
- 关键字1,已杀死
- 关键字2,人员
- 关键字3,警察
应该注意的是,文章更新后,以上所有统计信息都将重新生成,并且可能是完全不同的值。
如何使用以上信息来检测数据库中是否已存在首次发布的文章?
我知道我要设计的任何东西都不是完美的,最大的风险是(1)不是重复的内容将被标记为重复(2)系统允许重复的内容通过。
因此,算法应从0(无重复),5(可能为重复)和10(重复)生成风险评估编号。高于5的内容很可能重复。在这种情况下,内容可能会被标记并链接到文章(可能是重复项),并且人员可以决定是删除还是允许。
正如我在存储整篇文章的关键字之前所说的那样,但是我想知道是否可以在段落基础上进行相同的操作。这也意味着进一步在数据库中分离我的数据,但这也将使在我的初始帖子中检测(2)更容易。
我正在考虑统计数据之间的加权平均值,但顺序如何,其结果是什么...