CN108874941B - 基于卷积特征和多重哈希映射的大数据url去重方法 - Google Patents
基于卷积特征和多重哈希映射的大数据url去重方法 Download PDFInfo
- Publication number
- CN108874941B CN108874941B CN201810562678.7A CN201810562678A CN108874941B CN 108874941 B CN108874941 B CN 108874941B CN 201810562678 A CN201810562678 A CN 201810562678A CN 108874941 B CN108874941 B CN 108874941B
- Authority
- CN
- China
- Prior art keywords
- convolution
- url
- hash
- mapping
- big data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于卷积特征和多重哈希映射的大数据URL去重方法,通过使用基于卷积特征和多重哈希函数映射的快速特征映射算法,建立一个BitSet,将每个URL都经过一次卷积运算和多个哈希函数映射到多个位,大大降低了冲突概率,从而识别独立的web日志中的URL。本发明方法比传统去重算法更加节省资源,同时又极大的降低了哈希冲突的概率,识别速度非常快。
Description
技术领域
本发明涉及URL去重技术领域,特别是一种基于卷积特征和多重哈希映射的大数据URL去重方法。
背景技术
现有的大数据URL处理技术之一是用HashSet将访问过的URL保存起来,只需接近O(1)的代价就可以查到一个URL是否被访问过了。此方法存以下不足:太消耗内存,随着URL的增多,占用的内存会越来越多,就算只有一亿URL,每个URL算50个字符,就需要5GB内存,实际大数据处理时数量会大得多。
现有的大数据URL处理技术之二是URL经过MD5或SHA-1等单向哈希后再保存到HashSet或数据库,由于字符串经过MD5处理后的信息摘要长度只有128Bit,SHA-1处理后也只有160Bit,节省了好几倍的内存。此方法存在以下不足:使用了哈希映射,节省了好几倍的内存,但是在几十亿级别的数据量处理过程中还是会有很多哈希表冲突,误报数量达到不可忽视的数量,导致去重效果不好。
相关技术术语
卷积:在泛函分析中,卷积(Convolution)是通过两个函数f和g生成第三个函数的一种数学算法,表征函数f与g经过翻转和平移的重叠部分的映射。
URL:统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
哈希函数:数据元素中的关键字通过一定的函数关系映射到哈希表。
发明内容
本发明所要解决的技术问题是提供一种基于卷积特征和多重哈希映射的大数据URL去重方法,用于解决大数据WEB访问日志URL去重处理速度慢、效果差的问题,可以快速在超大量数据中筛选出高价值的独立URL,便于进行后期处理。
为解决上述技术问题,本发明采用的技术方案是:
一种基于卷积特征和多重哈希映射的大数据URL去重方法,包括以下步骤:
步骤1:从WEB服务器上或传统WAF设备上提取WEB访问日志,然后筛选出要求的域名HOST和URL;
步骤2:对URL字段进行序列卷积和多哈希函数映射;
自定义一个包含一个数字串的卷积核,卷积核的数字序列任意确定一个,将每个需要去重的字符串按照映射表确定为一个数字序列,一次卷积操作的结果是对应数字相乘;定义一个步长,卷积核在数字序列上依次卷积能够产生很多卷积值;
设置哈希函数个数k、位数组大小m、加入的字符串数量n,在这个条件下出现哈希表误报的可能性为:
设置k的值为k=ln2*m/n,此时达到最低误报率:
依照上述公式依照预期的误报率确定要使用的哈希函数个数;
步骤3:卷积函数为f,使用k个哈希函数进行映射,哈希函数为h1,h2,h3,h4...hk,则卷积特征值和哈希函数映射值在BitSet中的二进制位赋值原理为:初始化一个m位的bit数组(每位初始设为0),卷积输出和每个哈希函数的输出都是一个(0,m-1)之间的一个数(对应bit数组下标);
输入x,对于每一个哈希函数,计算j=hi(x),将m_bit[j]设成1;同理,对于卷积函数每一次卷积操作,计算c=f(x),将m_bit[c]设成1;
步骤4:根据赋值后的BitSet,作为URL的关键字或者标签,进而识别独立URL。
进一步的,所述步骤1具体为:
1)过滤掉WAF日志中的多余字段;
2)使用脚本进行标签匹配,过滤静态文件和不符合要求状态码的URL;
3)将域名HOST和URL字符串进行拼接,导出。
进一步的,在步骤1中“过滤掉WAF日志中的多余字段”使用scala语言中的filter方法进行过滤,即首先使用scala中的split方法将每条日志按空格符进行分割,随后自定义一个filter方法,其中包含想要过滤的规则。
进一步的,在域名HOST和URL字符串进行拼接时,使用scala内置的字符串组合方法“+”进行拼接。
与现有技术相比,本发明的有益效果是:本方法利用代表URL独立特征的卷积特征值和多哈希函数映射,通过生成的BitSet代表多字符URL,比传统去重算法更加节省资源,同时又极大的降低了哈希冲突的概率,识别速度非常快。
附图说明
图1是本发明基于卷积特征和多重哈希映射的大数据URL去重方法的流程示意图。
图2是卷积值和哈希函数值映射原理。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明通过使用基于卷积特征和多重哈希函数映射的快速特征映射算法,建立一个BitSet,将每个URL都经过一次卷积运算和多个哈希函数映射到多个位,大大降低了冲突概率,从而识别独立的web日志中的URL。详述如下:
一、从WEB服务器上或传统WAF设备上提取WEB访问日志,然后筛选出要求的HOST(域名)和URL(统一资源定位符)。具体的筛选方法:
1、过滤掉WAF日志中的多余字段
可以使用scala语言中的filter方法进行过滤。首先使用scala中的split方法将每条日志按空格符进行分割:
val fields=line.split("")
随后自定义一个filter方法,其中包含想要过滤的规则。规则设定方法可以使用scala正则匹配的方式进行:
def myfilter()
val ho="gov.cn".r//例子:只过滤出政府网站
ho.findFirstMatchIn(host)!=None
2、使用脚本进行标签匹配,过滤静态文件和不符合要求状态码的URL
其中静态文件是指URL访问到的是静态的页面或者文件,如.html,.xml,.js,.css等等,这些URL往往在实际去重应用中不需要,同样使用scala中自定义的filter函数进行:
3、将HOST和URL组合,导出
过滤出的host和URL都是字符串的形式,后面要进行去重操作,需要去重一个域名下所有的URL,所以要将host和URL字符串进行拼接,可以使用scala内置的字符串组合方法“+”进行拼接:
val fields=line.split("")
val host=fields(8)
val url=fields(9)
val uRL=host+url
二、对URL字段进行序列卷积和多哈希函数映射
卷积操作说明:自定义一个包含一个数字串的卷积核,其中卷积核长度最好不低于6个数字。卷积核的数字序列是任意的,如(“453752”),但是一旦确定就不能修改,以后所有的卷积操作都用这个卷积核。将每个需要去重的字符串按照映射表确定为一个数字序列,(如“abcde”映射为“12345”),一次卷积操作的结果是对应数字相乘,如123卷积234,结果就是1*2+2*3+3*4=20。定义一个步长,卷积核在数字序列上依次卷积可以产生很多卷积值,如卷积核“123”在“23456”上卷积,123与234卷积后产生一个值,123再与345卷积又产生一个值(步长为1)。
哈希映射算法可以使用通用的MD5算法。设置哈希函数个数k、位数组大小m、加入的字符串数量n,在这个条件下出现哈希表误报的可能性为:
设置k的值为k=ln2*m/n,此时达到最低误报率:
依照上述公式依照预期的误报率确定要使用的哈希函数个数。
三、卷积函数为f,使用k个哈希函数进行映射,哈希函数为h1,h2,h3,h4...hk,则卷积特征值和哈希函数映射值在BitSet中的二进制位赋值原理如图2所示。初始化一个m位的bit数组,卷积输出和每个哈希函数的输出都是一个(0,m-1)之间的一个数;输入x,对于每一个哈希函数,计算j=hi(x),将m_bit[j]设成1;同理,对于卷积函数每一次卷积操作,计算c=f(x),将m_bit[c]设成1。
注:卷积过程中会产生很多个值(大步长产生的值少,小步长产生的值多),根据自己的需要定义步长,每个卷积值都应映射到BitSet中(图2中仅以卷积产生的一个卷积值进行形象展示)。
多哈希函数映射过程部分Java代码如下:
四、根据赋值后的BitSet,很容易的作为URL的关键字或者标签,进而识别独立URL。比如一个URL映射成的BitSet已经存在,则认为这个URL是重复的。
五、识别后的部分结果如下所示:
www.xxxx.com/piwik.php?action_name=www.wdzj.com%2F%E7%A4%BC%E5%BE%B7%E8%B4%A2%E5%AF%8C%E7%BD%91%E8%B4%B7%E6%A1%A3%E6%A1%88_%E7%A4%BC%E5%BE%B7%E8%B4%A2%E5%AF%8C%E5%AE%98%E7%BD%91%E8%B5%84%E6%96%99_p2p%E5%B9%B3%E5%8F%B0%E6%A1%A3%E6%A1%88_%E7%BD%91%E8%B4%B7%E4%B9%8B%E5%AE%B6&idsite=1&rec=1&r=931653&h=23&m=31&s=47&url=https%3A%2F%2Fwww.wdzj.com%2Fdangan%2Fldcf1%2F&urlref=https%3A%2F%2Fwww.wdzj.com%2Fdangan%2Fsearch%3Ffilter%3De1-b41-n44%26show%3D1&_id=747107e1f17b5566&_idts=1521648124&_idvc=3&_idn=0&_refts=1521732597&_viewts=1521732597&_ref=https%3A%2F%2Fwww.***.com%2F&send_image=0&pdf=1&qt=0&realp=0&wma=0&dir=0&fla=0&java=0&gears=0&ag=0&cookie=1&res=1440x900&cvar=%7B%223%22%3A%5B%22www%22%2C%22%22%5D%2C%225%22%3A%5B%22uid%22%2C%220%22%5D%7D>_ms=888>-1
www.xxxx.com/m/c.ashx?s=35&u=100000&c=4&P=170663&Fl=https%3A//www.***.com.hk/>3
www.xxxx.com/user/action?event_type=load&curt_id=7f8745b8-2d39-11e8-897e-00163e131d5b&prev_id=&event_info=%7B%22ad_uuid%22%3A%22add_trwgzad1tkva%22%7D&event=ad_exposure&target=http%3A%2F%2Fwww.shixiseng.com%2Ftc%2Frpo&uuid=9f2cd019-7402-8948-9c0b-501353d6a9e5&url=https%253A%2F%2Fwww.shixiseng.com%2F&referrer=https%3A%2F%2Fwww.***.com%2F&uri=%2F&source=pc>---1
www.xxxx.com/user/action?event_type=load&curt_id=54c06304-2d8a-11e8-97ea-00163e131d5b&prev_id=42b3df23-dfea-4651-a86f-88ba92a4e42d&event_info=%7B%22ad_uuid%22%3A%22add_77mcl4cyo2uu%22%7D&event=ad_exposure&target=%2Fcom%2Fcom_qrf1ioxwhvxk&uuid=6e65a594-9034-97f3-ad00-b1e7a46d39ca&url=https%253A%2F%2Fwww.shixiseng.com%2F&referrer=https%3A%2F%2Fwww.***.com%2F&uri=%2F&source=pc>---1
www.xxxx.com/user/action?event_type=load&curt_id=d72ad59e-2dcc-11e8-97ea-00163e131d5b&prev_id=&event_info=%7B%22ad_uuid%22%3A%22add_5zj7701ibn7t%22%7D&event=ad_exposure&target=http%3A%2F%2Fcampus.51job.com%2Funiqlo%2F&uuid=f6878545-7dff-4c90-9ec4-d3f0b0be2cb7&url=https%253A%2F%2Fwww.shixiseng.com%2F&referrer=https%3A%2F%2Fwww.***.com%2F&uri=%2F&source=pc>---1
www.xxxx.com/user/action?event_type=load&curt_id=dc320a40-2dd5-11e8-86b1-00163e0e0af8&prev_id=&event_info=%7B%22ad_uuid%22%3A%22add_q5h0sozpfgsg%22%7D&event=ad_exposure&target=%2Fcom%2Fcom_ohgsahcs55rv&uuid=4d6eab5f-7e0a-da6c-a70a-75cacb5b8e2f&url=https%253A%2F%2Fwww.shixiseng.com%2F&referrer=https%3A%2F%2Fwww.***.com.hk%2F&uri=%2F&source=pc>1
www.xxxx.com/user/action?event_type=load&curt_id=0ae48218-2db9-11e8-99e6-00163e040372&prev_id=&event_info=%7B%22ad_uuid%22%3A%22add_trwgzad1tkva%22%7D&event=ad_exposure&target=http%3A%2F%2Fwww.shixiseng.com%2Ftc%2Frpo&uuid=21bf3ae9-d652-1e0a-867a-1f9c29660cd5&url=https%253A%2F%2Fwww.shixiseng.com%2F&referrer=https%3A%2F%2Fwww.***.com.hk%2F&uri=%2F&source=pc>1
Claims (4)
1.一种基于卷积特征和多重哈希映射的大数据URL去重方法,其特征在于,包括以下步骤:
步骤1:从WEB服务器上或传统WAF设备上提取WEB访问日志,然后筛选出要求的域名HOST和URL;将域名HOST和URL字符串进行拼接;
步骤2:对URL字段进行序列卷积和多哈希函数映射;
自定义一个包含一个数字串的卷积核,卷积核的数字序列任意确定一个,将每个需要去重的字符串按照映射表确定为一个数字序列,一次卷积操作的结果是对应数字相乘;定义一个步长,卷积核在数字序列上依次卷积能够产生很多卷积值;
设置哈希函数个数k、位数组大小m、加入的字符串数量n,在这个条件下出现哈希表误报的可能性为:
设置k的值为k=ln2*m/n,此时达到最低误报率:
依照上述公式依照预期的误报率确定要使用的哈希函数个数;
步骤3:卷积函数为f,使用k个哈希函数进行映射,哈希函数为h1,h2,h3,h4...hk,则卷积特征值和哈希函数映射值在BitSet中的二进制位赋值原理为:初始化一个m位的bit数组,卷积输出和每个哈希函数的输出都是一个(0,m-1)之间的一个数;输入x,对于每一个哈希函数,计算j=hi(x),将m_bit[j]设成1;同理,对于卷积函数每一次卷积操作,计算c=f(x),将m_bit[c]设成1;
步骤4:根据赋值后的BitSet,作为URL的关键字或者标签,进而识别独立URL。
2.如权利要求1所述的基于卷积特征和多重哈希映射的大数据URL去重方法,其特征在于,所述步骤1具体为:
1)过滤掉WAF日志中的多余字段;
2)使用脚本进行标签匹配,过滤静态文件和不符合要求状态码的URL;
3)将域名HOST和URL字符串进行拼接,导出。
3.如权利要求2所述的基于卷积特征和多重哈希映射的大数据URL去重方法,其特征在于,在步骤1中“过滤掉WAF日志中的多余字段”使用scala语言中的filter方法进行过滤,即首先使用scala中的split方法将每条日志按空格符进行分割,随后自定义一个filter方法,其中包含想要过滤的规则。
4.如权利要求3所述的基于卷积特征和多重哈希映射的大数据URL去重方法,其特征在于,在域名HOST和URL字符串进行拼接时,使用scala内置的字符串组合方法“+”进行拼接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810562678.7A CN108874941B (zh) | 2018-06-04 | 2018-06-04 | 基于卷积特征和多重哈希映射的大数据url去重方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810562678.7A CN108874941B (zh) | 2018-06-04 | 2018-06-04 | 基于卷积特征和多重哈希映射的大数据url去重方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874941A CN108874941A (zh) | 2018-11-23 |
CN108874941B true CN108874941B (zh) | 2021-09-21 |
Family
ID=64335996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810562678.7A Active CN108874941B (zh) | 2018-06-04 | 2018-06-04 | 基于卷积特征和多重哈希映射的大数据url去重方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874941B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334251B (zh) * | 2019-07-01 | 2021-10-19 | 南京邮电大学 | 一种有效解决rehash冲突的元素序列生成方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958883A (zh) * | 2010-03-26 | 2011-01-26 | 湘潭大学 | 一种基于Bloom Filter和开源内核防御SYN Flood攻击的方法 |
CN103106219A (zh) * | 2011-11-15 | 2013-05-15 | 盛乐信息技术(上海)有限公司 | 一种网页抓取方法及*** |
CN104657350A (zh) * | 2015-03-04 | 2015-05-27 | 中国科学院自动化研究所 | 融合隐式语义特征的短文本哈希学习方法 |
CN104809182A (zh) * | 2015-04-17 | 2015-07-29 | 东南大学 | 基于动态可***Bloom Filter的网络爬虫URL去重方法 |
CN105956068A (zh) * | 2016-04-27 | 2016-09-21 | 湖南蚁坊软件有限公司 | 基于分布式数据库的网页url去重方法 |
CN106295629A (zh) * | 2016-07-15 | 2017-01-04 | 北京市商汤科技开发有限公司 | 结构化文本检测方法和*** |
CN106599022A (zh) * | 2016-11-01 | 2017-04-26 | 中山大学 | 基于用户访问数据的用户画像形成方法 |
CN107832476A (zh) * | 2017-12-01 | 2018-03-23 | 北京百度网讯科技有限公司 | 一种搜索序列的理解方法、装置、设备和存储介质 |
CN107871014A (zh) * | 2017-11-23 | 2018-04-03 | 清华大学 | 一种基于深度融合哈希的大数据跨模态检索方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8626474B2 (en) * | 2010-04-19 | 2014-01-07 | Altera Corporation | Simulation tool for high-speed communications links |
-
2018
- 2018-06-04 CN CN201810562678.7A patent/CN108874941B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958883A (zh) * | 2010-03-26 | 2011-01-26 | 湘潭大学 | 一种基于Bloom Filter和开源内核防御SYN Flood攻击的方法 |
CN103106219A (zh) * | 2011-11-15 | 2013-05-15 | 盛乐信息技术(上海)有限公司 | 一种网页抓取方法及*** |
CN104657350A (zh) * | 2015-03-04 | 2015-05-27 | 中国科学院自动化研究所 | 融合隐式语义特征的短文本哈希学习方法 |
CN104809182A (zh) * | 2015-04-17 | 2015-07-29 | 东南大学 | 基于动态可***Bloom Filter的网络爬虫URL去重方法 |
CN105956068A (zh) * | 2016-04-27 | 2016-09-21 | 湖南蚁坊软件有限公司 | 基于分布式数据库的网页url去重方法 |
CN106295629A (zh) * | 2016-07-15 | 2017-01-04 | 北京市商汤科技开发有限公司 | 结构化文本检测方法和*** |
CN106599022A (zh) * | 2016-11-01 | 2017-04-26 | 中山大学 | 基于用户访问数据的用户画像形成方法 |
CN107871014A (zh) * | 2017-11-23 | 2018-04-03 | 清华大学 | 一种基于深度融合哈希的大数据跨模态检索方法及*** |
CN107832476A (zh) * | 2017-12-01 | 2018-03-23 | 北京百度网讯科技有限公司 | 一种搜索序列的理解方法、装置、设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
BloomFilter 确定合适的 k(hash函数个数) 值;F_URY;《https://blog.csdn.net/u012400327/article/details/62222922》;20170315;第1页 * |
Character-level Convolutional Networks for Text Classification;Xiang Zhang 等;《arXiv:1509.01626v3》;20160404;第2-4页第2部分 * |
网络爬虫技术在云平台上的研究与实现;刘小云;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170215(第02期);第18-21页第3.3.2节 * |
Also Published As
Publication number | Publication date |
---|---|
CN108874941A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10579831B2 (en) | Verification of data set components using digitally signed probabilistic data structures | |
US8380680B2 (en) | Piecemeal list prefetch | |
CN110162750B (zh) | 文本相似度检测方法、电子设备及计算机可读存储介质 | |
US10216848B2 (en) | Method and system for recommending cloud websites based on terminal access statistics | |
US10078687B2 (en) | Deletion of elements from a probabilistic data structure | |
CN105975459B (zh) | 一种词项的权重标注方法和装置 | |
WO2020228182A1 (zh) | 基于大数据的数据去重的方法、装置、设备及存储介质 | |
US10263784B2 (en) | Signature verification for data set components using probabilistic data structures | |
WO2017036348A1 (zh) | 一种可扩展标记语言xml文档的压缩、解压方法和装置 | |
CN110750731B (zh) | 针对新闻舆情的去重方法及*** | |
JP2017532655A (ja) | カスケーディングスタイルシートファイルの圧縮 | |
CN104065736A (zh) | 一种url重定向方法、装置及*** | |
US20140325327A1 (en) | Replacing problem web links using context information | |
CN111563199A (zh) | 一种数据处理方法及装置 | |
US20210109945A1 (en) | Self-orchestrated system for extraction, analysis, and presentation of entity data | |
CN108874941B (zh) | 基于卷积特征和多重哈希映射的大数据url去重方法 | |
CN112765966B (zh) | 联想词去重方法及装置、计算机可读存储介质和电子设备 | |
CN103618742A (zh) | 获取子域名的方法和***以及网站管理员权限验证方法 | |
US20140129543A1 (en) | Search service including indexing text containing numbers in part using one or more number index structures | |
CN104361094A (zh) | 搜索结果中文件的保存方法、装置和浏览器客户端 | |
CN115080684B (zh) | 网盘文档索引方法、装置、网盘及存储介质 | |
US20190354455A1 (en) | Skew detector for data storage system | |
US11593824B2 (en) | System and method for domain name valuation | |
CA2997922C (en) | Deletion of elements from a bloom filter | |
CN110737748B (zh) | 一种文本去重方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 9/F, Block C, No. 28 Tianfu Avenue North Section, Chengdu High tech Zone, China (Sichuan) Pilot Free Trade Zone, Chengdu City, Sichuan Province, 610000 Patentee after: CHENGDU KNOWNSEC INFORMATION TECHNOLOGY Co.,Ltd. Address before: 610000, 11th floor, building 2, No. 219, Tianfu Third Street, hi tech Zone, Chengdu, Sichuan Province Patentee before: CHENGDU KNOWNSEC INFORMATION TECHNOLOGY Co.,Ltd. |