如果我们需要在海量的结构未知的网页库中找到和指定的网页相似度比较高的一些网页,我们该怎么办呢?本文提出的“一种通用的网页相似度检测算法”就是专门解决这个问题。
算法如下:
1、提取网页文本。这个提取步骤不要求精确,也没办法精确,因为你面对的是未知结构的网页,所以只需要提取去掉标签之后的文本即可。
2、对提取的文本进行分词。我们使用开源的中文分词组件word分词。
3、为每一个网页建立一个词向量,向量的维度就是两个网页的不重复词的并集,每一个维度的权重就是词频TF,我们这里忽略IDF也不影响。
4、计算词向量的余弦相似度或简单共有词。
5、相似度分值超过0.5的基本上可以视为这两个网页拥有相同的内容。
算法的实现代码来自本人的rank项目:
我的ITEYE(http://yangshangchuan.iteye.com)和OSCHINA(http://my.oschina.net/apdplat/blog)博客有很多同样的博文,主要目的是备份,这里刚好用来测试相似度检测算法的效果,从测试效果来看,相似度分值低于0.5的两篇博文,一篇是由于正文内容太少,不足以抵消干扰信息,另一篇是由于博文不是完整的内容,具体两种相似度判定情况如下所示:
判定相似性的方式一:简单共有词
检查的博文数:103,相似度大于等于0.5的博文数:103,相似度小于0.5的博文数:0
1、检查博文:一个月的时间让你的词汇量翻一翻,相似度分值:0.99
博文地址1:http://my.oschina.net/apdplat/blog/379303
博文地址2:http://yangshangchuan.iteye.com/blog/2186301
2、检查博文:1208个合成词,相似度分值:0.99
博文地址1:http://my.oschina.net/apdplat/blog/393724
博文地址2:http://yangshangchuan.iteye.com/blog/2197556
3、检查博文:分析996个词根在各大考纲词汇中的作用(五)总结精选篇,相似度分值:0.99
博文地址1:http://my.oschina.net/apdplat/blog/391865
博文地址2:http://yangshangchuan.iteye.com/blog/2195991
4、检查博文:根据76大细分词性对单词进行归组(二),相似度分值:0.99
博文地址1:http://my.oschina.net/apdplat/blog/393774
博文地址2:http://yangshangchuan.iteye.com/blog/2197877
5、检查博文:根据76大细分词性对单词进行归组(一),相似度分值:0.99
博文地址1:http://my.oschina.net/apdplat/blog/393771
博文地址2:http://yangshangchuan.iteye.com/blog/2197874
6、检查博文:2000个软件开发领域的高频特殊词及精选例句(一),相似度分值:0.99
博文地址1:http://my.oschina.net/apdplat/blog/389200
博文地址2:http://yangshangchuan.iteye.com/blog/2195665
7、检查博文:JDK源代码中最重要的4646个英语单词,相似度分值:0.98
博文地址1:http://my.oschina.net/apdplat/blog/390915
博文地址2:http://yangshangchuan.iteye.com/blog/2195664
8、检查博文:利用1189个精选句子彻底掌握2190个单词,相似度分值:0.98
博文地址1:http://my.oschina.net/apdplat/blog/394941
博文地址2:http://yangshangchuan.iteye.com/blog/2199287
9、检查博文:词组习语3054组,相似度分值:0.97
博文地址1:http://my.oschina.net/apdplat/blog/393374
博文地址2:http://yangshangchuan.iteye.com/blog/2197555
10、检查博文:英语单词后缀规则总结,相似度分值:0.97
博文地址1:http://my.oschina.net/apdplat/blog/379330
博文地址2:http://yangshangchuan.iteye.com/blog/2186326
11、检查博文:英语单词音近形似转化规律研究,相似度分值:0.97
博文地址1:http://my.oschina.net/apdplat/blog/378569
博文地址2:http://yangshangchuan.iteye.com/blog/2186300
12、检查博文:英语单词前缀规则总结,相似度分值:0.96
博文地址1:http://my.oschina.net/apdplat/blog/378753
博文地址2:http://yangshangchuan.iteye.com/blog/2186327
13、检查博文:192本软件著作用词分析(五)用词最复杂99级,相似度分值:0.95
博文地址1:http://my.oschina.net/apdplat/blog/388816
博文地址2:http://yangshangchuan.iteye.com/blog/2194214
14、检查博文:分析151个后缀在各大考纲词汇中的作用(三)总结精选篇,相似度分值:0.95
博文地址1:http://my.oschina.net/apdplat/blog/392466
博文地址2:http://yangshangchuan.iteye.com/blog/2196690
15、检查博文:二百多部软件著作中最重要的9224个英语单词,相似度分值:0.94
博文地址1:http://my.oschina.net/apdplat/blog/391023
博文地址2:http://yangshangchuan.iteye.com/blog/2195559
16、检查博文:JDK源代码以及200多部软件著作中出现的以连字符构造的1011个合成词,相似度分值:0.94
博文地址1:http://my.oschina.net/apdplat/blog/394495
博文地址2:http://yangshangchuan.iteye.com/blog/2199283
17、检查博文:分析在各大考纲词汇中既没有词根也没有前缀和后缀的独立单词,相似度分值:0.94
博文地址1:http://my.oschina.net/apdplat/blog/392483
博文地址2:http://yangshangchuan.iteye.com/blog/2196691
18、检查博文:分析113个前缀在各大考纲词汇中的作用(二)总结精选篇,相似度分值:0.94
博文地址1:http://my.oschina.net/apdplat/blog/392456
博文地址2:http://yangshangchuan.iteye.com/blog/2195996
19、检查博文:OSCHINA博文抄袭检查,相似度分值:0.94
博文地址1:http://my.oschina.net/apdplat/blog/396414
博文地址2:http://yangshangchuan.iteye.com/blog/2200451
20、检查博文:ITEYE博文抄袭检查,相似度分值:0.93
博文地址1:http://my.oschina.net/apdplat/blog/396411
博文地址2:http://yangshangchuan.iteye.com/blog/2199536
21、检查博文:一种防止用户生成内容站点出现商业广告以及非法有害等垃圾信息的方法,相似度分值:0.92
博文地址1:http://my.oschina.net/apdplat/blog/398338
博文地址2:http://yangshangchuan.iteye.com/blog/2200810
22、检查博文:分析在各大考纲词汇中同时拥有前缀后缀和词根的词(一),相似度分值:0.91
博文地址1:http://my.oschina.net/apdplat/blog/392490
博文地址2:http://yangshangchuan.iteye.com/blog/2198571
23、检查博文:软件业的奥斯卡奖:JOLT奖 之 最好的书,相似度分值:0.9
博文地址1:http://my.oschina.net/apdplat/blog/395681
博文地址2:http://yangshangchuan.iteye.com/blog/1837328
24、检查博文:计算ITEYE博文在百度的收录与排名情况,相似度分值:0.87
博文地址1:http://my.oschina.net/apdplat/blog/395970
博文地址2:http://yangshangchuan.iteye.com/blog/2199419
25、检查博文:APDPlat中数据库备份恢复的设计与实现,相似度分值:0.84
博文地址1:http://my.oschina.net/apdplat/blog/196912
博文地址2:http://yangshangchuan.iteye.com/blog/2010680
26、检查博文:中文分词算法 之 基于词典的逆向最大匹配算法,相似度分值:0.84
博文地址1:http://my.oschina.net/apdplat/blog/210427
博文地址2:http://yangshangchuan.iteye.com/blog/2033843
27、检查博文:Java中文分词组件 - word分词,相似度分值:0.84
博文地址1:http://my.oschina.net/apdplat/blog/228619
博文地址2:http://yangshangchuan.iteye.com/blog/2056959
28、检查博文:网络爬虫面临的挑战 之 链接构造,相似度分值:0.84
博文地址1:http://my.oschina.net/apdplat/blog/208716
博文地址2:http://yangshangchuan.iteye.com/blog/2031642
29、检查博文:APDPlat中的用户密码安全策略,相似度分值:0.83
博文地址1:http://my.oschina.net/apdplat/blog/207124
博文地址2:http://yangshangchuan.iteye.com/blog/2029367
30、检查博文:Hadoop发行版的比较与选择,相似度分值:0.81
博文地址1:http://my.oschina.net/apdplat/blog/397625
博文地址2:http://yangshangchuan.iteye.com/blog/1972846
31、检查博文:APDPlat拓展搜索之集成ElasticSearch,相似度分值:0.81
博文地址1:http://my.oschina.net/apdplat/blog/197012
博文地址2:http://yangshangchuan.iteye.com/blog/2010755
32、检查博文:大数据系列11:Gora – 大数据持久化,相似度分值:0.81
博文地址1:http://my.oschina.net/apdplat/blog/396684
博文地址2:http://yangshangchuan.iteye.com/blog/1953733
33、检查博文:APDPlat拓展搜索之集成Solr,相似度分值:0.81
博文地址1:http://my.oschina.net/apdplat/blog/197020
博文地址2:http://yangshangchuan.iteye.com/blog/2010760
34、检查博文:APDPlat如何自动建库建表并初始化数据?,相似度分值:0.8
博文地址1:http://my.oschina.net/apdplat/blog/197703
博文地址2:http://yangshangchuan.iteye.com/blog/2012220
35、检查博文:中文分词算法 之 基于词典的正向最大匹配算法,相似度分值:0.8
博文地址1:http://my.oschina.net/apdplat/blog/209211
博文地址2:http://yangshangchuan.iteye.com/blog/2031813