deeppavlov/models/spelling_correction/levenshtein/levenshtein_searcher.py
def lower_transductions(self, word, max_cost, return_cost=True):
        """
        Возвращает все трансдукции с верхним элементом word,
        чья стоимость не превышает max_cost

    `   Возвращает:
        ----------
        result : list
            список вида [(трансдукция, стоимость)], если return_cost=True
            список трансдукций, если return_cost=False
            список отсортирован в порядке возрастания стоимости трансдукции
        """
        prefixes = [[] for i in range(len(word) + 1)]
        prefixes[0].append(((), 0.0))
        for pos in range(len(prefixes)):
            # вставки
            prefixes[pos] = self._perform_insertions(prefixes[pos], max_cost)
            max_upperside_length = min(len(word) - pos, self.max_up_length)
            for upperside_length in range(1, max_upperside_length + 1):
                up = word[pos: pos + upperside_length]
                for low, low_cost in self.operation_costs.get(up, dict()).items():
                    for transduction, cost in prefixes[pos]:
                        new_cost = cost + low_cost
                        if new_cost <= max_cost:
                            new_transduction = transduction +(up, low)
                            prefixes[pos + upperside_length].append((new_transduction, new_cost))
        answer = sorted(prefixes[-1], key=(lambda x: x[0]))
        if return_cost:
            return answer
        else:
            return [elem[0] for elem in answer]
def lower_transductions(self, word, max_cost, return_cost=True):
        """
        Возвращает все трансдукции с верхним элементом word,
        чья стоимость не превышает max_cost

    `   Возвращает:
        ----------
        result : list
            список вида [(трансдукция, стоимость)], если return_cost=True
            список трансдукций, если return_cost=False
            список отсортирован в порядке возрастания стоимости трансдукции
        """
        prefixes = [[] for i in range(len(word) + 1)]
        prefixes[0].append(((), 0.0))
        for pos in range(len(prefixes)):
            # вставки
            prefixes[pos] = self._perform_insertions(prefixes[pos], max_cost)
            max_upperside_length = min(len(word) - pos, self.max_up_length)
            for upperside_length in range(1, max_upperside_length + 1):
                up = word[pos: pos + upperside_length]
                for low, low_cost in self.operation_costs.get(up, dict()).items():
                    for transduction, cost in prefixes[pos]:
                        new_cost = cost + low_cost
                        if new_cost <= max_cost:
                            new_transduction = transduction +(up, low)
                            prefixes[pos + upperside_length].append((new_transduction, new_cost))
        answer = sorted(prefixes[-1], key=(lambda x: x[0]))
        if return_cost:
            return answer
        else:
            return [elem[0] for elem in answer]
def lower_transductions ( self , word , max_cost , return_cost = True ) : prefixes = [ [ ] for i in range ( len ( word ) + 1 ) ] prefixes [ 0 ] . append ( ( ( ) , 0.0 ) ) for pos in range ( len ( prefixes ) ) : # вставки prefixes [ pos ] = self . _perform_insertions ( prefixes [ pos ] , max_cost ) max_upperside_length = min ( len ( word ) - pos , self . max_up_length ) for upperside_length in range ( 1 , max_upperside_length + 1 ) : up = word [ pos : pos + upperside_length ] for low , low_cost in self . operation_costs . get ( up , dict ( ) ) . items ( ) : for transduction , cost in prefixes [ pos ] : new_cost = cost + low_cost if new_cost <= max_cost : new_transduction = transduction + ( up , low ) prefixes [ pos + upperside_length ] . append ( ( new_transduction , new_cost ) ) answer = sorted ( prefixes [ - 1 ] , key = ( lambda x : x [ 0 ] ) ) if return_cost : return answer else : return [ elem [ 0 ] for elem in answer ]
Возвращает все трансдукции с верхним элементом word,
        чья стоимость не превышает max_cost

    `   Возвращает:
        ----------
        result : list
            список вида [(трансдукция, стоимость)], если return_cost=True
            список трансдукций, если return_cost=False
            список отсортирован в порядке возрастания стоимости трансдукции
Возвращает все трансдукции с верхним элементом word чья стоимость не превышает max_cost