Векторизация текста в TensorFlow
Чтобы подать фразу в модель,
её разбивают на слова и заменяют
каждое слово целым номером.
Слой TextVectorization
хранит такой список и умеет
кодировать новые строки в
таблицу целых чисел.
Перед первым использованием
слой нужно настроить на примерах:
метод adapt просматривает
переданные фразы и собирает
словарь. После этого тот же
слой переводит любую строку
из того же языка в номера слов.
Зададим режим вывода с целыми номерами, обучим слой на коротких английских фразах и закодируем одну новую строку:
import tensorflow as tf
layer = tf.keras.layers.TextVectorization(
max_tokens=10, output_mode='int'
)
layer.adapt(["red hat", "red coat", "blue hat"])
encoded = layer(tf.constant(["red hat"]))
print(encoded.numpy()) # выведет [[2 3]]
Слой принимает и одну строку, и несколько фраз сразу. Каждая строка превращается в ряд целых номеров той же длины, что и число слов во фразе:
import tensorflow as tf
layer = tf.keras.layers.TextVectorization(
max_tokens=8, output_mode='int'
)
layer.adapt(["cat sat", "dog ran"])
batch = layer(tf.constant(["cat sat", "dog ran"]))
print(batch.numpy()) # выведет [[5 2] [4 3]]
Обучите слой векторизации
на фразах "a b",
"a c" и "b c"
с лимитом словаря 10.
Закодируйте "a b"
и выведите таблицу целых
номеров.
Настройте слой на двух
английских фразах "one two"
и "two three".
Подайте партию из строк
"one two" и "three one"
и выведите две строки
целых индексов.
Соберите слой с режимом
целых номеров и лимитом
6. Обучите его
на "go now" и "go fast",
затем закодируйте "go now"
и выведите длину второй оси
в форме результата.