文件相似性判断 -- SimHash

最近调研了一下simhash算法,它主要用在谷歌网页去重中,网上有很多原理性的介绍。既然可以用来判断文件的相似性,就想知道效果怎么样,simhash的精确度是否依赖于分词算法?是否和simhash的长度有关?

在数据去重过程中,都是先对文件进行分块,而后得到关于这个文件的所有指纹(SHA-1 digest),那么如果把这些fingerprints视为这个文件的单词,作为simhash的输入,效果会如何呢?接下来自己做了一个简单的测试,测试文件由自己构建的,下表是统计数据,F是基准文件,貌似效果没有那么明显。(其中243/27/27 表示两个文件有243个相同的指纹块(交集), 27是各自拥有的不同的块)

接下来会借用一些分词算法对文件分词后再获得对应的simhash值,与上述情况作对比。

文件相似性判断 -- SimHash,布布扣,bubuko.com

时间: 2024-10-07 02:43:24

文件相似性判断 -- SimHash的相关文章

文件相似性判断 -- 超级特征值(super feature)

基于内容的变长分块(CDC)技术,可以用来对文件进行变长分块,而后用来进行重复性检测,广泛用于去重系统中.后来又出现了对相似数据块进行delta压缩,进一步节省存储开销.所以就需要一种高效的相似性检测算法,在论文 WAN Optimized Replication of Backup Datasets Using Stream-Informed Delta Compression 提出的super-features 算法具有很好的效果.主要思想是在滑动窗口进行分块的过程中,通过一个窗口的rabi

程序相似性判断

一.问题分析 基本任务: 对于两个C语言的源程序清单,用哈希表的方法分别统计两程序中使用C语言关键字的情况,并最终按定量的计算结果,得出两份源程序清单的相似性. 任务要求: C语言关键字的Hash表可以自建,也可以如实现提示中那样构建.此题的主要工作是扫描给定的源程序,累计在每个源程序中C语言关键字出现的频度.在扫描源程序过程中,每遇到关键字就查找Hash表,并累加相应关键字出现的频度.为保证查找效率,建议Hash表的平均查找长度ASL不大于2. 二.程序设计 解决方案: 本程序根据要求和实现提

java中图片文件的判断

javax.imageio 类 ImageIO BufferedImage bi = ImageIO.read(resFile);//resFile --- InputStream if(bi == null){ System.out.println(此文件不为图片文件); } try {//判断是否为图片文件并且返回图片的格式! ImageInputStream iis = ImageIO.createImageInputStream(o); // Find all image readers

通过读取文件头部判断是否为CSV格式文件

通过读取文件头部判断是否为CSV格式文件 通过读取CSV文件头,判断文件是是否属于CSV文件类型,一般而言仅仅只是通过文件后缀来判断该文件所属的类型,这样是不合理的,只要更改一下文件后缀就无法识别这个文件到底是不是正确的文件格式,把可执行的文件后缀改为.CSV如果是通过判断文件后缀来识别文件类型,这样肯定是行不通的,因为exe的文件格式肯定不是CSV的格式,如果提前判断出这个文件头的这样就能定位这个文件是不是我们所需要的文件类型,避免对错误的文件进行解析.同样也可以在某种程度上保护服务器的安全.

海量文件查重SimHash和Minhash

SimHash 事实上,传统比较两个文本相似性的方法,大多是将文本分词之后,转化为特征向量距离的度量,比如常见的欧氏距离.海明距离或者余弦角度等等.两两比较固然能很好地适应,但这种方法的一个最大的缺点就是,无法将其扩展到海量数据.例如,试想像Google那种收录了数以几十亿互联网信息的大型搜索引擎,每天都会通过爬虫的方式为自己的索引库新增的数百万网页,如果待收录每一条数据都去和网页库里面的每条记录算一下余弦角度,其计算量是相当恐怖的. 我们考虑采用为每一个web文档通过hash的方式生成一个指纹

C#根据文件流判断文件类型

判断文件真实的类型,不是通过扩展名来判断: /// <summary> /// 判断文件格式 /// http://www.cnblogs.com/babycool /// </summary> /// <param name="filePath"></param> /// <returns></returns> public static bool IsAllowedExtension(string filePa

上传txt文件编码格式判断(文本乱码解决方法)

说明 通过ajax或者浏览上传文本文件,上传时候c#处理时候因为文本格式的创建不同,在获取内容时候会出现中文乱码. 解决方法 通过上传的文件流,判断文件的编码格式,在使用对应的编码格式获取文本内容 #region 通过给定的文件流,判断文件的编码类型        /// <summary>        /// 通过给定的文件流,判断文件的编码类型        /// </summary>        /// <param name=“fs“>文件流</pa

iOS文件类型判断

最近在做的东西有下载zip,只是服务器发送过来的是二进制,需要根据二进制来判断是什么类型的文件,从而进行保存操作.起初很不理解,到后来发现可以通过二进制的前2位的ascii码来进行判断.如下: // 255216 jpg;        // 7173 gif;        // 6677 bmp,        // 13780 png;        // 6787 swf        // 7790 exe dll,        // 8297 rar        // 8075

C++ 遍历目录所有文件并判断是否为目录

1. 思路 使用FindFirstFile.FindNextFile函数,来遍历目录.结果保存在WIN32_FIND_DATA结构体中.将查询结果的dwFileAttributes和FILE_ATTRIBUTE_DIRECTORY取与操作,判断是否为目录. 2. 示例代码 #include <iostream> #include <stdio.h> #include <windows.h> using namespace std; int main() { HANDLE