deeppavlov/models/spelling_correction/levenshtein/levenshtein_searcher.py
def _precompute_euristics(self):
        """
        Предвычисляет будущие символы и стоимости операций с ними
        для h-эвристики
        """
        if self.euristics is None:
            return
        # вычисление минимальной стоимости операции,
        # приводящей к появлению ('+') или исчезновению ('-') данного символа
        removal_costs = {a : np.inf for a in self.alphabet}
        insertion_costs = {a : np.inf for a in self.alphabet}
        if self.allow_spaces:
            removal_costs[' '] = np.inf
            insertion_costs[' '] = np.inf
        for up, costs in self.transducer.operation_costs.items():
            for low, cost in costs.items():
                if up == low:
                    continue
                if up != '':
                    removal_cost = cost / len(up)
                    for a in up:
                        removal_costs[a] = min(removal_costs[a], removal_cost)
                if low != '':
                    insertion_cost = cost / len(low)
                    for a in low:
                        insertion_costs[a] = min(insertion_costs[a], insertion_cost)
        # предвычисление возможных будущих символов в узлах дерева
        # precompute_future_symbols(self.dictionary, self.euristics, self.allow_spaces)
        # предвычисление стоимостей потери символа в узлах дерева
        self._absense_costs_by_node = _precompute_absense_costs(
            self.dictionary, removal_costs, insertion_costs,
            self.euristics, self.allow_spaces)
        # массив для сохранения эвристик
        self._temporary_euristics = [dict() for i in range(len(self.dictionary))]
def _precompute_euristics(self):
        """
        Предвычисляет будущие символы и стоимости операций с ними
        для h-эвристики
        """
        if self.euristics is None:
            return
        # вычисление минимальной стоимости операции,
        # приводящей к появлению ('+') или исчезновению ('-') данного символа
        removal_costs = {a : np.inf for a in self.alphabet}
        insertion_costs = {a : np.inf for a in self.alphabet}
        if self.allow_spaces:
            removal_costs[' '] = np.inf
            insertion_costs[' '] = np.inf
        for up, costs in self.transducer.operation_costs.items():
            for low, cost in costs.items():
                if up == low:
                    continue
                if up != '':
                    removal_cost = cost / len(up)
                    for a in up:
                        removal_costs[a] = min(removal_costs[a], removal_cost)
                if low != '':
                    insertion_cost = cost / len(low)
                    for a in low:
                        insertion_costs[a] = min(insertion_costs[a], insertion_cost)
        # предвычисление возможных будущих символов в узлах дерева
        # precompute_future_symbols(self.dictionary, self.euristics, self.allow_spaces)
        # предвычисление стоимостей потери символа в узлах дерева
        self._absense_costs_by_node = _precompute_absense_costs(
            self.dictionary, removal_costs, insertion_costs,
            self.euristics, self.allow_spaces)
        # массив для сохранения эвристик
        self._temporary_euristics = [dict() for i in range(len(self.dictionary))]
def _precompute_euristics ( self ) : if self . euristics is None : return # вычисление минимальной стоимости операции, # приводящей к появлению ('+') или исчезновению ('-') данного символа removal_costs = { a : np . inf for a in self . alphabet } insertion_costs = { a : np . inf for a in self . alphabet } if self . allow_spaces : removal_costs [ ' ' ] = np . inf insertion_costs [ ' ' ] = np . inf for up , costs in self . transducer . operation_costs . items ( ) : for low , cost in costs . items ( ) : if up == low : continue if up != '' : removal_cost = cost / len ( up ) for a in up : removal_costs [ a ] = min ( removal_costs [ a ] , removal_cost ) if low != '' : insertion_cost = cost / len ( low ) for a in low : insertion_costs [ a ] = min ( insertion_costs [ a ] , insertion_cost ) # предвычисление возможных будущих символов в узлах дерева # precompute_future_symbols(self.dictionary, self.euristics, self.allow_spaces) # предвычисление стоимостей потери символа в узлах дерева self . _absense_costs_by_node = _precompute_absense_costs ( self . dictionary , removal_costs , insertion_costs , self . euristics , self . allow_spaces ) # массив для сохранения эвристик self . _temporary_euristics = [ dict ( ) for i in range ( len ( self . dictionary ) ) ]
Предвычисляет будущие символы и стоимости операций с ними
        для h-эвристики
Предвычисляет будущие символы и стоимости операций с ними для h - эвристики