Должны ли теги <EOS>и <BOS>явно добавляться в словарь после использования токенизатора keras.preprocessing.text? - PullRequest
1 голос
/ 26 мая 2020

В Keras у нас есть keras.preprocessing.text для токенизации текста по нашему требованию и генерации словаря.

tokenizer = tf.keras.preprocessing.text.Tokenizer(split=' ',  oov_token=1)
tokenizer.fit_on_texts(["Hello world"])
seqs = tokenizer.texts_to_sequences(["Hello world"])

Я не уверен, нужно ли добавлять теги End of Sequence (EOS) и Beginning of Sequence (BOS) явно, если мы передаем сгенерированные seqs нейронной системе. сеть, как RNN, после заполнения seq до фиксированной длины. Или Керас делает это за нас? (Я не видел примеров явного добавления EOS и BOS при использовании токенизатора Keras)

1 Ответ

1 голос
/ 01 июня 2020

Нет, добавлять <EOS> <BOS> для tf.keras.preprocessing.text.Tokenizer
не требуется, поскольку отображение index_word работает в порядке, начинающемся с oov_token, и следующее предпочтение - для слов с наивысшим частота и следуют слова в том же порядке, что и ввод. Это помогает Keras API обрабатывать сопоставление внутренне, в отличие от других API предварительной обработки текста, которые используют теги <START> и <END>.

Ниже приведен пример с примерами предложений для отображения сопоставления index_word.

text_data = ["this is the sample sentence",
            "one more sentence"]

lang_tokenizer = tf.keras.preprocessing.text.Tokenizer(oov_token="<UNK>")
lang_tokenizer.fit_on_texts(text_data)
lang_tokenizer.index_word

index_word:

{1: '<UNK>',
 2: 'sentence',
 3: 'this',
 4: 'is',
 5: 'the',
 6: 'sample',
 7: 'one',
 8: 'more'}

Тестирование:

res = lang_tokenizer.texts_to_sequences(["testing with sample sentence"]) 

[[1, 1, 6, 2]]

Надеюсь, это ответ на ваш вопрос, Удачного обучения!

...