normalized_levenshtein.py 754 B

12345678910111213141516171819202122232425
  1. from .string_distance import NormalizedStringDistance
  2. from .string_similarity import NormalizedStringSimilarity
  3. from .levenshtein import Levenshtein
  4. class NormalizedLevenshtein(NormalizedStringDistance, NormalizedStringSimilarity):
  5. def __init__(self):
  6. self.levenshtein = Levenshtein()
  7. def distance(self, s0, s1):
  8. if s0 is None:
  9. raise TypeError("Argument s0 is NoneType.")
  10. if s1 is None:
  11. raise TypeError("Argument s1 is NoneType.")
  12. if s0 == s1:
  13. return 0.0
  14. m_len = max(len(s0), len(s1))
  15. if m_len == 0:
  16. return 0.0
  17. return self.levenshtein.distance(s0, s1) / m_len
  18. def similarity(self, s0, s1):
  19. return 1.0 - self.distance(s0, s1)