55from .string_similarity import NormalizedStringSimilarity
66
77
8- class Cosine (ShingleBased , NormalizedStringDistance , NormalizedStringSimilarity ):
8+ class Cosine (ShingleBased , NormalizedStringDistance ,
9+ NormalizedStringSimilarity ):
910
1011 def __init__ (self , k ):
1112 super ().__init__ (k )
@@ -24,10 +25,12 @@ def similarity(self, s0, s1):
2425 return 0.0
2526 profile0 = self .get_profile (s0 )
2627 profile1 = self .get_profile (s1 )
27- return self ._dot_product (profile0 , profile1 ) / (self ._norm (profile0 ) * self ._norm (profile1 ))
28+ return self ._dot_product (profile0 , profile1 ) / (
29+ self ._norm (profile0 ) * self ._norm (profile1 ))
2830
2931 def similarity_profiles (self , profile0 , profile1 ):
30- return self ._dot_product (profile0 , profile1 ) / (self ._norm (profile0 ) * self ._norm (profile1 ))
32+ return self ._dot_product (profile0 , profile1 ) / (
33+ self ._norm (profile0 ) * self ._norm (profile1 ))
3134
3235 @staticmethod
3336 def _dot_product (profile0 , profile1 ):
@@ -50,13 +53,3 @@ def _norm(profile):
5053 for k , v in profile .items ():
5154 agg += 1.0 * v * v
5255 return math .sqrt (agg )
53-
54-
55- if __name__ == "__main__" :
56- cosine = Cosine (1 )
57- str0 = "上海市宝山区 你好"
58- str1 = "上海浦东新区 你好吗"
59- d = cosine .distance (str0 , str1 )
60- s = cosine .similarity (str0 , str1 )
61- print (d )
62- print (s )
0 commit comments