Rellenar frases
Ahora implementarás una función llamada « sents2seqs()
» que más adelante utilizarás para transformar los datos de forma conveniente al formato aceptado por el modelo de traducción automática neuronal (NMT). « sents2seqs()
» acepta una lista de cadenas de frases y,
- Convierte las oraciones en una lista de secuencias de ID.
- Rellena las frases para que tengan la misma longitud y,
- Opcionalmente, convierte los ID en vectores onehot.
Se te ha proporcionado en_tok
, un modelo de red neuronal ( Tokenizer
) ya entrenado con datos. Otra cosa a tener en cuenta es que, al implementar la función « sents2seqs()
», verás un argumento sin usar llamado « input_type
». Más adelante, este input_type
se utilizará para cambiar parámetros dependientes del idioma, como la longitud de la secuencia y el tamaño del vocabulario.
Este ejercicio forma parte del curso
Traducción automática con Keras
Instrucciones del ejercicio
- Convierte el «
sentences
» en secuencias utilizando el tokenizador «en_tok
». - Secuencias de relleno a una longitud fija de
en_len
con un tipo de relleno especificado depad_type
y utilizapost
-truncating. - Convierte los ID de palabras «
preproc_text
» en vectores onehot de longitud «en_vocab
» utilizando la función «to_categorical()
». - Convierte
sentence
en una secuencia rellenada utilizando el métodosents2seqs()
conpre
-padding.
Ejercicio interactivo práctico
Prueba este ejercicio completando el código de muestra.
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.utils import to_categorical
def sents2seqs(input_type, sentences, onehot=False, pad_type='post'):
# Convert sentences to sequences
encoded_text = ____.____(sentences)
# Pad sentences to en_len
preproc_text = ____(____, padding=____, truncating=____, maxlen=____)
if onehot:
# Convert the word IDs to onehot vectors
preproc_text = ____(____, num_classes=____)
return preproc_text
sentence = 'she likes grapefruit , peaches , and lemons .'
# Convert a sentence to sequence by pre-padding the sentence
pad_seq = sents2seqs('source', [____], pad_type=____)