# 문자열 분리해서 다중 집합 만드는 Word_Set
def Word_Set(w):
arr=[]
for i in range(len(w)-1):
if (w[i].isalpha() and w[i+1].isalpha()):
arr.append(w[i].upper()+w[i+1].upper())
return arr
# 다중 교집합 구하는 Multi_Intersect
def Mul_Intersect(a,b):
inter=[i for i in a if (i in b)]
return inter
# 다중 합집합 구하는 Mul_Union
def Mul_Union(a,b):
unio=a+b
for i in Mul_Intersect(a,b):
unio.remove(i)
return unio
# 자카드 유사도 출력하는 함수 Jaccard()
def Jaccard(s1,s2):
import math
Num_Arrange=65536
# 입력 문자열 크기 예외처리
if (len(s1) not in range(2,1001)) or (len(s2) not in range(2,1001)) :
return " 입력 가능한 문자열 길이: 2 ~ 1000 "
try:
a1=Word_Set(s1)
a2=Word_Set(s2)
b1=Mul_Intersect(a1,a2)
b2=Mul_Union(a1,a2)
J=len(b1)/len(b2)
# 합집합이 0일경우 예외처리
except ZeroDivisixxxxxxxxonError:
J=1
return math.floor(J*Num_Arrange)
첫댓글