वाक्यों को पैड करना
अब आप sents2seqs() नाम का एक फंक्शन इम्प्लीमेंट करेंगे, जिसे आगे चलकर आप डेटा को उस फॉर्मेट में सुविधाजनक रूप से बदलने के लिए उपयोग करेंगे जिसे न्यूरल मशीन ट्रांसलेशन (NMT) मॉडल स्वीकार करता है. sents2seqs() वाक्य-स्ट्रिंग्स की एक लिस्ट लेता है और:
- वाक्यों को IDs के सीक्वेंस की लिस्ट में बदलता है,
- वाक्यों को पैड करता है ताकि उनकी लंबाई समान हो जाए, और
- वैकल्पिक रूप से IDs को onehot वेक्टर में बदलता है.
आपको en_tok दिया गया है, जो डेटा पर पहले से प्रशिक्षित Tokenizer है. एक और बात ध्यान देने की है कि sents2seqs() फंक्शन इम्प्लीमेंट करते समय आपको input_type नाम का एक अनयूज्ड आर्ग्युमेंट दिखेगा. आगे चलकर, इस input_type का उपयोग भाषा-निर्भर पैरामीटर्स जैसे सीक्वेंस की लंबाई और शब्दावली (vocabulary) के साइज को बदलने के लिए किया जाएगा.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Keras के साथ Machine Translation
अभ्यास निर्देश
en_tokTokenizer का उपयोग करकेsentencesको सीक्वेंस में बदलें.- सीक्वेंस को फिक्स्ड
en_lenलंबाई तक पैड करें, पैडिंग टाइप के रूप मेंpad_typeदें और ट्रंकेटिंग के लिएpostका उपयोग करें. preproc_textवर्ड IDs कोto_categorical()फंक्शन का उपयोग करके लंबाईen_vocabवाले onehot वेक्टर में बदलें.sents2seqs()मेथड का उपयोग करते हुएsentenceकोpre-padding के साथ एक padded सीक्वेंस में बदलें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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=____)