def LCS(x,y):
import numpy as np
c=np.zeros((len(x)+1,len(y)+1))
b=np.zeros((len(x)+1,len(y)+1))
for i in range(1,len(x)+1):
for j in range(1,len(y)+1):
if x[i-1]==y[j-1]:
c[i,j]=c[i-1,j-1]+1
b[i,j]=2
else:
if c[i-1,j]>=c[i,j-1]:
c[i,j]=c[i-1,j]
b[i,j]=1
else:
c[i,j]=c[i,j-1]
b[i,j]=3
return c,b
def getLCS(x,y):
c,b=LCS(x,y)
i=len(x)
j=len(y)
lcs=''
while i>0 and j>0:
if b[i][j]==2:
lcs=x[i-1]+lcs
i-=1
j-=1
if b[i][j]==1:
i-=1
if b[i][j]==3:
j-=1
if b[i][j]==0:
break
return lcs
print(getLCS("Hello World" , "Hello-World!"))
def LCSsimilarity(entity,matchList,case_sensitive=False):
result_list = []
for match_entity in matchList:
if case_sensitive:
LCSchars = getLCS(entity,match_entity)
else:
LCSchars = getLCS(lower(entity),lower(match_entity))
score = len(LCSchars)/ (len(entity)+ (len(match_entity)- len(LCSchars)) )
result_list.append([entity,match_entity,LCSchars, round( score ,3) ])
result_list = sorted(result_list, key=lambda x:-x[-1])
return result_list
-
Notifications
You must be signed in to change notification settings - Fork 0
vvhanxing/TXTtool
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published