diff --git a/.ipynb_checkpoints/main-checkpoint.ipynb b/.ipynb_checkpoints/main-checkpoint.ipynb new file mode 100644 index 0000000..9308e12 --- /dev/null +++ b/.ipynb_checkpoints/main-checkpoint.ipynb @@ -0,0 +1,422 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lab | Text Generation from Shakespeare's Sonnet\n", + "\n", + "This notebook explores the fascinating domain of text generation using a deep learning model trained on Shakespeare's sonnets. \n", + "\n", + "The objective is to create a neural network capable of generating text sequences that mimic the style and language of Shakespeare.\n", + "\n", + "By utilizing a Recurrent Neural Network (RNN) with Long Short-Term Memory (LSTM) layers, this project aims to demonstrate how a model can learn and replicate the complex patterns of early modern English. \n", + "\n", + "The dataset used consists of Shakespeare's sonnets, which are preprocessed and tokenized to serve as input for the model.\n", + "\n", + "Throughout this notebook, you will see the steps taken to prepare the data, build and train the model, and evaluate its performance in generating text. \n", + "\n", + "This lab provides a hands-on approach to understanding the intricacies of natural language processing (NLP) and the potential of machine learning in creative text generation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's import necessary libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "BOwsuGQQY9OL", + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-08-16 22:09:18.737563: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" + ] + } + ], + "source": [ + "from tensorflow.keras.preprocessing.sequence import pad_sequences\n", + "from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout, Bidirectional\n", + "from tensorflow.keras.preprocessing.text import Tokenizer\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.optimizers import Adam\n", + "from tensorflow.keras import regularizers\n", + "import tensorflow.keras.utils as ku \n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's get the data!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import requests\n", + "url = 'https://raw.githubusercontent.com/martin-gorner/tensorflow-rnn-shakespeare/master/shakespeare/sonnets.txt'\n", + "resp = requests.get(url)\n", + "with open('sonnets.txt', 'wb') as f:\n", + " f.write(resp.content)\n", + "\n", + "data = open('sonnets.txt').read()\n", + "\n", + "corpus = data.lower().split(\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Step 1: Initialise a tokenizer and fit it on the corpus variable using .fit_on_texts" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Step 2: Calculate the Vocabulary Size\n", + "\n", + "Let's figure out how many unique words are in your corpus. This will be the size of your vocabulary.\n", + "\n", + "Calculate the length of tokenizer.word_index, add 1 to it and store it in a variable called total_words." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create an empty list called input_sequences.\n", + "\n", + "For each sentence in your corpus, convert the text into a sequence of integers using the tokenizer.\n", + "Then, generate n-gram sequences from these tokens.\n", + "\n", + "Store the result in the list input_sequences." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the length of the longest sequence in input_sequences. Assign the result to a variable called max_sequence_len.\n", + "\n", + "Now pad the sequences using pad_sequences(input_sequences, maxlen=max_sequence_len, padding='pre').\n", + "Convert it to a numpy array and assign the result back to our variable called input_sequences." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Prepare Predictors and Labels\n", + "\n", + "Split the sequences into two parts:\n", + "\n", + "- Predictors: All elements from input_sequences except the last one.\n", + "- Labels: The last element of each sequence in input_sequences." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "PRnDnCW-Z7qv", + "tags": [] + }, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One-Hot Encode the Labels :\n", + "\n", + "Convert the labels (which are integers) into one-hot encoded vectors. \n", + "\n", + "Ensure the length of these vectors matches the total number of unique words in your vocabulary.\n", + "\n", + "Use ku.to_categorical() on labels with num_classes = total_words\n", + "\n", + "Assign the result back to our variable labels." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Initialize the Model\n", + "\n", + "Start by creating a Sequential model.\n", + "\n", + "Add Layers to the Model:\n", + "\n", + "Embedding Layer: The first layer is an embedding layer. It converts word indices into dense vectors of fixed size (100 in this case). Set the input length to the maximum sequence length minus one, which corresponds to the number of previous words the model will consider when predicting the next word.\n", + "\n", + "Bidirectional LSTM Layer: Add a Bidirectional LSTM layer with 150 units. This layer allows the model to learn context from both directions (past and future) in the sequence. return_sequences=True\n", + "\n", + "Dropout Layer: Add a dropout layer with a rate of 0.2 to prevent overfitting by randomly setting 20% of the input units to 0 during training.\n", + "\n", + "LSTM Layer: Add a second LSTM layer with 100 units. This layer processes the sequence and passes its output to the next layer.\n", + "\n", + "Dense Layer (Intermediate): Add a dense layer with half the total number of words as units, using ReLU activation. A regularization term (L2) is added to prevent overfitting.\n", + "\n", + "Dense Layer (Output): The final dense layer has as many units as there are words in the vocabulary, with a softmax activation function to output a probability distribution over all words." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "model = Sequential([\n", + "\n", + " # Your code here :\n", + " \n", + "])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compile the Model:\n", + "\n", + "Compile the model using categorical crossentropy as the loss function, the Adam optimizer for efficient training, and accuracy as the metric to evaluate during training." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Print Model Summary:\n", + "\n", + "Use model.summary() to print a summary of the model, which shows the layers, their output shapes, and the number of parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Now train the model for 50 epochs and assign it to a variable called history.\n", + "\n", + "Training the model with 50 epochs should get you around 40% accuracy.\n", + "\n", + "You can train the model for as many epochs as you like depending on the time and computing constraints you are facing. Ideally train it for a larger amount of epochs than 50.\n", + "\n", + "That way you will get better text generation at the end.\n", + "\n", + "However, dont waste your time." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "AIg2f1HBxqof", + "tags": [] + }, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Use plt from matplotlib to plot the training accuracy over epochs and the loss over epochs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First you will have to get the accuracy and loss data over epochs, you can do this by using methods on your model." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "1fXTEO3GJ282", + "tags": [] + }, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generate text with the model based on a seed text\n", + "\n", + "Now you will create two variables :\n", + "\n", + "- seed_text = 'Write the text you want the model to use as a starting point to generate the next words'\n", + "- next_words = number_of_words_you_want_the_model_to_generate\n", + "\n", + "Please change number_of_words_you_want_the_model_to_generate by an actual integer." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now create a loop that runs based on the next_words variable and generates new text based on your seed_text input string. Print the full text with the generated text at the end.\n", + "\n", + "This time you dont get detailed instructions.\n", + "\n", + "Have fun!" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "6Vc6PHgxa6Hm", + "tags": [] + }, + "outputs": [], + "source": [ + "# Your code here :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Experiment with at least 3 different seed_text strings and see what happens!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Your code here :" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "NLP_Week4_Exercise_Shakespeare_Answer.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/main.ipynb b/main.ipynb index 9308e12..62a5ff1 100644 --- a/main.ipynb +++ b/main.ipynb @@ -33,16 +33,7 @@ "id": "BOwsuGQQY9OL", "tags": [] }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-08-16 22:09:18.737563: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", - "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" - ] - } - ], + "outputs": [], "source": [ "from tensorflow.keras.preprocessing.sequence import pad_sequences\n", "from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout, Bidirectional\n", @@ -91,9 +82,24 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'and': 1, 'the': 2, 'to': 3, 'of': 4, 'my': 5, 'i': 6, 'in': 7, 'that': 8, 'thy': 9, 'thou': 10, 'with': 11, 'for': 12, 'is': 13, 'not': 14, 'love': 15, 'but': 16, 'a': 17, 'me': 18, 'thee': 19, 'so': 20, 'be': 21, 'as': 22, 'all': 23, 'you': 24, 'his': 25, 'which': 26, 'when': 27, 'it': 28, 'this': 29, 'by': 30, 'your': 31, 'doth': 32, 'do': 33, 'from': 34, 'on': 35, 'or': 36, 'no': 37, 'then': 38, 'have': 39, 'what': 40, 'are': 41, 'if': 42, 'more': 43, 'mine': 44, 'their': 45, 'shall': 46, 'sweet': 47, 'time': 48, 'will': 49, 'they': 50, 'beauty': 51, 'nor': 52, 'eyes': 53, 'art': 54, 'her': 55, 'heart': 56, 'yet': 57, 'o': 58, 'than': 59, 'can': 60, 'should': 61, 'thine': 62, 'now': 63, 'where': 64, 'make': 65, 'one': 66, 'hath': 67, 'he': 68, 'fair': 69, 'still': 70, 'how': 71, 'eye': 72, 'him': 73, 'like': 74, 'true': 75, 'see': 76, 'am': 77, 'she': 78, 'those': 79, 'though': 80, 'being': 81, 'some': 82, 'every': 83, 'such': 84, 'own': 85, 'were': 86, 'dost': 87, 'who': 88, 'live': 89, 'upon': 90, 'was': 91, 'may': 92, 'myself': 93, 'world': 94, 'say': 95, 'praise': 96, 'day': 97, 'well': 98, 'new': 99, 'give': 100, 'most': 101, \"love's\": 102, 'might': 103, 'did': 104, 'let': 105, 'at': 106, 'why': 107, 'since': 108, 'even': 109, 'show': 110, 'life': 111, 'old': 112, 'look': 113, 'best': 114, 'night': 115, 'dear': 116, 'truth': 117, 'these': 118, 'thyself': 119, 'must': 120, 'would': 121, 'thus': 122, 'self': 123, 'ill': 124, 'part': 125, 'our': 126, 'worth': 127, 'made': 128, 'face': 129, 'whose': 130, 'nothing': 131, 'alone': 132, 'false': 133, 'better': 134, \"beauty's\": 135, 'too': 136, 'much': 137, 'there': 138, 'hand': 139, 'thought': 140, 'away': 141, 'against': 142, 'them': 143, 'thoughts': 144, 'days': 145, 'an': 146, \"'\": 147, 'up': 148, 'sight': 149, 'out': 150, 'hast': 151, 'know': 152, 'therefore': 153, 'both': 154, 'name': 155, 'never': 156, 'death': 157, 'mind': 158, \"time's\": 159, 'other': 160, 'find': 161, 'had': 162, 'muse': 163, 'far': 164, 'dead': 165, 'we': 166, 'tell': 167, 'age': 168, 'each': 169, 'youth': 170, 'good': 171, 'men': 172, 'before': 173, 'verse': 174, 'come': 175, 'tongue': 176, 'poor': 177, 'think': 178, 'proud': 179, 'gentle': 180, 'wilt': 181, 'state': 182, 'till': 183, 'things': 184, 'friend': 185, 'ever': 186, 'use': 187, 'many': 188, 'prove': 189, 'none': 190, 'hate': 191, 'hold': 192, 'heaven': 193, 'first': 194, 'whilst': 195, 'black': 196, 'lie': 197, 'take': 198, 'die': 199, 'bear': 200, 'making': 201, 'lies': 202, 'hours': 203, 'looks': 204, 'change': 205, 'kind': 206, 'mayst': 207, 'whom': 208, 'thing': 209, 'long': 210, 'seem': 211, 'woe': 212, 'full': 213, 'desire': 214, 'bright': 215, 'within': 216, 'form': 217, \"summer's\": 218, 'pleasure': 219, 'happy': 220, 'shalt': 221, 'end': 222, 'others': 223, 'any': 224, \"o'er\": 225, 'yourself': 226, 'after': 227, 'rich': 228, 'knows': 229, 'earth': 230, 'sun': 231, \"'tis\": 232, 'grace': 233, 'pride': 234, 'seen': 235, 'shame': 236, 'glass': 237, 'another': 238, 'great': 239, 'nature': 240, 'leave': 241, 'place': 242, 'could': 243, 'call': 244, 'again': 245, 'pen': 246, 'write': 247, 'once': 248, 'words': 249, 'loving': 250, 'deeds': 251, 'found': 252, 'fire': 253, 'right': 254, 'spirit': 255, 'soul': 256, 'pity': 257, 'treasure': 258, 'back': 259, 'beauteous': 260, 'gone': 261, 'lives': 262, 'times': 263, 'strong': 264, 'keep': 265, 'without': 266, 'decay': 267, 'store': 268, 'past': 269, 'stay': 270, 'lose': 271, 'makes': 272, 'loss': 273, 'two': 274, 'although': 275, 'cannot': 276, 'power': 277, 'living': 278, 'forth': 279, 'memory': 280, 'cruel': 281, 'brow': 282, 'deep': 283, 'child': 284, 'blood': 285, 'lovely': 286, 'gives': 287, 'summer': 288, 'leaves': 289, 'flowers': 290, 'joy': 291, 'fear': 292, 'grow': 293, 'save': 294, 'blessed': 295, 'stand': 296, 'lines': 297, 'skill': 298, 'born': 299, 'glory': 300, 'view': 301, 'disgrace': 302, 'speak': 303, 'faults': 304, 'bring': 305, 'loves': 306, 'delight': 307, 'lest': 308, 'sake': 309, 'thence': 310, 'hell': 311, 'sin': 312, 'only': 313, 'tender': 314, 'fresh': 315, 'waste': 316, 'excuse': 317, 'cold': 318, 'through': 319, 'canst': 320, 'very': 321, 'same': 322, 'ten': 323, 'parts': 324, 'sing': 325, 'ah': 326, 'behold': 327, 'white': 328, 'honour': 329, 'outward': 330, 'less': 331, 'wide': 332, 'worst': 333, 'itself': 334, 'breast': 335, 'put': 336, 'shadow': 337, 'sad': 338, \"i'll\": 339, 'roses': 340, 'steal': 341, 'whether': 342, 'straight': 343, 'set': 344, 'breath': 345, 'virtue': 346, 'slave': 347, 'seeing': 348, 'bad': 349, 'three': 350, 'foul': 351, 'swear': 352, 'rose': 353, 'else': 354, 'due': 355, 'despite': 356, \"nature's\": 357, 'having': 358, 'dwell': 359, 'ere': 360, 'shouldst': 361, 'light': 362, 'head': 363, 'under': 364, 'way': 365, 'unless': 366, 'music': 367, 'hear': 368, 'sweets': 369, 'war': 370, 'lovest': 371, \"'gainst\": 372, 'green': 373, 'go': 374, 'themselves': 375, 'hence': 376, 'longer': 377, 'eternal': 378, 'judgment': 379, 'fortune': 380, 'read': 381, 'shows': 382, 'rhyme': 383, 'compare': 384, 'sometime': 385, 'swift': 386, 'wrong': 387, \"heaven's\": 388, 'strength': 389, 'dumb': 390, 'writ': 391, 'wit': 392, 'book': 393, 'rest': 394, 'hope': 395, 'blind': 396, 'return': 397, 'wealth': 398, 'precious': 399, 'while': 400, 'enough': 401, 'argument': 402, 'heavy': 403, 'dull': 404, \"heart's\": 405, 'care': 406, 'strange': 407, 'been': 408, 'painting': 409, 'taught': 410, 'fears': 411, 'spent': 412, 'sick': 413, 'reason': 414, 'lips': 415, 'mad': 416, \"'will\": 417, 'fairest': 418, \"world's\": 419, 'ornament': 420, 'spring': 421, 'tomb': 422, 'calls': 423, 'wrinkles': 424, 'golden': 425, 'spend': 426, 'lend': 427, 'play': 428, 'winter': 429, 'quite': 430, 'left': 431, 'gracious': 432, 'mortal': 433, 'chide': 434, 'shape': 435, 'beloved': 436, 'least': 437, 'fast': 438, 'year': 439, 'gave': 440, 'gift': 441, 'barren': 442, 'yours': 443, 'rage': 444, 'stars': 445, 'oft': 446, 'doom': 447, 'date': 448, 'holds': 449, 'wish': 450, 'painted': 451, 'keeps': 452, 'graces': 453, 'antique': 454, 'short': 455, 'lived': 456, 'man': 457, 'hue': 458, \"men's\": 459, 'fell': 460, 'purpose': 461, 'truly': 462, 'trust': 463, 'speaking': 464, 'wherein': 465, 'done': 466, 'boast': 467, 'buried': 468, 'merit': 469, 'worthy': 470, 'scope': 471, 'moan': 472, 'hearts': 473, \"stol'n\": 474, 'loved': 475, 'birth': 476, 'hide': 477, 'base': 478, 'grief': 479, 'sorrow': 480, 'tears': 481, 'canker': 482, 'sweetest': 483, 'needs': 484, 'spite': 485, 'subject': 486, 'into': 487, 'invention': 488, 'pain': 489, 'absence': 490, 'kill': 491, 'large': 492, 'water': 493, 'slow': 494, 'present': 495, 'motion': 496, 'down': 497, 'says': 498, 'took': 499, 'side': 500, 'need': 501, 'cheek': 502, 'worse': 503, 'near': 504, 'flower': 505, 'faith': 506, 'tied': 507, 'rank': 508, 'brain': 509, 'saw': 510, 'grew': 511, 'brand': 512, 'cure': 513, \"mistress'\": 514, \"'will'\": 515, 'angel': 516, 'eternity': 517, 'increase': 518, 'abundance': 519, 'sum': 520, 'count': 521, 'prime': 522, 'single': 523, 'image': 524, 'lends': 525, 'free': 526, 'given': 527, 'unused': 528, 'used': 529, 'frame': 530, 'substance': 531, \"death's\": 532, 'worms': 533, 'weary': 534, 'mark': 535, 'song': 536, 'behind': 537, 'grant': 538, 'rude': 539, 'heat': 540, 'beauties': 541, 'scythe': 542, 'here': 543, 'lease': 544, 'pluck': 545, 'methinks': 546, 'evil': 547, 'minutes': 548, 'grows': 549, 'wherefore': 550, 'inward': 551, 'believe': 552, 'high': 553, 'numbers': 554, 'touches': 555, \"ne'er\": 556, 'buds': 557, 'shade': 558, 'crime': 559, 'young': 560, 'mistress': 561, 'rehearse': 562, 'rare': 563, 'air': 564, 'babe': 565, 'body': 566, 'want': 567, 'public': 568, 'forgot': 569, 'removed': 570, 'bare': 571, 'respect': 572, 'dare': 573, 'toil': 574, 'tired': 575, 'jewel': 576, 'please': 577, 'clouds': 578, 'contented': 579, 'break': 580, 'lack': 581, 'account': 582, 'holy': 583, 'appear': 584, 'grown': 585, 'sovereign': 586, 'shine': 587, 'hour': 588, 'wound': 589, 'sense': 590, 'thief': 591, 'help': 592, 'report': 593, 'comfort': 594, 'leisure': 595, 'blame': 596, 'taste': 597, 'absent': 598, 'said': 599, 'gain': 600, 'sleep': 601, 'sea': 602, 'assured': 603, 'told': 604, 'seek': 605, 'groan': 606, 'morrow': 607, 'former': 608, 'second': 609, 'knife': 610, 'brass': 611, 'win': 612, 'forsworn': 613, 'tongues': 614, 'add': 615, 'smell': 616, 'weeds': 617, 'common': 618, 'lost': 619, \"others'\": 620, 'knowing': 621, 'cheeks': 622, 'story': 623, 'praises': 624, 'above': 625, 'wretched': 626, 'turn': 627, 'errors': 628, 'lays': 629, 'red': 630, 'just': 631, 'catch': 632, 'laid': 633, 'bath': 634, 'poet': 635, 'decease': 636, 'heir': 637, 'flame': 638, 'eat': 639, 'grave': 640, 'weed': 641, 'answer': 642, 'repair': 643, 'posterity': 644, \"mother's\": 645, 'april': 646, 'windows': 647, \"remember'd\": 648, 'abuse': 649, 'audit': 650, 'work': 651, 'confounds': 652, 'effect': 653, \"distill'd\": 654, \"winter's\": 655, 'pay': 656, 'happier': 657, 'conquest': 658, 'lo': 659, 'heavenly': 660, 'son': 661, 'receivest': 662, 'ear': 663, 'husband': 664, 'seeming': 665, 'weep': 666, 'kept': 667, 'murderous': 668, 'fairer': 669, 'brave': 670, 'among': 671, 'takes': 672, 'fall': 673, 'father': 674, 'brief': 675, 'rain': 676, 'knowledge': 677, 'constant': 678, 'wouldst': 679, 'nought': 680, 'whereon': 681, 'height': 682, 'wear': 683, 'conceit': 684, 'bloody': 685, 'tyrant': 686, 'means': 687, 'maiden': 688, 'virtuous': 689, 'drawn': 690, \"fill'd\": 691, 'half': 692, 'number': 693, 'shake': 694, 'hot': 695, 'complexion': 696, 'course': 697, 'fade': 698, 'blunt': 699, 'burn': 700, 'forbid': 701, 'draw': 702, \"woman's\": 703, \"women's\": 704, 'woman': 705, 'wert': 706, 'moon': 707, 'cover': 708, 'bearing': 709, 'gavest': 710, 'burden': 711, \"express'd\": 712, 'turns': 713, 'therein': 714, 'cunning': 715, 'favour': 716, 'triumph': 717, 'frown': 718, 'fight': 719, 'thousand': 720, 'razed': 721, 'duty': 722, 'witness': 723, 'wanting': 724, 'star': 725, 'haste': 726, 'bed': 727, \"body's\": 728, 'looking': 729, 'farther': 730, 'blot': 731, 'flatter': 732, 'daily': 733, 'friends': 734, 'almost': 735, 'haply': 736, 'expense': 737, 'survey': 738, 'growing': 739, 'brought': 740, 'style': 741, 'basest': 742, 'ride': 743, 'west': 744, 'alack': 745, 'stain': 746, 'didst': 747, 'bears': 748, 'cross': 749, 'thorns': 750, 'amiss': 751, 'sins': 752, 'fault': 753, 'lawful': 754, 'plea': 755, 'twain': 756, 'remain': 757, 'evermore': 758, \"fortune's\": 759, 'dearest': 760, 'despised': 761, 'vulgar': 762, 'outlive': 763, 'manners': 764, 'greater': 765, 'injury': 766, 'foes': 767, 'because': 768, 'approve': 769, 'losing': 770, 'flattery': 771, 'dark': 772, 'shadows': 773, 'clear': 774, 'flesh': 775, 'matter': 776, 'foot': 777, 'soon': 778, \"eye's\": 779, 'picture': 780, 'sure': 781, 'chest': 782, 'whence': 783, 'prize': 784, 'pass': 785, 'greet': 786, 'reasons': 787, 'desert': 788, 'cause': 789, 'teach': 790, 'speed': 791, 'pace': 792, 'blest': 793, 'tend': 794, 'odour': 795, 'hang': 796, 'stone': 797, 'quick': 798, 'record': 799, 'edge': 800, 'appetite': 801, 'feeding': 802, 'fill': 803, 'ocean': 804, 'shore': 805, 'thrice': 806, 'fool': 807, 'god': 808, 'control': 809, 'doing': 810, 'five': 811, 'character': 812, 'wonder': 813, 'main': 814, \"crown'd\": 815, 'stands': 816, 'mock': 817, 'home': 818, 'elsewhere': 819, 'cost': 820, 'advantage': 821, 'action': 822, 'steel': 823, 'simple': 824, 'infection': 825, 'bastard': 826, \"another's\": 827, 'mend': 828, 'suspect': 829, 'flies': 830, 'mourn': 831, 'vile': 832, 'line': 833, 'thinking': 834, 'birds': 835, 'ground': 836, 'pine': 837, 'acquaintance': 838, 'got': 839, 'double': 840, 'works': 841, 'fame': 842, 'sail': 843, 'anew': 844, 'silence': 845, \"know'st\": 846, 'bonds': 847, 'vow': 848, 'general': 849, \"what's\": 850, \"seem'd\": 851, 'despair': 852, 'growth': 853, 'colour': 854, 'over': 855, 'sinful': 856, 'constancy': 857, 'confined': 858, \"'fair\": 859, 'boy': 860, 'proved': 861, 'proof': 862, 'receives': 863, 'plague': 864, 'minds': 865, 'taken': 866, 'whereto': 867, 'unkind': 868, 'fingers': 869, 'kiss': 870, 'perjured': 871, 'came': 872, \"'i\": 873, \"hate'\": 874, 'sworn': 875, 'conscience': 876, 'oaths': 877, 'sonnets': 878, 'wishing': 879, 't': 880, 'creatures': 881, 'thereby': 882, 'riper': 883, 'contracted': 884, 'bud': 885, 'content': 886, 'churl': 887, 'makest': 888, 'winters': 889, \"tatter'd\": 890, 'small': 891, 'held': 892, 'lusty': 893, \"'this\": 894, 'mother': 895, 'womb': 896, 'husbandry': 897, 'fond': 898, 'stop': 899, 'niggard': 900, 'bounteous': 901, 'usurer': 902, 'deceive': 903, 'gaze': 904, 'leads': 905, 'hideous': 906, 'sap': 907, \"cheque'd\": 908, 'bareness': 909, 'pent': 910, 'walls': 911, 'remembrance': 912, 'meet': 913, 'willing': 914, 'breed': 915, 'depart': 916, 'serving': 917, 'sacred': 918, 'majesty': 919, 'steep': 920, 'resembling': 921, 'attending': 922, 'pilgrimage': 923, 'pitch': 924, 'converted': 925, 'going': 926, \"unlook'd\": 927, 'delights': 928, 'concord': 929, 'sounds': 930, 'married': 931, 'sweetly': 932, 'mutual': 933, 'pleasing': 934, 'note': 935, 'speechless': 936, 'sings': 937, 'wail': 938, 'widow': 939, 'bosom': 940, 'himself': 941, 'commits': 942, 'deny': 943, \"possess'd\": 944, 'chief': 945, 'presence': 946, 'growest': 947, 'folly': 948, 'bounty': 949, 'copy': 950, 'clock': 951, 'tells': 952, 'violet': 953, 'lofty': 954, 'canopy': 955, 'borne': 956, 'question': 957, 'wastes': 958, 'forsake': 959, 'defence': 960, 'coming': 961, 'prepare': 962, 'issue': 963, 'wind': 964, 'princes': 965, 'thrive': 966, 'perfection': 967, 'little': 968, 'huge': 969, 'stage': 970, 'influence': 971, 'comment': 972, 'youthful': 973, 'inconstant': 974, 'sets': 975, 'wasteful': 976, 'fortify': 977, 'counterfeit': 978, 'pencil': 979, 'neither': 980, 'deserts': 981, 'faces': 982, \"poet's\": 983, 'alive': 984, 'twice': 985, 'winds': 986, 'shines': 987, 'often': 988, 'gold': 989, 'changing': 990, 'possession': 991, 'breathe': 992, 'keen': 993, 'fierce': 994, 'glad': 995, 'seasons': 996, \"whate'er\": 997, 'fading': 998, 'allow': 999, 'pattern': 1000, 'master': 1001, 'acquainted': 1002, 'fashion': 1003, 'theirs': 1004, 'gilding': 1005, 'controlling': 1006, 'souls': 1007, 'created': 1008, 'wrought': 1009, 'doting': 1010, 'addition': 1011, \"fix'd\": 1012, 'slain': 1013, 'besides': 1014, 'replete': 1015, 'forget': 1016, 'perfect': 1017, 'plead': 1018, 'learn': 1019, 'silent': 1020, 'belongs': 1021, 'fine': 1022, 'painter': 1023, \"bosom's\": 1024, 'bars': 1025, 'remove': 1026, 'strongly': 1027, 'send': 1028, \"soul's\": 1029, 'moving': 1030, 'repose': 1031, 'limbs': 1032, 'travel': 1033, 'journey': 1034, 'abide': 1035, 'eyelids': 1036, 'open': 1037, 'sightless': 1038, 'hung': 1039, 'benefit': 1040, \"oppress'd\": 1041, 'enemies': 1042, \"either's\": 1043, 'reign': 1044, 'hands': 1045, 'torture': 1046, 'off': 1047, 'sorrows': 1048, 'nightly': 1049, 'stronger': 1050, 'cries': 1051, 'curse': 1052, \"man's\": 1053, 'sullen': 1054, 'hymns': 1055, 'brings': 1056, 'scorn': 1057, 'kings': 1058, 'hid': 1059, 'dateless': 1060, \"vanish'd\": 1061, 'heavily': 1062, 'supposed': 1063, 'obsequious': 1064, 'interest': 1065, 'lovers': 1066, 'survive': 1067, 'dust': 1068, 'deceased': 1069, 'bettering': 1070, 'reserve': 1071, 'vouchsafe': 1072, \"friend's\": 1073, 'dearer': 1074, 'died': 1075, 'poets': 1076, 'morning': 1077, 'mountain': 1078, 'pale': 1079, 'alchemy': 1080, 'anon': 1081, 'stealing': 1082, 'unseen': 1083, 'morn': 1084, 'triumphant': 1085, 'cloud': 1086, \"mask'd\": 1087, 'rotten': 1088, 'physic': 1089, 'weak': 1090, 'ransom': 1091, 'trespass': 1092, 'sensual': 1093, 'sourly': 1094, 'robs': 1095, 'kindness': 1096, 'sort': 1097, 'lame': 1098, 'sit': 1099, 'invent': 1100, 'aught': 1101, 'slight': 1102, \"'t\": 1103, 'us': 1104, 'torment': 1105, 'sour': 1106, 'praising': 1107, 'hadst': 1108, 'blamed': 1109, 'wilful': 1110, 'robbery': 1111, 'poverty': 1112, 'lascivious': 1113, 'petty': 1114, 'wrongs': 1115, 'liberty': 1116, 'years': 1117, 'temptation': 1118, 'ay': 1119, 'seat': 1120, 'forbear': 1121, 'try': 1122, 'lead': 1123, 'ye': 1124, 'lay': 1125, 'wink': 1126, 'unrespected': 1127, 'dreams': 1128, 'clearer': 1129, 'nights': 1130, 'injurious': 1131, 'farthest': 1132, 'nimble': 1133, 'leap': 1134, 'miles': 1135, 'elements': 1136, 'health': 1137, 'title': 1138, 'quest': 1139, 'feast': 1140, 'guest': 1141, 'either': 1142, 'careful': 1143, 'falsehood': 1144, 'jewels': 1145, 'prey': 1146, 'feel': 1147, 'thievish': 1148, 'cast': 1149, \"call'd\": 1150, 'strangely': 1151, 'guard': 1152, 'ease': 1153, 'beast': 1154, 'wretch': 1155, 'spur': 1156, 'offence': 1157, 'horse': 1158, 'towards': 1159, 'point': 1160, 'seldom': 1161, 'captain': 1162, 'special': 1163, \"imprison'd\": 1164, \"lack'd\": 1165, 'whereof': 1166, 'deaths': 1167, 'gilded': 1168, 'powerful': 1169, 'root': 1170, \"lover's\": 1171, 'force': 1172, 'hungry': 1173, 'perpetual': 1174, 'welcome': 1175, 'watch': 1176, 'bitterness': 1177, 'affairs': 1178, 'thinks': 1179, 'vassal': 1180, 'bound': 1181, 'suffer': 1182, 'patience': 1183, 'bide': 1184, 'cheque': 1185, 'charter': 1186, 'privilege': 1187, 'belong': 1188, 'wait': 1189, 'wits': 1190, 'subjects': 1191, 'goes': 1192, 'crooked': 1193, 'confound': 1194, 'feeds': 1195, 'shames': 1196, 'idle': 1197, 'remedy': 1198, 'grounded': 1199, 'antiquity': 1200, \"age's\": 1201, 'king': 1202, 'outworn': 1203, 'ink': 1204, 'cry': 1205, 'sway': 1206, 'lively': 1207, 'veins': 1208, 'last': 1209, 'map': 1210, 'gay': 1211, 'shown': 1212, 'guess': 1213, 'measure': 1214, 'defect': 1215, 'crow': 1216, 'slander': 1217, 'pure': 1218, \"pass'd\": 1219, 'tie': 1220, 'envy': 1221, 'fled': 1222, 'nay': 1223, 'remember': 1224, 'wise': 1225, 'devise': 1226, 'untrue': 1227, 'yellow': 1228, \"ruin'd\": 1229, 'bail': 1230, 'showers': 1231, 'peace': 1232, \"'twixt\": 1233, 'doubting': 1234, 'counting': 1235, 'possessing': 1236, 'glance': 1237, 'aside': 1238, 'compounds': 1239, 'noted': 1240, 'word': 1241, 'telling': 1242, 'dial': 1243, 'learning': 1244, 'ignorance': 1245, 'added': 1246, 'aid': 1247, 'pays': 1248, 'humble': 1249, 'saucy': 1250, 'bark': 1251, 'worthless': 1252, 'yield': 1253, 'monument': 1254, 'finding': 1255, 'gross': 1256, 'quill': 1257, 'mute': 1258, 'example': 1259, 'comments': 1260, 'affords': 1261, 'praised': 1262, 'something': 1263, 'spirits': 1264, 'giving': 1265, 'riches': 1266, 'comes': 1267, 'dream': 1268, 'bending': 1269, 'injuries': 1270, 'vantage': 1271, 'desired': 1272, 'walks': 1273, 'bent': 1274, 'bow': 1275, 'hawks': 1276, 'humour': 1277, 'adjunct': 1278, 'finds': 1279, 'depends': 1280, 'vex': 1281, 'deceived': 1282, \"alter'd\": 1283, 'creation': 1284, 'sweetness': 1285, 'excellence': 1286, 'sport': 1287, 'mansion': 1288, \"esteem'd\": 1289, \"deem'd\": 1290, 'betray': 1291, 'autumn': 1292, 'dyed': 1293, 'blushing': 1294, 'esteem': 1295, 'rise': 1296, 'neglect': 1297, 'seems': 1298, \"turn'd\": 1299, 'perfumes': 1300, 'wondrous': 1301, \"true'\": 1302, \"look'd\": 1303, 'forfeit': 1304, 'express': 1305, 'divine': 1306, 'bred': 1307, 'frailties': 1308, 'alas': 1309, 'newer': 1310, 'next': 1311, 'guilty': 1312, 'goddess': 1313, 'drink': 1314, 'potions': 1315, 'bitter': 1316, 'strive': 1317, 'objects': 1318, 'palate': 1319, 'vows': 1320, 'alters': 1321, 'shaken': 1322, 'unknown': 1323, 'accuse': 1324, 'level': 1325, 'urge': 1326, 'maladies': 1327, 'shun': 1328, 'diseased': 1329, 'policy': 1330, 'healthful': 1331, 'goodness': 1332, 'hopes': 1333, 'fever': 1334, 'built': 1335, 'unkindness': 1336, 'becomes': 1337, 'feeling': 1338, 'wills': 1339, 'tables': 1340, 'bold': 1341, 'discontent': 1342, 'bore': 1343, 'render': 1344, \"borrow'd\": 1345, 'profaned': 1346, 'mourners': 1347, 'becoming': 1348, 'wood': 1349, 'jacks': 1350, 'lust': 1351, 'extreme': 1352, 'sooner': 1353, 'pursuit': 1354, 'wires': 1355, 'sound': 1356, 'belied': 1357, 'disdain': 1358, 'pretty': 1359, 'mourning': 1360, 'suit': 1361, 'fulfil': 1362, 'corrupt': 1363, 'vainly': 1364, 'ears': 1365, 'despise': 1366, 'dote': 1367, 'broke': 1368, 'chase': 1369, 'follow': 1370, 'fiend': 1371, 'abhor': 1372, 'cupid': 1373, 'asleep': 1374, 'begetter': 1375, 'insuing': 1376, 'mr': 1377, 'w': 1378, 'h': 1379, 'happiness': 1380, 'promised': 1381, 'wisheth': 1382, 'adventurer': 1383, 'setting': 1384, \"feed'st\": 1385, \"light'st\": 1386, 'substantial': 1387, 'fuel': 1388, 'famine': 1389, 'foe': 1390, 'herald': 1391, 'gaudy': 1392, 'buriest': 1393, 'niggarding': 1394, 'glutton': 1395, 'ii': 1396, 'forty': 1397, 'beseige': 1398, 'dig': 1399, 'trenches': 1400, 'field': 1401, \"youth's\": 1402, 'livery': 1403, 'gazed': 1404, \"ask'd\": 1405, 'sunken': 1406, 'eating': 1407, 'thriftless': 1408, 'deserved': 1409, 'couldst': 1410, 'proving': 1411, 'succession': 1412, 'warm': 1413, \"feel'st\": 1414, 'iii': 1415, 'viewest': 1416, 'renewest': 1417, 'beguile': 1418, 'unbless': 1419, \"unear'd\": 1420, 'disdains': 1421, 'tillage': 1422, 'dies': 1423, 'iv': 1424, 'unthrifty': 1425, 'loveliness': 1426, 'legacy': 1427, 'bequest': 1428, 'frank': 1429, 'largess': 1430, 'profitless': 1431, 'sums': 1432, 'traffic': 1433, 'acceptable': 1434, \"tomb'd\": 1435, \"th'\": 1436, 'executor': 1437, 'v': 1438, 'tyrants': 1439, 'unfair': 1440, 'fairly': 1441, 'excel': 1442, 'resting': 1443, 'frost': 1444, \"o'ersnow'd\": 1445, 'distillation': 1446, 'liquid': 1447, 'prisoner': 1448, 'bereft': 1449, 'leese': 1450, 'vi': 1451, 'ragged': 1452, 'deface': 1453, 'vial': 1454, \"kill'd\": 1455, 'forbidden': 1456, 'usury': 1457, 'happies': 1458, 'loan': 1459, \"that's\": 1460, 'refigured': 1461, 'leaving': 1462, \"will'd\": 1463, 'vii': 1464, 'orient': 1465, 'lifts': 1466, 'burning': 1467, 'homage': 1468, 'appearing': 1469, \"climb'd\": 1470, 'hill': 1471, 'middle': 1472, 'adore': 1473, 'highmost': 1474, 'car': 1475, 'feeble': 1476, 'reeleth': 1477, \"'fore\": 1478, 'duteous': 1479, 'low': 1480, 'tract': 1481, 'noon': 1482, 'diest': 1483, 'get': 1484, 'viii': 1485, \"hear'st\": 1486, 'sadly': 1487, 'gladly': 1488, 'annoy': 1489, 'tuned': 1490, 'unions': 1491, 'offend': 1492, 'singleness': 1493, 'string': 1494, 'strikes': 1495, 'ordering': 1496, 'sire': 1497, \"'thou\": 1498, 'ix': 1499, 'wet': 1500, \"widow's\": 1501, 'consumest': 1502, 'issueless': 1503, 'hap': 1504, 'makeless': 1505, 'wife': 1506, 'private': 1507, \"children's\": 1508, \"husband's\": 1509, 'unthrift': 1510, 'shifts': 1511, 'enjoys': 1512, 'user': 1513, 'destroys': 1514, 'toward': 1515, 'sits': 1516, 'x': 1517, \"bear'st\": 1518, 'unprovident': 1519, 'evident': 1520, \"stick'st\": 1521, 'conspire': 1522, 'seeking': 1523, 'roof': 1524, 'ruinate': 1525, 'lodged': 1526, 'hearted': 1527, 'xi': 1528, 'wane': 1529, 'departest': 1530, 'youngly': 1531, 'bestowest': 1532, 'convertest': 1533, 'herein': 1534, 'wisdom': 1535, 'minded': 1536, 'cease': 1537, 'threescore': 1538, 'harsh': 1539, 'featureless': 1540, 'barrenly': 1541, 'perish': 1542, \"endow'd\": 1543, 'cherish': 1544, 'carved': 1545, 'seal': 1546, 'meant': 1547, 'print': 1548, 'xii': 1549, 'sunk': 1550, 'sable': 1551, 'curls': 1552, \"silver'd\": 1553, 'trees': 1554, 'erst': 1555, 'herd': 1556, 'girded': 1557, 'sheaves': 1558, 'bier': 1559, 'bristly': 1560, 'beard': 1561, 'xiii': 1562, 'semblance': 1563, 'determination': 1564, \"yourself's\": 1565, 'lets': 1566, 'house': 1567, 'uphold': 1568, 'stormy': 1569, 'gusts': 1570, 'unthrifts': 1571, 'xiv': 1572, 'astronomy': 1573, 'luck': 1574, 'plagues': 1575, 'dearths': 1576, \"seasons'\": 1577, 'quality': 1578, 'pointing': 1579, 'thunder': 1580, 'predict': 1581, 'derive': 1582, 'together': 1583, 'convert': 1584, 'prognosticate': 1585, \"truth's\": 1586, 'xv': 1587, 'consider': 1588, 'moment': 1589, 'presenteth': 1590, 'secret': 1591, 'perceive': 1592, 'plants': 1593, 'cheered': 1594, 'sky': 1595, 'vaunt': 1596, 'decrease': 1597, 'debateth': 1598, 'sullied': 1599, 'engraft': 1600, 'xvi': 1601, 'mightier': 1602, 'top': 1603, 'gardens': 1604, 'unset': 1605, 'liker': 1606, 'pupil': 1607, 'xvii': 1608, 'hides': 1609, \"touch'd\": 1610, 'earthly': 1611, 'papers': 1612, \"yellow'd\": 1613, \"scorn'd\": 1614, 'rights': 1615, \"term'd\": 1616, 'stretched': 1617, 'metre': 1618, 'xviii': 1619, 'temperate': 1620, 'rough': 1621, 'darling': 1622, \"dimm'd\": 1623, 'declines': 1624, 'chance': 1625, \"untrimm'd\": 1626, 'owest': 1627, 'brag': 1628, \"wander'st\": 1629, 'xix': 1630, 'devouring': 1631, \"lion's\": 1632, 'paws': 1633, 'devour': 1634, 'brood': 1635, 'teeth': 1636, \"tiger's\": 1637, 'jaws': 1638, 'phoenix': 1639, 'sorry': 1640, 'fleets': 1641, 'footed': 1642, 'heinous': 1643, 'carve': 1644, 'untainted': 1645, 'succeeding': 1646, 'xx': 1647, 'passion': 1648, 'shifting': 1649, 'rolling': 1650, 'object': 1651, 'whereupon': 1652, 'gazeth': 1653, \"'hues'\": 1654, 'steals': 1655, 'amazeth': 1656, 'defeated': 1657, 'adding': 1658, \"prick'd\": 1659, 'xxi': 1660, \"stirr'd\": 1661, 'couplement': 1662, \"sea's\": 1663, 'gems': 1664, \"april's\": 1665, 'rondure': 1666, 'hems': 1667, \"o'\": 1668, 'candles': 1669, 'hearsay': 1670, 'sell': 1671, 'xxii': 1672, 'persuade': 1673, 'furrows': 1674, 'expiate': 1675, 'seemly': 1676, 'raiment': 1677, 'elder': 1678, 'wary': 1679, 'chary': 1680, 'nurse': 1681, 'faring': 1682, 'presume': 1683, 'xxiii': 1684, 'unperfect': 1685, 'actor': 1686, \"strength's\": 1687, 'weakens': 1688, 'ceremony': 1689, 'rite': 1690, \"o'ercharged\": 1691, 'books': 1692, 'eloquence': 1693, 'presagers': 1694, 'recompense': 1695, 'xxiv': 1696, \"play'd\": 1697, \"stell'd\": 1698, 'table': 1699, 'perspective': 1700, \"painter's\": 1701, 'pictured': 1702, 'shop': 1703, 'hanging': 1704, 'glazed': 1705, 'peep': 1706, 'xxv': 1707, 'titles': 1708, \"princes'\": 1709, 'favourites': 1710, 'spread': 1711, 'marigold': 1712, \"sun's\": 1713, 'painful': 1714, 'warrior': 1715, 'famoused': 1716, 'victories': 1717, \"foil'd\": 1718, \"toil'd\": 1719, 'xxvi': 1720, 'lord': 1721, 'vassalage': 1722, 'knit': 1723, 'written': 1724, 'embassage': 1725, 'naked': 1726, 'bestow': 1727, 'whatsoever': 1728, 'guides': 1729, 'points': 1730, 'graciously': 1731, 'aspect': 1732, 'puts': 1733, 'apparel': 1734, 'xxvii': 1735, 'begins': 1736, \"work's\": 1737, 'expired': 1738, 'intend': 1739, 'zealous': 1740, 'drooping': 1741, 'darkness': 1742, 'imaginary': 1743, 'presents': 1744, 'ghastly': 1745, 'quiet': 1746, 'xxviii': 1747, 'plight': 1748, \"debarr'd\": 1749, \"day's\": 1750, 'oppression': 1751, 'eased': 1752, 'consent': 1753, 'complain': 1754, 'swart': 1755, \"complexion'd\": 1756, 'sparkling': 1757, 'twire': 1758, \"gild'st\": 1759, \"grief's\": 1760, 'xxix': 1761, 'beweep': 1762, 'outcast': 1763, 'trouble': 1764, 'deal': 1765, 'bootless': 1766, 'fate': 1767, 'featured': 1768, 'desiring': 1769, 'enjoy': 1770, 'despising': 1771, 'lark': 1772, 'arising': 1773, 'gate': 1774, 'xxx': 1775, 'sessions': 1776, 'summon': 1777, 'sigh': 1778, 'sought': 1779, 'woes': 1780, 'drown': 1781, 'flow': 1782, 'afresh': 1783, \"cancell'd\": 1784, 'grieve': 1785, 'grievances': 1786, 'foregone': 1787, 'fore': 1788, 'bemoaned': 1789, 'paid': 1790, 'losses': 1791, 'restored': 1792, 'xxxi': 1793, 'endeared': 1794, 'lacking': 1795, 'reigns': 1796, 'tear': 1797, 'religious': 1798, 'hidden': 1799, 'trophies': 1800, 'images': 1801, 'xxxii': 1802, 'bones': 1803, 're': 1804, 'lover': 1805, \"outstripp'd\": 1806, 'exceeded': 1807, \"'had\": 1808, 'march': 1809, 'ranks': 1810, 'equipage': 1811, 'xxxiii': 1812, 'glorious': 1813, 'tops': 1814, 'kissing': 1815, 'meadows': 1816, 'streams': 1817, 'permit': 1818, 'ugly': 1819, 'rack': 1820, 'celestial': 1821, 'forlorn': 1822, 'visage': 1823, 'early': 1824, 'splendor': 1825, 'region': 1826, 'whit': 1827, 'disdaineth': 1828, 'suns': 1829, 'staineth': 1830, 'xxxiv': 1831, 'promise': 1832, 'cloak': 1833, \"o'ertake\": 1834, 'hiding': 1835, 'bravery': 1836, 'smoke': 1837, 'dry': 1838, 'storm': 1839, 'beaten': 1840, 'salve': 1841, 'heals': 1842, 'cures': 1843, 'repent': 1844, \"offender's\": 1845, 'relief': 1846, \"offence's\": 1847, 'pearl': 1848, 'sheds': 1849, 'xxxv': 1850, 'grieved': 1851, 'silver': 1852, 'fountains': 1853, 'mud': 1854, 'eclipses': 1855, 'loathsome': 1856, 'authorizing': 1857, 'corrupting': 1858, 'salving': 1859, 'excusing': 1860, 'adverse': 1861, 'party': 1862, 'advocate': 1863, 'commence': 1864, 'civil': 1865, 'accessary': 1866, 'xxxvi': 1867, 'confess': 1868, 'undivided': 1869, 'blots': 1870, 'separable': 1871, 'alter': 1872, 'sole': 1873, 'acknowledge': 1874, 'bewailed': 1875, 'guilt': 1876, 'xxxvii': 1877, 'decrepit': 1878, 'active': 1879, 'entitled': 1880, 'crowned': 1881, 'engrafted': 1882, 'sufficed': 1883, 'xxxviii': 1884, \"pour'st\": 1885, 'excellent': 1886, 'paper': 1887, 'thanks': 1888, 'perusal': 1889, \"who's\": 1890, 'tenth': 1891, 'nine': 1892, 'rhymers': 1893, 'invocate': 1894, 'curious': 1895, 'xxxix': 1896, 'divided': 1897, 'separation': 1898, 'deservest': 1899, 'entertain': 1900, 'teachest': 1901, 'xl': 1902, 'yea': 1903, 'usest': 1904, 'deceivest': 1905, 'refusest': 1906, 'forgive': 1907, \"hate's\": 1908, 'known': 1909, 'spites': 1910, 'xli': 1911, 'befits': 1912, 'follows': 1913, 'won': 1914, 'assailed': 1915, 'woos': 1916, 'prevailed': 1917, 'mightest': 1918, 'straying': 1919, 'riot': 1920, 'forced': 1921, 'twofold': 1922, 'hers': 1923, 'tempting': 1924, 'xlii': 1925, 'dearly': 1926, 'wailing': 1927, 'nearly': 1928, 'offenders': 1929, 'knowst': 1930, 'suffering': 1931, \"here's\": 1932, 'xliii': 1933, 'darkly': 1934, 'directed': 1935, \"shadow's\": 1936, 'unseeing': 1937, 'imperfect': 1938, 'xliv': 1939, 'distance': 1940, 'space': 1941, 'limits': 1942, 'remote': 1943, 'jump': 1944, 'land': 1945, 'kills': 1946, 'lengths': 1947, 'attend': 1948, 'receiving': 1949, 'badges': 1950, 'xlv': 1951, 'purging': 1952, 'wherever': 1953, 'slide': 1954, 'quicker': 1955, 'embassy': 1956, 'four': 1957, 'sinks': 1958, 'melancholy': 1959, 'until': 1960, \"life's\": 1961, 'composition': 1962, 'recured': 1963, 'messengers': 1964, \"return'd\": 1965, 'recounting': 1966, 'xlvi': 1967, 'divide': 1968, \"picture's\": 1969, 'bar': 1970, 'freedom': 1971, 'closet': 1972, 'pierced': 1973, 'crystal': 1974, 'defendant': 1975, 'appearance': 1976, \"'cide\": 1977, 'impanneled': 1978, 'tenants': 1979, 'verdict': 1980, 'determined': 1981, 'moiety': 1982, 'xlvii': 1983, 'betwixt': 1984, 'league': 1985, 'unto': 1986, \"famish'd\": 1987, 'sighs': 1988, 'smother': 1989, 'banquet': 1990, 'bids': 1991, 'share': 1992, 'resent': 1993, 'move': 1994, 'awakes': 1995, 'xlviii': 1996, 'trifle': 1997, 'truest': 1998, 'thrust': 1999, 'wards': 2000, 'trifles': 2001, 'greatest': 2002, \"lock'd\": 2003, 'closure': 2004, 'proves': 2005, 'xlix': 2006, 'defects': 2007, 'utmost': 2008, 'advised': 2009, 'respects': 2010, 'scarcely': 2011, 'settled': 2012, 'gravity': 2013, 'ensconce': 2014, 'uprear': 2015, 'laws': 2016, 'allege': 2017, 'l': 2018, \"travel's\": 2019, \"'thus\": 2020, 'measured': 2021, 'plods': 2022, 'dully': 2023, 'weight': 2024, 'instinct': 2025, 'rider': 2026, 'provoke': 2027, 'sometimes': 2028, 'anger': 2029, 'thrusts': 2030, 'answers': 2031, 'sharp': 2032, 'spurring': 2033, 'onward': 2034, 'li': 2035, 'bearer': 2036, 'posting': 2037, 'extremity': 2038, 'mounted': 2039, 'winged': 2040, \"perfect'st\": 2041, 'neigh': 2042, 'fiery': 2043, 'race': 2044, 'jade': 2045, 'went': 2046, 'run': 2047, 'lii': 2048, 'key': 2049, 'locked': 2050, 'blunting': 2051, 'feasts': 2052, 'solemn': 2053, 'stones': 2054, 'thinly': 2055, 'placed': 2056, 'carcanet': 2057, 'wardrobe': 2058, 'robe': 2059, 'instant': 2060, 'unfolding': 2061, 'worthiness': 2062, 'liii': 2063, 'millions': 2064, 'describe': 2065, 'adonis': 2066, 'poorly': 2067, 'imitated': 2068, \"helen's\": 2069, 'grecian': 2070, 'tires': 2071, 'foison': 2072, 'external': 2073, 'liv': 2074, 'deem': 2075, 'blooms': 2076, 'dye': 2077, 'perfumed': 2078, 'tincture': 2079, 'wantonly': 2080, 'masked': 2081, 'discloses': 2082, \"unwoo'd\": 2083, 'odours': 2084, 'distills': 2085, 'lv': 2086, 'marble': 2087, 'monuments': 2088, 'contents': 2089, 'unswept': 2090, \"besmear'd\": 2091, 'sluttish': 2092, 'statues': 2093, 'overturn': 2094, 'broils': 2095, 'masonry': 2096, 'mars': 2097, 'sword': 2098, \"war's\": 2099, 'oblivious': 2100, 'enmity': 2101, 'room': 2102, 'ending': 2103, 'arise': 2104, 'lvi': 2105, 'renew': 2106, 'blunter': 2107, \"allay'd\": 2108, \"sharpen'd\": 2109, 'fullness': 2110, 'dullness': 2111, 'interim': 2112, 'banks': 2113, \"wish'd\": 2114, 'lvii': 2115, 'services': 2116, 'require': 2117, 'bid': 2118, 'servant': 2119, 'adieu': 2120, 'jealous': 2121, 'suppose': 2122, 'lviii': 2123, 'crave': 2124, 'beck': 2125, 'tame': 2126, 'sufferance': 2127, 'accusing': 2128, 'list': 2129, 'pardon': 2130, 'waiting': 2131, 'lix': 2132, 'brains': 2133, 'beguiled': 2134, 'labouring': 2135, 'backward': 2136, 'hundred': 2137, 'courses': 2138, 'composed': 2139, 'mended': 2140, 'revolution': 2141, 'admiring': 2142, 'lx': 2143, 'waves': 2144, 'pebbled': 2145, 'hasten': 2146, 'sequent': 2147, 'forwards': 2148, 'contend': 2149, 'nativity': 2150, 'crawls': 2151, 'maturity': 2152, 'wherewith': 2153, 'elipses': 2154, 'transfix': 2155, 'flourish': 2156, 'delves': 2157, 'parallels': 2158, 'rarities': 2159, 'mow': 2160, 'lxi': 2161, 'slumbers': 2162, 'broken': 2163, \"send'st\": 2164, 'pry': 2165, 'tenor': 2166, 'jealousy': 2167, 'awake': 2168, 'defeat': 2169, 'watchman': 2170, 'wake': 2171, 'lxii': 2172, 'possesseth': 2173, 'define': 2174, 'worths': 2175, 'surmount': 2176, 'indeed': 2177, 'beated': 2178, \"chopp'd\": 2179, \"tann'd\": 2180, 'contrary': 2181, 'iniquity': 2182, 'lxiii': 2183, \"crush'd\": 2184, 'worn': 2185, \"drain'd\": 2186, \"travell'd\": 2187, 'steepy': 2188, \"he's\": 2189, 'vanishing': 2190, 'confounding': 2191, 'cut': 2192, 'lxiv': 2193, 'defaced': 2194, 'towers': 2195, 'kingdom': 2196, 'firm': 2197, 'soil': 2198, 'watery': 2199, 'increasing': 2200, 'interchange': 2201, 'confounded': 2202, 'ruin': 2203, 'ruminate': 2204, 'choose': 2205, 'lxv': 2206, 'boundless': 2207, 'mortality': 2208, 'sways': 2209, 'honey': 2210, 'wreckful': 2211, 'siege': 2212, 'battering': 2213, 'rocks': 2214, 'impregnable': 2215, 'stout': 2216, 'gates': 2217, 'decays': 2218, 'fearful': 2219, 'meditation': 2220, 'spoil': 2221, 'miracle': 2222, 'lxvi': 2223, 'restful': 2224, 'beggar': 2225, 'needy': 2226, \"trimm'd\": 2227, 'jollity': 2228, 'purest': 2229, 'unhappily': 2230, 'guilded': 2231, 'shamefully': 2232, 'misplaced': 2233, 'rudely': 2234, 'strumpeted': 2235, 'wrongfully': 2236, 'disgraced': 2237, 'limping': 2238, 'disabled': 2239, 'authority': 2240, 'doctor': 2241, \"miscall'd\": 2242, 'simplicity': 2243, 'captive': 2244, 'lxvii': 2245, 'impiety': 2246, 'achieve': 2247, 'lace': 2248, 'society': 2249, 'imitate': 2250, 'indirectly': 2251, 'bankrupt': 2252, \"beggar'd\": 2253, 'blush': 2254, 'exchequer': 2255, 'gains': 2256, 'stores': 2257, 'lxviii': 2258, 'signs': 2259, 'durst': 2260, 'inhabit': 2261, 'tresses': 2262, 'sepulchres': 2263, 'shorn': 2264, 'fleece': 2265, 'robbing': 2266, 'dress': 2267, 'yore': 2268, 'lxix': 2269, 'voice': 2270, 'uttering': 2271, 'commend': 2272, 'accents': 2273, 'churls': 2274, 'matcheth': 2275, 'solve': 2276, 'lxx': 2277, \"slander's\": 2278, \"woo'd\": 2279, 'vice': 2280, \"present'st\": 2281, 'unstained': 2282, 'ambush': 2283, \"assail'd\": 2284, 'victor': 2285, 'charged': 2286, 'enlarged': 2287, 'kingdoms': 2288, 'owe': 2289, 'lxxi': 2290, 'surly': 2291, 'bell': 2292, 'warning': 2293, 'vilest': 2294, 'perhaps': 2295, 'compounded': 2296, 'clay': 2297, 'lxxii': 2298, 'task': 2299, 'recite': 2300, 'willingly': 2301, 'impart': 2302, 'shamed': 2303, 'lxxiii': 2304, 'few': 2305, 'boughs': 2306, 'choirs': 2307, 'late': 2308, 'sang': 2309, 'seest': 2310, 'twilight': 2311, 'sunset': 2312, 'fadeth': 2313, 'seals': 2314, \"see'st\": 2315, 'glowing': 2316, 'ashes': 2317, 'expire': 2318, 'consumed': 2319, \"nourish'd\": 2320, 'perceivest': 2321, 'lxxiv': 2322, 'arrest': 2323, 'carry': 2324, 'memorial': 2325, 'reviewest': 2326, 'review': 2327, 'consecrate': 2328, 'dregs': 2329, 'coward': 2330, \"wretch's\": 2331, 'remembered': 2332, 'contains': 2333, 'remains': 2334, 'lxxv': 2335, 'food': 2336, \"season'd\": 2337, 'strife': 2338, 'miser': 2339, 'enjoyer': 2340, 'filching': 2341, \"better'd\": 2342, 'feasting': 2343, 'clean': 2344, 'starved': 2345, 'pursuing': 2346, 'surfeit': 2347, 'gluttoning': 2348, 'lxxvi': 2349, 'variation': 2350, 'methods': 2351, 'showing': 2352, 'proceed': 2353, 'always': 2354, 'dressing': 2355, 'spending': 2356, 'already': 2357, 'lxxvii': 2358, 'vacant': 2359, \"mind's\": 2360, 'imprint': 2361, 'mouthed': 2362, 'graves': 2363, \"dial's\": 2364, 'shady': 2365, 'stealth': 2366, 'progress': 2367, 'contain': 2368, 'commit': 2369, 'blanks': 2370, 'children': 2371, 'nursed': 2372, \"deliver'd\": 2373, 'offices': 2374, 'profit': 2375, 'enrich': 2376, 'lxxviii': 2377, 'invoked': 2378, 'assistance': 2379, 'alien': 2380, 'poesy': 2381, 'disperse': 2382, 'aloft': 2383, 'fly': 2384, 'feathers': 2385, \"learned's\": 2386, 'wing': 2387, 'compile': 2388, 'arts': 2389, 'graced': 2390, 'advance': 2391, 'lxxix': 2392, \"decay'd\": 2393, 'deserves': 2394, 'travail': 2395, 'worthier': 2396, 'stole': 2397, 'behavior': 2398, 'afford': 2399, 'thank': 2400, 'owes': 2401, 'lxxx': 2402, 'faint': 2403, 'thereof': 2404, 'spends': 2405, 'proudest': 2406, 'inferior': 2407, 'broad': 2408, 'wilfully': 2409, 'shallowest': 2410, 'afloat': 2411, 'soundless': 2412, \"wreck'd\": 2413, 'boat': 2414, 'tall': 2415, 'building': 2416, 'goodly': 2417, 'lxxxi': 2418, 'epitaph': 2419, 'forgotten': 2420, 'immortal': 2421, 'entombed': 2422, 'breathers': 2423, 'breathes': 2424, 'mouths': 2425, 'lxxxii': 2426, 'attaint': 2427, \"o'erlook\": 2428, 'dedicated': 2429, 'writers': 2430, 'blessing': 2431, 'limit': 2432, 'enforced': 2433, 'fresher': 2434, 'stamp': 2435, 'devised': 2436, 'strained': 2437, 'rhetoric': 2438, 'sympathized': 2439, 'plain': 2440, 'abused': 2441, 'lxxxiii': 2442, 'exceed': 2443, 'debt': 2444, 'slept': 2445, 'extant': 2446, 'modern': 2447, 'impute': 2448, 'impair': 2449, 'lxxxiv': 2450, 'confine': 2451, 'immured': 2452, 'equal': 2453, 'lean': 2454, 'penury': 2455, 'writes': 2456, 'dignifies': 2457, 'counterpart': 2458, 'admired': 2459, 'blessings': 2460, 'lxxxv': 2461, 'richly': 2462, 'compiled': 2463, 'phrase': 2464, 'muses': 2465, 'filed': 2466, \"unletter'd\": 2467, 'clerk': 2468, \"'amen'\": 2469, 'hymn': 2470, 'able': 2471, \"polish'd\": 2472, 'refined': 2473, 'hearing': 2474, \"''tis\": 2475, 'hindmost': 2476, 'lxxxvi': 2477, 'ripe': 2478, 'inhearse': 2479, 'struck': 2480, 'compeers': 2481, 'astonished': 2482, 'affable': 2483, 'familiar': 2484, 'ghost': 2485, 'gulls': 2486, 'intelligence': 2487, 'victors': 2488, 'countenance': 2489, 'enfeebled': 2490, 'lxxxvii': 2491, 'farewell': 2492, 'estimate': 2493, 'releasing': 2494, 'determinate': 2495, 'granting': 2496, 'deserving': 2497, 'patent': 2498, 'swerving': 2499, 'mistaking': 2500, 'misprision': 2501, 'waking': 2502, 'lxxxviii': 2503, 'disposed': 2504, 'weakness': 2505, \"conceal'd\": 2506, 'attainted': 2507, 'gainer': 2508, 'lxxxix': 2509, 'lameness': 2510, 'halt': 2511, 'strangle': 2512, 'profane': 2513, 'debate': 2514, 'xc': 2515, 'join': 2516, 'drop': 2517, \"'scoped\": 2518, 'rearward': 2519, \"conquer'd\": 2520, 'windy': 2521, 'rainy': 2522, 'linger': 2523, 'purposed': 2524, 'overthrow': 2525, 'griefs': 2526, 'onset': 2527, 'strains': 2528, 'compared': 2529, 'xci': 2530, \"bodies'\": 2531, 'garments': 2532, 'fangled': 2533, 'hounds': 2534, 'particulars': 2535, 'richer': 2536, 'prouder': 2537, \"garments'\": 2538, 'horses': 2539, 'xcii': 2540, 'term': 2541, 'depend': 2542, 'revolt': 2543, 'xciii': 2544, 'supposing': 2545, 'hatred': 2546, \"many's\": 2547, 'history': 2548, 'moods': 2549, 'frowns': 2550, 'decree': 2551, 'workings': 2552, \"eve's\": 2553, 'apple': 2554, 'xciv': 2555, 'hurt': 2556, 'unmoved': 2557, 'rightly': 2558, 'inherit': 2559, 'lords': 2560, 'owners': 2561, 'stewards': 2562, 'outbraves': 2563, 'dignity': 2564, 'sourest': 2565, 'lilies': 2566, 'fester': 2567, 'xcv': 2568, 'fragrant': 2569, 'spot': 2570, 'budding': 2571, 'enclose': 2572, 'dispraise': 2573, 'naming': 2574, 'blesses': 2575, 'vices': 2576, 'habitation': 2577, 'chose': 2578, 'veil': 2579, 'heed': 2580, 'hardest': 2581, 'xcvi': 2582, 'wantonness': 2583, 'resort': 2584, 'finger': 2585, 'throned': 2586, 'queen': 2587, 'truths': 2588, 'translated': 2589, 'lambs': 2590, 'stem': 2591, 'wolf': 2592, 'lamb': 2593, 'translate': 2594, 'gazers': 2595, 'mightst': 2596, 'xcvii': 2597, 'fleeting': 2598, 'freezings': 2599, 'felt': 2600, \"december's\": 2601, 'teeming': 2602, 'big': 2603, 'wanton': 2604, \"widow'd\": 2605, 'wombs': 2606, \"lords'\": 2607, 'abundant': 2608, 'orphans': 2609, \"unfather'd\": 2610, 'fruit': 2611, 'pleasures': 2612, 'cheer': 2613, 'dreading': 2614, 'xcviii': 2615, 'pied': 2616, \"dress'd\": 2617, 'trim': 2618, 'saturn': 2619, \"laugh'd\": 2620, \"leap'd\": 2621, 'different': 2622, 'lap': 2623, \"lily's\": 2624, 'vermilion': 2625, 'figures': 2626, 'xcix': 2627, 'forward': 2628, 'smells': 2629, 'purple': 2630, 'soft': 2631, 'dwells': 2632, 'grossly': 2633, 'lily': 2634, 'condemned': 2635, 'marjoram': 2636, 'hair': 2637, 'fearfully': 2638, 'third': 2639, \"annex'd\": 2640, 'theft': 2641, 'vengeful': 2642, 'c': 2643, \"forget'st\": 2644, \"spend'st\": 2645, 'fury': 2646, 'darkening': 2647, 'forgetful': 2648, 'redeem': 2649, 'idly': 2650, 'resty': 2651, 'wrinkle': 2652, 'graven': 2653, 'satire': 2654, 'spoils': 2655, 'faster': 2656, \"prevent'st\": 2657, 'ci': 2658, 'truant': 2659, 'amends': 2660, 'dignified': 2661, \"'truth\": 2662, \"intermix'd\": 2663, \"for't\": 2664, 'ages': 2665, 'office': 2666, 'cii': 2667, \"strengthen'd\": 2668, 'merchandized': 2669, 'esteeming': 2670, \"owner's\": 2671, 'publish': 2672, 'wont': 2673, 'philomel': 2674, 'front': 2675, 'stops': 2676, 'pipe': 2677, 'pleasant': 2678, 'mournful': 2679, 'hush': 2680, 'wild': 2681, 'burthens': 2682, 'bough': 2683, 'ciii': 2684, 'beside': 2685, 'appears': 2686, 'dulling': 2687, 'striving': 2688, 'mar': 2689, 'verses': 2690, 'gifts': 2691, 'civ': 2692, 'eyed': 2693, 'forests': 2694, 'shook': 2695, \"summers'\": 2696, 'springs': 2697, 'process': 2698, 'junes': 2699, \"burn'd\": 2700, 'figure': 2701, 'perceived': 2702, 'unbred': 2703, 'cv': 2704, 'idolatry': 2705, 'idol': 2706, 'alike': 2707, 'songs': 2708, 'expressing': 2709, 'difference': 2710, 'varying': 2711, 'themes': 2712, 'cvi': 2713, 'chronicle': 2714, 'wasted': 2715, 'descriptions': 2716, 'wights': 2717, 'beautiful': 2718, 'ladies': 2719, 'knights': 2720, 'blazon': 2721, 'lip': 2722, 'prophecies': 2723, 'prefiguring': 2724, 'divining': 2725, 'cvii': 2726, 'prophetic': 2727, 'dreaming': 2728, 'eclipse': 2729, 'endured': 2730, 'augurs': 2731, 'presage': 2732, 'incertainties': 2733, 'crown': 2734, 'proclaims': 2735, 'olives': 2736, 'endless': 2737, 'drops': 2738, 'balmy': 2739, 'subscribes': 2740, 'insults': 2741, 'tribes': 2742, \"tyrants'\": 2743, 'crests': 2744, 'tombs': 2745, 'cviii': 2746, 'figured': 2747, 'register': 2748, 'prayers': 2749, \"hallow'd\": 2750, 'case': 2751, 'weighs': 2752, 'necessary': 2753, 'aye': 2754, 'page': 2755, 'cix': 2756, 'qualify': 2757, 'easy': 2758, 'ranged': 2759, 'travels': 2760, 'exchanged': 2761, \"reign'd\": 2762, 'besiege': 2763, 'kinds': 2764, 'preposterously': 2765, \"stain'd\": 2766, 'universe': 2767, 'cx': 2768, 'motley': 2769, 'gored': 2770, 'sold': 2771, 'cheap': 2772, 'offences': 2773, 'affections': 2774, 'askance': 2775, 'blenches': 2776, 'essays': 2777, 'grind': 2778, 'older': 2779, 'cxi': 2780, 'harmful': 2781, 'provide': 2782, 'breeds': 2783, 'subdued': 2784, \"dyer's\": 2785, \"renew'd\": 2786, 'patient': 2787, 'eisel': 2788, 'penance': 2789, 'correct': 2790, 'correction': 2791, 'assure': 2792, 'cxii': 2793, 'impression': 2794, 'scandal': 2795, \"stamp'd\": 2796, \"steel'd\": 2797, 'changes': 2798, 'profound': 2799, 'abysm': 2800, 'throw': 2801, 'voices': 2802, \"adder's\": 2803, 'critic': 2804, 'flatterer': 2805, 'stopped': 2806, 'dispense': 2807, 'cxiii': 2808, 'governs': 2809, 'about': 2810, 'function': 2811, 'partly': 2812, 'effectually': 2813, 'delivers': 2814, 'bird': 2815, 'latch': 2816, 'vision': 2817, 'rudest': 2818, 'gentlest': 2819, \"deformed'st\": 2820, 'creature': 2821, 'dove': 2822, 'shapes': 2823, 'feature': 2824, 'incapable': 2825, 'cxiv': 2826, \"monarch's\": 2827, 'saith': 2828, 'monsters': 2829, 'indigest': 2830, 'cherubins': 2831, 'resemble': 2832, 'creating': 2833, 'beams': 2834, 'assemble': 2835, 'kingly': 2836, 'drinks': 2837, 'gust': 2838, \"'greeing\": 2839, 'cup': 2840, \"poison'd\": 2841, 'lesser': 2842, 'begin': 2843, 'cxv': 2844, 'knew': 2845, 'afterwards': 2846, 'reckoning': 2847, \"million'd\": 2848, 'accidents': 2849, 'creep': 2850, 'decrees': 2851, 'tan': 2852, \"sharp'st\": 2853, 'intents': 2854, 'divert': 2855, 'altering': 2856, 'fearing': 2857, 'tyranny': 2858, \"'now\": 2859, 'certain': 2860, 'incertainty': 2861, 'crowning': 2862, 'cxvi': 2863, 'marriage': 2864, 'admit': 2865, 'impediments': 2866, 'alteration': 2867, 'bends': 2868, 'remover': 2869, 'fixed': 2870, 'tempests': 2871, 'wandering': 2872, \"worth's\": 2873, 'rosy': 2874, \"sickle's\": 2875, 'compass': 2876, 'weeks': 2877, 'error': 2878, 'cxvii': 2879, 'scanted': 2880, 'repay': 2881, 'frequent': 2882, 'purchased': 2883, 'hoisted': 2884, 'transport': 2885, 'wilfulness': 2886, 'surmise': 2887, 'accumulate': 2888, 'shoot': 2889, \"waken'd\": 2890, 'appeal': 2891, 'cxviii': 2892, 'appetites': 2893, 'eager': 2894, 'prevent': 2895, 'sicken': 2896, 'sickness': 2897, 'purge': 2898, 'tuff': 2899, 'cloying': 2900, 'sauces': 2901, 'welfare': 2902, 'meetness': 2903, 'needing': 2904, 'anticipate': 2905, 'ills': 2906, 'medicine': 2907, 'cured': 2908, 'lesson': 2909, 'drugs': 2910, 'poison': 2911, 'cxix': 2912, 'drunk': 2913, 'siren': 2914, 'limbecks': 2915, 'applying': 2916, 'committed': 2917, 'spheres': 2918, 'fitted': 2919, 'distraction': 2920, 'madding': 2921, 'rebuked': 2922, 'cxx': 2923, 'befriends': 2924, 'transgression': 2925, 'nerves': 2926, \"hammer'd\": 2927, \"you've\": 2928, 'weigh': 2929, 'suffered': 2930, 'deepest': 2931, 'hard': 2932, 'hits': 2933, \"tender'd\": 2934, 'wounded': 2935, 'bosoms': 2936, 'fits': 2937, 'fee': 2938, 'ransoms': 2939, 'cxxi': 2940, 'reproach': 2941, 'adulterate': 2942, 'salutation': 2943, 'sportive': 2944, 'frailer': 2945, 'spies': 2946, 'abuses': 2947, 'reckon': 2948, 'bevel': 2949, 'maintain': 2950, 'badness': 2951, 'cxxii': 2952, \"character'd\": 2953, 'lasting': 2954, 'beyond': 2955, 'faculty': 2956, 'subsist': 2957, 'oblivion': 2958, \"miss'd\": 2959, 'retention': 2960, 'tallies': 2961, 'score': 2962, 'receive': 2963, 'import': 2964, 'forgetfulness': 2965, 'cxxiii': 2966, 'pyramids': 2967, 'novel': 2968, 'dressings': 2969, 'dates': 2970, 'admire': 2971, 'foist': 2972, 'rather': 2973, 'heard': 2974, 'registers': 2975, 'defy': 2976, 'wondering': 2977, 'records': 2978, 'continual': 2979, 'cxxiv': 2980, \"unfather'd'\": 2981, \"gather'd\": 2982, 'builded': 2983, 'accident': 2984, 'suffers': 2985, 'smiling': 2986, 'pomp': 2987, 'falls': 2988, 'blow': 2989, 'thralled': 2990, 'inviting': 2991, 'heretic': 2992, 'leases': 2993, \"number'd\": 2994, 'hugely': 2995, 'politic': 2996, 'drowns': 2997, 'fools': 2998, 'cxxv': 2999, 'extern': 3000, 'honouring': 3001, 'bases': 3002, 'ruining': 3003, 'dwellers': 3004, 'paying': 3005, 'rent': 3006, 'compound': 3007, 'forgoing': 3008, 'savour': 3009, 'pitiful': 3010, 'thrivers': 3011, 'gazing': 3012, 'oblation': 3013, \"mix'd\": 3014, 'seconds': 3015, \"suborn'd\": 3016, 'informer': 3017, \"impeach'd\": 3018, 'cxxvi': 3019, 'fickle': 3020, 'sickle': 3021, 'waning': 3022, \"show'st\": 3023, 'withering': 3024, \"grow'st\": 3025, 'wrack': 3026, 'goest': 3027, 'onwards': 3028, 'minion': 3029, 'detain': 3030, \"delay'd\": 3031, \"answer'd\": 3032, 'quietus': 3033, 'cxxvii': 3034, 'counted': 3035, 'successive': 3036, \"slander'd\": 3037, 'fairing': 3038, \"art's\": 3039, 'bower': 3040, 'brows': 3041, 'raven': 3042, 'suited': 3043, 'slandering': 3044, 'cxxviii': 3045, \"play'st\": 3046, 'gently': 3047, \"sway'st\": 3048, 'wiry': 3049, 'harvest': 3050, 'reap': 3051, \"wood's\": 3052, 'boldness': 3053, 'tickled': 3054, 'situation': 3055, 'dancing': 3056, 'chips': 3057, 'walk': 3058, 'gait': 3059, 'cxxix': 3060, 'savage': 3061, \"enjoy'd\": 3062, 'hunted': 3063, 'hated': 3064, \"swallow'd\": 3065, 'bait': 3066, 'taker': 3067, 'bliss': 3068, 'proposed': 3069, 'cxxx': 3070, 'coral': 3071, \"lips'\": 3072, 'snow': 3073, 'breasts': 3074, 'dun': 3075, 'hairs': 3076, \"damask'd\": 3077, 'reeks': 3078, 'treads': 3079, 'cxxxi': 3080, 'tyrannous': 3081, 'proudly': 3082, 'err': 3083, 'groans': 3084, 'neck': 3085, \"judgment's\": 3086, 'proceeds': 3087, 'cxxxii': 3088, 'pitying': 3089, 'torments': 3090, 'ruth': 3091, 'grey': 3092, 'east': 3093, 'ushers': 3094, 'sober': 3095, 'become': 3096, 'beseem': 3097, 'herself': 3098, 'cxxxiii': 3099, 'beshrew': 3100, \"is't\": 3101, 'slavery': 3102, \"sweet'st\": 3103, 'harder': 3104, \"engross'd\": 3105, 'forsaken': 3106, 'threefold': 3107, \"cross'd\": 3108, 'prison': 3109, 'ward': 3110, \"whoe'er\": 3111, 'rigor': 3112, 'gaol': 3113, 'perforce': 3114, 'cxxxiv': 3115, \"confess'd\": 3116, 'mortgaged': 3117, 'restore': 3118, 'covetous': 3119, \"learn'd\": 3120, 'surety': 3121, 'bond': 3122, 'bind': 3123, 'statute': 3124, \"put'st\": 3125, 'sue': 3126, 'debtor': 3127, 'whole': 3128, 'cxxxv': 3129, 'whoever': 3130, 'boot': 3131, 'overplus': 3132, 'spacious': 3133, 'acceptance': 3134, 'addeth': 3135, 'beseechers': 3136, 'cxxxvi': 3137, 'admitted': 3138, 'receipt': 3139, \"reckon'd\": 3140, 'untold': 3141, \"stores'\": 3142, 'cxxxvii': 3143, 'partial': 3144, \"anchor'd\": 3145, 'bay': 3146, \"eyes'\": 3147, 'forged': 3148, 'hooks': 3149, 'several': 3150, 'plot': 3151, 'erred': 3152, \"transferr'd\": 3153, 'cxxxviii': 3154, 'swears': 3155, \"untutor'd\": 3156, 'unlearned': 3157, 'subtleties': 3158, 'simply': 3159, 'credit': 3160, 'sides': 3161, \"suppress'd\": 3162, 'unjust': 3163, 'habit': 3164, \"flatter'd\": 3165, 'cxxxix': 3166, 'justify': 3167, 'slay': 3168, \"need'st\": 3169, \"press'd\": 3170, 'defense': 3171, 'dart': 3172, 'outright': 3173, 'rid': 3174, 'cxl': 3175, 'press': 3176, 'manner': 3177, 'testy': 3178, 'news': 3179, 'physicians': 3180, 'madness': 3181, 'wresting': 3182, 'slanderers': 3183, 'believed': 3184, 'cxli': 3185, 'pleased': 3186, \"tongue's\": 3187, 'tune': 3188, 'delighted': 3189, 'prone': 3190, 'invited': 3191, 'senses': 3192, 'dissuade': 3193, 'foolish': 3194, \"unsway'd\": 3195, 'likeness': 3196, 'awards': 3197, 'cxlii': 3198, 'merits': 3199, 'reproving': 3200, 'scarlet': 3201, 'ornaments': 3202, \"seal'd\": 3203, \"robb'd\": 3204, \"beds'\": 3205, 'revenues': 3206, 'rents': 3207, 'woo': 3208, 'importune': 3209, 'deserve': 3210, 'pitied': 3211, 'denied': 3212, 'cxliii': 3213, 'housewife': 3214, 'runs': 3215, \"feather'd\": 3216, 'dispatch': 3217, 'neglected': 3218, 'busy': 3219, 'prizing': 3220, \"infant's\": 3221, \"runn'st\": 3222, 'afar': 3223, 'pray': 3224, 'loud': 3225, 'crying': 3226, 'cxliv': 3227, 'suggest': 3228, 'worser': 3229, \"colour'd\": 3230, 'female': 3231, 'tempteth': 3232, 'saint': 3233, 'devil': 3234, 'wooing': 3235, 'purity': 3236, 'directly': 3237, 'doubt': 3238, 'cxlv': 3239, 'breathed': 3240, \"languish'd\": 3241, 'woeful': 3242, 'mercy': 3243, 'chiding': 3244, \"follow'd\": 3245, 'flown': 3246, 'threw': 3247, 'saved': 3248, 'saying': 3249, \"'not\": 3250, 'cxlvi': 3251, 'centre': 3252, 'rebel': 3253, 'powers': 3254, 'array': 3255, 'dearth': 3256, 'costly': 3257, 'inheritors': 3258, 'excess': 3259, 'charge': 3260, \"servant's\": 3261, 'aggravate': 3262, 'buy': 3263, 'terms': 3264, 'selling': 3265, 'dross': 3266, 'fed': 3267, 'feed': 3268, \"there's\": 3269, 'dying': 3270, 'cxlvii': 3271, 'longing': 3272, 'nurseth': 3273, 'disease': 3274, 'preserve': 3275, 'uncertain': 3276, 'sickly': 3277, 'physician': 3278, 'angry': 3279, 'prescriptions': 3280, 'desperate': 3281, 'except': 3282, 'frantic': 3283, 'unrest': 3284, 'discourse': 3285, \"madmen's\": 3286, 'random': 3287, 'cxlviii': 3288, 'correspondence': 3289, 'censures': 3290, 'falsely': 3291, 'aright': 3292, 'denote': 3293, \"'no\": 3294, \"vex'd\": 3295, 'watching': 3296, 'marvel': 3297, 'mistake': 3298, 'sees': 3299, 'clears': 3300, \"keep'st\": 3301, 'cxlix': 3302, 'partake': 3303, 'hateth': 3304, \"frown'st\": 3305, 'fawn': 3306, \"lour'st\": 3307, 'revenge': 3308, 'service': 3309, 'worship': 3310, 'commanded': 3311, 'cl': 3312, 'insufficiency': 3313, 'brightness': 3314, 'refuse': 3315, 'warrantize': 3316, 'exceeds': 3317, 'unworthiness': 3318, 'raised': 3319, 'cli': 3320, 'cheater': 3321, 'betraying': 3322, 'nobler': 3323, 'treason': 3324, 'stays': 3325, 'rising': 3326, 'drudge': 3327, \"'love'\": 3328, 'clii': 3329, 'swearing': 3330, 'act': 3331, 'torn': 3332, 'vowing': 3333, \"oaths'\": 3334, 'breach': 3335, 'twenty': 3336, 'misuse': 3337, 'honest': 3338, 'enlighten': 3339, 'blindness': 3340, 'cliii': 3341, 'maid': 3342, \"dian's\": 3343, 'kindling': 3344, 'quickly': 3345, 'valley': 3346, 'fountain': 3347, 'endure': 3348, 'seething': 3349, 'fired': 3350, 'trial': 3351, 'touch': 3352, 'withal': 3353, 'thither': 3354, 'hied': 3355, \"distemper'd\": 3356, 'cliv': 3357, 'lying': 3358, 'inflaming': 3359, 'nymphs': 3360, \"vow'd\": 3361, 'chaste': 3362, 'tripping': 3363, 'votary': 3364, 'legions': 3365, \"warm'd\": 3366, 'sleeping': 3367, 'virgin': 3368, \"disarm'd\": 3369, 'quenched': 3370, 'cool': 3371, 'thrall': 3372, 'heats': 3373, 'cools': 3374}\n" + ] + } + ], "source": [ - "# Your code here :" + "# STep 1:\n", + "tokenizer = Tokenizer()\n", + "\n", + "#Step 2: \n", + "tokenizer.fit_on_texts(corpus)\n", + "\n", + "# See the corpus\n", + "print(tokenizer.word_index)\n" ] }, { @@ -109,11 +115,24 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total words: 3375\n" + ] + } + ], "source": [ - "# Your code here :" + "# len\n", + "vocab_size = len(tokenizer.word_index)\n", + "\n", + "total_words = vocab_size + 1\n", + "\n", + "print(f\"Total words: {total_words}\")\n" ] }, { @@ -130,11 +149,20 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ - "# Your code here :" + "input_sequences = []\n", + "\n", + "for line in corpus:\n", + " \n", + " token_list = tokenizer.texts_to_sequences([line])[0]\n", + " \n", + " \n", + " for i in range(1, len(token_list) + 1):\n", + " n_gram_sequence = token_list[:i]\n", + " input_sequences.append(n_gram_sequence)" ] }, { @@ -149,11 +177,18 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "# Your code here :" + "# 1. Calculate\n", + "max_sequence_len = max([len(seq) for seq in input_sequences])\n", + "\n", + "# 2. Apply pad_sequences\n", + "input_sequences = pad_sequences(input_sequences, maxlen=max_sequence_len, padding='pre')\n", + "\n", + "# 3. to numpy\n", + "input_sequences = np.array(input_sequences)" ] }, { @@ -170,14 +205,15 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "metadata": { "id": "PRnDnCW-Z7qv", "tags": [] }, "outputs": [], "source": [ - "# Your code here :" + "# predictors y labels\n", + "predictors, labels = input_sequences[:,:-1], input_sequences[:,-1]" ] }, { @@ -197,11 +233,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ - "# Your code here :" + "from tensorflow.keras.utils import to_categorical\n", + "\n", + "labels = to_categorical(labels, num_classes=total_words)" ] }, { @@ -229,15 +267,39 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ - "model = Sequential([\n", - "\n", - " # Your code here :\n", - " \n", - "])" + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Embedding, Bidirectional, LSTM, Dropout, Dense\n", + "from tensorflow.keras.regularizers import l2\n", + "\n", + "model = Sequential()\n", + "\n", + "model.add(\n", + " Embedding(\n", + " input_dim=total_words, # total_words = vocab_size + 1\n", + " output_dim=100, # dimensiones de embedding\n", + " input_shape=(max_sequence_len - 1,)\n", + " )\n", + ")\n", + "\n", + "model.add(\n", + " Bidirectional(\n", + " LSTM(150, return_sequences=True)\n", + " )\n", + ")\n", + "model.add(Dropout(0.2))\n", + "model.add(LSTM(100))\n", + "model.add(\n", + " Dense(\n", + " total_words // 2, \n", + " activation='relu',\n", + " kernel_regularizer=l2(0.01)\n", + " )\n", + ")\n", + "model.add(Dense(total_words, activation='softmax'))" ] }, { @@ -251,11 +313,11 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "# Your code here :" + "model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])" ] }, { @@ -269,11 +331,105 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
Model: \"sequential_2\"\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1mModel: \"sequential_2\"\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+       "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+       "│ embedding_2 (Embedding)         │ (None, 10, 100)        │       337,500 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ bidirectional_1 (Bidirectional) │ (None, 10, 300)        │       301,200 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dropout_1 (Dropout)             │ (None, 10, 300)        │             0 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ lstm_3 (LSTM)                   │ (None, 100)            │       160,400 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_2 (Dense)                 │ (None, 1687)           │       170,387 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_3 (Dense)                 │ (None, 3375)           │     5,697,000 │\n",
+       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", + "│ embedding_2 (\u001b[38;5;33mEmbedding\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m337,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ bidirectional_1 (\u001b[38;5;33mBidirectional\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m, \u001b[38;5;34m300\u001b[0m) │ \u001b[38;5;34m301,200\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dropout_1 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m, \u001b[38;5;34m300\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ lstm_3 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m160,400\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_2 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1687\u001b[0m) │ \u001b[38;5;34m170,387\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_3 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m3375\u001b[0m) │ \u001b[38;5;34m5,697,000\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Total params: 6,666,487 (25.43 MB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m6,666,487\u001b[0m (25.43 MB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Trainable params: 6,666,487 (25.43 MB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m6,666,487\u001b[0m (25.43 MB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Your code here :" + "model.summary()" ] }, { @@ -293,14 +449,129 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 18, "metadata": { "id": "AIg2f1HBxqof", "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 48ms/step - accuracy: 0.0225 - loss: 7.2191\n", + "Epoch 2/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 47ms/step - accuracy: 0.0243 - loss: 6.4371\n", + "Epoch 3/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 48ms/step - accuracy: 0.0302 - loss: 6.2966\n", + "Epoch 4/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 48ms/step - accuracy: 0.0349 - loss: 6.1826\n", + "Epoch 5/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 53ms/step - accuracy: 0.0458 - loss: 6.0919\n", + "Epoch 6/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 74ms/step - accuracy: 0.0475 - loss: 5.9980\n", + "Epoch 7/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m50s\u001b[0m 88ms/step - accuracy: 0.0468 - loss: 5.9601\n", + "Epoch 8/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 81ms/step - accuracy: 0.0537 - loss: 5.8517\n", + "Epoch 9/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m49s\u001b[0m 87ms/step - accuracy: 0.0523 - loss: 5.7960\n", + "Epoch 10/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 71ms/step - accuracy: 0.0595 - loss: 5.6958\n", + "Epoch 11/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 50ms/step - accuracy: 0.0618 - loss: 5.6305\n", + "Epoch 12/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m37s\u001b[0m 67ms/step - accuracy: 0.0660 - loss: 5.5459\n", + "Epoch 13/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m31s\u001b[0m 55ms/step - accuracy: 0.0694 - loss: 5.4550\n", + "Epoch 14/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 45ms/step - accuracy: 0.0727 - loss: 5.3912\n", + "Epoch 15/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 44ms/step - accuracy: 0.0794 - loss: 5.2880\n", + "Epoch 16/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m24s\u001b[0m 44ms/step - accuracy: 0.0823 - loss: 5.2154\n", + "Epoch 17/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m24s\u001b[0m 44ms/step - accuracy: 0.0908 - loss: 5.1238\n", + "Epoch 18/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m24s\u001b[0m 43ms/step - accuracy: 0.0916 - loss: 5.0585\n", + "Epoch 19/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 44ms/step - accuracy: 0.0985 - loss: 4.9839\n", + "Epoch 20/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m37s\u001b[0m 66ms/step - accuracy: 0.1010 - loss: 4.9184\n", + "Epoch 21/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m43s\u001b[0m 77ms/step - accuracy: 0.1089 - loss: 4.8218\n", + "Epoch 22/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m42s\u001b[0m 76ms/step - accuracy: 0.1137 - loss: 4.7665\n", + "Epoch 23/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m50s\u001b[0m 89ms/step - accuracy: 0.1257 - loss: 4.6758\n", + "Epoch 24/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m42s\u001b[0m 76ms/step - accuracy: 0.1292 - loss: 4.6163\n", + "Epoch 25/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m39s\u001b[0m 70ms/step - accuracy: 0.1327 - loss: 4.5472\n", + "Epoch 26/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m39s\u001b[0m 70ms/step - accuracy: 0.1440 - loss: 4.4764\n", + "Epoch 27/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m39s\u001b[0m 71ms/step - accuracy: 0.1484 - loss: 4.4308\n", + "Epoch 28/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 72ms/step - accuracy: 0.1563 - loss: 4.3327\n", + "Epoch 29/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m39s\u001b[0m 71ms/step - accuracy: 0.1713 - loss: 4.2780\n", + "Epoch 30/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 73ms/step - accuracy: 0.1871 - loss: 4.1655\n", + "Epoch 31/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m43s\u001b[0m 77ms/step - accuracy: 0.1932 - loss: 4.1240\n", + "Epoch 32/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 74ms/step - accuracy: 0.2105 - loss: 4.0377\n", + "Epoch 33/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m42s\u001b[0m 75ms/step - accuracy: 0.2127 - loss: 4.0082\n", + "Epoch 34/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m36s\u001b[0m 64ms/step - accuracy: 0.2368 - loss: 3.9187\n", + "Epoch 35/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 48ms/step - accuracy: 0.2479 - loss: 3.8894\n", + "Epoch 36/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 45ms/step - accuracy: 0.2597 - loss: 3.8256\n", + "Epoch 37/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 46ms/step - accuracy: 0.2726 - loss: 3.7598\n", + "Epoch 38/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 46ms/step - accuracy: 0.2788 - loss: 3.6959\n", + "Epoch 39/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 47ms/step - accuracy: 0.2956 - loss: 3.6381\n", + "Epoch 40/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 47ms/step - accuracy: 0.3038 - loss: 3.5788\n", + "Epoch 41/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 47ms/step - accuracy: 0.3208 - loss: 3.5089\n", + "Epoch 42/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 46ms/step - accuracy: 0.3339 - loss: 3.4865\n", + "Epoch 43/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 45ms/step - accuracy: 0.3327 - loss: 3.4398\n", + "Epoch 44/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 50ms/step - accuracy: 0.3548 - loss: 3.3533\n", + "Epoch 45/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 48ms/step - accuracy: 0.3614 - loss: 3.3298\n", + "Epoch 46/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 47ms/step - accuracy: 0.3767 - loss: 3.2476\n", + "Epoch 47/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 47ms/step - accuracy: 0.3831 - loss: 3.2177\n", + "Epoch 48/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 48ms/step - accuracy: 0.3836 - loss: 3.2306\n", + "Epoch 49/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 48ms/step - accuracy: 0.4021 - loss: 3.1393\n", + "Epoch 50/50\n", + "\u001b[1m557/557\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 49ms/step - accuracy: 0.4104 - loss: 3.1023\n", + "Final accuracy: 39.83%\n" + ] + } + ], "source": [ - "# Your code here :" + "history = model.fit(\n", + " predictors, \n", + " labels, \n", + " epochs=50, \n", + " verbose=1 \n", + ")\n", + "\n", + "print(f\"Final accuracy: {history.history['accuracy'][-1]:.2%}\")\n" ] }, { @@ -319,14 +590,53 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 20, "metadata": { "id": "1fXTEO3GJ282", "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Your code here :" + "import matplotlib.pyplot as plt\n", + "\n", + "# Historial\n", + "acc = history.history['accuracy']\n", + "loss = history.history['loss']\n", + "\n", + "# 1. Accuracy\n", + "plt.plot(acc)\n", + "plt.title(\"Training Accuracy\")\n", + "plt.xlabel(\"Epoch\")\n", + "plt.ylabel(\"Accuracy\")\n", + "plt.show()\n", + "\n", + "# 2. Loss\n", + "plt.plot(loss)\n", + "plt.title(\"Training Loss\")\n", + "plt.xlabel(\"Epoch\")\n", + "plt.ylabel(\"Loss\")\n", + "plt.show()" ] }, { @@ -345,11 +655,12 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ - "# Your code here :" + "seed_text = \"The AI is amazing\"\n", + "next_words = 20 " ] }, { @@ -365,14 +676,41 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 27, "metadata": { "id": "6Vc6PHgxa6Hm", "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The AI is amazing is gracious doth now appetite by thee subscribes look more ' can so near thee ' find so prove show\n" + ] + } + ], "source": [ - "# Your code here :" + "import numpy as np\n", + "\n", + "for _ in range(next_words):\n", + " \n", + " token_list = tokenizer.texts_to_sequences([seed_text])[0]\n", + "\n", + " token_list = pad_sequences([token_list], maxlen=max_sequence_len - 1, padding='pre')\n", + "\n", + " predicted_probs = model.predict(token_list, verbose=0)\n", + " \n", + "\n", + " predicted_word_index = np.argmax(predicted_probs, axis=-1)[0]\n", + "\n", + "\n", + " for word, index in tokenizer.word_index.items():\n", + " if index == predicted_word_index:\n", + " seed_text += ' ' + word\n", + " break\n", + "\n", + "print(seed_text)\n" ] }, { @@ -384,12 +722,121 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I want a new computer concord and more strong account of kings me of one 'will ' dear heart fled me so near be '\n" + ] + } + ], "source": [ - "# Your code here :" + "seed_text = \"I want a new computer\"\n", + "next_words = 20 \n", + "\n", + "for _ in range(next_words):\n", + " \n", + " token_list = tokenizer.texts_to_sequences([seed_text])[0]\n", + "\n", + " token_list = pad_sequences([token_list], maxlen=max_sequence_len - 1, padding='pre')\n", + "\n", + " predicted_probs = model.predict(token_list, verbose=0)\n", + " \n", + "\n", + " predicted_word_index = np.argmax(predicted_probs, axis=-1)[0]\n", + "\n", + "\n", + " for word, index in tokenizer.word_index.items():\n", + " if index == predicted_word_index:\n", + " seed_text += ' ' + word\n", + " break\n", + "\n", + "print(seed_text)\n" ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Where is New York time which youngly thou bestowest gone more days so near me so ' can say thee look by look my\n" + ] + } + ], + "source": [ + "seed_text = \"Where is New York\"\n", + "next_words = 20 \n", + "\n", + "for _ in range(next_words):\n", + " \n", + " token_list = tokenizer.texts_to_sequences([seed_text])[0]\n", + "\n", + " token_list = pad_sequences([token_list], maxlen=max_sequence_len - 1, padding='pre')\n", + "\n", + " predicted_probs = model.predict(token_list, verbose=0)\n", + " \n", + "\n", + " predicted_word_index = np.argmax(predicted_probs, axis=-1)[0]\n", + "\n", + "\n", + " for word, index in tokenizer.word_index.items():\n", + " if index == predicted_word_index:\n", + " seed_text += ' ' + word\n", + " break\n", + "\n", + "print(seed_text)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Im in the beach world besides faster than brain so bad do ' is old 'will' sweet end hour still you days ' so\n" + ] + } + ], + "source": [ + "seed_text = \"Im in the beach\"\n", + "next_words = 20 \n", + "\n", + "for _ in range(next_words):\n", + " \n", + " token_list = tokenizer.texts_to_sequences([seed_text])[0]\n", + "\n", + " token_list = pad_sequences([token_list], maxlen=max_sequence_len - 1, padding='pre')\n", + "\n", + " predicted_probs = model.predict(token_list, verbose=0)\n", + " \n", + "\n", + " predicted_word_index = np.argmax(predicted_probs, axis=-1)[0]\n", + "\n", + "\n", + " for word, index in tokenizer.word_index.items():\n", + " if index == predicted_word_index:\n", + " seed_text += ' ' + word\n", + " break\n", + "\n", + "print(seed_text)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -414,7 +861,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.11.5" } }, "nbformat": 4,