MarkovTextGenerator/markov_text_generator.py
def get_start_array(self, *start_words, **kwargs):
        """
        Генерирует начало предложения.
        :start_words: Попытаться начать предложение с этих слов.
        """
        if not self.start_arrays:
            raise MarkovTextExcept("Не с чего начинать генерацию.")
        if not start_words:
            return choice(self.start_arrays)

        _variants = []
        _weights = []
        for tokens in self.start_arrays:
            weight = 0b1
            for word in start_words:
                word = word.strip().lower()
                for token in self.ONLY_WORDS.finditer(word):
                    if token.group() in tokens:
                        weight <<= 1
            if weight > 0b1:
                _variants.append(tokens)
                _weights.append(weight)

        if not _variants:
            return choice(self.start_arrays)

        return choices(_variants, weights=_weights, k=1)[0]
def get_start_array(self, *start_words, **kwargs):
        """
        Генерирует начало предложения.
        :start_words: Попытаться начать предложение с этих слов.
        """
        if not self.start_arrays:
            raise MarkovTextExcept("Не с чего начинать генерацию.")
        if not start_words:
            return choice(self.start_arrays)

        _variants = []
        _weights = []
        for tokens in self.start_arrays:
            weight = 0b1
            for word in start_words:
                word = word.strip().lower()
                for token in self.ONLY_WORDS.finditer(word):
                    if token.group() in tokens:
                        weight <<= 1
            if weight > 0b1:
                _variants.append(tokens)
                _weights.append(weight)

        if not _variants:
            return choice(self.start_arrays)

        return choices(_variants, weights=_weights, k=1)[0]
Генерирует начало предложения.
        :start_words: Попытаться начать предложение с этих слов.