搜索引擎-----浅说查重
现在网络上重复的信息很多,用户敲入一个关键字进行搜索时,总会出来很多重复或者很相似的网页,这是搜索引擎不愿意看到的,也是用户不愿意看到的。那么,我们就需要对搜索出来的网页进行查重,然后去掉重复的网页,返回给用户的结果集里重复信息尽量少点!我们暂时只关心网页的内容,文字信息,忽略图片视频等多媒体信息,即是基于内容的查重研究,当然我仅仅是出于兴趣爱好,可能认识也比较浅,毕竟我水平也有限,记此文完全是心血来潮,自娱自乐,或许会碰见高人指点呢...
就省掉前戏了,直奔主题,虽然前戏很重要!不解释...
几乎所有去重技术都基于这个核心思想:为每个文档计算一组指纹,若2个文档有一定数量的相同指纹,那么我们认为这2个文档的内容重叠性很高,可以认为二者是内容转载的。
目前有很多去重方法,基于词频的,基于特征码的,基于标点符号的,基于内容的,基于摘要的等等。
下面2种办法都用到了分词,也可以说是基于分词的查重方法。
我之前用过基于词频的方法做过一些实验【基于词频的方法描述:2篇文档如果相似度很高,那么他们的词频,即文档中的词在全文出现的频率相差应该也不大,曾有人用这种统计学的方法证明了红楼梦前80回和后40回不是出自同一个作家,因为每个作家的用词习惯不同,描述一个事物的时候,也许不同的作家描述的方式不一样,看问题的角度不一样】 ,用这种方法效率还是蛮高的,实现起来也比较简单,对文档分词,然后统计词频,然后做比较。只是对于短小的文章它经常误判。把明明几乎重复的文档化为不同。所以这种方法欠稳定。
后来我借鉴一本书名为《数学之美》的一种方法,下面是在线阅读网址:www.bookfm.com/book/bookdetail.html 《数学之美和浪潮之巅》 吴军
谷歌新闻分类的方法,它运用了tf-idf的概念,这种方法我们姑且称之为,余弦定理及其tf-idf去重法。tf代表每个词的在文档中出现的频率,idf用log10 (D/Dw)求得,D代表文档库中所有的文档数,某词在Dw个文档中出现过。这种方法考虑了词的权重,文档中不是每个词都是很重要的,一个词在文档库中出现的次数越多,它越不重要,idf值越小,我们忽略idf很小的值,因为这次词在几乎所有的文档中都出现过,它们就显得不是很重要。然后,就用tf/idf作为那个向量的特征值,至于向量的长度由文档词库数决定,过滤掉那些权重较小的词。然后用余弦定理得到这2个向量的夹角,夹角为0说明这2篇文档重复,夹角越小说明这2篇文档相似度越高。我做过实验,当然这种方法效果很好,准确度高,实现也不是很麻烦,但是效率很低,要计算词频,要计算每个词在多少个文档中出想过,还得统计出所有的词,对每个文档都得做分词处理。所以在实践中这种方法不现实。代价太大了。也许对文档进行分词本身就不是一个好的方法,而且中文分词问题很多。分词本来就是一个难题。当然也许我们可以随机选取一些词,不一定要对每个词都做处理。
我想最理想的去重方法应该是:我们能用某种手段判断2篇文档的主旨,如果主旨一样,那么就可以判断它们是内容转载的,但我们如何教计算机分析一篇文章的主旨呢?计算机能用计算的方法(计算机最擅长计算)得到一篇文章的主旨么?我记得我高中语文做阅读理解题总是很差,我们语文老师教我们如何分析文章主旨,我现在怀疑到底有没有有效的方法得到文章主旨(文章每段最后一句?最后一段?)?反正高考语文就刚好及格而已! 计算机能做到么?