文档章节

长文本去重缘起: (1)原创不易,互联网抄袭成风,很多原创内容在网上被抄来抄去,改来改去 (2)

snowing1990
 snowing1990
发布于 2016/03/03 19:05
字数 1628
阅读 29
收藏 0

缘起:

(1)原创不易,互联网抄袭成风,很多原创内容在网上被抄来抄去,改来改去

(2)百度的网页库非常大,爬虫如何判断一个新网页是否与网页库中已有的网页重复呢?

这是本文要讨论的问题(尽量用大家都能立刻明白的语言和示例表述)。

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

问题抛出:

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

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

思路:

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

回答:

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

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

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

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

新问题抛出:

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

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

上文提出的问题,可以用局部敏感哈希LSH(Locality 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} => A与B有1个元素相同

C{100, 300, 500, 700} => A与C有0个元素相同

D{1, 2, 3, 4} => A与D有2个元素相同

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

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

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

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

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

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

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

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

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

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

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

已有网页库集合为:

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

C{58到家,服务到家}

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

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

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

B{我,58,来自,狼}

C{58,服务,到家}

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

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

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

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

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

怎么优化呢?

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

五、结论

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

本文转载自:

共有 人打赏支持
snowing1990
粉丝 4
博文 90
码字总数 2952
作品 0
程序员
针对抄袭和盗版的一点想法

前两天刚得知博文被抄袭时,我的第一反应是很气愤,在微博、qq空间及csdn的qq群等地方都发表了心情,我想引起一些关注,进而得到一定的回馈。 如今心情平复下来,再回过头来一想,又有了一些...

涂宗勋
2016/04/16
79
0
我们完全有必要对抄袭这个事情敏感

山寨和抄袭是中国互联网上永恒的话题。近年来常见的几种说法: 抄袭和模仿是必经阶段。 太阳底下无新事,没有什么东西是完全原创的。 中国互联网公司都抄,但不是每家都能抄成功。抄不等于成...

红薯
2012/04/17
1K
15
1025 - 花钱证明自己是好人

这几天断断续续在思考软件抄袭的事。 Pin、时间块这些 App 相继被朴素级抄袭,有很多的共同点: 本身都是很优秀的产品,被 App Store 首页多次推荐 开发者我都认识,至少是神交 抄袭都反应出...

atJason
2017/10/25
0
0
国内 App 市场“烂透了”?

用户界面全拷贝 离职带走程序源代码 互抄现象频现 预装模式压制创业者 4月26日,世界知识产权日,所有登录网易邮箱的用户都会看到这样一幅画面:左边一个艺术家打扮的人画出了一只叼着橄榄枝...

红薯
2012/04/29
4.6K
50
程序员都喜欢抄袭“代码”,而且还拿着高薪?难道这么无法无天

  你们知道程序员最熟悉,最熟练,最常用的两个快捷键是哪两个吗?没错,估计你现在心中所想的就是:ctrl+c 和 ctrl+v ,俗名为:复制和粘贴。对于大部分程序员来说:复制和粘贴就是他敲代...

万能的大白
2017/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 识别慢性能的宏

Page Profiling 给你了有关页面在载入的时候操作缓慢的邪教,你可以将下面的内容添加到调试(debug)级别: Version 3.1 及其后续版本 设置包名字为 com.atlassian.renderer.v2.components.M...

honeymose
10分钟前
0
0
day93-20180920-英语流利阅读-待学习

时尚之觞:外表光鲜靓丽,其实穷得要命 Lala 2018-09-20 1.今日导读 讲到时尚界,我们脑海里浮现的可能都是模特和设计师光鲜靓丽、从容潇洒的模样。可是,最近在法国出版的一本书却颠覆了我们...

飞鱼说编程
25分钟前
0
0
maven的pom.xml用解决版本问题

maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用<exclusion>来排除一些...

JAVA码猿
49分钟前
1
0
20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
40
10

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部