`

长文本去重

阅读更多

一、传统签名算法与文本完整性判断

问题抛出

1)运维上线一个bin文件,将文件分发到4台线上机器上,如何判断bin文件全部是一致的

2)用户A将消息msg发送给用户B,用户B如何判断收到的msg_t就是用户A发送的msg

 

思路

一个字节一个字节的比对两个大文件或者大网页效率低,我们可以用一个签名值(例如md5值)代表一个大文件,签名值相同则认为大文件相同(先不考虑冲突率)

 

回答

1)将bin文件取md5,将4台线上机器上的bin文件也取md5,如果5md5值相同,说明一致

2)用户Amsg以及消息的md5同时发送给用户B,用户B收到msg_t后也取md5,得到的值与用户A发送过来的md5值如果相同,则说明msg_tmsg相同

 

结论md5是一种签名算法,常用来判断数据的完整性与一致性

 

md5设计原则:两个文本哪怕只有1bit不同,其md5签名值差别也会非常大,故它只适用于“完整性”check,不适用于“相似性”check

 

新问题抛出

有没有一种签名算法,如果文本非常相似,签名值也非常相似呢?

 

二、文本相似性的签名算法

上文提出的问题,可以用局部敏感哈希LSHLocality Sensitive Hash)解决,局部敏感哈希是一类文本越相似,哈希值越相似的hash算法,有兴趣的同学自行百度,这里分享一下minHash的思路。

 

问题的提出:什么是minHash

回答minHash是局部敏感哈希的一种,它常用来快速判定集合的相似性,也常用于检测网页的重复性,其思路为,用相同的规则抽取集合中的少部分元素代表整个集合,如果少部分元素的重合度很高,非常可能整个集合的重复度也很高

 

举例:待判定的集合为A{1, 7, 5, 9, 3, 11, 15, 13}

已有的集合为:

B{10, 8, 2, 4, 6, 0, 1, 16},

C{100, 700, 500, 900, 300, 1100, 1500,1300},

D{1, 3, 2, 4, 6, 5, 8, 7}

假设使用部分元素代替全体集合的规则为:集合内元素进行排序,取值最小的4(这个过程有信息损失,我们可以认为是一个hash过程)

处理结果为:

A{1, 3, 5, 7}

B{0, 1, 2, 4}      =>     AB1个元素相同

C{100, 300, 500, 700}      =>     AC0个元素相同

D{1, 2, 3, 4}      =>     AD2个元素相同

判断结论:我们认为集合A与集合D是最相似的

 

这个例子有点2,但基本能说明整体思路,实际在执行的过程中

1)我们可以使用更多的元素来代表集合,以提高准确性(例如,将上例中的4个元素代表集合升级为8个元素代表集合)

2)我们可以使用更多的hash函数来代表集合,以提高准确性(例如,上例除了“排序后取值最小的4个元素代表集合”,还可以增加一个哈希函数“排序后取值最大的4个元素代表集合”)

3minHash可以量化评判相似度,亦可以评判网页是否重复(一个分类问题),设定相似度阈值,高于阈值为重复,低于阈值为不重复

4)实际排重过程中,网页库中的哈希值都可以提前计算,只有待判定的集合或者网页的哈希值需要临时计算

 

三、minHash与长文本重复度检测有什么关系

目前看来没什么关系,但如果我们能将每一个长文本用一个集合来表示,就能将长文本的相似度用minHash来解决了。

 

问题的提出:如何将长文本转化为集合?

 

回答:我去,分词不是就可以么

 

举例:待判定的长文本为A{我是58沈剑,我来自58到家}

已有网页库集合为:

B{我是一只来自58的狼}

C{58到家,服务到家}

D{这事和我没关系,我是凑数的}

使用分词将上述文本集合化:

A{我,58,沈剑,来自,到家}

B{我,58,来自,狼}

C{58,服务,到家}

D{事,我,凑数,关系}

判断结论:当当当当,转化为集合后,可以快速判断AB的相似度最高,当然实际执行过程中,除了分词还得考虑词频,用这种方法对长文本进行相似度检测,准确率非常高(文本越长越准)

 

四、还有没有更有效的方法

使用上述方法进行文本相似度检测,需要进行中文分词,词频统计,哈希值计算,相似度计算,计算量微大。

然而,抄袭成风,一字不改的风气,让技术有了更广阔的优化空间,赞!

怎么优化呢?

不再进行分词,而是进行“分句”,用标点符号把长文按照句子分开,使用N个句子集合(例如一篇文章中5条最长的句子作为签名,注意,长句子比短句子更具有区分性)作为文章的签名,在抄袭成风的互联网环境下,此法判断网页的重复度能大大降低工程复杂度,并且准确度也异常的高。

 

五、结论

在抄袭成风的互联网环境下,采用分句的方式,用5条最长的网页内容作为网页的签名,能够极大的降低排重系统复杂度,提高排重准确率,不失为一种好的选择。

 

http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=403419223&idx=1&sn=7f45d6bf8af2e2e87349570ab93af441&scene=21#wechat_redirect

分享到:
评论

相关推荐

    百度咋做长文本去重(一分钟系列)

    ### 百度长文本去重方法详解 #### 一、背景与挑战 在当前互联网环境中,原创内容面临着严重的抄袭问题。这种现象不仅损害了原创作者的权益,也给搜索引擎带来了挑战,尤其是对于像百度这样的大型搜索引擎来说,...

    文本去重工具附源码

    文本去重工具是一种用于处理大量文本数据,去除重复内容的软件。在数据分析、信息检索、文本挖掘等领域,去除重复的文本信息是常见的需求。这款工具附带源码,意味着用户可以深入理解其工作原理,甚至根据自身需求...

    K8文本去重工具

    【K8文本去重工具】是一款专为处理大量文本数据而设计的应用程序,它主要功能是高效地识别并去除重复的文本内容。在信息化时代,无论是大数据分析、文本挖掘还是内容管理,面对海量的文本信息,去重工作显得尤为重要...

    相似性检测与文本去重

    在信息技术和互联网快速发展的当下,文本去重变得尤为重要。文本去重涉及自然语言处理(NLP)技术,目的是从大量文本数据中删除重复内容,以提高数据的有效性和质量。本文档介绍了基于语义指纹和最长公共子串...

    大批量文本去重脚本.py

    大批量文本去重脚本,效率恐怖,秒对数百万条数据去重

    txt文本去重神器

    txt文本去重神器,可随身携带,上千万数据去重不到20秒.

    狼军文本去重小工具v1.0免费绿色版

    狼军文本去重小工具是一款完全绿色免费的txt文本去重复软件。通常我们下载的txt文件里都存在大量的重复文本,这些重复的资料浪费我们的时间和内存,狼军文本去重小工具就能帮你解决这些问题。软件操作简单,只要导入...

    JAVA文本去重查重判断文件重复工具程序源代码 查重是指对文本、论文、作业等进行重复率检测,以防止学术不端和抄袭 查重主要是通过

    JAVA文本去重查重判断文件重复工具程序源代码 查重是指对文本、论文、作业等进行重复率检测,以防止学术不端和抄袭。查重主要是通过计算机程序对文本进行比对,发现文本中相似或完全相同的部分,生成重复率报告。 ...

    论文研究- 基于LCS与发布时间的焦点新闻文本去重研究 .pdf

    根据提供的文件内容,本篇论文主要研究了互联网新闻中焦点新闻文本去重的问题,着重于使用最长公共子序列(LCS)算法结合新闻发布的时间点来提高去重的效率和准确性。下面是对该论文中涉及知识点的详细说明。 1. ...

    高效的文本去重源码VC

    【高效的文本去重源码VC】是一个基于Visual C++(VC)开发的程序,用于解决大量文本数据中的重复内容问题。在处理大量文本数据时,去重是一个关键步骤,尤其在搜索引擎索引、数据清洗、日志分析等领域,能够有效地...

    文本去重工具

    思途高效文本去重工具最大的不同点是大量数据处理时的高效。如果数据多达几兆或者几十几百兆时,去重将是一个大难题了。 我们在自己工作中遇到要处理几十兆数据时,网上那些工作,处理一次就需

    文本去重第一步:基于内容的文本相似性计算

    文本去重是信息技术领域中一个重要的任务,尤其是在大数据分析、搜索引擎优化、文本挖掘等领域有着广泛的应用。本主题将深入探讨“基于内容的文本相似性计算”,这是实现文本去重的第一步。通过理解文本内容的相似性...

    TXT文本批量空行去重工具

    《TXT文本批量空行去重工具详解》 在日常的文本处理工作中,我们经常会遇到大量文本数据,其中可能包含重复的空行,这不仅影响了数据的整洁性,还可能导致分析错误。为了解决这个问题,专门的“TXT文本批量空行去重...

    Simhash算法在文本去重中的应用-信息熵词频加权1.pdf

    Simhash算法是一种局部敏感哈希算法,广泛应用于文本去重领域。随着大数据时代的到来,信息量爆炸式增长,数据存储空间和时间成本受到重视,因此,如何在有限的资源中存储更多有效精炼的信息成为了研究的热点。文本...

    文本去重策略研究-DSC I-Match

    这是一篇关于文本去重策略的研究论文,包括DSC算法、i-match算法介绍。

    qq文本去重 整理软件

    qq文本去重 整理软件,希望大家喜欢 。。。。。。。。

Global site tag (gtag.js) - Google Analytics