У меня есть модель обработки естественного языка, построенная с использованием keras с использованием keras.preprocessing.text.Tokenizer. Я знаю, что могу переучить старую модель, вызвав ее .fit(...)
после ее импорта, но мне нужно также обновить мой токенизатор. Токенайзер делает некоторые вещи: токенизирует строку пробелами, удаляет символы, преобразует в младшие, сохраняет только наиболее используемые токены после создания своего словаря, имеет sh токенов и добавляет 0, если предложение слишком короткое.
Пример:
tokenizer = Tokenizer(num_words=vocab_size)
tokenizer.fit_on_texts(df_train['message'][0:100].values)
x_train = tokenizer.texts_to_sequences(df_train['message'][0:100].values)
x_train = pad_sequences(x_train, padding='post', maxlen=maxlen)
Этот процесс необходим для возможности ввода последовательностей в сеть NLP. Проблема появляется, когда я пытаюсь автоматически переучить это. Каждый раз, когда я переучиваюсь, токенизатор должен обновляться. Если я попытаюсь добавить новый текст, все значения из словаря, которые использует класс токенизатора (то есть кодировка слова), изменятся.
Пример:
Если я обновлюсь так: tokenizer.fit_on_texts(df_train['message'][100:200].values)
,
, тогда
x_train = tokenizer.texts_to_sequences(df_train['message'][0:100].values)
выведет различные кодировки для предложений. Мне нужны такие же кодировки. В официальной документации сказано, что метод «def fit_on_texts (self, тексты)» «обновляет внутренний словарь на основе списка текстов». Он обновляет, но также изменяет все старые значения ключей, старые или новые.
Существует ли официальный способ сохранить старые значения слов и генерировать новые значения только для новых слов?