예제 #1
0
    def create_model_from_text(self, text_path):
        """
        Создание цепи Маркова из текста

        :param text_path: путь к тексту
        :type text_path: str
        :return: модель цепи Маркова
        :rtype: dict
        """
        markov_model = dict()
        # Проверка наличия уже обученой модели
        print('-READING TEXT')
        data = self.tokenizer.text_to_int(read_files(text_path).split())
        self.tokenizer.change_strategy(Tokenizer.LoadStrategy(self.tokens))
        range_len = len(data) - self.window_size
        for current_word in range(0, len(data) - self.window_size):
            print("creating: {}/{}".format(current_word + 1, range_len))
            # Создаем окно
            window = tuple(data[current_word:current_word + self.window_size])
            # Добавляем в словарь
            if window in markov_model:
                # Присоединяем к уже существующему распределению
                markov_model[window].update(
                    [data[current_word + self.window_size]])
            else:
                markov_model[window] = Dictogram(
                    [data[current_word + self.window_size]])
        return markov_model
예제 #2
0
        def __init__(self, database, window_size):
            """

            :param window_size:
            :type window_size: int
            """
            self.model = MarkovChain(database, window_size)
            self.tokenizer = Tokenizer(Tokenizer.LoadStrategy(self.model.tokens))
            self.model.set_tokenizer(self.tokenizer)
예제 #3
0
        def __init__(self, database, text_path, window_size):
            """

            :param text_path: путь к датасету
            :type text_path: str
            :param window_size: размер окна
            :type window_size: int
            """
            super().__init__(database, text_path, window_size)
            self.tokenizer = Tokenizer(Tokenizer.LoadStrategy(self.model.tokens))
            self.model.set_tokenizer(self.tokenizer)
            self.model.counter.update('tokens')
            self.retrain()