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
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)
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()