实验报告:运用shingling+minhash+lsh方法对文档相似性进行分析

实验报告

实验名称:文档相似性分析

一、实验目的

1.学习利用hadoop处理大数据。

2. 通过实验加强mapreduce编程能力。 

3. 进一步理解shingling+minhash+lsh方法。

 

二、实验内容

1.安装vmware、hadoop、centos操作系统。

2. 使用给定的数据集,完成对文档相似性分析的实验任务。

三、实验环境

centos操作系统、eclipse 

四、实验原理

4.1 shingling

在一堆非常多的文档中,找到相似的文档,或者对文档间的相似性进行评估。

当应用于此类目的的时候,我们最常用的用来表示一篇文档的方法是:shingling。

1. k-shingles

     可以把一篇文档看成一个字符串。那么一篇文档的k-shingle就是在这篇文档中出过现的任何长度为k的字符串。k-shingles就是该篇文档所有k-shingle的集合,在进行处理之前需要去掉文档中不必要的标点符号和多余的空格、换行。那么k的大小决定于什么因素呢? 与文档的长度和所有的字符个数有关。k的取值一般要满足一个规则:k的取值应该能够满足,任何一个给定的shingle出现在任何给定的文档中的概率都非常低。一般对于邮件类的文档,k取值为5是最为合适的。假设在邮件中一般只会出现字母字符和空格字符。那么将会有27^5=14,348,907个可能的shingles。而一般的Email的字符长度会远小于14million。而在实际的测试中k=5也确实是表现的非常好。而对于长文档,如研究论文等k取9是一个安全的取值。

2. Hashing Shingles

     我们可以选择一个hash函数来将k-shingle映射成为数值,这样对文档的表示形式就是一群整数的集合。

4.2 保持相似度的集合摘要(MinHashing)

   可以发现,文档的shingles集合是非常大的,尽管我们用hash将其映射为4byte或者更大的整数。假设我们有上百万的文档,那么内存中就会放不下这些shingles的集合。

     我们的目标就是把大数据量的shingles集合变换为非常小的代表(称之为签名)。而且这样的签名应该有这样的性质: 能够很容易的对两个签名集合进行比较,并且能够较简单的计算两个签名集合的jaccard距离;而且,签名集合计算出来的的相似度(jaccard距离)应该和实际的相差不大,签名集合越大

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值