diff --git a/Assignment-3/T4-Assignment_3.ipynb b/Assignment-3/T4-Assignment_3.ipynb deleted file mode 100644 index f70d238..0000000 --- a/Assignment-3/T4-Assignment_3.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"T4-Assignment_3.ipynb","provenance":[],"collapsed_sections":[],"authorship_tag":"ABX9TyMnRXype5MINyVKXhCw/60A"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","metadata":{"id":"a2sQrgcEaSP1"},"source":["# **Wikipedia Simplifier : Assignment 3**\n","---\n","> **By Team 4** :\n","* Pratham Jain\n","* Rashmi G R\n","* Rishav Bikarwar\n","\n","---\n","> **Mentors** :\n","* Ananya Gupta\n","* Rishabh Dugaye\n","\n","---\n"]},{"cell_type":"markdown","metadata":{"id":"OZOoIxAsaop9"},"source":["## **AND Boolean Function** using **Neural Network**"]},{"cell_type":"code","metadata":{"id":"Bae5hft7ah1h","executionInfo":{"status":"ok","timestamp":1619786071534,"user_tz":-330,"elapsed":1846,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","\n","%matplotlib inline"],"execution_count":1,"outputs":[]},{"cell_type":"code","metadata":{"id":"LuTptGBbbt7J","executionInfo":{"status":"ok","timestamp":1619786071536,"user_tz":-330,"elapsed":1835,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["def initialize_parameters(layer_dims):\n"," \"\"\"Initialize the parameters\"\"\"\n","\n"," parameters = {}\n"," L = len(layer_dims)\n"," for l in range(1, L):\n"," parameters['W'+str(l)] = np.random.randn(layer_dims[l], layer_dims[l-1]) * 0.05\n"," parameters['b'+str(l)] = np.random.randn(layer_dims[l], 1) * 0.05\n"," \n"," return parameters"],"execution_count":2,"outputs":[]},{"cell_type":"code","metadata":{"id":"TasGelWliuNN","executionInfo":{"status":"ok","timestamp":1619786071538,"user_tz":-330,"elapsed":1827,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["def relu(Z):\n"," \"\"\"ReLu activation function\"\"\"\n"," return np.maximum(Z, 0)\n","\n","def sigmoid(Z):\n"," \"\"\"Sigmoid activation function\"\"\"\n"," return 1/(1 + np.exp(-Z))"],"execution_count":3,"outputs":[]},{"cell_type":"code","metadata":{"id":"jhmOAua2b5tJ","executionInfo":{"status":"ok","timestamp":1619786071540,"user_tz":-330,"elapsed":1819,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["def forward_prop(X, parameters):\n"," \"\"\"Implement forward propagation for the [LINEAR->RELU]*(L-1)->LINEAR->SIGMOID computation\"\"\"\n","\n"," caches = {}\n"," caches['A0'] = X\n"," A = X\n"," L = len(parameters) // 2\n","\n"," for l in range(1, L):\n"," Z = np.dot(parameters['W'+str(l)], caches['A'+str(l-1)]) + parameters['b'+str(l)]\n"," A = relu(Z)\n"," caches['Z'+str(l)] = Z\n"," caches['A'+str(l)] = A\n"," \n"," caches['Z'+str(L)] = np.dot(parameters['W'+str(L)], caches['A'+str(L-1)]) + parameters['b'+str(L)]\n"," caches['A'+str(L)] = sigmoid(caches['Z'+str(L)])\n","\n"," return caches['A'+str(L)], caches"],"execution_count":4,"outputs":[]},{"cell_type":"code","metadata":{"id":"N_ycYRSnb50d","executionInfo":{"status":"ok","timestamp":1619786071542,"user_tz":-330,"elapsed":1810,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["def compute_cost(AL, Y):\n"," \"\"\"Implement the cost function\"\"\"\n"," \n"," m = Y.shape[1]\n"," cost = (-1/m) * np.sum(Y*np.log(AL) + (1-Y)*np.log(1-AL))\n"," \n"," return np.squeeze(cost)"],"execution_count":5,"outputs":[]},{"cell_type":"code","metadata":{"id":"sT1O3GDlb537","executionInfo":{"status":"ok","timestamp":1619786072118,"user_tz":-330,"elapsed":2376,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["def backward_prop(AL, Y, caches, parameters):\n"," \"\"\"Implement the backward propagation for the [LINEAR->RELU] * (L-1) -> LINEAR -> SIGMOID group\"\"\"\n","\n"," grads = {}\n"," L = len(parameters) // 2\n"," m = Y.shape[1]\n"," Y = Y.reshape(AL.shape)\n","\n"," dAL = - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL))\n","\n"," # Lth layer: (SIGMOID -> LINEAR) gradients.\n"," dZ = dAL * AL * (1 - AL)\n"," grads[\"dA\" + str(L-1)] = np.dot(parameters['W'+str(L)].T, dZ)\n"," grads[\"dW\" + str(L)] = (1/m) * np.dot(dZ, caches['A'+str(L-1)].T)\n"," grads[\"db\" + str(L)] = (1/m) * np.sum(dZ, axis=1, keepdims=True)\n","\n"," for l in reversed(range(L-1)):\n"," # lth layer: (RELU -> LINEAR) gradients.\n"," dZ = grads[\"dA\" + str(l+1)] * (caches['Z' + str(l+1)] >= 0)\n"," grads[\"dA\" + str(l)] = np.dot(parameters['W'+str(l+1)].T, dZ)\n"," grads[\"dW\" + str(l+1)] = (1/m) * np.dot(dZ, caches['A'+str(l)].T)\n"," grads[\"db\" + str(l+1)] = (1/m) * np.sum(dZ, axis=1, keepdims=True)\n","\n"," return grads"],"execution_count":6,"outputs":[]},{"cell_type":"code","metadata":{"id":"kTT0dbNAb58t","executionInfo":{"status":"ok","timestamp":1619786072121,"user_tz":-330,"elapsed":2371,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["def update_parameters(params, grads, learning_rate):\n"," \"\"\"Update parameters using gradient descent\"\"\"\n","\n"," parameters = params.copy()\n"," L = len(parameters) // 2\n","\n"," for l in range(1, L):\n"," parameters['W' + str(l)] = parameters['W' + str(l)] - learning_rate * grads['dW' + str(l)]\n"," parameters['b' + str(l)] = parameters['b' + str(l)] - learning_rate * grads['db' + str(l)]\n","\n"," return parameters"],"execution_count":7,"outputs":[]},{"cell_type":"code","metadata":{"id":"Ab0tKoGD6ZTm","executionInfo":{"status":"ok","timestamp":1619786072123,"user_tz":-330,"elapsed":2367,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["def predict(X, parameters):\n"," AL, temp = forward_prop(X, parameters)\n"," Y_pred = (AL > 0.5) * 1\n"," return Y_pred"],"execution_count":8,"outputs":[]},{"cell_type":"code","metadata":{"id":"wrTPWORbb6AM","executionInfo":{"status":"ok","timestamp":1619786072124,"user_tz":-330,"elapsed":2363,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["def L_layer_model(X, Y, layers_dims, learning_rate = 0.0075, num_iterations = 3000, print_cost=False):\n"," \"\"\"Implements a L-layer neural network: [LINEAR->RELU]*(L-1)->LINEAR->SIGMOID\"\"\"\n","\n"," costs = []\n"," parameters = initialize_parameters(layers_dims)\n","\n"," for i in range(0, num_iterations):\n","\n"," AL, caches = forward_prop(X, parameters)\n"," cost = compute_cost(AL, Y)\n"," grads = backward_prop(AL, Y, caches, parameters)\n"," parameters = update_parameters(parameters, grads, learning_rate)\n"," \n"," # Print the cost every 100 training example\n"," if print_cost and i % 100 == 0 or i == num_iterations - 1:\n"," print(\"Cost after iteration {}: {}\".format(i, np.squeeze(cost)))\n"," if i % 100 == 0 or i == num_iterations:\n"," costs.append(cost)\n"," \n"," model = {}\n"," model['parameters'] = parameters\n"," model['AL'] = AL\n"," model['costs'] = costs\n","\n"," return model"],"execution_count":9,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":317},"id":"gf5iccSnwp3I","executionInfo":{"status":"ok","timestamp":1619786099376,"user_tz":-330,"elapsed":12070,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"ee30c352-87ae-493c-8fbb-5fd57292eb33"},"source":["X = np.array([[0., 1., 0., 1.],\n"," [0., 0., 1., 1.]])\n","Y = np.array ([[0., 0., 0., 1.]]).reshape(1, 4)\n","\n","layers_dims = [2, 10, 10, 5, 1]\n","\n","model = L_layer_model(X, Y, layers_dims, learning_rate = 0.1, num_iterations = 50000, print_cost = False)\n","Y_pred = predict(X, model['parameters'])\n","print('Predicted Values : ' + str(Y_pred))\n","plt.plot(range(100, 50001, 100), model['costs'])\n","plt.axis([0, 50000, 0, 1])\n","plt.xlabel(\"Number of Iterations\")\n","plt.ylabel(\"Cost\")\n","plt.show()"],"execution_count":11,"outputs":[{"output_type":"stream","text":["Cost after iteration 49999: 0.00011549346084915619\n","Predicted Values : [[0 0 0 1]]\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"agTDXz6-ajrX","executionInfo":{"status":"ok","timestamp":1619786082364,"user_tz":-330,"elapsed":12592,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":[""],"execution_count":10,"outputs":[]}]} \ No newline at end of file diff --git a/Assignment-3/WEEK-2 Submission by TEAM 3 b/Assignment-3/WEEK-2 Submission by TEAM 3 deleted file mode 100644 index 7aa4bc8..0000000 --- a/Assignment-3/WEEK-2 Submission by TEAM 3 +++ /dev/null @@ -1,190 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "WEEK 2 Submission by TEAM3.ipynb", - "provenance": [], - "authorship_tag": "ABX9TyOZSbwxERcyR9Q2gvXuzmnV", - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Bs6KQXq9vPi-" - }, - "source": [ - "# ***WEEK 2 ASSIGNMENT SUBMISSION***\n", - "\n", - "***TEAM 3***\n", - "\n", - "\n", - "> *- Shreyasi Mandal*\n", - "\n", - "> *- Anushka Panda*\n", - "\n", - "> *- Lakshmi Pravallika*\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "T08WYF97tZse" - }, - "source": [ - "# ***AND GATE USING NEURAL NETWORK***\n", - "\n", - "*We are going to develop an AND gate using an artificial neural network*\n", - "\n", - "***Some Terms***\n", - "\n", - "\n", - "* *Forward Propagation is used to compute the activations from the input, then hidden then the output layer* \n", - "* *What a Neural Network does is the same as logistic regression*\n", - "* *In Back-Propagation we start by computing the delta term for the output layer and then back-propagate to compute the delta terms of the hidden layers*\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "HKvDYWzggpE1", - "outputId": "f5a676fa-70fc-49e0-80a3-0708534cf0ec" - }, - "source": [ - "# import Python Libraries\n", - "import numpy as np\n", - "from matplotlib import pyplot as plt\n", - "\n", - "# Sigmoid Function to find out hypothesis\n", - "def sigmoid(z):\n", - "\treturn 1 / (1 + np.exp(-z))\n", - "\n", - "# Initialization of the neural network parameters\n", - "# Initialized all the weights in the range of between 0 and 1\n", - "# Bias values are initialized to 0\n", - "def initializeParameters(inputFeatures, neuronsInHiddenLayers, outputFeatures):\n", - "\tW1 = np.random.randn(neuronsInHiddenLayers, inputFeatures)\n", - "\tW2 = np.random.randn(outputFeatures, neuronsInHiddenLayers)\n", - "\tb1 = np.zeros((neuronsInHiddenLayers, 1))\n", - "\tb2 = np.zeros((outputFeatures, 1))\n", - "\t\n", - "\tparameters = {\"W1\" : W1, \"b1\": b1,\n", - "\t\t\t\t\"W2\" : W2, \"b2\": b2}\n", - "\t\n", - " return parameters\n", - "\n", - "# Forward Propagation in Neural Networks\n", - "def forwardPropagation(X, Y, parameters):\n", - "\tm = X.shape[1]\n", - "\tW1 = parameters[\"W1\"]\n", - "\tW2 = parameters[\"W2\"]\n", - "\tb1 = parameters[\"b1\"]\n", - "\tb2 = parameters[\"b2\"]\n", - "\n", - "\tZ1 = np.dot(W1, X) + b1 # Performing multiplication in matrices\n", - "\tA1 = sigmoid(Z1) # Calling the sigmoid function\n", - "\tZ2 = np.dot(W2, A1) + b2\n", - "\tA2 = sigmoid(Z2)\n", - "\n", - "\tcache = (Z1, A1, W1, b1, Z2, A2, W2, b2)\n", - "\tlogprobs = np.multiply(np.log(A2), Y) + np.multiply(np.log(1 - A2), (1 - Y))\n", - "\tcost = -np.sum(logprobs) / m\n", - "\treturn cost, cache, A2\n", - "\n", - "# Backward Propagation to compute partial derivatives (aka gradients)\n", - "def backwardPropagation(X, Y, cache):\n", - "\tm = X.shape[1]\n", - "\t(Z1, A1, W1, b1, Z2, A2, W2, b2) = cache\n", - "\t\n", - "\tdZ2 = A2 - Y\n", - "\tdW2 = np.dot(dZ2, A1.T) / m\n", - "\tdb2 = np.sum(dZ2, axis = 1, keepdims = True)\n", - "\t\n", - "\tdA1 = np.dot(W2.T, dZ2)\n", - "\tdZ1 = np.multiply(dA1, A1 * (1- A1))\n", - "\tdW1 = np.dot(dZ1, X.T) / m\n", - "\tdb1 = np.sum(dZ1, axis = 1, keepdims = True) / m\n", - "\t\n", - "\tgradients = {\"dZ2\": dZ2, \"dW2\": dW2, \"db2\": db2,\n", - "\t\t\t\t\"dZ1\": dZ1, \"dW1\": dW1, \"db1\": db1}\n", - "\treturn gradients\n", - "\n", - "# Updating the weights based on the negative gradients\n", - "def updateParameters(parameters, gradients, learningRate):\n", - "\tparameters[\"W1\"] = parameters[\"W1\"] - learningRate * gradients[\"dW1\"]\n", - "\tparameters[\"W2\"] = parameters[\"W2\"] - learningRate * gradients[\"dW2\"]\n", - "\tparameters[\"b1\"] = parameters[\"b1\"] - learningRate * gradients[\"db1\"]\n", - "\tparameters[\"b2\"] = parameters[\"b2\"] - learningRate * gradients[\"db2\"]\n", - "\treturn parameters\n", - "\n", - "# Model to learn the AND truth table\n", - "X = np.array([[0, 0, 1, 1], [0, 1, 0, 1]]) # AND input\n", - "Y = np.array([[0, 0, 0, 1]]) # AND output\n", - "\n", - "# Define model parameters\n", - "neuronsInHiddenLayers = 2 # number of hidden layer neurons (2)\n", - "inputFeatures = X.shape[0] # number of input features (2)\n", - "outputFeatures = Y.shape[0] # number of output features (1)\n", - "parameters = initializeParameters(inputFeatures, neuronsInHiddenLayers, outputFeatures)\n", - "epoch = 100000\n", - "learningRate = 0.01\n", - "losses = np.zeros((epoch, 1))\n", - "\n", - "for i in range(epoch):\n", - "\tlosses[i, 0], cache, A2 = forwardPropagation(X, Y, parameters)\n", - "\tgradients = backwardPropagation(X, Y, cache)\n", - "\tparameters = updateParameters(parameters, gradients, learningRate)\n", - "\n", - "# Testing\n", - "X = np.array([[1, 1, 0, 0], [0, 1, 0, 1]]) # AND input\n", - "cost, _, A2 = forwardPropagation(X, Y, parameters)\n", - "prediction = (A2 > 0.5) * 1.0\n", - "# print(A2)\n", - "print(prediction)\n" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "[[0. 1. 0. 0.]]\n" - ], - "name": "stdout" - } - ] - } - ] -} - - diff --git a/Assignment-3/assignment_3_Team_1.ipynb b/Assignment-3/assignment_3_Team_1.ipynb deleted file mode 100644 index 3bc6036..0000000 --- a/Assignment-3/assignment_3_Team_1.ipynb +++ /dev/null @@ -1,250 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "assignment-3_Team-1.ipynb", - "provenance": [], - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "6czqRVjVk9bv" - }, - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ], - "execution_count": 2, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "_3_UMn3tsLpG" - }, - "source": [ - "def sigmoid(Z):\n", - " return 1/(1+np.exp(-Z))\n", - " \n", - " \n", - "def initialize_parameters(n_x, n_h, n_y):\n", - " W1 = np.random.randn(n_h, n_x)*0.01\n", - " b1 = np.zeros((n_h, 1))\n", - " W2 = np.random.randn(n_y, n_h)*0.01\n", - " b2 = np.zeros((n_y, 1))\n", - " \n", - " parameters = {\n", - " 'W1': W1,\n", - " 'b1': b1,\n", - " 'W2': W2,\n", - " 'b2': b2\n", - " }\n", - " return parameters\n", - " \n", - " \n", - "def forward_prop(X, parameters):\n", - " W1 = parameters['W1']\n", - " W2 = parameters['W2']\n", - " b1 = parameters['b1']\n", - " b2 = parameters['b2']\n", - " \n", - " Z1 = np.dot(W1, X) + b1\n", - " A1 = np.tanh(Z1)\n", - " Z2 = np.dot(W2, A1) + b2\n", - " A2 = sigmoid(Z2)\n", - " \n", - " # assert(A2.shape == (1, X.shape[1]))\n", - " \n", - " cache = {\n", - " 'Z1': Z1,\n", - " 'A1': A1,\n", - " 'Z2': Z2,\n", - " 'A2': A2\n", - " }\n", - " return A2, cache\n", - " \n", - " \n", - "def compute_cost(A2, Y):\n", - " m = Y.shape[1]\n", - " \n", - " cost = -np.sum(np.multiply(Y, np.log(A2)) + np.multiply(1-Y, np.log(1-A2))) / m\n", - " cost = float(np.squeeze(cost))\n", - " return cost\n", - " \n", - " \n", - "def back_prop(cache, parameters, X, Y):\n", - " A1 = cache['A1']\n", - " A2 = cache['A2']\n", - " W2 = parameters['W2']\n", - " \n", - " m = X.shape[1]\n", - " \n", - " dZ2 = A2 - Y\n", - " dW2 = np.dot(dZ2, A1.T) / m\n", - " db2 = np.sum(dZ2, axis=1, keepdims = True) / m\n", - " dZ1 = np.multiply(np.dot(W2.T, dZ2), 1-np.power(A1, 2))\n", - " dW1 = np.dot(dZ1, X.T) / m\n", - " db1 = np.sum(dZ1, axis=1, keepdims=True) / m\n", - " \n", - " grads = {\n", - " 'dW1': dW1,\n", - " 'db1': db1,\n", - " 'dW2': dW2,\n", - " 'db2': db2\n", - " }\n", - " return grads\n", - " \n", - " \n", - "def update_parameters(parameters, grads, learning_rate = 1.2):\n", - " W1 = parameters['W1']\n", - " W2 = parameters['W2']\n", - " b1 = parameters['b1']\n", - " b2 = parameters['b2']\n", - " \n", - " dW1 = grads['dW1']\n", - " dW2 = grads['dW2']\n", - " db1 = grads['db1']\n", - " db2 = grads['db2']\n", - " \n", - " W1 = W1 - learning_rate * dW1\n", - " W2 = W2 - learning_rate * dW2\n", - " b1 = b1 - learning_rate * db1\n", - " b2 = b2 - learning_rate * db2\n", - " \n", - " new_parameters = {\n", - " 'W1': W1,\n", - " 'b1': b1,\n", - " 'W2': W2,\n", - " 'b2': b2\n", - " }\n", - " return new_parameters\n", - " \n", - " \n", - "def nn_model(X, Y, num_iterations = 10000, print_cost=True):\n", - " np.random.seed(3)\n", - " \n", - " n_x, n_h, n_y = X.shape[0], 4, Y.shape[0];\n", - " parameters = initialize_parameters(n_x, n_h, n_y)\n", - " \n", - " for i in range(0, num_iterations):\n", - " A2, cache = forward_prop(X, parameters)\n", - " cost = compute_cost(A2, Y)\n", - " grads = back_prop(cache, parameters, X, Y)\n", - " parameters = update_parameters(parameters, grads)\n", - " \n", - " if print_cost and i%1000 == 0:\n", - " print('Cost after iteration %i: %f' %(i, cost))\n", - " \n", - " return parameters\n", - " \n", - " \n", - "def predict(parameters, X):\n", - " A2, cache = forward_prop(X, parameters)\n", - " yhat = A2\n", - " yhat = np.squeeze(yhat)\n", - " prediction = 0\n", - " if yhat > 0.5:\n", - " prediction = 1\n", - " \n", - " return prediction" - ], - "execution_count": 3, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "YSX9hyyH9jC5", - "outputId": "76d5bb01-98b6-462c-9c36-ef1a72127dcb" - }, - "source": [ - "X = np.array([[0, 0, 1, 1], [0, 1, 0, 1]])\n", - "Y = np.array([[0, 1, 1, 0]])\n", - "\n", - "trained_parameters = nn_model(X, Y)\n", - "\n", - "print(\"W1 = \" + str(trained_parameters[\"W1\"]))\n", - "print(\"b1 = \" + str(trained_parameters[\"b1\"]))\n", - "print(\"W2 = \" + str(trained_parameters[\"W2\"]))\n", - "print(\"b2 = \" + str(trained_parameters[\"b2\"]))" - ], - "execution_count": 17, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Cost after iteration 0: 0.693147\n", - "Cost after iteration 1000: 0.693147\n", - "Cost after iteration 2000: 0.693147\n", - "Cost after iteration 3000: 0.693147\n", - "Cost after iteration 4000: 0.693147\n", - "Cost after iteration 5000: 0.693147\n", - "Cost after iteration 6000: 0.693147\n", - "Cost after iteration 7000: 0.693147\n", - "Cost after iteration 8000: 0.693147\n", - "Cost after iteration 9000: 0.693147\n", - "W1 = [[ 0.01800884 0.00472305]\n", - " [-0.00106225 -0.01842699]\n", - " [-0.00302617 -0.00347474]\n", - " [-0.00045634 -0.00661726]]\n", - "b1 = [[ 1.28038051e-04]\n", - " [-5.31468643e-06]\n", - " [-3.99994857e-04]\n", - " [ 1.05941642e-04]]\n", - "W2 = [[ 0.00143819 -0.00386175 -0.0129717 0.00915141]]\n", - "b2 = [[-7.01216554e-05]]\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "AO6m8nXhZKrV", - "outputId": "c392854d-5477-4e87-e98e-a35732140872" - }, - "source": [ - "prediction = predict(trained_parameters, np.array([[0], [1]]))\n", - "print(prediction)" - ], - "execution_count": 19, - "outputs": [ - { - "output_type": "stream", - "text": [ - "0\n" - ], - "name": "stdout" - } - ] - } - ] -} \ No newline at end of file diff --git a/Assignment-3/team2 (2).ipynb b/Assignment-3/team2 (2).ipynb deleted file mode 100644 index 3eafb10..0000000 --- a/Assignment-3/team2 (2).ipynb +++ /dev/null @@ -1,62 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "team2.ipynb", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "code", - "metadata": { - "id": "oKxo5CjSsvPH" - }, - "source": [ - "import numpy as np\n", - " \n", - " \n", - "## MODEL\n", - " \n", - "x=np.array([[1,1], [1,0], [0,1], [0,0]])\n", - "y=np.array([1,0,0,0])\n", - "y=y.reshape(4,1)\n", - "c=0\n", - " \n", - "##TRAIN\n", - "for i in range(1000):\n", - " out= x[:, 0]+ x[:,1]+c\n", - " a=1/(1+np.exp(-out))\n", - " c=c- ((abs(a-y)>0.51)*(a-y)).sum()/10\n", - " \n", - "## OUT\n", - "a1,a2=input(\"Enter Nums :)\\n\").split()\n", - "a1=int(a1)\n", - "a2=int(a2)\n", - "print(np.exp(-(a1+a2+c))<1)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "lUo_P4102kqn" - }, - "source": [ - "" - ], - "execution_count": null, - "outputs": [] - } - ] -} \ No newline at end of file diff --git a/Assignment_1_and_2/Assignment_1_and_2_(WEEK_1)_.ipynb b/Assignment_1_and_2/Assignment_1_and_2_(WEEK_1)_.ipynb deleted file mode 100644 index 078acca..0000000 --- a/Assignment_1_and_2/Assignment_1_and_2_(WEEK_1)_.ipynb +++ /dev/null @@ -1,1022 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Assignment 1 and 2 (WEEK 1) .ipynb", - "provenance": [], - "collapsed_sections": [], - "authorship_tag": "ABX9TyPhYxkQafJllXmUsYClu1Xi", - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "IINU0vEZBnUB" - }, - "source": [ - "" - ], - "execution_count": 4, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "pHYkrb4MB1mY" - }, - "source": [ - "# ***WEEK 1 SUBMISSION***\n", - "\n", - "***Team 3***\n", - "\n", - "*Team Members*\n", - "\n", - "* *Shreyasi Mandal*\n", - "* *Anushka Panda*\n", - "* *Lakshmi Pravallika*\n", - "\n", - "\n", - "*Assignment 1* *(HW1 to be completed)*\n", - "\n", - "```\n", - "https://www.cis.upenn.edu/~cis192/tliu/\n", - "```\n", - "*Assignment 2* *(Problem Set 2 to be completed)*\n", - "\n", - "\n", - "\n", - "```\n", - "https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/assignments/\n", - "```\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "9Y51Z1eJDtoo" - }, - "source": [ - "***ASSIGNMENT 1***\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "JoLsyoOFD0qf", - "outputId": "e374ee3d-8c31-45c5-a91d-ddc0270ec90e" - }, - "source": [ - "def add_word(trie, word):\n", - "\n", - " # Add a word to the given trie.\n", - "\n", - " # Args:\n", - " # trie (dict): the dictionary representation of a trie\n", - " # word (str): the word to be added\n", - "\n", - " # Returns:\n", - " # None\n", - "\n", - " # Side effect:\n", - " # trie is modified with word included\n", - " for c in word:\n", - " if c in trie:\n", - " trie = trie[c]\n", - " else:\n", - " trie = trie.setdefault(c, {})\n", - "\n", - "def create_trie(word_list):\n", - "\n", - " # Creates a trie from the given word list.\n", - "\n", - " # Args:\n", - " # word_list (list): list of words (str)\n", - "\n", - " #Returns:\n", - " # dict: a dictionary representation of the trie\n", - " trie = dict()\n", - " for word in word_list:\n", - " add_word(trie, word)\n", - " return trie\n", - "\n", - "def in_trie(trie , word):\n", - "\n", - " # Check whether the given word is present within the trie.\n", - "\n", - " # Args:\n", - " # word (str): the word to check\n", - " # trie (dict): the trie to check against\n", - "\n", - " # Returns:\n", - " # bool: True if the word is in the trie, False if it is not\n", - "\n", - "\n", - " for c in word:\n", - " if c in trie:\n", - " trie = trie[c]\n", - " else:\n", - " return False\n", - " return True\n", - "\n", - "words_list = list() \n", - "\n", - "def return_trie(trie, word):\n", - " for c in word:\n", - " if c in trie:\n", - " trie = trie[c]\n", - " return trie\n", - " \n", - " \n", - "def list_matches(trie, prefix):\n", - "\n", - " # List all word with the given prefix in the trie.\n", - " # If no words in the trie match the given prefix, return an empty list.\n", - "\n", - " \n", - " # Args:\n", - " # prefix (str): the prefix to match against\n", - " # trie (dict): the trie to search over\n", - "\n", - " # Returns:\n", - " # list: all words in the trie that begin with prefix \n", - "\n", - "\n", - " if trie == {}:\n", - " words_list.append(prefix)\n", - " return \n", - " for c in trie:\n", - " list_matches(trie[c], prefix+c)\n", - "\n", - "\n", - "def main():\n", - "\n", - " word_list = ['Anushka', 'Panda', 'Pavilion', 'Pavement']\n", - " trie1 = create_trie(word_list)\n", - " print(trie1)\n", - " print(in_trie(trie1, 'Panda'))\n", - " print(in_trie(trie1, 'Payment'))\n", - " trie2 = return_trie(trie1, 'Pav')\n", - " list_matches(trie2, 'Pav')\n", - " print(words_list)\n", - "\n", - " word_list1 = ['Shreyasi', 'Mandal', 'Shrban', 'Silence']\n", - " my_trie = create_trie(word_list1)\n", - " print(my_trie)\n", - " print(in_trie(my_trie, 'Shreyasi'))\n", - " print(in_trie(my_trie, 'Shrei'))\n", - " print(list_matches(my_trie, 'Shr'))\n", - "\n", - " \n", - "if __name__ == '__main__':\n", - " main()" - ], - "execution_count": 10, - "outputs": [ - { - "output_type": "stream", - "text": [ - "{'A': {'n': {'u': {'s': {'h': {'k': {'a': {}}}}}}}, 'P': {'a': {'n': {'d': {'a': {}}}, 'v': {'i': {'l': {'i': {'o': {'n': {}}}}}, 'e': {'m': {'e': {'n': {'t': {}}}}}}}}}\n", - "True\n", - "False\n", - "['Pavilion', 'Pavement']\n", - "{'S': {'h': {'r': {'e': {'y': {'a': {'s': {'i': {}}}}}, 'b': {'a': {'n': {}}}}}, 'i': {'l': {'e': {'n': {'c': {'e': {}}}}}}}, 'M': {'a': {'n': {'d': {'a': {'l': {}}}}}}}\n", - "True\n", - "False\n", - "None\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "aLxgeomXEk15" - }, - "source": [ - "***ASSIGNMENT 2***\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "7_kkXQzdIxOn", - "outputId": "2d88da4c-d776-457a-80f0-15bd034e4bca" - }, - "source": [ - "!wget https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/assignments/ps2.zip\n", - "!unzip p*" - ], - "execution_count": 7, - "outputs": [ - { - "output_type": "stream", - "text": [ - "--2021-04-19 17:17:40-- https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/assignments/ps2.zip\n", - "Resolving ocw.mit.edu (ocw.mit.edu)... 151.101.2.133, 151.101.66.133, 151.101.130.133, ...\n", - "Connecting to ocw.mit.edu (ocw.mit.edu)|151.101.2.133|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 458195 (447K) [application/zip]\n", - "Saving to: ‘ps2.zip’\n", - "\n", - "\rps2.zip 0%[ ] 0 --.-KB/s \rps2.zip 100%[===================>] 447.46K --.-KB/s in 0.007s \n", - "\n", - "2021-04-19 17:17:40 (63.1 MB/s) - ‘ps2.zip’ saved [458195/458195]\n", - "\n", - "Archive: ps2.zip\n", - " inflating: ps2/hangman.py \n", - " inflating: ps2/MIT6_0001F16_Pset2.pdf \n", - " inflating: ps2/words.txt \n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "mjUQtdsUEoUa", - "outputId": "595b4bfd-1b37-4863-ab68-9d5086ebb40a" - }, - "source": [ - "# Problem Set 2, hangman.py\n", - "# Team: 3 \n", - "# Members : Shreyasi Mandal, Anushka Panda, Lakshmi Pravallika\n", - "\n", - "\n", - "# Hangman Game\n", - "# -----------------------------------\n", - "\n", - "import random\n", - "import string\n", - "\n", - "WORDLIST_FILENAME = \"ps2/words.txt\"\n", - "\n", - "\n", - "def load_words():\n", - " \"\"\"\n", - " Returns a list of valid words. Words are strings of lowercase letters.\n", - " \n", - " Depending on the size of the word list, this function may\n", - " take a while to finish.\n", - " \"\"\"\n", - " print(\"Loading word list from file...\")\n", - " # inFile: file\n", - " inFile = open(WORDLIST_FILENAME, 'r')\n", - " # line: string\n", - " line = inFile.readline()\n", - " # wordlist: list of strings\n", - " wordlist = line.split()\n", - " print(\" \", len(wordlist), \"words loaded.\")\n", - " return wordlist\n", - "\n", - "\n", - "\n", - "def choose_word(wordlist):\n", - " \"\"\"\n", - " wordlist (list): list of words (strings)\n", - " \n", - " Returns a word from wordlist at random\n", - " \"\"\"\n", - " return random.choice(wordlist)\n", - "\n", - "# end of helper code\n", - "\n", - "# -----------------------------------\n", - "\n", - "# Load the list of words into the variable wordlist\n", - "# so that it can be accessed from anywhere in the program\n", - "wordlist = load_words()\n", - "\n", - "\n", - "def is_word_guessed(secret_word, letters_guessed):\n", - " '''\n", - " secret_word: string, the word the user is guessing; assumes all letters are\n", - " lowercase\n", - " letters_guessed: list (of letters), which letters have been guessed so far;\n", - " assumes that all letters are lowercase\n", - " returns: boolean, True if all the letters of secret_word are in letters_guessed;\n", - " False otherwise\n", - " '''\n", - " for i in range(len(secret_word)):\n", - " if secret_word[i] not in letters_guessed:\n", - " return False\n", - " return True\n", - "\n", - "\n", - "def get_index_positions(list_of_elems, element):\n", - " ''' Returns the indexes of all occurrences of give element in\n", - " the list- listOfElements '''\n", - " index_pos_list = []\n", - " index_pos = 0\n", - " while True:\n", - " try:\n", - " # Search for item in list from indexPos to the end of list\n", - " index_pos = list_of_elems.index(element, index_pos)\n", - " # Add the index position in list\n", - " index_pos_list.append(index_pos)\n", - " index_pos += 1\n", - " except ValueError as e:\n", - " break\n", - " return index_pos_list\n", - "\n", - "\n", - "def get_guessed_word(secret_word, letters_guessed):\n", - " '''\n", - " secret_word: string, the word the user is guessing\n", - " letters_guessed: list (of letters), which letters have been guessed so far\n", - " returns: string, comprised of letters, underscores (_), and spaces that represents\n", - " which letters in secret_word have been guessed so far.\n", - " '''\n", - " result=list()\n", - " for i in range(len(secret_word)):\n", - " result.append(\"_ \")\n", - " for c in letters_guessed:\n", - " if c in secret_word:\n", - " i=get_index_positions(secret_word, c)\n", - " for j in range(len(i)):\n", - " result[i[j]]=c\n", - " result1=\"\"\n", - " for ele in result:\n", - " result1+=ele\n", - "\n", - " return result1\n", - "\n", - "\n", - "def get_available_letters(letters_guessed):\n", - " '''\n", - " letters_guessed: list (of letters), which letters have been guessed so far\n", - " returns: string (of letters), comprised of letters that represents which letters have not\n", - " yet been guessed.\n", - " '''\n", - " result=string.ascii_lowercase\n", - " for c in letters_guessed:\n", - " result=result.replace(c,'')\n", - "\n", - " return result\n", - " \n", - " \n", - "\n", - "def hangman(secret_word):\n", - " '''\n", - " secret_word: string, the secret word to guess.\n", - " \n", - " Starts up an interactive game of Hangman.\n", - " \n", - " * At the start of the game, let the user know how many \n", - " letters the secret_word contains and how many guesses s/he starts with.\n", - " \n", - " * The user should start with 6 guesses\n", - "\n", - " * Before each round, you should display to the user how many guesses\n", - " s/he has left and the letters that the user has not yet guessed.\n", - " \n", - " * Ask the user to supply one guess per round. Remember to make\n", - " sure that the user puts in a letter!\n", - " \n", - " * The user should receive feedback immediately after each guess \n", - " about whether their guess appears in the computer's word.\n", - "\n", - " * After each guess, you should display to the user the \n", - " partially guessed word so far.\n", - " \n", - " Follows the other limitations detailed in the problem write-up.\n", - " '''\n", - " print(\"Welcome to the game Hangman!\")\n", - " print(\"I am thinking of a word that is \",len(secret_word),\" letters long.\")\n", - " warnings_left=3\n", - " print(\"You have 3 warnings left.\")\n", - " letter=list()\n", - "\n", - " unique=len(set(secret_word))\n", - " guesses_left=6\n", - " while guesses_left>0:\n", - " print(\"-----------------\")\n", - " print(\"You have \",(guesses_left),\" guesses left\")\n", - " print(\"Available letters: \"+ get_available_letters(letter))\n", - " print(\"Please guess a letter: \")\n", - " st=input()\n", - " \n", - "\n", - " if st in letter:\n", - " if warnings_left>0:\n", - " print(\"Oops! You've already guessed that letter. You have \",(warnings_left-1),\" warnings left: \"+get_guessed_word(secret_word, letter))\n", - " warnings_left-=1\n", - " else:\n", - " print(\"Oops! You've already guessed that letter. You have no warnings left so you lose one guess: \"+get_guessed_word(secret_word, letter))\n", - " guesses_left-=1\n", - " else: \n", - " if str.isalpha(st):\n", - " a=str.lower(st)\n", - " letter.append(a)\n", - " if a in secret_word:\n", - " print(\"Good guess: \"+get_guessed_word(secret_word, letter))\n", - " \n", - " else:\n", - " print(\"Oops! That letter is not in my word: \"+get_guessed_word(secret_word, letter))\n", - " if (a=='a')|(a=='e')|(a=='i')|(a=='o')|(a=='u'):\n", - " guesses_left-=2\n", - " else:\n", - " guesses_left-=1\n", - " \n", - " else:\n", - " if warnings_left>0:\n", - " print(\"Oops! That is not a valid letter. You have \",(warnings_left-1),\" warnings left: \"+get_guessed_word(secret_word, letter))\n", - " warnings_left-=1\n", - " else:\n", - " print(\"Oops! That is not a valid letter. You have no warnings left so you lose one guess: \"+get_guessed_word(secret_word, letter))\n", - " guesses_left-=1\n", - "\n", - " \n", - " if is_word_guessed(secret_word, letter):\n", - " print(\"-----------------\")\n", - " print(\"Congratulations, you won!\")\n", - " print(\"Your total score for this game is: \",((guesses_left)*unique))\n", - " break;\n", - "\n", - " if (guesses_left)==0:\n", - " print(\"-----------------\")\n", - " print(\"Sorry, you ran out of guesses. The word was \"+secret_word)\n", - "\n", - " \n", - "\n", - "# When you've completed your hangman function, scroll down to the bottom\n", - "# of the file and uncomment the first two lines to test\n", - "#(hint: you might want to pick your own\n", - "# secret_word while you're doing your own testing)\n", - "\n", - "\n", - "# -----------------------------------\n", - "\n", - "\n", - "\n", - "def match_with_gaps(my_word, other_word):\n", - " '''\n", - " my_word: string with _ characters, current guess of secret word\n", - " other_word: string, regular English word\n", - " returns: boolean, True if all the actual letters of my_word match the \n", - " corresponding letters of other_word, or the letter is the special symbol\n", - " _ , and my_word and other_word are of the same length;\n", - " False otherwise: \n", - " '''\n", - " s=my_word\n", - " for x in range(len(my_word)):\n", - " if my_word[x]==' ':\n", - " s=s.replace(' ','')\n", - " \n", - " if len(s)!=len(other_word):\n", - " return False\n", - " else:\n", - " for c in s:\n", - " if c!='_':\n", - " i=get_index_positions(s,c)\n", - " j=get_index_positions(other_word,c)\n", - " if len(i)!=len(j): \n", - " return False\n", - " else:\n", - " for a in range(len(i)):\n", - " if i[a]!=j[a]:\n", - " return False\n", - " \n", - " return True\n", - " \n", - " \n", - "\n", - "\n", - "\n", - "def show_possible_matches(my_word):\n", - " '''\n", - " my_word: string with _ characters, current guess of secret word\n", - " returns: nothing, but should print out every word in wordlist that matches my_word\n", - " Keep in mind that in hangman when a letter is guessed, all the positions\n", - " at which that letter occurs in the secret word are revealed.\n", - " Therefore, the hidden letter(_ ) cannot be one of the letters in the word\n", - " that has already been revealed.\n", - "\n", - " '''\n", - " result=\"\"\n", - " for i in range(len(wordlist)):\n", - " if match_with_gaps(my_word, wordlist[i]):\n", - " result+=(wordlist[i]+\" \")\n", - " \n", - " if len(result)==0:\n", - " print(\"No Matches Found\")\n", - " else:\n", - " print(\"Possible word matches are: \")\n", - " print(result)\n", - " \n", - "\n", - "\n", - "\n", - "def hangman_with_hints(secret_word):\n", - " '''\n", - " secret_word: string, the secret word to guess.\n", - " \n", - " Starts up an interactive game of Hangman.\n", - " \n", - " * At the start of the game, let the user know how many \n", - " letters the secret_word contains and how many guesses s/he starts with.\n", - " \n", - " * The user should start with 6 guesses\n", - " \n", - " * Before each round, you should display to the user how many guesses\n", - " s/he has left and the letters that the user has not yet guessed.\n", - " \n", - " * Ask the user to supply one guess per round. Make sure to check that the user guesses a letter\n", - " \n", - " * The user should receive feedback immediately after each guess \n", - " about whether their guess appears in the computer's word.\n", - "\n", - " * After each guess, you should display to the user the \n", - " partially guessed word so far.\n", - " \n", - " * If the guess is the symbol *, print out all words in wordlist that\n", - " matches the current guessed word. \n", - " \n", - " Follows the other limitations detailed in the problem write-up.\n", - " '''\n", - " print(\"Welcome to the game Hangman!\")\n", - " print(\"I am thinking of a word that is \",len(secret_word),\" letters long.\")\n", - " warnings_left=3\n", - " print(\"You have 3 warnings left.\")\n", - " letter=list()\n", - "\n", - " unique=len(set(secret_word))\n", - " guesses_left=6\n", - " while guesses_left>0:\n", - " print(\"-----------------\")\n", - " print(\"You have \",(guesses_left),\" guesses left\")\n", - " print(\"Available letters: \"+ get_available_letters(letter))\n", - " print(\"Please guess a letter: \")\n", - " st=input()\n", - " \n", - "\n", - " if st in letter:\n", - " if warnings_left>0:\n", - " print(\"Oops! You've already guessed that letter. You have \",(warnings_left-1),\" warnings left: \"+get_guessed_word(secret_word, letter))\n", - " warnings_left-=1\n", - " else:\n", - " print(\"Oops! You've already guessed that letter. You have no warnings left so you lose one guess: \"+get_guessed_word(secret_word, letter))\n", - " guesses_left-=1\n", - " else: \n", - " if str.isalpha(st):\n", - " a=str.lower(st)\n", - " letter.append(a)\n", - " if a in secret_word:\n", - " print(\"Good guess: \"+get_guessed_word(secret_word, letter))\n", - " \n", - " else:\n", - " print(\"Oops! That letter is not in my word: \"+get_guessed_word(secret_word, letter))\n", - " if (a=='a')|(a=='e')|(a=='i')|(a=='o')|(a=='u'):\n", - " guesses_left-=2\n", - " else:\n", - " guesses_left-=1\n", - " elif st=='*':\n", - " show_possible_matches(get_guessed_word(secret_word, letter))\n", - " else:\n", - " if warnings_left>0:\n", - " print(\"Oops! That is not a valid letter. You have \",(warnings_left-1),\" warnings left: \"+get_guessed_word(secret_word, letter))\n", - " warnings_left-=1\n", - " else:\n", - " print(\"Oops! That is not a valid letter. You have no warnings left so you lose one guess: \"+get_guessed_word(secret_word, letter))\n", - " guesses_left-=1\n", - "\n", - " \n", - " if is_word_guessed(secret_word, letter):\n", - " print(\"-----------------\")\n", - " print(\"Congratulations, you won!\")\n", - " print(\"Your total score for this game is: \",((guesses_left)*unique))\n", - " break;\n", - "\n", - " if (guesses_left)==0:\n", - " print(\"-----------------\")\n", - " print(\"Sorry, you ran out of guesses. The word was \"+secret_word)\n", - "\n", - "\n", - "\n", - "# When you've completed your hangman_with_hint function, comment the two similar\n", - "# lines above that were used to run the hangman function, and then uncomment\n", - "# these two lines and run this file to test!\n", - "# Hint: You might want to pick your own secret_word while you're testing.\n", - "\n", - "\n", - "if __name__ == \"__main__\":\n", - " # pass\n", - "\n", - " # To test part 2, comment out the pass line above and\n", - " # uncomment the following two lines.\n", - " \n", - " #secret_word = choose_word(wordlist)\n", - " #hangman(secret_word)\n", - "\n", - "###############\n", - " \n", - " # To test part 3 re-comment out the above lines and \n", - " # uncomment the following two lines. \n", - " secret_word = choose_word(wordlist)\n", - " hangman_with_hints(\"tact\")\n", - " hangman_with_hints(\"apple\")\n", - " hangman_with_hints(\"else\")\n", - " hangman_with_hints(\"shreyasi\")\n", - " hangman_with_hints(secret_word)\n" - ], - "execution_count": 9, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Loading word list from file...\n", - " 55900 words loaded.\n", - "Welcome to the game Hangman!\n", - "I am thinking of a word that is 4 letters long.\n", - "You have 3 warnings left.\n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: abcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "a\n", - "Good guess: _ a_ _ \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: bcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "a\n", - "Oops! You've already guessed that letter. You have 2 warnings left: _ a_ _ \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: bcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "s\n", - "Oops! That letter is not in my word: _ a_ _ \n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcdefghijklmnopqrtuvwxyz\n", - "Please guess a letter: \n", - "$\n", - "Oops! That is not a valid letter. You have 1 warnings left: _ a_ _ \n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcdefghijklmnopqrtuvwxyz\n", - "Please guess a letter: \n", - "t\n", - "Good guess: ta_ t\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcdefghijklmnopqruvwxyz\n", - "Please guess a letter: \n", - "e\n", - "Oops! That letter is not in my word: ta_ t\n", - "-----------------\n", - "You have 3 guesses left\n", - "Available letters: bcdfghijklmnopqruvwxyz\n", - "Please guess a letter: \n", - "e\n", - "Oops! You've already guessed that letter. You have 0 warnings left: ta_ t\n", - "-----------------\n", - "You have 3 guesses left\n", - "Available letters: bcdfghijklmnopqruvwxyz\n", - "Please guess a letter: \n", - "e\n", - "Oops! You've already guessed that letter. You have no warnings left so you lose one guess: ta_ t\n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: bcdfghijklmnopqruvwxyz\n", - "Please guess a letter: \n", - "c\n", - "Good guess: tact\n", - "-----------------\n", - "Congratulations, you won!\n", - "Your total score for this game is: 6\n", - "Welcome to the game Hangman!\n", - "I am thinking of a word that is 5 letters long.\n", - "You have 3 warnings left.\n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: abcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "a\n", - "Good guess: a_ _ _ _ \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: bcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "l\n", - "Good guess: a_ _ l_ \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: bcdefghijkmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "*\n", - "Possible word matches are: \n", - "addle adult agile aisle amble ample amply amyls angle ankle apple apply aptly arils atilt \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: bcdefghijkmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "p\n", - "Good guess: appl_ \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: bcdefghijkmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "p\n", - "Oops! You've already guessed that letter. You have 2 warnings left: appl_ \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: bcdefghijkmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "e\n", - "Good guess: apple\n", - "-----------------\n", - "Congratulations, you won!\n", - "Your total score for this game is: 24\n", - "Welcome to the game Hangman!\n", - "I am thinking of a word that is 4 letters long.\n", - "You have 3 warnings left.\n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: abcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "a\n", - "Oops! That letter is not in my word: _ _ _ _ \n", - "-----------------\n", - "You have 4 guesses left\n", - "Available letters: bcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "b\n", - "Oops! That letter is not in my word: _ _ _ _ \n", - "-----------------\n", - "You have 3 guesses left\n", - "Available letters: cdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "c\n", - "Oops! That letter is not in my word: _ _ _ _ \n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "2\n", - "Oops! That is not a valid letter. You have 2 warnings left: _ _ _ _ \n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "d\n", - "Oops! That letter is not in my word: _ _ _ _ \n", - "-----------------\n", - "You have 1 guesses left\n", - "Available letters: efghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "e\n", - "Good guess: e_ _ e\n", - "-----------------\n", - "You have 1 guesses left\n", - "Available letters: fghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "f\n", - "Oops! That letter is not in my word: e_ _ e\n", - "-----------------\n", - "Sorry, you ran out of guesses. The word was else\n", - "Welcome to the game Hangman!\n", - "I am thinking of a word that is 8 letters long.\n", - "You have 3 warnings left.\n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: abcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "s\n", - "Good guess: _ _ _ _ _ _ s_ \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: abcdefghijklmnopqrtuvwxyz\n", - "Please guess a letter: \n", - "i\n", - "Good guess: _ _ _ _ _ _ si\n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: abcdefghjklmnopqrtuvwxyz\n", - "Please guess a letter: \n", - "d\n", - "Oops! That letter is not in my word: _ _ _ _ _ _ si\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: abcefghjklmnopqrtuvwxyz\n", - "Please guess a letter: \n", - "y\n", - "Good guess: _ _ _ _ y_ si\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: abcefghjklmnopqrtuvwxz\n", - "Please guess a letter: \n", - "a\n", - "Good guess: _ _ _ _ yasi\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcefghjklmnopqrtuvwxz\n", - "Please guess a letter: \n", - "r\n", - "Good guess: _ _ r_ yasi\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcefghjklmnopqtuvwxz\n", - "Please guess a letter: \n", - "e\n", - "Good guess: _ _ reyasi\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcfghjklmnopqtuvwxz\n", - "Please guess a letter: \n", - "e\n", - "Oops! You've already guessed that letter. You have 2 warnings left: _ _ reyasi\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcfghjklmnopqtuvwxz\n", - "Please guess a letter: \n", - "h\n", - "Good guess: _ hreyasi\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcfgjklmnopqtuvwxz\n", - "Please guess a letter: \n", - "S\n", - "Good guess: _ hreyasi\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcfgjklmnopqtuvwxz\n", - "Please guess a letter: \n", - "e\n", - "Oops! You've already guessed that letter. You have 1 warnings left: _ hreyasi\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcfgjklmnopqtuvwxz\n", - "Please guess a letter: \n", - "r\n", - "Oops! You've already guessed that letter. You have 0 warnings left: _ hreyasi\n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcfgjklmnopqtuvwxz\n", - "Please guess a letter: \n", - "t\n", - "Oops! That letter is not in my word: _ hreyasi\n", - "-----------------\n", - "You have 4 guesses left\n", - "Available letters: bcfgjklmnopquvwxz\n", - "Please guess a letter: \n", - "o\n", - "Oops! That letter is not in my word: _ hreyasi\n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: bcfgjklmnpquvwxz\n", - "Please guess a letter: \n", - "o\n", - "Oops! You've already guessed that letter. You have no warnings left so you lose one guess: _ hreyasi\n", - "-----------------\n", - "You have 1 guesses left\n", - "Available letters: bcfgjklmnpquvwxz\n", - "Please guess a letter: \n", - "o\n", - "Oops! You've already guessed that letter. You have no warnings left so you lose one guess: _ hreyasi\n", - "-----------------\n", - "Sorry, you ran out of guesses. The word was Shreyasi\n", - "Welcome to the game Hangman!\n", - "I am thinking of a word that is 8 letters long.\n", - "You have 3 warnings left.\n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: abcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "a\n", - "Good guess: _ a_ _ _ _ _ _ \n", - "-----------------\n", - "You have 6 guesses left\n", - "Available letters: bcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: \n", - "p\n", - "Oops! That letter is not in my word: _ a_ _ _ _ _ _ \n", - "-----------------\n", - "You have 5 guesses left\n", - "Available letters: bcdefghijklmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "l\n", - "Oops! That letter is not in my word: _ a_ _ _ _ _ _ \n", - "-----------------\n", - "You have 4 guesses left\n", - "Available letters: bcdefghijkmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "*\n", - "Possible word matches are: \n", - "babbling bachelor bacillus backings backbite backbone backdrop backfire backlogs backrest backside backslid backspin backstop badgered badmouth baffling baggiest bagpiper bagpipes baguette bailiffs bailouts bakelite bakeries baldness baldrics balinese balkiest balloons balloted ballroom ballyhoo balmiest baluster bandying banditry banished banishes banister banjoist bankbook bankroll bankrupt bannered banquets banshees bantered baptists baptisms baptized baptizes barbered barbecue barbells barberry bareness barefoot bargello baritone barkings baronies baroness baronets barouche barreled barrette barriers barrooms basement baseborn baseless basenjis basilisk basketry bassinet bassoons basswood bastions bastings bastille batching bathetic bathoses bathrobe bathroom bathtubs batistes battiest battings battened battered battling bauxites bawdiest bayberry bayonets cabinets cabochon caboodle cabooses cackling caddying caddises cadences cadenced cadmiums caduceus caffeine caginess caissons caitiffs cajoling cajolery calcined calcines calcites calcitic calciums calculus caldrons calfskin calibers calicoes calipers callings calliope callused calluses calmness calomels calories calorics calumets calypsos cambered cambiums cambrics cameroon camisole camomile campfire camphors campsite campuses canceled candying candidly candling canister cankered canniest canoeing canoeist canonize canopied canopies cantered canteens canticle capering capeskin capitols caprices capriole capsized capsizes capstone capsules capsuled captions captious captives captured captures capuchin carbides carbines carbolic carbonic carbonyl carboxyl careered careened carefree careless caressed caresses careworn carillon carmines caroling carolers caroming carotene carotids caroused carouses carousel carpeted carports carrions carrying carriers cartoned cartoons carvings casement casework cashiers cashmere cassette cassocks castings castling castoffs casuists catbirds catching catchers catchier category catering caterers catheter cathodes catholic cationic cattiest caucused caucuses cauldron caulking caustics cautious cautions caviling cavilers cavities cavorted cayennes dabbling dabblers dactylic daffiest daffodil daintily daintier dainties daiquiri dairying dairymen dallying dampness dampened dandling dandruff dangling dankness dappling daringly darkness darkened darkroom darlings dartling dashikis dateline daughter daunting dauphins dawdling daybooks daylight daytimes dazzling eagerest eardrums earliest earldoms earlobes earmuffs earnings earnests earphone earrings earshots earthier easement easiness easterly eateries fabulist fabulous faceless faceting facility factions factious factored factotum faddists fagoting faiences failings failures fainting faintest fairness faithful fakeries falconed falconer falconry fallibly fallible fallowed falsetto faltered families famished famously fancying fanciers fanciest fanciful fanlight farceurs farewell farrowed farthing farthest fascists fascisms fascicle fashions fastness fastened fastener fathered fatherly fathomed fatigued fatigues fattiest fattened faulting faultier fauvisms favoring favorite gabbiest gabbling gabfests gadflies gadgetry gaggling gaieties galleons galloped galoshes gambling gamblers gamboled gamecock gamester gammoned gangling ganglion ganglier gangrene gangster gantlets gantries garbling gardened gardener gargling gargoyle garlicky garments garnered garrison garroted garrotes gartered gaslight gasoline gassiest gassings gasworks gatefold gatepost gathered gatherer gaudiest gauntest gauntlet gauziest gaveling gavottes gawkiest gayeties gazelles gazetted gazettes habiting habitues habitude hackling hackneys haggling hagglers hairiest haircuts hairless hairline hairpins halberds haleness halftone hallooed hallowed halogens haltered hamilton hammered hammocks hampered hamsters handiest handbill handbook handcuff handfuls handguns handling handlers handouts handsome handwork handymen hangings hangdogs hangouts hangover hankered haploids happiest happened harbored hardiest hardness hardened hardener hardship hardtops hardwire hardwood harelips haricots harmless harmonic harpists harpoons harrying harriers harrowed harshest hartford harvests hassling hassocks hastiest hastened hatboxes hatching hatchery hatchets hauberks haunches haunting hautboys hauteurs hawkweed hawthorn hayforks haylofts hayseeds haywires hazelnut haziness jabbered jackboot jacketed jackpots jadeites jaggedly jailbird jalopies jalousie jamboree jangling janitors japeries jaundice jaunting jauntily jauntier javelins jawboned jawbones jazziest katydids labeling labelers laboring laborers laborite laburnum lacewing laciness lacquers lacrosse lactoses ladybird ladybugs ladylike ladylove ladyship laetrile lakeside lambency lambskin lamented lampoons lamppost lampreys lancelet lancelot landings landlord languish languors lankiest lanolins lanterns lapwings larcener larkspur larruped larynges larynxes lashings lassoing latching latchkey lateness lathered latitude latrines latterly latticed lattices laughing laughter launched launcher launches launders lavender lavished lavishes lavishly lawfully lawgiver lawsuits laxities layering layettes layovers laziness machetes machined machines machismo mackerel maddened madhouse madwomen maestros magnetic magnetos mahjongs maidenly mailings mainline maintops majestic majoring majority maldives maleness maligned malinger malmseys maltoses mammoths mandible mandolin mandrels mandrill maneuver manfully mangiest mangling mangrove manholes manhoods manhunts manicure manifest manifold manikins maniples manliest mannered mannerly manpower mansions mantises mantling manumits marbling marching marchers margined marigold mariners maritime markings markdown markedly marketed marketer marksmen marlines marmoset marooned marquees marquise marrying marshier martinet martinis martyred marveled marxists masseurs masseuse mastered masterly mastiffs mastitis mastodon mastoids matching matchbox materiel matinees matrices matrixes matronly mattings mattered mattocks mattress maturing maturity maunders maverick maximize maximums mayflies nacelles nacreous naivetes nameless nankeens naperies napoleon narcoses narcosis narcotic narrowed narrower narrowly nascence nastiest nativity nattiest nauseous nautilus oarlocks pabulums pacifist pacifism pacified pacifies pacifier packings paddling paddocks padlocks pageboys painless painting painters pairings paisleys paleness palettes palfreys palimony palinode palmiest palmists palmetto palomino paltered paltrier pampered pamphlet pandered pandemic pandowdy paneling panelist pangolin panicles panicked panniers panpipes panthers pantheon pantries pantsuit papering papooses parboils parceled parching pardoned parented paretics parishes parities parleyed parodied parodies paroling parolees parotids paroxysm parquets parrying parroted parsnips partings parterre particle partners parvenus passions passings passbook passkeys passover passport password pastiest pasterns pastiche pastille pastimes pastries pastured pastures patching patented patently patentee pathetic pathogen patience patients patriots patroons pattered patterns paunches paupered pavement pavilion pawnshop paycheck payments payrolls rabidity raccoons racquets radioing radishes radiuses raffling ragtimes ragweeds railings raillery raiments rainiest rainbows raindrop rainless rakishly rallying rambling ramblers ramekins ramified ramifies ranching ranchers ranchero randomly rangiest rankling ransomed rapidity rapidest rappings rapports raptures rarefied rarefies rarities rashness raspiest ratchets ratified ratifies rationed ratlines rattiest rattling rattlers raveling ravening ravenous ravished ravishes rawboned rawhides saboteur sacristy saddened saddling saddlers sadirons sadistic safeness safeties saffrons sageness sailfish sailorly sainting salesmen salience salients salinity sallying sallower saltiest saltines saluting sameness samisens samoyeds sampling samplers sanctity sanctify sanction sanctums sandiest sandlots sandwich saneness sanguine sanitize sanskrit sapience saplings sappiest sapphire sapwoods sardined sardines sardonic sassiest satchels satirist satirize sauciest saunters sauteing sauterne savoring savories savvying sawbones sawbucks sawhorse sawmills saxhorns tablehop tabletop tabloids tabooing taciturn tackiest tackling tacklers taconite tactless tadpoles tailored tailpipe tailspin tailwind tainting takedown takeoffs takeover talented talkiest tallness tallyhos tallying talmudic tambours tameness tampered tangiest tangelos tangents tangibly tangible tangling tangoing tantrums tapering tapestry tapeworm taprooms taproots tapsters tardiest targeted tarrying tartness tasseled tastiest tasteful tattered tattling tattlers tattooed taunting tautness tawdrier tawniest taxonomy vaccines vacuoles vacuumed valences valeting validity valkyrie valorous vamoosed vamooses vampires vandykes vanillin vanished vanishes vanities vanquish vapidity vaporing vaporous vaporize vaqueros varicose varmints vaseline vastness vaulting vaunting wackiest waddings waddling waffling wagering waggling wainscot waitress wakening walkouts walleyed walleyes walloons walloped wallowed walruses waltzing wandered wanderer wangling wantoned wantonly warbling warblers wardrobe wardroom wardship wariness warlocks warlords warnings warriors warships wartimes washings washbowl washouts washroom washtubs wastings wasteful wastrels watching watchers watchdog watchful watchmen watering waterier waterloo wattling wavering waviness waxiness waxwings waxworks waybills waysides yachting yarmulke \n", - "-----------------\n", - "You have 4 guesses left\n", - "Available letters: bcdefghijkmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "b\n", - "Oops! That letter is not in my word: _ a_ _ _ _ _ _ \n", - "-----------------\n", - "You have 3 guesses left\n", - "Available letters: cdefghijkmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "c\n", - "Oops! That letter is not in my word: _ a_ _ _ _ _ _ \n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defghijkmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "g\n", - "Good guess: _ a_ g_ _ _ g\n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defhijkmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "*\n", - "Possible word matches are: \n", - "dangling jangling laughing mangling tangling tangoing wangling \n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defhijkmnoqrstuvwxyz\n", - "Please guess a letter: \n", - "t\n", - "Good guess: ta_ g_ _ _ g\n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defhijkmnoqrsuvwxyz\n", - "Please guess a letter: \n", - "n\n", - "Good guess: tang_ _ ng\n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defhijkmoqrsuvwxyz\n", - "Please guess a letter: \n", - "l\n", - "Oops! You've already guessed that letter. You have 2 warnings left: tang_ _ ng\n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defhijkmoqrsuvwxyz\n", - "Please guess a letter: \n", - "*\n", - "Possible word matches are: \n", - "tangling tangoing \n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defhijkmoqrsuvwxyz\n", - "Please guess a letter: \n", - "i\n", - "Good guess: tang_ ing\n", - "-----------------\n", - "You have 2 guesses left\n", - "Available letters: defhjkmoqrsuvwxyz\n", - "Please guess a letter: \n", - "o\n", - "Good guess: tangoing\n", - "-----------------\n", - "Congratulations, you won!\n", - "Your total score for this game is: 12\n" - ], - "name": "stdout" - } - ] - } - ] -} \ No newline at end of file diff --git a/Assignment_1_and_2/T4-Assignment_1-2.ipynb b/Assignment_1_and_2/T4-Assignment_1-2.ipynb deleted file mode 100644 index 329a19c..0000000 --- a/Assignment_1_and_2/T4-Assignment_1-2.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"T4-Assignment_1-2.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","metadata":{"id":"vDH8x2Aq7-_B"},"source":["# **Wikipedia Simplifier : Assignment 1 and 2**\n","---\n","> **By Team 4** :\n","* Pratham Jain\n","* Rashmi G R\n","* Rishav Bikarwar\n","\n","---\n","> **Mentors** :\n","* Ananya Gupta\n","* Rishabh Dugaye\n","\n","---\n"]},{"cell_type":"markdown","metadata":{"id":"ARl2QdGBAZCE"},"source":["## Assignment 1 : **TRIES**"]},{"cell_type":"code","metadata":{"id":"lkxfgYB3AkbH","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok", "timestamp":1618851333547,"user_tz":-330,"elapsed":3105,"user":{"displayName":"Pratham Jain","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GggQyRYWNcQDhKeQOwhiDL6q_K6SB0Rel-r0j5VG0A=s64","userId":"12771486745231969313"}},"outputId":"69eb112b-0d21-4096-e189-6ca61dc53ac2"},"source":["def add_word(trie, word):\n"," cur_node = trie\n"," for char in word:\n"," if char not in cur_node:\n"," cur_node[char] = {}\n"," cur_node = cur_node[char]\n","\n","\n","def create_trie(word_list):\n"," trie = {}\n"," for word in word_list:\n"," add_word(trie, word)\n"," return trie\n","\n","\n","def in_trie(trie, word):\n"," x = 0\n"," cur_node = trie\n"," for char in word:\n"," if char in cur_node:\n"," x += 1\n"," cur_node = cur_node[char]\n"," else:\n"," break\n"," if x == len(word) and cur_node == {}:\n"," return True\n"," else:\n"," return False\n","\n","\n","def list_matches(trie, prefix):\n"," x = 0\n"," cur_node = trie\n"," matches = []\n"," for char in prefix:\n"," if char in cur_node:\n"," cur_node = cur_node[char]\n"," x += 1\n"," if x == len(prefix):\n"," list_matches_helper(cur_node, prefix, matches)\n"," return matches\n","\n","\n","def list_matches_helper(cur_node, till_now, matches):\n"," if cur_node == {}:\n"," matches.append(till_now)\n"," for char in cur_node:\n"," list_matches_helper(cur_node[char], till_now + char, matches)\n","\n","\n","def main():\n"," word_list = ['bear']\n"," my_trie = create_trie(word_list)\n"," add_word(my_trie, 'beast')\n"," print(my_trie)\n"," print(in_trie(my_trie, 'bear'))\n"," print(in_trie(my_trie, 'bea'))\n"," print(in_trie(my_trie, 'apple'))\n"," print(list_matches(my_trie, 'be'))\n","\n","\n","if __name__ == '__main__':\n"," main()"],"execution_count":1,"outputs":[{"output_type":"stream","text":["{'b': {'e': {'a': {'r': {}, 's': {'t': {}}}}}}\n","True\n","False\n","False\n","['bear', 'beast']\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"ZTefQ4pPBwNl"},"source":["\n","---\n","\n"]},{"cell_type":"markdown","metadata":{"id":"_jTYoNLl7VaJ"},"source":["## Assignment 2 : **HANGMAN**"]},{"cell_type":"code","metadata":{"id":"njSztueKMTGV","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1618850942286,"user_tz":-330,"elapsed":89255,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"29459f27-fa15-406e-f9eb-dafdb10da2ac"},"source":["import random\n","import string\n","import requests\n","\n","url = \"https://drive.google.com/u/0/uc?id=1keVGmFD96iMFcM19nVZ1IKiO6rSxZhn0&export=download\"\n","r = requests.get(url, allow_redirects=True)\n","open('words.txt', 'wb').write(r.content)\n","\n","WORDLIST_FILENAME = \"words.txt\"\n","\n","def load_words():\n"," \"\"\"\n"," Returns a list of valid words. Words are strings of lowercase letters.\n"," \n"," Depending on the size of the word list, this function may\n"," take a while to finish.\n"," \"\"\"\n"," print(\"Loading word list from file...\")\n"," # inFile: file\n"," inFile = open(WORDLIST_FILENAME, 'r')\n"," # line: string\n"," line = inFile.readline()\n"," # wordlist: list of strings\n"," wordlist = line.split()\n"," print(\" \", len(wordlist), \"words loaded.\")\n"," return wordlist\n","\n","\n","\n","def choose_word(wordlist):\n"," \"\"\"\n"," wordlist (list): list of words (strings)\n"," \n"," Returns a word from wordlist at random\n"," \"\"\"\n"," return random.choice(wordlist)\n","\n","\n","wordlist = load_words()\n","\n","\n","def is_word_guessed(secret_word, letters_guessed):\n"," '''\n"," secret_word: string, the word the user is guessing; assumes all letters are\n"," lowercase\n"," letters_guessed: list (of letters), which letters have been guessed so far;\n"," assumes that all letters are lowercase\n"," returns: boolean, True if all the letters of secret_word are in letters_guessed;\n"," False otherwise\n"," '''\n"," flag = 1\n"," for x in secret_word:\n"," if x not in letters_guessed:\n"," flag = 0\n"," break\n"," return flag == 1\n","\n","\n","\n","def get_guessed_word(secret_word, letters_guessed):\n"," '''\n"," secret_word: string, the word the user is guessing\n"," letters_guessed: list (of letters), which letters have been guessed so far\n"," returns: string, comprised of letters, underscores (_), and spaces that represents\n"," which letters in secret_word have been guessed so far.\n"," '''\n"," guessed_word = ''\n"," for letter in secret_word:\n"," if letter in letters_guessed:\n"," guessed_word += letter\n"," else:\n"," guessed_word += '_ '\n"," return guessed_word\n","\n","\n","\n","def get_available_letters(letters_guessed):\n"," '''\n"," letters_guessed: list (of letters), which letters have been guessed so far\n"," returns: string (of letters), comprised of letters that represents which letters have not\n"," yet been guessed.\n"," '''\n"," s = \"\"\n"," for i in range(97,123) :\n"," if chr(i) not in letters_guessed :\n"," s = s + chr(i)\n"," return s\n","\n"," \n","\n","def hangman(secret_word):\n"," '''\n"," secret_word: string, the secret word to guess.\n"," \n"," Starts up an interactive game of Hangman.\n"," \n"," * At the start of the game, let the user know how many \n"," letters the secret_word contains and how many guesses s/he starts with.\n"," \n"," * The user should start with 6 guesses\n","\n"," * Before each round, you should display to the user how many guesses\n"," s/he has left and the letters that the user has not yet guessed.\n"," \n"," * Ask the user to supply one guess per round. Remember to make\n"," sure that the user puts in a letter!\n"," \n"," * The user should receive feedback immediately after each guess \n"," about whether their guess appears in the computer's word.\n","\n"," * After each guess, you should display to the user the \n"," partially guessed word so far.\n"," \n"," Follows the other limitations detailed in the problem write-up.\n"," '''\n"," unique_letters = 0\n"," guesses_left = 6\n"," warnings_left = 3\n"," letters_guessed = []\n"," \n"," print(\"Welcome to the game Hangman!\")\n"," print(\"I am thinking of a word that is \" + str(len(secret_word)) + \" letters long.\")\n"," print(\"You have \" + str(warnings_left) + \" warnings left.\")\n"," print(\"-------------\")\n"," guessed_word = get_guessed_word(secret_word,letters_guessed)\n"," \n"," while(True):\n"," if (guesses_left <= 0 or is_word_guessed(secret_word, letters_guessed)):\n"," break\n"," \n"," print(\"You have\", guesses_left ,\"guesses left.\")\n"," print(\"Available letters:\", get_available_letters(letters_guessed))\n"," c = input(\"Please guess a letter: \")\n"," \n"," # validate the input\n"," if str.isalpha(c) and str.lower(c) not in letters_guessed:\n"," c = str.lower(c)\n"," else:\n"," warnings_left -= 1\n"," if warnings_left >= 0 and str.lower(c) not in letters_guessed:\n"," print(\"Oops! That is not a valid letter. You have\", warnings_left, \"warnings left:\", guessed_word)\n"," elif warnings_left >= 0 and str.isalpha(c):\n"," print(\"Oops! You've already guessed that letter. You have\", warnings_left, \"warnings left:\", guessed_word)\n"," elif warnings_left < 0 and str.isalpha(c):\n"," guesses_left -= 1\n"," print(\"Oops! You've already guessed that letter. You have no warnings left so you lose one guess:\", guessed_word)\n"," else:\n"," guesses_left -= 1\n"," print(\"Oops! That is not a valid letter. You have no warnings left so you lose one guess:\", guessed_word)\n"," print(\"-------------\")\n"," continue\n"," \n"," # check if its a good guess\n"," letters_guessed.append(c)\n"," if c in secret_word:\n"," print('Good Guess :', end = '')\n"," unique_letters+=1\n"," guessed_word = get_guessed_word(secret_word, letters_guessed)\n"," print(guessed_word)\n"," else:\n"," print('Oops! That letter is not in my word:', guessed_word)\n"," if c in ['a','e','i','o','u']:\n"," guesses_left -= 2\n"," else:\n"," guesses_left -= 1\n","\n"," print(\"-------------\")\n","\n"," \n"," if guessed_word == secret_word:\n"," score = guesses_left * unique_letters\n"," print(\"Congratulations, you won!\")\n"," print(\"Your total score for this game is: \" + str(score))\n"," else:\n"," print(\"Sorry, you ran out of guesses. The word was \" + secret_word + \".\")\n","\n","\n","\n","\n","def match_with_gaps(my_word, other_word, letters_guessed):\n"," '''\n"," my_word: string with _ characters, current guess of secret word\n"," other_word: string, regular English word\n"," returns: boolean, True if all the actual letters of my_word match the \n"," corresponding letters of other_word, or the letter is the special symbol\n"," _ , and my_word and other_word are of the same length;\n"," False otherwise: \n"," '''\n"," word=my_word.replace(\" \", \"\")\n"," if len(word)==len(other_word) :\n"," for c1,c2 in zip(word,other_word) :\n"," if c1.isalpha():\n"," if c1!=c2 :\n"," return False\n"," else :\n"," if c2 not in get_available_letters(letters_guessed):\n"," return False\n"," return True\n"," else :\n"," return False\n","\n","\n","\n","def show_possible_matches(my_word, letters_guessed):\n"," '''\n"," my_word: string with _ characters, current guess of secret word\n"," returns: nothing, but should print out every word in wordlist that matches my_word\n"," Keep in mind that in hangman when a letter is guessed, all the positions\n"," at which that letter occurs in the secret word are revealed.\n"," Therefore, the hidden letter(_ ) cannot be one of the letters in the word\n"," that has already been revealed.\n","\n"," '''\n"," possible_matches = []\n"," for word in wordlist:\n"," if match_with_gaps(my_word, word, letters_guessed):\n"," possible_matches.append(word)\n","\n"," if len(possible_matches) > 0:\n"," for match in possible_matches:\n"," print(match, end = ' ')\n"," else:\n"," print(\"No matches found\")\n","\n","\n","\n","def hangman_with_hints(secret_word):\n"," '''\n"," secret_word: string, the secret word to guess.\n"," \n"," Starts up an interactive game of Hangman.\n"," \n"," * At the start of the game, let the user know how many \n"," letters the secret_word contains and how many guesses s/he starts with.\n"," \n"," * The user should start with 6 guesses\n"," \n"," * Before each round, you should display to the user how many guesses\n"," s/he has left and the letters that the user has not yet guessed.\n"," \n"," * Ask the user to supply one guess per round. Make sure to check that the user guesses a letter\n"," \n"," * The user should receive feedback immediately after each guess \n"," about whether their guess appears in the computer's word.\n","\n"," * After each guess, you should display to the user the \n"," partially guessed word so far.\n"," \n"," * If the guess is the symbol *, print out all words in wordlist that\n"," matches the current guessed word. \n"," \n"," Follows the other limitations detailed in the problem write-up.\n"," '''\n"," unique_letters = 0\n"," guesses_left = 6\n"," warnings_left = 3\n"," letters_guessed = []\n"," \n"," print(\"Welcome to the game Hangman!\")\n"," print(\"I am thinking of a word that is \" + str(len(secret_word)) + \" letters long.\")\n"," print(\"You have \" + str(warnings_left) + \" warnings left.\")\n"," print(\"-------------\")\n"," guessed_word = get_guessed_word(secret_word,letters_guessed)\n"," \n"," while(True):\n"," if (guesses_left <= 0 or is_word_guessed(secret_word, letters_guessed)):\n"," break\n"," \n"," print(\"You have\", guesses_left ,\"guesses left.\")\n"," print(\"Available letters:\", get_available_letters(letters_guessed))\n"," c = input(\"Please guess a letter: \")\n"," \n"," # validate the input\n"," if c=='*':\n"," print(\"Possible word matches are:\")\n"," show_possible_matches(get_guessed_word(secret_word, letters_guessed), letters_guessed)\n"," continue\n"," elif str.isalpha(c) and str.lower(c) not in letters_guessed:\n"," c = str.lower(c)\n"," else:\n"," warnings_left -= 1\n"," if warnings_left >= 0 and str.lower(c) not in letters_guessed:\n"," print(\"Oops! That is not a valid letter. You have\", warnings_left, \"warnings left:\", guessed_word)\n"," elif warnings_left >= 0 and str.isalpha(c):\n"," print(\"Oops! You've already guessed that letter. You have\", warnings_left, \"warnings left:\", guessed_word)\n"," elif warnings_left < 0 and str.isalpha(c):\n"," guesses_left -= 1\n"," print(\"Oops! You've already guessed that letter. You have no warnings left so you lose one guess:\", guessed_word)\n"," else:\n"," guesses_left -= 1\n"," print(\"Oops! That is not a valid letter. You have no warnings left so you lose one guess:\", guessed_word)\n"," print(\"-------------\")\n"," continue\n"," \n"," # check if its a good guess\n"," letters_guessed.append(c)\n"," if c in secret_word:\n"," print('Good Guess :', end = '')\n"," unique_letters+=1\n"," guessed_word = get_guessed_word(secret_word, letters_guessed)\n"," print(guessed_word)\n"," else:\n"," print('Oops! That letter is not in my word:', guessed_word)\n"," if c in ['a','e','i','o','u']:\n"," guesses_left -= 2\n"," else:\n"," guesses_left -= 1\n","\n"," print(\"-------------\")\n","\n"," if guessed_word == secret_word:\n"," score = guesses_left * unique_letters\n"," print(\"Congratulations, you won!\")\n"," print(\"Your total score for this game is: \" + str(score))\n"," else:\n"," print(\"Sorry, you ran out of guesses. The word was \" + secret_word + \".\")\n","\n","\n","\n","if __name__ == \"__main__\":\n"," secret_word = choose_word(wordlist)\n"," hangman_with_hints(secret_word)\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Loading word list from file...\n"," 55900 words loaded.\n","Welcome to the game Hangman!\n","I am thinking of a word that is 9 letters long.\n","You have 3 warnings left.\n","-------------\n","You have 6 guesses left.\n","Available letters: abcdefghijklmnopqrstuvwxyz\n","Please guess a letter: a\n","Oops! That letter is not in my word: _ _ _ _ _ _ _ _ _ \n","-------------\n","You have 4 guesses left.\n","Available letters: bcdefghijklmnopqrstuvwxyz\n","Please guess a letter: e\n","Good Guess :_ _ _ _ _ _ _ e_ \n","-------------\n","You have 4 guesses left.\n","Available letters: bcdfghijklmnopqrstuvwxyz\n","Please guess a letter: d\n","Good Guess :d_ _ _ _ _ _ e_ \n","-------------\n","You have 4 guesses left.\n","Available letters: bcfghijklmnopqrstuvwxyz\n","Please guess a letter: i\n","Good Guess :di_ _ i_ ie_ \n","-------------\n","You have 4 guesses left.\n","Available letters: bcfghjklmnopqrstuvwxyz\n","Please guess a letter: r\n","Oops! That letter is not in my word: di_ _ i_ ie_ \n","-------------\n","You have 3 guesses left.\n","Available letters: bcfghjklmnopqstuvwxyz\n","Please guess a letter: *\n","Possible word matches are:\n","dignities dignifies You have 3 guesses left.\n","Available letters: bcfghjklmnopqstuvwxyz\n","Please guess a letter: g\n","Good Guess :dig_ i_ ie_ \n","-------------\n","You have 3 guesses left.\n","Available letters: bcfhjklmnopqstuvwxyz\n","Please guess a letter: n\n","Good Guess :digni_ ie_ \n","-------------\n","You have 3 guesses left.\n","Available letters: bcfhjklmopqstuvwxyz\n","Please guess a letter: i\n","Oops! You've already guessed that letter. You have 2 warnings left: digni_ ie_ \n","-------------\n","You have 3 guesses left.\n","Available letters: bcfhjklmopqstuvwxyz\n","Please guess a letter: ^\n","Oops! That is not a valid letter. You have 1 warnings left: digni_ ie_ \n","-------------\n","You have 3 guesses left.\n","Available letters: bcfhjklmopqstuvwxyz\n","Please guess a letter: f\n","Oops! That letter is not in my word: digni_ ie_ \n","-------------\n","You have 2 guesses left.\n","Available letters: bchjklmopqstuvwxyz\n","Please guess a letter: t\n","Good Guess :dignitie_ \n","-------------\n","You have 2 guesses left.\n","Available letters: bchjklmopqsuvwxyz\n","Please guess a letter: s\n","Good Guess :dignities\n","-------------\n","Congratulations, you won!\n","Your total score for this game is: 14\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"EjxiQT9-CWV9"},"source":["\n","\n","---\n","\n"]}]} diff --git a/Assignment_1_and_2/Team2_Wikipedia_simplifier.ipynb b/Assignment_1_and_2/Team2_Wikipedia_simplifier.ipynb deleted file mode 100644 index 4b979c2..0000000 --- a/Assignment_1_and_2/Team2_Wikipedia_simplifier.ipynb +++ /dev/null @@ -1,863 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Team2-Wikipedia-simplifier.ipynb", - "provenance": [], - "collapsed_sections": [], - "toc_visible": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "ZmfA7M1VtkxM" - }, - "source": [ - "# **Wikipidea Simplifier**\n", - "### *ACA 2021 Project*\n", - "\n", - "---\n", - "\n", - "> **Team 2**\n", - " 1. Akanksha Singh\n", - " 2. Harshit Raj\n", - " 3. Kunwar Preet Singh\n", - "\n", - "---\n", - "\n", - "> **Mentors**\n", - " * Ananya Gupta\n", - " * Rishabh Dugaye\n", - "\n", - "---\n", - "\n", - "April 12, 2021" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "wyTYGOnB1IDU" - }, - "source": [ - "# **General Instructions**\n", - "\n", - "* If you need more help with python, following links will help you:\n", - " * https://www.tutorialspoint.com/python/index.htm \n", - " * https://www.w3schools.com/python/\n", - "\n", - "* We want all of you to do the assignments on Colab and submit a Colab notebook. For this, you can go through the following links: \n", - " * https://www.coursera.org/lecture/getting-started-with-tensor-flow2/coding-tutorial-introduction-to-google-colab-qWInB\n", - " * https://www.youtube.com/watch?v=i-HnvsehuSw\n", - "\n", - "* Lastly, set up a Github account. If possible, go through this link to understand git: \n", - " * https://www.vogella.com/tutorials/Git/article.html. \n", - " * Next Sunday, that is, 18/04, we’ll conduct a git tutorial to help you through it. " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "_GTSrNaX0dm2" - }, - "source": [ - "# **Assignment 1**\n", - "\n", - "You’re supposed to the HW1 from this link:\n", - "> https://www.cis.upenn.edu/~cis192/tliu/ \n", - "\n", - "Due date is Thu, Apr 15 by 6 PM" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "JvEZivx729iC", - "outputId": "70ea3158-eb43-4036-8a93-44e5400c6877" - }, - "source": [ - "# Assing-1: Team 2\n", - "# Author : Aska\n", - "\n", - "import json\n", - "\n", - "trie = {\n", - " \"b\": {\n", - " \"e\":{\n", - " \"t\": {}\n", - " },\n", - " \"i\": {\n", - " \"d\": {},\n", - " \"t\": {}\n", - " }\n", - " },\n", - " \"s\": {\n", - " \"e\": {\n", - " \"t\": {}\n", - " },\n", - " \"t\": {\n", - " \"e\": {\n", - " \"p\": {}\n", - " }\n", - " }\n", - " }\n", - " }\n", - "curr=trie\n", - "word=[]\n", - "def print_words(trie,word):\n", - " # print(\"we entered this\")\n", - " if bool(trie)==0:\n", - " print(str(word))\n", - " else:\n", - " nodes=list(trie)\n", - " i=0\n", - " while i https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/assignments/ \n", - "\n", - "Due date is Thu, Apr 18 by 6 PM" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Ovaxht3fgAkj" - }, - "source": [ - "## **Hangman (game)**\n", - "\n", - "#### **Pre req**\n", - "\n", - "\n", - "###### **To run the latter code we need a file \"words.txt\"**\n", - "\n", - "For the same Run the prev code before i.e. \n", - "\n", - "```\n", - "!wget https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/assignments/ps2.zip\n", - "!unzip p*\n", - " ```\n", - "Afterwards the next code should work just fine!\n", - "\n", - "---\n", - "\n", - "#### **How to play**\n", - "1. Choose would u like to take hints during game or not. \n", - " feed `y`if u want hints, `n` otherwise \n", - "\n", - "2. Then the system will tell you how many letter word u are about to guess.\n", - "\n", - "3. You start with 6 guesses \n", - " > loose one guess for each wrong consonant guessed \n", - " loose two guesses for each wrong vowel guessed \n", - "\n", - " Game ends when you run out of guesses\n", - "\n", - "4. [Only For Hint Mode] When u insert `*` u get hints to what the words might be\n", - "\n", - "5. When u insert a letter it accordingly\n", - "\n", - "6. Any invalid input will give u a warning \n", - " after three warning you start loosing guesses \n", - " Invalid input: any repeated letter or anything which is not letter. (`*` is allowed in hint mode)\n", - "\n", - "7. Score is calculated as : \n", - " > `Total score = guesses_remaining * number unique letters in secret_word`\n", - "\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "86ZP0_kU4gzd", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "bfacc7e4-72c4-4902-fd1c-3cd701847ac7" - }, - "source": [ - "!wget https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/assignments/ps2.zip\n", - "!unzip p*\n" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "--2021-04-17 11:09:25-- https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/assignments/ps2.zip\n", - "Resolving ocw.mit.edu (ocw.mit.edu)... 151.101.2.133, 151.101.66.133, 151.101.130.133, ...\n", - "Connecting to ocw.mit.edu (ocw.mit.edu)|151.101.2.133|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 458195 (447K) [application/zip]\n", - "Saving to: ‘ps2.zip.2’\n", - "\n", - "\rps2.zip.2 0%[ ] 0 --.-KB/s \rps2.zip.2 100%[===================>] 447.46K --.-KB/s in 0.01s \n", - "\n", - "2021-04-17 11:09:25 (45.3 MB/s) - ‘ps2.zip.2’ saved [458195/458195]\n", - "\n", - "Archive: ps2.zip\n", - "caution: filename not matched: ps2.zip\n", - "caution: filename not matched: ps2.zip.1\n", - "caution: filename not matched: ps2.zip.2\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "yveGw5IFdcuI", - "outputId": "df7ed66c-d9e1-45ae-f743-bac7757c244c" - }, - "source": [ - "# FIRST RUN PREV CODE AND GET \"words.txt\" :D\n", - "\n", - "# Author : Salazar.h\n", - "# File : hangman.py\n", - "# Path : ~/Documents/Wikipedia Simplifier/ps2\n", - "\n", - "# Hangman Game\n", - "\n", - "import random\n", - "import string\n", - "\n", - "WORDLIST_FILENAME = \"./ps2/words.txt\"\n", - "\n", - "\n", - "def load_words():\n", - " # Returns a list of valid words. Words are strings of lowercase letters.\n", - "\n", - " print(\"Loading word list from file...\")\n", - "\n", - " # inFile: file\n", - " inFile = open(WORDLIST_FILENAME, 'r')\n", - "\n", - " # line: string\n", - " line = inFile.readline()\n", - "\n", - " # wordlist: list of strings\n", - " wordlist = line.split()\n", - "\n", - " print(\" \", len(wordlist), \"words loaded.\")\n", - " return wordlist\n", - "\n", - "\n", - "def choose_word(wordlist):\n", - "\n", - " # wordlist (list): list of words (strings)\n", - " # Returns a word from wordlist at random\n", - "\n", - " return random.choice(wordlist)\n", - "\n", - "\n", - "# Load the list of words into the variable wordlist\n", - "# so that it can be accessed from anywhere in the program\n", - "wordlist = load_words()\n", - "\n", - "\n", - "def is_word_guessed(secret_word, letters_guessed):\n", - " '''\n", - " secret_word: string, the word the user is guessing; assumes all letters are lowercase\n", - "\n", - " letters_guessed: list (of letters), which letters have been guessed so far; assumes that all letters are lowercase\n", - "\n", - " returns: boolean, True if all the letters of secret_word are in letters_guessed; False otherwise\n", - " '''\n", - " for letter in secret_word:\n", - " if letter not in letters_guessed:\n", - " return False\n", - " return True\n", - "\n", - "\n", - "def get_guessed_word(secret_word, letters_guessed):\n", - " '''\n", - " secret_word: string, the word the user is guessing\n", - "\n", - " letters_guessed: list (of letters), which letters have been guessed so far\n", - "\n", - " returns: string, comprised of letters, underscores (_), and spaces that represents \n", - " which letters in secret_word have been guessed so far.\n", - " '''\n", - " out = \"\"\n", - " for letter in secret_word:\n", - " if letter in letters_guessed:\n", - " out += letter\n", - " else:\n", - " out += \"_ \"\n", - "\n", - " return out\n", - "\n", - "\n", - "def get_available_letters(letters_guessed):\n", - " '''\n", - " letters_guessed: list (of letters), which letters have been guessed so far\n", - " returns: string (of letters), comprised of letters that represents which letters have not\n", - " yet been guessed.\n", - " '''\n", - " out = \"\"\n", - " a = string.ascii_lowercase\n", - " for letter in a:\n", - " if letter not in letters_guessed:\n", - " out += letter\n", - "\n", - " return out\n", - "\n", - "\n", - "vowels = \"aeiou\"\n", - "\n", - "\n", - "def hangman(secret_word):\n", - "\n", - " # Hangman Driver Code\n", - " '''\n", - " secret_word: string, the secret word to guess.\n", - "\n", - " Starts up an interactive game of Hangman.\n", - "\n", - " * At the start of the game, let the user know how many \n", - " letters the secret_word contains and how many guesses s/he starts with.\n", - "\n", - " * The user should start with 6 guesses\n", - "\n", - " * Before each round, you should display to the user how many guesses\n", - " s/he has left and the letters that the user has not yet guessed.\n", - "\n", - " * Ask the user to supply one guess per round. Make sure to check that the user guesses a letter\n", - "\n", - " * The user should receive feedback immediately after each guess \n", - " about whether their guess appears in the computer's word.\n", - "\n", - " * After each guess, you should display to the user the \n", - " partially guessed word so far.\n", - "\n", - " * If the guess is the symbol *, print out all words in wordlist that\n", - " matches the current guessed word. \n", - "\n", - " '''\n", - " print(\"Welcome to the game Hangman without Hints!\")\n", - " print(\"I am thinking of a word that is {} letters long.\".format(len(secret_word)))\n", - "\n", - " # warning left thoda mehnat kar lete hai\n", - "\n", - " warning_left = 2\n", - " letters_guessed = []\n", - " guessed_word = get_guessed_word(secret_word, letters_guessed)\n", - " i = -1\n", - "\n", - " # guesssing loop\n", - "\n", - " while i < 5 and not is_word_guessed(secret_word, letters_guessed):\n", - " i += 1\n", - " print(\"------------------\")\n", - "\n", - " # print number of guesses left\n", - " print(\"You have {} guess{} left.\".format(6-i, 'es' if i < 5 else ''))\n", - "\n", - " # letters available\n", - " available_letters = get_available_letters(letters_guessed)\n", - " print(\"Available letters: \" + available_letters)\n", - "\n", - " # ask for a input\n", - " letter = input(\"Please guess a letter : \")\n", - " letter = letter.lower()\n", - "\n", - " # if the letter is already been guessed\n", - " if letter in letters_guessed:\n", - " if warning_left == -1:\n", - " print(\n", - " \"Oops! You've already guessed that letter. You loose a guess as no warning left: \" + guessed_word)\n", - " else:\n", - " print(\"Oops! You've already guessed that letter. You now have {} warning{}: \".format(\n", - " warning_left, '' if warning_left == 1 else 's') + guessed_word)\n", - " warning_left -= 1\n", - " i -= 1\n", - " continue\n", - "\n", - " # if not the letter\n", - " if letter not in string.ascii_lowercase:\n", - " if warning_left == -1:\n", - " print(\n", - " \"Oops! That is not a valid letter. You loose a guess as no warning left: \" + guessed_word)\n", - " else:\n", - " print(\"Oops! That is not a valid letter. You now have {} warning{}: \".format(\n", - " warning_left, '' if warning_left == 1 else 's') + guessed_word)\n", - " warning_left -= 1\n", - " i -= 1\n", - " continue\n", - "\n", - " letters_guessed += letter\n", - " guessed_word = get_guessed_word(secret_word, letters_guessed)\n", - "\n", - " # if letter avialable or not available in it\n", - " if letter in secret_word:\n", - " print(\"Good guess: \" + guessed_word)\n", - " i -= 1\n", - " else:\n", - " print(\"Oops! That letter is not in my word: \" + guessed_word)\n", - " if letter in vowels:\n", - " i += 1\n", - "\n", - " # the final result so just end it already\n", - " if is_word_guessed(secret_word, letters_guessed):\n", - " print(\"Congratulations, you won!\")\n", - " res = 0\n", - " for x in letters_guessed:\n", - " if x in secret_word:\n", - " res += 1\n", - " i = 5-i if i < 6 else 0\n", - " res = res * i\n", - " print(\"Your total score for this game is : {}\".format(res))\n", - " else:\n", - " print(\"Sorry, you ran out of guesses. The word was {}.\".format(secret_word))\n", - "\n", - " return\n", - "\n", - "\n", - "def match_with_gaps(my_word, other_word):\n", - " '''\n", - " my_word: string with _ characters, current guess of secret word\n", - " other_word: string, regular English word\n", - " returns: boolean, True if all the actual letters of my_word match the \n", - " corresponding letters of other_word, or the letter is the special symbol\n", - " _ , and my_word and other_word are of the same length;\n", - " False otherwise: \n", - " '''\n", - " my_word = my_word.replace(\" \", \"\")\n", - " \n", - " if len(my_word) != len(other_word):\n", - " return False\n", - " \n", - " for i in range(len(my_word)):\n", - " if my_word[i] == '_':\n", - " continue\n", - " if my_word[i] != other_word[i]:\n", - " return False\n", - " \n", - " return True\n", - "\n", - "\n", - "def show_possible_matches(my_word):\n", - " '''\n", - " my_word: string with _ characters, current guess of secret word\n", - " returns: nothing, but should print out every word in wordlist that matches my_word\n", - " Keep in mind that in hangman when a letter is guessed, all the positions\n", - " at which that letter occurs in the secret word are revealed.\n", - " Therefore, the hidden letter(_ ) cannot be one of the letters in the word\n", - " that has already been revealed.\n", - " '''\n", - " reslt = []\n", - " for x in wordlist:\n", - " if match_with_gaps(my_word, x):\n", - " reslt.append(x)\n", - " \n", - " \n", - " print(\"Possible word matches are: \")\n", - " print(* reslt, sep=', ')\n", - " print(\"Guess for: \", my_word)\n", - "\n", - "\n", - "def hangman_with_hints(secret_word):\n", - "\n", - " # Hangman with hints Driver Code\n", - "\n", - " '''\n", - " secret_word: string, the secret word to guess.\n", - "\n", - " Starts up an interactive game of Hangman.\n", - "\n", - " * At the start of the game, let the user know how many \n", - " letters the secret_word contains and how many guesses s/he starts with.\n", - "\n", - " * The user should start with 6 guesses\n", - "\n", - " * Before each round, you should display to the user how many guesses\n", - " s/he has left and the letters that the user has not yet guessed.\n", - "\n", - " * Ask the user to supply one guess per round. Make sure to check that the user guesses a letter\n", - "\n", - " * The user should receive feedback immediately after each guess \n", - " about whether their guess appears in the computer's word.\n", - "\n", - " * After each guess, you should display to the user the \n", - " partially guessed word so far.\n", - "\n", - " * If the guess is the symbol *, print out all words in wordlist that\n", - " matches the current guessed word. \n", - "\n", - " '''\n", - " print(\"Welcome to the game Hangman with Hints!\")\n", - " print(\"I am thinking of a word that is {} letters long.\".format(len(secret_word)))\n", - " \n", - " # warning left thoda mehnat kar lete hai\n", - " \n", - " warning_left = 2\n", - " letters_guessed = []\n", - " guessed_word = get_guessed_word(secret_word, letters_guessed)\n", - " i = -1\n", - "\n", - " # guesssing loop\n", - "\n", - " while i < 5 and not is_word_guessed(secret_word, letters_guessed):\n", - " i += 1\n", - " print(\"------------------\")\n", - "\n", - " # print number of guesses left\n", - " print(\"You have {} guess{} left.\".format(6-i, 'es' if i < 5 else ''))\n", - "\n", - " # letters available\n", - " available_letters = get_available_letters(letters_guessed)\n", - " print(\"Available letters: \" + available_letters)\n", - "\n", - " # ask for a input\n", - " letter = input(\"Please guess a letter : \")\n", - " letter = letter.lower()\n", - "\n", - " # reply to hint\n", - " if letter == '*':\n", - " show_possible_matches(guessed_word)\n", - " i -= 1\n", - " continue\n", - " \n", - " # if the letter is already been guessed\n", - " if letter in letters_guessed:\n", - " if warning_left == -1:\n", - " print(\n", - " \"Oops! You've already guessed that letter. You loose a guess as no warning left: \" + guessed_word)\n", - " else:\n", - " print(\"Oops! You've already guessed that letter. You now have {} warning{}: \".format(\n", - " warning_left, '' if warning_left == 1 else 's') + guessed_word)\n", - " warning_left -= 1\n", - " i -= 1\n", - " continue\n", - "\n", - " # if not the letter\n", - " if letter not in string.ascii_lowercase:\n", - " if warning_left == -1:\n", - " print(\n", - " \"Oops! That is not a valid letter. You loose a guess as no warning left: \" + guessed_word)\n", - " else:\n", - " print(\"Oops! That is not a valid letter. You now have {} warning{}: \".format(\n", - " warning_left, '' if warning_left == 1 else 's') + guessed_word)\n", - " warning_left -= 1\n", - " i -= 1\n", - " continue\n", - "\n", - " letters_guessed += letter\n", - " guessed_word = get_guessed_word(secret_word, letters_guessed)\n", - "\n", - " # if letter avialable or not available in it\n", - " if letter in secret_word:\n", - " print(\"Good guess: \" + guessed_word)\n", - " i -= 1\n", - " else:\n", - " print(\"Oops! That letter is not in my word: \" + guessed_word)\n", - " if letter in vowels:\n", - " i += 1\n", - "\n", - " # the final result so just end it already\n", - " if is_word_guessed(secret_word, letters_guessed):\n", - " print(\"Congratulations, you won!\")\n", - " res = 0\n", - " for x in letters_guessed:\n", - " if x in secret_word:\n", - " res += 1\n", - " i = 5-i if i < 6 else 0\n", - " res = res * i\n", - " print(\"Your total score for this game is : {}\".format(res))\n", - " else:\n", - " print(\"Sorry, you ran out of guesses. The word was {}.\".format(secret_word))\n", - "\n", - " return\n", - "\n", - "\n", - "if __name__ == \"__main__\":\n", - "\n", - " secret_word = choose_word(wordlist)\n", - " \n", - " # print(secret_word) ## turn it on if u wanna cheat XD\n", - "\n", - " # ask if u want hint\n", - " hint = \"s\"\n", - " while hint not in ['y','n']:\n", - " hint = input(\"Would u like to have hints? [y/n]: \")\n", - " hint = hint.lower()\n", - " \n", - " # see what function to call\n", - " if hint == 'n':\n", - " hangman(secret_word)\n", - " else:\n", - " hangman_with_hints(secret_word)\n", - "\n", - "# Yaaayyy KHATAM !\n" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Loading word list from file...\n", - " 55900 words loaded.\n", - "Would u like to have hints? [y/n]: y\n", - "Welcome to the game Hangman with Hints!\n", - "I am thinking of a word that is 8 letters long.\n", - "------------------\n", - "You have 6 guesses left.\n", - "Available letters: abcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter : l\n", - "Good guess: _ _ _ _ _ _ l_ \n", - "------------------\n", - "You have 6 guesses left.\n", - "Available letters: abcdefghijkmnopqrstuvwxyz\n", - "Please guess a letter : p\n", - "Oops! That letter is not in my word: _ _ _ _ _ _ l_ \n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: abcdefghijkmnoqrstuvwxyz\n", - "Please guess a letter : *\n", - "Possible word matches are: \n", - "abatable, abjectly, abruptly, absently, absurdly, accompli, accruals, actively, actually, admirals, adorably, adorable, adroitly, aerosols, airedale, airfield, airfoils, airmails, alcohols, amenably, amenable, amicably, amicable, amusedly, annually, anthills, apparels, ardently, arguably, arguable, arrivals, arsenals, artfully, assembly, assemble, astutely, atonally, avowedly, axolotls, bankroll, barbells, bargello, barnacle, baseball, bastille, beanpole, bearably, bearable, bedazzle, bedevils, bedrolls, befuddle, bejewels, belittle, bifocals, billfold, bimetals, binnacle, birdcall, bitingly, bitterly, biweekly, biyearly, blamably, blamable, blastula, blithely, blowhole, bluebell, bobtails, bordello, bouncily, brassily, brazenly, breezily, brightly, broccoli, brokenly, brothels, brussels, brutally, bunghole, caboodle, cakewalk, calomels, camisole, camomile, canaille, candidly, canticle, capitals, capitols, cappella, capriole, caracals, caracole, caramels, caravels, carryall, casually, catapult, catcalls, catchall, cattails, causally, chancels, channels, charnels, chasuble, chattily, chattels, cheekily, cheerily, chenille, chervils, chewable, chlorals, churchly, citadels, clavicle, cleverly, cloudily, clumsily, coarsely, codicils, coequals, cogently, colonels, commonly, conceals, congeals, controls, coquille, cordials, councils, counsels, covertly, cowardly, cowbells, cowgirls, crabbily, craftily, crankily, creakily, creamily, credibly, credible, creosols, crucible, crystals, culpably, culpable, curtails, curvedly, daintily, damnably, damnable, daringly, decently, decibels, decimals, demurely, deposals, despoils, devoutly, diastole, digitals, directly, disciple, dismally, distally, distills, divinely, docilely, doggedly, domicile, doorbell, dotingly, downfall, downhill, dreamily, drearily, dressily, droopily, drowsily, duckbill, dumbbell, dunghill, dutiable, easterly, educable, educible, eggshell, eligibly, eligible, embattle, embezzle, embroils, encircle, enfeeble, enkindle, ensemble, entangle, enthrall, entirely, entrails, enviably, enviable, erasable, escarole, ethanols, expertly, eyeballs, eyestalk, fallibly, fallible, famously, fantails, farewell, fascicle, fatherly, feasibly, feasible, federals, fiercely, filthily, fireball, fistfuls, fitfully, fivefold, flabbily, flagella, flagpole, flannels, flashily, flexibly, flexible, flimsily, flotilla, fluently, follicle, football, footfall, foothill, foothold, forcibly, forcible, foretell, foretold, forkfuls, formally, formerly, fourfold, freehold, freewill, friendly, friskily, frontals, frostily, frothily, frugally, frumpily, fulfills, funerals, gargoyle, gastrula, gatefold, generals, genially, genitals, gingerly, gladioli, glassily, globally, gloomily, glossily, godchild, goodwill, graduals, grapnels, greasily, greedily, groggily, groovily, grubbily, grumpily, guiltily, gullibly, gullible, gumboils, handball, handbill, handfuls, hardball, healable, heartily, heatedly, heavenly, hellhole, highball, hoarsely, hobnails, honestly, honolulu, hopefuls, hornball, horribly, horrible, horsefly, housefly, humanely, humerals, hungrily, imbecile, immobile, impanels, imperils, impishly, inedible, infidels, initials, inkwells, insanely, installs, instills, intently, inveigle, inwardly, jaggedly, jauntily, jezebels, jokingly, jonquils, journals, joyfully, joyously, juvenile, karakuls, kestrels, kickball, kingbolt, kinsfolk, kneehole, knightly, knothole, knowable, lacteals, laetrile, landfall, laterals, latterly, laudably, laudable, lavishly, lawfully, leasable, liberals, linearly, loblolly, logicals, loophole, lovingly, maidenly, mandible, mandrels, mandrill, manfully, manifold, mannerly, mantilla, manually, marigold, markedly, marshals, masterly, matronly, meatball, meltable, mentally, menthols, mightily, minerals, minutely, misapply, miscalls, miscible, misdeals, misdealt, misspell, mistrals, modestly, moldable, molecule, molehill, mongrels, monopoly, mooncalf, morosely, mortally, mothball, motherly, movingly, multiple, multiply, musicals, musicale, mutually, narrowly, narwhals, naturals, neutrals, normally, nostrils, nucleoli, numerals, numskull, nuptials, nutshell, oatmeals, obstacle, ocotillo, oddballs, operably, operable, ordinals, ornately, outfield, outsells, overalls, overcall, overkill, overrule, oversell, oversold, owlishly, palpably, palpable, panatela, parabola, parasols, parboils, particle, passably, passable, pastille, patently, payrolls, peephole, pentacle, perusals, phrasals, pigtails, pinballs, pinnacle, pinochle, pitfalls, pitiably, pitiable, placidly, playable, playbill, pluckily, politely, portably, portable, porthole, possibly, possible, potbelly, pratfall, preamble, prettily, pretzels, prevails, priestly, princely, probably, probable, promptly, properly, provably, provable, publicly, puffball, quarrels, quenelle, quintals, quotably, quotable, racially, radicals, rainfall, rakishly, randomly, readably, readable, recently, recitals, redouble, reflexly, refusals, rekindle, reliably, reliable, remodels, remotely, removals, renewals, reposals, resemble, respells, reticule, retrials, reusable, reveille, revivals, ridicule, roomfuls, roundels, ruefully, ruggedly, sailorly, salvable, satchels, satiable, savagely, sawmills, scaffold, scalpels, scandals, scarcely, schedule, scissile, scrabble, scraggly, scramble, scrapple, scribble, scrofula, seashell, secondly, secretly, securely, sedately, seizable, sensibly, sensible, serenely, severely, sextuple, sexually, shakable, shiftily, shoddily, shoptalk, shrewdly, shrivels, sidewalk, signally, silently, sinfully, sinkable, sinkhole, skewbald, skimpily, sleepily, slightly, sloppily, slovenly, smoothly, smudgily, smuttily, snappily, sneakily, snippily, snoopily, snootily, snorkels, snowball, snowfall, sociably, sociable, socially, soddenly, softball, solemnly, solvable, spaniels, sparsely, specials, speedily, spiffily, spiracle, spirilla, spookily, sportily, spousals, sprinkle, spunkily, squabble, squarely, squiggle, steadily, steamily, stencils, stodgily, stolidly, stormily, straddle, straggly, straggle, strangle, strictly, strongly, strudels, struggle, stuffily, stupidly, sturdily, subsoils, subtitle, suddenly, suitably, suitable, sullenly, sundials, superbly, supinely, syllable, tangibly, tangible, telltale, tenderly, tendrils, tentacle, terribly, terrible, testable, testicle, thermals, throttle, thurible, tillable, tinfoils, toenails, tomfools, toothily, topsails, topsoils, tortilla, trammels, trashily, travails, trefoils, triangle, trickily, trycycle, tubercle, tumbrels, turmoils, umbrella, unbuckle, uncouple, uneasily, unequals, unevenly, unfairly, ungainly, unicycle, uniquely, unjustly, unkindly, unlikely, unlovely, unravels, unsaddle, unseemly, unsettle, unsnarls, unstably, unstable, unsubtle, untangle, untidily, untimely, unusable, unwarily, unwisely, urgently, usefully, utensils, vacantly, valhalla, valuable, variably, variable, vendible, ventrals, verbally, vermeils, versicle, victrola, victuals, vincible, violably, violable, visually, vitriols, voidable, volatile, wantonly, washable, wassails, wastrels, waybills, wearable, werewolf, westerly, wheezily, wickedly, wilfully, windfall, windmill, withheld, withhold, woefully, woodpile, workable, wormhole, yourself\n", - "Guess for: _ _ _ _ _ _ l_ \n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: abcdefghijkmnoqrstuvwxyz\n", - "Please guess a letter : a\n", - "Good guess: _ _ a_ _ _ l_ \n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bcdefghijkmnoqrstuvwxyz\n", - "Please guess a letter : *\n", - "Possible word matches are: \n", - "abatable, beanpole, bearably, bearable, blamably, blamable, blastula, brassily, brazenly, chancels, channels, charnels, chasuble, chattily, chattels, clavicle, coarsely, crabbily, craftily, crankily, diastole, erasable, feasibly, feasible, flabbily, flagella, flagpole, flannels, flashily, gladioli, glassily, graduals, grapnels, healable, heartily, heatedly, heavenly, hoarsely, leasable, meatball, placidly, playable, playbill, pratfall, quarrels, readably, readable, scaffold, scalpels, scandals, scarcely, seashell, shakable, snappily, spaniels, sparsely, trammels, trashily, travails, wearable\n", - "Guess for: _ _ a_ _ _ l_ \n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bcdefghijkmnoqrstuvwxyz\n", - "Please guess a letter : e\n", - "Good guess: _ _ a_ _ el_ \n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bcdfghijkmnoqrstuvwxyz\n", - "Please guess a letter : *\n", - "Possible word matches are: \n", - "chancels, channels, charnels, chattels, coarsely, flannels, grapnels, hoarsely, quarrels, scalpels, scarcely, seashell, spaniels, sparsely, trammels\n", - "Guess for: _ _ a_ _ el_ \n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bcdfghijkmnoqrstuvwxyz\n", - "Please guess a letter : s\n", - "Good guess: _ _ a_ _ els\n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bcdfghijkmnoqrtuvwxyz\n", - "Please guess a letter : *\n", - "Possible word matches are: \n", - "chancels, channels, charnels, chattels, flannels, grapnels, quarrels, scalpels, spaniels, trammels\n", - "Guess for: _ _ a_ _ els\n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bcdfghijkmnoqrtuvwxyz\n", - "Please guess a letter : c\n", - "Good guess: c_ a_ _ els\n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bdfghijkmnoqrtuvwxyz\n", - "Please guess a letter : *\n", - "Possible word matches are: \n", - "chancels, channels, charnels, chattels\n", - "Guess for: c_ a_ _ els\n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bdfghijkmnoqrtuvwxyz\n", - "Please guess a letter : h\n", - "Good guess: cha_ _ els\n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bdfgijkmnoqrtuvwxyz\n", - "Please guess a letter : n\n", - "Good guess: cha_ nels\n", - "------------------\n", - "You have 5 guesses left.\n", - "Available letters: bdfgijkmoqrtuvwxyz\n", - "Please guess a letter : r\n", - "Good guess: charnels\n", - "Congratulations, you won!\n", - "Your total score for this game is : 40\n" - ], - "name": "stdout" - } - ] - } - ] -} \ No newline at end of file diff --git a/Assignment_1_and_2/Team_1_Wikipedia_simplifier.ipynb b/Assignment_1_and_2/Team_1_Wikipedia_simplifier.ipynb deleted file mode 100644 index 1f3da54..0000000 --- a/Assignment_1_and_2/Team_1_Wikipedia_simplifier.ipynb +++ /dev/null @@ -1,454 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Team-1_Wikipedia simplifier.ipynb", - "provenance": [], - "collapsed_sections": [], - "authorship_tag": "ABX9TyNli7k1h1gpmUcG/s+H3B2E", - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "IxDlij8t1zqB" - }, - "source": [ - "# Wikipedia simplifier\n", - "\n", - "**ACA 2021 project**\n", - "\n", - "---\n", - "\n", - "**Team 1** \n", - "\n", - "1. Vaibhav goyal\n", - "2. Kajal deep\n", - "3. Alisha verma\n", - "\n", - "---\n", - "\n", - "**Mentors**\n", - "\n", - "1. Rishabh dugaye\n", - "2. Ananya gupta\n", - "\n", - "---\n", - "\n", - "\n", - "\n", - "# Assignment 1\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "ecPi4elO32O2" - }, - "source": [ - "def add_word(trie, word):\n", - " \"\"\"\n", - " Add a word to the given trie.\n", - "\n", - " Args:\n", - " trie (dict): the dictionary representation of a trie\n", - " word (str): the word to be added\n", - "\n", - " Returns:\n", - " None\n", - "\n", - " Side effect:\n", - " trie is modified with word included\n", - " \"\"\"\n", - " curr = trie\n", - " for l in word:\n", - " if l not in curr:\n", - " curr[l] = dict()\n", - " curr = curr[l]\n", - "\n", - "\n", - "def create_trie(word_list):\n", - " \"\"\"\n", - " Creates a trie from the given word list.\n", - "\n", - " Hint: use your completed implementation of add_word()\n", - "\n", - " Args:\n", - " word_list (list): list of words (str)\n", - "\n", - " Returns:\n", - " dict: a dictionary representation of the trie\n", - " \"\"\"\n", - " trie = dict()\n", - " for word in word_list:\n", - " curr = trie\n", - " for l in word:\n", - " if l not in curr:\n", - " curr[l] = dict()\n", - " curr = curr[l]\n", - "\n", - " return trie\n", - "\n", - "def in_trie(trie, word):\n", - " \"\"\"\n", - " Check whether the given word is present within the trie.\n", - "\n", - " Args:\n", - " word (str): the word to check\n", - " trie (dict): the trie to check against\n", - "\n", - " Returns:\n", - " bool: True if the word is in the trie, False if it is not\n", - " \"\"\"\n", - " curr = trie\n", - " for l in word:\n", - " if l in curr:\n", - " curr = curr[l]\n", - " else:\n", - " return False\n", - " if(bool(curr)):\n", - " return False\n", - " return True \n", - "\n", - "def list_matches(trie, prefix):\n", - " \"\"\"\n", - " List all word with the given prefix in the trie.\n", - " If no words in the trie match the given prefix, return an empty list.\n", - "\n", - " Hint: you may want to write a recursive helper function to traverse the\n", - " trie.\n", - "\n", - " Args:\n", - " prefix (str): the prefix to match against\n", - " trie (dict): the trie to search over\n", - "\n", - " Returns:\n", - " list: all words in the trie that begin with prefix\n", - " \"\"\"\n", - " curr = trie\n", - " for l in prefix:\n", - " if l in curr:\n", - " curr = curr[l]\n", - " else: \n", - " return []\n", - " \n", - " words = []\n", - "\n", - "def main():\n", - " \"\"\"main function\"\"\"\n", - " word_list = ['bear']\n", - " my_trie = create_trie(word_list)\n", - " add_word(my_trie, 'beat')\n", - " print(my_trie)\n", - " print(in_trie(my_trie, 'b'))\n", - "\n", - "\n", - "if __name__ == '__main__':\n", - " \"\"\"\n", - " Feel free to test your implementation here by running python3 hw1.py in\n", - " your terminal\n", - " \"\"\"\n", - " main()" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "4GzX8GVc3ypy" - }, - "source": [ - "# Assignment 2" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "RAXhglWKlvJW", - "outputId": "36f4ab81-8177-4f16-b011-3ba41300e03c" - }, - "source": [ - "# Problem Set 2, hangman.py\n", - "import random\n", - "import string\n", - "\n", - "WORDLIST_FILENAME = \"words.txt\"\n", - "\n", - "def load_words():\n", - " \n", - " print(\"Loading word list from file...\")\n", - " # inFile: file\n", - " inFile = open(WORDLIST_FILENAME, 'r')\n", - " # line: string\n", - " line = inFile.readline()\n", - " # wordlist: list of strings\n", - " wordlist = line.split()\n", - " print(\" \", len(wordlist), \"words loaded.\")\n", - " return wordlist\n", - "\n", - "\n", - "def choose_word(wordlist):\n", - " \n", - " return random.choice(wordlist)\n", - "\n", - "\n", - "wordlist = load_words()\n", - "\n", - "\n", - "def is_word_guessed(secret_word, letters_guessed):\n", - "\n", - " for l in secret_word:\n", - " if l not in letters_guessed:\n", - " return False\n", - " return True\n", - "\n", - "\n", - "def get_guessed_word(secret_word, letters_guessed):\n", - " \n", - " word = secret_word[:]\n", - " for l in secret_word:\n", - " if l not in letters_guessed:\n", - " word = word.replace(l, '_ ', 1)\n", - " return word\n", - "\n", - "\n", - "def get_available_letters(letters_guessed):\n", - " \n", - " available_letters = string.ascii_lowercase\n", - " for l in letters_guessed:\n", - " available_letters = available_letters.replace(l, '')\n", - " return available_letters\n", - "\n", - "\n", - "def hangman(secret_word):\n", - " \n", - " print('Welcome to the game Hangman!')\n", - " print('I am thinking of a word that is', len(secret_word), 'letters long.')\n", - " print('You have 3 warnings left.')\n", - "\n", - " guess = 6\n", - " warning = 3\n", - " letters_guessed = []\n", - " \n", - " while guess:\n", - " print('-----------------------------------')\n", - " if is_word_guessed(secret_word, letters_guessed):\n", - " print('Congratulations, you won!')\n", - " print('Your total score for this game is', guess*len(set(secret_word)))\n", - " return\n", - " print('You have', guess, 'guesses left.')\n", - " print('Availbale letters:', get_available_letters(letters_guessed))\n", - " letter = input('Please guess a letter: ').lower()\n", - " if letter.isalpha():\n", - " if letter in letters_guessed:\n", - " if warning:\n", - " warning -= 1\n", - " print('Oops! You\\'ve already guessed that letter. You now have', warning ,'warnings :', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " guess -= 1\n", - " print('Oops! You\\'ve already guessed that letter. You have no warnings left so you lose a guess:', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " letters_guessed.append(letter)\n", - " if letter in secret_word:\n", - " print('Good guess:', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " if letter in ['a', 'e', 'i', 'o', 'u']:\n", - " guess -= 2\n", - " else:\n", - " guess -= 1 \n", - " print('Oops! That letter is not in my word:', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " if warning:\n", - " warning -= 1\n", - " print('Oops! That is not a valid letter. You now have', warning ,'warnings left:', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " guess -= 1\n", - " print('Oops! That is not a valid letter. You have no warnings left so you lose one guess:', get_guessed_word(secret_word, letters_guessed))\n", - "\n", - " print('-----------------------------------')\n", - " print('Sorry, you ran out of guesses. The word was', secret_word,'.')\n", - " return\n", - "\n", - "\n", - "def match_with_gaps(my_word, other_word):\n", - " \n", - " word = my_word[:]\n", - " word = \"\".join(word.split())\n", - " if len(word) == len(other_word):\n", - " pos = 0\n", - " for l in word:\n", - " if l != '_' and other_word.find(l, pos) != word.find(l, pos):\n", - " return False\n", - " pos += 1\n", - " return True\n", - " else:\n", - " return False\n", - "\n", - "\n", - "def show_possible_matches(my_word):\n", - " \n", - " found_words = []\n", - " for word in wordlist:\n", - " if match_with_gaps(my_word, word):\n", - " found_words.append(word)\n", - " \n", - " if len(found_words):\n", - " for word in found_words:\n", - " print(word, end='\\t')\n", - " else:\n", - " print('No matches found')\n", - " \n", - " print('\\n')\n", - "\n", - "\n", - "def hangman_with_hints(secret_word):\n", - " \n", - " print('Welcome to the game Hangman!')\n", - " print('I am thinking of a word that is', len(secret_word), 'letters long.')\n", - " print('You have 3 warnings left.')\n", - "\n", - " guess = 6\n", - " warning = 3\n", - " letters_guessed = []\n", - " \n", - " while guess:\n", - " print('-----------------------------------')\n", - " if is_word_guessed(secret_word, letters_guessed):\n", - " print('Congratulations, you won!')\n", - " print('Your total score for this game is', guess*len(set(secret_word)))\n", - " return\n", - " print('You have', guess, 'guesses left.')\n", - " print('Availbale letters:', get_available_letters(letters_guessed))\n", - " letter = input('Please guess a letter: ').lower()\n", - " if letter.isalpha():\n", - " if letter in letters_guessed:\n", - " if warning:\n", - " warning -= 1\n", - " print('Oops! You\\'ve already guessed that letter. You now have', warning ,'warnings :', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " guess -= 1\n", - " print('Oops! You\\'ve already guessed that letter. You have no warnings left so you lose a guess:', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " letters_guessed.append(letter)\n", - " if letter in secret_word:\n", - " print('Good guess:', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " if letter in ['a', 'e', 'i', 'o', 'u']:\n", - " guess -= 2\n", - " else:\n", - " guess -= 1 \n", - " print('Oops! That letter is not in my word:', get_guessed_word(secret_word, letters_guessed))\n", - " elif letter == '*':\n", - " print('Possible word matches are:')\n", - " show_possible_matches(get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " if warning:\n", - " warning -= 1\n", - " print('Oops! That is not a valid letter. You now have', warning ,'warnings left:', get_guessed_word(secret_word, letters_guessed))\n", - " else:\n", - " guess -= 1\n", - " print('Oops! That is not a valid letter. You have no warnings left so you lose one guess:', get_guessed_word(secret_word, letters_guessed))\n", - "\n", - " print('-----------------------------------')\n", - " print('Sorry, you ran out of guesses. The word was', secret_word,'.')\n", - " return\n", - "\n", - "\n", - "if __name__ == \"__main__\":\n", - " \n", - " secret_word = choose_word(wordlist)\n", - " # hangman(secret_word)\n", - " \n", - " hangman_with_hints(secret_word)\n" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Loading word list from file...\n", - " 55900 words loaded.\n", - "Welcome to the game Hangman!\n", - "I am thinking of a word that is 7 letters long.\n", - "You have 3 warnings left.\n", - "-----------------------------------\n", - "You have 6 guesses left.\n", - "Availbale letters: abcdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: b\n", - "Oops! That letter is not in my word: _ _ _ _ _ _ _ \n", - "-----------------------------------\n", - "You have 5 guesses left.\n", - "Availbale letters: acdefghijklmnopqrstuvwxyz\n", - "Please guess a letter: e\n", - "Good guess: _ _ _ _ _ e_ \n", - "-----------------------------------\n", - "You have 5 guesses left.\n", - "Availbale letters: acdfghijklmnopqrstuvwxyz\n", - "Please guess a letter: f\n", - "Oops! That letter is not in my word: _ _ _ _ _ e_ \n", - "-----------------------------------\n", - "You have 4 guesses left.\n", - "Availbale letters: acdghijklmnopqrstuvwxyz\n", - "Please guess a letter: d\n", - "Good guess: _ d_ _ _ ed\n", - "-----------------------------------\n", - "You have 4 guesses left.\n", - "Availbale letters: acghijklmnopqrstuvwxyz\n", - "Please guess a letter: p\n", - "Good guess: _ d_ p_ ed\n", - "-----------------------------------\n", - "You have 4 guesses left.\n", - "Availbale letters: acghijklmnoqrstuvwxyz\n", - "Please guess a letter: n\n", - "Oops! That letter is not in my word: _ d_ p_ ed\n", - "-----------------------------------\n", - "You have 3 guesses left.\n", - "Availbale letters: acghijklmoqrstuvwxyz\n", - "Please guess a letter: *\n", - "Possible word matches are:\n", - "adapted\tadopted\t\n", - "\n", - "-----------------------------------\n", - "You have 3 guesses left.\n", - "Availbale letters: acghijklmoqrstuvwxyz\n", - "Please guess a letter: a\n", - "Good guess: adap_ ed\n", - "-----------------------------------\n", - "You have 3 guesses left.\n", - "Availbale letters: cghijklmoqrstuvwxyz\n", - "Please guess a letter: t\n", - "Good guess: adapted\n", - "-----------------------------------\n", - "Congratulations, you won!\n", - "Your total score for this game is 15\n" - ], - "name": "stdout" - } - ] - } - ] -} \ No newline at end of file diff --git a/Assignment-3/Assignment_3_Team_5.ipynb b/Assignment_3/Assignment_3_Team_5.ipynb similarity index 100% rename from Assignment-3/Assignment_3_Team_5.ipynb rename to Assignment_3/Assignment_3_Team_5.ipynb diff --git a/Assignment-3/README.md b/Assignment_3/README.md similarity index 100% rename from Assignment-3/README.md rename to Assignment_3/README.md diff --git a/Assignment_4/T4-Assignment_4.ipynb b/Assignment_4/T4-Assignment_4.ipynb deleted file mode 100644 index ce23797..0000000 --- a/Assignment_4/T4-Assignment_4.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"T4-Assignment_4.ipynb","provenance":[],"collapsed_sections":[],"authorship_tag":"ABX9TyOX5URjNoxWF9JpySQAe7Zu"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"accelerator":"GPU"},"cells":[{"cell_type":"markdown","metadata":{"id":"fcoU8977_ypd"},"source":["# **Wikipedia Simplifier : Assignment 4**\n","---\n","> **By Team 4** :\n","* Pratham Jain\n","* Rashmi G R\n","* Rishav Bikarwar\n","\n","---\n","> **Mentors** :\n","* Ananya Gupta\n","* Rishabh Dugaye\n","\n","---"]},{"cell_type":"markdown","metadata":{"id":"Jo5xco8iLGxj"},"source":["## **Movie Review Sentiment Analysis**"]},{"cell_type":"markdown","metadata":{"id":"3m49Gaw0L6Eg"},"source":["**Importing Useful Libraries**"]},{"cell_type":"code","metadata":{"id":"jYnWy18rAWvC","executionInfo":{"status":"ok","timestamp":1621783490944,"user_tz":-330,"elapsed":1768,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["import numpy as np\n","import tensorflow_datasets as tfds\n","import tensorflow as tf\n","\n","tfds.disable_progress_bar()"],"execution_count":1,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"szqYoabFMCMy"},"source":["**Loading IMDB movie review dataset**"]},{"cell_type":"code","metadata":{"id":"3N5Q1XMm_tiw","executionInfo":{"status":"ok","timestamp":1621783491803,"user_tz":-330,"elapsed":861,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["dataset = tfds.load('imdb_reviews', as_supervised=True)\n","train_dataset, test_dataset = dataset['train'], dataset['test']"],"execution_count":2,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"DicrwWkqLXaf","executionInfo":{"status":"ok","timestamp":1621783491804,"user_tz":-330,"elapsed":5,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"5c1a306b-9398-42d8-fc27-60f2ef9e23e8"},"source":["print(len(train_dataset), len(test_dataset))"],"execution_count":3,"outputs":[{"output_type":"stream","text":["25000 25000\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"tRg2CCyjSmX8","executionInfo":{"status":"ok","timestamp":1621783491804,"user_tz":-330,"elapsed":3,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["BUFFER_SIZE = 15000\n","BATCH_SIZE = 64"],"execution_count":4,"outputs":[]},{"cell_type":"code","metadata":{"id":"QbW1ow_SL4Ks","executionInfo":{"status":"ok","timestamp":1621783491804,"user_tz":-330,"elapsed":3,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["train_dataset = train_dataset.shuffle(BUFFER_SIZE).batch(BATCH_SIZE).prefetch(tf.data.AUTOTUNE)\n","test_dataset = test_dataset.batch(BATCH_SIZE).prefetch(tf.data.AUTOTUNE)"],"execution_count":5,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"HlyYFElVYWum","executionInfo":{"status":"ok","timestamp":1621783492465,"user_tz":-330,"elapsed":664,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"dc4bdc0e-a540-4de2-d18c-e0a0f68fd961"},"source":["for example, label in train_dataset.take(1):\n"," print('texts: ', example.numpy()[:3])\n"," print()\n"," print('labels: ', label.numpy()[:3])"],"execution_count":6,"outputs":[{"output_type":"stream","text":["texts: [b\"I'm sorry, but this may have been scary in 1978 when it came out, but in modern times it just doesn't hold up. The only interesting scene in the entire movie is the opening scene where Michael kills his sister, Judith, wearing his Halloween mask. The most startling moment in the whole film is when his parents rip the mask off to see their son killed their daughter. The film goes downhill from there and doesn't pick up until the last fifteen minutes, but by then it's too late, we the audience have lost all interest in the story. There is barely any character development, and people always rave about Laurie being such an exceptional heroine, when there really isn't much to her. I'm sorry to disagree with everyone terrified by this movie, but if you want a great horror movie go watch The Shining or Rosemary's Baby. Those are the two best horror films ever made. Halloween is certainly not in their ranks. I can't believe Roger Ebert gave it four stars, for there is no way this film could ever deserve such a high rating.\"\n"," b\"Jean Harlow and Clark Gable were a great on screen team and this may be their best movie together.

Yes, Hold Your Man can be cheesy and predictable, but that's not what I love about the movie. I love seeing Harlow and Gable together and in this film they are simply wonderful. It is obvious that they really enjoyed working together and that is part of what makes this such a wonderful film.

The witty dialogue, great script and attention to detail are the other things that make this such a good movie. I loved this movie the first time I saw it and on each subsequent viewing I always notice at least one new detail. To me, that is a mark of a great film.

The dialogue and script are better than most movies from this time period (early 30's). I adore classic movies, but I admit that most of them are just average and at times don't hold my interest. Hold Your Man is one of the exceptions.

This has a lot to do with the fact that Hold Your Man is a 'pre-code' movie. (The Hays code was not enforced until a year after Hold Your Man.) This movie could not have been made under the code. Well, it could have been made, but it would have been an entirely different story. Thank goodness the code was not enforced until 1934. Otherwise, we would have missed out on this gem.\"\n"," b'When this was released, I thought this was one of the most profane films ever made. However, thanks to Martin Scorcese and a few other filmmakers like him, there have been mainline films worse, language-wise, than this....but this is a pretty brutal assault on one\\'s ears. Hey, I can take a lot of it, but this got ridiculous. In the first six minutes alone, I heard a half-dozen usage\\'s of the Lord\\'s name in vain plus an untold number of f-words. I wonder how many people walked out of the theater watching this in 1990? I couldn\\'t have been the only one.

Not surprisingly, some of the feature actors included Jennifer Jason-Leigh, Burt Young, Jerry Orbach and Rikki Lake. Since this film, Stephen Lang seems to have improved his image, at least playing the Godly \"Stonewall\" Jackson in \"Gods and Generals.\" Lang\\'s role here is just the opposite: perhaps the worst trashy person in the film and a character who falls in love with a transvestite by the end of the film.

Depressing, gloomy, semi-pornographic, repulsive: these are just a few of the adjectives people used - even some Liberal critics - in describing this story, which is painted even worse in the novel. Of course, some of the better-known critics, all extreme Libs, praised the movie. However, they were the only ones. Most critics were disgusted, as well almost all of the paying public. It\\'s unbelievable that anyone could praise filth and garbage like this.

Trust me on this: there are no good, likable characters in this entire movie. This is a mean, sick film: one of the worst of the \"modern era.\" That is, unless you enjoy seeing child abuse, drug abuse, teen prostitutes, on and on - two straight hours of nothing but atrocities and just plain evil people. No thanks.']\n","\n","labels: [0 1 0]\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"9Bgz9IDLTw2e"},"source":["**Creating the Text Encoder**"]},{"cell_type":"code","metadata":{"id":"62fGaijhTxSu","executionInfo":{"status":"ok","timestamp":1621783496616,"user_tz":-330,"elapsed":4152,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["VOCAB_SIZE = 2000\n","encoder = tf.keras.layers.experimental.preprocessing.TextVectorization(max_tokens=VOCAB_SIZE)\n","encoder.adapt(train_dataset.map(lambda text, label: text))"],"execution_count":7,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"YOcMbtWcZe91","executionInfo":{"status":"ok","timestamp":1621783496619,"user_tz":-330,"elapsed":16,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"ea663780-adca-4521-beba-1f22c44dad9c"},"source":["vocab = np.array(encoder.get_vocabulary())\n","word_index = {word:idx for word, idx in zip(vocab, range(len(vocab)))}\n","vocab[:10]"],"execution_count":8,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array(['', '[UNK]', 'the', 'and', 'a', 'of', 'to', 'is', 'in', 'it'],\n"," dtype='] 822.24M 4.70MB/s in 2m 42s \n","\n","2021-05-23 15:35:53 (5.07 MB/s) - ‘glove.6B.zip’ saved [862182613/862182613]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"TpW5m_LAZuwK","executionInfo":{"status":"ok","timestamp":1621784184877,"user_tz":-330,"elapsed":28386,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"1e1e3dfc-a7ed-4956-cc8a-cffd5034d871"},"source":["!unzip glove.6B.zip"],"execution_count":21,"outputs":[{"output_type":"stream","text":["Archive: glove.6B.zip\n"," inflating: glove.6B.50d.txt \n"," inflating: glove.6B.100d.txt \n"," inflating: glove.6B.200d.txt \n"," inflating: glove.6B.300d.txt \n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"CG1e0b6qa7st","executionInfo":{"status":"ok","timestamp":1621784189163,"user_tz":-330,"elapsed":4293,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"779d3cb1-426a-409a-a685-72254cc25a34"},"source":["path_to_glove_file = '/content/glove.6B.100d.txt'\n","\n","embeddings_index = {}\n","with open(path_to_glove_file) as f:\n"," for line in f:\n"," word, coefs = line.split(maxsplit=1)\n"," coefs = np.fromstring(coefs, \"f\", sep=\" \")\n"," embeddings_index[word] = coefs\n","\n","print(\"Found %s word vectors.\" % len(embeddings_index))"],"execution_count":22,"outputs":[{"output_type":"stream","text":["Found 400000 word vectors.\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"kdk33pFxgFGz","executionInfo":{"status":"ok","timestamp":1621784189164,"user_tz":-330,"elapsed":11,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"abf7af40-1b0a-46fd-c4da-626f7a982844"},"source":["NUM_TOKENS = len(vocab) + 2\n","EMBEDDING_DIM = 100\n","hits = 0\n","misses = 0\n","\n","# Prepare embedding matrix\n","embedding_matrix = np.zeros((NUM_TOKENS, EMBEDDING_DIM))\n","for word, i in word_index.items():\n"," embedding_vector = embeddings_index.get(word)\n"," if embedding_vector is not None:\n"," # Words not found in embedding index will be all-zeros.\n"," # This includes the representation for \"padding\" and \"OOV\"\n"," embedding_matrix[i] = embedding_vector\n"," hits += 1\n"," else:\n"," misses += 1\n","print(\"Converted %d words (%d misses)\" % (hits, misses))"],"execution_count":23,"outputs":[{"output_type":"stream","text":["Converted 1986 words (14 misses)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"dqs9alXNqjP-"},"source":["**Embedding Layer**"]},{"cell_type":"code","metadata":{"id":"7Cl0uJvjg-FQ","executionInfo":{"status":"ok","timestamp":1621784189164,"user_tz":-330,"elapsed":9,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["embedding_layer = tf.keras.layers.Embedding(\n"," NUM_TOKENS,\n"," EMBEDDING_DIM,\n"," embeddings_initializer=tf.keras.initializers.Constant(embedding_matrix),\n"," mask_zero=True,\n"," trainable=False,\n",")"],"execution_count":24,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"sy8hn5H8qdq_"},"source":["**Creating Model**"]},{"cell_type":"code","metadata":{"id":"HoUndIO1gp1A","executionInfo":{"status":"ok","timestamp":1621784189164,"user_tz":-330,"elapsed":9,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["model = tf.keras.Sequential([\n"," encoder,\n"," embedding_layer,\n"," tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64)),\n"," tf.keras.layers.Dense(64, activation='relu'),\n"," tf.keras.layers.Dense(1)\n","])"],"execution_count":25,"outputs":[]},{"cell_type":"code","metadata":{"id":"5zXVR0JUolSu","executionInfo":{"status":"ok","timestamp":1621784194801,"user_tz":-330,"elapsed":12,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["model.compile(loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),\n"," optimizer=tf.keras.optimizers.Adam(1e-4),\n"," metrics=['accuracy'])"],"execution_count":27,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"iwuU_3xXrJJN"},"source":["**Training the Model**"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nypaJMSropay","executionInfo":{"status":"ok","timestamp":1621784441890,"user_tz":-330,"elapsed":247100,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"dba894ab-aee3-422f-b63c-c2bf2132ce13"},"source":["history = model.fit(train_dataset, epochs=8,\n"," validation_data=test_dataset,\n"," validation_steps=30)"],"execution_count":28,"outputs":[{"output_type":"stream","text":["Epoch 1/8\n","391/391 [==============================] - 37s 79ms/step - loss: 0.6162 - accuracy: 0.6240 - val_loss: 0.4816 - val_accuracy: 0.7365\n","Epoch 2/8\n","391/391 [==============================] - 29s 74ms/step - loss: 0.4427 - accuracy: 0.7872 - val_loss: 0.3920 - val_accuracy: 0.8156\n","Epoch 3/8\n","391/391 [==============================] - 30s 75ms/step - loss: 0.3912 - accuracy: 0.8193 - val_loss: 0.3745 - val_accuracy: 0.8318\n","Epoch 4/8\n","391/391 [==============================] - 30s 76ms/step - loss: 0.3431 - accuracy: 0.8455 - val_loss: 0.3418 - val_accuracy: 0.8448\n","Epoch 5/8\n","391/391 [==============================] - 30s 75ms/step - loss: 0.3187 - accuracy: 0.8559 - val_loss: 0.3393 - val_accuracy: 0.8568\n","Epoch 6/8\n","391/391 [==============================] - 30s 75ms/step - loss: 0.3011 - accuracy: 0.8665 - val_loss: 0.3363 - val_accuracy: 0.8714\n","Epoch 7/8\n","391/391 [==============================] - 30s 74ms/step - loss: 0.2766 - accuracy: 0.8809 - val_loss: 0.3457 - val_accuracy: 0.8693\n","Epoch 8/8\n","391/391 [==============================] - 30s 75ms/step - loss: 0.2637 - accuracy: 0.8883 - val_loss: 0.3133 - val_accuracy: 0.8667\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"XBkBVhHIujlt","executionInfo":{"status":"ok","timestamp":1621784441892,"user_tz":-330,"elapsed":16,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}}},"source":["import matplotlib.pyplot as plt\n","\n","\n","def plot_graphs(history, metric):\n"," plt.plot(history.history[metric])\n"," plt.plot(history.history['val_'+metric], '')\n"," plt.xlabel(\"Epochs\")\n"," plt.ylabel(metric)\n"," plt.legend([metric, 'val_'+metric])"],"execution_count":29,"outputs":[]},{"cell_type":"code","metadata":{"id":"9uKoavW5ulK3","colab":{"base_uri":"https://localhost:8080/","height":518},"executionInfo":{"status":"ok","timestamp":1621784441893,"user_tz":-330,"elapsed":13,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"15fc8dba-c8dd-48db-9c6b-4370e5bc0ed4"},"source":["plt.figure(figsize=(16, 8))\n","plt.subplot(1, 2, 1)\n","plot_graphs(history, 'accuracy')\n","plt.ylim(None, 1)\n","plt.subplot(1, 2, 2)\n","plot_graphs(history, 'loss')\n","plt.ylim(0, None)"],"execution_count":30,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(0.0, 0.5706837952136994)"]},"metadata":{"tags":[]},"execution_count":30},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"D952-P6trG1A"},"source":["**Evaluating the Model**"]},{"cell_type":"code","metadata":{"id":"o9kLgeCirG1c","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1621784457617,"user_tz":-330,"elapsed":15734,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"3a6918a7-3e3e-4fbf-c008-155392f9fe5a"},"source":["test_loss, test_acc = model.evaluate(test_dataset)\n","\n","print('Test Loss:', test_loss)\n","print('Test Accuracy:', test_acc)"],"execution_count":31,"outputs":[{"output_type":"stream","text":["391/391 [==============================] - 16s 41ms/step - loss: 0.3124 - accuracy: 0.8615\n","Test Loss: 0.31243282556533813\n","Test Accuracy: 0.8614799976348877\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"8umQOlbHrG1g"},"source":["**Sample Text Prediction**"]},{"cell_type":"code","metadata":{"id":"A-vr_MGZrG1h","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1621785960039,"user_tz":-330,"elapsed":401,"user":{"displayName":"Rishav Bikarwar","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiHinY9Nlex6bNMcBzxrSZkv7g7HVbwSVorR9L2aw=s64","userId":"04862150717333708444"}},"outputId":"99f87eef-d589-4a36-cccb-f545238e9818"},"source":["sample_text_1 = ('This movie was a complete disaster. Acting from the lead actor was not that bad. ' \n"," 'But the storyline was poor. Why did then even thought of making such a ridiculous movie?')\n","predictions = model.predict(np.array([sample_text_1]))\n","print(predictions)"],"execution_count":39,"outputs":[{"output_type":"stream","text":["[[-4.700093]]\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"i6TOOPH9-MNd"},"source":[""],"execution_count":null,"outputs":[]}]} \ No newline at end of file diff --git a/Assignment_4/Team_1_Assignment_4.ipynb b/Assignment_4/Team_1_Assignment_4.ipynb deleted file mode 100644 index 6654c3a..0000000 --- a/Assignment_4/Team_1_Assignment_4.ipynb +++ /dev/null @@ -1,2736 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Team-1_Assignment-4.ipynb", - "provenance": [], - "authorship_tag": "ABX9TyNvcxph+b9rGUW18/FNda0B", - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - }, - "accelerator": "GPU", - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "4ad78aefbff84edebff75c2bf2c74d40": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_2da75a9b724f4f28a46f8170bdc32531", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_884bf4a023e8484bbbeaa70c20b4ec42", - "IPY_MODEL_ae83be5c7169469b909990be9addcc57" - ] - } - }, - "2da75a9b724f4f28a46f8170bdc32531": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "884bf4a023e8484bbbeaa70c20b4ec42": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_5fb1868bcd8b443b988f998b196f1d66", - "_dom_classes": [], - "description": "Dl Completed...: 100%", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_7c2e054365bb46cf92c9ddf08788f0ad" - } - }, - "ae83be5c7169469b909990be9addcc57": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_22959b1ad40c4aa2b37bb88d2aa76d13", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:01<00:00, 1.59s/ url]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_706074f3515b45bdb8a5f7cf0f70d3a8" - } - }, - "5fb1868bcd8b443b988f998b196f1d66": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "7c2e054365bb46cf92c9ddf08788f0ad": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "22959b1ad40c4aa2b37bb88d2aa76d13": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "706074f3515b45bdb8a5f7cf0f70d3a8": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ada8db9b412641d3bd1687721f594b87": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_af55377115fe4861b982cadddfffbe81", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_27fe16e87a674938b1201cfda3923287", - "IPY_MODEL_29f862ac257d4f28a959f6345dbfa3cd" - ] - } - }, - "af55377115fe4861b982cadddfffbe81": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "27fe16e87a674938b1201cfda3923287": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_d9e3d2ad1c4c425898332157a800dbb3", - "_dom_classes": [], - "description": "Dl Size...: 100%", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_1de46342cae247908351d7dd4add92bd" - } - }, - "29f862ac257d4f28a959f6345dbfa3cd": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_1d52bab99f23409f98630325d9efa14d", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 80/80 [00:01<00:00, 51.18 MiB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_905b14471b3643b58ba3830fa174f86c" - } - }, - "d9e3d2ad1c4c425898332157a800dbb3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "1de46342cae247908351d7dd4add92bd": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1d52bab99f23409f98630325d9efa14d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "905b14471b3643b58ba3830fa174f86c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "09300165c1894bd3a7b78c87fb250511": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_0149d8bb372343d283bb1829f96e28f4", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_4a26c23cc0824442ac0dcdd609992beb", - "IPY_MODEL_c007626f2c5e421abc2a4887a461e037" - ] - } - }, - "0149d8bb372343d283bb1829f96e28f4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "4a26c23cc0824442ac0dcdd609992beb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_0c816db6f8b34683b5aef0ac56f66072", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "info", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_e0cacdf1eb5a44b78a4f66335be30317" - } - }, - "c007626f2c5e421abc2a4887a461e037": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_1d126277a2c44684a376962bbdfb56f6", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 25000/0 [00:12<00:00, 3739.95 examples/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_a02d50a7ae384886a967182e6981c44c" - } - }, - "0c816db6f8b34683b5aef0ac56f66072": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "e0cacdf1eb5a44b78a4f66335be30317": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1d126277a2c44684a376962bbdfb56f6": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "a02d50a7ae384886a967182e6981c44c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1d361f1e76bc4c998b224c8416fc8a16": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_5b1315b6fd254acb94b58f87982f24aa", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_6cdcb40c2f5c46b28729a3520acb20a1", - "IPY_MODEL_ee43cf31a9f345eca70cc73227c5a169" - ] - } - }, - "5b1315b6fd254acb94b58f87982f24aa": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "6cdcb40c2f5c46b28729a3520acb20a1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_6badcfd59faa48a793e71e27098d8f3d", - "_dom_classes": [], - "description": " 56%", - "_model_name": "FloatProgressModel", - "bar_style": "danger", - "max": 25000, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 13935, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_c2ceb26415204c9a852c94a0fcb53383" - } - }, - "ee43cf31a9f345eca70cc73227c5a169": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_089001ea663c4789b2fe323feb01d247", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 13935/25000 [00:00<00:00, 139348.14 examples/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b0a27c6b82694ff992e8e97bfa984478" - } - }, - "6badcfd59faa48a793e71e27098d8f3d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "c2ceb26415204c9a852c94a0fcb53383": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "089001ea663c4789b2fe323feb01d247": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "b0a27c6b82694ff992e8e97bfa984478": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "a9c4cc19d9dc4d40a3b17631d7448daa": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_f918a91dea72484e97e82e36d01932af", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_c6bd265dcadc4e9bb12b8c58a5db57ec", - "IPY_MODEL_305d41b438fb449b939b51cf6690c046" - ] - } - }, - "f918a91dea72484e97e82e36d01932af": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c6bd265dcadc4e9bb12b8c58a5db57ec": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_f8d5981f5ea94bcc87dc57538e5bce29", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "info", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_df89b9803f144e3890eddf8e16c7db0e" - } - }, - "305d41b438fb449b939b51cf6690c046": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_68387809e9794b8892a6db66d5371555", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 25000/0 [00:12<00:00, 3879.71 examples/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_72e10b7692aa4b39b6c620496ff7cefb" - } - }, - "f8d5981f5ea94bcc87dc57538e5bce29": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "df89b9803f144e3890eddf8e16c7db0e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "68387809e9794b8892a6db66d5371555": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "72e10b7692aa4b39b6c620496ff7cefb": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "5b4f922e27d5488bafed266090322917": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_84d2f5ac34444b40a4d7a2bb2a952078", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_5c8868e32d1a42269361c8e628870217", - "IPY_MODEL_9c8858a60d48487aab7c5b6a6ae61187" - ] - } - }, - "84d2f5ac34444b40a4d7a2bb2a952078": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "5c8868e32d1a42269361c8e628870217": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_11d33dcc576b4c2199d3f9b0cac7f73d", - "_dom_classes": [], - "description": " 49%", - "_model_name": "FloatProgressModel", - "bar_style": "danger", - "max": 25000, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 12220, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_6afb891fccf24421bce1978a7fc244c1" - } - }, - "9c8858a60d48487aab7c5b6a6ae61187": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_ff0c7ee1bdc2406797f806967f179b44", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 12220/25000 [00:00<00:00, 122197.79 examples/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_eee3640504d847a4b820e8008c02aa41" - } - }, - "11d33dcc576b4c2199d3f9b0cac7f73d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "6afb891fccf24421bce1978a7fc244c1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ff0c7ee1bdc2406797f806967f179b44": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "eee3640504d847a4b820e8008c02aa41": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c40037b21be849b1802af03736a9e284": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_5c33ea7a8a0b4f749ce3d454c51ac1ed", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_ac68b1dacf324d7593e74366a0e7a67c", - "IPY_MODEL_c3970b6ca46e4a39b0916698e1f2047e" - ] - } - }, - "5c33ea7a8a0b4f749ce3d454c51ac1ed": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ac68b1dacf324d7593e74366a0e7a67c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_4fecb9db954b4e1682ac498bc1d86156", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "info", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_db67c3ee1b4540d4973df43d2aa3f5ab" - } - }, - "c3970b6ca46e4a39b0916698e1f2047e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_dcf12272a1ef4748b7e0da3913c64cb3", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 50000/0 [00:17<00:00, 3904.65 examples/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_f9096cc21ab840a08c2a2a381e2ff40b" - } - }, - "4fecb9db954b4e1682ac498bc1d86156": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "db67c3ee1b4540d4973df43d2aa3f5ab": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "dcf12272a1ef4748b7e0da3913c64cb3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "f9096cc21ab840a08c2a2a381e2ff40b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "dda52d9f72e4459daf5aa8ae0a591b2a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_613af5ad3b1743a0a6602ac6f24b72c1", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_1aba18bef74746fb8d1d0b10977a4407", - "IPY_MODEL_24a2bb51bebf4be191eb3705fd59a669" - ] - } - }, - "613af5ad3b1743a0a6602ac6f24b72c1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1aba18bef74746fb8d1d0b10977a4407": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_fe86ad0ecefd414da364b9b1155c0dd3", - "_dom_classes": [], - "description": " 64%", - "_model_name": "FloatProgressModel", - "bar_style": "danger", - "max": 50000, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 32213, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3f1a46aaa8cd471189b401814aedf104" - } - }, - "24a2bb51bebf4be191eb3705fd59a669": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_7227ac721a2942cfbbc0282f0ac100da", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 32213/50000 [00:00<00:00, 79302.13 examples/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_f744483bfb4841a392b6255d8f48c763" - } - }, - "fe86ad0ecefd414da364b9b1155c0dd3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "3f1a46aaa8cd471189b401814aedf104": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "7227ac721a2942cfbbc0282f0ac100da": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "f744483bfb4841a392b6255d8f48c763": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - } - } - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "zn5lhb2v_YZC" - }, - "source": [ - "#Wikipedia Simplifier Assignment 4 (Sentiment classification using tesorflow)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "FNiDkDht-Ulx" - }, - "source": [ - "\n", - "\n", - "---\n", - "\n", - "\n", - "**Team 1:
**\n", - "Vaibhav goyal
\n", - "Alisha
\n", - "kajal deep\n", - "\n", - "\n", - "---\n", - "\n", - "\n", - "\n", - "Mentors:
\n", - "Ananya Gupta
\n", - "Rishabh dugaye\n", - "\n", - "\n", - "---\n", - "\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Mep1UYlG0vme" - }, - "source": [ - "# importing neccesary libraries\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import tensorflow as tf\n", - "import tensorflow_datasets as tfds\n" - ], - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 405, - "referenced_widgets": [ - "4ad78aefbff84edebff75c2bf2c74d40", - "2da75a9b724f4f28a46f8170bdc32531", - "884bf4a023e8484bbbeaa70c20b4ec42", - "ae83be5c7169469b909990be9addcc57", - "5fb1868bcd8b443b988f998b196f1d66", - "7c2e054365bb46cf92c9ddf08788f0ad", - "22959b1ad40c4aa2b37bb88d2aa76d13", - "706074f3515b45bdb8a5f7cf0f70d3a8", - "ada8db9b412641d3bd1687721f594b87", - "af55377115fe4861b982cadddfffbe81", - "27fe16e87a674938b1201cfda3923287", - "29f862ac257d4f28a959f6345dbfa3cd", - "d9e3d2ad1c4c425898332157a800dbb3", - "1de46342cae247908351d7dd4add92bd", - "1d52bab99f23409f98630325d9efa14d", - "905b14471b3643b58ba3830fa174f86c", - "09300165c1894bd3a7b78c87fb250511", - "0149d8bb372343d283bb1829f96e28f4", - "4a26c23cc0824442ac0dcdd609992beb", - "c007626f2c5e421abc2a4887a461e037", - "0c816db6f8b34683b5aef0ac56f66072", - "e0cacdf1eb5a44b78a4f66335be30317", - "1d126277a2c44684a376962bbdfb56f6", - "a02d50a7ae384886a967182e6981c44c", - "1d361f1e76bc4c998b224c8416fc8a16", - "5b1315b6fd254acb94b58f87982f24aa", - "6cdcb40c2f5c46b28729a3520acb20a1", - "ee43cf31a9f345eca70cc73227c5a169", - "6badcfd59faa48a793e71e27098d8f3d", - "c2ceb26415204c9a852c94a0fcb53383", - "089001ea663c4789b2fe323feb01d247", - "b0a27c6b82694ff992e8e97bfa984478", - "a9c4cc19d9dc4d40a3b17631d7448daa", - "f918a91dea72484e97e82e36d01932af", - "c6bd265dcadc4e9bb12b8c58a5db57ec", - "305d41b438fb449b939b51cf6690c046", - "f8d5981f5ea94bcc87dc57538e5bce29", - "df89b9803f144e3890eddf8e16c7db0e", - "68387809e9794b8892a6db66d5371555", - "72e10b7692aa4b39b6c620496ff7cefb", - "5b4f922e27d5488bafed266090322917", - "84d2f5ac34444b40a4d7a2bb2a952078", - "5c8868e32d1a42269361c8e628870217", - "9c8858a60d48487aab7c5b6a6ae61187", - "11d33dcc576b4c2199d3f9b0cac7f73d", - "6afb891fccf24421bce1978a7fc244c1", - "ff0c7ee1bdc2406797f806967f179b44", - "eee3640504d847a4b820e8008c02aa41", - "c40037b21be849b1802af03736a9e284", - "5c33ea7a8a0b4f749ce3d454c51ac1ed", - "ac68b1dacf324d7593e74366a0e7a67c", - "c3970b6ca46e4a39b0916698e1f2047e", - "4fecb9db954b4e1682ac498bc1d86156", - "db67c3ee1b4540d4973df43d2aa3f5ab", - "dcf12272a1ef4748b7e0da3913c64cb3", - "f9096cc21ab840a08c2a2a381e2ff40b", - "dda52d9f72e4459daf5aa8ae0a591b2a", - "613af5ad3b1743a0a6602ac6f24b72c1", - "1aba18bef74746fb8d1d0b10977a4407", - "24a2bb51bebf4be191eb3705fd59a669", - "fe86ad0ecefd414da364b9b1155c0dd3", - "3f1a46aaa8cd471189b401814aedf104", - "7227ac721a2942cfbbc0282f0ac100da", - "f744483bfb4841a392b6255d8f48c763" - ] - }, - "id": "5_-UaYTr1Iwk", - "outputId": "721399c7-472f-4b52-a65c-d6d5ac21f43f" - }, - "source": [ - "dataset, info = tfds.load('imdb_reviews', with_info=True, as_supervised=True) # getting the dataset preprocessed using tfds\n", - "train_dataset, test_dataset = dataset['train'], dataset['test']\n", - "train_dataset.element_spec" - ], - "execution_count": 2, - "outputs": [ - { - "output_type": "stream", - "text": [ - "\u001b[1mDownloading and preparing dataset imdb_reviews/plain_text/1.0.0 (download: 80.23 MiB, generated: Unknown size, total: 80.23 MiB) to /root/tensorflow_datasets/imdb_reviews/plain_text/1.0.0...\u001b[0m\n" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4ad78aefbff84edebff75c2bf2c74d40", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=1.0, bar_style='info', description='Dl Completed...', max=1.0, style=Progre…" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ada8db9b412641d3bd1687721f594b87", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=1.0, bar_style='info', description='Dl Size...', max=1.0, style=ProgressSty…" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "09300165c1894bd3a7b78c87fb250511", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "\rShuffling and writing examples to /root/tensorflow_datasets/imdb_reviews/plain_text/1.0.0.incompleteCBJG8M/imdb_reviews-train.tfrecord\n" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "1d361f1e76bc4c998b224c8416fc8a16", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=25000.0), HTML(value='')))" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "\r" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a9c4cc19d9dc4d40a3b17631d7448daa", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "\rShuffling and writing examples to /root/tensorflow_datasets/imdb_reviews/plain_text/1.0.0.incompleteCBJG8M/imdb_reviews-test.tfrecord\n" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "5b4f922e27d5488bafed266090322917", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=25000.0), HTML(value='')))" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "\r" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c40037b21be849b1802af03736a9e284", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "\rShuffling and writing examples to /root/tensorflow_datasets/imdb_reviews/plain_text/1.0.0.incompleteCBJG8M/imdb_reviews-unsupervised.tfrecord\n" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "dda52d9f72e4459daf5aa8ae0a591b2a", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=50000.0), HTML(value='')))" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "WARNING:absl:Dataset is using deprecated text encoder API which will be removed soon. Please use the plain_text version of the dataset and migrate to `tensorflow_text`.\n" - ], - "name": "stderr" - }, - { - "output_type": "stream", - "text": [ - "\u001b[1mDataset imdb_reviews downloaded and prepared to /root/tensorflow_datasets/imdb_reviews/plain_text/1.0.0. Subsequent calls will reuse this data.\u001b[0m\n", - "\r" - ], - "name": "stdout" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "(TensorSpec(shape=(), dtype=tf.string, name=None),\n", - " TensorSpec(shape=(), dtype=tf.int64, name=None))" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 2 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "6juiBOxe1Mpp", - "outputId": "a8c6ec18-5ee1-4483-8176-823ef376c944" - }, - "source": [ - "for example, label in train_dataset.take(1): # printing an example entry of dataset\n", - " print('Text: ', example.numpy())\n", - " print('Label: ', label.numpy())\n", - "\n", - "# shuffling the train dataset\n", - "\n", - "BUFFER_SIZE = 10000 \n", - "BATCH_SIZE = 64\n", - "\n", - "train_dataset = train_dataset.shuffle(BUFFER_SIZE).batch(BATCH_SIZE).prefetch(tf.data.AUTOTUNE)\n", - "test_dataset = test_dataset.batch(BATCH_SIZE).prefetch(tf.data.AUTOTUNE)\n", - "\n", - "for example, label in train_dataset.take(1): # dataset after shuffling and coverted into batches\n", - " print('Text: ', example.numpy()[0:3])\n", - " print()\n", - " print('Label: ', label.numpy()[0:3])" - ], - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Text: b\"This was an absolutely terrible movie. Don't be lured in by Christopher Walken or Michael Ironside. Both are great actors, but this must simply be their worst role in history. Even their great acting could not redeem this movie's ridiculous storyline. This movie is an early nineties US propaganda piece. The most pathetic scenes were those when the Columbian rebels were making their cases for revolutions. Maria Conchita Alonso appeared phony, and her pseudo-love affair with Walken was nothing but a pathetic emotional plug in a movie that was devoid of any real meaning. I am disappointed that there are movies like this, ruining actor's like Christopher Walken's good name. I could barely sit through it.\"\n", - "Label: 0\n", - "Text: [b'I am not going to spoil the contents to anyone, who has not yet watched this humble masterpiece by Kay Pollak.

A world famous conductor brilliantly played by Michael Nyqvist seeks peace from stress by moving back to his childhood village. The villagers, who has followed the genius in silence, are slowly tempting him to share of his greatness.

Each role in this movie, has a very specific purpose and shows a remarkable potential in each of the actors playing their own chord in short but precise words, a symphony of love.

Not love in the sense of relationship, but in the tone of the spirit deeply buried within each of the characters, each revealing their own present story, their needs, their skeletons, desires and much more.

I shall not forget to mention, the two main parts played by Frida Hallgren and Michael Nyqvist, whose dramas are played in unforgettable harmonies of emotional feedback. They touch each other with a pain connected in their own disability to love themselves.

Michael Nyqvist is really put to the test here in a very difficult setup, in one of those movies that either end up as catastrophic or fantastic. And fantastic it became from start to end, not one second less or more than enough, you are left with a feeling of change and a taste for more.

To this day, definitely one of the best movies I have had the pleasure of watching.'\n", - " b\"It seems that several of the people who have reviewed this movie only watched it in the first place because it was filmed near where they live. How's that for a ringing endorsement? If this movie was filmed near where I lived I wouldn't be mentioning it in my review. It is horrid! Several reviews state that this film is a spoof or tongue-in-cheek horror movie, it is neither. It is sad to see this film reviewed as a comedy as that makes it not only a bad attempt at a horror film but as a comedy as well. I did laugh though, at how unbelievably bad the film was.

This movie has 2 good things going for it, the mask and the weapon of choice, unfortunately it would have been more interesting watching an hour and a half of the mask and weapon laying on a table then watching this garbage. The social commentary behind the film is also laughable, juvenile and stupid. Don't bother with this movie, you've already wasted time reading this review don't waste anymore on this movie. Arrggghhh! It's infuriating that movies like this even get made. I was expecting the entire cast a crew to be credited to Alan Smithee, a name used when a person, usually a director, doesn't want to be credited with a movie because it's so bad.

There is nothing redeeming in this movie, I spent $1.19 on the rental and feel I was ripped off. Avoid. 1 out of 10\"\n", - " b\"When I first saw this show, I thought it looked interesting. I watched it, saw how it revolved around Sarah, like the character sees the world...revolving around her. I got it, but wasn't laughing very much.

Onstage and in her show, she's racist, crude, insensitive and hugely self-centered. I didn't get her at first, and took it all at face value. Then I got to see her movie, Jesus is Magic. I think that served as a Sarah Silverman primer for me, explaining to me just what 'language' she's speaking. She's like Marilyn Manson, working so hard to give us a faceful of horrible ideas and images, but you eventually realise it isn't an assault, it's a statement. And once you understand that, you find you're glad someone's finally giving it to you straight.

I don't mean to suggest only smart people will understand, or that to hate this show is to prove your idiocy. While I like a lot of 'smart' shows, I still to this day do not see the humor of Curb Your Enthusiasm. I get the impression that it's good, but I just don't get it. Many people will never get the Sarah Silverman Program, but I'm glad I eventually came around.

The creators of this show do work hard, every episode is loaded not just with dialogue and plot, but with songs, or dream sequences, production numbers. These people aren't putting together something to fill a time slot and please advertisers, they appear to be on a mission to make the best show they can put together. If I was to predict the future of this show, I'd say it will go the way of Arrested Development and Freaks & Geeks. It will get canceled before it's time and live on in fans' hearts and on DVD. But take heart, SSP creators, your audience IS out there, and we'll be watching for as long as they let you make the show.\"]\n", - "\n", - "Label: [1 0 1]\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "dHbvi8Cq4y_j", - "outputId": "d0c4dc8b-e56c-475a-d9eb-67e4cd8165f5" - }, - "source": [ - "# making encoder to tokenize the data and add padding\n", - "\n", - "VOCAB_SIZE = 1000\n", - "encoder = tf.keras.layers.experimental.preprocessing.TextVectorization(max_tokens=VOCAB_SIZE)\n", - "encoder.adapt(train_dataset.map(lambda text, label:text))\n", - "vocab = np.array(encoder.get_vocabulary())\n", - "print(vocab[0:20])\n", - "\n", - "encoded_example = encoder(example)[0:3].numpy() #printing a sample encoding example\n", - "print(encoded_example)" - ], - "execution_count": 4, - "outputs": [ - { - "output_type": "stream", - "text": [ - "['' '[UNK]' 'the' 'and' 'a' 'of' 'to' 'is' 'in' 'it' 'i' 'this' 'that'\n", - " 'br' 'was' 'as' 'for' 'with' 'movie' 'but']\n", - "[[ 10 237 22 ... 0 0 0]\n", - " [ 9 181 12 ... 0 0 0]\n", - " [ 51 10 86 ... 0 0 0]]\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "5rTgsZt28hRB", - "outputId": "5d4cf252-09d3-43a3-908f-cdb01ceff5ff" - }, - "source": [ - "# tokenization removes punctuation and some words that are not as frequent.\n", - "for n in range(3):\n", - " print(\"Original: \", example[n].numpy())\n", - " print(\"Round-trip: \", \" \".join(vocab[encoded_example[n]]))\n", - " print()" - ], - "execution_count": 5, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Original: b'I am not going to spoil the contents to anyone, who has not yet watched this humble masterpiece by Kay Pollak.

A world famous conductor brilliantly played by Michael Nyqvist seeks peace from stress by moving back to his childhood village. The villagers, who has followed the genius in silence, are slowly tempting him to share of his greatness.

Each role in this movie, has a very specific purpose and shows a remarkable potential in each of the actors playing their own chord in short but precise words, a symphony of love.

Not love in the sense of relationship, but in the tone of the spirit deeply buried within each of the characters, each revealing their own present story, their needs, their skeletons, desires and much more.

I shall not forget to mention, the two main parts played by Frida Hallgren and Michael Nyqvist, whose dramas are played in unforgettable harmonies of emotional feedback. They touch each other with a pain connected in their own disability to love themselves.

Michael Nyqvist is really put to the test here in a very difficult setup, in one of those movies that either end up as catastrophic or fantastic. And fantastic it became from start to end, not one second less or more than enough, you are left with a feeling of change and a taste for more.

To this day, definitely one of the best movies I have had the pleasure of watching.'\n", - "Round-trip: i am not going to [UNK] the [UNK] to anyone who has not yet watched this [UNK] [UNK] by [UNK] [UNK] br a world famous [UNK] [UNK] played by michael [UNK] [UNK] [UNK] from [UNK] by moving back to his [UNK] [UNK] the [UNK] who has [UNK] the [UNK] in [UNK] are [UNK] [UNK] him to [UNK] of his [UNK] br each role in this movie has a very [UNK] [UNK] and shows a [UNK] potential in each of the actors playing their own [UNK] in short but [UNK] words a [UNK] of [UNK] br not love in the sense of relationship but in the [UNK] of the [UNK] [UNK] [UNK] within each of the characters each [UNK] their own present story their needs their [UNK] [UNK] and much [UNK] br i [UNK] not forget to mention the two main parts played by [UNK] [UNK] and michael [UNK] whose [UNK] are played in [UNK] [UNK] of emotional [UNK] they [UNK] each other with a [UNK] [UNK] in their own [UNK] to love [UNK] br michael [UNK] is really put to the [UNK] here in a very difficult [UNK] in one of those movies that either end up as [UNK] or fantastic and fantastic it became from start to end not one second less or more than enough you are left with a feeling of change and a [UNK] for [UNK] br to this day definitely one of the best movies i have had the [UNK] of watching \n", - "\n", - "Original: b\"It seems that several of the people who have reviewed this movie only watched it in the first place because it was filmed near where they live. How's that for a ringing endorsement? If this movie was filmed near where I lived I wouldn't be mentioning it in my review. It is horrid! Several reviews state that this film is a spoof or tongue-in-cheek horror movie, it is neither. It is sad to see this film reviewed as a comedy as that makes it not only a bad attempt at a horror film but as a comedy as well. I did laugh though, at how unbelievably bad the film was.

This movie has 2 good things going for it, the mask and the weapon of choice, unfortunately it would have been more interesting watching an hour and a half of the mask and weapon laying on a table then watching this garbage. The social commentary behind the film is also laughable, juvenile and stupid. Don't bother with this movie, you've already wasted time reading this review don't waste anymore on this movie. Arrggghhh! It's infuriating that movies like this even get made. I was expecting the entire cast a crew to be credited to Alan Smithee, a name used when a person, usually a director, doesn't want to be credited with a movie because it's so bad.

There is nothing redeeming in this movie, I spent $1.19 on the rental and feel I was ripped off. Avoid. 1 out of 10\"\n", - "Round-trip: it seems that several of the people who have [UNK] this movie only watched it in the first place because it was filmed near where they live [UNK] that for a [UNK] [UNK] if this movie was filmed near where i [UNK] i wouldnt be [UNK] it in my review it is [UNK] several reviews [UNK] that this film is a [UNK] or [UNK] horror movie it is [UNK] it is sad to see this film [UNK] as a comedy as that makes it not only a bad attempt at a horror film but as a comedy as well i did laugh though at how [UNK] bad the film [UNK] br this movie has 2 good things going for it the [UNK] and the [UNK] of [UNK] unfortunately it would have been more interesting watching an hour and a half of the [UNK] and [UNK] [UNK] on a [UNK] then watching this [UNK] the [UNK] [UNK] behind the film is also [UNK] [UNK] and stupid dont [UNK] with this movie youve already [UNK] time reading this review dont waste [UNK] on this movie [UNK] its [UNK] that movies like this even get made i was expecting the entire cast a [UNK] to be [UNK] to [UNK] [UNK] a name used when a person usually a director doesnt want to be [UNK] with a movie because its so [UNK] br there is nothing [UNK] in this movie i [UNK] [UNK] on the [UNK] and feel i was [UNK] off avoid 1 out of 10 \n", - "\n", - "Original: b\"When I first saw this show, I thought it looked interesting. I watched it, saw how it revolved around Sarah, like the character sees the world...revolving around her. I got it, but wasn't laughing very much.

Onstage and in her show, she's racist, crude, insensitive and hugely self-centered. I didn't get her at first, and took it all at face value. Then I got to see her movie, Jesus is Magic. I think that served as a Sarah Silverman primer for me, explaining to me just what 'language' she's speaking. She's like Marilyn Manson, working so hard to give us a faceful of horrible ideas and images, but you eventually realise it isn't an assault, it's a statement. And once you understand that, you find you're glad someone's finally giving it to you straight.

I don't mean to suggest only smart people will understand, or that to hate this show is to prove your idiocy. While I like a lot of 'smart' shows, I still to this day do not see the humor of Curb Your Enthusiasm. I get the impression that it's good, but I just don't get it. Many people will never get the Sarah Silverman Program, but I'm glad I eventually came around.

The creators of this show do work hard, every episode is loaded not just with dialogue and plot, but with songs, or dream sequences, production numbers. These people aren't putting together something to fill a time slot and please advertisers, they appear to be on a mission to make the best show they can put together. If I was to predict the future of this show, I'd say it will go the way of Arrested Development and Freaks & Geeks. It will get canceled before it's time and live on in fans' hearts and on DVD. But take heart, SSP creators, your audience IS out there, and we'll be watching for as long as they let you make the show.\"\n", - "Round-trip: when i first saw this show i thought it looked interesting i watched it saw how it [UNK] around [UNK] like the character [UNK] the [UNK] around her i got it but wasnt [UNK] very [UNK] br [UNK] and in her show shes [UNK] [UNK] [UNK] and [UNK] [UNK] i didnt get her at first and took it all at face [UNK] then i got to see her movie [UNK] is [UNK] i think that [UNK] as a [UNK] [UNK] [UNK] for me [UNK] to me just what [UNK] shes [UNK] shes like [UNK] [UNK] working so hard to give us a [UNK] of horrible ideas and [UNK] but you eventually [UNK] it isnt an [UNK] its a [UNK] and once you understand that you find youre [UNK] [UNK] finally giving it to you [UNK] br i dont mean to [UNK] only [UNK] people will understand or that to hate this show is to [UNK] your [UNK] while i like a lot of [UNK] shows i still to this day do not see the humor of [UNK] your [UNK] i get the [UNK] that its good but i just dont get it many people will never get the [UNK] [UNK] [UNK] but im [UNK] i eventually came [UNK] br the [UNK] of this show do work hard every episode is [UNK] not just with dialogue and plot but with songs or dream sequences production [UNK] these people arent [UNK] together something to [UNK] a time [UNK] and please [UNK] they appear to be on a [UNK] to make the best show they can put together if i was to [UNK] the future of this show id say it will go the way of [UNK] development and [UNK] [UNK] it will get [UNK] before its time and live on in fans [UNK] and on dvd but take heart [UNK] [UNK] your audience is out there and well be watching for as long as they let you make the show \n", - "\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "mD1uVs1fDksV" - }, - "source": [ - "#Building the model\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "G1gPfcBg9tWR", - "outputId": "31d74b19-1704-4129-dd34-b7f2805c8b1a" - }, - "source": [ - "# defining the RNN model using Sequential()\n", - "\n", - "model = tf.keras.Sequential([\n", - " encoder,\n", - " tf.keras.layers.Embedding(\n", - " input_dim=len(encoder.get_vocabulary()),\n", - " output_dim=64,\n", - " mask_zero=True \n", - " ),\n", - " tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64)),\n", - " tf.keras.layers.Dense(64, activation='relu'),\n", - " tf.keras.layers.Dense(1)\n", - "])\n", - "\n", - "# passing an sample for checking the masking effect .\n", - "sample_text = ('This movie was cool. I really liked that movie. The animations and graphics are out of the world i definitely recommend that movie')\n", - "\n", - "predictions = model.predict(np.array([sample_text]))\n", - "print(predictions)\n", - "\n", - "padding = 'the'*2000\n", - "predictions = model.predict(np.array([sample_text, padding]))\n", - "print(predictions)" - ], - "execution_count": 6, - "outputs": [ - { - "output_type": "stream", - "text": [ - "[[-0.00897167]]\n", - "[[-0.00897167]\n", - " [ 0.00113963]]\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "zTpc_jKq_t2-", - "outputId": "a57a35fd-bcc2-4e66-ffed-7b25b7be772f" - }, - "source": [ - "# comling model by defining loss function and optimier function\n", - "\n", - "model.compile(\n", - " loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),\n", - " optimizer=tf.keras.optimizers.Adam(1e-4),\n", - " metrics=['accuracy']\n", - ")\n", - "\n", - "model.summary()" - ], - "execution_count": 7, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Model: \"sequential\"\n", - "_________________________________________________________________\n", - "Layer (type) Output Shape Param # \n", - "=================================================================\n", - "text_vectorization (TextVect (None, None) 0 \n", - "_________________________________________________________________\n", - "embedding (Embedding) (None, None, 64) 64000 \n", - "_________________________________________________________________\n", - "bidirectional (Bidirectional (None, 128) 66048 \n", - "_________________________________________________________________\n", - "dense (Dense) (None, 64) 8256 \n", - "_________________________________________________________________\n", - "dense_1 (Dense) (None, 1) 65 \n", - "=================================================================\n", - "Total params: 138,369\n", - "Trainable params: 138,369\n", - "Non-trainable params: 0\n", - "_________________________________________________________________\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yKeMOUvjDZcs" - }, - "source": [ - "#87.2% accuracy on train data" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "feTwn9LDA0eJ", - "outputId": "ab41785f-ef4a-4d90-a393-e7a5d570fdd8" - }, - "source": [ - "# training the model on training_dataset\n", - "\n", - "history = model.fit(train_dataset, epochs=10, validation_data=test_dataset, validation_steps=30)" - ], - "execution_count": 8, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Epoch 1/10\n", - "391/391 [==============================] - 38s 82ms/step - loss: 0.6820 - accuracy: 0.5135 - val_loss: 0.4819 - val_accuracy: 0.7474\n", - "Epoch 2/10\n", - "391/391 [==============================] - 30s 77ms/step - loss: 0.4431 - accuracy: 0.7900 - val_loss: 0.4110 - val_accuracy: 0.8005\n", - "Epoch 3/10\n", - "391/391 [==============================] - 30s 76ms/step - loss: 0.3653 - accuracy: 0.8471 - val_loss: 0.3587 - val_accuracy: 0.8266\n", - "Epoch 4/10\n", - "391/391 [==============================] - 30s 77ms/step - loss: 0.3419 - accuracy: 0.8529 - val_loss: 0.3382 - val_accuracy: 0.8594\n", - "Epoch 5/10\n", - "391/391 [==============================] - 31s 77ms/step - loss: 0.3257 - accuracy: 0.8624 - val_loss: 0.3308 - val_accuracy: 0.8453\n", - "Epoch 6/10\n", - "391/391 [==============================] - 30s 77ms/step - loss: 0.3057 - accuracy: 0.8680 - val_loss: 0.3256 - val_accuracy: 0.8557\n", - "Epoch 7/10\n", - "391/391 [==============================] - 30s 77ms/step - loss: 0.3014 - accuracy: 0.8719 - val_loss: 0.3215 - val_accuracy: 0.8547\n", - "Epoch 8/10\n", - "391/391 [==============================] - 30s 77ms/step - loss: 0.3022 - accuracy: 0.8717 - val_loss: 0.3217 - val_accuracy: 0.8589\n", - "Epoch 9/10\n", - "391/391 [==============================] - 30s 77ms/step - loss: 0.3001 - accuracy: 0.8734 - val_loss: 0.3200 - val_accuracy: 0.8646\n", - "Epoch 10/10\n", - "391/391 [==============================] - 30s 77ms/step - loss: 0.2981 - accuracy: 0.8722 - val_loss: 0.3217 - val_accuracy: 0.8620\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "VCkwrjYHDSyz" - }, - "source": [ - "#86.4% accuracy on test data" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "uWZ_2b6wDovP", - "outputId": "619b319e-d413-4297-e876-0d3ba17d7be1" - }, - "source": [ - "# checking loss on test_dataset\n", - "\n", - "test_loss, test_acc = model.evaluate(test_dataset)\n", - "print(\"Test loss: \", test_loss)\n", - "print(\"Test accuracy: \", test_acc)" - ], - "execution_count": 9, - "outputs": [ - { - "output_type": "stream", - "text": [ - "391/391 [==============================] - 15s 38ms/step - loss: 0.3193 - accuracy: 0.8642\n", - "Test loss: 0.3192571699619293\n", - "Test accuracy: 0.8641600012779236\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 515 - }, - "id": "G0QS7VxlCep3", - "outputId": "768a1357-4c25-474b-e110-2e468ba367bd" - }, - "source": [ - "# plotting the graphs \n", - "\n", - "def plot_graph(history, metric):\n", - " plt.plot(history.history[metric])\n", - " plt.plot(history.history['val_'+metric], '')\n", - " plt.xlabel(\"Epochs\")\n", - " plt.ylabel(metric)\n", - " plt.legend([metric, 'validation_'+metric])\n", - "\n", - "plt.figure(figsize=(16, 8))\n", - "plt.subplot(1, 2, 1)\n", - "plot_graph(history, 'accuracy')\n", - "plt.subplot(1, 2, 2)\n", - "plot_graph(history, 'loss')\n", - "plt.ylim(0, None)" - ], - "execution_count": 17, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "(0.0, 0.6578917190432548)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 17 - }, - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7YAAAHgCAYAAACRsvFbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3xV9f3H8dc3e5MNQiBh771UVOJeDBWVpYwKtlalttb+aKutq61Va22r1SJuBURcqAgqgjgQGRJk771CEgjZyc3398dJIMEAgdybe5O8n4/HfeTee875nk/QB5f3/Z7z/RhrLSIiIiIiIiJ1lZ+3CxARERERERGpCQVbERERERERqdMUbEVERERERKROU7AVERERERGROk3BVkREREREROo0BVsRERERERGp0wK8XYC7xMfH25SUFG+XISIi9cTy5csPWWsTvF1HXabPZhERcadTfTbXm2CbkpLCsmXLvF2GiIjUE8aYHd6uoa7TZ7OIiLjTqT6bdSmyiIiIiIiI1GkKtiIiIiIiIlKnKdiKiIiIiIhInVZv7rEVERERERGpSnFxMbt376agoMDbpUg1hISEkJSURGBgYLWPUbAVEREREZF6bffu3URGRpKSkoIxxtvlyClYa8nIyGD37t20bNmy2sfpUmQREREREanXCgoKiIuLU6itA4wxxMXFnfHsuoKtiIiIiIjUewq1dcfZ/LdSsBUREREREfGwiIgIb5dQrynYioiIiM8qLbW88d0OPl97wNuliIiID1OwFREREZ/l52d4+ZttvLp4u7dLERFxC2st9913H126dKFr16689dZbAOzbt4+LLrqIHj160KVLF7766itcLhfjxo07tu8///lPL1fvu7QqsoiIiPi01PaJvL54B3lFJYQF6Z8uIlIzD324hrV7s906ZqemUfx5cOdq7fvuu++ycuVK0tLSOHToEH379uWiiy5i2rRpXHnllfzxj3/E5XKRl5fHypUr2bNnD6tXrwbg8OHDbq27PtGMrYiIiPi01PYJFLlKWbwlw9uliIjU2Ndff83IkSPx9/encePGDBw4kKVLl9K3b19efvllHnzwQX788UciIyNp1aoVW7du5e6772bu3LlERUV5u3yfpa89RURExKf1axlLaKA/Czekc2nHxt4uR0TquOrOrNa2iy66iEWL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ZTiijKBpxJBsv0sBkCLbt29XQUGBxo4dKzPzuxykAeecampqtH37do0bN87vcgAAwFGiK3IXKsMRlRflKhjgP7/AQNHU1KSSkhJCLdqYmUpKSmjFBwCgnyPYdoE5bIGBiVCLjvidAACg/yPYdiE+hy1T/QAAAABAuiPYdqKusVm1kWam+gHQL0WjUb9LAAAA6FME2060TvVDsAWQapdffrmmT5+uk08+WYsWLZIkPfvsszrttNM0depUXXjhhZKkhoYGLViwQJMnT9aUKVP05JNPSpLy8/PbjrVs2TLNnz9fkjR//nzdfPPNmjlzpr7zne/ojTfe0Cc/+UlNmzZNZ511lt5//31JUktLi771rW/plFNO0ZQpU/SrX/1KL774oi6//PK24z7//PO64oor+uJ0AAAApASjIneCOWyBge/H/2+d1u/cl9JjTho5RD/8/MlH3Gfx4sUqLi5WY2OjTj/9dM2ZM0c33nijVq5cqXHjxikcDkuS7rnnHhUWFurdd9+VJO3du7fbz9++fbteffVVBYNB7du3Ty+//LJCoZBeeOEFffe739WTTz6pRYsWaevWrXr77bcVCoUUDodVVFSkr3/966qurlZZWZkeeughffWrXz32EwIAANBHCLadqKTFFoBH7r//fj311FOSpKqqKi1atEjnnXde21QzxcXFkqQXXnhBS5cubXtfUVFRt8eeO3eugsGgJKmurk7XXXedNm3aJDNTc3Nz23FvvvlmhUKhdp/3la98RX/4wx+0YMECrVq1SkuWLEnRTwwAAOA9gm0nKsMRFedlqiA7w+9SAHiku5ZVL7z00kt64YUXtGrVKuXm5mrWrFk69dRTtXHjxh4fI3kE345T1OTl5bW9/v73v68LLrhATz31lLZu3apZs2Yd8bgLFizQ5z//eWVnZ2vu3LltwRcAAKA/4B7bTlQy1Q8AD9TV1amoqEi5ubnauHGjXnvtNTU1NWnlypXasmWLJLV1Rb7ooov0wAMPtL23tSvy8OHDtWHDBsVisbaW364+a9SoUZKk3//+923rL7roIv36179uG2Cq9fNGjhypkSNH6t5779WCBQtS90MDAAD0AYJtJ+JT/RBsAaTW7NmzFY1GNXHiRC1cuFBnnnmmysrKtGjRIl155ZWaOnWq5s2bJ0m6++67tXfvXp1yyimaOnWqVqxYIUm67777dOmll+qss87Scccd1+Vnfec739Fdd92ladOmtRsl+YYbbtDo0aM1ZcoUTZ06VY8++mjbtmuuuUYVFRWaOHGiR2cAAADAG+ac87uGlJgxY4Zbs2bNMR8n2hLThO8/q787/3h9++IJKagMQLrYsGEDoe0Ibr31Vk2bNk3XX3+936X0uc5+N8xsrXNuhk8lDQipujYDACAd+drMTVQd7KprUjTmaLEFMKhMnz5deXl5+qd/+ie/SwEAAOg1gm0HTPUDYDBau3at3yUAAAAcNe6x7YCpfgAAAACgfyHYdlAZjigUMB1XmON3KQAAAACAHiDYdlAZjqi8KEfBgHW/MwAAAADAdwTbDqrCEY0uyfO7DAAAAABADzF4VAejinJ0wrACv8sAAAAAAPQQLbYd/J9rpuubF53odxkAoPz8fEnSzp07ddVVV3W6z6xZs9TdPKG/+MUvFIlE2pY/+9nPqra2NnWFAgAA+IxgCwBpbuTIkVq2bNlRv79jsH3mmWc0dOjQVJTWp6LRqN8lAACANEVXZACD058WSh+9m9pjjpgsXXJfl5sXLlyoiooK3XLLLZKkH/3oRwqFQlqxYoX27t2r5uZm3XvvvZozZ067923dulWXXnqp3nvvPTU2NmrBggX629/+pgkTJqixsbFtv6997WtavXq1GhsbddVVV+nHP/6x7r//fu3cuVMXXHCBSktLtWLFCo0dO1Zr1qxRaWmpfv7zn2vx4sWSpBtuuEF33HGHtm7dqksuuUTnnHOOXn31VY0aNUp//OMflZPT+Wjxv/nNb7Ro0SIdPHhQJ5xwgh5++GHl5uZq9+7duvnmm/Xhhx9Kkh588EGdddZZWrJkiX72s5/JzDRlyhQ9/PDDmj9/vi699NK2lun8/Hw1NDTopZde0ve//30VFRVp48aN+uCDD3T55ZerqqpKTU1Nuv3223XTTTdJkp599ll997vfVUtLi0pLS/X888/rpJNO0quvvqqysjLFYjGdeOKJWrVqlcrKyo7yDxkAAKQjgi0A9JF58+bpjjvuaAu2jz/+uJ577jnddtttGjJkiPbs2aMzzzxTl112mcw6H5n9wQcfVG5urjZs2KB33nlHp512Wtu2f/iHf1BxcbFaWlp04YUX6p133tFtt92mn//851qxYoVKS0vbHWvt2rV66KGH9Prrr8s5p5kzZ+r8889XUVGRNm3apMcee0y/+c1v9MUvflFPPvmkrr322k5ruvLKK3XjjTdKku6++2797ne/0ze+8Q3ddtttOv/88/XUU0+ppaVFDQ0NWrdune699169+uqrKi0tVTgc7va8vfnmm3rvvfc0btw4SdLixYtVXFysxsZGnX766frCF76gWCymG2+8UStXrtS4ceMUDocVCAR07bXX6pFHHtEdd9yhF154QVOnTiXUAgAwABFsAQxOR2hZ9cq0adP08ccfa+fOnaqurlZRUZFGjBihO++8UytXrlQgENCOHTu0e/dujRgxotNjrFy5UrfddpskacqUKZoyZUrbtscff1yLFi1SNBrVrl27tH79+nbbO3rllVd0xRVXKC8vPhL8lVdeqZdfflmXXXaZxo0bp1NPPVWSNH36dG3durXL47z33nu6++67VVtbq4aGBl188cWSpBdffFFLliyRJAWDQRUWFmrJkiWaO3duW8guLi7u9rydccYZbaFWku6//3499dRTkqSqqipt2rRJ1dXVOu+889r2az3uV7/6Vc2ZM0d33HGHFi9erAULFnT7eQAAoP8h2AJAH5o7d66WLVumjz76SPPmzdMjjzyi6upqrV27VhkZGRo7dqyampp6fdwtW7boZz/7mVavXq2ioiLNnz//qI7TKisrq+11MBhs1+W5o/nz5+vpp5/W1KlT9fvf/14vvfRSrz8vFAopFotJkmKxmA4ePNi2rTV4S9JLL72kF154QatWrVJubq5mzZp1xJ+zoqJCw4cP14svvqg33nhDjzzySK9rAwAA6Y/BowCgD82bN09Lly7VsmXLNHfuXNXV1WnYsGHKyMjQihUrtG3btiO+/7zzztOjjz4qKd5S+s4770iS9u3bp7y8PBUWFmr37t3605/+1PaegoIC1dfXH3asc889V08//bQikYj279+vp556Sueee26vf6b6+nodd9xxam5ubhccL7zwQj344IOSpJaWFtXV1elTn/qUnnjiCdXU1EhSW1fksWPHau3atZKk5cuXq7m5udPPqqurU1FRkXJzc7Vx40a99tprkqQzzzxTK1eu1JYtW9odV4rfO3zttddq7ty5CgaDvf75AABA+iPYAkAfOvnkk1VfX69Ro0bpuOOO0zXXXKM1a9Zo8uTJWrJkiSZMmHDE93/ta19TQ0ODJk6cqB/84AeaPn26JGnq1KmaNm2aJkyYoC9/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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "phcNBAzlE4FR", - "outputId": "3ad688d9-e08f-41bb-b295-47449334cd91" - }, - "source": [ - "# making predictions on real sentences\n", - "\n", - "sample_text = (\"The movie was a waste of time. But some things are fine\")\n", - "predictions = model.predict(np.array([sample_text]))\n", - "print(predictions)" - ], - "execution_count": 20, - "outputs": [ - { - "output_type": "stream", - "text": [ - "[[-1.9860197]]\n" - ], - "name": "stdout" - } - ] - } - ] -} \ No newline at end of file diff --git a/Assignment-5/Report.md b/Final_Wikipedia_Simplifier/Model_Report/Report.md similarity index 100% rename from Assignment-5/Report.md rename to Final_Wikipedia_Simplifier/Model_Report/Report.md diff --git a/Assignment-5/assignment-architecture.png b/Final_Wikipedia_Simplifier/Model_Report/assignment-architecture.png similarity index 100% rename from Assignment-5/assignment-architecture.png rename to Final_Wikipedia_Simplifier/Model_Report/assignment-architecture.png diff --git a/Final_Wikipedia_Simplifier/Team_5.ipynb b/Final_Wikipedia_Simplifier/Team_5.ipynb new file mode 100644 index 0000000..4747a0e --- /dev/null +++ b/Final_Wikipedia_Simplifier/Team_5.ipynb @@ -0,0 +1 @@ +{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport pandas as pd \nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n for filename in filenames:\n print(os.path.join(dirname, filename))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-06-20T11:35:19.37795Z","iopub.execute_input":"2021-06-20T11:35:19.378669Z","iopub.status.idle":"2021-06-20T11:35:19.417007Z","shell.execute_reply.started":"2021-06-20T11:35:19.378546Z","shell.execute_reply":"2021-06-20T11:35:19.416284Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.models import Model\nimport tensorflow as tf\nimport pandas as pd \nfrom keras.layers import Input, LSTM, GRU, Dense, Embedding\nfrom keras.preprocessing.text import Tokenizer\nfrom keras.preprocessing.sequence import pad_sequences\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport re\nimport pickle","metadata":{"execution":{"iopub.status.busy":"2021-06-20T11:35:19.418096Z","iopub.execute_input":"2021-06-20T11:35:19.418529Z","iopub.status.idle":"2021-06-20T11:35:25.139851Z","shell.execute_reply.started":"2021-06-20T11:35:19.418492Z","shell.execute_reply":"2021-06-20T11:35:25.138931Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"nor_train=open(\"/kaggle/input/test-dataset/normal.training.txt\",\"r\")\nsim_train=open(\"/kaggle/input/test-dataset/simple.training.txt\",\"r\")\nnormal_train=nor_train.readlines()\nsimple_train=sim_train.readlines()","metadata":{"execution":{"iopub.status.busy":"2021-06-20T11:35:25.143643Z","iopub.execute_input":"2021-06-20T11:35:25.143927Z","iopub.status.idle":"2021-06-20T11:35:25.809056Z","shell.execute_reply.started":"2021-06-20T11:35:25.143901Z","shell.execute_reply":"2021-06-20T11:35:25.808335Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def preprocess_sentence(w):\n w = re.sub(r\"([?.!,¿])\", r\" \\1 \", w)\n w = re.sub(r'[\" \"]+', \" \", w)\n w = re.sub(r\"[^a-zA-Z?.!,¿]+\", \" \", w)\n w = w.strip()\n w = 'sssss ' + w + ' eeeee'\n return w","metadata":{"execution":{"iopub.status.busy":"2021-06-20T11:35:25.810655Z","iopub.execute_input":"2021-06-20T11:35:25.811247Z","iopub.status.idle":"2021-06-20T11:35:25.817257Z","shell.execute_reply.started":"2021-06-20T11:35:25.811205Z","shell.execute_reply":"2021-06-20T11:35:25.816321Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"BATCH_SIZE = 1000\nEPOCHS = 64\nNUM_SENTENCES = 1000\nMAX_SENTENCE_LENGTH = 1200\nMAX_NUM_WORDS = 4000\nEMBEDDING_SIZE = 100","metadata":{"execution":{"iopub.status.busy":"2021-06-20T11:35:25.818643Z","iopub.execute_input":"2021-06-20T11:35:25.819037Z","iopub.status.idle":"2021-06-20T11:35:25.829984Z","shell.execute_reply.started":"2021-06-20T11:35:25.818998Z","shell.execute_reply":"2021-06-20T11:35:25.829058Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"input_sentences = []\noutput_sentences = []\noutput_sentences_inputs = []\ni=0\nk=0\nwhile i <(NUM_SENTENCES):\n try:\n s1=normal_train[k]\n except:\n print(k)\n break\n if(len(s1)