关于文本相似度计算-jaccardsimilarity和哈希签名函数

关于文本相似度计算-jaccardsimilarity和哈希签名函数

ID:32677755

大小:59.43 KB

页数:11页

时间:2019-02-14

关于文本相似度计算-jaccardsimilarity和哈希签名函数_第1页
关于文本相似度计算-jaccardsimilarity和哈希签名函数_第2页
关于文本相似度计算-jaccardsimilarity和哈希签名函数_第3页
关于文本相似度计算-jaccardsimilarity和哈希签名函数_第4页
关于文本相似度计算-jaccardsimilarity和哈希签名函数_第5页
资源描述:

《关于文本相似度计算-jaccardsimilarity和哈希签名函数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、关于文本相似度计算-JaccardSimilarity和哈希签名函数在目前这个信息过载的星球上,文本的相似度计算应用前景还是比较广泛的,他可以让人们过滤掉很多相似的新闻,比如在搜索引擎上,相似度太高的页面,只需要展示一个就行了,还有就是,考试的时候,可以用这个来防作弊,同样的,论文的相似度检查也是一个检查论文是否抄袭的一个重要办法。文本相似度计算的应用场景•过滤相似度很高的新闻,或者网页去重・考试防作弊系统•论文抄袭检查光第一项的应用就非常广泛。文本相似度计算的基本方法文本相似度计算的方法很多,主耍来说有两种,一是余弦定律,二是JaccardSimila

2、rity方法,余弦定律不在木文的讨论范围之内,我们主要说一下JaccardSimilarity方法。JaccardSimilarity方法JaccardSimilarity说起来非常简单,容易实现,实际上就是两个集合的交集除以两个集合的并集,所得的就是两个集合的相似度,直观的看就是下面这个图。数学表达式是:SnT

3、/

4、SUT

5、恩,基本的计算方法就是如此,而两个集合分别表示的是两个文本,集合中的元素实际上就是文本中出现的词语啦,我们需要做的就是把两个文本中的词语统计出来,然后按照上面的公式算一下就行了,其实很简单。统计文本中的词语关于统计文本中的词语,可以

6、参考我的另外一篇博文一种没有语料字典的分词方法,文章中详细说明了如何从一篇文本中捉取有价值的词汇,感兴趣的童鞋可以看看。当然,本篇博客主要是说计算相似度的,所以词语的统计使用的比较简单的算法k-shingle算法,k是一个变量,表示提取文本中的k个字符,这个k可以自己定义。简单的说,该算法就是从头挨个扫描文本,然后依次把k个字符保存起來,比如有个文本,内容是abcdefg,k设为2,那得到的词语就是ab,be,cd,de,ef,fgo得到这些词汇以后,然后统计每个词汇的数量,最后用上面的JaccardSimilarity算法来计算相似度。具体的简单代码如

7、下:[python]viewplaincopyprint?name_list二["/Users/wuyinghao/Documents/testl.txt”,2.'VUsers/wuyinghao/Documents/test2

8、Jfile_name])9.10-11>forindexl’vlinenumerate(hash_contents):12.forindex2,v2inenumerate(hash_contents):13.if(vl[l]!=v2[l]andindex2>indexl):14•intersection=calclntersection(vl[0]v2[0])#计算交集15・union_set二calcLInionSet(vl[0],v2[0]’intersection)#计算并集16.printvl[l]+"

9、

10、

11、

12、

13、

14、H+v2[l]+"similar

15、ityis:"+str(calcSimilarity(intersection,union_set))#计算相似度完整的代码可以看我的GitHub如何优化上述代码其实可以完成文本比较了,但是如果是大量文本或者单个文本内容较大,比较的时候势必占用了大量的存储空间,因为一个词汇表的存储空间大于文本本身的存储空间,这样,我们需要进行一下优化,如何优化呢,我们按照以下两个步骤来优化。将词汇表进行hash首先,我们将词汇表进行hash运算,把词汇表屮的每个词汇hash成一个整数,这样存储空间就会大大降低了,至于hash的算法,网上有很多,大家可以查查最小完美哈希,

16、由于我这里只是为了验证整套算法的可行性,在python中,直接用了字典和数组,将每个词汇变成了一个整数。比如上面说的abcdefg的词汇ab,be,cd,de,ef,fg,分别变成了[0,1,2,3,4,5]使用特征矩阵来描述相似度何为文本相似度的特征矩阵,我们可以这么来定义•一个特征矩阵的任何一行是全局所有元素中的一个元素,任何一列是一个集合。•若全局第i个元索出现在第j个集合里而,元素(i,j)为1,否则为0o比如我们有world和could两个文本,设k为2通过k-shingle拆分以后,分别变成了[wo,or,rl,Id]和[co,ou,ul,I

17、d]那么他们的特征矩阵就是词汇表集合1(world)集毛W010or10rl10

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。