论文查重算法 python,python文本相似度分析
这篇文章主要为大家介绍了大蟒文本相似性计算签名源码来实现论文的查重,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
场景:
1.计算签名值,及加重平均距离。
2.签名适用于较长文本(大于三五百字)的相似性比较,文本越短误判率越高。
Python实现:
代码如下
# -*-编码:utf-8 -*-
导入数学
进口洁霸
进口解霸
类SimHash(对象):
def getBinStr(self,source):
if source==:
返回0
else:
x=ord(source[0]) 7
m=1000003
掩码=2 ** 128 - 1
对于来源:中的c
x=((x * m) ^阶数(c))掩码
十. ^=莱恩(资料来源)
如果x==-1:
x=-2
x=bin(x).替换( 0b , ).zfill(64)[-64:]
返回字符串(十)
定义获取重量(自身,来源):
退货单(来源)
def unwrap_weight(self,arr):
ret=
对于arr:中的项目
tmp=0
if int(item) 0:
tmp=1
ret=str(tmp)
返回浸水使柔软
def sim_hash(self,rawstr):
seg=jieba.cut(rawstr)
关键词=解霸。分析一下。extract _ tags( )。join(seg),topK=100,Weight=True)
ret=[]
对于关键字,权重为关键字:
binstr=self.getBinStr(关键字)
keylist=[]
对于binstr:中的c
权重=math.ceil(权重)
如果c==1 :
keylist.append(int(weight))
else:
keylist.append(-int(weight))
ret.append(键列表)
# 降维
行数=长度(退休)
cols=len(ret[0])
结果=[]
对于范围内的我(列):
tmp=0
对于范围(行):中的j
tmp=int(ret[j][i])
如果tmp 0:
tmp=1
elif tmp=0:
tmp="0 "
结果附加(tmp)
返回""。连接(结果)
def distince(self,hashstr1,hashstr2):
长度=0
对于索引,char in enumerate(hashstr1):
if char==hashstr2[index]:
继续
else:
长度=1
返回长度
if __name__==__main__:
simhash=SimHash()
str1=咱哥俩谁跟谁啊
str2=咱们俩谁跟谁啊
hash1=simhash.sim_hash(str1)
打印(哈希1)
hash2=simhash.sim_hash(str2)
distince=sim哈希。distince(has h1,hash2)
值=5
print(simhash ,distince,距离:,值,是否相似:,distince=value)
以上就是论文查重大蟒文本相似性计算签名源码的详细内容,更多关于大蟒文本相似性计算签名的资料请关注盛行信息技术软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。