{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": { "id": "DKpp1EzDQXDt" }, "source": [ "### Obejective\n", "We have to make a model which translate Italian to English\n", "\n", "### Basic Information\n", "\n", "<pre>\n", "1. Download the Italian to English translation dataset from <a href=\"http://www.manythings.org/anki/ita-eng.zip\">here</a>\n", "\n", "2. Preprocess that data. \n", "\n", "3. Encoder and Decoder architecture with \n", "\n", "Encoder - with 1 layer LSTM \n", "Decoder - with 1 layer LSTM\n", "attention - \n", "\n", "4. In Global attention, we have 3 types of scoring functions.\n", " As a part of this assignment <strong>you need to create 3 models for each scoring function.</strong>\n", "<img src='https://i.imgur.com/iD2jZo3.png'>\n", " In model 1 you need to implemnt \"dot\" score function\n", " In model 3 you need to implemnt \"concat\" score function\n", " \n", "\n", "5. Using attention weights, we have plot the attention plots.\n", "\n", "6. BLEU score as metric to evaluate the model and SparseCategoricalCrossentropy as a loss.\n", " \n", "</pre>" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "_ZWC7laEhJGg" }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sb\n", "import re\n", "import tensorflow as tf\n", "from tqdm import tqdm\n", "import math\n", "import os\n", "import time\n", "import matplotlib.ticker as ticker\n", "import random\n", "import nltk.translate.bleu_score as bleu\n", "from sklearn.model_selection import train_test_split\n", "import joblib\n", "import pickle\n", "from keras.preprocessing.text import Tokenizer\n", "from keras.preprocessing.sequence import pad_sequences\n", "from tensorflow.keras.layers import Input, Embedding,Flatten,Dense,Concatenate,BatchNormalization,Dropout,Conv2D,Conv1D,MaxPooling1D,LSTM,Softmax,GRU\n", "from tensorflow.keras.models import Model\n", "%load_ext tensorboard" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "H7TbUw7Pr29U", "outputId": "18475614-e31c-4730-aab5-90e25fa3f691" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mounted at /content/drive/\n" ] } ], "source": [ "from google.colab import drive\n", "drive.mount('/content/drive/')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "YSGt2UqvdgTF" }, "outputs": [], "source": [ "txt=open('/content/drive/My Drive/seq2seq/ita-eng/Ita.txt','r')\n", "d=txt.readlines()" ] }, { "cell_type": "markdown", "metadata": { "id": "-RJKU_Rzwmqo" }, "source": [ "## PRE PROCESSING" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "T-PbZENShVw9" }, "outputs": [], "source": [ "def pre_txt(data):\n", " eng=[]\n", " ita=[]\n", " for i in tqdm(data):\n", " u=i.lower()\n", " u=re.sub(r\"'m\", ' am', u)\n", " u=re.sub(r\"'ll\", ' will', u)\n", " u=re.sub(r\"'d\", ' had', u)\n", " u=re.sub(r\"'s\", ' is', u)\n", " u=re.sub(r\"'ve\", ' have', u)\n", " u=re.sub(r\"'re\", ' are', u)\n", " u=re.sub(r\"won't\", 'would not', u)\n", " u=re.sub(r\"can't\", 'can not', u)\n", " u=re.sub(r\"o'clock\", '', u)\n", " u=re.sub(r\"n't\", ' not ', u)#\"haven't\", ' don't\n", " u=re.sub(r\"([?.!,¿])\", r\" \\1 \", u)\n", "\n", " u=u.split('\\t')\n", " p= re.sub(r\"[^a-zA-Z?.!,¿]+\", \" \", u[0])\n", " q= re.sub(r\"[^a-zA-Z?.!,¿]+\", \" \", u[1])\n", " eng_inp='<sos> ' + p + '<eos>'\n", " ita_inp='<sos> ' + q + '<eos>'\n", " if ita_inp.split('<eos>')[0][-1].isalpha()==True:\n", " ita_inp=ita_inp.replace('<eos>',' <eos>')\n", "\n", " eng.append(eng_inp)\n", " ita.append(ita_inp)\n", "\n", " return eng,ita" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "JQktTGxU2P1O", "outputId": "0107c782-50ba-4669-c4e3-631533c25f82" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 336614/336614 [00:08<00:00, 39534.58it/s]\n" ] } ], "source": [ "eng_txt,ita_txt=np.array(pre_txt(d))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "tt0S_EbY56GT", "outputId": "8408d8ef-1e7e-4ce4-bc00-a09dcc89daaf" }, "outputs": [ { "data": { "text/plain": [ "((336614,), (336614,))" ] }, "execution_count": 7, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "eng_txt.shape,ita_txt.shape" ] }, { "cell_type": "markdown", "metadata": { "id": "PDyV0njeE_N7" }, "source": [ "## WORD ANALYSIS" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 614 }, "id": "JCGKlvtRQHvJ", "outputId": "5dd5174a-264c-4411-c979-336f4d017f7a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pdf : [1.85449803e-01 5.58140778e-01 2.14444438e-01 3.42766492e-02\n", " 5.08297338e-03 1.07541576e-03 5.82269305e-04 2.28748656e-04\n", " 2.31719417e-04 1.18830471e-04 1.66362659e-04 7.72398058e-05\n", " 3.26783794e-05 3.86199029e-05 1.18830471e-05 1.78245706e-05\n", " 2.97076176e-06 2.07953323e-05] \n", "\n", "bin edge : [ 4. 6.83333333 9.66666667 12.5 15.33333333 18.16666667\n", " 21. 23.83333333 26.66666667 29.5 32.33333333 35.16666667\n", " 38. 40.83333333 43.66666667 46.5 49.33333333 52.16666667\n", " 55. ] \n", "\n", "outlier : [0.18544980303849506, 0.7435905814969073, 0.958035019339659, 0.9923116685580515, 0.9973946419340846, 0.9984700576921932, 0.9990523269976885, 0.9992810756534188, 0.9995127950709118, 0.999631625541421, 0.999797988200134, 0.999875228005965, 0.999907906385355, 0.9999465262882705, 0.9999584093353214, 0.9999762339058978, 0.9999792046676605, 0.9999999999999997]\n" ] }, { "data": { "image/png": "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ggsuaFUZtcn4u9/9brvjEY9axoW50HcY9Grcs2/NjhKcg4xxgzAzstJSWL61EG/GSBFpr9BW3z333MOUKVNIT0/nkksuIS8vj/vvv5/f/va3ZGRk8O6775KXl8dpp51Geno6p59+Otu3bwcgNzeXuXPnMn36dG6++ea61nh2djbz589n0aJFdUnvq1/9KscffzxTp07lgQceqIulX79+dS3aM844g2XLlrFgwQImTpzI0qVLacg5xw033MC0adOYPn06zz77LACLFi2irKyM448/vu6xhj744AOWLFnCDTfcQEZGBrm5uTz44IPMmjWLGTNmcP7553PwYOMLDS1evJgXXngB8BLzrFmzmDZtGldffXXd99KCBQu48cYbmT17NkcffTTvvvtuRK/F66+/zgknnMDMmTO58MILKSsrY9u2bUyePJn9+/dTU1PD/Pnzef3117npppvIzc0lIyOjUetf2kYt42YmiMjxO2+lj/HGH89KS+WVNbspqOjdaeGJRMvP/rKO9bsORLXMKaMG8NNzpza7zqFDh8jIyKi7X1hYyKJFixqtd+edd7J161Z69epFcXExgwYN4pprrqFfv3786Ec/AuDcc8/l8ssv5/LLL+eRRx7huuuu4+WXX+b666/n+uuv59JLL+X++++vV+7KlStZu3Zt3TCTRx55hNTUVA4dOsSsWbM4//zzGTx4MOXl5Zx22mn88pe/5LzzzuPmm2/mjTfeYP369Xzzm9/k4osvrlfun/70J3Jycli9ejX79+9n1qxZnHzyySxZsoR+/frVtT7DOfHEE1m0aFG9VumgQYO46qqrALj55pt5+OGH+dd//dcmy7j22mu55RZvWvlvfvObvPLKK5x77rmAdxRg2bJlLF26lJ/97GctHtrev38/v/jFL3jzzTfp27cvd911F7/5zW+45ZZbuPHGG/nOd77D7NmzmTJlCl/60pc4+uijWbt2bbPPUVpHLeNmpk5ctb2YSUP7MrC3N3A7Ky0FgM+KajotPJHurnfv3uTk5NT9NXWoNT09ncsuu4wnnniiycPJH374IV//+tcBLwG99957dY9feOGFAHXLa82ePbveeM977rmHGTNmMHfuXHbs2MGmTZsASEpKYuHChYB3KPeUU04hMTGR6dOn17XAQ7333ntceumlxMfHM3z4cE455RSWL1/emqqpZ+3atcyfP5/p06fz5JNPsm7dumbXf/vtt5kzZw7Tp0/nrbfeqrf+1772NQCOP/548vLyWtz3Rx99xPr165k3bx4ZGRn84Q9/YNu2bQBceeWVHDhwgPvvv7/uKIZEX89uGR8uhbLPw/akds6Rs6OYU48dVvfYsSMG0K9XApuKdFlM6X5aasEG7a9//SvvvPMOf/nLX7j99tv59NNPo1Ju3759625nZ2fz5ptv8uGHH9KnTx8WLFhQNx40MTGxbkhKXFwcvXr1qrtdVVUVlVias3jxYl5++WVmzJjBY489RnZ2dpPrVlRU8N3vfpcVK1YwduxYbipAvK0AACAASURBVL311nrjWmtjj4+Pjyh25xxnnnkmTz/9dKNlBw8eJD8/H4CysrKYvVhH0Hp2y7hwq/c/TMs4v+gQBeVHyBj7xSUy4+OMmeNTlIxFoqympoYdO3Zw6qmnctddd1FSUlL3xV9a+sVwwhNPPJFnnnkGgCeffJL58+cDMHfuXF588UWAuuXhlJSUkJKSQp8+fdi4cSMfffRRm2OeP38+zz77LNXV1ezbt4933nmH2bNnR7x9w+dWWlrKyJEjqays5Mknn2x229rEO2TIEMrKyurOI7fV3Llzef/999m8eTMA5eXlfPbZZwDceOONXHbZZdx22211h9Ebxi7t18OTcdM9qVdu984XhyZjgFnjU8gvc5QcrOzw8ER6iurqar7xjW8wffp0MjMzue666xg0aBDnnnsuL730Ul0HrnvvvZdHH32U9PR0Hn/8cX73u98BcPfdd/Ob3/yG9PR0Nm/ezMCBA8PuZ+HChVRVVXHcccdx0003MXfu3DbHfN5555Gens6MGTM47bTT+K//+i9GjBgR8faXXHIJv/zlL8nMzCQ3N5ef//znzJkzh3nz5nHsscc2u23t+eVp06Zx1llnMWvWrDY/D4ChQ4fy2GOPcemll5Kens4JJ5zAxo0b+fvf/87y5cvrEnJSUhKPPvoogwcPZt68eUybNk0duKLEguoZnJWV5VasWBHIvuu88yt46+fw77sgqW+9RT/7yzqeXradtbeeRUL8F79ZPsjdz9cf/JhHFmdx2rHDOzvimJSdnc2CBQuCDiOm1Nbphg0bOO6444IOp8MdPHiQ3r17Y2Y888wzPP300/z5z3+OWvmxfC3lIPSE+gz32TOzT5xzWeHW79nnjAu3QL8RjRIxeBf7SB89qF4iBq+lHG+wIq9IyViki/jkk0+49tprcc4xaNAgHnnkkaBDEmmVnp2Mm5gg4nBVNet2HWDxiWmNlvVJSmD8gDhWaNIIkS5j/vz5rF69OugwRNpM54xTG/ek3rC7lCNVNY3OF9eanBJHTn4xh6vUkUtERNqv5ybjigNQvi9syzjH77yVOS58Mj46JZ4jVTWs3VnSoSGKiEjP0HOTcTMTROTsKGb4gF6MHBj+SluTB3nXm9X8xiIiEg09Nxk3M0HEKn+mpqYM6GVMHNKXFXmawUlERNqv5ybj2nmMUybUf7j8CNsKDpI5LqXZzbPSUlixrYiaGk0aIdKcPXv2cMkllzBp0iSOP/54vvzlL9ddUKKjLFiwgJaGTt599931JmP48pe/THFxcVTjiOZ0kUuWLOHOO+8E6k8YEan//M//rHc/GjNhNWfjxo1kZGTUjaMONW3aNPbv39+qqRhrJ//YtWtXq2eZCud73/seGRkZTJkyhd69e9dNK9maeo10GsxI9NxkXJALA0ZDUp96D6/e4X0Ym2sZA2SlpVJ8sJLcfWUdFqJId+ec47zzzmPBggXk5ubyySefcMcdd/D5558HHVqjZLx06VIGDWr+c98e11xzDd/61reaXN5cMq6qqmLRokXcdNNNbd5/w2Tc0fNEv/zyy1xwwQWsWrWKSZPCX/+/LfMijxo1qt1XHAO47777yMnJYenSpUyaNKnu2umtSfRKxtHQRE/qVduLiDOYPjr8FXxqzUpLBXTeWKQ5b7/9NomJifXmLZ4xYwbz588nOzubc845p+7xa6+9lsceewyAtLQ0fvKTn5CRkUFWVhYrV67krLPOYtKkSXWzMjW3fajvfOc7ZGVlMXXqVH76058C3mQRu3bt4tRTT+XUU0+t2+f+/fu56aabuO++++q2v/XWW7nnnnsA+OUvf8msWbNIT0+vK6uhRx99lKOPPprZs2fz/vvv1yunNdNFLl68mGuuuYY5c+bw4x//uF4rG+DNN98kKyuLo48+mldeeQWg0TrnnHMO2dnZ3HTTTXWzZ1122WXAFy3NpqaCrL1wzAUXXMCxxx7LZZddFnb62JycHObOnUt6ejrnnXceRUVFLF26lLvvvpv/+Z//qavfcBpOxVhWVsbpp5/OzJkzmT59etgLt+Tl5TFt2rS62/Pnz2fmzJnMnDmz7gdGpLE3VF5ezre//W1mz55NZmZm3f6vv/76uglOXnvtNU4++eSw02C2R88dZ1yQC1MaT+O2akcxx4wYQN9ezVdN2uA+DOmXxIq8Qr4+Z1xHRSkSPa/eBHuiM/lCnRHT4ew7m1y8du1ajj/++DYVPW7cOHJycvjBD37A4sWLef/996moqGDatGn1kntLbr/9dlJTU6murub0009nzZo1XHfddfzmN7/h7bffZsiQIfXWv/jii/n+97/P9773PQCee+45XnzxRV5//XU2bdrEsmXLcM6xaNEi3nnnHU4++eS6bXfv3s1Pf/pTPvnkEwYOHMipp55KZmZmo5gimS7y4YcfJj8/nw8++ID4+PhGPzTy8vJYtmwZubm5nHrqqXXXlQ7nzjvv5L//+7/DTnnY1FSQAKtWrWLdunWMGjWKefPm8f7773PSSSfV2/5b3/oW9957L6eccgq33HILP/vZz7j77rsbPZ+m4gqdirGqqoqXXnqJAQMGsH//fubOncuiRYvqJvBoaNiwYbzxxhskJyezadMmLr300rrTE5HE3tDtt9/OaaedxiOPPEJxcTGzZ8/mjDPO4I477mDWrFnMnz+f6667rq413XAazPbomS3jQ0VwqLBRT+qaGsfqFjpv1TIzssansnybOnGJdITaOY+nT5/OnDlz6N+/P0OHDq1LYJF67rnnmDlzJpmZmaxbt67Fw4qZmZns3buXXbt2sXr1alJSUhgzZgyvv/46r7/+OpmZmcycOZONGzfWTb9Y6+OPP2bBggUMHTqUpKSkRnMg14pkukiACy+8kPj4+LDLLrroIuLi4pg8eTITJ05k48aNLdREeM1NBTl79mzGjBlDXFwcGRkZjaZjLCkpobi4mFNOOQWAyy+/nHfeeadNcYDXSv/3f/930tPTOeOMM9i5c2ezpzQqKyu56qqrmD59OhdeeGG917al2MN5/fXXufPOO8nIyKib0Wv79u306dOHBx98kDPPPJNrr722ycPu7dEzW8a1nbca9KTeWlDOgYoqMiNIxuB14vq/dXvYU1LBiIHJ0Y5SJLqaacF2lKlTpzZ5fi8hIYGami/mBg+dAhCoN4Vh7e3a+1VVVS1uD7B161Z+9atfsXz5clJSUli8eHHY9Rq68MILeeGFF9izZ09dQnXO8ZOf/IR/+Zd/aXH7lkQ6XWTo9I8NNWwtmllEddIaofUe6XSM7fHkk0+yb98+PvnkExITE0lLS2v2Ofz2t79l+PDhrF69mpqaGpKTv/gebkvszjlefPFFjjnmmEbLPv30UwYPHsyuXbta+awi0zNbxgV+Mm7QMl613e+81cTFPhqqPW+8Qq1jkbBOO+00Dh8+zAMPPFD32Jo1a3j33XcZP34869ev5/DhwxQXF/O3v/2tVWVHsv2BAwfo27cvAwcO5PPPP+fVV1+tW9bcNIAXX3wxzzzzDC+88AIXXnghAGeddRaPPPIIZWVep82dO3eyd+/eetvNmTOHv//97xQUFFBZWcnzzz/fqOxIp4tsyfPPP09NTQ25ubls2bKFY445hrS0NHJycur2sWzZsrr1ExMTqaxsPNtce6aCHDhwICkpKbz77rsAPP7443Wt5Eg0fM4lJSUMGzaMxMRE3n77bbZt29bs9iUlJYwcOZK4uDgef/xxqqvbd1XEs846i3vvvbfu/PKqVasA2LZtG7/+9a9ZtWoVr776Kh9//HHY+Nujh7aMcwGDlLR6D+fsKKJ/rwSOGtovomKmjBpA78R4VuQVcU76qOjHKdLNmRkvvfQS3//+97nrrrtITk4mLS2Nu+++m7Fjx3LRRRcxbdo0JkyYEPbcanMi2X7GjBlkZmZy7LHHMnbsWObNm1e37Oqrr2bhwoWMGjWKt99+u952U6dOpbS0lNGjRzNy5EhKS0v50pe+xIYNGzjhhBMArwPUE088wbBhw+q2GzlyJLfeeisnnHACgwYNIiMjo1FMtdNFlpSU4JyrN13kBRdcwJ///GfuvffeFp//uHHjmD17NgcOHOD+++8nOTmZefPmMWHCBKZMmcJxxx3HzJkz6z3f9PR0Zs6cWW++5PPOO48PP/yQGTNmYGZ1U0FGetj7D3/4A9dccw0HDx5k4sSJPProoxFtB9SbivHss8/mxhtv5Nxzz2X69OlkZWW1OJXkd7/7Xc4//3z++Mc/snDhwmaPJETiP/7jP/j+979Peno6NTU1TJgwgb/85S9cccUV/OpXv2LUqFE8/PDDLF68mOXLl3PJJZdw1VVXcc899/DCCy+06/B1z5xC8cWrYPuH8IO19R4+5953Gdg7kSevbH6O09Ap/77+4EeUHKrkr9fN76hoY56mUIy+njaFYkfrCVP+daaeUJ+tnUKxZx6mDjOs6dCRajbsLo2o81aorLRUNuw+QGlF48M/IiIikeiZyTjM1Ilrd5VQXePIHNv8lbcampWWQo374nyziIhIa/W8ZHywECqKG3Xeymll561ameNSiDN0nWrpsoI6FSXSU7XlM9fzknETE0Ss2lHEmJTeDOnXK8xGTevXK4EpowboSlzSJSUnJ1NQUKCELNJJnHMUFBTUG2YViZ7Xm7qJqRNzthczc3zrDlHXyhqfyjPLt1NZXUNifM/7fSNd15gxY8jPz2ffvn1Bh9KtVVRUtPrLVZoW6/WZnJzMmDFjWrVNz0vGBblgcfWGNX1+oIJdJRVc0cJMTU2ZlZbKYx/ksW7XgVZ3ABPpSImJiUyYMKHlFaVZ2dnZrR56JU1TfTbW85pxhbkwcCwkJNU9VHexjzYm0qw0L4nrvLGIiLRFz0vGYXpS5+woJjHemDpqQJuKHD4gmXGpfViuZCwiIm3Qs5Kxc951qRueL95RxJSRA0hODH9B9khkpaWwIq9IHWVERKTVelYyLt8Phw/UaxlX1zjW5Je0+1zvrLRUCsqPsHV/eXujFBGRHqZnJePCxhNEfPZ5KQePVLd6fHFDs+rOG2uIk4iItE4PS8aNxxjn7PA6b7X2ylsNTRraj5Q+iTpvLCIirdazknFBLlg8DBpX91DO9mJS+iQyfnCfdhVtZhw/PpUV29QyFhGR1ulZybgw10vE8Yl1D63aUcSMsYMaTdTdFrPSUti6v5x9pYfbXZaIiPQcESVjM1toZv8ws81mdlMz651vZs7Mwk4RFbgGw5pKKyrZtLcsahfqyEpLBeCTbTpULSIikWsxGZtZPHAfcDYwBbjUzKaEWa8/cD3wcbSDjIoww5o+zS/BOW+yh2iYNnoAvRLi1IlLRERaJZKW8Wxgs3Nui3PuCPAM8JUw6/0cuAuoiGJ80VO2F46U1WsZr/I7b2WMiU7LuFdCPDPGDGK5zhuLiEgrRHJt6tHAjpD7+cCc0BXMbCYw1jn3VzO7oamCzOxq4GqA4cOHk52d3eqA22pg8ToygTX55RQe8vb75qoKRvQxVi17v1VllZWVNRn7sLgjvLqtktfefJteCe0/D90TNFef0jaq0+hSfUaX6rOxdk8UYWZxwG+AxS2t65x7AHgAICsryy1YsKC9u4/cyh2QA+mnfhVSJ+Kc40fv/Y2Tjx3CggUZrSoqOzubpmJ3I/byypbl9J8wnRMnDYlC4LGvufqUtlGdRpfqM7pUn41Fcph6JzA25P4Y/7Fa/YFpQLaZ5QFzgSVdrhNXYS7EJcBAb1jTzuJD7C87TGaUZ1maOS4FM138Q0REIhdJMl4OTDazCWaWBFwCLKld6Jwrcc4Ncc6lOefSgI+ARc65FR0ScVsV5HrTJsZ7BwO+mKkpOp23ag3sk8gxw/vr4h8iIhKxFpOxc64KuBZ4DdgAPOecW2dmt5nZoo4OMGoa9KTO2VFMr4Q4jh3ZP+q7ykpLYeW2Iqqqa6JetoiIxJ6Ixhk755Y65452zk1yzt3uP3aLc25JmHUXdLlWce2wpgaXwZw+eiCJ8dG/7smstFTKj1SzcU9p1MsWEZHY0zOuwFW6GyoPQupEAI5U1fDpzvbP1NSU2ot/rNChahERiUDPSMa1szX5LeONew5wpKqm3TM1NWX0oN6MGpis8cYiIhKRnpGMC/zZmvxzxnUzNUXpylvhZKWlsiKvEOdch+1DRERiQ89IxoW5EJ8EA8cAXk/qof17MWpgcoftclZaCp8fOEx+0aEO24eIiMSGnpGMa4c1xcUDXss4I0ozNTWl9ryxhjiJiEhLekYyDhnWVFR+hK37y8nsoPPFtY4e3p/+yQks18U/RESkBbGfjGtq6g1rysmvvdhHxybj+Djj+PEp6lEtIiItiv1kXLoLqirqhjXlbC/GDNKjNFNTc2alpbJpbxlF5Uc6fF8iItJ9xX4yru1JPfiLntRHD+tPv17tniOjRVnjvd7an2iIk4iINCP2k3HhF8OanHPk7Cju8PPFtWaMHURivLF8mw5Vi4hI02I/GRfkQkIyDBjN1v3llByq7PDzxbWSE+OZPnqgZnASEZFmxX4yLtwCKRMgLq7uYh8ddeWtcGalpbImv5iKyupO26eIiHQvsZ+MC3LrnS/umxTP5GHRn6mpKVlpqVRWO9bkl3TaPkVEpHuJ7WRcUw1FW+t6Uq/aXkz6mEHEx3XcxT4aOt7vxKWLf4iISFNiOxmX5EP1ERg8iYrKajbsPtCph6gBUvsmcdSwfhpvLCIiTYrtZBzSk3rdrhKqahyZndR5K9SstBRWbCuipkaTRoiISGMxnoy/mDpx1fbO77xVK2t8KqUVVXy2t7TT9y0iIl1fbCfjgi2Q0Bv6j2TVjmJGD+rNsP4dN1NTU2bVTRqhIU4iItJYbCfjwlyv85YZOduLO218cUNjU3szrH8vnTcWEZGwYjsZF+TC4InsLa1gZ/GhTrvyVkNmxqy0VF38Q0REwordZFxdBUV5kDqJnO2dM1NTc7LSUthZfIidxYcCi0FERLqm2E3GJTugphIGTyJnRzEJcca00QMDC6f2vLEOVYuISEOxm4xDhjXl7CjmuJEDSE6MDyycY0f0p29SvGZwEhGRRmI3GRd4w5qqUyayekdwnbdqJcTHMXN8inpUi4hII7GbjAtzIakfmw/2pfxIdeDJGLzxxhv3HOBARWXQoYiISBcSu8m4IBdSJ5CTH9zFPhrKSkvBOVipQ9UiIhIidpNxYS6kelfeGtg7kQmD+wYdERljvUkqNMRJRERCxWYyrq6Eom11PalnjB1EXCfO1NSUvr0SmDpqgGZwEhGRemIzGRdvB1dNxYA0Pvu8tEucL66VNT6VnB3FHKmqCToUERHpImIzGRd4w5o2VQ2jxhHYlbfCmZWWwuGqGtbuKgk6FBER6SJiMxn7szWtKPUutJExpusk4+PTUgBd/ENERL4Qo8k4F3oN4MPdRtrgPqT0TQo6ojrD+ieTNriPxhuLiEid2EzGBbm41Amsyi8hc1xK0NE0kpWWyoq8QpxzQYciIiJdQGwm48JcDvVPY1/p4S7VeavWrLQUig5WkruvPOhQRESkC4i9ZFx1BIq3s9NGAcHO1NSULE0aISIiIWIvGRdvA1fDhiNDSEqI47iRA4KOqJGJQ/qS2jdJ541FRASIxWTsD2v6qDiFaaMGkJTQ9Z6imZE1PoUV29QyFhGRWEzG/tSJb+3rR8bYrtd5q9astFS2FRxk74GKoEMREZGAxV4yLsilOmkAe6r6donJIZqSVTveWJNGiIj0eLGXjAtzKUoeCxiZXbDzVq2powaSnBin61SLiEgMJuOCLWxjJEP6JTEmpXfQ0TQpKSGOjLGDNIOTiIjEWDKurICSHaytGELG2EGYBT9TU3NmpaWyblcJZYergg5FREQCFFvJuCgPcKwsS+2S44sbykpLpcZBzvbioEMREZEAxVYy9ntS57kRXfIymA3NHDeIOEPnjUVEergYS8bebE15jCB9zMCAg2lZ/+REjh0xQOONRUR6uNhKxgW5lMYNYNjQEfRPTgw6mojMSkth1fZiKqtrgg5FREQCElPJ2BXmsrVmOJldeHxxQ1lpqRw8Us2G3QeCDkVERAISU8m4et9mNlcP79JX3mqo9uIfuk61iEjPFTvJuPIQCWW7yKsZ0S16UtcaObA3Y1J6awYnEZEeLHaSceFWAHbFj+Lo4f0CDqZ15k4czHub91Ou8cYiIj1SRMnYzBaa2T/MbLOZ3RRm+b+Z2XozW2NmfzOz8dEPtQX+sKbEoUeREN+9fmN8fc44SiuqeH7FjqBDERGRALSYtcwsHrgPOBuYAlxqZlMarLYKyHLOpQMvAP8V7UBbUrlvMwBD0xqG1vXNHJfC8eNTeOT9PKprXNDhiIhIJ4ukCTkb2Oyc2+KcOwI8A3wldAXn3NvOuYP+3Y+AMdENs2XF+RvZ7wYwZUKn7zoqrjxpAtsLD/LG+j1BhyIiIp0skmQ8Ggg9fprvP9aUK4BX2xNUW1Tt3dRtrrwVzpemjmBsam8eendr0KGIiEgnS4hmYWb2DSALOKWJ5VcDVwMMHz6c7OzsqO07vWQLu+KmU7byIzZErdTwysrKohp7rZOHVfPkxiIefvlvTBoUH/Xyu6qOqs+eTHUaXarP6FJ9NhZJMt4JjA25P8Z/rB4zOwP4f8ApzrnD4Qpyzj0APACQlZXlFixY0Np4wztSDtlFuNSjiFqZzcjOzu6Q/WQdrmLJHX9j5cEUrvjqzKiX31V1VH32ZKrT6FJ9Rpfqs7FIDlMvByab2QQzSwIuAZaErmBmmcD/Aoucc3ujH2bzivI3AtB35NGdveuo6tcrga/PGcern+5mR+HBljcQEZGY0GIyds5VAdcCrwEbgOecc+vM7DYzW+Sv9kugH/C8meWY2ZImiusQOzatBWDEhGmdudsOsfjENOLMeOyDvKBDERGRThLROWPn3FJgaYPHbgm5fUaU42oVl9iL9YlTmXTM9CDDiIqRA3vzT+kjeXb5Dq4/YzIDusmEFyIi0nbd6+oYTZhx2iVM+X8f0Lt/97kMZnOuPGkiZYereHaZLgIiItITxEQyjjXTxwxkzoRUHn1/K1WaWlFEJOYpGXdRV82fyK6SCpau1UVARERinZJxF3XascOYMKQvD727Bed0iUwRkVimZNxFxcUZ3z5pAmvyS1ixTXMdi4jEMiXjLuyCmWMY1CeRB9/ZEnQoIiLSgZSMu7DeSfF8Y8543tjwOXn7y4MOR0REOoiScRf3rRPHkxgXx6PvawIJEZFYpWTcxQ3rn8yijFE8tyKf4oNHgg5HREQ6gJJxN3DFSRM4VFnNU8u2Bx2KiIh0ACXjbuC4kQOYP3kIf/ggjyNVugiIiEisUTLuJq44aQKfHzjMK2t2BR2KiIhEmZJxN3HK0UOZPKwfD727VRcBERGJMUrG3YSZceX8CazffYAPcwuCDkdERKJIybgb+UrGaIb0S+Kh9zTMSUQkligZdyPJifF8c24ab23cy+a9pUGHIyIiUaJk3M18Y+44eiXE8fB7eUGHIiIiUaJk3M0M7teLr80cw59W5lNQdjjocEREJAqUjLuhK05K43BVDU98pIuAiIjEAiXjbuioYf059ZihPP5RHhWV1UGHIyIi7aRk3E1dNX8i+8uOsCRHFwEREenulIy7qRMmDea4kQN46L0tugiIiEg3p2TcTZkZV540gc8+L+OdTfuDDkdERNpBybgbO3fGKIb178VD724JOhQREWkHJeNuLCkhjstPTOPdTfvZuOdA0OGIiEgbKRl3c5fNGUfvxHgefleXyBQR6a6UjLu5QX2SuDBrDH/O2cXe0oqgwxERkTZQMo4B3543gcqaGh7/cFvQoYiISBsoGceAtCF9OfO44Tzx0TYOHdFFQEREuhsl4xhx5fyJFB2s5MWV+UGHIiIiraRkHCNmpaUwY8xAHnlvKzU1ugiIiEh3omQcI8yMK+ZPZMv+ct7auDfocEREpBWUjGPI2dNGMGpgMg+9p4uAiIh0J0rGMSQxPo5/njeBj7YUsnZnSdDhiIhIhJSMY8zFs8fSr1eCLpEpItKNKBnHmAHJiVw8ayyvrNnN7pJDQYcjIiIRUDKOQYtPTKPGOR77IC/oUEREJAJKxjFobGofzp42kqc+3k754aqgwxERkRYoGceoK+dPoLSiiudX7Ag6FBERaYGScYzKHJfC8eNTeOT9PKp1ERARkS5NyTiGXTV/AtsLD/LG+j1BhyIiIs1QMo5hZ04ZwdjU3jyouY5FRLo0JeMYFh9nfHveBD7ZVsTK7UVBhyMiIk1QMo5xF2WNpX9yAj98bjUPv7eVfaWHgw5JREQaUDKOcX17JXD3xRn065XAz19Zz9w7/sbljyzjzzk7NfexiEgXkRB0ANLxTj9uOKcfN5zNe0v508qd/DlnF9c/k0PfpHgWThvJ12aOZu7EwcTHWdChioj0SErGPchRw/rz44XH8qMvHcOyvEJeWrmTpZ/u5sWV+YwYkMxXMkfxtcwxHDOif9Chioj0KErGPVBcnDF34mDmThzMz74ylTc3fM5LK3fy8Ltb+d+/b+G4kQP4WuZovpIximEDkoMOV0Qk5ikZ93DJifGckz6Kc9JHUVB2mFfW7OZPq3Zy+9IN3PHqBuYdNYSvzRzNWVNH0CdJbxcRkY6gb1epM7hfLy4/MY3LT0wjd18ZL6/ayUurdvKDZ1fTJ2ktZ00dwXmZo5l31BCdXxYRiSIlYwlr0tB+/PBLx/CDM47mk+1F/GnlTv66ZhcvrdrJsP69+ErGKM7LHMOUUQOCDlVEpNuLKBmb2ULgd0A88JBz7s4Gy3sBfwSOBwqAi51zedENVYIQF2fMSktlVloqPz13Cm9v3MufVu3ksQ/yePDdrRw7oj9fzRxN+piB9OuVQN9eCfTrlUCfpHj6JiUQpxa0iEiLWkzGZhYP3AecCeQDy81siXNufchqVwBFzrmjzOwS4C7g4o4IWIKTnBjP2NKRxAAABnRJREFU2dNHcvb0kRSVH+GVT3fz0sp87nx1Y5Pb9EmKp2+vBPrW/g+5XZu89+0+wj8s11/uJfHaZX17eevGxxlx5v0ZEGcGBnHm3Tb/P/6yOAML+S8i0pWZc83P6GNmJwC3OufO8u//BMA5d0fIOq/563xoZgnAHmCoa6bwrKwst2LFiig8hc6XnZ3NggULgg6jy9hReJAdRQc5eLia8iNVlB2u4uDhasoOV1F+uIryI1WUH66m/LC3rPxIw+Udf/GR2mQdNpHjJWwD8BZ59+st9xZa3XKwevf92+Ee98vtDLW7OXjwIH379m30eOjvEgsJKtzvlZZ+xLT03dF4/cjWa263oTE1XK3ec2viebZ2f7X7OVBayoD+TQz562I/9rpWNOEdOHCAAQO6/imufr0SeOLKOVErz8w+cc5lhVsWyWHq0UDopLj5QMPo6tZxzlWZWQkwGNjfIJCrgasBhg8fTnZ2diTxdzllZWXdNvaOlAAM9P8ASPT/mt0igQOlZST17ktFlaOimvr/q6Ci2lHjoHYmSOfA4f198ZjzHgtZVne7qf+124Xc/6J8757ji+WEWY+QfQHU+CvVL6vzDehdQ0LcoboYGmr0kKu/XqQxN/XF3678FPI6h3k4/CZtiD2idf3Xr3dcNa6irPXbd7JWx+MIJHv3smqqDpW2v6AOjr/iCJ32Xd+pHbiccw8AD4DXMu6urUu1jKNL9Rl9qtPoUn1Gl+qzsUiuTb0TGBtyf4z/WNh1/MPUA/E6comIiEgLIknGy4HJZjbBzJKAS4AlDdZZAlzu374AeKu588UiIiLyhRYPU/vngK8FXsMb2vSIc26dmd0GrHDOLQEeBh43s81AIV7CFhERkQhEdM7YObcUWNrgsVtCblcAF0Y3NBERkZ5B8xmLiIgETMlYREQkYErGIiIiAVMyFhERCZiSsYiISMCUjEVERAKmZCwiIhIwJWMREZGAKRmLiIgErMX5jDtsx2b7gG2B7Lz9htBgekhpF9Vn9KlOo0v1GV09tT7HO+eGhlsQWDLuzsxsRVMTREvrqT6jT3UaXarP6FJ9NqbD1CIiIgFTMhYREQmYknHbPBB0ADFG9Rl9qtPoUn1Gl+qzAZ0zFhERCZhaxiIiIgFTMm6BmT1iZnvNbG3IY6lm9oaZbfL/pwQZY3diZmPN7G0zW29m68zsev9x1WkbmFmymS0zs9V+ff7Mf3yCmX1sZpvN7FkzSwo61u7EzOLNbJWZveLfV322g5nlmdmnZpZjZiv8x/SZD6Fk3LLHgIUNHvv/7d0/aF5VHMbx74PpICoUgw3FIEEUJIPGpaSYIQYqgkUdRIQWMhRcOlRQpHURCh26WN11yGBbghp1NMSATg6xBQt1KTgY0mRog7oEok+He1LfBCHJDe3hyvOBl3vOuXf48YPz/s798773NDBn+2lgrvRjZ9aBd20PA6PASUnDJKdtrQETtp8DRoCXJY0C54ELtp8CbgMnKsbYRaeA6z395HPvXrQ90vOTpsz5HinG27D9A3Bry/BrwFRpTwGv39egOsz2ku2fS/tPmi+8x0lOW3Hjr9LdVz4GJoAvynjyuQuSBoFXgE9LXySf90LmfI8U43YGbC+V9k1goGYwXSVpCHge+InktLVySfUqsALMAjeAVdvr5ZDfaRY8sTMfA+8D/5R+P8nnXhn4TtKCpLfLWOZ8j77aAXSdbUvKI+m7JOlh4EvgHdt/NCcfjeR0d2z/DYxI2g/MAM9UDqmzJB0FVmwvSBqvHc//yJjtRUkHgFlJv/buzJzPmXFby5IOApTtSuV4OkXSPppC/Lntr8pwcrpHtleBeeAwsF/SxmJ7EFisFli3vAC8Kuk34DLN5elPSD73xPZi2a7QLBgPkTm/SYpxO98Ck6U9CXxTMZZOKfffPgOu2/6oZ1dy2oKkx8oZMZIeBI7Q3IefB94ohyWfO2T7jO1B20PAW8D3to+RfLYm6SFJj2y0gZeAa2TOb5I//diGpEvAOM1bRpaBD4GvgWngCZo3T71pe+tDXvEfJI0BPwK/8O89uQ9o7hsnp7sk6Vmah18eoFlcT9s+K+lJmjO7R4ErwHHba/Ui7Z5ymfo920eTz/ZK7mZKtw+4aPucpH4y5+9KMY6IiKgsl6kjIiIqSzGOiIioLMU4IiKishTjiIiIylKMIyIiKksxjoiIqCzFOCIiorIU44iIiMruADVGGcml/7iOAAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 576x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" } ], "source": [ "counts, bin_edges = np.histogram([len(i.split(' ')) for i in ita_txt], bins=18,density = True,)\n", "pdf = counts/(sum(counts))\n", "print('pdf : ',pdf,'\\n');\n", "print('bin edge : ',bin_edges,'\\n')\n", "cdf = np.cumsum(pdf)\n", "plt.figure(figsize=(8,6))\n", "plt.plot(bin_edges[1:],pdf,label='Histogram of Italian Text')\n", "plt.plot(bin_edges[1:], cdf,label='Cumulative distribution of Italian Text')\n", "plt.title('histogram and cumulative distribution of Italian Text')\n", "plt.legend()\n", "plt.grid()\n", "c=0\n", "q=[]\n", "for i in pdf:\n", " c=c+i\n", " q.append(c)\n", "print('outlier : ',q)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 614 }, "id": "IqcfK6OYMqxH", "outputId": "8883d8ed-a27e-4fff-aaee-39cf7c26e008" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pdf : [9.84777817e-02 5.62825670e-01 2.86702276e-01 3.59610711e-02\n", " 1.17612458e-02 2.64397797e-03 6.50596826e-04 8.61520911e-05\n", " 8.31813294e-05 2.64397797e-04 1.72304182e-04 2.19836370e-04\n", " 5.64444735e-05 3.26783794e-05 1.18830471e-05 1.18830471e-05\n", " 2.37660941e-05 1.48538088e-05] \n", "\n", "bin edge : [ 4. 6.72222222 9.44444444 12.16666667 14.88888889 17.61111111\n", " 20.33333333 23.05555556 25.77777778 28.5 31.22222222 33.94444444\n", " 36.66666667 39.38888889 42.11111111 44.83333333 47.55555556 50.27777778\n", " 53. ] \n", "\n", "outlier : [0.09847778167277654, 0.6613034514310161, 0.9480057276286786, 0.9839667987665398, 0.9957280445851926, 0.9983720225540234, 0.9990226193800615, 0.9991087714711807, 0.9991919528005372, 0.9994563505974202, 0.9996286547796587, 0.9998484911501008, 0.9999049356235926, 0.9999376140029826, 0.9999494970500336, 0.9999613800970845, 0.9999851461911863, 0.9999999999999999]\n" ] }, { "data": { "image/png": "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+vTpTJ8+nf79+zNixAimT5/OkiWRT4xz7NgxfvGLX7QpDqlPPZEaKsyHMecDUFVdQ97hEhaMyQBg0fhMwBviND67T2AhisSK66+/vsnlubm5pKamcvbZZ7f5WFVVVSQkdMxX3qOPPkphYSHx8fGNrvPcc89x0UUXMXHixIj3e+edd7Y5tilTprBu3ToAli9fzkUXXcSll17aon3UJuMbbrihzfGIRzXjUCeLvWFN/vninQVlVFTV1NWMs/okM2lQH9ZovLFIuwit9d13331MnDiRqVOncuWVV7Jz504efPBBfvrTnzJ9+nReffVVdu7cyeLFi5k6dSrnnXceu3fvBiA/P5958+YxZcoUbrvttrraeG5uLgsWLGDZsmV1Se/v//7vOfPMM5k0aRIPPfRQXSypqancfPPNTJo0iSVLlrB27VpycnIYOXIkK1asOC125xw333wzkydPZsqUKfz+978HYNmyZZSUlHDmmWfWPdfQG2+8wYoVK7j55puZPn06+fn5/OpXv2L27NlMmzaNz33uc5SVlZ223fLly3nmmWcALzHPnj2byZMnc91119WdPsvJyeGWW25hzpw5jB07lldffTWi/8WLL77IWWedxcyZM7nssssoKSlh165djBkzhiNHjlBTU8OCBQt48cUXufXWW8nPz2f69Omn1f6ldVQzDlW4w7ut7UntN0ePzTrVhX7RuEx+kZtHUVllh4cn0hbf+fMGNu4/DkB1dXWTtbZITRzUh29fPKnJdU6cOMH06dPrHhcWFrJs2bLT1rvrrrvYsWMHPXr04NixY/Tr14/rr7+e1NRU/uM//gOAiy++mGuuuYZrrrmGhx9+mJtuuonnnnuOr33ta3zta1/jqquu4sEHH6y33/fff5/169fXDTN5+OGH6d+/PydOnGD27Nl87nOfIz09ndLSUhYvXsw999zDJZdcwm233cbf/vY3Nm7cyDXXXHNazP/7v//LunXr+PDDDzly5AizZ8/m3HPPZcWKFaSmptbVPsM5++yzWbZsWb1aab9+/bj22msBr5n717/+Nf/yL//S6D5uvPFGbr/dm1b+85//PH/5y1+4+OKLAa8VYO3ataxcuZLvfOc7zTZtHzlyhO9973usWrWKlJQU7r77bn7yk59w++23c8stt/CVr3yFOXPmMHHiRD71qU8xduxY1q9f3+RrlJZRzThU3bAmr2a8+UAxcQajM0+d81o0PpMaBy9vOxxEhCJdTs+ePVm3bl3dX2NNrVOnTuXqq6/mt7/9baPNyW+++Sb/8A//AHgJ6LXXXqt7/rLLLgOoW15rzpw59cZ73nfffUybNo158+axZ88etm3bBkBSUhJLly4FvKbchQsXkpiYyJQpU9i5c+dpsbz22mtcddVVxMfHk5WVxcKFC3nnnXdaUDL1rV+/ngULFjBlyhSeeOIJNmzY0OT6a9asYe7cuUyZMoWXXnqp3vqf/exnATjzzDPDxt7QW2+9xcaNG5k/fz7Tp0/nN7/5Dbt27QLgy4nFMiAAACAASURBVF/+MsePH+fBBx+sa8WQ9qeacaiC+sl464FihmekkJx4qgYxfWg/0nolsmbzIT6TFUSQIq0TWoPtjBdN+L//+z9eeeUV/vznP/P973+fjz/+uF32m5KSUnc/NzeXVatW8eabb9KrVy9ycnLqxoMmJibWDUmJi4ujR48edferqqraJZamLF++nOeee45p06bx6KOPkpub2+i65eXl3HDDDbz77rsMHTqUO+64o9641trY4+PjI4rdOcf555/Pk08+edqysrIy9u7dC0BJSUmne9/ECtWMQxXugNTsumFNWw8WMy6r/hsvPs5YOHYAL289TI2GOIm0i5qaGvbs2cOiRYu4++67KSoqqvviLy4+NXrh7LPP5qmnngLgiSeeYMGCBQDMmzePP/7xjwB1y8MpKioiLS2NXr16sXnzZt56661Wx7xgwQJ+//vfU11dzeHDh3nllVeYM2dOxNs3fG3FxcUMHDiQyspKnnjiiSa3rU28GRkZlJSU1J1Hbq158+bx+uuvk5eXB0BpaSlbt24F4JZbbuHqq6/mzjvvrGtGbxi7tJ2ScaiQCSLKK6vZWVBa13kr1KLxmRSWVrC9qKajIxSJSdXV1fzjP/4jU6ZMYcaMGdx0003069ePiy++mGeffbauA9f999/PI488wtSpU3n88cf52c9+BsC9997LT37yE6ZOnUpeXh59+/YNe5ylS5dSVVXFhAkTuPXWW5k3b16rY77kkkuYOnUq06ZNY/HixfzXf/0X2dnZEW9/5ZVXcs899zBjxgzy8/P57ne/y9y5c5k/fz7jx49vctva88uTJ0/mggsuYPbs2a1+HQADBgzg0Ucf5aqrrmLq1KmcddZZbN68mZdffpl33nmnLiEnJSXxyCOPkJ6ezvz585k8ebI6cLUTC+oCFrNmzXLvvvtuIMdu1I/GesOaPvMA6/cVcdH9r/HLq2dy4ZSB9VY7VlbBzO/+jb8bmcj9134qoGBjX25uLjk5OUGH0aVt2rSJCRMmnPZ8Z2ymbouysjJ69uyJmfHUU0/x5JNP8qc//SmweGKtfDubrlC+4T57Zvaec25WuPV1zrhWg2FNm/1rUo8NUzPu1yuJmWek8dHhog4NUUTCe++997jxxhtxztGvXz8efvjhoEMSaREl41p116Q+NawpKSGO4ekpYVdfND6Te144yqHj5WT2Se6oKEUkjAULFvDhhx8GHYZIq+mcca3aZJzuJeMtB4oZk5lKfFz4C34vGuddjWuNJo4QEZE2UjKuVTusKc0bj7jlwOk9qUNNGNib/snGms0abywiIm2jZFwrZFhTUVklB46Xh+1JXcvMmJoRz2t5R6ioUq9qERFpPSXjWoX5p5qoDzbeeSvU1AHxlJys4p2dhVEPT0REYpeSca2CfOjvN1H7yXh8M8l4Yno8SfFxmjhCpAkHDhzgyiuvZNSoUZx55pl8+tOfrrugRLTk5OTQ3NDJe++9t95kDJ/+9Kc5duxYu8bRntNFrlixgrvuuguoP2FEpH7wgx/Ue9weM2E1ZfPmzUyfPr1uHHWo4cOHc+TIkRZNxVg7+cf+/fv5/Oc/3+b4vvrVrzJ9+nQmTpxIz54966aVbEm5RjoNZiSUjMEb1lR66FRP6gPF9E5OILuZXtLJCcbckf15SZ24RMJyznHJJZeQk5NDfn4+7733Hj/84Q85ePBg0KGdloxXrlxJv379ona866+/ni984QuNLm8qGVdVVbFs2TJuvfXWVh+/YTKO9jzRzz33HJdeeikffPABo0aNCrtOa+ZFHjRoEI8//nib43vggQdYt24dK1euZNSoUXXXTm/JdJJKxu2tbliTN8a4tvNW7XVqm7JoXCbbD5eyq6A0mhGKdElr1qwhMTGx3rzF06ZNY8GCBeTm5nLRRRfVPX/jjTfy6KOPAl7N6Zvf/CbTp09n1qxZvP/++1xwwQWMGjWqblamprYP9ZWvfIVZs2YxadIkvv3tbwPeZBH79+9n0aJFLFq0qO6YR44c4dZbb+WBBx6o2z50msd77rmH2bNnM3Xq1Lp9NfTII48wY8YM5syZw+uvvx52P5FMF7l8+XKuv/565s6dyze+8Y16tWyAVatWMWvWLMaOHctf/vIXgNPWueiii8jNzeXWW2+tmz3r6quvBk7VNBubCrL2ojuXXnop48eP5+qrrybcRaLWrVvHvHnzmDp1KpdccglHjx5l5cqV3Hvvvfzyl7+sK99wGk7FWFJSwnnnncfMmTOZMmVK2Au37Ny5k7lz59bdX7BgATNnzmTmzJl1PzAijb2h0tJSvvjFLzJnzhxmzJhRd/yvfe1rdROcvPDCC5x77rlhp8FsC40zhlM9qdNH4Zxjy8FiLpo6sOltfIvHZ3LnXzayZvMhls8f0fwGIkF5/lY44E2+0LO6CuLb4eOfPQUuvKvRxevXr+fMM89s1a7POOMM1q1bx7/+67+yfPlyXn/9dcrLy5k8eXK95N6c73//+/Tv35/q6mrOO+88PvroI2666SZ+8pOfsGbNGjIyMuqtf8UVV/D1r3+dr371qwA8/fTTvPDCC7z44ots27aNtWvX4pxj2bJlvPLKK5x77rl1237yySd8+9vf5uWXX2bw4MEsWrSIGTNmnBZTJNNF/vrXv2bv3r288cYbxMfHn/ZDY+fOnaxdu5b8/HwWLVpUd13pcO666y5+/vOfh53ysLGpIAE++OADNmzYwKBBg5g/fz6vv/4655xzTr3tv/CFL3D//fezcOFCbr/9dr7zne9w7733nvZ6GosrdCrGqqoqnn32Wfr06cORI0eYN28ey5Yta7RilJmZyd/+9jeSk5PZtm0bV111Vd3piUhib+j73/8+ixcv5uGHH+bYsWPMmTOHJUuW8MMf/pDZs2ezYMECbrrpprradMNpMNtCNWOoVzM+VHySohOVTfakDjU8I4WRGSm8tEVDnETaU+38wVOmTGHu3Ln07t2bAQMG1CWwSD399NPMnDmTGTNmsGHDhmabFWfMmMGhQ4fYv38/H374IWlpaQwdOpQXX3yRF198kRkzZjBz5kw2b95cN/1irbfffpucnBwyMjJISkriiiuuCHuMSKaLBLjssssanXf68ssvJy4ujjFjxjBy5Eg2b97cTEmE19RUkHPmzGHIkCHExcUxffr006ZjLCoq4tixYyxcuBCAa665hldeeaVVcYBXS//P//xPpk6dypIlS9i3b1+TpzQqKyu59tprmTJlCpdddlm9/21zsYfz4osvctdddzF9+vS6Gb12795N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\n", "text/plain": [ "<Figure size 576x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" } ], "source": [ "counts, bin_edges = np.histogram([len(i.split(' ')) for i in eng_txt], bins=18,density = True,)\n", "pdf = counts/(sum(counts))\n", "print('pdf : ',pdf,'\\n');\n", "print('bin edge : ',bin_edges,'\\n')\n", "cdf = np.cumsum(pdf)\n", "plt.figure(figsize=(8,6))\n", "plt.plot(bin_edges[1:],pdf,label='Histogram of Italian Text')\n", "plt.plot(bin_edges[1:], cdf,label='Cumulative distribution of Italian Text')\n", "plt.title('histogram and cumulative distribution of Italian Text')\n", "plt.legend()\n", "plt.grid()\n", "c=0\n", "q=[]\n", "for i in pdf:\n", " c=c+i\n", " q.append(c)\n", "print('outlier : ',q)" ] }, { "cell_type": "markdown", "metadata": { "id": "s8owcQwh2HOh" }, "source": [ "#### Observation\n", "1. 99% of time each sentence contain less than 16 words. " ] }, { "cell_type": "markdown", "metadata": { "id": "ZMo10m8AFgfP" }, "source": [ "#### TOKENISATION" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "id": "nwtlIhnHbojC" }, "outputs": [], "source": [ "def tokenize(lang):\n", " lang_tokenizer = tf.keras.preprocessing.text.Tokenizer(filters='')\n", " lang_tokenizer.fit_on_texts(lang)\n", "\n", " tensor = lang_tokenizer.texts_to_sequences(lang)\n", "\n", " tensor = tf.keras.preprocessing.sequence.pad_sequences(tensor,\n", " padding='post')\n", " print(len(lang_tokenizer.word_index)+1)\n", " #len(tok.word_index) + 1\n", "\n", " return tensor, lang_tokenizer" ] }, { "cell_type": "markdown", "metadata": { "id": "1ju-uDYqFo9Y" }, "source": [ "#### REMOVE WORDS LESS THAN 16" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "id": "ksQ6wsHMRW1I" }, "outputs": [], "source": [ "ita_txt_new=[]\n", "eng_txt_new=[]\n", "for t,e in zip(ita_txt,eng_txt):\n", " if len(t.split(' '))<=16 and len(e.split(' '))<=16:\n", " eng_txt_new.append(e)\n", " ita_txt_new.append(t)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "Wv3tNdg0SQy1" }, "outputs": [], "source": [ "eng_txt=eng_txt_new\n", "ita_txt=ita_txt_new" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "A-sbdHPp5ZJD", "outputId": "e4c289cf-857e-4e33-cac4-93bbd0067f81" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25397\n", "12656\n" ] } ], "source": [ "input_tensor, inp_lang_tokenizer = tokenize(ita_txt)\n", "target_tensor, targ_lang_tokenizer = tokenize(eng_txt)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_vKQJ2dfWOcA", "outputId": "e3db42f8-8ff4-4459-dce6-c67686e49bb6" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "input shape : (334096, 16)\n", "target shape : (334096, 16)\n" ] } ], "source": [ "print('input shape : ',input_tensor.shape)\n", "print('target shape : ',target_tensor.shape)" ] }, { "cell_type": "markdown", "metadata": { "id": "0739pHZP-NNL" }, "source": [ "#### Saving all the file" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "id": "vOseIs7AIam7" }, "outputs": [], "source": [ "pickle.dump(input_tensor, open('/content/drive/My Drive/seq2seq/input_tensor', 'wb'))\n", "pickle.dump(input_tensor, open('/content/drive/My Drive/seq2seq/target_tensor', 'wb'))\n", "pickle.dump(inp_lang_tokenizer, open('/content/drive/My Drive/seq2seq/inp_lang_tokenizer', 'wb'))\n", "pickle.dump(targ_lang_tokenizer, open('/content/drive/My Drive/seq2seq/targ_lang_tokenizer', 'wb'))" ] }, { "cell_type": "markdown", "metadata": { "id": "Ol933ERe-Qro" }, "source": [ "#### Loading all the file" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "id": "DwlFvtFE-U-N" }, "outputs": [], "source": [ "input_tensor=pickle.load(open('/content/drive/My Drive/seq2seq/input_tensor', 'rb'))\n", "target_tensor=pickle.load(open('/content/drive/My Drive/seq2seq/target_tensor', 'rb'))\n", "inp_lang_tokenizer=pickle.load(open('/content/drive/My Drive/seq2seq/inp_lang_tokenizer', 'rb'))\n", "targ_lang_tokenizer=pickle.load(open('/content/drive/My Drive/seq2seq/targ_lang_tokenizer', 'rb'))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kPFGPldLQ4v2", "outputId": "c09c8417-85b4-4690-f17d-cf8585b758ac" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "input shape : (334096, 16)\n", "target shape : (334096, 16)\n" ] } ], "source": [ "print('input shape : ',input_tensor.shape)\n", "print('target shape : ',target_tensor.shape)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "tGPBB1E1Q_-F" }, "outputs": [], "source": [ "decoder_input_target_tensor=[]\n", "for i in target_tensor:\n", " i=list(i)\n", " if 1 in i:\n", " i.remove(2)\n", " i.append(0) \n", " decoder_input_target_tensor.append(i) \n", "decoder_input_target_tensor=np.array(decoder_input_target_tensor)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "id": "QfFXFbibTeYt" }, "outputs": [], "source": [ "decoder_output_target_tensor=[]\n", "for i in target_tensor:\n", " i=list(i)\n", " if 1 in i:\n", " i.remove(1)\n", " i.append(0) \n", " decoder_output_target_tensor.append(i) \n", "decoder_output_target_tensor=np.array(decoder_output_target_tensor)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "id": "AYS9xc_tWsyz" }, "outputs": [], "source": [ "input_tensor_train, input_tensor_val,decoder_input_target_tensor_train,decoder_input_target_tensor_val ,decoder_output_target_tensor_train, decoder_output_target_tensor_val, = train_test_split(input_tensor, decoder_input_target_tensor,decoder_output_target_tensor, test_size=0.18,random_state=42)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "wznid5K_Ws86", "outputId": "329081db-cf6f-4ce3-e0d2-b83fddc6da54" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train input size : (273958, 16)\n", "train input-output size : (273958, 16)\n", "train output-output size : (273958, 16)\n" ] } ], "source": [ "print('train input size : ',input_tensor_train.shape)\n", "print('train input-output size : ',decoder_input_target_tensor_train.shape)\n", "print('train output-output size : ',decoder_output_target_tensor_train.shape)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "D4sFbGB-2pWA", "outputId": "c05579b8-8df7-416c-8642-372a33956528" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train input size : (60138, 16)\n", "train input-output size : (60138, 16)\n", "train output-output size : (60138, 16)\n" ] } ], "source": [ "print('train input size : ',input_tensor_val.shape)\n", "print('train input-output size : ',decoder_input_target_tensor_val.shape)\n", "print('train output-output size : ',decoder_output_target_tensor_val.shape)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2B4Rgdf9cHzJ", "outputId": "31ee9e6b-243a-407b-c441-d6537f442d8e" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input Language; index to word mapping\n", "1 ----> <sos>\n", "5601 ----> salti\n", "3 ----> .\n", "2 ----> <eos>\n", "\n", "Target input Language; index to word mapping\n", "1 ----> <sos>\n", "1995 ----> jump\n", "3 ----> .\n", "\n", "Target output Language; index to word mapping\n", "1995 ----> jump\n", "3 ----> .\n", "2 ----> <eos>\n" ] } ], "source": [ "def convert(lang, tensor):\n", " for t in tensor:\n", " if t!=0:\n", " print (\"%d ----> %s\" % (t, lang.index_word[t]))\n", "\n", "print (\"Input Language; index to word mapping\")\n", "convert(inp_lang_tokenizer, input_tensor[10])\n", "print()\n", "print (\"Target input Language; index to word mapping\")\n", "convert(targ_lang_tokenizer, decoder_input_target_tensor[10])\n", "print()\n", "print (\"Target output Language; index to word mapping\")\n", "convert(targ_lang_tokenizer, decoder_output_target_tensor[10])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2qASFQn2wUHO", "outputId": "1b4f1ccd-67ea-4e87-c8af-29996129334a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train input size : (273552, 16)\n", "train input-output size : (273552, 16)\n", "train output-output size : (273552, 16)\n" ] } ], "source": [ "s=273552\n", "input_tensor_train=input_tensor_train[:s]#269280\n", "decoder_input_target_tensor_train=decoder_input_target_tensor_train[:s]\n", "decoder_output_target_tensor_train=decoder_output_target_tensor_train[:s]\n", "\n", "\n", "print('train input size : ',input_tensor_train.shape)\n", "print('train input-output size : ',decoder_input_target_tensor_train.shape)\n", "print('train output-output size : ',decoder_output_target_tensor_train.shape)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YcbqO9VPOM9l", "outputId": "47c421f9-6b43-4ea0-dd39-a18c0c8a18bc" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train input size : (60048, 16)\n", "train input-output size : (60048, 16)\n", "train output-output size : (60048, 16)\n" ] } ], "source": [ "p=60048\n", "\n", "input_tensor_val=input_tensor_val[:p]#67296\n", "decoder_input_target_tensor_val=decoder_input_target_tensor_val[:p]\n", "decoder_output_target_tensor_val=decoder_output_target_tensor_val[:p]\n", "\n", "print('train input size : ',input_tensor_val.shape)\n", "print('train input-output size : ',decoder_input_target_tensor_val.shape)\n", "print('train output-output size : ',decoder_output_target_tensor_val.shape)" ] }, { "cell_type": "markdown", "metadata": { "id": "g8Fmp66i54FB" }, "source": [ "## ENCODER" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "id": "J7oPqwi4thxi" }, "outputs": [], "source": [ "class Encoder(tf.keras.Model):\n", "\n", " def __init__(self,vocab_size,embedding_size,lstm_size,input_length):\n", " super().__init__()\n", " self.vocab_size = vocab_size\n", " self.embedding_size = embedding_size\n", " self.input_length = input_length\n", " self.lstm_size= lstm_size\n", " self.lstm_output = 0\n", " self.state_h=0\n", " self.state_c=0\n", " self.embedding = Embedding(input_dim=self.vocab_size, output_dim=self.embedding_size, input_length=self.input_length) \n", " self.lstm = LSTM(self.lstm_size, return_state=True, return_sequences=True, name=\"Encoder_LSTM\")\n", "\n", " def call(self,input_sequence,states):\n", " input_embedd = self.embedding(input_sequence)\n", " self.lstm_output, self.lstm_state_h,self.lstm_state_c = self.lstm(input_embedd,initial_state = states)\n", " return self.lstm_output, self.lstm_state_h,self.lstm_state_c\n", " \n", " def initialize_states(self,batch_size):\n", " return tf.zeros((batch_size, self.lstm_size)),tf.zeros((batch_size, self.lstm_size)) " ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cPbb4ajLth1b", "outputId": "8a4175ca-3115-461e-9d5f-267f30a0bed2" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "def grader_check_encoder():\n", " vocab_size=12\n", " embedding_size=20\n", " lstm_size=32\n", " input_length=8\n", " batch_size=16\n", " encoder=Encoder(vocab_size,embedding_size,lstm_size,input_length)\n", " input_sequence=tf.random.uniform(shape=[batch_size,input_length],maxval=vocab_size,minval=0,dtype=tf.int32)\n", " initial_state=encoder.initialize_states(batch_size)\n", " print\n", " encoder_output,state_h,state_c=encoder(input_sequence,initial_state)\n", " \n", " assert(encoder_output.shape==(batch_size,input_length,lstm_size) and state_h.shape==(batch_size,lstm_size) and state_c.shape==(batch_size,lstm_size))\n", " return True\n", "print(grader_check_encoder())" ] }, { "cell_type": "markdown", "metadata": { "id": "WdS6h_jC58VJ" }, "source": [ "## ATTENTION" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "f9vMVeektiJD" }, "outputs": [], "source": [ "class Attention(tf.keras.Model):\n", " \n", " def __init__(self,scoring_function, att_units):\n", " super().__init__()\n", " self.scoring_function=scoring_function\n", " self.att_units=att_units\n", " self.softmax=Softmax()\n", " if self.scoring_function=='dot':\n", " pass\n", " \n", " elif scoring_function == 'concat':\n", " self.W = tf.keras.layers.Dense(att_units,activation='relu',kernel_initializer='he_uniform')\n", " self.V = tf.keras.layers.Dense(1)\n", " \n", " def call(self,decoder_hidden_state,encoder_output):\n", " '''\n", " Attention mechanism takes two inputs current step -- decoder_hidden_state and all the encoder_outputs.\n", " * Based on the scoring function we will find the score or similarity between decoder_hidden_state and encoder_output.\n", " Multiply the score function with your encoder_outputs to get the context vector.\n", " Function returns context vector and attention weights(softmax - scores)\n", " '''\n", " \n", " if self.scoring_function == 'dot':\n", " state_h=decoder_hidden_state\n", " state= tf.expand_dims(state_h, 1)\n", " prob=[]\n", " for i in range(encoder_output.shape[0]):\n", " eo=tf.transpose(encoder_output[i])\n", " dot=tf.matmul(state[i],eo)\n", " soft_out=self.softmax(dot[0])\n", " prob.append(soft_out)\n", " \n", " attention_weights=tf.reshape(tf.convert_to_tensor(prob),(encoder_output.shape[0],encoder_output.shape[1],1))\n", " context_vector=attention_weights * encoder_output\n", " context_vector = tf.reduce_sum(context_vector, axis=1)\n", " return context_vector,attention_weights\n", "\n", " \n", " elif self.scoring_function == 'concat':\n", " state = tf.expand_dims(decoder_hidden_state, 1)\n", " state= tf.tile(state,[1,encoder_output.shape[1],1])\n", " score=self.V(tf.nn.tanh(self.W(tf.concat([encoder_output,state],axis=-1))))\n", " score=tf.transpose(score,[0,2,1])\n", " attention_weights = tf.nn.softmax(score,axis=2)\n", " context_vector = tf.matmul(attention_weights , encoder_output)\n", " context_vector=tf.reshape(context_vector,shape=(context_vector.shape[0],context_vector.shape[2]))\n", " attention_weights=tf.reshape(attention_weights,shape=(attention_weights.shape[0],attention_weights.shape[2],attention_weights.shape[1]))\n", " return context_vector, attention_weights" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "zieQLhsmlCoM", "outputId": "643aaed3-a2b8-49f7-c0a4-97446f6b3f2e" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "True\n" ] } ], "source": [ "def grader_check_attention(scoring_fun):\n", " \n", " input_length=10\n", " batch_size=16\n", " att_units=32\n", " state_h=tf.random.uniform(shape=[batch_size,att_units])\n", " encoder_output=tf.random.uniform(shape=[batch_size,input_length,att_units])\n", " attention=Attention(scoring_fun,att_units)\n", " context_vector,attention_weights=attention(state_h,encoder_output)\n", " assert(context_vector.shape==(batch_size,att_units) and attention_weights.shape==(batch_size,input_length,1))\n", " return True\n", "print(grader_check_attention('dot'))\n", "print(grader_check_attention('concat'))" ] }, { "cell_type": "markdown", "metadata": { "id": "7rWr9QJa-oR6" }, "source": [ "## ONE STEP DECODER" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "id": "bWPrctVYONrA" }, "outputs": [], "source": [ "class One_Step_Decoder(tf.keras.Model):\n", " def __init__(self,tar_vocab_size, embedding_dim, input_length, dec_units ,score_fun ,att_units):\n", " # Initialize decoder embedding layer, LSTM and any other objects needed\n", " super().__init__()\n", " self.tar_vocab_size = tar_vocab_size\n", " self.embedding_dim = embedding_dim\n", " self.input_length = input_length\n", " self.dec_units= dec_units\n", " self.score_fun = score_fun\n", " self.att_units=att_units\n", " self.attention=Attention(score_fun,att_units)\n", " self.softmax=Softmax()\n", " self.dense=Dense(self.tar_vocab_size)\n", " self.embedding = Embedding(input_dim=self.tar_vocab_size, output_dim=self.embedding_dim, \n", " input_length=1)\n", " self.lstm = LSTM(self.dec_units, return_state=True, return_sequences=True, name=\"Encoder_LSTM\")\n", "\n", " def call(self,input_to_decoder, encoder_output, state_h,state_c):\n", "\n", " #A\n", " emb=self.embedding(input_to_decoder)\n", " #B\n", " context_vector,attention_weights=self.attention(state_h,encoder_output)\n", " context_vector=tf.expand_dims(context_vector,1)\n", " #C\n", " con=Concatenate()([emb,context_vector])\n", " #D\n", " decoder_out,hidden_state,cell_state=self.lstm(con,initial_state = [state_h,state_c])\n", " dense_out=self.dense(decoder_out)\n", " \n", " return tf.reshape(dense_out,(dense_out.shape[0],dense_out.shape[2])),hidden_state,cell_state,attention_weights,tf.reshape(context_vector,(context_vector.shape[0],context_vector.shape[2]))\n", " \n", " #One step decoder mechanisim step by step:\n", " #A. Pass the input_to_decoder to the embedding layer and then get the output(1,1,embedding_dim)\n", " #B. Using the encoder_output and decoder hidden state, compute the context vector.\n", " #C. Concat the context vector with the step A output\n", " #D. Pass the Step-C output to LSTM/GRU and get the decoder output and states(hidden and cell state)\n", " #E. Pass the decoder output to dense layer(vocab size) and store the result into output.\n", " #F. Return the states from step D, output from Step E, attention weights from Step -B\n", " " ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1ZJd9looONnj", "outputId": "ed28361f-78c5-4294-fa1a-6a38be3a24c1" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "True\n" ] } ], "source": [ "def grader_onestepdecoder(score_fun):\n", " vocab_size=13 \n", " embedding_dim=12 \n", " input_length=10\n", " dec_units=16 \n", " att_units=16\n", " batch_size=32\n", " onestepdecoder=One_Step_Decoder(vocab_size, embedding_dim, input_length, dec_units ,score_fun ,att_units)\n", " input_to_decoder=tf.random.uniform(shape=(batch_size,1),maxval=10,minval=0,dtype=tf.int32)\n", " encoder_output=tf.random.uniform(shape=[batch_size,input_length,dec_units])\n", " state_h=tf.random.uniform(shape=[batch_size,dec_units])\n", " state_c=tf.random.uniform(shape=[batch_size,dec_units])\n", " output,state_h,state_c,attention_weights,context_vector=onestepdecoder(input_to_decoder,encoder_output,state_h,state_c)\n", " assert(output.shape==(batch_size,vocab_size))\n", " assert(state_h.shape==(batch_size,dec_units))\n", " assert(state_c.shape==(batch_size,dec_units))\n", " assert(attention_weights.shape==(batch_size,input_length,1))\n", " assert(context_vector.shape==(batch_size,dec_units))\n", " \n", " return True\n", " \n", "\n", "print(grader_onestepdecoder('dot'))\n", "print(grader_onestepdecoder('concat')) " ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "id": "CM61UZ2_5iq1" }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "id": "_TDJ4T7dFUMZ" }, "source": [ "## DECODER" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "id": "pxGuuj4Jo6t9" }, "outputs": [], "source": [ "class Decoder(tf.keras.Model):\n", " def __init__(self,out_vocab_size, embedding_dim, output_length, dec_units ,score_fun ,att_units,input_length):\n", " super().__init__()\n", " self.onestepDecoder=One_Step_Decoder(out_vocab_size, embedding_dim, input_length, dec_units ,score_fun ,att_units)\n", " \n", "\n", " def call(self, input_to_decoder,encoder_output,decoder_hidden_state,decoder_cell_state ):\n", " #Initialize an empty Tensor array, that will store the outputs at each and every time step\n", " all_outputs=tf.TensorArray(tf.float32,size=tf.shape(input_to_decoder)[1], name='output_array')\n", " \n", " for timestep in range(0,tf.shape(input_to_decoder)[1]):\n", " output,decoder_hidden_state,decoder_cell_state,_,_=self.onestepDecoder(input_to_decoder[:,timestep:timestep+1],encoder_output,decoder_hidden_state,decoder_cell_state)\n", " #storing the one step decoder outputs to the tensor array\n", " \n", " all_outputs=all_outputs.write(timestep,output)\n", " \n", " all_outputs=tf.transpose(all_outputs.stack(), [1,0,2])\n", " return all_outputs" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "8VnI2hJWFKfv", "outputId": "4bd78e80-5a00-487b-a835-6f20f20d04a3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "True\n" ] } ], "source": [ "def grader_decoder(score_fun):\n", " out_vocab_size=13 \n", " embedding_dim=12 \n", " input_length=10\n", " output_length=11\n", " dec_units=16 \n", " att_units=16\n", " batch_size=32\n", " \n", " target_sentences=tf.random.uniform(shape=(batch_size,output_length),maxval=10,minval=0,dtype=tf.int32)\n", " encoder_output=tf.random.uniform(shape=[batch_size,input_length,dec_units])\n", " state_h=tf.random.uniform(shape=[batch_size,dec_units])\n", " state_c=tf.random.uniform(shape=[batch_size,dec_units]) \n", " decoder=Decoder(out_vocab_size, embedding_dim, output_length, dec_units ,score_fun ,att_units,input_length)\n", " output=decoder(target_sentences,encoder_output, state_h,state_c)\n", " assert(output.shape==(batch_size,output_length,out_vocab_size))#(32,11,13)\n", " \n", " return True\n", "print(grader_decoder('dot'))\n", "print(grader_decoder('concat'))" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "id": "nVXqPxkHqMrI" }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "id": "LBwFiOaa4cnX" }, "source": [ "## LOSS" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "id": "eCTHv1kW4eRB" }, "outputs": [], "source": [ "optimizer = tf.keras.optimizers.Adam()\n", "loss_object = tf.keras.losses.SparseCategoricalCrossentropy(\n", " from_logits=True, reduction='none')\n", "\n", "def loss_function(real, pred):\n", " mask = tf.math.logical_not(tf.math.equal(real, 0))\n", " loss_ = loss_object(real, pred)\n", "\n", " mask = tf.cast(mask, dtype=loss_.dtype)\n", " loss_ *= mask\n", "\n", " return tf.reduce_mean(loss_)" ] }, { "cell_type": "markdown", "metadata": { "id": "k_q2WsAm4_l_" }, "source": [ "## ENCODER_DECODER" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "id": "5PewG0bpONdX" }, "outputs": [], "source": [ "class encoder_decoder(tf.keras.Model):\n", " def __init__(self,vocab_inp_size,embedding_size,lstm_units,input_length,batch_size,vocab_tar_size,output_length,scoring_fun):\n", " super().__init__()\n", " #Intialize objects from encoder decoder\n", " #1\n", " self.encoder=Encoder(vocab_inp_size,embedding_size,lstm_units,input_length)\n", " self.initial_state=self.encoder.initialize_states(batch_size)\n", " #2\n", " self.decoder=Decoder(vocab_tar_size, embedding_size, output_length, lstm_units ,scoring_fun ,lstm_units,input_length)\n", "\n", "\n", " def call(self,input):\n", " input_sequence=input[0]\n", " target_sentences=input[1]\n", " encoder_output,state_h,state_c=self.encoder(input_sequence,self.initial_state) \n", " \n", " output=self.decoder(target_sentences,encoder_output, state_h,state_c)\n", " return output" ] }, { "cell_type": "markdown", "metadata": { "id": "hyaCL7Tct9qd" }, "source": [ "#### FUNCTION FOR PREDICTION" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "id": "6HwEwUXHe_Wb" }, "outputs": [], "source": [ "max_length_inp=input_tensor.shape[1]\n", "max_length_targ=target_tensor.shape[1]" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "id": "l8Hn4jFJlm6u" }, "outputs": [], "source": [ "def preprocess_sentence(data):\n", " u=data.lower()\n", " u=re.sub(r\"'m\", ' am', u)\n", " u=re.sub(r\"'ll\", ' will', u)\n", " u=re.sub(r\"'d\", ' had', u)\n", " u=re.sub(r\"'s\", ' is', u)\n", " u=re.sub(r\"'ve\", ' have', u)\n", " u=re.sub(r\"'re\", ' are', u)\n", " u=re.sub(r\"won't\", 'would not', u)\n", " u=re.sub(r\"can't\", 'can not', u)\n", " u=re.sub(r\"o'clock\", '', u)\n", " u=re.sub(r\"n't\", ' not ', u)#\"haven't\", ' don't\n", " u=re.sub(r\"([?.!,¿])\", r\" \\1 \", u)\n", " #u=re.sub(r'[^a-zA_Z0-9]',' ',u)\n", " \n", " q= re.sub(r\"[^a-zA-Z?.!,¿]+\", \" \", u)\n", " sen='<sos> ' + q + '<eos>'\n", " return sen" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "id": "0uJrunRMlRaF" }, "outputs": [], "source": [ "def evaluate(sentence):\n", " attention_plot = np.zeros((max_length_targ, max_length_inp))\n", "\n", " sentence = preprocess_sentence(sentence)\n", "\n", " inputs = [inp_lang_tokenizer.word_index[i] for i in sentence.split(' ')]\n", " inputs = tf.keras.preprocessing.sequence.pad_sequences([inputs],\n", " maxlen=max_length_inp,\n", " padding='post')\n", " inputs = tf.convert_to_tensor(inputs)\n", " result = ''\n", " enc_hidden = encoder.initialize_states(1)\n", " enc_output, enc_hidden,enc_cell = model.layers[0](inputs, enc_hidden)\n", " dec_hidden = enc_hidden\n", " dec_cell=enc_cell\n", " dec_input = tf.expand_dims([targ_lang_tokenizer.word_index['<sos>']], 0)\n", "\n", " for t in range(max_length_targ):\n", " predictions, dec_hidden, dec_cell,attention_weights,context_vector = model.layers[1].onestepDecoder(dec_input,enc_output,dec_hidden,dec_cell,training=False)\n", " # storing the attention weights to plot later on\n", " attention_weights = tf.reshape(attention_weights, (-1, ))\n", " attention_plot[t] = attention_weights.numpy()\n", " predicted_id = tf.argmax(predictions[0]).numpy()\n", "\n", " result += targ_lang_tokenizer.index_word[predicted_id] + ' '\n", "\n", " if targ_lang_tokenizer.index_word[predicted_id] == '<eos>':\n", " return result, sentence, attention_plot\n", "\n", " # the predicted ID is fed back into the model\n", " dec_input = tf.expand_dims([predicted_id], 0)\n", "\n", " return result, sentence, attention_plot\n", "\n" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "id": "4N56tLO6lRT6" }, "outputs": [], "source": [ "def plot_attention(attention, sentence, predicted_sentence):\n", " fig = plt.figure(figsize=(10,10))\n", " ax = fig.add_subplot(1, 1, 1)\n", " ax.matshow(attention, cmap='gray')\n", "\n", " fontdict = {'fontsize': 14}\n", "\n", " ax.set_xticklabels([''] + sentence, fontdict=fontdict, rotation=90)\n", " ax.set_yticklabels([''] + predicted_sentence, fontdict=fontdict)\n", "\n", " ax.xaxis.set_major_locator(ticker.MultipleLocator(1))\n", " ax.yaxis.set_major_locator(ticker.MultipleLocator(1))\n", "\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "id": "6Dhn7C42lRLK" }, "outputs": [], "source": [ "def translate(sentence):\n", " result, sentence, attention_plot = evaluate(sentence)\n", "\n", " print('Input: %s' % (sentence))\n", " print('Predicted translation: {}'.format(result))\n", "\n", " attention_plot = attention_plot[:len(result.split(' ')), :len(sentence.split(' '))]\n", " plot_attention(attention_plot, sentence.split(' '), result.split(' '))" ] }, { "cell_type": "markdown", "metadata": { "id": "YtD94W_MuHBU" }, "source": [ "#### FUNCTION FOR BLUE SCORE" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "id": "uVIavA-2nv6I" }, "outputs": [], "source": [ "def tok2word1(data,tokenizer):\n", " a=''\n", " for i in data:\n", " \n", " if tokenizer.index_word[i]=='<eos>':\n", " break\n", " \n", " a=a+' '+tokenizer.index_word[i]\n", " a=a.split('<sos>')[1][1:]+' '\n", " return a\n", "def tok2word2(data,tokenizer):\n", " a=''\n", " for i in data:\n", " if tokenizer.index_word[i]=='<eos>':\n", " break\n", "\n", " a=a+' '+tokenizer.index_word[i]\n", " return a\n", "index=random.sample(range(0,input_tensor_val.shape[0]),1000)\n", "\n", "def bleu_score(input_val,target_val):\n", " score=0\n", " for i in index: \n", " inn=input_val[i]\n", " out=target_val[i]\n", " in_sen=tok2word1(inn,inp_lang_tokenizer)\n", " out_sen=tok2word2(out,targ_lang_tokenizer)\n", " ref=[out_sen.split(),]\n", " translation,_,_ = evaluate(in_sen)\n", " trans=translation.split()[:-1]\n", " res=bleu.sentence_bleu(ref, trans,)\n", " score=score+res\n", " score=score/1000\n", " print('avg. bleu score : ',score)" ] }, { "cell_type": "markdown", "metadata": { "id": "4HN9md7ne_5U" }, "source": [ "# DOT" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "id": "HDcvMcy3fCX6" }, "outputs": [], "source": [ "vocab_inp_size = len(inp_lang_tokenizer.word_index)+1\n", "vocab_tar_size = len(targ_lang_tokenizer.word_index)+1\n", "embedding_size=378\n", "lstm_units=470\n", "input_length=input_tensor.shape[1]\n", "output_length=decoder_input_target_tensor_train.shape[1]\n", "batch_size=48\n", "\n", "encoder=Encoder(vocab_inp_size,embedding_size,lstm_units,input_length)\n", "initial_state=encoder.initialize_states(batch_size)\n", "\n", "scoring_fun='dot'" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "id": "pKCJCcP_fCOh" }, "outputs": [], "source": [ "model = encoder_decoder(vocab_inp_size,embedding_size,lstm_units,input_length,batch_size,vocab_tar_size,output_length,scoring_fun)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "id": "fdHdaNnmfCGB" }, "outputs": [], "source": [ "optimizer = tf.keras.optimizers.Adam()\n", "\n", "model.compile(optimizer=optimizer,loss=loss_function)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "id": "s5OKFb38afVy" }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 46, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "3ExO84DMfQUM", "outputId": "3be77b89-ed3b-44de-80ac-0995c721b563" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/6\n", "5699/5699 [==============================] - 1624s 283ms/step - loss: 1.6256 - val_loss: 0.5345\n", "Epoch 2/6\n", "5699/5699 [==============================] - 1617s 284ms/step - loss: 0.4072 - val_loss: 0.2864\n", "Epoch 3/6\n", "5699/5699 [==============================] - 1639s 288ms/step - loss: 0.1912 - val_loss: 0.2244\n", "Epoch 4/6\n", "5699/5699 [==============================] - 1613s 283ms/step - loss: 0.1168 - val_loss: 0.1998\n", "Epoch 5/6\n", "5699/5699 [==============================] - 1612s 283ms/step - loss: 0.0825 - val_loss: 0.1916\n", "Epoch 6/6\n", "5699/5699 [==============================] - 1607s 282ms/step - loss: 0.0638 - val_loss: 0.1892\n" ] }, { "data": { "text/plain": [ "<tensorflow.python.keras.callbacks.History at 0x7f9091b33940>" ] }, "execution_count": 46, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "model.fit([input_tensor_train,decoder_input_target_tensor_train], decoder_output_target_tensor_train,epochs=6,batch_size=48,validation_data=([input_tensor_val,decoder_input_target_tensor_val], decoder_output_target_tensor_val))" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "id": "gT5xgv-FYfph" }, "outputs": [], "source": [ "model.save_weights(\"/content/drive/My Drive/model_dot_1/dot_pos2.hdf5\")" ] }, { "cell_type": "markdown", "metadata": { "id": "ypBvNNd6oOrj" }, "source": [ "##### Model load" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "id": "lxmUqrIwTRA0" }, "outputs": [], "source": [ "model.load_weights(\"/content/drive/My Drive/model_dot_1/dot_pos2.hdf5\")" ] }, { "cell_type": "markdown", "metadata": { "id": "7tAr-zipmhbw" }, "source": [ "##### TRANSLATION" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 684 }, "id": "DliiOdsGfQFB", "outputId": "fc63aff0-ddd7-4099-a757-48df34ec05a6" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input: <sos> amo la mela <eos>\n", "Predicted translation: i love the apple . <eos> \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x720 with 1 Axes>" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Actual eng sentence : i love apple\n" ] } ], "source": [ "translate(u'amo la mela ')\n", "print('Actual eng sentence : i love apple')" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 711 }, "id": "qLvQa3gyfP-i", "outputId": "94515393-43bb-4ab8-dc67-6f7d5db5f4ce" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input: <sos> non posso rispondere alla tua domanda <eos>\n", "Predicted translation: i can not answer your question . <eos> \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x720 with 1 Axes>" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Actual eng sentence : i can not answer your question \n" ] } ], "source": [ "translate('non posso rispondere alla tua domanda ') \n", "print('Actual eng sentence : i can not answer your question ')" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 715 }, "id": "26AHA59EfP3i", "outputId": "d630655d-c2d4-4114-f6f4-bc1a27faec61" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input: <sos> tom non sembrava essere molto interessato alla scuola <eos>\n", "Predicted translation: tom did not seem to be very interested in school ? <eos> \n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAKHCAYAAACPaEGPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZhkVX3/8fdnZkRZRNxFf1GMiOxoQFbFBRUNxj0xijuKGk1wRSOJookLikEjokwQ0YC4xA017oqKiojsgiIoICKLQdYZZGC+vz/ubaem6ZlpmO6+t/q+X8/TD1W3blV9q5iqT51zzzk3VYUkSRqOBV0XIEmS5pbhL0nSwBj+kiQNjOEvSdLAGP6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLALOq6AEkSJLkn8ApgS6CAs4HDquqyTgvTvGTLX5I6lmQ34Dzg2cBS4AZgb+BXSXbpsjbNT/HEPpLUrSQ/Bs4EXlZVy9ttC4APA1tX1a5d1qf5x/CXpI4lWQo8uKp+OWn75sCpVbVuN5VpvrLbX5K6dzVw/ym23x+4ao5r0QA44E+SuvdJ4CNJ9gd+1G7bDTgIOLazqjRvGf6S1L39gQBHsuJ7eRnwIeCNXRWl+ctj/pLUE0nWAx7QXj2/qpZ0WY/mL8Nf6pkkdwaeANwXWGf0tqp6WydFaVYlORLYr6qunbR9feADVfWibirTfGX4Sz2SZGfgK8CfgLsDvwM2bq9fUFXbdlieZkmSm4GNq+rySdvvBlxaVR6i1YzyH5TUL+8BjgH2A64BHg1cTzPo6yMd1qVZkOQuNMf6A9w5yU0jNy8E9gJc4U8zzpa/1CNJrgYeWlXnJrkK2KWqzknyUOATVfXAjkvUDEqynGYp31Up4C1V9fY5KkkDYctf6pcbRy5fBtwPOAe4Drh3JxVpNj2KptX/HeDpwJUjt90IXFhVl3RRmOY3w1/ql1OAhwLnAscD/96e8OU5wBkd1qVZUFXfA0hyf+C3E0v7SrPNbn+pR5LsANyxqr6b5O7Ax2kWezkXeGFVndlpgZpVSe7N1LM8vt9NRZqvDH9J6lgb+p8Adqc5zh9GxgJU1cKOStM85dr+Uo8keV+S7buuQ3PufcDNwJbAEuDhwN/SjPd4fId1aZ4y/KV+2RH4aZJzkhyQZJOO69HceATwhqr6BU2L/4qq+hzwBuDfOq1M85LhL/VIe972TWnm+u8NnJ/khCQva1f+0/y0LvCH9vKVwD3ay2cDLuykGWf4Sz1TVb+uqn+vqi1pRv6fCPwL4JSv+esXwObt5dOAlyW5H/AKmlUepRnlVD+p324H3J5m9PfNHdei2fN+4F7t5bcBXwOeRbOs8/O7Kkrzl6P9pZ5JshlNl/+zaRb5+S5wNPC5qrq+y9o0N9qz+20OXFRVf1jT/tKtZctf6pEkJwMPoen6PQw4tqou7bYqzbWqWpLkGpqVHaUZ5zF/qV++DmxdVdtX1SEG/zAkeUeS57eXk+SbNAs7/T7JTt1Wp/nIbn9J6liSC4FnVtWJSf4a+BjNGf32Bratqkd1WqDmHbv9pZ5pj/k/g6mXeX1RJ0Vptt0TuLi9/NfAp6vqpCRXAid3V5bmK8Nf6pEkewGfBU4Ftgd+CjyAZsT/DzosTbPr/2gGd14MPA54Y7t9Ec1Sv9KM8pi/1C9vA95aVbvQTPN6LrAJ8C2as/xpfvos8In2WP9daMZ+ADwYOK+zqjRvGf5SvzwI+FR7eRmwXlXdQPOj4FWdVaXZ9hrgP2lW9HvsyJTOjYEPdVaV5i27/aV+uRa4Q3v59zRL/Z5F81l1ed95qqpuAt47xfZDOihHA2DLX+qXnwAPay9/BXhvkrcAHwV+3FlVmlVJHjE6pS/JC9pzOhyeZIMua9P8ZPhL/fIamrX8AQ4EvgE8nea474s7qmmVkuyQ5JlJ1m+vr5/EHsVb7320y/smeRBwOHAGsAvwng7r0ixLcpckb05yrzXvPXP8kI6BJLej+RI4qT3+q3moDc3NaVr/VNUS4OWdFrUKSe4JfJHmFMQFPBD4NfAfwA3Aft1VN5Y2Bc5sLz8d+GZV/UPbG/BZevrvQDNib+AtwI3Au+bqSW35j4en0Kzv/vddF6LZ0x73/Rxwx65rmYZDgMuAuwJLRrZ/hmaqmm6d5cDC9vIeNCf2AbiU5j3WrZDkhUm+keQXSX49+td1bVN4Hs0P/ufN5ZMa/uPh+TSDv17QcR2afafTtAL7bg/ggKr646Tt59MsTqRb56fAvyZ5LvBw4Kvt9k1oPvuapiSvpxk8+TOa9+8LNINm7wIc2V1lt5RkS2BbmpN43TfJQ+fquQ3/nktyD+CxNL8Kd2vP8a3560CaQX5PSfIX7fHAP/91XdyIdWm6KSe7O023v26dV9HM6T8UeHtVnd9u/1sc6HlrvQTYt6r+mWa67KFV9SSaHwR9+/58PvD1qroA+Dxz2MBzbf+eS/Jq4O+raqck3wB+UFX/1nVdmh1Jlo9cHf1wBqiqWkgPJPkycEZVvSnJtTStl4uATwM3V9XfdVrgPJHkDjTv57KuaxkXSZYAm1fVRUkuBx5XVacl2ZRm3FQvfkQnWUDzmXlVVf1Pkj2BY4CN5+L/twP++u/5wBHt5aOBfwEM//lrXE7gsj/wvbab8vY0raqtgDsBu3VZ2DhLsgPNcs5fbhf6WQjc1G1VY+dS4G40wXohzWDp02gOp/WptfsYYD3guPb6N2l6055I0wswq2z591iSbWmOBd67qv6vnU51Gc0KYHYFqlPt1KSX05yDYAFwCvDBqurdMeokfwlsSfPlf05V9Wrg11SzJ6rq10kOB26oKmdPTFOSI4CLq+rAJC+jGZx6IvBXNCdMekmnBbaSHA0sqap9R7a9F3hAVT1l1p/f8O+v9h/CplX15JFtRwPXV9VLu6tMsynJxjShumW76RzgQ1V1SXdVrdBOPT0BeF5V/bLrelYnyYbAR2imz00cUgnN9Ll9qurarmobleQTwPo0x3wvArZrw/8xwAeqaosu6xsnbXf6gnb2DEmeSdMbdS5weB8OoSS5I00PxZ5VdcLI9ofQjPy/d1X9YTZrcMBfTyVZSDMC9L8n3XQ08LdJ1rnlvTTukjyWZsT8M2mm0C2hGfR1XpJeTKFrvzzvT7+6UFfl/TTjER5FM0hxXZqZCtvSLKzTF86emCFVtXwi+Nvrn6qqf6qqQ/sQ/K0FwBNGgx+gqk4FHg3cPNsF2PLvqbb19xLgXVV148j2BcCbgI9X1UVd1afZkeQcmmN/+9XIhzPJ+2kGLvWiBZjkPQBV9fqua1mdJP8HPKWqfjBp++7A56uqF3Pok1wD7FBV57YDKCda/jsCX+1LnX2V5K+mu29VnTKbtYwLw1/qkSRLab74z520fTPgtKpar5vKVpbkMJqVyX5DM5/6+tHbq+qfuqhrsnbk9w5Vdfak7VsDP6mq9bupbGXOnlg77SyZojmkszp9mjFzd4CquqK9vg1Nj9/Pq+rY2X5+R/uPkSTr0hy7+lVVXdh1PZoVJwPb0ByfHLUNcOrcl7NKW9AM8AP4y0m39alF8UPg35I8t10umXbg7FuBH3Va2cqcPbF27t91AbfBp2kO6x6Z5G7A94FLgH9Mcu+qusVZHmeSLf8eS3IUzbzUw9pj/D+j+UK4EXhqVX11dffXeJjUZfkg4CDgMFac4GdnmgGAb5yLFsF80ramvkYzpeqMdvM2NGMp9qyqn3dV22TjNHtCa689JPXwqjq7nZWwT1U9NMmTgfdU1Waz+vyGf38l+T2wV1WdkuQZwME0U4FeRBP+O632ATQWxrHLckLbYnkAzSGJP3Vdz1SSrEdziGLzdtM5wDFVtbS7qlYYp9kT46KdOvkKVkzvPBs4rKou67SwEZMWI/of4PSq+rckfwGcW1XrzurzG/79leQGmql+F7dzV6+uqtcm2QQ4s6rG4QQwWoNbs2RzXw73tFOVjqSZQjc6L/3DwKVVdWCX9U1oB/b9aHT0d7t9EbBrVX2/m8pW1q5E97DJYz106yXZjaa35zJWLI28C3APmt6eXqyRkuR04KM0005/TrN+y0/ahZ6+VFUbz+bzO9Wv3y4Ftm6n/e0JfKvdvgHNmtWaB6rqwun+dV3riIOAe9MsnDLagv4y8NROKprad2lO6DLZndrb+uJjNLN7tPYOBo4FNquq51bVc4HNgE/SjKXoi7fSfI4uAE6sqp+02/dkDsb3OOCv344EPkUzCORm4Nvt9p2AX3RVlGZX22W5G01LZaUf6FV1WCdF3dKTaA49nZZktPvwHG45ALBLYeoBiHdl0gyFjq0P7N2u89Db2RNj4sHAC6rqz+fJqKrlSf6DHg2ararPJbkvzY/o00du+hZNb8CsMvx7rKreluTnNIt8fGZkvv9NNL8YNc8keQ7NuRwC/JGVg6toBgL2wZ2B/5ti+x2ZgwVK1iTJxHrpBRydZHQ8wkJga/o12n9cZk+Mg6tpRv9PHj9xf+CquS9n1doxCJcl2SBJVdX1Iz0As8rw77mqusUvwKr6WBe1rMqYtFTHxduBdwNvm3ycumd+StP6n1glbyKgXko/QnXih8nEj6jRQxM30gyw+6+5LmpVqmpcTug0Dj4JfCTJ/qz4t7gbTYOpV7NlkrwCeANwn/b6xcBBc/G9afj3XHtyn9ex8qjV91TVWZ0W1hqjluq42BA4qufBD80qk19PshXN98hr2ss7Art3WhlQVS8ESHIBcHA1Z8jrvXGYPTEG9qf5PjqSFRm3DPgQ8MauiposyZuAf6YZozCxzO/DgXcl2bCq3jWrz+9o//5K8iTgc8APWPGP42Ht39Oq6ktd1TYhyYU0g5X63lL9syQbccseiis7KmclSQ4FfllVH+i6ljVp59C/jpXnpR9UVWd2WtgYGpfZE+OkneL5gPbq+ROLPPVFkouAN0xeuyPJ3sA7qmras4Bu0/Mb/v2V5Aya9cffMmn724AnV9V23VS2Ui1/BLavnp0idbJ2Ot2HgUcCoydFCj2aP98u5vQFmq7pM5k0q6Oq3tZFXeMkyZlM8zh5VW07y+VMS7tc8nY0c9NPALZtw/+JwNt78llfBzgAeBbNOKTbjd7el8/QuGincm9dVedN2v5Amqncd5jN57fbv98245Zn9aPdtv8c17IqxwB7AX1vqX4U2AjYh2b2RF9/9b4UeDzwB2BTbnkYpRfhn2RLmjXnf9lefyzwfJr5yu+uqi4H/f1Ph899W43D7Il/o1l7/p3AIcDrgU2Avwf+tbuyVjYy2HNKVfWkuaplDc6lOXPr5M/0s7nlYMUZZ/j32+U0XarnTdq+Pc0CFn3wGuALSfag3y3VHYGd+zJWYjX+FXhtVR3SdSFrcCTNYL9ftiuSfRE4nqbluiHNscxOVNVbu3rutdDr2ROtvwNeVlVfS3Iw8MWqOr89E+VjgcO7Le/PJr+Pt6PpVfkLmsOofXEg8Ol2Iaofttt2Ax5BcxrvWWX499t/AYcn2ZSVR62+DnhPZ1WtbCxaqjRnn7t910VMw0JgtS2XnticFVPTnkFzhry/TvIoml6WzsJ/Kkn+khWDZs/p4WGqvs+eALgnzYBjgOtoetKgWU2vN1OPJwZ7TpbkvcA1c1zOKrXz/HcCXg08sd18DrBjVbnIz8D9O82H7LU0XW7QdFm/BfjProqaZFxaqvsB70zyD5OPsfXMR2nWoe/Lj6ZVWUgzLgFgD+B/28vn04RELyTZEPgIzUC65Ss257M0J1K5trPiVtbr2ROti2gWpLmIpjdyT5oFiXZh5amUfXU4zXiK3vQMVdXPgOd08dyGf49VMxrzEOCQdjQwPfqymjAuLdUv0rT8f9ku+LLSzISq2rCTqm5pPeDFSfakOQvd5MMofVnp7Szg5e156PdgRUv/PjS9QH3xfmBb4FGs3Hv2YZpW9j4d1bWSqvpRkl1pevXOp3lPTwF26dHsic/T1HUizft6bJKX0Pw/70tP5Oo8qOsCJmvXSHkuzbiON1fVH9pzE1xSVb+Z1ed2tH9/JVkAzdKU7fV70XQPnV1VvegKbI/9XdOjY/tTSvL81d3el4WTkqxuvfmqqkfPWTGr0R6n/ALNGvkfq6oXtdvfSbOm+tO7rG9Ce9rUp1TVDyZt351mJs1du6ls/CXZGdiV5gx0X+66nglJJveKBtgYeAJwZFX949xXdUtJtqdZsv03NKdq37yd4XEgzWfo2bP6/IZ/fyX5KvC1qnp/kg1o1vNfn+bEPvtU1cc7LZA/T1F6Ns0o7z63VDXD2hNObVhVfxzZtgmwpKou76quUe1pU3eoqrMnbd+aZpzC+t1UtrIkNwMbT37fktwVuNxpdNM3xQ/o5cAVwHdowr8X65G0dX6/qt6S5Fpguzb8dwE+Odvz/O3277cdWDGl72k0g1XuT3NM+HVA5+FPsyb5xOCUzSfd1qtflkluT/PeTQz8+jlwbB9XUhuHld7a6Xx/BEiyLk13+q/6EvytHwL/luS5E4u8JFmf5rhvL3rPWlnF9tuzYmzFnEvytOnuW1W9GEk/Rkslb8/Uh51+zxyMmzH8+20DVpyI4nE03ZTLknwH+GB3Za0wLh+0dl7612imoU0cQ30J8NYkj6+qczorbsRUK70BvVvpLclRwElVdVi7+MtJNF2XNyZ5alV9tdMCV3g18HXgd+2iWQDb0AxQe1xnVbWSvKa9WMDLklw3cvNCmuVeuzyD53TXTCiaejvXHh5dVFUXT9r+/4Bl7cl0+mApzRTPyTanmeY9qxaseRd16CJgt7alsifwzXb7XYC+LVV5hyRbJ9kqyayuTHUbvZ+mh+K+VfXwqno4zSplp7NielUfHEQzovqvWHkE9ZeBp3ZS0dT2pBn4Bc0UtTsC96KZu3xgNyXdUruuwwNpFqQ5uf3bH9i0qn7eZW2tf2z/Arx45Po/ttdvD7ysq+KqasE0/3oR/K2jaY7vT7YnUy+a1pUvAm9peyQBqj1sdhBzcEpfj/n3WJKXAofSTPe7EPiras5L/U80g5g6H/yV5HbAO4BX0iybG+BPNCv+HVBVy1Zz9znTHvt96OQv/HZ9+hN7dOz3YpqV3n466TjgxCGAO3ZcIvDnpUk3raqLkxwBXF1Vr22/vM7sS50wHmedbI//Pm10/IRumyRXATtNrD45sn0zms/6XbqpbGXtNNT/pZmNsj5wKU13/4+AJ9Qsn4zKbv8eq6rDk5xM00L95sSof5qpQH1ZTvMgmrW+X8bKZ6Z6J80X7es6qmuyG1ixKMmoO7W39cU4rPQGzRfV1kl+T9Oi2rfdvgGTBn12aVzOOtnXw2fjeMyfJtemWtDrDqvY3omqugZ4WJJH0/T0LQBOqapvzcXz2/LvqSR3ojm5xw+muG03mul+nbcSklwKvKiq/nfS9r2AI6pq424qW1mSjwEPpTnOP9FdvQvNwh8nrWpVsLmW5HjgC1X1vrblv21V/SbJh4D7VdVfd1thI8mbaRafugRYl2Zq0o1J9qGZibJrpwW2MkZnnUzyTJp59FP1UHSyHn2S5WveC+jXybG+TTP98OWTth8OPKiqHtlJYSvX0vn3uy3//loOfDXJnlU1se4zSbajmbJyn84qW9mdaHoiJjufqVvaXdmPJgR+wIoW9EKa426v7qqoKaxqpbedaHpUeqGq3pbkLOB+wKeramJE+k30aKlXmgGeR41B8L8HeBXwXXp04qmqGsdxYQcA30myLc13JcBE63qPzqpaWeff77b8eyzJMcB1VfXSkW0H07SyenFmqiQnAj+rqldM2v4h4MFVtUs3lU2tPU/CFu3Vc/q41G87B/31NFOBFtAsofruHq30BkCSJ9CM9bg/sGdV/bZd8e3XVfXtbqtrJDkU+GVV9fqsk0kuA15RVb0+I2GSRTRLDt+XlU+NXVXVm8F0bfDvDzyk3XQKcHBVnd5dVSvr+vvd8O+xdonXY4F7tV2qC4CLgVf25fhau1La/wK/Y0V3+s40I9afUFUnrOq+c62P3aqT5Zanyn0c8Dz6carcP0uyN80SuUfQjPfYqh2Y+FKagWt7dlpgq52G+AWaufK9PetkkitolvLt3Y/RCUk2B75E82MvND1oi2je0z9VT5bIHqPPUKff7+PYpTMk36SZ7jVxxqc9aH5tf6mzim7pAmAzmvnAG7R/n6FZR/ui7spaWdutejTN+cevohlUN/rXF0fStlbSnCr38zRTO19Bc6KnvtgfeElVvZqVz5NwIvDgbkqa0sRZJ3elmSr5tyN/z+iwrskW09EJXm6F99H0Qt2JZqrxFjQLkZ1Gsy5FX4zLZ6jT73db/j2X5CCaQSpPSfJx4NrJXexdGpdlSceoW/UqmlN6npvk1cCTqupRaU+VW1WbdFtho506uUVVXTjFlMSzqmrdjksEIMnlwDur52edTPJBmmWyz6any2SnOU/CI6rqrCRX0/w7/WWSRwAfqKptOy4RGJ/PEHT7/e6Av/77OPCzJPelabn0ZcDKhDD14KQN6NcUugU0LZS+G4tT5dIMStuMZv2JUbsz9QDQrozLWSe3ZMW/z8nLZPdFWLG42BU0g9J+SdNVvWlXRU1hXD5D0OH3u+Hfc1X183ZU9THAxVV1Utc1wUpnzirgnW1LcMJCmkFBfQrbiW7VAzuuY03G5VS5i4H/TPLi9vpfJHk48G769R5/lOZ8Dr04tr8qfZ3nP8lZwHbAr2mWc35D2/P3EqBPYxXG5TPU6fe74T8ePk5zvO2ArgsZsU3739Ac+xs9+ciNtKNr57qo1dgIeHaSx9LTbtXWG2gGqL2O5lS5EyP8n0TzhdsLVfXudq7yN2kWT/kuzcqOB1dVL8470VoPeHE7uKpX/9+THAc8p6quaS+vSlXVk+eqrtV4O81KdAD/AnyF5v/7H4C/66qoKYzFZ2hEJ9/vHvMfA0nuQrPW9+FVdWnX9YxK8lFgv3a1qt7KLU/zOar6sFTyhIzBqXInJFmPpst6Ac3CJNet4S5zqs//39vPzj9V1bXt5VXqyyJUk7XfTX+sngXJmH2GOvl+N/wlSRoYp/pJkjQwhr8kSQNj+I+RJPuuea9ujUONYJ0zzTpn1jjUOQ41gnWuiuE/XsbhH/E41AjWOdOsc2aNQ53jUCNY55QMf0mSBsbR/rMkiW+sJKlTVZWpttvylyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlg5l34Jzk+yaFd1yFJUl/Nu/CXJEmrN6/CP8lRwCOAVySp9m+TJLsn+UmSG5JcluSQJOuM3O/4JB9K8t4kVya5Isl+SW6f5INJrkpyUZLndvbiJEmaIfMq/IH9gB8DHwU2bv+WAV8FTgUeAuwDPAt456T77g1cC+wEvAt4H/AF4FxgB+BjwBFJNp71VyFJ0ixKVXVdw4xKcjxwVlW9sr3+duDvgAdV1fJ22wuAw4E7V9WS9j63r6pd2tsDXA78uKqe1G67HXA98Oyq+p9p1DG/3lhJ0tipqky1fb61/KeyBXDiRPC3TgDWATYd2XbGxIVqfhFdDpw5sm0Z8EfgHqt6oiT7Jjk5yckzVLskSTNuUdcFdGy0db5situm2rbKH0xVtRhYDLb8JUn9NR9b/jcCC0eunwPsnGT0tT6s3e/8uSxMkqQ+mI/hfwGwYzvK/27AYcC9gcOSbJFkL5oBfYdW1ZIO65QkqRPzMfwPpmnVnw1cAdwOeALNSP/TgCOBY4E3dVWgJEldmnej/fvCY/6SpK4NebS/JEkaYfhLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIMP/yRfTnJUe/n4JIeuYf+zkhw4F7VJkjQbFnVdQM88DVjWdRGSJM0mw39EVV3ZdQ2SJM22QXX7J1kvyVFJrktyWZI3Tbp9pW7/JPdI8sUkS5NcmORFc1+1JEkza1DhDxwMPBZ4OrAH8BBg99XsfxSwKfAY4CnA84BNZrVCSZJm2WC6/ZNsAOwDvKiqvt5ueyFw8Sr23wx4AvCwqvphu+35wK9X8xz7AvvOcOmSJM2oIbX8HwCsA/x4YkNVXQecuYr9twCWAyeN7H8hcMmqnqCqFlfVDlW1w4xULEnSLBhS+N9W1XUBkiTNpCGF//k00/h2ntiQZH1g61Xs/wua92fHkf3vC9x7FmuUJGnWDeaYf1Vdl+QjwEFJrqDpvn8zsHAV+/8yydeAw9tj+UuB/2j/K0nS2BpM+LdeB6wPfB5YAnygvb4qLwD+C/gO8AfgrcA9ZrdESZJmV6o8pD0bkvjGSpI6VVWZavuQjvlLkiQMf0mSBsfwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAM/2lI8oIk13VdhyRJM8HwlyRpYAYR/kmOT3JYknck+UOSy5McnGRBe/udk3wsyR+TLE3yrSRbtbc9EvgosH6Sav8O7O7VSJK0dgYR/q29gZuAXYFXAq8CntnedhSwE/BkYEdgCfC1JOsCP2r3XQJs3P4dPJeFS5I0kxZ1XcAcOruq3txePjfJS4A9kpwMPAl4RFV9HyDJc4GLgL2r6ogkVwNVVZeu7gmS7AvsO3svQZKktTek8D9j0vVLgHsAWwDLgR9P3FBVVyc5E9jy1jxBVS0GFgMkqbWqVpKkWTKkbv9lk64Xa379Brgkad4ZUvivyjk078MuExuSbAhsA5zdbroRWDj3pUmSNPMGH/5V9Svgi8DhSR6eZBvgaOAa4BPtbiMd2ZQAABueSURBVBcAd0jy2CR3S7JeN9VKkrT2Bh/+rRcCJwHHtf9dD3h8VS0FqKofAR8GjgWuAPbvqE5JktZaqjysPRsc8CdJ6lpVZarttvwlSRoYw1+SpIEx/CVJGhjDX5KkgTH8JUkaGMNfkqSBMfwlSRoYw1+SpIEx/CVJGhjDX5KkgTH8JUkaGMNfkqSBMfwlSRqYRV0XIGnuLVrU/4/+Xe96165LmJbLLrus6xKkW82WvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJAzM24Z9k9yQnJrkuydVJTkqydXvbrkm+l2RJkt8l+VCSDUfumyT7Jzk/ydIkZyZ5zsjtmySpJH/fPs7SJKcm2TbJ1kl+lOT6JCckuX8Xr1+SpJkyFuGfZBHwReAEYDtgJ+B9wM1JtgG+ARzX3vY04MHAkSMP8e/APsArgC2BdwKHJ9lr0lO9FTgIeAhwFXAs8AHgAGBH4A7Af878K5Qkae6kqrquYY2S3AX4P+CRVfW9Sbd9HFhWVfuMbHswcCpwT+B64A/A46rqByP7vA/YrKr+OskmwG+Al1XV4e3tTwS+BDy9qj7XbnsBcGhVbbCKOvcF9m2vbr+WL1uaNYsWLeq6hDW6613v2nUJ03LZZZd1XYK0SlWVqbb3/xsAqKorkxwFfD3Jt4FvA/9TVRfRhOymSZ45cpeJF/sA4CaaFvvXkoz+0rkdcMGkpzpj5PLEJ/rMSdvWT7JeVS2Zos7FwGKASc8lSVJvjEX4A1TVC9vW+uOBJwFvT/IUmkMXRwCHTHG33wHbtpf/Brho0u3LVnO9VrNtLA6XSJI0lbEJf4CqOh04HTgoyVeB5wOnAFtV1XlT3SfJ2cCfgPtV1XfmrFhJknpqLMK/HWH/UppBfb8D/pKmRf+hdtuJST4MHA5cC2wO/E1VvbSqrk1yMHBwkgDfBzYAdgaWt131kiQNxliEP7AE2Az4DHA3mmPvxwAHVdWyJLvTjOj/HrAQ+DXw+ZH7/2t7n9fR/GC4BjgNePdcvQBJkvpiLEb7jyMH/KnPHO0/cxztrz5b1Wh/B65JkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQw/T+1l6QZt/POO3ddwhp95jOf6bqEadl44427LkG61Wz5S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+LeSHJ/k0K7rkCRpthn+kiQNjOEPJDkKeATwiiTV/m2SZPckP0lyQ5LLkhySZJ2Oy5Ukaa0Y/o39gB8DHwU2bv+WAV8FTgUeAuwDPAt4Z0c1SpI0Iwx/oKquBm4EllTVpVV1KfAPwCXAP1TVOVX1ZeCNwCuTrNdhuZIkrRXDf9W2AE6squUj204A1gE2neoOSfZNcnKSk+eiQEmSbotFXRcwpmrKjVWLgcUASabcR5KkrtnyX+FGYOHI9XOAnZOMvkcPa/c7fy4LkyRpJhn+K1wA7NiO8r8bcBhwb+CwJFsk2Qt4F3BoVS3psE5JktaK4b/CwTSt+rOBK4DbAU+gGel/GnAkcCzwpq4KlCRpJnjMv1VV5wK7TNp8AbDT3FcjSdLsseUvSdLAGP6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLAGP6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLAGP6SJA2Mp/SVBuiEE07ouoQ1uvTSS7suYVqSdF3CtDz5yU/uuoRpOe6447ouYVqWL1/edQlrxZa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQMz2PBPcnySQ7uuQ5KkuTbY8JckaagMf0mSBmbo4b8oyfuT/LH9e0+SBQBJ1klyUJKLkyxJ8tMke3ZdsCRJa2vo4b83zXuwC/BSYF/gVe1tHwUeATwb2Br4GPClJNt1UKckSTNmUdcFdOz3wD9VVQG/SLIZ8JokXwSeBWxSVRe1+x6a5DE0PxL+oZtyJUlae0Nv+Z/YBv+EHwP3AR4GBDg7yXUTf8BewANW9WBJ9k1ycpKTZ7VqSZLWwtBb/qtTwEOBZZO2L13lHaoWA4sBktSq9pMkqUtDD/+dkmSk9b8zcAlND0CAe1XVdzurTpKkWTD0bv97A+9L8qAkzwBeDxxSVecCxwBHJXlGkr9MskOS1yV5WqcVS5K0lobe8j8GWAj8hKab/yPAIe1tLwQOAN4N/D/gSuAkwJ4ASdJYG2z4V9UjR66+corblwEHtn+SJM0bQ+/2lyRpcAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGJlXVdQ3zUhLfWGktLFo0HmccP+CAA7ouYVrud7/7dV3CtLz4xS/uuoRpWb58edclTEtVZarttvwlSRoYw1+SpIEx/CVJGhjDX5KkgTH8JUkaGMNfkqSBMfwlSRoYw1+SpIEx/CVJGhjDX5KkgTH8JUkaGMNfkqSBMfwlSRoYw1+SpIEx/CVJGhjDX5KkgTH8JUkaGMN/CknW6boGSZJmy9iHf5J9k1yWZOGk7Z9Iclx7+W+S/CzJDUl+k+TtowGf5IIkByY5MslVwDFJvpPk0EmPuWGSJUmeNicvTpKkWTD24Q98BrgT8NiJDUk2AJ4MHJ1kT+AY4FBgK+BFwDOAd0x6nNcAvwB2AN4E/Bfw7CS3H9nnWcB1wJdm5ZVIkjQHxj78q+qPwP8Ce49sfgpwE3AccADwnqr6aFWdX1XfBd4AvCxJRu7zvap6d1WdV1W/Aj4HLAeeOrLPi4CPV9WyqWppeyFOTnLyjL1ASZJm2NiHf+to4ClJ1muv7w18tqpuALYHDkhy3cQf8AlgfeBeI4+xUmBX1Z+A/6YJfJJsBewIfGRVRVTV4qraoap2mKHXJUnSjFvUdQEz5Cs0Lf0nJ/k28Bhgz/a2BcBbaQ4PTHbFyOXrp7j9COCMJPel+RHw46o6Z8aqliSpA/Mi/KvqT0k+Q9PivxtwKXB8e/MpwOZVdd5teNyfJ/kJ8BLgOTSHECRJGmvzIvxbRwPfBu4PHFtVy9vtbwO+nORC4NM0PQRbAztW1f7TeNz/Aj4MLAM+NeNVS5I0x+bLMX+AHwC/A7ak+SEAQFV9HdgLeBRwUvv3RuCiaT7up4AbgU9X1bUzWbAkSV2YNy3/qipgk1Xc9g3gG6u575T3a20ErMtqBvpJkjRO5k34z7QktwPuSrMewKlV9cOOS5IkaUbMp27/mbYb8HtgV5oBf5IkzQu2/Fehqo4Hsqb9JEkaN7b8JUkaGMNfkqSBMfwlSRoYw1+SpIEx/CVJGhjDX5KkgTH8JUkaGMNfkqSBMfwlSRoYw1+SpIEx/CVJGpg0Z8LVTEviG6veSjxtxdBcdNFFXZcwLVtssUXXJUzLkiVLui5hjZYvX05VTflht+UvSdLAGP6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLAGP6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLAGP6SJA2M4S9J0sBMK/yTHJXky7NdTN8luVuSSvLIrmuRJOm2mm7Lfz/gOdN90CQXJHndbStpZiV5ZBvYd+u6FkmS+mDRdHaqqqtnu5CpJFmnqm7s4rklSZqvbnW3f5LjkxyW5B1J/pDk8iQHJ1kwcTtwP+A9bYu7Rh5n1yTfS7Ikye+SfCjJhiO3H99uOzjJFcAP2+1bJvlKkmvb5zs2yb1G7rdNkm8nuSbJdUlOT/KoJJsA3213u6Kt56j2Pkmyf5LzkyxNcmaSlXo3kjw0yc+S3JDkVGCnW/f2SpLUP7d1wN/ewE3ArsArgVcBz2xvexpwMfA2YOP2jyTbAN8AjgO2a/d7MHDkpMd+DhDg4cDzkmwMfB84C9gReAywAfDFiR8cwCeA37e3Pxg4ELgB+C3w9Hafrdpa9muv/zuwD/AKYEvgncDhSfZq690A+Arwa2AH4I3Awbf6nZIkqWem1e0/hbOr6s3t5XOTvATYAzi2qq5McjNwbVVdOnKf1wOfqqr3TmxI8nLg1CT3qKrL282/qarXjuzzNuD0qnrDyLbnAVfShPJJND0NB1fVL9pdzhvZ98r24uVV9Yd22/rAa4DHVdUPJp43yY40Pwa+AjwbWAd4YVVdB5yV5O3Af6/qTUmyL7Dvat43SZI6d1vD/4xJ1y8B7rGG+2wPbJrkmSPb0v73AcBE+P9sivvtnuS6KR7zATTh/x/AEUmeD3wb+OzID4GpbAncAfja6GEJ4HbABe3lLYAz2uCf8OPVPCZVtRhYDDDpcSVJ6o3bGv7LJl0v1nwIYQFwBHDIFLf9buTy9VPc7yvAVLMHLgOoqgOTHAM8AdgTeEuSl1XV5EMKo48J8DfARZNum/zaJEmaV25r+K/JjcDCSdtOAbaqqvOm2H91TgH+DriwqlYZzFX1K+BXwH8m+RDwYprxBBOzBUbrORv4E3C/qvrOKh7yHOAFSdavqokfJDvfytolSeqd2Vrh7wLg4UnuMzK//iBgxyQfTvKQJJsmeWKSw9fwWB8E7gR8KslOSf4yyWOSLE5yxyTrJvlgO59/kyQ7AQ+jCXiAC2l6JvZKcvckG1TVtTSD9w5O8qK2lgcneVl73B6aQYQ3AUcm2SrJY4EDZuoNkiSpK7MV/m8G/gI4H7gCoKrOAHYHNgG+B5xOM8L+stU9UFVdAuwGLAe+Bvyc5gfBn9q/m4E7A0cBvwQ+T3Ns/jXt/X8HvAV4e/tch7YP/a80swJe1z7mN2lmBvymvd91wBOBB9L0PhwM/HnQoSRJ4ypVjkubDQ74U58lWfNOmlcuumjy8KZ+2mKLLbouYVqWLFnSdQlrtHz5cqpqyg+7J/aRJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbGU/rOEk/pqz5bsKD/v/vXWWedrkuYlhtuuKHrEqZlvfXW67qEadloo426LmFarrjiiq5LWKObbrqJ5cuXe0pfSZJk+EuSNDiGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4j0hyVJIvd12HJEmzaVHXBfTMfkC6LkKSpNlk+I+oqqu7rkGSpNlm+I9IchRwt6p6YpLjgbOBq4B9geXAx4H9q2p5Z0VKkrSWPOa/ensDNwG7Aq8EXgU8s9OKJElaS4b/6p1dVW+uqnOr6tPAd4E9VrVzkn2TnJzk5LkrUZKkW8du/9U7Y9L1S4B7rGrnqloMLAZIUrNYlyRJt5kt/9VbNul64XsmSRpzBpkkSQNj+EuSNDCGvyRJA5Mqx6XNBgf8qc8WLOj/7/511lmn6xKm5YYbbui6hGlZb731ui5hWjbaaKOuS5iWK664ousS1uimm25i+fLlU65a2/9vAEmSNKMMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBmZR1wVImnvLly/vuoQ1WrZsWdclzCtLlizpuoRpWbhwYdclTMuNN97YdQlrtMMOO6zyNlv+kiQNjOEvSdLAGP6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLAGP6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLAzJvwT3J8kkPny/NIkjRb5k34S5Kk6TH8JUkamN6Ff5Ldk5yY5LokVyc5KcnW7W07J/lOkuvb276T5N4jd1+Q5B1J/pDk8iQHJ1kw8th3TvKxJH9MsjTJt5JsNen5n5bkzCR/SvLbJAckyRy9fEmSZl2vwj/JIuCLwAnAdsBOwPuAm5NsB3wXOA/YDdgZ+BSwaOQh9gZuAnYFXgm8CnjmyO1HtY/5ZGBHYAnwtSTrts+/PfAZ4HPANsAbgX9uH0uSpHlh0Zp3mVMbAhsBX6qq89ttvwBIcgxwWlXtO7L/OZPuf3ZVvbm9fG6SlwB7AMcmeSDwJOARVfX99jGfC1xE86PhCOA1wPeq6i0jj/FA4A3AB2bwdUqS1Jletfyr6kqa1vnXk3wlyWuS3Le9+SHAd9bwEGdMun4JcI/28hbAcuDHI893NXAmsOXIPj+c9BgnAPdJsuGa6k+yb5KTk5y8pn0lSepKr8IfoKpeSNM1/32alvovk+w5zbsvm/xwTO811kzsU1WLq2qHqtphGo8nSVInehf+AFV1elUdVFWPBI4Hng+cCjx6LR72HJrXu8vEhrY1vw1w9sg+u02638OAi6vq2rV4bkmSeqNX4Z/k/knelWTXJPdL8ihgW5pwfg/wkCSLk2yX5EFJXjxyWGC1qupXNIMJD0/y8CTbAEcD1wCfaHd7L/CIJAcm2SzJ3sBrgXfP8EuVJKkzvQp/mtH3m9GMuD8X+BhwDHBQVZ0GPAbYHDgR+Anw99yyq391XgicBBzX/nc94PFVtRSgqk4B/hZ4OnAW8K72zxX9JEnzRqqmc7hbt1YS31hpLSxcuLDrEqbl5ptv7rqEeeWOd7xj1yVMyzXXXNN1CWu0ww47cPLJJ0+5Tk3fWv6SJGmWGf6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLAGP6SJA2M4S9J0sAY/pIkDYzhL0nSwBj+kiQNjOEvSdLAGP6SJA3Moq4LmM+SKc+k2Cue0ll9NS6nyl2wYDzaUMuXL++6hGlZunRp1yVMy1VXXdV1CWu0us/QePyrlSRJM8bwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDP81SPLKJKcmuT7Jb5P8c9c1SZK0NhZ1XcAY2AN4M/BzYHfgiCQ/r6rjui1LkqTbxvBfg6p66sjVXyd5B7BpV/VIkrS27Pa/FZK8Cbgd8Mmua5Ek6bay5T9NSf4F+CfgsVV1Sdf1SJJ0Wxn+05Dk3sDbgL2q6rTV7LcvsO+cFSZJ0m1g+E/PxkCAc1a3U1UtBhYDJKk5qEuSpFvNY/7Tcw7wUMDufknS2DP8p2dr4Gjg7l0XIknS2jL8p2c94EE0I/0lSRprHvOfhqo6nuaYvyRJY8+WvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MIa/JEkDY/hLkjQwhr8kSQNj+EuSNDCGvyRJA2P4S5I0MKmqrmuYl5L4xkrSPLX11lt3XcIanXfeeSxdunTK09Hb8pckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgDH9JkgbG8JckaWAMf0mSBsbwlyRpYAx/SZIGxvCXJGlgeh/+STZMstEcPddGSTaci+eSJKkrvQz/JAuT7JnkE8ClwHbt9jslWZzk8iTXJvlekh0m3fdpSc5M8qckv01yQJJMuv2MJEuTXNk+xj3bm7cDLk1yTPv8C+fqNUuSNFd6Ff5JtkrybuC3wKeA64HHA99vA/wrwH2AJwIPAb4PfCfJxu39twc+A3wO2AZ4I/DPwCvb2+8FfBL4GLAFsDvw3yMlfL99vqXt81+U5N1JtprFly1J0pxKVXVbQHJXYG/g+TSB/TWaQP5SVd0wst+jgeOAu1fV0pHtpwGfqKp3JzkG2LiqHj1y+4HAi6vq/yX5K+BnwCZVdeEa6roD8CTgecCewOnAx4Fjqur/pvG6un1jJUmzZuutt+66hDU677zzWLp0aaa6rQ8t/38E3g/cAGxWVU+qqs+MBn9re2A94Iok1038AVsDD2j32QL44aT7nQDcpz2WfzrwLeCsJJ9N8vIkd5+qqKq6oao+XVVPBDYDlrV1/uOqXkiSfZOcnOTkW/H6JUmaU4u6LgBYTBOsz6MJ5c/TtPy/XVU3j+y3ALgMePgUj3HNNJ6nqurmJI8DdgYeB+wDvDPJI6rq9NGd2+P9jwGeCzyV5lDEvwAfXc0TLG5fjy1/SVJvdd7yr6pLqurtVfUgmrC9jua4/MVJ3pvkwe2upwD3BJZX1XmT/i5v9zkH2G3SUzwMuLiqrm2fr6rqx1X1VuChwCXAMyd2TvKQJP8BXAwcC1wL7FFVm7d1XjIb74MkSXOlDy3/P6uqE4ETk7wK+BuacQA/bY/3f4umS/+LSfYHfgHci2aA3req6gfAe9v9DwQ+QRPurwXeBJBkZ5ofGF/n/7d3h7hRRQEUhs8NtSQkkDqCJEgIlk3AHroJFAlBINCk20DgcDg0DoGHBSDIRcwIRFsIvPb1zfk+Oa8zPR3zp3cmebtThIdJ7ib5vL/+JMmHJO+zO95/N+f8cfl/OQBcndW/8PcnY4zjJD/nnN/HGDeTvEzyLMlxdgH/mOT5nPPL/uefJnmR5P7++tskr+acc4zxIMmbJI+S3MruKP90zvl6/9zbSW78dpLwP7uv9xsLwD/b+hf+rn38t0r8AQ7X1uO/+mf+AMDVEn8AKCP+AFBG/AGgjPgDQBnxB4Ay4g8AZcQfAMqIPwCUEX8AKCP+AFBG/AGgjPgDQBnxB4Aybul7SdzSF4C1zTnd0hcAEH8AqCP+AFBG/AGgjPgDQBnxB4Ay4g8AZcQfAMqIPwCUEX8AKCP+AFBG/AGgjPgDQBnxB4Ay4g8AZcQfAMqIPwCUEX8AKCP+AFBG/AGgzNHaAw7JGOMkycnaOwDgImPOufaGgzTG8MYCsKo55zjrccf+AFBG/AGgjPgDQBnxB4Ay4g8AZcQfAMqIPwCUEX8AKCP+AFBG/AGgjPgDQBnxB4Ay4g8AZcQfAMqIPwCUEX8AKCP+AFBG/AGgjPgDQJmjtQccsG9Jvi78mnf2r3udbWFjYufS7FzWFnZuYWPSvfPeeRfGnHPh38VlGWN8mnM+XnvHRbawMbFzaXYuaws7t7AxsfM8jv0BoIz4A0AZ8d+W07UH/IUtbEzsXJqdy9rCzi1sTOw8k8/8AaCM//wBoIz4A0AZ8QeAMuIPAGXEHwDK/ALvJn5H9yuwHgAAAABJRU5ErkJggg==\n", "text/plain": [ "<Figure size 720x720 with 1 Axes>" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Actual eng sentence : tom did not seem to be very interested in school \n" ] } ], "source": [ "translate(u'tom non sembrava essere molto interessato alla scuola ')\n", "print('Actual eng sentence : tom did not seem to be very interested in school ')" ] }, { "cell_type": "markdown", "metadata": { "id": "oJeaCCLenpWL" }, "source": [ "###### SCORE" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1kTq59ujnod5", "outputId": "a565cf13-fff5-41ce-8614-a92ab9f984a3" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/nltk/translate/bleu_score.py:490: UserWarning: \n", "Corpus/Sentence contains 0 counts of 2-gram overlaps.\n", "BLEU scores might be undesirable; use SmoothingFunction().\n", " warnings.warn(_msg)\n", "/usr/local/lib/python3.6/dist-packages/nltk/translate/bleu_score.py:490: UserWarning: \n", "Corpus/Sentence contains 0 counts of 4-gram overlaps.\n", "BLEU scores might be undesirable; use SmoothingFunction().\n", " warnings.warn(_msg)\n", "/usr/local/lib/python3.6/dist-packages/nltk/translate/bleu_score.py:490: UserWarning: \n", "Corpus/Sentence contains 0 counts of 3-gram overlaps.\n", "BLEU scores might be undesirable; use SmoothingFunction().\n", " warnings.warn(_msg)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "avg. bleu score : 0.8502854061401058\n" ] } ], "source": [ "bleu_score(input_tensor_val,decoder_output_target_tensor_val)" ] }, { "cell_type": "markdown", "metadata": { "id": "Fl1peAwdh9uX" }, "source": [ "# CONCAT" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "id": "A8FLRcGJPSV7" }, "outputs": [], "source": [ "vocab_inp_size = len(inp_lang_tokenizer.word_index)+1\n", "vocab_tar_size = len(targ_lang_tokenizer.word_index)+1\n", "embedding_size=378\n", "lstm_units=470\n", "input_length=input_tensor.shape[1]\n", "output_length=decoder_input_target_tensor_train.shape[1]\n", "batch_size=48\n", "\n", "steps_per_epoch = ((len(input_tensor_train)+1)//batch_size)+1\n", "scoring_fun='concat'\n", "\n", "encoder=Encoder(vocab_inp_size,embedding_size,lstm_units,input_length)\n", "initial_state=encoder.initialize_states(batch_size)\n", "\n", "model = encoder_decoder(vocab_inp_size,embedding_size,lstm_units,input_length,batch_size,vocab_tar_size,output_length,scoring_fun)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "id": "_UNiZux2Oxmx" }, "outputs": [], "source": [ "optimizer = tf.keras.optimizers.Adam()\n", "model.compile(optimizer=optimizer,loss=loss_function)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "id": "9MWdH1kGE8zk" }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 49, "metadata": { "id": "sYsbzMTfpphn" }, "outputs": [], "source": [ "model.fit([input_tensor_train,decoder_input_target_tensor_train], decoder_output_target_tensor_train,epochs=6,batch_size=48,validation_data=([input_tensor_val,decoder_input_target_tensor_val], decoder_output_target_tensor_val))" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "id": "5-stihW-py06" }, "outputs": [], "source": [ "model.load_weights('/content/drive/My Drive/model_concat_1/con_pos2.hdf5')" ] }, { "cell_type": "markdown", "metadata": { "id": "lkrQp-t-oWnx" }, "source": [ "##### Model Load" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "wMfES1dmKyiT" }, "outputs": [], "source": [ "model.load_weights(\"/content/drive/My Drive/model_concat_1/con_pos2.hdf5\")" ] }, { "cell_type": "markdown", "metadata": { "id": "eN48oyP4pBf9" }, "source": [ "##### TRANSLATION" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 684 }, "id": "P1udJQKv8SjW", "outputId": "9f5d826c-0faf-4fec-d482-d555cadf4d9d" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input: <sos> amo la mela . <eos>\n", "Predicted translation: i love apple . <eos> \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x720 with 1 Axes>" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Actual eng sentence : i love apple\n" ] } ], "source": [ "translate(u'amo la mela .')\n", "print('Actual eng sentence : i love apple')" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 711 }, "id": "2OGwntnoNMAF", "outputId": "71b96121-02fa-4ae8-a4d5-7c8c94eeae39" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input: <sos> non posso rispondere alla tua domanda . <eos>\n", "Predicted translation: i can not answer your question . <eos> \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x720 with 1 Axes>" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Actual eng sentence : i can not answer your question \n" ] } ], "source": [ "translate('non posso rispondere alla tua domanda .') \n", "print('Actual eng sentence : i can not answer your question ')" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 715 }, "id": "scT5gX638SEQ", "outputId": "2527da42-0757-4ad1-f1b2-e95e192212a8" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input: <sos> tom non sembrava essere molto interessato alla scuola . <eos>\n", "Predicted translation: tom did not seem to be very interested in school . <eos> \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x720 with 1 Axes>" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Actual eng sentence : tom did not seem to be very interested in school .\n" ] } ], "source": [ "translate(u'tom non sembrava essere molto interessato alla scuola .')\n", "print('Actual eng sentence : tom did not seem to be very interested in school .')" ] }, { "cell_type": "markdown", "metadata": { "id": "pzkoQfT2i40w" }, "source": [ "###### SCORE" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "lEvd7xEi8R0i", "outputId": "c4a96712-5819-4173-e4df-0636f53d5788" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/nltk/translate/bleu_score.py:490: UserWarning: \n", "Corpus/Sentence contains 0 counts of 4-gram overlaps.\n", "BLEU scores might be undesirable; use SmoothingFunction().\n", " warnings.warn(_msg)\n", "/usr/local/lib/python3.6/dist-packages/nltk/translate/bleu_score.py:490: UserWarning: \n", "Corpus/Sentence contains 0 counts of 3-gram overlaps.\n", "BLEU scores might be undesirable; use SmoothingFunction().\n", " warnings.warn(_msg)\n", "/usr/local/lib/python3.6/dist-packages/nltk/translate/bleu_score.py:490: UserWarning: \n", "Corpus/Sentence contains 0 counts of 2-gram overlaps.\n", "BLEU scores might be undesirable; use SmoothingFunction().\n", " warnings.warn(_msg)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "avg. bleu score : 0.8492603959084802\n" ] } ], "source": [ "bleu_score(input_tensor_val,decoder_output_target_tensor_val)" ] }, { "cell_type": "markdown", "metadata": { "id": "X1RaW5C4wB-J" }, "source": [ "# OBSERVATION\n", "1. Best bleu score which i am getting is 0.85 from model dot.\n", "2. By both the score we are getting same answer only.\n", "3. Now if i have to select best model i will go to concat model because it's score is almost same but it's word dependence is better than dot.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "1gNQJk9R8RuV" }, "outputs": [], "source": [] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "Copy of seq_2_copy_seq.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "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.7.7" } }, "nbformat": 4, "nbformat_minor": 1 }