Cümlelere dolgu (padding) uygulama
Şimdi, ileride verileri sinirsel makine çevirisi (NMT) modelinin kabul ettiği formata kolayca dönüştürmek için kullanacağın sents2seqs() adlı bir fonksiyonu uygulayacaksın. sents2seqs() bir cümle dizgesi listesini alır ve
- Cümleleri kimlik (ID) dizileri listesine dönüştürür,
- Cümlelere eşit uzunlukta olacak şekilde dolgu uygular ve
- İsteğe bağlı olarak ID’leri onehot vektörlere çevirir.
Sana, veriler üzerinde zaten eğitilmiş bir Tokenizer olan en_tok sağlandı. Ayrıca sents2seqs() fonksiyonunu uygularken kullanılmayan input_type adlı bir argüman göreceksin. İleride bu input_type, dizi uzunluğu ve sözcük dağarcığı boyutu gibi dile bağlı parametreleri değiştirmek için kullanılacak.
Bu egzersiz
Keras ile Machine Translation
kursunun bir parçasıdırEgzersiz talimatları
sentencesöğelerinien_tokTokenizer kullanarak dizilere dönüştür.- Dizileri belirtilen
pad_typedolgu türüyle sabiten_lenuzunluğa kadar doldur ve kesme işlemi içinpostkullan. preproc_textsözcük ID’lerinito_categorical()fonksiyonuyla uzunluğuen_vocabolan onehot vektörlere dönüştür.sentenceifadesinisents2seqs()yöntemiylepredolgu kullanarak doldurulmuş bir diziye dönüştür.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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=____)