def __levenshtein_ratio()

in src/dfcx_scrapi/tools/levenshtein.py [0:0]


    def __levenshtein_ratio(s: str, t: str) -> float:
        """Calculates levenshtein distance between two strings."""
        rows = len(s)+1
        cols = len(t)+1
        distance = np.zeros((rows,cols),dtype = int)

        for i in range(1, rows):
            for k in range(1,cols):
                distance[i][0] = i
                distance[0][k] = k

        for col in range(1, cols):
            for row in range(1, rows):
                if s[row-1] == t[col-1]:
                    cost = 0
                else:
                    cost = 2

                distance[row][col] =  min(
                    distance[row-1][col] + 1,
                    distance[row][col-1] + 1,
                    distance[row-1][col-1] + cost
                )

        # Computation of the Levenshtein Distance Ratio
        ratio = ((len(s)+len(t)) - distance[row][col]) / (len(s)+len(t))
        return ratio