From beadcc9950df116bc5a5fbd4a8dce14c46ac5292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojty=C5=84ski?= Date: Sat, 20 Feb 2021 12:29:07 +0100 Subject: [PATCH] =?UTF-8?q?Utworzono=20za=20pomoc=C4=85=20Colaboratory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 08_sentiment_analysis_with_bert.ipynb | 2632 +++++++++++++++++++++++++ 1 file changed, 2632 insertions(+) create mode 100644 08_sentiment_analysis_with_bert.ipynb diff --git a/08_sentiment_analysis_with_bert.ipynb b/08_sentiment_analysis_with_bert.ipynb new file mode 100644 index 0000000..9857efa --- /dev/null +++ b/08_sentiment_analysis_with_bert.ipynb @@ -0,0 +1,2632 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "08.sentiment-analysis-with-bert.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PGnlRWvkY-2c" + }, + "source": [ + "# Sentiment Analysis with BERT\n", + "\n", + "> TL;DR In this tutorial, you'll learn how to fine-tune BERT for sentiment analysis. You'll do the required text preprocessing (special tokens, padding, and attention masks) and build a Sentiment Classifier using the amazing Transformers library by Hugging Face!\n", + "\n", + "- [Read the tutorial](https://www.curiousily.com/posts/sentiment-analysis-with-bert-and-hugging-face-using-pytorch-and-python/)\n", + "- [Run the notebook in your browser (Google Colab)](https://colab.research.google.com/drive/1PHv-IRLPCtv7oTcIGbsgZHqrB5LPvB7S)\n", + "- [Read the `Getting Things Done with Pytorch` book](https://github.com/curiousily/Getting-Things-Done-with-Pytorch)\n", + "\n", + "You'll learn how to:\n", + "\n", + "- Intuitively understand what BERT is\n", + "- Preprocess text data for BERT and build PyTorch Dataset (tokenization, attention masks, and padding)\n", + "- Use Transfer Learning to build Sentiment Classifier using the Transformers library by Hugging Face\n", + "- Evaluate the model on test data\n", + "- Predict sentiment on raw text\n", + "\n", + "Let's get started!" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "fH8xHMfdX974", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 441 + }, + "cellView": "form", + "outputId": "d05f3e10-0e83-4188-fc7d-28dd6dc31448" + }, + "source": [ + "#@title Watch the video tutorial\n", + "\n", + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('8N-nM3QW7O0', width=720, height=420)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ], + "image/jpeg": "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\n" + }, + "metadata": { + "tags": [] + }, + "execution_count": 2 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "NJ6MhJYYBCwu", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 306 + }, + "outputId": "fc1bc767-990a-486d-bb10-2a80cea128b1" + }, + "source": [ + "!nvidia-smi" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Mon Apr 20 19:22:31 2020 \n", + "+-----------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 440.64.00 Driver Version: 418.67 CUDA Version: 10.1 |\n", + "|-------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", + "|===============================+======================+======================|\n", + "| 0 Tesla P100-PCIE... Off | 00000000:00:04.0 Off | 0 |\n", + "| N/A 36C P0 27W / 250W | 0MiB / 16280MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + " \n", + "+-----------------------------------------------------------------------------+\n", + "| Processes: GPU Memory |\n", + "| GPU PID Type Process name Usage |\n", + "|=============================================================================|\n", + "| No running processes found |\n", + "+-----------------------------------------------------------------------------+\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Tbodro8Fpmwr" + }, + "source": [ + "## What is BERT?\n", + "\n", + "BERT (introduced in [this paper](https://arxiv.org/abs/1810.04805)) stands for Bidirectional Encoder Representations from Transformers. If you don't know what most of that means - you've come to the right place! Let's unpack the main ideas:\n", + "\n", + "- Bidirectional - to understand the text you're looking you'll have to look back (at the previous words) and forward (at the next words)\n", + "- Transformers - The [Attention Is All You Need](https://arxiv.org/abs/1706.03762) paper presented the Transformer model. The Transformer reads entire sequences of tokens at once. In a sense, the model is non-directional, while LSTMs read sequentially (left-to-right or right-to-left). The attention mechanism allows for learning contextual relations between words (e.g. `his` in a sentence refers to Jim).\n", + "- (Pre-trained) contextualized word embeddings - [The ELMO paper](https://arxiv.org/abs/1802.05365v2) introduced a way to encode words based on their meaning/context. Nails has multiple meanings - fingernails and metal nails.\n", + "\n", + "BERT was trained by masking 15% of the tokens with the goal to guess them. An additional objective was to predict the next sentence. Let's look at examples of these tasks:\n", + "\n", + "### Masked Language Modeling (Masked LM)\n", + "\n", + "The objective of this task is to guess the masked tokens. Let's look at an example, and try to not make it harder than it has to be:\n", + "\n", + "That's `[mask]` she `[mask]` -> That's what she said\n", + "\n", + "### Next Sentence Prediction (NSP)\n", + "\n", + "Given a pair of two sentences, the task is to say whether or not the second follows the first (binary classification). Let's continue with the example:\n", + "\n", + "*Input* = `[CLS]` That's `[mask]` she `[mask]`. [SEP] Hahaha, nice! [SEP]\n", + "\n", + "*Label* = *IsNext*\n", + "\n", + "*Input* = `[CLS]` That's `[mask]` she `[mask]`. [SEP] Dwight, you ignorant `[mask]`! [SEP]\n", + "\n", + "*Label* = *NotNext*\n", + "\n", + "The training corpus was comprised of two entries: [Toronto Book Corpus](https://arxiv.org/abs/1506.06724) (800M words) and English Wikipedia (2,500M words). While the original Transformer has an encoder (for reading the input) and a decoder (that makes the prediction), BERT uses only the decoder.\n", + "\n", + "BERT is simply a pre-trained stack of Transformer Encoders. How many Encoders? We have two versions - with 12 (BERT base) and 24 (BERT Large).\n", + "\n", + "### Is This Thing Useful in Practice?\n", + "\n", + "The BERT paper was released along with [the source code](https://github.com/google-research/bert) and pre-trained models.\n", + "\n", + "The best part is that you can do Transfer Learning (thanks to the ideas from OpenAI Transformer) with BERT for many NLP tasks - Classification, Question Answering, Entity Recognition, etc. You can train with small amounts of data and achieve great performance!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wmj22-TcZMef" + }, + "source": [ + "## Setup\n", + "\n", + "We'll need [the Transformers library](https://huggingface.co/transformers/) by Hugging Face:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Kj_7Tz0-pK69" + }, + "source": [ + "!pip install -q -U watermark" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Jjsbi1u3QFEM" + }, + "source": [ + "!pip install -qq transformers" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "AJqoaFpVpoM8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 136 + }, + "outputId": "88b5415f-9104-4937-c782-09c6025945c6" + }, + "source": [ + "%reload_ext watermark\n", + "%watermark -v -p numpy,pandas,torch,transformers" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPython 3.6.9\n", + "IPython 5.5.0\n", + "\n", + "numpy 1.18.2\n", + "pandas 1.0.3\n", + "torch 1.4.0\n", + "transformers 2.8.0\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "w68CZpOwFoly", + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "9c1a0321-1650-4224-cf9c-3c8dc8661ed3" + }, + "source": [ + "#@title Setup & Config\n", + "import transformers\n", + "from transformers import BertModel, BertTokenizer, AdamW, get_linear_schedule_with_warmup\n", + "import torch\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "from pylab import rcParams\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import rc\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix, classification_report\n", + "from collections import defaultdict\n", + "from textwrap import wrap\n", + "\n", + "from torch import nn, optim\n", + "from torch.utils.data import Dataset, DataLoader\n", + "import torch.nn.functional as F\n", + "\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format='retina'\n", + "\n", + "sns.set(style='whitegrid', palette='muted', font_scale=1.2)\n", + "\n", + "HAPPY_COLORS_PALETTE = [\"#01BEFE\", \"#FFDD00\", \"#FF7D00\", \"#FF006D\", \"#ADFF02\", \"#8F00FF\"]\n", + "\n", + "sns.set_palette(sns.color_palette(HAPPY_COLORS_PALETTE))\n", + "\n", + "rcParams['figure.figsize'] = 12, 8\n", + "\n", + "RANDOM_SEED = 42\n", + "np.random.seed(RANDOM_SEED)\n", + "torch.manual_seed(RANDOM_SEED)\n", + "\n", + "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n", + "device" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "device(type='cuda', index=0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 65 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ufzPdoTtNikq" + }, + "source": [ + "## Data Exploration\n", + "\n", + "We'll load the Google Play app reviews dataset, that we've put together in the previous part:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SgPRhuMzi9ot", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 153 + }, + "outputId": "846be435-6864-4157-9510-5325cc75bced" + }, + "source": [ + "!gdown --id 1S6qMioqPJjyBLpLVz4gmRTnJHnjitnuV\n", + "!gdown --id 1zdmewp7ayS4js4VtrJEHzAheSW-5NBZv" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Downloading...\n", + "From: https://drive.google.com/uc?id=1S6qMioqPJjyBLpLVz4gmRTnJHnjitnuV\n", + "To: /content/apps.csv\n", + "100% 134k/134k [00:00<00:00, 50.2MB/s]\n", + "Downloading...\n", + "From: https://drive.google.com/uc?id=1zdmewp7ayS4js4VtrJEHzAheSW-5NBZv\n", + "To: /content/reviews.csv\n", + "7.17MB [00:00, 33.4MB/s]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mUKLyKc7I6Qp", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 632 + }, + "outputId": "81441fd4-74b2-4b5b-b4f1-76c41cb6ce6a" + }, + "source": [ + "df = pd.read_csv(\"reviews.csv\")\n", + "df.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
userNameuserImagecontentscorethumbsUpCountreviewCreatedVersionatreplyContentrepliedAtsortOrderappId
0Andrew Thomashttps://lh3.googleusercontent.com/a-/AOh14GiHd...Update: After getting a response from the deve...1214.17.0.32020-04-05 22:25:57According to our TOS, and the term you have ag...2020-04-05 15:10:24most_relevantcom.anydo
1Craig Haineshttps://lh3.googleusercontent.com/-hoe0kwSJgPQ...Used it for a fair amount of time without any ...1114.17.0.32020-04-04 13:40:01It sounds like you logged in with a different ...2020-04-05 15:11:35most_relevantcom.anydo
2steven adkinshttps://lh3.googleusercontent.com/a-/AOh14GiXw...Your app sucks now!!!!! Used to be good but no...1174.17.0.32020-04-01 16:18:13This sounds odd! We are not aware of any issue...2020-04-02 16:05:56most_relevantcom.anydo
3Lars Panzerbjørnhttps://lh3.googleusercontent.com/a-/AOh14Gg-h...It seems OK, but very basic. Recurring tasks n...11924.17.0.22020-03-12 08:17:34We do offer this option as part of the Advance...2020-03-15 06:20:13most_relevantcom.anydo
4Scott Prewitthttps://lh3.googleusercontent.com/-K-X1-YsVd6U...Absolutely worthless. This app runs a prohibit...1424.17.0.22020-03-14 17:41:01We're sorry you feel this way! 90% of the app ...2020-03-15 23:45:51most_relevantcom.anydo
\n", + "
" + ], + "text/plain": [ + " userName ... appId\n", + "0 Andrew Thomas ... com.anydo\n", + "1 Craig Haines ... com.anydo\n", + "2 steven adkins ... com.anydo\n", + "3 Lars Panzerbjørn ... com.anydo\n", + "4 Scott Prewitt ... com.anydo\n", + "\n", + "[5 rows x 11 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dB2jE6am7Dpo", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "19acca28-2336-43f1-b714-29d993bc114c" + }, + "source": [ + "df.shape" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(15746, 11)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 9 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TWqVNHJbn10l" + }, + "source": [ + "We have about 16k examples. Let's check for missing values:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "VA_wGSLQLKCh", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 323 + }, + "outputId": "9468ddba-47d0-46a8-d7bb-6ff51c4bdb8c" + }, + "source": [ + "df.info()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 15746 entries, 0 to 15745\n", + "Data columns (total 11 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 userName 15746 non-null object\n", + " 1 userImage 15746 non-null object\n", + " 2 content 15746 non-null object\n", + " 3 score 15746 non-null int64 \n", + " 4 thumbsUpCount 15746 non-null int64 \n", + " 5 reviewCreatedVersion 13533 non-null object\n", + " 6 at 15746 non-null object\n", + " 7 replyContent 7367 non-null object\n", + " 8 repliedAt 7367 non-null object\n", + " 9 sortOrder 15746 non-null object\n", + " 10 appId 15746 non-null object\n", + "dtypes: int64(2), object(9)\n", + "memory usage: 1.3+ MB\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "H3cL_1qVn_6h" + }, + "source": [ + "Great, no missing values in the score and review texts! Do we have class imbalance?" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Wwh_rW4Efhs3", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 506 + }, + "outputId": "e39b9955-3c5e-45f3-f960-38bfa03447c4" + }, + "source": [ + "sns.countplot(df.score)\n", + "plt.xlabel('review score');" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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atWqLF26NG1tbX2uz5s3L9dcc03F6w9HfX19WlpaMmrUqEybNu2IfAYAwJH27JemDvQWYNCYcu22gd4CAMAhO5zeOege7VJTU5Ozzz47f/d3f5eVK1fmvvvuy+OPP577778/N910U1f4/t73vpevf/3rFecsWbIkW7ZsSVVVVRYtWpSHHnoojz76aK6//vqMHj06jY2NufTSS9PU1NTn9U1NTVm0aFEaGxtTW1ub66+/Po8++mgeeuihLFq0KFVVVdm8eXOWLFlScQ+bNm3KF7/4xbS1teWUU07Jt7/97WzYsCHf//73M2fOnCTJXfWNauoAACAASURBVHfdlWXLlh3GXwwAAAAAgJJBd0f6/rS2tuav/uqvsnXr1owcOTIbNmzIyJEje5zzox/9KAsXLkySfO5zn8tll13WY33jxo25+OKL09nZmU9/+tP5/Oc/3+tzbrzxxixfvjxVVVX5zne+0+tRMt/61rdy8803J0mWLVuWs846q9eMiy66KE888UQmTJiQH/zgBxk3blzXWmdnZ+bPn5/HHnssxxxzTNasWXNAj5o5GO5IBwAGA3ekQ/9xRzoA8FbmjvSDUF1dnQ9/+MNJktdffz3PPPNMr3PuvPPOJMm4ceMyf/78XuszZszIOeeck+SNO9vb29t7rLe3t+e73/1ukuScc87p83ns8+fPz9ixY3t8XndPPvlknnjiiSTJggULekT0JKmqqsqVV16ZJNm1a1fuueeeyl8aAAAAAIBDdtSF9CQ9XvBZXV3dY2337t3ZsGFDkmT27Nm91vc699xzk7zxCJdNmzb1WNu4cWOam5t7nLev6urqrsez/OQnP8nu3bt7rK9bt67XZ+2rrq4ukydPTpKsXbu2z3MAAAAAADg8R11I7+joyH//938nSWprazNlypQe60899VT27NmT5I2XgVbSfe0Xv/hFj7XuPx/IjD179uTpp5/uc8bEiRPz9re/veKMM844o889AAAAAADQP46KkN7Z2ZmXXnopjz32WObPn5+f/exnSZLLL7+81x3n27b93zP/TjjhhIozJ02alCFDhvS6pvvPQ4YMyaRJkyrO6D6/0owTTzyx4vXdZ7z22mtpaGgongsAAAAAwMEbtv9T3rouv/zyrrvPu3vb296Wyy+/PHPnzu219sorr/Q4r5Lhw4entrY2TU1NaWpq6nNGbW1thg8f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ePDgDmds3Lgxra2tnc5Yv35923FnM0p72HN9zxkAAAAAAOy/Xh/S161bl6uvvjp//OMfM2DAgNx555057bTTOj1/xIgRbcevv/56p+etWbMmO3fu3Oua3b/euXNn3njjjU5n7D6/sxmrV6/u9PrdZxx55JE1+aBRAAAAAID3ul4d0t96661cffXVefXVV9O3b9/853/+Z84444ziNSNHjmz7kNDly5d3et6yZcvajhsbG9ut7f51V2b0799/r3fI75qxdu3arF27ttMZu+bvuQcAAAAAAA6MXhvSN2/enClTpuR3v/td+vTpk//4j//IJz7xiX1eN2DAgIwbNy5J8sgjj3T6jPKf/exnSd55nMqeD8IfO3Zs6uvr2523px07dmThwoVJkjPPPDMDBgxot37uuee2HT/00EMdzlixYkVee+21JMl5551X/LkAAAAAAOieXhnSd+zYkWuvvTbPPfdckuTmm2/ORRdd1OXrL7/88iTvPMN8zpw5e60vXbo0ixcvTpJccsklqaura7deV1eXSy+9NEmyaNGiLF26dK8Zc+bMaXtG+q7X292HP/zhtkfQzJ49O83Nze3Wq9Vqbr311iTvfMjopz/96S7/fAAAAAAAdF2vC+lvv/12vvKVr+SZZ55Jknz5y1/ORRddlM2bN3f6p1qttpvxiU98ImeffXaSZObMmZk5c2ZWr16dpqamLFiwINdee2127tyZoUOHZsqUKR3u43Of+1yGDh2anTt35tprr82CBQvS1NSU1atX57vf/W5mzpyZJDn77LPbXmtPN954Y+rq6tLU1JQrr7wyTz75ZNavX58XXnghX/7yl/PEE08kSb7whS+koaHhgPz+AAAAAABor1LdsyL/jXv99ddz/vnnv6trHnnkkZxwwgntvrdx48ZMmTKl02ecH3vssZk1a1ZOPfXUTueuWLEiU6dOTVNTU4frY8aMyezZszNo0KBOZyxYsCA33XRTWlpaOlyfNGlSvv3tb3d6/f5YuXJlNm3alIEDB2bUqFE1eY09nbxg1UF5HXgveOXiEfs+6W/Yq0t6988HB9NJ43r3v7+vftP9Ag6Uk77dy+8XI6b39Bag1zhp1a09vYWa+v6rH+jpLUCvceVJLx+019qf3lm371Pem+rr63PPPfdk3rx5uf/++7Nq1aq0tLRk2LBhOf/883P11Vfv813go0eP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AFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAAQIGQDgAAAAAABUI6AAAAAAAUCOkAAAAAAFAgpAMAAAAA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "image/png": { + "width": 745, + "height": 489 + } + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nZM0GKviobjM" + }, + "source": [ + "That's hugely imbalanced, but it's okay. We're going to convert the dataset into negative, neutral and positive sentiment:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ei0xmdi1Chp0" + }, + "source": [ + "def to_sentiment(rating):\n", + " rating = int(rating)\n", + " if rating <= 2:\n", + " return 0\n", + " elif rating == 3:\n", + " return 1\n", + " else: \n", + " return 2\n", + "\n", + "df['sentiment'] = df.score.apply(to_sentiment)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "V-155O-SFSqE" + }, + "source": [ + "class_names = ['negative', 'neutral', 'positive']" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "y3tY3ECJDPaz", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 506 + }, + "outputId": "b4ff4686-f568-4f3c-8eef-006485c6d660" + }, + "source": [ + "ax = sns.countplot(df.sentiment)\n", + "plt.xlabel('review sentiment')\n", + "ax.set_xticklabels(class_names);" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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ta1bt2bFihVZsWJFFi1alJaWlhxzzDE1Z7S2tmbevHnp7Ozsfa1arWbp0qVZunRpLr744tx4440H/kEBAAAAANirwzqkf/Ob38yUKVNq7j/66KP7fX3u3LlZuXJlKpVKrrzyynz4wx/O8OHD89hjj+Xmm29OtVrNlVdemYceeiijR4/e4/z29vZcddVVqVaraWxszA033JCpU6dm27Zt+c53vpNvfOMbWbFiRebOnZsFCxb0u4bly5fnc5/7XLq6unLyySfns5/9bCZPnpzf/e53uf322/Pwww/nvvvuy1vf+tZcfvnlB/YFAQAAAACwV4f1M9KHDx+eo48+uuY//fnpT3+aRx99NEkyZ86cXHvttZkwYULGjRuXCy+8MF//+tdTqVSyYcOGtLS09DtjwYIF2bBhQyqVSu64445ceOGFGTduXCZMmJBrr702c+bMSZI8+uijve+1u1tvvTVdXV1585vfnHvuuSdTp07N2LFj09zcnNtuuy1nnXVWkuT222/Pxo0bX+tXBQAAAABADYd1SD8Q9957b5JkzJgxmTVr1h77p0yZknPPPTdJ8sADD6Srq6vP/q6urnz7299Okpx77rn93hE/a9as3jvZd77frp555pk8/fTTSZLZs2dnzJgxffZXKpVcd911SZItW7bku9/97v58RAAAAAAA9sNh/WiX/bVt27YsW7YsSXLeeeelvr6+3+POP//8LFmyJO3t7Vm+fHne85739O576qmn0tHR0Xtcf+rr6zN9+vT8+7//e5544ols27Ytw4cP792/ZMmSPu/Vn+bm5kyYMCG/+c1vsnjx4nziE5/Yvw8LABw21i6beLCXAECSE85cc7CXAAAMkiPijvQdO3bs03HPPfdctm/fniQ5/fTTax63675f/OIXffbt+ve+zNi+fXuef/75fmc0NTXlLW95S80Z73znO/tdAwAAAAAAA+ewviP9i1/8Yn77299my5Ytqa+vzwknnJA//uM/zsc//vF+A/WaNf9398Bxxx1Xc+748eMzZMiQdHd39zln1xlDhgzJ+PHja87Ydf6aNWvyjne8Y48Zxx9/fPHz7ZzxyiuvZMOGDWlqaioefyQ5sdWdIAAH269muEsaAACAw8NhfUf6c889ly1btiR59a70X/7yl7nzzjtz/vnn5/vf//4ex2/atKl3+01velPNucOGDUtjY2OS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zj3YywEAAAAA4A3ssLsjvaOjIzfffHOS5Prrr88xxxyzX+ePGDGid3vnj47WsnP/UUcd1e+MvZ2/bdu23u3+ZnR2dmbHjh0HPGOgjBw5MpMmTRqU2QAc/tw5BsCRxrUPgCPJG+m6t2rVqmzevPmAzj3s7ki/7bbbUq1Wc9ZZZ+XP//zP9/v8MWPG9G6/9NJLNY/r7OxMR0dHkmT06NH9zujo6EhXV1fNGRs3buzdrjWjtIbd9+8+AwAAAACA1+6wuyP9hRdeSJI8/vjje72LurW1Na2trUmSr33ta5k+fXomTpy4x6z+rF+/Pt3d3UnS55xd/+7u7s5vf/vbvO1tbyuutdaMX//611m3bl3xM+yccfTRR6epqal4LAAAAAAA+++wuyP9tXr729/e+yOhK1eurHncihUrerebm5v77Nv1732Z0dDQkJNOOqnfGRs2bMiGDRtqztg5f/c1AAAAAAAwMA67O9JvuOGGfPrTny4e86EPfShJMm3atMyZMydJctxxxyVJhg8fnjPPPDNLly7NI488ks9//vOpr6/fY8aPfvSjJK8+TmX35wBNmTIljY2N6ejoyI9+9KN84AMf2OP8HTt2ZPHixUmS9773vRk+fHif/dOmTcvXvva1JMkPf/jDXHbZZXvMaGtry29+85skyfve977iZwYAAAAA4MAcdnekH3/88TnllFOK/+w0evTo3td2/VHSSy65JMmrzzC/66679niP5cuXZ+nSpUmSiy66KHV1ff9/RF1dXT760Y8mSZYsWZLly5fvMeOuu+7qfUb6zvfb1amnnprTTjstSdLS0pL29vY++3t6evLlL385yas/MvrBD36w/MUAAAAAAHBADruQPhDOOeecnH322UmS+fPnZ/78+Vm3bl2q1WpaW1tz9dVXp7u7O01NTZk9e3a/My6//PI0NTWlu7s7V199dVpbW1OtVrNu3bp89atfzfz585MkZ599du977e76669PXV1dqtVqLr300jz++OPZuHFjnn322VxzzTV57LHHkiSf/OQnM3bs2EH4JgAAAAAAOOwe7TJQvvzlL2f27NlZuXJl7rjjjtxxxx199h977LH5xje+kdGjR/d7/ujRo/P1r389V1xxRarVaq6//vo9jjn99NPzla98peYazjjjjPzDP/xD5s2bl1/+8pf5q7/6qz2OmTlzZi6//PL9/HQA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XJiFCxfu07mVSiVtbW0H/N6/+93vsnjx4vz3f/93Vq1alZdeeikbN27M0KFD09TUlHe96135yEc+kilTpux1VldXV+6///4sWrQoa9asyY4dOzJ+/PhMnz49l112WcaOHbvXGRs3bszChQvz8MMPZ/369amvr8/EiRNzwQUXZObMmamr2/u/glWrVuXuu+/OsmXL8uKLL2bUqFFpbm7OzJkzM23atH36XgAAAAAAODCDEtJ7enqKfw+mRx55JF/84hf73bd27dqsXbs2ra2tueiii3LTTTdl6NCh/R778ssvZ9asWVm5cmWf11evXp3Vq1fnwQcfzIIFC/r8T4PdtbW15Yorrki1Wu19bevWrVmxYkVWrFiRRYsWpaWlJcccc0zNGa2trZk3b146Ozt7X6tWq1m6dGmWLl2aiy++ODfeeGPN8wEAAAAAeG0GJaTPmDFjMMbuk4aGhpxzzjl5z3vek8mTJ2fcuHEZO3ZsNm3alLa2trS0tOTZZ5/NAw88kNGjR+ev//qv+50zd+7crFy5MpVKJVdeeWU+/OEPZ/jw4Xnsscdy8803p1qt5sorr8xDDz2U0aNH73F+e3t7rrrqqlSr1TQ2NuaGG27I1KlTs23btnznO9/JN77xjaxYsSJz587NggUL+l3D8uXL87nPfS5dXV05+eST89nPfjaTJ0/O7373u9x+++15+OGHc9999+Wtb31rLr/88gH9HgEAAAAAeFWl5/W8XfwQsGPHjvzFX/xF2traMmLEiCxbtiwjRozoc8xPf/rTXHHFFUmSz3zmM7n66qv77H/qqafysY99LD09Pbn88sv7jfFf+tKX0tLSkkqlkn/5l3/Z41Eyd9xxR+bPn58kWbBgQc4+++w9Zlx00UV5+umn8+Y3vznf+973MmbMmN59PT09mTVrVh5//PEcddRReeSRR/bpUTP7Y9WqVdm8eXNGjhyZSZMmDejswXZi65qDvQSAI96vZkw82Es4Yqxd5rsGOBSccKb/Dnm9rP171z6Ag+2Em954173X0jsH5cdGD2X19fX5wAc+kOTVx6ysXr16j2PuvffeJMmYMWMya9asPfZPmTIl5557bpLkgQceSFdXV5/9XV1d+fa3v50kOffcc/t9HvusWbN672Tf+X67euaZZ/L0008nSWbPnt0noievPkv+uuuuS5Js2bIl3/3ud2t/aAAA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Y5kwYcI7uu7GG2/MqlWr0tDQkNmzZ+eRRx7JE088kdtuuy2DBg1KpVLJ5z//+WzevLnH6zdv3pzZs2enUqmkqakpt912W5544ok88sgjmT17dhoaGrJy5crceOONNdewYsWKfPWrX01bW1vOOOOM3HfffVm+fHkefPDBXHLJJUmS73znO5k3b947em8AAAAAAOy/IzKkDxkyJP/1X/+VJ598Mo899ljuuuuufPSjH93v6x977LE8/vjjSZLrr78+N9xwQ0aNGpWTTjopU6dOzb333puGhoa0trZm/vz5Pc4xb968tLa2pqGhIffcc0+mTp2ak046KaNGjcoNN9yQ66+/Pkny+OOPd75Wd7fffnva29tz4oknZuHChTn//PMzbNiwNDc356677sp5552XJLn77ruzcePGd/IRAQAAAACwn47IkD5w4MBccsklGT58eK+uf+CBB5IkQ4cOzYwZM/YanzBhQi688MIkyfe+9720t7d3GW9vb893v/vdJMmFF17Y49PwM2bMyJAhQ7q83p5+9atf5bnnnkuSzJw5M0OHDu0y3tDQkJtuuilJsn379vzoRz96J28RAAAAAID9dESG9AOxY8eOLF++PEly8cUX59hjj+3xvEsvvTTJ21u4rFixosvYs88+my1btnQ5r7tjjz22c3uWp59+Ojt27OgyvmzZsr1eq7vm5uaMGjUqSbJ06dLi+wIAAAAAoHeE9G5efPHF7Ny5M0kyfvz4muftOfb88893Gdvz5/2ZY+fOnfntb3/b4xwjRozIySefXHOOs88+u8c1AAAAAABwcAjp3axdu7bz+JRTTql53siRI9OnT5+9rtnz5z59+mTkyJE159hz/lpznHrqqcX17p5j27ZtaW1tLZ4LAAAAAMA7J6R3s2nTps7jE044oeZ5ffv2TVNTU5K3t3fpaY6mpqb07du35hzDhg3rPK41R2kN3ce7zwEAAAAAwIFrPNQLONy8+eabncf9+vUrnrt7fPv27T3Osa/r+/fv33lca45ae7TvzxwHy9atW/faB/5w9eEPf/hQLwGAbt4r95D3Ivc9gMOTe1/9uPcBHH6OlvueJ9IBAAAAAKDAE+ndHHfccZ3Hu790tJbd48cff3yPc+zr+h07dnQe9zRHW1tbdu3a1es5DpaBAwdm7NixdZkbgCOfJ8cAONq49wFwNHkv3ffWrFmTrVu39upaT6R3M3To0M7j119/veZ5bW1t2bJlS5JkyJAhPc6xZcuWtLe315xj48aNnce15iitoft49zkAAAAAADhwQno3o0eP7jx+9dVXa563fv36dHR07HXNnj93dHTktddeqznHnvPXmmPdunXF9e6eY8CAARkxYkTxXAAAAAAA3jkhvZsxY8Z0fknoqlWrap63cuXKzuPm5uYuY3v+vD9z9OvXL+9///t7nKO1tTWtra0159g9f/c1AAAAAABwcAjp3fTv3z8TJ05MkixZsqTmHuUPP/xwkre3U+m+D9CECRPS1NTU5bzudu3alaVLlyZJzj333PTv37/L+OTJkzuPH3rooR7nWL16dV555ZUkyUUXXVR8XwAAAAAA9I6Q3oOrrroqydt7mC9YsGCv8RUrVuTRRx9Nknzyk59MY2PX72xtbGzMlVdemSRZtmxZVqxYsdccCxYs6Nwjfffr7emDH/xgzjrrrCTJ/Pnzs3nz5i7j1Wo1d9xxR5K3v2T08ssvfydvEQAAAACA/XTEhvTf/va3WblyZeefP/7xj51jL7zwQpexPb/0M0kuuOCCTJo0KUkyd+7czJ07N+vWrUulUklLS0vmzJmTjo6OjBgxIjNnzuzx9T/3uc9lxIgR6ejoyJw5c9LS0pJKpZJ169blzjvvzNy5c5MkkyZN6nyt7m6++eY0NjamUqnk6quvzlNPPZWNGzfmhRdeyHXXXZcnn3wySXLttddm2LBhB/yZAQAAAACwt4ZqtVo91Iuoh6uvvjo///nP9+vc2267LVOnTu3yuy1btmTmzJk19zgfPnx45s2blzPPPLPmvKtXr86sWbNSqVR6HB8/fnzmz5+fQYMG1ZyjpaUlt9xyS9ra2nocnzZtWm699daa1x+INWvWZOvWrRk4cGDGjh1bl9eol9Nb1h7qJQAc9V66YvS+T+KgeHm5zxrgcHDaRH8Pebe8/DX3PoBD7bRb33v3vQPpnY37PuXo1NTUlAceeCCLFi3K4sWLs3bt2rS1tWXkyJG5+OKLc8011+zzKfBx48Zl8eLFWbBgQZYsWZL169enb9++Of300zNlypRMmzZtr21hurviiisybty43H///XnmmWdSqVQyePDgNDc3Z/r06V32UgcAAAAA4OA7Yp9I58B5Ih2AA+GJ9HePJ9IBDg+eSH/3eCId4NA72p5IP2L3SAcAAAAAgINBSAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKBASAcAAAAAgAIhHQAAAAAACoR0AAAAAAAoENIBAAAAAKCg8VAvgP2zbNmyLFq0KM8//3zeeOONnHjiiZk4cWL+/u//PmPHjj3UywMAAAAAOGJ5Iv094Gtf+1pmz56dRx99NJVKJbt27cr69evzgx/8IJ/4xCfywx/+8FAvEQAAAADgiCWkH+bmzZuXRYsWJUkuueSSPPjgg1m+fHnuu+++nHHGGdm1a1e+8pWvZMWKFYd4pQAAAAAARyYh/TC2cePG3H333UmS888/P3fddVeam5szbNiwnH/++Vm4cGFOPPHEtLe351//9V8P8WoBAAAAAI5MQvphrKWlJdu3b0+S3HjjjWloaOgyPnTo0MycOTNJsmrVqjz//PPv+hoBAAAAAI50QvphbNmyZUmSUaNGpbm5ucdzLr300s7jpUuXvivrAgAAAAA4mgjph7HdT5ifffbZNc85+eSTM2LEiC7nAwAAAABw8Ajph6nW1tbObV1OPfXU4rmnnHJKkmTt2rV1XxcAAAAAwNFGSD9Mbdq0qfP4hBNOKJ67e3zz5s11XRMAAAAAwNGo8VAvgJ7tfho9Sfr161c8d/f4tm3bDuoadu7cmSTZunVrVqxYcVDnrpeBAwcmSR4ad4gXAkDWrFmT5O37CPWx+76XYQ8f2oUAkMS9793Qee+7yr0P4FB7L9/3dnfPd0JIp6a33nrrUC/hHXsv/o8LAL3lvgfA0ca9D4CDoTfdU0g/TB1//PGdx/v6F5Ld4wMGDDioa+jXr1927tyZY445Zp9PxQMAAAAAHM527tyZt956q1etU0g/TA0dOrTz+PXXXy+eu3t8yJAhB3UN48bZHwUAAAAAwJeNHqZOOumkzqfS161bVzz31VdfTZKMHj267usCAADg/7V352FVVf3//5+AoIIDzrOipuSQijmAU86VAw59zJEGp8whs8zp7vpaaWmpZXdlas6kOOI8YIqzIA6oaaLmLYhogjKIYgLC7w9+Z8cRzlEBRe31uK4uca+19ln7yH2vfd7nvd9LRERE/m0USH9K2djYUKtWLQBOnjxpsd9ff/3FtWvXAIz+IiIiIiIiIiIiIpJzFEh/irVq1QqAsLAwzpw5k2mfbdv+2am8devWT2ReIiIiIiIiIiIiIv8mCqQ/xbp162aUd5kxYwapqalm7bGxscybNw+AunXrKiNdRERERERERERE5DFQIP0pVrRoUYYOHQrAvn37+OCDDzhz5gzR0dEcOHAALy8voqKiyJMnD2PHjs3l2YqIiIiIiIiIiIg8n2xS709zlqfOxIkTWb58eaZt9vb2TJ48ma5duz7hWYmIiIiIiIiIiIj8OyiQ/ozYtWsXPj4+nD59mri4OEqUKIG7uzvvvPMOrq6uuT09ERERERERERERkeeWAukiIiIiIiIiIiIiIlaoRrqIiIiIiIiIiIiIiBUKpIuIiIiIiIiIiIiIWKFAuoiIiIiIiIiIiIiIFQqki4iIiIiIiIiIiIhYoUC6iIiIiIiIiIiIiIgVCqSLiIiIiIiIiIiIiFihQLqIiIiIiIiIiIiIiBUKpIuIiIiIiIiIiIiIWKFAuojIv8ChQ4dwdXXF1dWVy5cv5/Z0REREnkm+vr7GeioiIvKovLy8cHV1Zdy4cdk6j2kt8vX1zaGZicjDUCBdROQZNm7cOFxdXfHy8srtqYiIiOSonAo2iIiIPAv0Za3I00+BdBERERERERERERERK/Lk9gREROTxa9y4MWfPns3taYiIiIiIiPxreXt758h59NlOJHcoI11ERERERERERERExAqb1NTU1NyehIhIVowbN461a9fSqFEjvL29CQkJYd68eQQFBREdHU2RIkVo2rQpQ4cOpWLFihbPExcXx9KlS9m1axeXLl3i9u3bFC1alAYNGuDl5YWbm5vVeYSEhDBnzhwOHz5MXFwcJUqUoEWLFgwaNIhy5coZNe6mTJlC9+7dzcbevXuXgIAA/P39CQ4O5vLlyyQlJVG4cGFq1qyJp6cnHTt2xNbW/HtPX19fxo8fb3Ve3bp1Y+rUqUDaZqNvvfUWADt37qR8+fIALF26lC+++AJbW1t2795NqVKlLJ7v8OHD9OvXD4AFCxbQtGnTDH0CAgJYvXo1x44d4/r16zg4OODi4sKrr75Kv379cHR0tDpnERHJGbm9Rnp5eREUFGS2FmUmszXyhx9+4Mcff7R6fcOHD2fEiBFm/cuVK4e/vz9//vknCxcuJCAggMjISPLly8eRI0cASE1N5eTJk/j7+xMQEEBoaCi3b9/GycmJKlWq0Lp1a/r06UOBAgUyfd3066+yAUVEcs/969zhw4dZuHAhJ06c4ObNm5QuXZq2bdvy3nvv4ezsbPE8Z8+eZcmSJRw6dIjIyEjy5MlDhQoVaNmyJW+//TZFixa1OPbYsWMsW7aM4OBgoqKisLGxoWjRopQsWZKGDRvSvn176tSpYzYms/Xx8uXLtGnTxur1mtY4k8zWzz///JOOHTsCMGPGDDp16mTxfHfu3KFJkyYkJCQwZMgQRo0alaHPxYsX+fXXXwkICODq1aukpKRQunRpmjdvTv/+/SlbtqzVOYs8j1TaRUSeC1u2bGHs2LEkJiYaxyIjI1m7di3+/v54e3tnumlLYGAgI0eOJDY21uz4tWvX2Lx5M5s3b2bo0KGMHDky09fdsGED48ePJzk52TgWERGBj48PW7duZf78+VbnPWPGDBYvXpzh+PXr19m7dy979+5l48aN/Pjjjzg4OFg9V1Z06NCBKVOmkJSUxMaNGxk4cKDFvhs3bgSgRIkSeHh4mLXdvXuXCRMmsGnTJrPjiYmJnDp1ilOnTrFy5UrmzZuHi4tLjl+HiIhYlltrZG7YsWMHH330EXfv3jWO5cuXz/h5586dDBs2LMO4uLg4goODCQ4OZvXq1cyfP58KFSo8kTmLiEj2LF++nM8//5yUlBTj2KVLl1iwYAGbNm1i8eLFVKlSJcO4+fPnM336dLNxd+/eJSQkhJCQEHx8fPjpp59o2LBhpmO/+eabDMevXLnClStXOH78OOfPn2fOnDk5dJUP9sILL1CrVi1Onz7Nhg0brAbSd+7cSUJCAgCenp4Z2hcsWMCMGTPMPucChIaGEhoayurVq/nuu+9o1apVzl6EyFNOgXQReeaFhYUxduxY6taty/vvv0+NGjVITEzEz8+P6dOnExcXx8SJE1m+fLnZuNOnTzNo0CASExOpWbMmgwYNol69ejg5OREeHs7SpUvx9fVl1qxZlC1blh49epiNDwkJMYLopUqV4uOPPzYCzAEBAUyfPp0PP/zQ6twLFizIm2++SZMmTahQoQIlSpTA1taWq1evsnXrVpYtW8aePXuYOXMmY8aMMcZ5enry6quvMnHiRDZu3MjLL7/ML7/8YnZue3v7B753RYoUoXnz5vj7+7NhwwaLgfTExES2bdsGQKdOnTJkyH/yySf4+flhb2+Pl5cXHTt2pHz58vz9998EBgYyc+ZMwsPDGTJkCL6+vspMFxF5QnJrjcyO9957j/79+zNo0CCOHj1K586d+fzzz836ZLbGxcXFMWbMGCpWrMgHH3yAm5sbKSkp/P7770afPHny0Lp1a1q3bk3VqlUpWbIkTk5OREZGEhAQwMKFCwkLC+Ojjz5i1apVOXZNIiLyeISFhTF58mRq1arFqFGjqFGjBvHx8WzatImff/6ZyMhI3n//fTZs2EDevHmNcRs3bjQC4dWrV2fUqFHUrVuXu3fvsmvXLr7//nvi4uIYPHgwGzZsMPty9eLFi8yYMQMADw8PBgwYQNWqVSlQoAA3b97kwoUL7Nu3j/j4+Ie6hnLlynHs2DE2btzIxIkTgbRs9/Tu//xliaenJ6dPn+bAgQNER0dbzKjfsGEDALVq1aJq1apmbUuXLuXrr78GoH379vTp04dq1apha2vLH3/8wY8//khwcDAjR45k9erVVK9e/aHmJvI8UCBdRJ55165do3nz5syePZs8ef75v7W3336blJQUpk6dSnBwMBcuXDC7SRg/fjyJiYnUq1cPb29vs4zvwoULM2XKFEqUKMGcOXP49ttv6dy5s1lW27Rp00hOTqZAgQIsXbrU7OaqS5cu1KtXj65du1qdu+mx9PuVKFGCOnXq4OHhwaBBg/Dx8WHo0KHGo+Z58uQx/gOws7PDycnpEd61f3Tp0gV/f3/Onj3LuXPnMr0R2rt3L3FxcUb/9LZv346fnx82NjZ8//33GR5L7Nq1K+7u7nTr1o2LFy/i4+PDgAEDsjRXERF5NLm1RmaHg4MDDg4O2NnZAWlr3sOscbdu3cLFxQUfHx8KFixoHE9ftqxly5a0bNkyw9giRYrg6upKhw4d6NSpEydPniQgICDDE1giIvJ0uXbtGi+++CLe3t7kz58fgKJFizJs2DAqVKjAJ598QmhoKEuXLqV///5AWpLQlClTAKhSpQo+Pj5mJb369u2Lm5sbPXv2JCEhga+//tqs5Nj+/fu5d+8exYoVY+7cuWZrZKFChShfvjyvvPLKQ1+DjY0NTk5OZufJ6me7jh078s0335CcnMzmzZvx8vLK0Cc6OpoDBw4AGbPRIyMjjZIz7777LuPGjTNrb9asGY0bN+bdd9/l8OHDzJgx44lm3YvkNm02KiLPhf/85z9mAQKTbt26GT+nz0gLDAw0apt+9dVXFsumDB06FEdHR6Kjo9m/f79xPDIy0rj58PLyyvTx70qVKmV64/IoWrRoQdGiRUlISCA4ODhb57KkdevWRsDBlJlwP9PxatWqUaNGDbO2JUuWAPD6669brO1XunRp+vbtC/xTIkZERJ6MJ71G5qaRI0eaBdEfVcmSJY3g+cGDB3NqWiIi8hh9/PHHRhA9PU9PT6NGua+vr3Hc39+fGzduADB69OhM98WoWbMmPXv2NPpHR0cbbffu3QPSAvaPo/xmdqQvw2npc9eWLVtITk7Gzs4uQ/mX5cuXk5iYSOnSpRk9enSm4+3t7Y2ybnv27OHmzZs5eAUiTzcF0kXkmVehQgUqV66caZuzs7PxONv169eN4wEBAQCULVuW0qVLc/v27Uz/u3fvnnHuU6dOGeNPnDiBaa/m1q1bW5zbgzaNgbSMgJ9//pk+ffrg7u5OrVq1cHV1Nf4z3bSFhoY+8FxZ4eDgwGuvvQbApk2buH8P6vj4eHbt2gVkzFi4c+cOx48fB6Bx48YW38fbt28bme5nz541q9MrIiKPT26skbnFxsaGFi1aPLBfUlISq1atYvDgwbRo0YI6deo90S4nAAAgAElEQVSYrbumUmaPa90VEZGc4+joSNOmTS22t2vXDkjbiNMU8D169CgA+fPnt5o5bvqMdO/ePbNSK6bEovPnzzN9+nRiYmKydxE5zPQE8YkTJwgLC8vQbgqwe3h4ULx4cbM205fIDRs25O7duxbvAUxPsaWmpnL69OnHeTkiTxWVdhGRZ17JkiWttpuyE/7++2/j2MWLF4G0zWDq16//UK+TPgshIiLC+DmzjWsepg3gyJEjDBs2LMNGbpl52Bp7WeHp6cmqVau4evUqQUFBNG7c2Gjbtm0biYmJ2NjY0LlzZ7Nx4eHhJCUlATBx4kSjpp81KSkpxMXFUaJEiZy9CBERySA31sjcUqRIkUyzCtOLioqif//+nDt37oHne5zrroiI5IxKlSoZpcAyY/o8lpqaypUrVyhUqBBXrlwBwMXFJdMntkyqVatm/GwaA2kJRG3btmXHjh388ssvLFiwgNq1a/Pyyy/ToEEDPDw8cnVPqLZt2+Lo6EhCQgIbNmwwKyd66dIlIxEqs01GTfcAGzdufOgniZ+GewCRJ0UZ6SLyzLN245Re+kzrrHw4Tp9FbdrhHMj0MUITazdQ8fHxDB8+nNjYWIoVK8bo0aNZuXIl+/bt4+jRoxw7doxjx45RpkwZ4J9HCB+Hhg0bUq5cOSBjeRfTDVTDhg2NuaS/hqy4e/dulsaJiMijyY01MrdYW49NxowZw7lz57C3t+edd95h0aJF+Pv7ExQUZKy7psfcH+e6KyIiOeNBAev07bdv3zb780Fj09cpN40xmTlzJmPGjKFChQrcu3ePEydOsGDBAoYOHUqTJk2YNGkSt27deqRrySmOjo5GJv79wXDTZ730fdLLypz12U7+TZSRLiL/Sqabpjp16rBq1aosj4e08iaWMuDSB9zvt23bNmJiYrC1tWXJkiW88MILmfZ7EjdgNjY2dOrUiTlz5uDn58fEiRNxcHDgr7/+4vDhw0DmGQvpby7nzp37SJvqiIjI0ym7a+TDSk5OfmznzsylS5eMR9Y//fRTevXqlWm/O3fuPMlpiYhINlj7vHV/u+mzi+nPrIw1sbe3Z8CAAQwYMICwsDCCg4M5cuQIu3fvJioqil9//ZXjx4+zYsUKq1nvj4unpyfr168nLCyM48ePU69ePeCfwLopa/1+jo6O3Lx5k4EDB/LJJ5880TmLPAuUkS4i/0qmzUHDw8Mz1AR/GGXLljV+Nj3+lhlrbaaN3FxdXS0G0a9evfrEHi031dJLXxN906ZNpKSkkDdvXqNGYHrlypXD1jZtKQkPD38i8xQRkccru2skQN68eQHzkjH3i4yMzNK5syokJMT4uWPHjhb7PUzZFxEReTqEhYVZfYLof//7H5CWOGT6DGd6Ejc0NNTql7rnz583fjaNyUylSpXo2rUrkydPZvfu3Xh5eQFp+4fs3r37oa8lJ3l4eBilNE3B85MnTxr7f2SWJAXm9wAikpEC6SLyr2TakCYmJobAwMBHHl+vXj1sbGyAtF3cLdm5c6fFNtNj8NZu/B5Ul86U3ZATj59XrVqVWrVqAf888mf6s2XLlhQsWDDDmIIFC1KnTh0gbfd3ERF59mV3jQSMD+/WvlDet2+f1XPk5BoH5uVnLJ3z+PHjCh6IiDxDEhISOHDggMX2HTt2APDCCy9QqFAhAF5++WUg7Qkka2uRn58fkFYmzc3N7aHmkydPHrOa5BcuXHiocaaxJtld++zs7IxSZVu2bCE5Odn4bFeiRAmaNGmS6TjTPcD+/fuNzVlF5B8KpIvIv1KzZs2oXr06AJ999hnXr1+32v/y5ctmH8BLlixp3Hx4e3tz+fLlDGPCw8Px9va2eM7y5csDaUGGzHZTv3DhArNnz7Y6L2dnZyDnsvpMmQl79uzh8OHDRta8KVs9M++++y4AR48eZeHChVbPf+/evUyvVUREnh7ZXSMB6tatC6RlgafPBDe5fv06P/30k9Xz5vQaZ1p3AePJq/Ru377N559/niOvJSIiT86MGTMyLcu1ceNGTpw4AUD37t2N461ataJYsWIATJ8+PdNSmiEhIfj4+ADQpk0bihYtarSFhoaSkpJicT6XLl0yfjatZQ8jfd+cWPtMn+Gio6PZs2cPW7duBdKeyrK0h0rfvn1xcHDg9u3bfPrppyQlJVl9DVPGv8i/hQLpIvKvZGNjw9SpU8mXLx+hoaF06dKF+fPnc+7cOeLi4rhx4wZnzpxh1apVDBkyhPbt22e4wRo9ejR2dnbEx8fTr18/Nm7cSFRUFFFRUWzYsIF+/fqZ3XDdr3379tja2pKUlMTgwYPZuXMnUVFRXLlyhWXLltG3b1/y589v9ebLlEEeHh7O0qVLuXHjBsnJySQnJ1u9ubOkU6dO2NnZkZSUxNixY4G0G7oWLVpYHPPaa68Zj8hPnTqVYcOGsWfPHq5du8bNmzeJiIhg7969TJs2jbZt27J48eJHnpeIiDw5ObFGvvbaa0Y92aFDh7Jz505iYmK4du0a69ev58033zTKv1hiWuOOHj3K1q1biY2NzdYa99JLLxnB9MmTJ7N06VLCw8O5ceMGO3fupFevXoSEhFC5cuVHPreIiOSOkiVLcuHCBby8vDh48CAxMTFcunSJn376ifHjxwPg4uJC3759jTEODg5G259//kmfPn3YtWsX0dHRXL16FR8fH95++20SExNxdHTMUCt89uzZtG3blhkzZnDgwAGuXr3KzZs3uXTpEmvWrDEy0h0dHWnVqtVDX0vNmjWNspn//e9/iYiIIDExkeTk5CxlqNeoUYNq1aoB8OWXXxpfjFsq6wJQunRpJkyYAKRl5Pfo0YN169YRHh5OfHw8165d48iRI8ybN4833niDDz744JHnJfIs02ajIvKvVatWLRYuXMiHH37ItWvX+Oabb/jmm28y7WtnZ5fhW/uaNWvy1VdfMWHCBK5evcro0aPN2gsXLswPP/xAjx49jHOk5+Liwocffsi3335LaGgoQ4cONWsvWLAgP/zwA2PHjiU2NjbTebVq1YoKFSoQHh7OF198wRdffGG0devWjalTpz7cm/H/K168OE2aNGHfvn1EREQA8Prrr2Nvb2913NSpUylQoAArVqxgx44dxiOUmXnQuUREJPdld410dnbms88+Y+zYsURERGRY40qVKsXcuXOt1irv0qULc+fOJS4ujg8//NCsbfjw4WaPzj8MOzs7vvzySwYPHsytW7fM1kwAW1tbxo4dS0hIiNWSNCIi8vRwcXHh/fffZ9KkScaTsumVLFmSn3/+OcOXt507dyYyMpLp06dz9uxZhgwZkmFs4cKF+emnn6hYsWKGtoiICObOncvcuXMznVe+fPmYNm0aJUuWfOhrKV68OB06dGDTpk34+vri6+trtJUrV85qSVFLPD09mTFjhvHZLn05T0t69+6Nra0tkydP5syZM0aCVWZq1qz5yHMSeZYpkC4i/2r169fHz8+PNWvW4O/vz9mzZ4mLi8POzo7ixYtTrVo1PDw8eO211yhcuHCG8V27dqV69erMmTOHw4cPc/PmTUqUKEGzZs0YPHgwRYoUMfrev9M7wHvvvUfVqlVZvHgxp0+fJjk5mVKlStG0aVMGDBhgbPZiSb58+Vi6dCmzZs0iICCAv/76i7t372brPenSpYtZrUBrGQsmDg4OfPHFF/Ts2ZMVK1Zw5MgRYy4FChSgQoUK1KtXj5YtW1qsxyciIk+X7K6Rnp6elClThrlz53Ly5EkSEhIoXbo0bdu2ZdCgQVaf2oK0Gq7Lly9n9uzZHD58mKioqAc+Yv4g7u7urFy5klmzZhEUFMStW7coUqQIbm5ueHl50bBhQ8aNG5et1xARkSerT58+VKlShUWLFnHy5Eni4+MpXbo0bdq0YciQIRaf8B0wYABNmzZlyZIlHDp0iKioKOzs7KhQoQKtWrXi7bffznStGj16NB4eHgQGBnLmzBmioqKIjY0lb968VKpUCQ8PD/r162dsbvoopkyZwgsvvICfnx9hYWHcuXMnyxt/Q9pa/N133xlPcj3MZzuAnj170rJlS5YtW8bBgwe5dOkS8fHx5MuXjzJlylCzZk2aN29O27Ztszw3kWeRTWp2/hcpIiJW/fHHH3Tr1g2ANWvWULt27VyekYiIiIiIyLNt3LhxrF27lkaNGlndl0pEJCepRrqIyGNkevzOwcHB2LhNRERERERERESeLQqki4hkg6Xa5ZC2m/vChQsBaN26NQ4ODk9qWiIiIiIiIiIikoNUI11EJBvGjBmDk5MTHTt2pFatWjg5OREVFcW+ffuYPXs2t27dwt7ePsMmayIiIiIiIiIi8uxQIF1EJBvu3bvHli1b2LJlS6btDg4OfP3117i6uj7hmYmIiIiIiIiISE5RIF1EJBtGjBhB9erVOXz4MNeuXSMmJgYHBwfKli2Lh4cHb731FhUqVMjtaYqIiIiIiIiISDbYpKampub2JEREREREREREREREnlbabFRERERERERERERExAoF0kVERERERERERERErFAgXURERERERERERETECgXSRURERERERERERESsUCBdRERERERERERERMQKBdJFRERERERERERERKxQIF1ERERERERERERExAoF0kVEREREctihQ4dwdXXF1dUVX1/f3J6OPAa+vr7Gv/GhQ4dyezoiIiIi8pgpkC4iIiIiIiIiIiIiYoUC6SIiIiIiIkDr1q1xdXXFy8srt6fyzFPGvoiIiDxv8uT2BEREREREnjeNGzfm7NmzuT0NeYy6d+9O9+7dc3saIiIiIvKEKCNdRERERERERERERMQKBdJFRERERERERERERKywSU1NTc3tSYiIiIiIZMbX15fx48cDsGTJEho1asSmTZtYt24dZ8+eJTo6mmrVqrF+/Xqzcbdv32blypXs3r2bCxcuEBsbi5OTE5UrV6Zly5b06dOHQoUKmY1JTEykWbNmxMXF4ebmxvLlyx84vz59+nD06FEKFizIgQMHyJs3LwCHDh3irbfeAmDKlClWS4BER0fj4+PDvn37CAsLIz4+noIFC1KtWjXatWtHjx49yJcvX4Zxb7zxBqdOnaJWrVr4+vpmaE9ISKBRo0YkJSUBMHfuXF555ZUM/aZNm8a8efOwtbUlMDCQwoULP/C677d3717Wrl3L77//TlRUFPfu3cPZ2ZkiRYpQs2ZNmjZtStu2bXF0dMx0fEpKCtu2bWPbtm38/vvv3Lhxgzx58lC2bFnc3d3x8vKiUqVKmY69fPkybdq0AWD48OGMGDGCM2fOsGjRIoKCgoiKiqJgwYLUrVuX/v3706hRowzn8PLyIigo6IHXuXPnTsqXLw9k/N1s3LixWd/M2jds2MDq1as5f/48d+7coXz58nh6euLl5UX+/PmNsQEBAXh7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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "image/png": { + "width": 745, + "height": 489 + } + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tOssB4CKnAX2" + }, + "source": [ + "The balance was (mostly) restored." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9aHyGuTFgyPO" + }, + "source": [ + "## Data Preprocessing\n", + "\n", + "You might already know that Machine Learning models don't work with raw text. You need to convert text to numbers (of some sort). BERT requires even more attention (good one, right?). Here are the requirements: \n", + "\n", + "- Add special tokens to separate sentences and do classification\n", + "- Pass sequences of constant length (introduce padding)\n", + "- Create array of 0s (pad token) and 1s (real token) called *attention mask*\n", + "\n", + "The Transformers library provides (you've guessed it) a wide variety of Transformer models (including BERT). It works with TensorFlow and PyTorch! It also includes prebuild tokenizers that do the heavy lifting for us!\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "E7Mj-0ne--5t" + }, + "source": [ + "PRE_TRAINED_MODEL_NAME = 'bert-base-cased'" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fMSr7C-F_sey" + }, + "source": [ + "> You can use a cased and uncased version of BERT and tokenizer. I've experimented with both. The cased version works better. Intuitively, that makes sense, since \"BAD\" might convey more sentiment than \"bad\"." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NiLb-ltM-ZRz" + }, + "source": [ + "Let's load a pre-trained [BertTokenizer](https://huggingface.co/transformers/model_doc/bert.html#berttokenizer):" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "H3AfJSZ8NNLF" + }, + "source": [ + "tokenizer = BertTokenizer.from_pretrained(PRE_TRAINED_MODEL_NAME)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CfrSbwTQ-wi_" + }, + "source": [ + "We'll use this text to understand the tokenization process:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HZMitwrqm2eb" + }, + "source": [ + "sample_txt = 'When was I last outside? I am stuck at home for 2 weeks.'" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yO2qBTVl_KPs" + }, + "source": [ + "Some basic operations can convert the text to tokens and tokens to unique integers (ids):" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "iTFhpHpsoWO7", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 88 + }, + "outputId": "b20afc9d-6481-4d95-8fa9-c398d0d167db" + }, + "source": [ + "tokens = tokenizer.tokenize(sample_txt)\n", + "token_ids = tokenizer.convert_tokens_to_ids(tokens)\n", + "\n", + "print(f' Sentence: {sample_txt}')\n", + "print(f' Tokens: {tokens}')\n", + "print(f'Token IDs: {token_ids}')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + " Sentence: When was I last outside? I am stuck at home for 2 weeks.\n", + " Tokens: ['When', 'was', 'I', 'last', 'outside', '?', 'I', 'am', 'stuck', 'at', 'home', 'for', '2', 'weeks', '.']\n", + "Token IDs: [1332, 1108, 146, 1314, 1796, 136, 146, 1821, 5342, 1120, 1313, 1111, 123, 2277, 119]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bzbbKLR8lZbu" + }, + "source": [ + "### Special Tokens\n", + "\n", + "`[SEP]` - marker for ending of a sentence\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EXwz47bQvCbc", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "aa94d74a-326a-41df-80b4-a59ac690ee9b" + }, + "source": [ + "tokenizer.sep_token, tokenizer.sep_token_id" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "('[SEP]', 102)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 19 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Mip_eGeXwLFF" + }, + "source": [ + "`[CLS]` - we must add this token to the start of each sentence, so BERT knows we're doing classification" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_6K4it5HwE6l", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "73351498-edf2-410d-b444-8d7ba31781e7" + }, + "source": [ + "tokenizer.cls_token, tokenizer.cls_token_id" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "('[CLS]', 101)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 20 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Qi6O-yEY09gl" + }, + "source": [ + "There is also a special token for padding:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Vx7gD5xf1AFK", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "fa5cf8e7-5cd5-4056-afd4-5a781797515d" + }, + "source": [ + "tokenizer.pad_token, tokenizer.pad_token_id" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "('[PAD]', 0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 21 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6GWCfijM0TWB" + }, + "source": [ + "BERT understands tokens that were in the training set. Everything else can be encoded using the `[UNK]` (unknown) token:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "4cmfFsbEKQDT", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "2a7d9f8e-6c61-443b-d0f1-d7206cfbb00a" + }, + "source": [ + "tokenizer.unk_token, tokenizer.unk_token_id" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "('[UNK]', 100)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 22 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "W9ap7jdL0LYU" + }, + "source": [ + "All of that work can be done using the [`encode_plus()`](https://huggingface.co/transformers/main_classes/tokenizer.html#transformers.PreTrainedTokenizer.encode_plus) method:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Vea9edaaxSPO", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "389562b7-89d5-4fb3-e2d7-23a41fc15bb5" + }, + "source": [ + "encoding = tokenizer.encode_plus(\n", + " sample_txt,\n", + " max_length=32,\n", + " add_special_tokens=True, # Add '[CLS]' and '[SEP]'\n", + " return_token_type_ids=False,\n", + " pad_to_max_length=True,\n", + " return_attention_mask=True,\n", + " return_tensors='pt', # Return PyTorch tensors\n", + ")\n", + "\n", + "encoding.keys()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "dict_keys(['input_ids', 'attention_mask'])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 23 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sS69c8WvdOED" + }, + "source": [ + "The token ids are now stored in a Tensor and padded to a length of 32:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "YzBmcOla0yQR", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85 + }, + "outputId": "921d377a-4fd6-4939-e4a4-76ce57d4ed34" + }, + "source": [ + "print(len(encoding['input_ids'][0]))\n", + "encoding['input_ids'][0]" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "32\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([ 101, 1332, 1108, 146, 1314, 1796, 136, 146, 1821, 5342, 1120, 1313,\n", + " 1111, 123, 2277, 119, 102, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 24 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "itAyVPsNdyc1" + }, + "source": [ + "The attention mask has the same length:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Wiv5LLiw03Ox", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "8fd1b81a-a5b4-461a-f6f9-53d5ca497562" + }, + "source": [ + "print(len(encoding['attention_mask'][0]))\n", + "encoding['attention_mask']" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "32\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 25 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "m1RvhC4jNHHy" + }, + "source": [ + "We can inverse the tokenization to have a look at the special tokens:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "IagGoafKLUwW", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 561 + }, + "outputId": "a93cdc3c-518a-4d23-d708-f9cee1aea079" + }, + "source": [ + "tokenizer.convert_ids_to_tokens(encoding['input_ids'][0])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['[CLS]',\n", + " 'When',\n", + " 'was',\n", + " 'I',\n", + " 'last',\n", + " 'outside',\n", + " '?',\n", + " 'I',\n", + " 'am',\n", + " 'stuck',\n", + " 'at',\n", + " 'home',\n", + " 'for',\n", + " '2',\n", + " 'weeks',\n", + " '.',\n", + " '[SEP]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]',\n", + " '[PAD]']" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 26 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "waKjYxTDuaWt" + }, + "source": [ + "### Choosing Sequence Length\n", + "\n", + "BERT works with fixed-length sequences. We'll use a simple strategy to choose the max length. Let's store the token length of each review:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "BUnE5CT9hbeZ" + }, + "source": [ + "token_lens = []\n", + "\n", + "for txt in df.content:\n", + " tokens = tokenizer.encode(txt, max_length=512)\n", + " token_lens.append(len(tokens))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tI4goUrHf6da" + }, + "source": [ + "and plot the distribution:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SzE1j4jxmUtd", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 506 + }, + "outputId": "cf03f40b-88a7-43b0-bc2c-32eb6e16c935" + }, + "source": [ + "sns.distplot(token_lens)\n", + "plt.xlim([0, 256]);\n", + "plt.xlabel('Token count');" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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woUL09jYmNGjR6e+vj6XXXZZzjnnnF1eVy6X88ILL2TJkiVdXytWrEhLS8c25nnz5mXChAm7vXdTU1PmzZuXJ598MsuXL89rr72WlpaWjBkzJvX19bnwwgvzh3/4hxk8ePAu17jxxhsze/bsd/ycH//4x/PXf/3X7zjvQFMu79hWZay2KoX3n2qTJ9Yl61qT9W3Jz9ckF42tdFUAAAAAHOz6NRz/0pe+lJkzZ+7wvVdffTU//vGPM2fOnHz1q1/NxRdf3Of1Z8+enVtuuaUr0E6ShoaGPProo3n00Udz+eWX58tf/vJOr121alUuuOCCPt97yZIlufzyy9Pa2vq2c2+88UbeeOONzJ8/P//4j/+YO++8M7W1tTtZhfVtybbtfaVHDkpG7fr3CBTEsEHJxXXJva93jB9em/yHmo5d5QAAAACwr/RbOH7XXXd1BePTpk3LtddemyOOOCLLli3L7bffnueeey433XRTjj766EyZMqXX6y9atCg333xzWltbc/zxx+eGG27I5MmT89prr2XGjBl5+OGHc//99+eoo47KNddcs9u1xo8fn5NOOilr167NU089tUf337x5c1pbW1NTU5MLL7wwZ511Vo477riMGDEiL7zwQr7//e9n7ty5+fWvf53PfOYzuf/++zNo0K671kyZMiV33XXXLs8PGXJwJoM7tFSxa5ztPnBoMn9t8tLWpKWczG5IPnlkpasCAAAA4GDWLz3Hm5qaMmPGjCTJ1KlTM3369NTX16e2tjZTp07Nfffdl7q6urS2tub222/v0z1uu+22tLa2pq6uLvfdd1+mTp2a2tra1NfXZ/r06TnzzDOTJDNmzEhTU9Pbrq+pqcmdd96ZJ554Ir/4xS8yffr0nH766Xt8/0MOOSQ33HBDHnvssdx8880566yzcsQRR6Smpibvf//78+1vfzt/8id/kiRZvHhxHnrood2uN3jw4IwaNWqXX0OHHpzJ8RtexslODColHz28e/yrN5MXNleuHgAAAAAOfv0Sjs+ePTubNm1Kklx//fUplUo7nB8zZkyuvvrqJMnTTz+dpUuX9mr9Z555JkuWLEmSXH311RkzZswO50ulUr7whS8kSTZt2pQHHnjgbWtUV1dn2rRpGTu2b82MJ0+enKuuuirDhg3b5ZzPf/7zXbvFH3/88T7d52DXs994nXCcHo4bmbyvunv8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9viz1atX56677sq9996bL3/5y/nQhz7U7/vffffd+fznP98daCdJY2NjHnzwwTz44IM5++yzc9VVV+31va+99lo+8IEP9PvZXbZs2ZILLrggTz31VI8///Wvf51f//rXWbZsWW666aa89a1v7fUezz77bD7xiU+ksbGx+8927NiRJ598Mk8++WTuvffe3HzzzZkyZUqv96g24Tj03bzO7vGfbunYf3d98um+fRcHAAAAwCCp2FiVm266qTsYP+WUU7Js2bI89thj+cY3vpE3v/nNaW5uzpVXXpknnniiX/d/4okn8rnPfS4tLS1585vfnG984xt57LHHsmzZspxyyilJkjvuuCM33XTTfu81b968nHrqqTn22GMPuI7Pfvazeeqpp1IoFHLxxRfnhz/8YR5++OFce+21mTJlShobG/OHf/iHaWpq2uv7m5qacvHFF6exsTFTp07Ntddem4cffjg//OEPc/HFF6dQKOTJJ5/MZz/72QOu7WAqD8enC8dhv8pnjz9j9jgAAABA1VUkHN+wYUNuvPHGJMkJJ5yQG264IUuWLMnMmTNzwgkn5Pbbb099fX1aW1tz3XXX9esZX/nKV9La2pr6+vrcfvvtOeGEEzJz5swsWbIkN9xwQ971rnclSW688cZs2LBhj/dPnz49f/VXf5VHHnkkP/7xj3PDDTfk+OOPP6AafvzjH+ehhx5KkvzxH/9xPvOZz2ThwoWZM2dOzjzzzPz1X/91CoVCGhoacvPNN+/1HjfddFMaGhpSKBTy9a9/PWeeeWbmzJmThQsX5jOf+Uz++I//OEny0EMPdT9rKNI5Dgdm3rjkN8v+Y5Dvmj0OAAAAUFUVCcfvvvvubN++PUlHZ3WhUOjx+owZM3LhhRcmSZ566qk888wzB3T/X/7yl3n66aeTJBdeeGFmzJjR4/VCoZDLLrssSbJ9+/Z85zvf2eMekydPzimnnJLZs2cf0LPLffvb307S8fNccMEFe7x+7LHH5sQTT0yS/P3f/31aW1t7vN7a2pq/+7u/S5KceOKJe+1cv+CCCzJ9+vQezxtq2orJ5rbSfqpwHPrkA7t1j7+oexwAAACgaioSji9fvjxJsnDhwixZsmSv17z//e/vXj/wwAP9uv/u9ym3ZMmSLFy4sF/374udO3fmscceS5KcfPLJqaur2+t1XfU1NTXtMULmZz/7WTZv3tzjut3V1dV1j4n5l3/5l+zcubMi9VdSU2vHwYJJMnlMUlvY5+VApz26x9dVrxYAAACA0a4i4XhXJ/gxxxzT6zXz5s3L3Llze1x/oPefO3du5s2b1+t1Xc8/0Pv3xa9+9avs2rUrSfL2t7+91+vKX9u9jvJ9X+6xa9euvPDCC/2qdzCtK52HmmljqlcHDEcfqC91jz+7vaODHAAAAICDb8DheENDQ/dIlcMOO2yf1x566KFJkpdeeumAntF1fV/vv23btjQ0NBzQM/paQ/lz9mbBggWpqanZ4z3l+5qamixYsKDXe5Tf/0D/XR0M68vDcSNV4IDMq0v+/dTS/rY11asFAAAAYDQbcLS5cePG7vWsWbP2eW3X601NTf16Rl/v3/WMrk71Sujrzzl27NhMnTo1TU1Ne/ycXfeYOnVqxo4d2+s9Zs6c2b0+0H9XB2Lr1q17jH7Zn/r6+qxsmplkcpJkzK6teeWV4X+y4LbaWdnWnLyycvj/LF38TEPXMe21+UkWpJhCfrolufu5NVm4dXW1yzrgzwNg5PO5AJTzmQDszucCUG44fiYMuHO8q2s8ScaNG7fPa7te37btwOYI7NjRcWpdb3O+u4wfP36vdVVCVw1J33/O3Wvousf+3j+YP0clbGgr/bWZnLZ9XAnszaya1iypKX0OfnXjtCpWAwAAADA6GYoxik2ePDmLFi064Pdt31TsXi+cNS2Hzxj+wd6kycmk5uTwwydXu5SK8TMNbR9uTp55qeNw24d3TMiut/5GfmtadU637fpmd+nSpVV5PjD0+FwAyvlMAHbncwEoV+3PhOeeey5bt27t13sH3Dk+ceLE7nXXgZW96Xp90qRJB/SMCRMmJEmam5v3ed3OnTv3WlcldNWQ9P3n3L2Grnvs7/2D+XNUwobW0trMceifuXXJcWWzx68eescLAAAAAIxoAw7HZ8yY0b1ev37fc4C7Xp8+fXq/ntHX+/fnGX2tYX91tLS0ZPPmzXutoesemzdvTmtr6x7v7bJhw4budaV/jkpY50BOqIj3zyp9CP9wY/JoU3Gf1wMAAABQOQMOx+fMmdPd3bxy5cp9Xrtq1aokyZFHHnlAz+i6vq/3nzRpUkUP4yyvofw5e7N69eq0t7fv8Z7yfXt7e1577bVe71F+/wP9d3UwrBeOQ0XMrUtOLZ2/m6tfrlopAAAAAKPOgMPxQqGQJUuWJEmefvrpXq9bu3ZtGhoakqT7+r7qur6hoaH7Hnvz1FNP9ev+ffGmN72p+yDNrufszZNPPtm93r2O8n1f7jFu3Li88Y1v7Fe9g6WtWMyG8nB8TPVqgZHgnHnJmM5R4z/amDyiexwAAADgoBhwOJ4kJ510UpLklVdeyYoVK/Z6zQ9+8IPu9Xvf+95+3T9Jvv/97+/1mmeffTavvvpqv+7fF+PHj8873/nOJMn999/f6/zzrp9z+vTpewyhP/bYYzN16tQe1+2uubk5DzzwQJLkt37rtzJ+/PiK1F8p61qS9s71xJpkbEX+BsHodei45GNl/6HLl16uWikAAAAAo0pFos0zzjije7TK9ddfn2KxZ+djU1NTbr755iTJMcccc8Cd3UcffXTe9ra3JUluvvnmNDU19Xi9WCzm+uuvT9JxgOXpp5/er59jfz7ykY8k6ZgJfuutt+7x+hNPPJEHH3wwSfLhD384tbU9Z47U1tbmD/7gD5Iky5cv7z7Jtdytt97aPXO863lDyZqys0SnG6kCFXHl4brHAQAAAA62ioTjM2fOzCWXXJIkefjhh3PppZdmxYoV2bBhQx599NGcc845aWxsTG1tbS6//PI93r9s2bIsWrQoixYtyrJly/b6jCuuuCK1tbVpbGzMOeeck0cffTQbNmzIihUrcumll+aRRx5JklxyySWZOXPmXu/xwgsv5Mknn+z+Z+3atd2vrVixosdr5YdidnnPe96Td7/73UmSr371q/nqV7+alStXprGxMXfffXc++clPpr29PXPnzs2FF1641xouuuiizJ07N+3t7fnkJz+Zu+++O42NjVm5cmX+4i/+Il/96leTJO9+97u7nzWUrC5rmJ8qHIeKeOPEQs4p6x43exwAAABg8FUs3rzooouyatWq3Hnnnbnvvvty33339Xh97Nixueaaa/YYNdJXS5cuzTXXXJPPf/7zef7553P++efvcc1ZZ52Viy66qNd7XH311fnJT36y19c+9alP9dhfe+21OfPMM/e47vrrr8+FF16Yp556Kl//+tfz9a9/vcfrs2fPzt/8zd9k+vTpe33O9OnT89d//df5xCc+kcbGxlxxxRV7XPP2t789f/7nf97rz1FNOsdhcFx5RPKthqStmNy/MXm4qZjfnl6odlkAAAAAI1ZF482rr746J554Yu64444888wz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9u095mvTpk2dtA8AAACA7xEcBwAAQLMXEBCg2NhYr+ktWrRwbHft2lWdOnWqj2YBAAAAqEMsqwIAAAAAAAAAaHaYOQ4AAAD4wIULF7R8+XJt2rRJ6enpunDhgtq0aaPY2FgNGzZM//mf/6mAgIBanWPt2rV6/vnnZbFY1KNHD6WkpCg6Otolz8mTJ7V8+XLt3LlTJ0+eVGFhocLCwhQfH6/hw4drxIgR8vf3/M+AZ599VmvXrpUk/fTTTzKbzVq+fLnWrVunjIwMmc1mderUScOGDdPDDz+sVq1a1ao/drm5ufroo4+0Y8cOpaen6/z58woICFDHjh3Vu3dvJSYmauDAgfLz8/NYfvPmzfrkk0+Umpqqs2fPKigoSB06dNCAAQP04IMPqmPHjl7PPWTIEJ08eVL9+vXT0qVLveZbs2aNZs6cKUn64IMPdNNNN7mkv/7661q4cKEkaePGjerYsaM++eQTrV69WmlpaSoqKlKHDh00aNAgTZs2Te3atXMp7+mhsDNnznSc066ydgIAAKDqCI4DAAAAtbRv3z499thjysnJcTmek5OjnJwc7dy5U++//77effddde7cuUbneOedd/SXv/xFknTDDTforbfeclvj/L333tOrr74qs9nscjw7O1vZ2dnaunWrli5dqrfeektRUVEVni83N1dTpkxxrLVul5aWprS0NH399ddaunSp2rZtW6P+2K1Zs0Zz585VUVGRy3Gz2ew416pVq/TJJ58oPj7eJU9hYaFmzJihLVu2uBwvLS1VQUGBDh8+rA8//FB/+MMfNHbs2Fq1szpKSko0ZcoUbdu2zeV4RkaG3n//fX355Zf68MMPa/zfAgAAAHyD4DgAAABQC0ePHtXEiRMdwd277rpLI0aMUGRkpE6ePKmPP/5Y27ZtU3p6uh588EF9+umn1Qool5eX66WXXtKHH34oSbr99tu1YMECBQUFueRznrncrVs33XffferWrZvatWunM2fO6Ouvv9Ynn3yiAwcOaPLkyfroo49c1lK/1GOPPaaffvpJ999/v4YOHarw8HBlZmYqJSVF+/fvV1pamubPn6958+ZV9yNz+PDDDzV37lxJtnXfR48erYEDB6pDhw4ym81KT0/Xzp07tWHDBreyVqtV06dP144dOyRJ3bt314QJExQXFyeTyaRt27bp/fffV0lJiZ5//nmFhITorrvuqnFbq+P555/XP//5T40YMULDhw9XdHS0zpw5o6VLl2r79u3KysrSc8895zID3P5Q2B9++EH/7//9P0nSk08+6TabPCQkpF76AAAA0BwQHAcAAABqYdasWY7A+Jw5c3Tfffc50hISEjRs2DDNnz9fixYtUlZWVrUCyqWlpXrmmWf01VdfSZLGjRun2bNny2h0fXTQnj179MYbb0iSpk6dqqeeesolT0JCggYPHqwhQ4Zo+vTpOnz4sJYsWaJHH33U67n379+v5ORk3XzzzY5jPXv21G233aYxY8boyJEj+uyzz/S73/1O4eHhVeqPsyNHjjg+h/DwcL333nvq2bOnS54+ffpo1KhRys/Pd+vzqlWrHIHxfv36KSUlxeUHg379+ikxMVHjx49XcXGx5syZo9tuu02tW7eudlura+/evUpKStLo0aMdx3r27KmBAwfq4Ycf1q5du7R79279+OOPuvrqqyX9+lDYc+fOOcpERUVV+KBYAAAA1A4P5AQAAABq6MCBA9qzZ48k6dZbb3UJjDt7+umnddVVV0mSPvvsM509e7bSuvPz8/Xwww87AuPTp0/XH//4R7cgsSS9/fbbslqt6tWrl2bMmOExj2SbdT5s2DBJ0sqVKys8/wMPPOASGLcLDg7WAw88IMm29Mm+ffsq7YsnycnJjuVf5s6d6xYYdxYaGuq2vvkHH3wgyRZUfvnll91m0ktS7969NW3aNElSQUGBVq9eXaO2VldiYqJLYNzOaDRq4sSJjv3vvvuuXtoDAAAAzwiOAwAAADVkn7ks2WZ1e+Pv7+9Y89psNuvbb7+tsN6srCw98MAD+u677+Tn56cXX3xRjz/+uMe8hYWF2rlzpyTpzjvvlMFgqLDufv36SZJOnTql06dPe8139913e0279tprHduZmZkVns8Tq9XqWCe8a9euSkxMrFb57OxsHT58WJIcy7B4c++99zp+LHD+vupSXX52AAAA8B2WVQEAAABq6KeffnJs9+nTp8K81113nUu54cOHe8z3888/695779Uvv/yi4OBgvfrqqxoyZIjXeg8ePCiLxSJJSkpKUlJSUpXbf+bMGUVHR3tMu/LKK72WCwsLc2xfuHChyuezO3HihPLy8iT9GqyvDntgXKr8cw8PD1eXLl2Unp7u8n3Vpbr87AAAAOA7zBwHAAAAasge4DUajWrXrl2FeSMiItzKefLFF1/ol19+kSTNmDGjwsC4pCot0eKNyWTymlbRwzqdZ6eXl5dX+7y5ubmO7fbt21e7vPPnFxkZWWl+e56KPndfquihmc5L3tTkswMAAIDvMHMcAAAAaEBuvfVW7d27V4WFhXrttdcUHx9f4ezqsrIyx/ZTTz1VaTDdWadOnWrVVgAAAKAxIzgOAAAA1JB9iYzy8nKdPXvWZXb4pXJyctzKedK7d289/vjjmjx5sgoKCjR16lS99dZb6t+/v8f84eHhjm1/f3/FxsZWtxv1zrnNZ86cqXZ5588vOzu70vz2PJ4+d/tM7spmcRcXF1eniQAAAGgEWFYFAAAAqKG4uDjH9r59+yrM+89//tOxffXVV1eYt0+fPlq8eLHatGmj4uJiTZs2Tdu2bfOYNz4+3hHg/f7776va9MuqU6dOjkD17t27q13e+XNPTU2tMG9ubq4yMjIkef7cW7ZsKUnKz8+vsJ6jR49Wt5k1UtkDVQEAAOA7BMcBAACAGhowYIBj++OPP/aar6ysTKtWrZIkBQQE6Kabbqq07muvvVZLlixRWFiYSkpK9Oijj2rLli1u+cLCwnTjjTdKkrZu3aq0tLRq9qL+GQwGx/Ivx44d04YNG6pVPiIiwhEg37p1q06fPu0178qVKx2zwm+55Ra39CuuuEKSlJ6e7vUBmSUlJfr666+r1caaCg4OdmyXlpbWyzkBAACaK4LjAAAAQA317NlTffv2lSR98803Wrlypcd8r776qo4cOSJJGjFihMuyIpXV//777ys8PFylpaV6/PHHPQaSp0+fLoPBoLKyMj3++OPKzMyssN6jR4/q888/r1Ib6srkyZMVEBAgSZo1a5YOHTrkNW9BQYFb4Pq3v/2tJFsA+fe//73HQPIPP/ygt99+W5IUGhqq0aNHu+Wxr+duNpu1ZMkSt/Ty8nLNmTOnSsu3+ILzA0qPHTtWL+cEAABorlhzHAAAAKiFuXPnasyYMSoqKtLzzz+v3bt366677lJERIROnTqljz/+WFu3bpUkRUVF6Xe/+1216r/66qu1dOlSjR8/Xjk5OXryySe1YMEC/eY3v3HkufHGG/XEE0/otdde07FjxzRixAiNGjVKt9xyi6Kjox1roh86dEjffPON9u3bpxEjRujOO+/06WdRHVdddZVmzpypF154Qbm5uRo7dqxGjx6tQYMGKSoqShaLRRkZGdq1a5e++uor/e1vf1N8fLyj/JgxY/TFF19ox44d+sc//qHRo0drwoQJiouLk8lk0vbt27VkyRKZTCZJ0pw5c9S6dWu3dowYMUILFy7U+fPntXDhQuXl5enf//3fFRwcrJ9//lnLly/X3r17df3112vv3r11/rlER0erY8eOOnnypFatWqXu3bvrmmuucfyQEBISopiYmDpvBwAAQHNAcBwAAACohSuvvFKLFy/WY489ppycHK1bt07r1q1zy9etWze9++67atu2bbXP0b17d0eA/MyZM5oxY4ZeeeUVDR8+3JHnkUceUXh4uObNm6eioiItW7ZMy5Yt81qnp0BxfXvggQcUGBiol156ScXFxfroo4/00UcfVamswWDQ66+/rhkzZmjLli1KS0vTc88955YvMDBQf/jDH7z+ENC2bVslJSXpiSeekNls1tKlS7V06VKX8zzyyCPq3LlzvQTHJenxxx/XzJkzVVBQ4Nanfv36ubQPAAAANUdwHAAAAKilPn366KuvvtKyZcu0adMmpaenq7CwUKGhoYqLi9OwYcM0ZswYBQYG1vgcV155pT788EONHz9ev/zyi5555hlZLBbdfffdjjz33nuvhg0bppUrV2rHjh06evSo8vLyZDQaFRYWpq5du+q6667TkCFD1Lt3b190vdbGjh2rwYMHa9myZdq+fbsyMjJUUFCg4OBgdezYUX369NFvfvMbrw/TfOedd7Rp0yZ98sknSk1NVW5urgIDAxUTE6NbbrlFDz30kDp27FhhG4YOHapVq1bp3Xff1e7du5WXl6ewsDD16tVLDz30kPr37681a9bU1UfgZvTo0YqMjNTy5cv1r3/9S7m5uTKbzfV2fgAAgObCYLVarZe7EQAAAAAAAAAA1CceyAkAAAAAAAAAaHYIjgMAAAAAAAAAmh2C4wAAAAAAAACAZofgOAAAAAAAAACg2SE4DgAAAAAAAABodgiOAwAAAAAAAACaHYLjAAAAAAAAAIBmh+A4AAAAAAAAAKDZITgOAAAAAAAAAGh2CI4DAAAAAAAAAJodguMAAAAAAAAAgGaH4DgAAAAAAAAAoNkhOA4AAAAAAAAAaHYIjgMAAAAAAAAAmh2C4wAAAAAAAACAZofgOAAAAAAAAACg2SE4DgAAAAAAAABodgiOAwAAAAAAAACaHYLjAAAAAAAAAIBm5/8DsOPQvHmlo5wAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "image/png": { + "width": 739, + "height": 489 + } + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oW6ajl30t6du" + }, + "source": [ + "Most of the reviews seem to contain less than 128 tokens, but we'll be on the safe side and choose a maximum length of 160." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "t7xSmJtLuoxW" + }, + "source": [ + "MAX_LEN = 160" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XvvcoU6nurHy" + }, + "source": [ + "We have all building blocks required to create a PyTorch dataset. Let's do it:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "E2BPgRJ7YBK0" + }, + "source": [ + "class GPReviewDataset(Dataset):\n", + "\n", + " def __init__(self, reviews, targets, tokenizer, max_len):\n", + " self.reviews = reviews\n", + " self.targets = targets\n", + " self.tokenizer = tokenizer\n", + " self.max_len = max_len\n", + " \n", + " def __len__(self):\n", + " return len(self.reviews)\n", + " \n", + " def __getitem__(self, item):\n", + " review = str(self.reviews[item])\n", + " target = self.targets[item]\n", + "\n", + " encoding = self.tokenizer.encode_plus(\n", + " review,\n", + " add_special_tokens=True,\n", + " max_length=self.max_len,\n", + " return_token_type_ids=False,\n", + " pad_to_max_length=True,\n", + " return_attention_mask=True,\n", + " return_tensors='pt',\n", + " )\n", + "\n", + " return {\n", + " 'review_text': review,\n", + " 'input_ids': encoding['input_ids'].flatten(),\n", + " 'attention_mask': encoding['attention_mask'].flatten(),\n", + " 'targets': torch.tensor(target, dtype=torch.long)\n", + " }" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x2uwsvCYqDJK" + }, + "source": [ + "The tokenizer is doing most of the heavy lifting for us. We also return the review texts, so it'll be easier to evaluate the predictions from our model. Let's split the data:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "B-vWzoo81dvO" + }, + "source": [ + "df_train, df_test = train_test_split(df, test_size=0.1, random_state=RANDOM_SEED)\n", + "df_val, df_test = train_test_split(df_test, test_size=0.5, random_state=RANDOM_SEED)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "xz3ZOQXVPCwh", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "dd8d2844-3b22-425d-dc40-725f7f46e52a" + }, + "source": [ + "df_train.shape, df_val.shape, df_test.shape" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "((14171, 12), (787, 12), (788, 12))" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 32 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "J4tQ1x-vqNab" + }, + "source": [ + "We also need to create a couple of data loaders. Here's a helper function to do it:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KEGqcvkuOuTX" + }, + "source": [ + "def create_data_loader(df, tokenizer, max_len, batch_size):\n", + " ds = GPReviewDataset(\n", + " reviews=df.content.to_numpy(),\n", + " targets=df.sentiment.to_numpy(),\n", + " tokenizer=tokenizer,\n", + " max_len=max_len\n", + " )\n", + "\n", + " return DataLoader(\n", + " ds,\n", + " batch_size=batch_size,\n", + " num_workers=4\n", + " )" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "vODDxMKsPHqI" + }, + "source": [ + "BATCH_SIZE = 16\n", + "\n", + "train_data_loader = create_data_loader(df_train, tokenizer, MAX_LEN, BATCH_SIZE)\n", + "val_data_loader = create_data_loader(df_val, tokenizer, MAX_LEN, BATCH_SIZE)\n", + "test_data_loader = create_data_loader(df_test, tokenizer, MAX_LEN, BATCH_SIZE)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "A6dlOptwqlhF" + }, + "source": [ + "Let's have a look at an example batch from our training data loader:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Y93ldSN47FeT", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "ee6eaa1a-3f03-4e18-c059-02dbf8b8bc14" + }, + "source": [ + "data = next(iter(train_data_loader))\n", + "data.keys()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "dict_keys(['review_text', 'input_ids', 'attention_mask', 'targets'])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 35 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "IdU4YVqb7N8M", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "1f67fe37-6634-484f-caa2-1517e80a29d9" + }, + "source": [ + "print(data['input_ids'].shape)\n", + "print(data['attention_mask'].shape)\n", + "print(data['targets'].shape)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "torch.Size([16, 160])\n", + "torch.Size([16, 160])\n", + "torch.Size([16])\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "H63Y-TjyRC7S" + }, + "source": [ + "## Sentiment Classification with BERT and Hugging Face" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "440Nd31VTHER" + }, + "source": [ + "There are a lot of helpers that make using BERT easy with the Transformers library. Depending on the task you might want to use [BertForSequenceClassification](https://huggingface.co/transformers/model_doc/bert.html#bertforsequenceclassification), [BertForQuestionAnswering](https://huggingface.co/transformers/model_doc/bert.html#bertforquestionanswering) or something else. \n", + "\n", + "But who cares, right? We're *hardcore*! We'll use the basic [BertModel](https://huggingface.co/transformers/model_doc/bert.html#bertmodel) and build our sentiment classifier on top of it. Let's load the model:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0P41FayISNRI" + }, + "source": [ + "bert_model = BertModel.from_pretrained(PRE_TRAINED_MODEL_NAME)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aFE7YSbFdY4t" + }, + "source": [ + "And try to use it on the encoding of our sample text:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "s1aoFxbQSn15" + }, + "source": [ + "last_hidden_state, pooled_output = bert_model(\n", + " input_ids=encoding['input_ids'], \n", + " attention_mask=encoding['attention_mask']\n", + ")" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "mLLu8zmqbaHV" + }, + "source": [ + "The `last_hidden_state` is a sequence of hidden states of the last layer of the model. Obtaining the `pooled_output` is done by applying the [BertPooler](https://github.com/huggingface/transformers/blob/edf0582c0be87b60f94f41c659ea779876efc7be/src/transformers/modeling_bert.py#L426) on `last_hidden_state`:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mUJHXNpIbcci", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "74906d2c-153b-4f40-e682-b6f501d1ecfd" + }, + "source": [ + "last_hidden_state.shape" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([1, 32, 768])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 39 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Q4dAot4zbz8k" + }, + "source": [ + "We have the hidden state for each of our 32 tokens (the length of our example sequence). But why 768? This is the number of hidden units in the feedforward-networks. We can verify that by checking the config:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "nsxB7Qy7b5YN", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "8aa72ce7-ff62-4075-c36f-4a4f7cda8182" + }, + "source": [ + "bert_model.config.hidden_size" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "768" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 40 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wTKi8-rTd_j4" + }, + "source": [ + "\n", + "\n", + "You can think of the `pooled_output` as a summary of the content, according to BERT. Albeit, you might try and do better. Let's look at the shape of the output:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2jIAtRhaSz9c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "907e30cd-ad8b-4686-9d50-516f29703ebe" + }, + "source": [ + "pooled_output.shape" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "torch.Size([1, 768])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 41 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0o_NiS3WgOFf" + }, + "source": [ + "We can use all of this knowledge to create a classifier that uses the BERT model:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "m_mRflxPl32F" + }, + "source": [ + "class SentimentClassifier(nn.Module):\n", + "\n", + " def __init__(self, n_classes):\n", + " super(SentimentClassifier, self).__init__()\n", + " self.bert = BertModel.from_pretrained(PRE_TRAINED_MODEL_NAME)\n", + " self.drop = nn.Dropout(p=0.3)\n", + " self.out = nn.Linear(self.bert.config.hidden_size, n_classes)\n", + " \n", + " def forward(self, input_ids, attention_mask):\n", + " _, pooled_output = self.bert(\n", + " input_ids=input_ids,\n", + " attention_mask=attention_mask\n", + " )\n", + " output = self.drop(pooled_output)\n", + " return self.out(output)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UJg8m3NQJahc" + }, + "source": [ + "Our classifier delegates most of the heavy lifting to the BertModel. We use a dropout layer for some regularization and a fully-connected layer for our output. Note that we're returning the raw output of the last layer since that is required for the cross-entropy loss function in PyTorch to work.\n", + "\n", + "This should work like any other PyTorch model. Let's create an instance and move it to the GPU:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i0yQnuSFsjDp" + }, + "source": [ + "model = SentimentClassifier(len(class_names))\n", + "model = model.to(device)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VCPCFDLlKIQd" + }, + "source": [ + "We'll move the example batch of our training data to the GPU:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mz7p__CqdaMO", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "7a933577-8c04-42f3-c3ea-ecb9c1c30a5b" + }, + "source": [ + "input_ids = data['input_ids'].to(device)\n", + "attention_mask = data['attention_mask'].to(device)\n", + "\n", + "print(input_ids.shape) # batch size x seq length\n", + "print(attention_mask.shape) # batch size x seq length" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "torch.Size([16, 160])\n", + "torch.Size([16, 160])\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Hr1EgkEtKOIB" + }, + "source": [ + "To get the predicted probabilities from our trained model, we'll apply the softmax function to the outputs:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2rTCj46Zamry", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 289 + }, + "outputId": "04ecb643-ccda-461f-886f-aefe01f9a248" + }, + "source": [ + "F.softmax(model(input_ids, attention_mask), dim=1)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[0.5879, 0.0842, 0.3279],\n", + " [0.4308, 0.1888, 0.3804],\n", + " [0.4871, 0.1766, 0.3363],\n", + " [0.3364, 0.0778, 0.5858],\n", + " [0.4025, 0.1040, 0.4935],\n", + " [0.3599, 0.1026, 0.5374],\n", + " [0.5054, 0.1552, 0.3394],\n", + " [0.5962, 0.1464, 0.2574],\n", + " [0.3274, 0.1967, 0.4759],\n", + " [0.3026, 0.1118, 0.5856],\n", + " [0.4103, 0.1571, 0.4326],\n", + " [0.4879, 0.2121, 0.3000],\n", + " [0.3811, 0.1477, 0.4712],\n", + " [0.3354, 0.1354, 0.5292],\n", + " [0.3999, 0.2822, 0.3179],\n", + " [0.5075, 0.1684, 0.3242]], device='cuda:0', grad_fn=)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 45 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g9xikRdtRN1N" + }, + "source": [ + "### Training" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "76g7FV85H-T8" + }, + "source": [ + "To reproduce the training procedure from the BERT paper, we'll use the [AdamW](https://huggingface.co/transformers/main_classes/optimizer_schedules.html#adamw) optimizer provided by Hugging Face. It corrects weight decay, so it's similar to the original paper. We'll also use a linear scheduler with no warmup steps:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5v-ArJ2fCCcU" + }, + "source": [ + "EPOCHS = 10\n", + "\n", + "optimizer = AdamW(model.parameters(), lr=2e-5, correct_bias=False)\n", + "total_steps = len(train_data_loader) * EPOCHS\n", + "\n", + "scheduler = get_linear_schedule_with_warmup(\n", + " optimizer,\n", + " num_warmup_steps=0,\n", + " num_training_steps=total_steps\n", + ")\n", + "\n", + "loss_fn = nn.CrossEntropyLoss().to(device)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "A8522g7JIu5J" + }, + "source": [ + "How do we come up with all hyperparameters? The BERT authors have some recommendations for fine-tuning:\n", + "\n", + "- Batch size: 16, 32\n", + "- Learning rate (Adam): 5e-5, 3e-5, 2e-5\n", + "- Number of epochs: 2, 3, 4\n", + "\n", + "We're going to ignore the number of epochs recommendation but stick with the rest. Note that increasing the batch size reduces the training time significantly, but gives you lower accuracy.\n", + "\n", + "Let's continue with writing a helper function for training our model for one epoch:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bzl9UhuNx1_Q" + }, + "source": [ + "def train_epoch(\n", + " model, \n", + " data_loader, \n", + " loss_fn, \n", + " optimizer, \n", + " device, \n", + " scheduler, \n", + " n_examples\n", + "):\n", + " model = model.train()\n", + "\n", + " losses = []\n", + " correct_predictions = 0\n", + " \n", + " for d in data_loader:\n", + " input_ids = d[\"input_ids\"].to(device)\n", + " attention_mask = d[\"attention_mask\"].to(device)\n", + " targets = d[\"targets\"].to(device)\n", + "\n", + " outputs = model(\n", + " input_ids=input_ids,\n", + " attention_mask=attention_mask\n", + " )\n", + "\n", + " _, preds = torch.max(outputs, dim=1)\n", + " loss = loss_fn(outputs, targets)\n", + "\n", + " correct_predictions += torch.sum(preds == targets)\n", + " losses.append(loss.item())\n", + "\n", + " loss.backward()\n", + " nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)\n", + " optimizer.step()\n", + " scheduler.step()\n", + " optimizer.zero_grad()\n", + "\n", + " return correct_predictions.double() / n_examples, np.mean(losses)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "E4PniYIte0fr" + }, + "source": [ + "Training the model should look familiar, except for two things. The scheduler gets called every time a batch is fed to the model. We're avoiding exploding gradients by clipping the gradients of the model using [clip_grad_norm_](https://pytorch.org/docs/stable/nn.html#clip-grad-norm).\n", + "\n", + "Let's write another one that helps us evaluate the model on a given data loader:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "CXeRorVGIKre" + }, + "source": [ + "def eval_model(model, data_loader, loss_fn, device, n_examples):\n", + " model = model.eval()\n", + "\n", + " losses = []\n", + " correct_predictions = 0\n", + "\n", + " with torch.no_grad():\n", + " for d in data_loader:\n", + " input_ids = d[\"input_ids\"].to(device)\n", + " attention_mask = d[\"attention_mask\"].to(device)\n", + " targets = d[\"targets\"].to(device)\n", + "\n", + " outputs = model(\n", + " input_ids=input_ids,\n", + " attention_mask=attention_mask\n", + " )\n", + " _, preds = torch.max(outputs, dim=1)\n", + "\n", + " loss = loss_fn(outputs, targets)\n", + "\n", + " correct_predictions += torch.sum(preds == targets)\n", + " losses.append(loss.item())\n", + "\n", + " return correct_predictions.double() / n_examples, np.mean(losses)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a_rdSDBHhhCh" + }, + "source": [ + "Using those two, we can write our training loop. We'll also store the training history:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "1zhHoFNsxufs", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 901 + }, + "outputId": "2f11710a-700e-4933-b57e-5d50e5ed1f78" + }, + "source": [ + "%%time\n", + "\n", + "history = defaultdict(list)\n", + "best_accuracy = 0\n", + "\n", + "for epoch in range(EPOCHS):\n", + "\n", + " print(f'Epoch {epoch + 1}/{EPOCHS}')\n", + " print('-' * 10)\n", + "\n", + " train_acc, train_loss = train_epoch(\n", + " model,\n", + " train_data_loader, \n", + " loss_fn, \n", + " optimizer, \n", + " device, \n", + " scheduler, \n", + " len(df_train)\n", + " )\n", + "\n", + " print(f'Train loss {train_loss} accuracy {train_acc}')\n", + "\n", + " val_acc, val_loss = eval_model(\n", + " model,\n", + " val_data_loader,\n", + " loss_fn, \n", + " device, \n", + " len(df_val)\n", + " )\n", + "\n", + " print(f'Val loss {val_loss} accuracy {val_acc}')\n", + " print()\n", + "\n", + " history['train_acc'].append(train_acc)\n", + " history['train_loss'].append(train_loss)\n", + " history['val_acc'].append(val_acc)\n", + " history['val_loss'].append(val_loss)\n", + "\n", + " if val_acc > best_accuracy:\n", + " torch.save(model.state_dict(), 'best_model_state.bin')\n", + " best_accuracy = val_acc" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Epoch 1/10\n", + "----------\n", + "Train loss 0.7330631300571541 accuracy 0.6653729447463129\n", + "Val loss 0.5767546480894089 accuracy 0.7776365946632783\n", + "\n", + "Epoch 2/10\n", + "----------\n", + "Train loss 0.4158683338330777 accuracy 0.8420012701997036\n", + "Val loss 0.5365073362737894 accuracy 0.832274459974587\n", + "\n", + "Epoch 3/10\n", + "----------\n", + "Train loss 0.24015077009679367 accuracy 0.922023851527768\n", + "Val loss 0.5074492372572422 accuracy 0.8716645489199493\n", + "\n", + "Epoch 4/10\n", + "----------\n", + "Train loss 0.16012676668187295 accuracy 0.9546962105708843\n", + "Val loss 0.6009970247745514 accuracy 0.8703939008894537\n", + "\n", + "Epoch 5/10\n", + "----------\n", + "Train loss 0.11209654617575301 accuracy 0.9675393409074872\n", + "Val loss 0.7367783848941326 accuracy 0.8742058449809403\n", + "\n", + "Epoch 6/10\n", + "----------\n", + "Train loss 0.08572274737026433 accuracy 0.9764307388328276\n", + "Val loss 0.7251267762482166 accuracy 0.8843710292249047\n", + "\n", + "Epoch 7/10\n", + "----------\n", + "Train loss 0.06132202987342602 accuracy 0.9833462705525369\n", + "Val loss 0.7083295831084251 accuracy 0.889453621346887\n", + "\n", + "Epoch 8/10\n", + "----------\n", + "Train loss 0.050604159273123096 accuracy 0.9849693035071626\n", + "Val loss 0.753860274553299 accuracy 0.8907242693773825\n", + "\n", + "Epoch 9/10\n", + "----------\n", + "Train loss 0.04373276197092931 accuracy 0.9862395032107826\n", + "Val loss 0.7506809896230697 accuracy 0.8919949174078781\n", + "\n", + "Epoch 10/10\n", + "----------\n", + "Train loss 0.03768671146314381 accuracy 0.9880036694658105\n", + "Val loss 0.7431786182522774 accuracy 0.8932655654383737\n", + "\n", + "CPU times: user 29min 54s, sys: 13min 28s, total: 43min 23s\n", + "Wall time: 43min 43s\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4r8-5zWsiVur" + }, + "source": [ + "Note that we're storing the state of the best model, indicated by the highest validation accuracy." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wLQf52c7fbzr" + }, + "source": [ + "Whoo, this took some time! We can look at the training vs validation accuracy:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-FWG7kBm372V", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 523 + }, + "outputId": "9dd7f8cf-8f36-4280-dfff-bdaa8b9b89f2" + }, + "source": [ + "plt.plot(history['train_acc'], label='train accuracy')\n", + "plt.plot(history['val_acc'], label='validation accuracy')\n", + "\n", + "plt.title('Training history')\n", + "plt.ylabel('Accuracy')\n", + "plt.xlabel('Epoch')\n", + "plt.legend()\n", + "plt.ylim([0, 1]);" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABbgAAAP1CAYAAACjSomqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdeZyVdf3//8c5sy/syCKLgAoKKipqRXxM0BaprFxBM1u0zPTz05ZPWu6mVt/6+jON+mWlSaKiooapH8VAw0QRd0BQGRBQmGEdZp855/r9cWY7M2fOLMw+j/vtdm5zXdf7fV3X+xxwhOe8eF2hIAgCJEmSJEmSJEnqYcJdvQBJkiRJkiRJktrCgFuSJEmSJEmS1CMZcEuSJEmSJEmSeiQDbkmSJEmSJElSj2TALUmSJEmSJEnqkQy4JUmSJEmSJEk9kgG3JEmSJEmSJKlHMuCWJEmSJEmSJPVIBtySJEmSJEmSpB7JgFuSJEmSJEmS1CMZcEuSJEmSJEmSeiQDbkmSJEmSJElSj2TALUmSJEmSJEnqkQy4JUmSpCbccccdTJo0iUmTJrFly5YOu8+WLVtq73PHHXd02H0626JFi2rf18svv7xf16q5zpVXXtlOq5MkSVJvkNrVC5AkSVLfsGXLFk4++eT9vs7XvvY1fvnLX7bDiiRJkiT1dFZwS5IkSerTrA6XJEnquazgliRJUqcYPnw4ixcvbnL8qquu4p133gHgL3/5C8OGDUs4b8CAAR2yvkQuu+wyLrvssg6/z+jRo1m3bl2H36cn8/ORJElSIgbckiRJ6hRpaWlMnDixyfHs7Oza7XHjxjF69OjOWJYkSZKkHswWJZIkSZIkSZKkHskKbkmSJHV79R9Qeemll3LZZZexatUqHnjgAVatWkVBQQEVFRWsXLmS/v37A7Br1y6effZZVqxYwbvvvsu2bduoqKigX79+HHLIIZx44onMnTuXfv36NXnfO+64gzvvvBOA5557rlFVecPxUaNG8dhjj/HII4/w3nvvUVJSwsiRIznppJP43ve+x5AhQ1r8/pobX7t2Lffccw+vvPIKBQUF9OvXj6lTp/Ltb3+bE044odnP9N133+Xuu+9mxYoV7Ny5k4EDBzJlyhTmzJnDzJkzWbRoEVdddRUA9957L5/4xCeavWZLLFmyhAceeIC1a9eyd+9ehg0bxvTp0/ne977HmDFjmjxv0qRJQNMPGQ2CgKeeeorFixezdu1adu7cSSgUYtCgQQwaNIijjjqKGTNmMGvWLFJTY38NmjVrFlu3bq29xqOPPsqjjz7a6NqJ2qNUVFTw8MMP88wzz7B+/XoKCwvJzc1lwoQJzJo1i7lz55KTk9Pi97N+/Xr+/ve/s2LFCvLz8yktLeWxxx7jN7/5DcuXLyczM5Ply5cn/f0KcOutt3LPPffUvp/JkycnnS9JktTTGXBLkiSpx/n973/PHXfcQRAETc753Oc+x759+xod3717NytXrmTlypXMnz+fP/zhDxxxxBH7vaby8nIuuugi/v3vf8cd37RpE3/72994+umn+fvf/87YsWP3+14PPvggN910E5WVlbXHdu3axdKlS1m2bBnXXXcdc+fObfL8++67j1tuuYWqqqraYwUFBSxbtoxly5Zx7rnncuSRR+73OuuLRqNcddVVLFq0KO741q1beeihh3j66af561//ylFHHdXqa5eWlnLJJZfwn//8p9HYtm3b2LZtG2vXruXBBx/k+eefZ8SIEW1+HwB5eXlcfPHFbNy4Me747t27WbVqFatWreKee+5h3rx5LXo/Dz/8MNdff33cr2eNOXPmsHz5csrKyvjHP/7Beeed1+R1KioqeOyxxwA44ogjDLclSVKfYMAtSZKkHmXJkiW8++67TJgwgQsuuIDDDz+cSCTCG2+8QVpaWu28SCTCsccey4knnshhhx3GkCFDiEQifPTRRzzzzDM888wz5Ofn8/3vf59//OMfDBo0aL/WdfXVV/P666/z5S9/mdmzZzNixAjy8/OZP38+y5cvZ/v27fz85z9n/vz5+3WfF198kTfffJODDz6YCy64gEmTJlFVVcULL7zAn//8ZyorK7n55pv55Cc/yfjx4xudv2TJEm688UYA0tPTOf/88/nMZz5DdnY2H3zwAX/7299YsGABRx999H6ts6Hf/e53vPbaa5x00kmcfvrpjB49mj179rBo0SKeeOIJ9u3bx49//GOefPLJ2grrlrrzzjtrw+2pU6dy5plnctBBB9G/f3+KiorIy8vj5ZdfZunSpXHn/eUvf6GyspIvf/nLAJx88slcfvnlSe+1a9cuzj//fAoKCgA48cQTOeussxg1ahQFBQUsXryYJ554goKCAr75zW+yaNEixo0b1+T13nnnHRYvXszQoUP55je/ydSpU0lJSWH16tUMGDCAQw89lGHDhpGfn8/DDz+cNOBesmQJe/bsAeDss89u9nOTJEnqDQy4JUmS1KO8++67nHDCCdx1111kZmbWHj/22GPj5j366KMJg8VjjjmGL37xi7z44otceOGF5Ofnc99993HppZfu17pee+01br31Vk4//fTaY5MnT+bEE0/k29/+Ni+99BKvvPIK7777Locddlib7/P6668zY8YM/vCHP5Cenl57/Nhjj2XcuHH89Kc/pbKykgceeKC2xUiNiooKbrjhBiD20M+7776b4447rnb8yCOP5Itf/CIXX3wxy5cvb/MaE3nttdcStl/59Kc/TXp6OosWLWLTpk08//zzte1YWuqf//wnEFv/fffdF/eDDoDjjz+es88+m6KiorjPrOEPAPr375/0QagQawFSE25fdNFF/PjHP44bP+mkkzjmmGO46aabKC4u5pprrkn6Q4333nuPQw45hL///e9xP2SZOnVq7faZZ57JvHnzWLNmDe+8806T/+Jg4cKFQOyBrV/60peSvg9JkqTewodMSpIkqUcJh8PccsstceF2IsmqZiEWrNYEqc8888x+r+uUU06JC7drhMNhvvWtb9Xur1y5cr/uk5GRwa9+9au4oLbGaaedxgEHHNDkfZ577jny8/MBOP/88+PC7RppaWnccsstjULi/TV58uQmf4hw4YUX1m635fPZsWMHANOmTUu67tzc3ISfW2vu89RTTwEwceJErrjiioTzvv71rzN9+nQAXnnlFdauXZv0utddd13Sf0Fw9tlnk5KSAsBDDz2UcM7mzZtZsWIFAF/84heT9v+WJEnqTQy4JUmS1KMcc8wxSR9GmEgQBOzYsYO8vDzWr19f+6oJFd9///2E/Y9b47TTTmtyrH4/682bN+/XfaZPn87QoUMTjoXDYaZMmdLkfV566aXa7TPOOKPJewwfPpwZM2bs1zob+vKXv0woFEo4dvDBB5OdnQ207fMZPnw4AP/617/YuXNn2xfZjJdffrn298kZZ5xRGzonUr8HerJq+BEjRjT7UNCRI0dy4oknAvDEE09QWlraaM7DDz9c25Pe9iSSJKkvsUWJJEmSepTWtPd4+umneeihh3jttdcoKSlpcl4kEqGwsJAhQ4a0eV0TJkxocmzgwIG120VFRW2+BzRuq9HQgAEDmrzP+vXrgVgLi4MPPjjpdY444ohGPav3R7LPB2LrLikpadPnc9ZZZ3Hbbbfx4Ycfcsopp/DZz36W6dOnM3XqVMaNG9dksN5aNZ8fxH7Qkkz98XXr1jU5r6W/n+fMmcPSpUspKiriqaeeivvXApFIpPbhnYcddlibHtQpSZLUUxlwS5IkqUfp379/s3MqKir44Q9/yLPPPtvi65aVle3PssjKympyLByu+4eT0Wh0v+5TU+nc3L0S3afmAYSDBw9uNvRtqkq8rZJ9PpB83c357ne/y549e5g/fz4lJSU8/vjjPP7440Dsvc6YMYOzzjqr2Urp5uzevbt2u7nPZ8iQIYRCIYIgqP3cE2nJ72eIPczywAMP5KOPPmLhwoVxAfeyZctqW89YvS1JkvoaW5RIkiSpR0nWFqLGn/70p9pwe9KkSdxyyy08+eSTrFq1ijVr1rBu3TrWrVvHJZdcUntOTXsH9TzhcJgrr7ySZ555hh/96EfMmDGD3NxcAHbt2sU//vEPzj//fK644or9bkXT3lry+xli7/Gss84CYg8a/eCDD2rHavpyZ2VlJW2VI0mS1BsZcEuSJKnXeeCBBwAYO3YsCxcu5IwzzuDggw8mNzc3LlAsLCzsqiV2iZpWKbt27Wo20O/IXtYdZdSoUXz3u9/lL3/5CytXruTRRx/lsssuq622fvLJJ/n973/f5uvXfxBkzYMtm7Jz587az7h+i5r9ceaZZ5KaGvtHuAsXLgRg+/btvPDCCwCceuqp9OvXr13uJUmS1FMYcEuSJKlX2b17NwUFBQDMmjWLzMzMJue+8847nbWsbmHixIkAlJSUsGHDhqRz33777c5YUocJh8NMnjyZSy+9lAcffLC2RcqTTz7Z5mtOmjSpdvuNN95IOvf111+v3W5N3/hkhg0bxqxZswB4/PHHqaioYNGiRUQiEYDaCm9JkqS+xIBbkiRJvUpN2AdQWlra5LzVq1c3G1L2Np/61Kdqt2seSphIfn4+L774YmcsqVOMHj269uGcu3btajRe80OQioqKpNf5xCc+QVpaGgAPP/xw0n7hDz74YO32jBkzWr3mpsyZMweI/SDn2Wef5eGHHwbg0EMP5dhjj223+0iSJPUUBtySJEnqVQYPHlz74L6lS5cmfMDfjh07+MlPftLZS+tyJ598MsOGDQPg3nvvjasyrlFVVcXVV1/dbNjbXezZs4clS5YkDZu3bt1a27N6zJgxjcZrPpONGzcmvdeQIUOYPXs2AOvXr+f2229POG/BggUsX74cgBNOOKHdKrgBpk+fztixYwG49dZb2bJlC2D1tiRJ6rtSu3oBkiRJUnsKh8N85StfYf78+eTn53POOedw4YUXMnHiRKqqqli1ahX33HMPu3fv5phjjkkY8vZW6enpXHfddfzgBz+goqKCCy64gG984xuceOKJZGdn8/7773PvvfeyevVqjj766NoK91Ao1MUrb1pRURE/+MEPGDZsGKeccgpTp05lzJgxZGdns3v3bt566y3uu+8+ysvLAfj617/e6BrHHXccH374IatXr+b2229n5syZ5OTk1I4ffPDBtdtXXnkl//nPfygoKOCPf/wj7777LmeeeSYHHnggO3bsYPHixSxevBiAnJwcbrrppnZ9v6FQiLPPPpvf/OY3ta14MjIy+OpXv9qu95EkSeopDLglSZLU61x++eW88cYbvP3222zcuJGrr746bjwtLY2rr76aXbt29amAG+CUU07h2muv5eabb6a8vJy77rqLu+66K27Oueeey5QpU2oD7oyMjK5Yaqvk5+ezYMECFixYkHA8HA5z8cUXc8YZZzQa+853vsNTTz1FaWkp8+bNY968eXHj69atq90ePHgw8+fP5+KLL2bjxo0sW7aMZcuWNbrmAQccwLx58xg3btx+va9EzjjjDG6//XYqKysB+NznPseAAQPa/T6SJEk9gQG3JEmSep3c3FwWLFjAvffeyz//+U/y8vIIgoADDjiAT3ziE5x33nlMnjyZO+64o6uX2iXOO+88pk2bxl//+ldefvlldu7cycCBA5k8eTJz5sxh1qxZ3H333bXzc3Nzu3C1yY0aNYpHHnmE5cuX88Ybb7BlyxZ27NhBYWEhWVlZjB49muOPP56zzjor7iGR9R1yyCE88sgj/PWvf+XVV19l+/btSfu3jx8/nsWLF/PQQw/x7LPPsm7dOvbt20dOTg4TJkzg5JNPZu7cuXFV4O1p8ODBnHTSSTz77LMAnHPOOR1yH0mSpJ4gFARB0NWLkCRJktS9XHXVVSxatIi0tDRee+010tPTu3pJqufzn/88GzduZPz48Tz99NNdvRxJkqQu40MmJUmSJMUpLi7mueeeA2DKlCmG293Myy+/XPtATKu3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Lv379y/LNV5++eXcfPPNefTRRzNz5sysWrUqPXv2zEc+8pEcdNBBGTlyZNq1a1eWawEAAAAA0KCqA/e3v/3tjB49+j3vvfbaaxkzZkzuuuuufPe7382wYcM26hrXXnttrrrqqixfvvw970+fPj3Tp0/PQw89lKOOOirbb7/9Rl0HAAAAAID3qtrAfe211zbG7aOOOirnnXdettlmmzz//PO54oorMmXKlHzjG99I3759s99++23QNX7605/mqquuSpIceeSRGTlyZPr37582bdpk5syZefzxx3PHHXeU7W8CAAAAAKBJVQbuuXPn5pprrkmSHHroobn66qtTKpUa1wMGDMhxxx2XN998M1dccUVuvvnm9b7GU089lZ/85CdJkq9+9av5whe+8J7Pu3Xrlj333DOf//znN/KvAQAAAABgTaryRyZvu+22LF68OEly8cUXN8bt1bp169YYnp955plMnDhxva9xxRVXpCiKDB48+H1xGwAAAACA5leVgfuhhx5KkvTr1y8DBgxY455jjjmm8fWDDz64XuefPHlynn766STJmWeeuWFDAgAAAACwUaoycK++I3ufffb5wD19+vRJ796937N/Xf3ud79LkrRq1SqDBw9+z2crV65cr3MBAAAAALBhqu4Z3LNmzWp8PEnfvn3Xunf77bfPrFmz8vLLL6/XNZ577rnG49u2bZt77rknN9xwQyZOnJhly5ale/fuOfDAA3P22Wdn4MCBG/aHAAAAAACwVlV3B/e8efMaX/fo0WOte1d/Pn/+/PW6xsyZM5MkXbp0yXe+8518+ctfzlNPPZVly5YlafiRy3vuuSennnpqrr/++vU6NwAAAAAA66bq7uBeffd2krRt23ate1d/vmjRovW6xttvv50kmTRpUiZMmJBdd901l156afbff/+sXLky48ePzw9+8IPMnDkzP/jBD7LTTjtlyJAh6/eHrKOFCxfmz3/+c7Oce3O1pf29QHn47gDWl+8NYEP47gDWl+8N2DhVdwf3plAURZJkxYoV6d27d0aNGpW///u/T/v27bPVVlvlk5/8ZG644YZ06NAhSXLllVe25LgAAAAAAFWp6u7gXh2VkzQ+MuSDrP68Y8eOG3yNM844I127dn3fnn79+mXEiBEZNWpUpkyZkunTp3/oM8E3RKdOndK/f/+yn3dztPpfNPfbb78WngSoJL47gPXlewPYEL47gPXlewPea/LkyVm4cOF6H1d1d3B369at8fWcOXPWunf152sK1Ot6jf333/8D9737s7/+9a/rdQ0AAAAAANau6gJ3r169Gu+wnj59+lr3zpgxI0my0047rdc1dt5558bXnTt3/sB9Xbp0aXy9If/6AAAAAADAB6u6wF0qlTJgwIAkyYQJEz5w3+uvv55Zs2YlSeP+dbXXXns1vp4/f/4H7nv3Z1tttdV6XQMAAAAAgLWrusCdJIcffniSZOrUqZk0adIa99x7772Nr4844oj1Ov+QIUNSW9vw+PI//elPH7jvD3/4Q+PrPfbYY72uAQAAAADA2lVl4B4+fHjjY0quvPLKFEXxns/nz5+f6667Lkmyzz77rPcd3F27ds1xxx2XJLnhhhvW+Kzvl156KbfffnuShmdx9+7de73/DgAAAAAAPlhVBu7u3bvnvPPOS5I8+uijueiiizJp0qTMnTs348ePz+mnn57Zs2entrY2l1566fuOr6urS//+/dO/f//U1dWt8Rpf/vKX07Vr17z55pv59Kc/nd/+9reZM2dO3njjjdx2220544wzsnTp0rRu3XqN1wAAAAAAYOPUtvQAzeULX/hCZsyYkdGjR+e+++7Lfffd957PW7dune9973vZb7/9Nuj822yzTX72s5/lvPPOy9SpU3PRRRe9b0+HDh3ywx/+MAMHDtygawAAAAAA8MGqNnAnyWWXXZYhQ4bkxhtvzMSJE7NgwYJsvfXWOeigg3LmmWemf//+G3X+v/u7v8u4cePyy1/+Mg8++GBeffXV1NfXZ7vttsuhhx6aM888M9tuu22Z/hoAAAAAAN6tqgN30vCDk6t/dHJdjRgxIiNGjFinvd27d8/FF1+ciy++eEPGAwAAAABgA1XlM7gBAAAAAKh+AjcAAAAAABVJ4AYAAAAAoCIJ3AAAAAAAVCSBGwAAAACAiiRwAwAAAABQkQRuAAAAAAAqksANAAAAAEBFErgBAAAAAKhIAjcAAAAAABVJ4AYAAAAAoCIJ3AAAAAAAVCSBGwAAAACAilT2wP3//t//y4IFC8p9WgAAAAAAeI+yB+7vf//7+djHPpZLLrkkf/rTn8p9egAAAAAASNJMjyhZtmxZxo4dmzPOOCOf/OQnc/3112fu3LnNcSkAAAAAALZQZQ/cP/3pTzNkyJDU1NSkKIq88sor+eEPf5jDDjssF198cZ544olyXxIAAAAAgC1QbblPeOSRR+bII4/MrFmzMmbMmNTV1WXGjBlZsWJF7rnnntxzzz3p27dvTjrppJx44onp0aNHuUcAAAAAAGAL0CyPKEmS3r1757zzzssDDzyQX/ziFznmmGNSW1uboigybdq0/PjHP85hhx2Wiy66KI8++mhzjQEAAAAAQJUq+x3ca3LwwQfn4IMPzrx583L77bfn1ltvzUsvvZSVK1fm/vvvz/33359tttkmJ598ckaMGJHevXtvirEAAAAAAKhgzXYH95p069YtZ511VsaNG5ff/OY3GT58eNq1a5eiKPLaa6/lqquuypFHHpnzzz8/jz/++KYcDQAAAACACrNJA/e7tW/fPm3btk2rVq1SKpVSKpVSFEVWrlyZBx98MOecc05GjhyZyZMnt9SIAAAAAABsxjbJI0pWW7hwYcaOHZubb745kyZNSpIURZEk2WOPPTJixIhMmTIl48aNy+LFi/P0009n5MiRGT16dPr3778pRwUAAAAAYDO3SQL3U089lVtuuSX33ntvli5d2hi127dvn2OOOSYjR47MwIEDG/d/7Wtfy6hRo3LNNddk6dKl+clPfpKrr756U4wKAAAAAECFaLbAPX/+/Pf8oGTSdLf2rrvumlNPPTXDhg1Lp06d3ndsx44dc+6556ZDhw65/PLL8/TTTzfXmAAAAAAAVKiyB+7HH388t9xyS/7nf/4nK1asaIzabdq0ySc+8YmMHDky++233zqd66CDDkqSzJkzp9xjAgAAAABQ4coeuM8+++zGH4xMkh133DGnnnpqhg8fnq5du67Xudq2bVvu8QAAAAAAqBLN8oiSVq1a5eMf/3hOPfXUxruwN0Tv3r1zww03lHEyAAAAAACqRdkD98UXX5yTTjop3bt33+hztW3bNoMGDSrDVAAAAAAAVJuyB+4vfvGL5T4lAAAAAAC8T01LDwAAAAAAABui7IF71qxZueCCC3LBBRfk9ddf/9D9r7/+ei644IJceOGFmTNnTrnHAQAAAACgSpU9cN9xxx154IEH8tprr6VPnz4fur9Pnz6ZOXNmHnjggdx1113lHgcAAAAAgCpV9sD9+9//PqVSKR//+MfX+ZhPfOITKYoijz32WLnHAQAAAACgSpU9cE+ZMiVJMnDgwHU+Zq+99kqSvPjii+Ue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HAAAAAAAqlTZA/cDDzyQJDnqqKPSqVOnD93fqVOnHH300SmKIvfee2+5xwEAAAAAoEqVPXA/88wzKZVKGTx48Dofc/DBBzceCwAAAAAA66LsgfvVV19Nkuy8887rfMwOO+zwnmMBAAAAAODDlD1wL1++PEnSunXrdT6mtrbhty6XLl1a7nEAAAAAAKhSZQ/cXbt2TZLMnDlznY+ZNWtWkqzTM7sBAAAAACBphsC90047JUkeeeSRdT7m4YcfTpLsuOOO5R4HAAAAAIAqVfbAfcghh6QoitTV1eWFF1740P0vvPBC6urqUiqVcuihh5Z7HAAAAAAAqlTZA/epp56a9u3bZ8WKFTnnnHPy4IMPfuDeBx98MOecc05WrFiRdu3a5TOf+Uy5xwEAAAAAoErVlvuE3bp1y7e+9a380z/9U+bOnZvzzz8/O+ywQwYNGpRevXolSd5444388Y9/zNSpU1MURUqlUr75zW+me/fu5R4HAAAAAIAqVfbAnSQjRozI4sWL84Mf/CArV67M1KlTM3Xq1PftK4oitbW1+frXv54TTzyxOUYBAAAAAKBKlf0RJat99rOfzR133JETTjghnTt3TlEU7/mvS5cuGT58eO68886cdtppzTUGAAAAAABVqlnu4F5tl112yRVXXJEkmT59eubNm5ek4TEmffv2fd/+J598Mvvvv39zjgQAAAAAQJVo1sD9bn379l1j1J41a1Zuv/321NXVZfr06Xn++ec31UgAAAAAAFSwTRa4323FihV54IEHUldXl8cffzz19fWNPzYJAAAAAADrYpMG7kmTJmXMmDG566678tZbbyVp+KHJJGnTpk0OO+ywTTkOAAAAAAAVrNkD9/z583PXXXelrq4uL7zwQpKmqN26desceuihOeaYY3LkkUemY8eOzT0OAAAAAABVolkCd1EUeeSRR1JXV5eHHnooK1asaHw/SUqlUs4666ycd9556dSpU3OMAAAAAABAlStr4J46dWrGjBmTO+64I2+88UaSpqi9/fbbZ9iwYbn66quTJHvttZe4DQAAAADABtvowL148eLcc889GTNmTP7yl78kaYraHTt2zCc/+ckMHz48+++/f5I0Bm4AAAAAANgYGxW4v/71r+e3v/1tlixZ0hi1a2pqMnjw4AwbNixHH3102rVrV5ZBAQAAAADg3TYqcN92222Nr3fccccMHz48w4YNS+/evTd6MAAAAAAAWJuNfkRJqVRKx44dc9xxx2Xo0KHiNgAAAAAAm0TNxhzcpUuXFEWRhQsX5qc//WmOPvronH766bn11luzaNGics0IAAAAAADvs1GB+9FHH82PfvSjHHLIISmVSqmvr8+TTz6Zb33rWzn00ENzySWXZPz48Y3P5wYAAAAAgHLZqEeUtGnTJscee2yOPfbYzJo1K2PGjMntt9+eadOmZcmSJRk7dmzGjh2bXr165YQTTsgJJ5xQrrkBAAAAANjCbdQd3O/Wu3fvnHfeebnvvvvyq1/9KieccELatWuXoigya9asXHvttTnuuOMa969atapclwYAAAAAYAtUtsD9bgcccECuuOKKPPbYY/nOd76TfffdN0VRpCiKlEqlJMnXv/71nH322bnllluyYMGC5hgDAAAAAIAq1iyBe7WOHTvmlFNOyejRo3P33Xfn7LPPTo8ePVIURVauXJknnngi//zP/5xDDjkkn//851NXV9ec4wAAAAAAUEWaNXC/284775x//Md/zCOPPJL//M//zFFHHZVWrVo1xu7HHnss3/zmNzfVOAAAAAAAVLiN+pHJDVFTU5PDDz88hx9+eObOnZs77rgjdXV1efHFF1MUxaYeBwAAAACACrXJA/e7de/ePWeddVbOOuusTJgwwSNKAAAAAABYZy0auN9t4MCBGThwYEuPAQAAAABAhdhkz+AGAAAAAIByErgBAAAAAKhIAjcAAAAAABVJ4AYAAAAAoCIJ3AAAAAAAVCSBGwAAAACAiiRwAwAAAABQkQRuAAAAAAAqksANAAAAAEBFqm3pAZrbQw89lNGjR2fixIlZsGBBevbsmcGDB+dzn/tc+vfvX9ZrFUWRM844I3/84x+TJNttt10efPDBsl4DAAAAAIAGVX0H97e//e38wz/8Qx5++OHMnj07y5cvz2uvvZYxY8bkpJNOyu23317W6916662NcRsAAAAAgOZVtYH72muvzejRo5MkRx11VOrq6vLEE0/k5z//eXbbbbcsX7483/jGN/LnP/+5LNd7880386//+q+pra1Nnz59ynJOAAAAAAA+WFUG7rlz5+aaa65Jkhx66KG5+uqrM2DAgHTv3j3/P3t3HqVVdeeL+1NMKqAyiChTRyVdUaNeG1vFWVpRIw4g0Xu1JcSWpOMQb9TEuMQ4tkYT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Ls3SpUvzwQcfpGfPnmnTpk2z1AMAAABbIgH3V8yKFStqwu3tttsuHTt2zNZbb50WLb78q9UsW7YsSdKuXbtmrgQokuZ6dnzyySdZvXp1qqqqUlFRkZUrV+bNN9/Mrrvumlat/OcXAAAAmsKXP9WkSS1durQm3O7WrVvatm1biHAboGhatGiRNm3apFOnTvna176WbbbZJmvWrMmSJUuauzQAAADYYkg2v2I+/PDDJEnHjh1TUlLSzNUAfDW0bNkynTt3ThIBNwAAADQhAfdXzKpVq5JYzxrgi1a9RMrKlSubuRIAAADYcgi4v2KqN5a0LAnAF6v6t2aKtsEvAAAAfJlJOQHgC2BZKAAAAGh6Am4AAAAAAApJwA0AAAAAQCEJuAEAAAAAKCQBNwAAAAAAhSTghi1YWVlZSktLU1pamqlTpzZ3OQAAAADQpATc0ERuueWWlJaWpl+/fs1dCgAAAAB8JQi4AQAAAAAopFbNXQCw+fTo0SNz5sxp7jIAAAAAYLMwgxsAAAAAgEIygxs20dSpUzNkyJCaP5eXl6e0tHS9Nvvvv39GjBhRq/3EiROz7bbb5ne/+10mTpyY8vLyLF++PI8//nh23333JMn8+fMzadKkTJ48Oa+//noqKyvTpk2bdOvWLX379s13vvOd9OjRo87aysrK8i//8i9JknvvvTcHHHDAesf79euX8vLynHfeeTn//PMzceLE3H///XnttdeybNmydOvWLccee2yGDRuW9u3bN2p8Vq9enRdffDGTJk3KCy+8kLfeeisrVqzItttum3/8x3/Msccem8GDB6dNmzb19rNmzZqMHTs2f/zjH/Pqq6+moqIi7du3z0477ZS99torAwYMqHV/1d5///3cd999mTJlShYsWJDly5enS5cu6d69e/r27ZtTTjklXbt2rWl/yy235NZbb0337t0zadKkDdZ05plnZtq0aRk4cGB+/vOfr3fspz/9aUaNGlXzs3/ppZcyYsSITJ8+Pe+//3569+6d0aNHN9sYPfHEE7n44ouTJE8++WR22223Dfb7yiuvZPDgwUmS22+/PUcccUS9dQAAAAB8UQTc0IwWLFiQSy+9NO+8806dxz/88MP079+/1vurVq3K3LlzM3fu3Dz22GP59a9/ncMOO2yTarnuuutyzz33rPfem2++mf/zf/5PnnnmmTzwwANp165dg/u9//77c91119V6v6KiIlOnTs3UqVMzatSo3HHHHenQoUOdfZSXl+fcc8/NrFmzavVRUVGRWbNm5amnnsqLL75Y69yxY8dm+PDh+eijj2r1WV5enmnTpqWioiKXXXZZg+9tYz3wwAO59tprs2bNmjqPN8cY9e/fP9ttt12WLl2aUaNG1YTddRk5cmSSpEuXLjn00EM36p4BAAAAvggCbthE++23X2bMmJHbb789t99+e7p165axY8eu16Zly5Z1nnvJJZfk448/zuWXX57DDz887dq1y5w5c9KlS5eaNnvvvXeOOeaY7LXXXunSpUs6duyYysrKzJo1K3fddVdefvnlXHjhhXnyySez4447NuoeRo8enQULFuTUU0/Nqaeemp49e+aDDz7Ivffem4ceeiizZ8/O7bffngsvvLDBfW+99dYZMGBADj300Oy6667p0qVLttpqqyxcuDATJ07MiBEj8vLLL+eKK67Ir3/961rnL1myJEOGDElZWVlatmyZ0047LSeddFJ69eqVTz75JPPmzcuUKVMyYcKEWueOHz8+F110UZKka9eu+f73v5+DDz44HTt2zNKlS/Pqq69m/PjxadVq8z0K//73v+c//uM/ss8+++Tcc8/N7rvvno8//jhz585t1jHaaqutcsIJJ+T+++/P6NGj86Mf/ajOz+nKlSvzhz/8IUly8sknb/CzDAAAANAcBNywiVq2bJl27dqldevWSZKSkpKNnum8ePHiPProozXLkSRJ3759a15vu+22efTRR2ud17Fjx+yyyy7p379/zjzzzMyYMSMPPvhgLrjggkbdw4IFC/K///f/zg9+8IOa9zp06JCrrroqCxcuzNNPP52RI0c2KuA+7bTTctppp9V6v1OnTtl9993Tv3//nHzyyfnTn/6Ut956K7169Vqv3U033ZSysrKUlJTkP//zP2vNaN9hhx3yz//8zzn//PPXe3/58uUZPnx4kuRrX/taHnjggXTu3Lnm+Pbbb5+ePXvmuOOOy+rVqxt8Xxvr/fffT58+fXL33Xevt8RIt27dal431xgNHjw4999/f957771MmTIlhx9+eK0aJkyYkCVLliRJBg0a1PABAAAAANiMBNzU6aa31uaqN5OquldUaCZt//9/r210D+1bJld8LbmoV0mTVLSpTjnllPXC7YZq1apVBgwYkBkzZuS5555rdMC9884753vf+94Ga3z66aezaNGivPPOO9l5550bXW9d/vEf/zF77LFHXnnllTz33HPrhbdVVVUZNWpUkuSkk06qc7mWap+dhT1mzJhUVlYmSa666qr1wu3PO7epXXLJJZ+7fnZ9NtcY7bHHHtlzzz0zc+bMjBo1qs6Au3p5kn333Te77rpro+8BAAAAYHMQcFOnXy34soXbTaNqzbp7u6jX57f9ImzsZn2TJ0/O448/nldffTXvvfdeli9fXqvNm2++2eg6DjrooA0uPbHLLrvUvF60aFGjAu5ly5bl0UcfzTPPPJO5c+dmyZIlWbVqVa12n72H6dOnZ+XKlUmSgQMHNuiazz//fJJ1M6UPPPDABtfcVDp06JB99tnnc9s1xxgl677AmDlzZiZOnJglS5Zk++23rzm2cOHCPPvsszXtAAAAAL5sBNzU6cKe+RLO4N507Vuuu7cvi5496y9m9erVueSSS2qt6V2XDz/8sNF11Ld299Zbb13zesWKFQ3u+4033sjZZ5+dt99++3PbfvYe3nrrrZrXDZ3pvmDBgiTJN77xjQad19Q+72ecNN8YJckJJ5yQG264IR9//HHGjh2bM844o+bY448/nk8++SRt27bNcccd1+C+AQAAADY3ATd1uqhXyZdmlnO1ZcuWJclGr29dBJ8Oj+tyxx131ITbRx11VAYOHJjevXtn++23r1nyYsyYMbnyyiuzZk3jv43Y2I0D165t2PIwq1evzvnnn5+33347bdu2zdChQ3PwwQenR48eadeuXVq0aJEkOfvsszNjxoxa91BVVVXzuqE/9+pzm/vzss0229R7vDnHKEm222679O/fP0888URGjRq1XsBdvfTJMccck/bt2ze4bwAAAIDNTcANX2IPPfRQkuT444/Pr371qzrbfPzxx19kSQ3ywgsv5I033kiS3HzzzTn00EPrbFfXkivJ+oHtsmXL1ls+4/NUn1v9xUhDlJRs3BrtTbE5ZXOOUbVvf/vbeeKJJ/LKK69k7ty5+frXv54ZM2Zk3rx5SWwuCQAAAHx5tWjuAoC6VVZW5t13302SfOtb39pgu9dff/2LKqnBZs+enSTZfvvtNxjcrly5siZI/ax/+Id/qHk9a9asBl27eiPGOXPmNOi8JDWz4z9vSZb33nuvwX1/VnOOUbX999+/ZryqN5Ws/nevXr3yz//8z43qFwAAAGBzE3BDE2nVat0vRGzKUiGfVr1xYJJ88skndbZZvnx5Jk6c2CTX2xyq76G+MRk/fvwGZ6H36dMnW221VZJ160E3xMEHH5wkKS8vz9SpUxt0bvWa5IsXL86SJUvqbPP3v/89ZWVlDeq3Ls05RtVKSkpqNpF84oknUlVVlaeeeirJuo0rN3ZGOwAAAMAXTcANTaRDhw5J1oWiTbF0RadOndK2bdskydNPP11nm+uvvz6VlZWbfK3NpUePHknWrRM9bdq0WscXLVqUX/ziFxs8v3379hk4cGCSdeHthAkTNtj2s2M+YMCAmp/JFVdckcWLF2/0uXvvvXeSdWuO1xUar169Otddd90G+2uI5hyjTxs4cGBatmyZRYsW5fLLL09VVVVatGhR0zcAAADAl5GAG5rInnvumWTdjNybb745CxcuzKpVq7J69epGzepu1apVjj766CTrlou4/vrrM3fu3FRUVGTGjBk577zz8sgjj2S33XZr0vtoSoceemjNGtEXXnhhxowZk3fffTcLFy7MmDFjctppp6WysjLdu3ffYB8XXnhhevTokbVr1+aCCy7Itddem7/97W+pqKjIBx98kBkzZuSWW27JySefvN55bdu2zbXXXpskmTdvXgYNGpQHHngg8+fPz9KlS1NWVpYJEybk4osvrrW++a677pp99903SfLLX/4y9913XxYuXJjFixfn2WefzdChQzN16tR07dq10GP0aV27ds1hhx2WJHnyySeTJAcddFB23nnnTb5HAAAAgM3FJpPQRPbee+/su+++eemll3L77bfn9ttvrzm2//77Z8SIEQ3u88c//nFefPHFlJeX5+67787dd9+93vFjjjkmhx12WC677LJNLX+z2G677XLllVfmkksuyaJFi/LjH/94veNt2rTJDTfckAcffDDl5eV19rH99tvnnnvuyQ9+8IO8/vrrGTFiRJ1jue2229Z67+ijj86NN96Yyy+/PO+8806uuuqqOq8xZMiQWu9dc801+dd//ddUVlbmmmuuyTXXXFNn3QsXLqx3DD5Pc4/Rpw0ePHi93xawuSQAAADwZWcGNzShO+64I//2b/+W3r17Z+utt97k/rp06ZLHHnssZ555Zrp3757WrVunY8eO2X///XP99dfn5ptvTosWX+6/xieeeGLuvffeHHbYYdluu+3SunXrdOvWLSeffHIeffTRejfQrNajR4+MGjUq1157bQ455JB07tw5rVu3TufOnbPnnntm6NCh+d3vflfnuSeddFLGjx+fs88+O9/4xjfSvn37bLXVVunevXv69u2b4cOH5/vf/36t877+9a/nsccey6BBg9K1a9e0bt06O+64YwYMGLDRdW+s5h6jakcccUR22GGHJOtC8+rfIAAAAAD4sipZu3bt2uYugoabM2dOqqqq0r59+5SWlm70ebNmzUqS7L777purtM1m2bJlSVKznAPQtD755JP069cv77zzTk4//fRcccUVzV1Sk/gyPTuK/AyGr5Lp06cnWbeRL8DG8uwAGspzA9bX2Lzzyz31E4AvzPPPP5933nknSXLKKac0czUAAAAAn0/ADUCS5N57702ybsPUb37zm81cDQAAAMDns8kkwFfU2rVrs2bNmixbtiyPPPJInnnmmSTJsGHDmrcwAAAAgI0k4Ab4ipo2bVqGDBmy3nsHHXRQjjvuuGaqCAAAAKBhBNwAX3EtWrTIzjvvnKOPPjrnn39+c5cDAAAAsNEE3ABfUQcccEDmzJnT3GUAAAAANJpNJgEAAAAAKCQBNwAAAAAAhSTgBgAAAACgkATcAAAAAAAUkoAbAAAAAIBCEnADAAAAAFBIAm4AAAAAAApJwA0AAAAAQCEJuAEAAAAAKCQBNwAAAAAAhSTgBgAAAACgkATcAAAAAAAUkoAbthBnnnlmSktL89Of/rTWsZEjR6a0tDSlpaWN7v+WW25JaWlp+vXrtyllbrL67hMAAACArxYBN9DsysrKagL4qVOnNnc5AAAAABSEgBsAAAAAgEJq1dwFAJvfoEGDMmjQoOYuo0mMGDGiuUsAAAAA4EvCDG4AAAAAAArJDG7YREuWLMkhhxySlStX5sILL8z3v//9etsfddRRWbBgQQYMGJCbbrqp5v2qqqpMmTIlkyZNyssvv5x33303q1evTqdOnbL33nvn29/+dg4//PBG1Thy5MhceumlSZI5c+bU2Wb16tW5//778/jjj2fevHlp06ZNdtttt5x66qkZOHDg515j/vz5mTRpUiZPnpzXX389lZWVadOmTbp165a+ffvmO9/5Tnr06FHrvH79+qW8vLzmz0OGDKnVZuLEiTXnnnnmmZk2bVoGDhyYn//853XWUlVVlfvvvz8TJkzIm2++mRUrVqRz587p06dPTj/99PTp06fO86ZOnVpz/YkTJ6ZTp0753e9+lz/+8Y8pKytLy5Yts8cee+SMM87Iscce+7ljsiEVFRX585//nEmTJmXmzJlZtGhRkmSHHXbIvvvumzPOOCP/9E//9Ln9vP/++7nvvvsyZcqULFiwIMuXL0+XLl3SvXv39O3bN6ecckq6du1a57kvvPBCfv/732f69OlZtGhRWrRokZ122im9e/fO0UcfnWOPPTatW7euaV/9czrvvPNy/vnn19lnWVlZ/uVf/iVJcu+99+aAAw5Y73j1JqfXX399TjrppDz00EN54oknMm/evFRWVubSSy/N0KFDm3yM7rrrrjz//PMpLy+vd4zOOuusPPvss9lnn33yyCOP1Nvv1Vdfnfvvvz9dunTJM888k1at/OcUAAAAmoP/I4dNtP322+eII47IuHHj8sQTT9QbcL/00ktZsGBBkuTEE09c79gll1ySCRMm1Dpn4cKFGT9+fMaPH59vf/vbufbaa5v2BpIsX748w4YNy4svvljz3kcffZQZM2ZkxowZef7559OzZ88Nnv/hhx+mf//+td5ftWpV5s6dm7lz5+axxx7Lr3/96xx22GFNXv+nzZkzJ8OGDcvChQvXe/+dd97J2LFjM3bs2Jx11ln5yU9+kpKSkg328/777+d73/te3njjjfXenzZtWqZNm5YLLrgg55xzTqNq/O53v5tZs2bVer+8vDzl5eUZO3ZsfvjDH+bcc8/dYB9jx47N8OHD89FHH9XZx7Rp01JRUZHLLrtsveMrVqzIZZddlrFjx9bq84033sgbb7yRP/3pT+ndu3d23333Rt3f51m5cmWGDh2aadOmbbBNc4zR4MGD8+yzz+Zvf/tb3njjjey2224brL96/E466SThNgAAADQj/1cOTeDEE0/MuHHjMnfu3Lz22mvZY4896mw3ZsyYJEnnzp1z8MEHr3esc+fOGTJkSA444IB07949Xbp0yerVq1NWVpbRo0fn97//fR599NHsvvvuOeOMM5q0/p/97Gc14faJJ56YoUOHplu3bikvL89dd92V0aNH1zn7+tP23nvvHHPMMdlrr73SpUuXdOzYMZWVlZk1a1buuuuuvPzyy7nwwgvz5JNPZscdd6w57w9/+EPKy8tz/PHHJ0l+85vfZL/99luv77Zt227UfVRUVOTf/u3fsmjRomy99dY599xzc+yxx6Z9+/aZM2dObr755syYMSO/+93v0qlTpwwbNmyDfV188cWpqqrKz372sxx22GFp3759Zs+eneuuuy6vv/56br311hxzzDEbDEHr07179xx66KHZb7/9stNOO6VLly756KOPMn/+/DzyyCN56qmncvPNN+eb3/xmnbP2x48fn4suuihJ0rVr13z/+9/PwQcfnI4dO2bp0qV59dVXM378+DqD14suuqjmi5RDDjkkQ4YMye67757WrVvn3XffzdSpUzN69OgG31ND3HbbbVm0aFHOOuusnHzyyenatWveeeed9do05RjtuOOOOeuss3LkkUfWO0ZHHXVUOnTokMrKyowaNSoXX3xxnfVPmDAhS5YsSZItZm17AAAAKCoBNzSBww8/vCYYGzNmTJ0B9+rVq/PUU08lSY4//vha4ePVV19dZ9877bRT9ttvv+yxxx658sorc+edd+b000+vd/ZxQ7zyyit54oknkiSnnnpqrrnmmppjHTt2zE033ZQ2bdpk5MiRG+xj2223zaOPPlrr/Y4dO2aXXXZJ//79c+aZZ2bGjBl58MEHc8EFF9S02WabbbL11lvX/HnrrbdOu3btGnUv1cFpSUlJbr311hx66KE1x/r27Zs+ffpk6NChmT59em6++eYMGjQonTt3rrOvDz74II899th6AXbfvn1z5513pn///lmxYkW9IWh9/uu//qvO97t3756DDjooPXr0yB133JHf/OY3tcLb5cuXZ/jw4UmSr33ta3nggQfWu4ftt98+PXv2zHHHHZfVq1evd+4f/vCHmnB7yJAhtWZ3d+zYMbvvvnuGDh1a69ymtHDhwlxxxRU5/fTTa97r0KHDem2acozuvPPOdOrUqeZztaExatOmTU444YSMGDEio0ePzo9+9KO0bNmyVg3Vfxf23XffRn3BAQAAADQdm0xCE2jTpk2OOeaYJOtCxE8++aRWm8mTJ6eioiJJ7eVJNsbJJ5+cJHn77bczb968Tah2faNGjUqSbLXVVhsMa3/yk5+kTZs2jb5Gq1atMmDAgCTJc8891+h+6rNmzZqaeznqqKPWC7ertWnTpib4XLlyZc2M+rqceeaZdYaXXbt2zUEHHZRk3ZcDm0P1z/qll16qtbzGmDFjUllZmSS56qqrNhjQJ6n1Jcq9996bJOnVq1cuueSSemvYnMtu7LbbbuuF243RkDHq1KnTBvv57H1++9vfTpK89957mTJlSq32CxcurPkMm70NAAAAzc8MbupWeVNScWWytqq5K6nRuDm9n1HSPul4ZdLhoqbobT0nnXRSHn744bz33nv561//WhOCVqueJb3rrrtmr732qrOP8vLyPPTQQ/nrX/+a+fPnp6qqKmvWrKnV7s0338yuu+7aJHVPnz49SbL//vtn++23r7NNx44ds//++9cZ+H3a5MmT8/jjj+fVV1/Ne++9l+XLl9dq8+abb25yzXV5/fXX8+GHHyZJvRtA7rHHHunVq1feeuutvPjii/nud79bZ7v61grfZZddkqxbp7ux5s6dm4cffjgvvvhiysrKsmzZslpfjKxZsyZvvfVWzeaMSfL8888nSbp165YDDzxwo69XVVVVE8ifcMIJzbpu9MZultpUY7Rs2bKNrq20tDR77bVXXnnllYwaNapWraNHj86aNWuyzTbb5Fvf+tZG9wsAAABsHgJu6rbkpi9VuN1k1latu7fNEHD36dMnPXr0SFlZWcaMGbNewF1VVZVJkyYlWRcu1uWpp57KpZdeWms2al2qg9ymUF5eniSfG5jvuuuuGwy4V69enUsuuaTOjQs/qylr/7Tq+0iS3r1719u2d+/eeeutt/L2229vsM2n1wn/rG222SZJNupnVZd77rknN95440YtA/LZ8arepPQb3/hGg65ZXl5e82XJ5to8cmN93nruSfOMUbXBgwfnlVdeycSJE7NkyZL1vvipXp6kf//+ad++faP6BwAAAJqOgJu6bX/Rl24Gd5Moab/u3jaTE088MbfddlvGjRuXK6+8smZt6QkTJuSjjz5KSUlJncuTLFiwID/5yU+ycuXK9OzZM9/97nfzP/7H/0jXrl2z9dZbp6SkJGvXrk2fPn2SpM5Z3Y1VPcv68zZyrO/4HXfcURNuH3XUURk4cGB69+6d7bffvmZpkzFjxuTKK69s0to/7dOzdD/vXqrXYq5vZm+LFptnBafp06fnuuuuS7IugB0yZEi++c1vpkuXLmnTpk1KSkry9ttv1yzp8tnxqqpa93eyoeuUV5/XmHObWvUXBBvSXGNUbcCAAfn5z3+ejz76KGPHjq3Z1PWll16qWR7olFNOaVTfAAAAQNMScFO3DhdtllnOm6I6jGzucK4+1QH3smXLMnHixBx//PFJUrPW8z/90z/VOXv197//fVauXJltt902Dz/8cJ3rKi9dunSz1Ny2bdt8+OGHdS4n8mn1HX/ooYeSrNs881e/+lWdbT7++OPGF7kRPv252Nh7aY7PUvVY9ezZMw8//PB6G2xWq2/W8saE8/Wd15hzN1ZTfXnRXGNUrX379jn22GMzatSojBw5sibgrp693aNHj+y///6N6hsAAABoWjaZhCa0yy67ZO+9907y/9bcXrRoUf76178m2fDmkrNnz06SHHDAARvcNPD1119v6nKTJN27d0+S/P3vf6+33YaOV1ZW5t13302Setck3lz1V/v0Fwf//d//XW/b6uPV9/5Fqv5Z9+vXr87gNknmzJmzwfN79er1uW3q0qNHj7Rs2TJJMmvWrAadm6zbhDRJVqxYscE27733XoP7rUtzjdGnDR48OEny6quvZu7cuVmxYkWefPLJJMnAgQNTUlLS6L4BAACApiPghiZWHWJPmTIlixcvzh/+8IesWbMmrVu3znHHHVfnOatWrUpS/wzY6lngTa162ZNp06ZtcJZ4RUVFpk2bVuexlStX1rz+7AaA1ZYvX56JEydusIbWrVt/bh+f5+tf/3q23XbbJMm4ceM22G727NmZP39+kv9371+k6vGq7z6rvxypy8EHH5xk3ZraU6dO3ejrtm/fvubLl7Fjx27U2taf1qVLlySpWaKjLpMnT25QnxvSXGP0afvtt1++9rWvJVk3c/tPf/pTqqqq0qJFiwwaNKhRfQIAAABNT8ANTez4449Pq1atsmrVqjz11FM1wfQRRxyx3mZ1n1Y9k/ill15KZWVlreMvvPBCHnvssc1S78CBA5OsW0LkF7/4RZ1tbrzxxvWC7E/r1KlTzZrXTz/9dJ1trr/+X+im/gAAIABJREFU+jrvq9p2221XMyN24cKFG137p7Vs2bLmXsaNG5fnnnuuVptVq1bl2muvTbJuRvJJJ53UqGttiuqZ5lOmTKlzTMeMGbPBzTyTdetDd+jQIUlyxRVXZPHixRts+9kQe8iQIUmS+fPn55e//GW9dX72y5Z99tknSfLcc8/VOVP7jTfeyIgRI+rtc2M19RhVVFRssG19QX/1OttPPPFEzd+/Aw88MN26dfv8mwAAAAC+EAJuaGKdOnXKIYcckiT57W9/m5kzZybZ8PIkSWpmdldWVubss8/O888/nw8++CDz58/Pb37zm3zve9+rmU3a1Pbaa6+ccMIJSZJHHnkkP/nJT/Laa6+lsrIyM2fOzEUXXZSRI0fWuXZ4krRq1SpHH310knUzXa+//vrMnTs3FRUVmTFjRs4777w88sgj2W233TZYwzbbbFNz/L777svs2bPz0UcfZfXq1Q2aaXzOOeekS5cuWbt2bc4999zccccdWbBgQSoqKvL8889n6NCheeGFF5Ik559/fjp16rTRfTeV6p/1vHnz8oMf/CAvvfRSFi9enP/+7//OL37xi1x66aX1jlXbtm1rQvp58+Zl0KBBeeCBBzJ//vwsXbo0ZWVlmTBhQi6++OJa66F/61vfylFHHZUkueuuuzJs2LD85S9/yaJFi1JZWZnZs2fnvvvuy6BBg2otKXPyySenZcuW+eijj2o+o5WVlSkrK8v999+fM844IzvssMOXcozOOOOMPProoxs1Rp82cODAtGrVKosWLar5DQabSwIAAMCXi00mYTM46aST8swzz6S8vDzJuhnKRxxxxAbb9+3bN6eddloefvjhvPLKKxk6dOh6x3fcccfccsst9a5xvSmuvvrqvPPOO3nxxRczevTojB49er3jJ5xwQv7hH/4ht956a53n//jHP86LL76Y8vLy3H333bn77rvXO37MMcfksMMOy2WXXbbBGoYMGZKf/exneeWVV2rNrJ44ceIGA/ZP69ixY377299m2LBhWbhwYX75y1/WOVP5rLPOytlnn/25/W0OAwcOzLhx4/LnP/85U6ZMqTUTedddd811112X0047bYN9HH300bnxxhtz+eWX55133slVV11VZ7vqGdufdtNNN+WnP/1pnnrqqfzlL3/JX/7yl42qe7fddssFF1yQX/3qV5kzZ06tz+huu+32uXVvrKYeo3fffTfXX399rr/++lrt6hqjal26dMnhhx9es7zOdtttV/NlDgAAAPDlIOCGzaBfv35p3759qqqqkiTHHnts2rRpU+85V199dfbaa688/PDDmTt3blq0aJGddtopRx55ZM4+++zNOtu4bdu2ueeee3Lfffdl9OjRmTdvXlq1apXevXtn8ODBGTx4cG655ZYNnt+lS5c89thjue222zJp0qS89957ad++fb7+9a9n4MCBGTRoUEaOHFlvDaeddlratWuXhx9+OHPmzMmHH37YqPW4S0tL8+STT+a+++7LhAkT8uabb2bFihXZYYcd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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "image/png": { + "width": 732, + "height": 506 + } + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZsHqkLAuf8pv" + }, + "source": [ + "The training accuracy starts to approach 100% after 10 epochs or so. You might try to fine-tune the parameters a bit more, but this will be good enough for us.\n", + "\n", + "Don't want to wait? Uncomment the next cell to download my pre-trained model:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "zoGUH8VZ-pPQ" + }, + "source": [ + "# !gdown --id 1V8itWtowCYnb2Bc9KlK9SxGff9WwmogA\n", + "\n", + "# model = SentimentClassifier(len(class_names))\n", + "# model.load_state_dict(torch.load('best_model_state.bin'))\n", + "# model = model.to(device)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "U3HZb3NWFtFf" + }, + "source": [ + "## Evaluation\n", + "\n", + "So how good is our model on predicting sentiment? Let's start by calculating the accuracy on the test data:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "jS3gJ_qBEljD", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "21f968b6-fd29-4e74-dee0-8dc9eacd301e" + }, + "source": [ + "test_acc, _ = eval_model(\n", + " model,\n", + " test_data_loader,\n", + " loss_fn,\n", + " device,\n", + " len(df_test)\n", + ")\n", + "\n", + "test_acc.item()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.883248730964467" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 52 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "mdQ7-ylCj8Gd" + }, + "source": [ + "The accuracy is about 1% lower on the test set. Our model seems to generalize well.\n", + "\n", + "We'll define a helper function to get the predictions from our model:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EgR6MuNS8jr_" + }, + "source": [ + "def get_predictions(model, data_loader):\n", + " model = model.eval()\n", + " \n", + " review_texts = []\n", + " predictions = []\n", + " prediction_probs = []\n", + " real_values = []\n", + "\n", + " with torch.no_grad():\n", + " for d in data_loader:\n", + "\n", + " texts = d[\"review_text\"]\n", + " input_ids = d[\"input_ids\"].to(device)\n", + " attention_mask = d[\"attention_mask\"].to(device)\n", + " targets = d[\"targets\"].to(device)\n", + "\n", + " outputs = model(\n", + " input_ids=input_ids,\n", + " attention_mask=attention_mask\n", + " )\n", + " _, preds = torch.max(outputs, dim=1)\n", + "\n", + " probs = F.softmax(outputs, dim=1)\n", + "\n", + " review_texts.extend(texts)\n", + " predictions.extend(preds)\n", + " prediction_probs.extend(probs)\n", + " real_values.extend(targets)\n", + "\n", + " predictions = torch.stack(predictions).cpu()\n", + " prediction_probs = torch.stack(prediction_probs).cpu()\n", + " real_values = torch.stack(real_values).cpu()\n", + " return review_texts, predictions, prediction_probs, real_values" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dkbnBTI7kd_y" + }, + "source": [ + "This is similar to the evaluation function, except that we're storing the text of the reviews and the predicted probabilities (by applying the softmax on the model outputs):" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "zHdPZr60-0c_" + }, + "source": [ + "y_review_texts, y_pred, y_pred_probs, y_test = get_predictions(\n", + " model,\n", + " test_data_loader\n", + ")" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gVwoVij2lC7F" + }, + "source": [ + "Let's have a look at the classification report" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "L8a9_8-ND3Is", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 187 + }, + "outputId": "9b2c48cc-b62e-41f3-dba5-af90457a37de" + }, + "source": [ + "print(classification_report(y_test, y_pred, target_names=class_names))" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " negative 0.89 0.87 0.88 245\n", + " neutral 0.83 0.85 0.84 254\n", + " positive 0.92 0.93 0.92 289\n", + "\n", + " accuracy 0.88 788\n", + " macro avg 0.88 0.88 0.88 788\n", + "weighted avg 0.88 0.88 0.88 788\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rFAekw3mmWUi" + }, + "source": [ + "Looks like it is really hard to classify neutral (3 stars) reviews. And I can tell you from experience, looking at many reviews, those are hard to classify.\n", + "\n", + "We'll continue with the confusion matrix:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6d1qxsc__DTh", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 533 + }, + "outputId": "14b8839c-4e14-430c-b185-46b09bd4231e" + }, + "source": [ + "def show_confusion_matrix(confusion_matrix):\n", + " hmap = sns.heatmap(confusion_matrix, annot=True, fmt=\"d\", cmap=\"Blues\")\n", + " hmap.yaxis.set_ticklabels(hmap.yaxis.get_ticklabels(), rotation=0, ha='right')\n", + " hmap.xaxis.set_ticklabels(hmap.xaxis.get_ticklabels(), rotation=30, ha='right')\n", + " plt.ylabel('True sentiment')\n", + " plt.xlabel('Predicted sentiment');\n", + "\n", + "cm = confusion_matrix(y_test, y_pred)\n", + "df_cm = pd.DataFrame(cm, index=class_names, columns=class_names)\n", + "show_confusion_matrix(df_cm)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABaoAAAQJCAYAAAAn5j+TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdeZiWdb0/8PcDzDDIKooLSOYC5EaouKCChlRKooJparaYSmiLG+eodTp6/FUuZWGe415kHTU1sQNqWOIC5oJLSLmRuSEoi2yyDwy/P5CRkRkEwe5H5/W6rrmum+d739/n88zj4PCZz7zv0ooVK1YEAAAAAAAK0qToAgAAAAAAaNw0qgEAAAAAKJRGNQAAAAAAhdKoBgAAAACgUBrVAAAAAAAUSqMaAAAAAIBCaVQDAAAAAFAojWoAAAAAAAqlUQ0AAAAAQKE0qgEAAAAAKJRGNQAAAAAAhdKoBgAAAACgUBrVAAAAAAAUqlnRBcCHreOQEUWXAMA7nrpkQNElAPCOdi0rii4BgHdU6dDVarH7t4suYb0s+ut/F13Cx4aJagAAAAAACqVRDQAAAABAofxiAQAAAABQHkrmahsr7zwAAAAAAIXSqAYAAAAAoFAa1QAAAAAAFEpGNQAAAABQHkqloiugICaqAQAAAAAolEY1AAAAAACFEv0BAAAAAJSHkrnaxso7DwAAAABAoTSqAQAAAAAolEY1AAAAAACFklENAAAAAJSHUqnoCiiIiWoAAAAAAAqlUQ0AAAAAQKFEfwAAAAAA5aFkrrax8s4DAAAAAFAojWoAAAAAAAol+gMAAAAAKA+lUtEVUBAT1QAAAAAAFEqjGgAAAACAQmlUAwAAAABQKBnVAAAAAEB5KJmrbay88wAAAAAAFEqjGgAAAACAQon+AAAAAADKQ6lUdAUUxEQ1AAAAAACF0qgGAAAAAKBQGtUAAAAAABRKRjUAAAAAUB5K5mobK+88AAAAAACF0qgGAAAAAKBQoj8AAAAAgPJQKhVdAQUxUQ0AAAAAQKE0qgEAAAAAKJToDwAAAACgPJTM1TZW3nkAAAAAAAqlUQ0AAAAAQKE0qgEAAAAAKJSMagAAAACgPJRKRVdAQUxUAwAAAABQKI1qAAAAAAAKJfoDAAAAACgPJXO1jZV3HgAAAACAQmlUAwAAAABQKI1qAAAAAAAKJaMaAAAAACgPMqobLe88AAAAAACFMlENAAAAAFBGlixZknHjxuWhhx7KxIkTM3ny5CxcuDCtWrVKly5d0rdv3xxzzDFp1apVvdePGDEi55133vs+T5cuXXLnnXeu9ZxZs2bl17/+de69995MnTo1lZWV2W677TJgwIAce+yxadZs47SYNaoBAAAAgPLQpFR0BWWhV69eWbBgwRqPz5kzJ48//ngef/zx3HDDDbniiivSvXv3D62OZ599NoMHD86MGTNqH1u0aFEmTJiQCRMmZNSoUbn++uvTunXrDX4ujWoAAAAAgDKyYMGCVFRUpF+/funXr1922223tGvXLtOnT8/IkSPzq1/9Km+++WZOPvnkjBo1KltuuWWDez311FMNrjVt2rTBtTlz5mTIkCGZMWNG2rRpk/POOy8HHHBAFi9enNtvvz3XXHNNJkyYkLPOOivXXXfdBr3eRKMaAAAAAKCsHH/88TnttNPSoUOHOo+3bds2Z599drp27ZqhQ4dm7ty5ueqqq3LBBRc0uFfLli0/UA3XXXddpk2bllKplKuuuio9e/asXTvzzDNTVVWVYcOGZezYsRk7dmz69OnzgZ5nFTdTBAAAAADKQ6nJR+vjQ3L++eev0aRe3YABA9K1a9ckydixYzf68y9btiy33nprkuSggw6q06Re5aSTTkq7du2SJDfddNMGP6dGNQAAAADAR0yXLl2SJNOnT9/oez/xxBOZN29ekuTQQw+t95zKysr069cvSfLwww9n8eLFG/ScGtUAAAAAAB8xM2fOTJJ1vpHh0qVL13nvZ555pva4R48eDZ63am3JkiV58cUX13n/+sioBgAAAAD4CJk5c2btTRJ33333tZ47cODA/OMf/0h1dXU22WST7LzzzvnsZz+bY445Jptsskm917z88stJkiZNmqRjx44N7r3NNtvUuWbXXXdd35dSS6MaAAAAACgPpVLRFayXESNG5I477ljn8wcOHJhBgwZt8PNedtllqa6uTpIcd9xxaz332WefrT1euHBhnnjiiTzxxBP53//93/z3f/93PvWpT61xzezZs5Mkbdq0SUVFRYN7t2/fvvZ4zpw56/Ua3kujGgAAAADgA5gyZUrGjx+/zufvvffeG/ycI0eOzIgRI5Ikffv2Te/evdc4p6qqKgMHDky/fv2yww47ZKuttsry5cvz/PPP56abbspdd92VyZMn56STTsqIESOy5ZZb1rl+0aJFSZLmzZuvtZaqqqra44ULF27Q69KoBgAAAAD4ADp16rRezedOnTpt0PNNnDgxP/jBD5IkW2+9dX70ox/Ve17//v3Tv3//NR7v2bNnevbsme7du+eiiy7KzJkzM2zYsFx00UUbVNfGoFENAAAAAJSHUpOiK1gvgwYN2ihRHuvipZdeyuDBg7N48eK0a9cu119/fZ3ojfXx9a9/PXfddVcmTpyY0aNH58ILL6wT8dGiRYskK2+SuDaLFy+uPW4o73pdfbTeeQAAAACARmbq1Kn5xje+kdmzZ6dly5a57rrrsuOOO27Qnn379k2yMrLj1VdfrbO26aabJknmzZuXZcuWNbjHrFmzao/btWu3QfVoVAMAAAAAlKmZM2fmxBNPzBtvvJGqqqpcffXV6d69+wbvu9lmm9Uez5s3r87adtttlySpqanJlClTGtzj9ddfX+OaD0qjGgAAAACgDM2dOzcnnnhiXnnllVRUVOQXv/jFRrkhY5LMmDGj9rhNmzZ11nbZZZfa46effrrBPSZMmJBk5U0XN3TCW6MaAAAAACgPpdJH6+NDtGDBgpx88smZNGlSmjRpkksvvTQHHnjgRtt/zJgxSZKWLVtm2223rbPWs2fP2ub16NGj671+6dKlue+++5Ik++23X6qqqjaoHo1qAAAAAIAysnTp0px66qmZOHFikuTCCy9M//791+na+fPnZ/78+Ws959prr80zzzyTJDn00EPr3EgxSZo1a5ZjjjkmSXL//ffnySefXGOP4cOH12ZUH3/88etU29o02+AdAAAAAADYKJYvX54zzjgjjz32WJLku9/9bvr3758FCxY0eM0mm2yS0jsT3pMnT85Xv/rV9O/fP3369EmXLl3Stm3bLF26NM8//3xuvvnm2mnqDh065Lvf/W69e55yyikZNWpUpk2bllNPPTXnnXdeDjjggCxevDi///3vc+211yZJ+vTpkz59+mzw6y6tWLFixQbvAmWs45ARRZcAwDueumRA0SUA8I52LSve/yQA/iWqjJLWavG5nxRdwnpZ9Kd/2+h7vv766zn44IPX65oxY8Zkm222SZI899xzOfLII9/3mh133DGXX375WrOln3322QwePLhOnvXqevTokeuvvz6tW7der3rr48sAAAAAAOBj4hOf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C5cszzk3/rX2z4f39AMqoHH53gU/zqBjjl+jSb26L3356+n6qZ2TJK++/FL++Y8X1vt5Xpz0fP7xwnNJkh127JpP7bzrBysYgCTJJT/+YRYsWJBNN9203ib16po0aZKmTZv+C6sDNprSR+yDjUajGuBf5OFJM2qPt9+yVYGVJM9NmZdZ85esrGWLYmsBKFe77/lu3Mfk115d7+vvHvVuNEj/w01TA2yI1ydPzoMP3J8k+dJxX15rkxqAjybRH43cPvvskxdeWP8JIWD9VTR992eDy8sgEnpVPcv9SiRAvaqrq2uPmzRZv/mO6urq3Dv6riRJRUVFPnvIgI1aG0Bjc8/ou2ujPPoe/NnaxxctWpQZ06enqkVVNttsc1PUAB9hGtUA/yL7detQe/yPN+YVWEmy2yfapXWLiiTJpIJrAShXf33y8drjT26/w3pd+5ex92fu3DlJkv16fyZt27XbqLUBNDZPT1gZXdesWbPssOOOeerJJ3L1lf+dx8c/lpqalVMgLVu2zP4H9M7Jg09Nt099qshygQ1QKsnTaKw+ltEf781nfv755zN06ND06dMnu+66a3r37p1zzz03r7322lr3mTt3bq688socffTR2WeffbLrrrumT58+Oeuss/LXv/51rdeuet4zzzwzBxxwQHbbbbf07ds3F1xwQaZMmZIk6datW7p165YRI0asce2SJUvywAMP5D//8z8zYMCA7L777tl1112z//7755RTTsmoUaNq/2e8uhEjRqRbt265446Vv2o6fvz42udZ9XHuuefWnv/YY4/VPv7666/XPn7jjTemW7du2WmnnTJt2rS1vs7HH3+8do+//OUv9Z7zyCOP5Oyzz85nPvOZ7Lbbbtlzzz1z1FFH5dprr83ChQvf93MJH3WHfHrr7NRp5U0RJ746O/+cNr/Qes7s/+437n8YP7nASgDK07gHxuTlf/4jSdL1UzvnE9tut17X//FOsR8AG9OLL678O7l169b5/a235KSvfyWPPfpInX8XL1iwIH+6Z3SO/9JRGfH724oqFYAP6GPZqF7d3XffnaOPPjqjRo3KtGnTUl1dnenTp+eOO+7IF7/4xQZjLx599NF87nOfy+WXX56JEydmzpw5qa6uzrRp03LXXXfl2GOPzeWXX97g844cOTJHHXVU7r777syYMSNLly7NlClTcvPNN2fQoEH5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H02vXr3W6/oePXqkVCplxYoVue+++7LbbrvVe96YMWMa3GNVlMjaIj1WxW40pNk7OVwbIxZkhx12yC677JJnnnkmI0eOzOc///naGJCDDjoorVuv+Y+61q1bp3v37pkwYULuvvvunHDCCRtcB5Sr/xi0a048aIckyRtzFuX82yZm601bZOtNG/6V7zdmL8q8RdV1HtukedMctkenOo/tsk3b2uPP7LxlOm9W99fRb33ktTp/3rRlZW4784DssOXKr8s7xk/O6KffSLeObdb6Gl6YOm+t6wAfJ1f94rLccdvNSZLNO2yRb515TmZMnzWoeOEAACAASURBVJYZ06c1eE2HLbZM69YN/136x1F/qB1yOPSwIzduwQAkSU755qkZ++ADeemfL+ZnP700zz37bL4w4PBs3qFDpr3xRu4Y8fs8cP99SZL2m22WfzvnvIIrBj4IGdWNl0b1exxwwAHp2rVrJk2alAsuuCA33nhjNt988wbPf/3117PFFluksrIyycobOO633375y1/+kt/+9rc56qijss0229S5ZvLkyfntb3/b4J6rzn/55Zfz6quvZtttt62z/s9//jNXX331Wl9Hu3btkiTTp09f63nr6vDDD88zzzyTBx98MI8//njt1Peqaev6nHjiiTn99NPz5JNPZvjw4TnxxBMbPHf58uV5/fXX13it8FEwYM93m8tbt2uRPwx9/6ibM254Yo0mc/tWzTPsaz0bvObbh3Rb47H37vGpTm3SZet3GykD9+6cgXt3ft96Og4Z8b7nAHxcPPDODQ+TZOaM6fnuN7/2vtec+58/bLABXVNTk9F3/V+SpGnTZvl8/zVj0QDYcK1atcrV1/4yp3/ntDz37DP549135o9337nGedt07pxhV1yZrd5zLyUAypvoj/colUq5+OKLU1VVlVdeeSVHHHFEfvnLX2bSpEmZO3du3nrrrTz33HO57bbbMmTIkHzuc59bIyt66NChadq0ad5+++2ccMIJGTVqVGbMmJEZM2Zk5MiROeGEE9K+ffsGa/jc5z6XJk2apLq6OoMHD86YMWMyY8aMTJ06NTfddFO+/OUvp0WLFrXN6PrssssuSVY2xW+88ca89dZbWbZsWZYtW5aampr1/rwcdthhadq0aaqrq3POOeckWdkM79OnT4PXHHLIIfnCF76QJLn44ovzrW99Kw8++GCmTZuWefPmZcqUKRk7dmx+8pOfpF+/frnhhhvWuy4AgKI98dgjtdPY++7fO+03a3jIAYANs+VWW+V/b74151/4w+zba79svnmHNGtWkXbt2qXnXnvnnO/9R0b8313p0qVr0aUCsJ5MVNdjl112yfDhw3PGGWdk2rRpufTSS3PppZfWe27Tpk3TtGnTOo/tvPPO+fGPf5zvfe97eeONNzJ06NA6623bts0VV1yRo48+unaP1X3yk5/MGWeckZ/97Gd55ZVXctppp9VZb926da644oqcc845mTNnTr11feYzn0nnzp0zefLkXHjhhbnwwgtr1wYOHJiLL7543T4Z79h8882z3377Zdy4cZkyZWXe16GHHpqKioq1XnfxxRenVatWueWWW3Lvvffm3nvvbfDc99sLytU+37/n/U9aB6+/tXCDJ5sfmTTTdDTA+7jl//60Uffbu9f+eXD83zfqngA0rFmzZhl01NEZdNTRRZcCfBgkfzRaGtUN2GOPPXLPPffk9ttvz3333ZcXXnghc+fOTdOmTbP55punS5cu6dWrVw455JC0bdt2jeuPPPLIdO3aNddcc00ef/zxzJs3Lx06dMgBBxyQwYMHZ9NNN609t2XLlmtc/81vfjM77LBDbrjhhjzzzDNZtmxZttxyy+y///456aSTam/62JCqqqrceOONufLKK/PII4/kzTffzJIlSzboc3LEEUdk3LhxtX8+/PD3/7XWysrKXHjhhfnSl76UW265JU888URtLa1atUrnzp3To0ePHHTQQdlvv/02qD4AAAAA4KOptGLVXV/4l3r22WczcODAJMntt9+eXXfdteCKPr5MlwKUj6cuGVB0CQC8o11Lv9EIUC6qjJLW2uxrNxddwnp564bjii7hY8OXQUHuu2/lnYgrKyvTtavsLAAAAAAolWR/NFZupvghaSg7OkleeeWVDB8+PEnSt2/fVFZW/qvKAgAAAAAoOyaqPyT//u//npYtW+YLX/hCdtlll7Rs2TIzZszIuHHjcvXVV2f+/PmpqKhY40aJAAAAAACNjUb1h2T58uW5++67c/fdd9e7XllZmUsuuSTdunX7F1cGAAAAAFBeNKo/JN/5znfStWvXPP7445k2bVpmz56dysrKdOzYMb169cpXv/rVdO7cuegyAQAAAKBsyKhuvDSqPyQ9evRIjx49ii4DAAAAAKDs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4Pnbbbdd7fHrr7/e4HlTp05NTU3NGtes/ueamppMmTIl2267bb17rL7/e/dYXyaqAQAAAADK0Ny5c3PiiSfmlVdeSUVFRX7xi1+8byZ2ly5dam+C+PTTTzd43oQJE2qPd9lllzprq/95XfZo3rx5gxPe60qjGgAAAACgzCxYsCAnn3xyJk2alCZNmuTSSy/NgQce+L7XVVVVpVevXkmSMWPGZOnSpfWeN3r06CQrIzv23HPPOms9e/ZMmzZt6pz3XkuXLs19992XJNlvv/1SVVW1bi+sARrVAAAAAEBZKJU+Wh8flqVLl+bUU0/NxIkTkyQXXnhh+vfvv87XH3/88UlWZkgPHz58jfUnn3wyDzzwQJLk6KOPTrNmdROimzVrlmOOOSZJcv/99+fJJ59cY4/hw4fXZlSver4NoVENAAAAAFAmli9fnjPOOCOPPfZYkuS73/1u+vfvnwULFjT4sWLFijp7HHjggenTp0+SZNiwYRk2bFgmT56cGTNm5I477sipp56ampqabLnlljn55JPrreOUU07JlltumZqampx66qm54447MmPGjEyePDk///nPM2zYsCRJnz59ap9rQ5RWvPdVwMdMxyEjii4BgHc8dcmAoksA4B3tWlYUXQIA76hq9v7nNBZd/73+mIlyNenSQzb6nq+//noOPvjg9bpmzJgx2Wabbeo8Nm/evJx88skNZkx36NAh1113XXbaaacG93322WczePDgzJgxo971Hj165Prrr0/r1q3Xq976+DIAAAAAAMpC6cPM02hk2rRpk5tuuim/+93vMnLkyLz88suprq5Ox44dc/DBB+fEE09M+/bt17rHzjvvnJEjR2b48OEZM2ZMpk6dmoqKimy//fYZMGBAjj322DViQz4oE9V87JmoBigfJqoByoeJaoDyYaL6Xd3OuafoEtbLC5d8vugSPjZkVAMAAAAAUCiNagAAAAAACuUXCwAAAACAsiCiuvEyUQ0AAAAAQKE0qgEAAAAAKJToDwAAAACgLDRpIvujsTJRDQAAAABAoTSqAQAAAAAolEY1AAAAAACFklENAAAAAJSFkojqRstENQAAAAAAhdKoBgAAAACgUKI/AAAAAICyUJL90WiZqAYAAAAAoFAa1QAAAAAAFEr0BwAAAABQFiR/NF4mqgEAAAAAKJRGNQAAAAAAhdKoBgAAAACgUDKq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qpOFCxfm9ddfz+uvv57bb789F110Ufr27bvK/u+9917N44022qjW161Xr1423HDDzJo1K7Nmzfr0F/4JCKqTnHvuubnrrruy2267ZciQIRk5cmRuuOGGjBo1Ku+//37atGmT/fffP6effnqaN29e6+u89tprufnmm/PMM89k2rRpqaysTIcOHbLPPvvkxBNPTMuWLWs99vnnn89tt92WF154IdOnT09ZWVlatmyZ1q1bp3v37jnwwAOzww47rHLMmm6muHLZ+nIf7qlu3759HnroodW2r3wzxTfeeKPmN/qgQYNyyCGH1Lr2+fPnZ88998y8efNyxhln5Oyzz15tnwkTJuSWW27J008/nXfeeSdLlixJmzZt0rt375xyyilp1271HjKo6+bNm7faczNmTM+wP9+Ze4ffnTO/81/5xmlnFLAyAMa/seIvDHPnzsnxXzki06dPW2WfJUuW5JWxL+ei83+Uhx78awZeclkaNmq0vpcKUNIO3WeHml7q58dOzrhJq55Lu27ZtuZxp003zp8uOz3Nmq56Lq1frzK9d+mc3rt0zo1/fipn/vT2LF26dLWv9fs/PJZtO7XJaV/tnfO+eXC6dd0stwx7JhPfnpkNN2iU7l/qmP86Yb+0bNYkb0yeltPPv/UzeMfAR1mPbRqfijvvvDN33XXXOu/fr1+/mvytNuXl5enVq1f69u2b7bbbLm3btk2DBg0yadKk3Hvvvbn++uZrNA8AACAASURBVOszb968nHPOOWnWrFl69epVc+z8+fNrHjdo0GCtX2f59jXlD0UQVH/I0KFDc8EFF2TJkhWXG02ePDnXX3997rnnntx0003p1KnTasddd911ufTSS1c5rqqqKq+++mpeffXV3H777bniiivSvXv3NR77y1/+crXnp0yZkilTpuTFF1/MuHHjctVVV31K7/KjbbXVVtluu+0yZsyYDBs2bK1B9d///vea39CHHXbYatuvv/76DBo0KNXVq16KNXHixEycODF/+tOfctlll2Xffff9dN8EfE5t3KpVDjzoy+nRs1c6d946zZo3z/z58zPu9ddy95/vzN133ZnFixfnt7++LPXq1cuJJ59a9JIB6pz3Z8+ueXzFr3+Vqqqq9Oy9d0457Yx03nrbVFUtyIinn8rlgwflnXem5KknHssvf3ZhfnzhzwpcNUBp2WSjphl83tFJln2497+//vNq+7RstqJCafC5R6dRw/oZMuwf+fWQhzJu0rQ026BhDtlnh/z0u4dl4xYb5KQj9sw//zUrF19132qvtXTp0pz1sz/kvsdeytlf3z8H9dwuB/XcbpV93nt/Xv6/39yda/74RGbPnb/aawB82Ntvv50RI0as8/677bbbR+7Trl27XHfddas9v/XWW2frrbfO3nvvnZNOOilVVVW58MILc99996WiomINr/T5IqheyaRJk3LRRRdlu+22y9lnn50uXbpkzpw5ueeee3LllVdm2rRp+da3vpVhw4at8onE8OHDa4LmrbfeOmeffXZ23HHHVFVV5eGHH86vf/3rzJ49O6eddlqGDRuWDh061Bw7YcKEDBo0KEnSo0ePnHrqqdlyyy2zwQYb5P3338/48ePz+OOPZ86cOev0Htq3b5/nn38+w4cPz09+8pMky6a1V7aul50edthhGTNmTJ588sm8++67tU6EDxs2LEmy3XbbZcstt1xl26233ppf/OIXSZIDDzwwxx13XDp37pzy8vKMHTs2l19+eV544YWcddZZ+dOf/pStt956tdeHuubmW4fWdJ0u17Rp03TbZdd022XX7L3Pfhlw9n9l8eLFufw3g3PAQV9Ou3btC1otQN00f/6KqZOqqqrs0+eA/PzSwTXn7wYNGmT/gw7Ojjvvkv7HHpX33p2Ze4f/Occe3z9bb9ulqGUDlIwG9Stzx69OS7vWy65a/u2tD+eREavfKLFJ4xV/927UsH5+e8tD+Z9Bd9Y8N/29ubnhrqcy4qWJeXzIgDRqWD/fP2n/XPunxzN15up/j968/Ubpf+geq1SKrKzFho1z7P/rnrenzcrt9478T98mUAe0b99+ncLnlff/T3Xr1i39+/fPtddem4kTJ2b06NHZeeedkySNVrqCb/lNFWuzfHvjxqVxXxVB9UqmTp2abbfdNkOGDKn5RW3ZsmW+/e1vp0OHDjnnnHMyceLE3HrrrTnllFOSLOuGGThwYJKkU6dOuf3227PBBhvUvObxxx+fnXfeOcccc0zmzZuXX/ziF7n88strtj/xxBNZvHhxNtpoo1x99dWpX79+zbYNN9wwm266afbee+91fg9lZWVp0qTJKq/TpEmTT/Tz0bdv3/zyl79MdXV17r333vTv33+1fd599908+eSTSVafpp42bVpNJcnJJ5+cc889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b58kmThxYqqra+/VGjduxR+Sy49Zk44dO+aII47IRRddlEceeST9+/dPkrz88ss1n3Ssbz169EirVss+mV4eTo8ePToTJ05MsubajyTp0KFDkmX/EwHr5rFHH/nID75uuO6a/OX+e5Ms66E6vN/6v7swAMmJp55WU+Xx84svyPz5q5+/X31lbG675aYkScOGjXLoEc7ZQN1y2Q++mm98pVeS5Lmxk3PIt67I+3PXLaRe7ufXPpAkadigXi7/0bGrVHwsd1Cvrjnm4F2TJG9PfS93P7RqL+vDI16rCccP23fHHNx7+zV+rY2aN8nFZx1e8+Phj7gJLrD+VVdX569//Wt+8IMf5JBDDskee+yRPfbYI1/96ldz4403ZtGiRWnWrFkGDx5c6/32Bg0alB133DFLlizJlVdemf333z+9evXKueeem9mzZ6dVq1a56qqr0rx58/X87mpnonol8+bNy5NPPpm99tprjdsffPDBJMlWW22VDTfcMEmyyy675Kabbsr8+fPz+OOPZ999913jsQ88sOwP1oqKiuy8885r3OfDKisr893vfjdDhgxJkowfP76mz3pdjl1u8eLF/1EfYkVFRQ455JDccMMNue+++3LeeefV1H60atUqe+655ptL9OzZM2PGjMkTTzyR999/v+bnDKjdTTdclx/+YED23ne/dOu2azpuvnk22KBpFiyYn3HjXs/wu/+cUS++kGRZR9+PL7gwzZu3KHjVAJ8/b02elFEvPL/KczNnrpiau+fuu1bZttHGG6dHz96rPLflVp3z9ZO/kRuuvSpjXhqdk447Osd//eR03nqbVC2syjNPP5Wht9yUqgXLgpGzBvxPWrbcKAB1xcVnHZ4zjt07STJl2qz84NL/S/tNmqf9JrWHIm9PnZXZc+ev8txfnxyb2+8dka/13S2H7rtjHrr+7Fxx+yN5feLUbLhBoxy6zw457ejeKS8vz+LFS3Lmhbdn4aJVB8nen7sgA6++Pz87u18qKspzx6++mZuH/SPDHx6dKdNmZYPGDdJjp0759nH7pm2rZkmSF199K7fdO+JT/lkB+GgDBw7Ms88+m1GjRmXq1KmZNWtWTTi91VZbpVevXvnKV76SFi1qzwM23HDD3HbbbRk6dGiGDRuWCRMmZNGiRWnXrl369OmTk08+OS1btlyP7+qjCao/ZNCgQenevXsaNWq0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Wn5/gOXn07WdVysrK7PBBhtk+vTpeeONN/Lyyy/nhBNOcC4G+IwsP78OHjw4Dz/8cLp27ZpLLrkkp59+evbee+8cfPDB2WWXXTJr1qyMHz8+b731VrbZZpu0bt264JUDsL74aBLgY1q6dGkWL168xueTZUH1+++/nx49emTfffdNsiw8qaysTJI8/vjjOeecc/Lmm28mSRYsWLDaJY8ArLvl5+XlnaYvvfRSfvGLX+SCCy7ImWeemT//+c+ZOnVqzf5LlixJkmy++eY54IAD0rp160yYMCE333xzkqzxHA/AuvvwhdvLf/zHP/4xd911Vzp27Jif/vSn2WOPPbJ06dKa83K3bt1y4oknprKyMiNGjMjQoUPz3nvvrff1A1CMyqIXAPB5U1ZWloqKikyePDnPP/98vvzlL6dhw4YpKyvL0qVL8/jjjydJ9t577zRp0iRJUlFRkfHjx+eyyy7Lgw8+mGRZb/V5552XffbZp6i3AvC5t/xS8oqKikydOjWXXnpphg8fvso+Dz30UL70pS/l3HPPzS677LJKLcguu+ySAw88MLfcckt+9atfpV+/fmnatKleVIBPYPmHhiufP1c+nz711FNJkr59+2b77bev2b9evXpZsGBBrrnmmlx55ZU1wXWnTp3SokWL9f9GACiEoBrgE3jsscdy2mmnpVmzZjniiCOSrLjkvHnz5kmS2bNnJ0nmzJmTq666Ktdee22SpF69evn+97+fk046qeb1Vp4EBGDdLQ8/7r333gwcODAzZsxIZWVl+vXrl7Zt29Zse+mll3LJJZfk29/+dnr37l0z3bfJJpukT58+GTlyZF577bUMGjQo559/vqAa4BNY/v3sgw8+mDfffDMn197EVAAAIABJREFUn3xy6tWrlySZPn16Xn311TRs2DA77bTTKvvfc889+dWvfpUpU6YkSQ499NAMGDAgm2yySQHvAoCiCKoBPoF58+alUaNGqayszIsvvpiddtopFRUVqaqqysKFC5Mk7733Xm666aZcffXVmTlzZpLk6KOPzve+972aMHvhwoWprKxMRUVFpk2bpoMP4COs6WaHTz75ZAYPHpwZM2bkoIMOyn//93+nY8eOqa6uTv369XPQQQflzDPPzMsvv5ybb74522+/fVq0aJHq6upUVlZm++23z5e//OW89tprGTp0aI499thsu+22bqwI8AlceOGFufXWW3PAAQekXr16NQMZzZo1y+zZs7NgwYKa8Pr555/PZZddlpEjRyZJdthhh5x33nnZeeedkySLFi1KZWWlDw4B6gjfeQN8As2aNcv8+fNTXV2d6urqJMumohs0aJDu3bsnSYYOHZqBAwdm5syZ2W233XLnnXfmpz/9aZo3b57q6uosWbIk9evXT3l5ed54441cdtlleeKJJ4p8WwAla3kP9YeD43fffTcDBw7MtGnTcu655+biiy/OFltskfLy8tSvXz+jR4/OT37yk0yaNCnV1dV57rnncscddyRJzb0DmjZtmr322is9e/ZMkgwcODBJhNQAH8PKdR1JMmbMmMydOzcVFRVZunRp5s6dm2222SYVFRW5//7788Mf/jDHHXdcRo4cmebNm2fgwIG54447svPOO2fp0qVZtGhR6tWrl7KysppJ6+VfA4AvJt99A3XSzJkzM3369DVuW5ebaO22227ZbLPNMnv27Lz22mtJVtwkpm/fvmnRokXmz5+fDTfcMBdffHFuvvnmdO3aNUuWLKm5seLyyZDx48fn4osvzl133ZUXX3zRN+AAH7JyD/W7776bCy64oObmiB988EG23HLLHHvssenXr1822GCDJMuuavnRj36Uo48+Os8++2w23njjdOnSJfPnz8/dd9+dcePGJUnNh42dO3fOQQcdlMaNG+eZZ57J3/72tyRurAiwrpZ/uNe4ceM0btw4SfL6668nWVbT1LJly2y00UZZvHhx7rzzztx5551J/n/27js+qjpd/PhnWiaTXklPSEgPSSih9y4oVRQEG8girC4IeFHWsqy6iAvCurp6d1ddRcHlokjvRURIIZQkJCSE9EwyhJBGSCBtfn/kN0cCqHv3ugTJ8/4HyJk5c+a8eH358pynwK9+9Su+/fZbJk+eDLSuyyqVSsm63rFjB/PmzaO0tBS1Wn3LoEYhhBD3DglUCyE6nE2bNjFgwABWrlx52+P/Sq/o2tpawsPDAThz5oxSPg7g7u7Oww8/DLQGVzw9PZV2IDeeX6VSUVpayvvvv09SUhI9e/ZkypQpksEnhBD/n+XBneXB3tatWxk3bhxffPEFa9euBcDHx4fnn3+eZcuW4ejoCMC2bdsYP348X375JQBz587lu+++45lnnsHFxYXCwkI+//xzoDWr2lLh0rdvX0aOHAl8n1Ut8wOE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "image/png": { + "width": 725, + "height": 516 + } + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wx0U7oNsnZ3A" + }, + "source": [ + "This confirms that our model is having difficulty classifying neutral reviews. It mistakes those for negative and positive at a roughly equal frequency.\n", + "\n", + "That's a good overview of the performance of our model. But let's have a look at an example from our test data:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "iANBiY3sLo-K" + }, + "source": [ + "idx = 2\n", + "\n", + "review_text = y_review_texts[idx]\n", + "true_sentiment = y_test[idx]\n", + "pred_df = pd.DataFrame({\n", + " 'class_names': class_names,\n", + " 'values': y_pred_probs[idx]\n", + "})" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "-8D0rb1yfnv4", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 187 + }, + "outputId": "3c2aa437-9c0d-4421-adf6-9d12e87f4a83" + }, + "source": [ + "print(\"\\n\".join(wrap(review_text)))\n", + "print()\n", + "print(f'True sentiment: {class_names[true_sentiment]}')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "I used to use Habitica, and I must say this is a great step up. I'd\n", + "like to see more social features, such as sharing tasks - only one\n", + "person has to perform said task for it to be checked off, but only\n", + "giving that person the experience and gold. Otherwise, the price for\n", + "subscription is too steep, thus resulting in a sub-perfect score. I\n", + "could easily justify $0.99/month or eternal subscription for $15. If\n", + "that price could be met, as well as fine tuning, this would be easily\n", + "worth 5 stars.\n", + "\n", + "True sentiment: neutral\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f7hj_IZFnn2X" + }, + "source": [ + "Now we can look at the confidence of each sentiment of our model:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "qj4d8lZyMkhf", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 506 + }, + "outputId": "3e1e4f5d-3ae0-41bd-8ddc-348e85c13e98" + }, + "source": [ + "sns.barplot(x='values', y='class_names', data=pred_df, orient='h')\n", + "plt.ylabel('sentiment')\n", + "plt.xlabel('probability')\n", + "plt.xlim([0, 1]);" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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dy4AAAAAAABFdss7F6666qrce++9OeqoozJp0qQsWrQoP/vZzzJnzpysXLkye++9d4499tiMGTMmn/3sZ7d5noaGhkyePDmPP/54XnnllaxduzY9evTIEUcckVGjRuXQQw/d7hyLFi3KLbfckrlz56ahoSE9e/bMsGHDMnr06PTt2zd1dXVJkuuvvz5/+Zd/udmx69aty6xZszJ9+vTMnz8/y5Yty4YNG9K9e/cMGDAgZ5xxRk499dS0a7d5H5o6dWrGjRvX8v2cOXNartNs5MiRmTBhQpIPFnQ+99xzkySPPfZYPvOZzyRJJk+enPHjx6ddu3b57//+7/Tu3Xub73Pu3Lk555xzkiS33XZbjj322C32mTVrVn71q1/l6aefzltvvZXa2tr0798/X/3qV3POOeekc+fO2/1ZAgAAAACw69gt48KHPfzwwxk7dmzWr1/f8tobb7yRe++9N9OnT8+kSZO2+OV7ksyePTuXXnppVq1atdnrK1asyEMPPZSHHnooY8aMyaWXXrrV695///0ZN25cNm7c2PLa8uXLc9ddd+U///M/c+utt2537n/5l3/JHXfcscXrb731VmbOnJmZM2fmgQceyE9+8pPU1tZu91wfxymnnJLrr78+GzZsyAMPPJALLrhgm/s+8MADSZKePXtm6NChm21bt25drr766jz44IObvb5+/fo8//zzef755/PLX/4yP/vZz9K/f/9Wfx8AAAAAALS+3fqxSEuWLMnYsWPzpS99KbfddltmzZqVGTNm5Oqrr05tbW0aGhpy7bXXbnHcggULMnr06KxatSoDBgzID3/4wzz++OOZM2dO7rnnnpa7DG6++eZMmTJli+MXLVrUEhZ69+6dG264IU888USeeOKJ3HDDDamtrc1ll1223dm7deuWr33ta/nRj36Ue+65JzNnzsyTTz6ZKVOm5Pzzz0+nTp0yY8aM/OhHP9rsuDPOOCNPP/10Tj/99CTJ4Ycfnqeffnqzf+PHj//In93ee++d4447LskHoWRb1q9fn0ceeSRJctppp21xJ8U//uM/5sEHH0yHDh1y/vnn55577slTTz2VGTNm5Hvf+17233//LF26NBdddFHee++9j5wLAAAAAIC2t1vfubBixYocd9xxmThxYtq3/8Nb/cY3vpHGxsZMmDAh8+fPz0svvZQDDzywZfu4ceOyfv36DBkyJJMmTdrszoDu3bvn+uuvT8+ePXPLLbfkxhtvzOmnn55OnTq17PP9738/GzduTNeuXTN58uT069evZduIESMyZMiQnHnmmdud/dvf/vZWX+/Zs2cGDx6coUOHZvTo0bnrrrsyZsyYdO3aNUnSvn37ln9JUlNTky5duhT81P5gxIgRmT59eurr6/Piiy/m4IMP3mKfmTNnpqGhoWX/D/uv//qvPProo6lUKvnxj3+cv/iLv9hs+5lnnpljjjkmI0eOzMsvv5y77ror3/zmNz/WrAAAAAAA7Dy79Z0LSXLNNddsFhaajRw5suXr5557ruXr2bNnp76+Pkly3XXXbfORQ2PGjEnnzp2zcuXKPPnkky2vv/HGG/mf//mfJMmoUaM2CwvNPve5z2XUqFEf7w39f8OGDUuPHj3y3nvvZf78+Z/oXNsyfPjwdOvWLcm2715ofv0LX/hCDjnkkM223XnnnUmSk08+eYuw0Gy//fbL17/+9SR/eLwSAAAAAAC7tt06LvTr1y8HHHDAVrfttdde6dGjR5IP1jFoNmvWrCRJnz59st9++2Xt2rVb/bdp06aWcz///PMtxz/zzDNpampK8sEv57dlW79s/7CVK1fm3/7t3/I3f/M3OeaYYzJw4MDU1dW1/Fu5cmWSZPHixR95ro+jtrY2J510UpLkwQcfbHlfzVavXp3HH388yQePY/qw999/P//7v/+bJDn66KO3+XNcu3Ztyx0R9fX1m62NAQAAAADArmm3fixSr169trt9jz32SJL8/ve/b3nt5ZdfTpK8+uqrOeyww3boOs2/5E8+WLS52ec///ltHrO9bUny29/+NhdffPEWC0pvzerVq3dgyo/njDPOyJQpU/Laa69lzpw5Ofroo1u2PfLII1m/fn0qlUrLGg/Nli5dmg0bNiRJrr322q2ubfHHGhsb09DQkJ49e7bumwAAAAAAoFXt1nGhpqZmh/b78F/kf5xf1H/4r+0/vChxc7zYms6dO29z2+rVq3PJJZdk1apV2WeffXLeeeflqKOOyv7775/OnTunUqkkSU499dS89tpr2bRpU/HMO+rII49M3759s3z58tx///2bxYXmxxgdeeSR2X///bd4Dx/HunXrPv6wAAAAAADsFLt1XPg4mn/pP3jw4EyZMuVjH5988Gig5oWW/9iHI8Qfe+SRR/LOO++kXbt2ufPOO3PQQQdtdb81a9YUz1eqUqnktNNOyy233JJHH3001157bWpra/P6669n7ty5SbZ8JFKSzRaR/ulPf5o/+7M/q/qsAAAAAADsHLv1mgsfR/MCzEuXLt1ijYEd0adPn5avmx+xtDXb29a8oHRdXd02w8Jrr71W1cchfdiIESOSbL7GwoMPPpjGxsZ07NixZV2GD+vbt2/atfvgf6+lS5fulDkBAAAAANg5xIU/cuyxxyZJ3nnnncyePbv4+CFDhrQ8tmj69Onb3O+xxx7b5rbmxyxt73FHzY8k2pb27dt/5Dl21IEHHpiBAwcmSe6///7N/nv88cenW7duWxzTrVu3DB48OEny8MMPf+IZAAAAAADYdYgLf+QrX/lKDj744CTJd7/73bz11lvb3X/ZsmWbrbnQq1evfPnLX06STJo0KcuWLdvimKVLl2bSpEnbPOdnPvOZJB/c3bBkyZIttr/00kuZOHHidufaa6+9kiRvvPHGdvfbUc2PPpoxY0bmzp3bcndF810NW3PeeeclSebNm5fbb799u+fftGnTVt8rAAAAAAC7HnHhj1QqlUyYMCGdOnXK4sWLM2LEiNx666158cUX09DQkLfffjsvvPBCpkyZkosuuignnnjiFmsfXHHFFampqcnq1atzzjnn5IEHHsibb76ZN998M/fff3/OOeec9OjRY5sznHjiiWnXrl02bNiQb33rW3nsscfy5ptv5tVXX82///u/5+tf/3r22GOPloCwNc13GixdujSTJ0/O22+/nY0bN2bjxo1pbGws/rmcdtppqampyYYNGzJ27NgkHwSMYcOGbfOYk046KaeeemqSZMKECbn44oszY8aMrFixIu+++26WL1+emTNn5vvf/35OOOGE3HHHHcVzAQAAAACw81nQeSsGDhyY22+/PZdddllWrFiRG264ITfccMNW962pqUlNTc1mrw0YMCDXXXddrr766rz22mu54oorNtvevXv33HTTTTnrrLNazvFh/fv3z2WXXZYbb7wxixcvzpgxYzbb3q1bt9x0000ZO3ZsVq1atdW5/vzP/zz9+vXL0qVLM378+IwfP75l28iRIzNhwoQd+2H8f/vuu2++/OUv54knnsjy5cuTJCeffHI6dOiw3eMmTJiQrl275u677860adMybdq0be77UecCAAAAAGDXIC5sw2GHHZZHH30099xzT6ZPn576+vo0NDSkpqYm++67b77whS9k6NChOemkk9K9e/ctjj/zzDNz8MEH55ZbbsncuXPz7rvvpmfPnvnKV76Sb33rW9l7771b9u3SpcsWx1944YU58MADc8cdd2TBggXZuHFjevfunWOPPTbf/OY3Wxae3pZOnTpl8uTJufnmmzNr1qy8/vrrWbdu3Sf6mYwYMSJPPPFEy/fNj0rantra2owfPz5nn3127r777vz2t79tmaVr167p169fhgwZkuOPP77lcVIAAAAAAOzaKk1NTU1tPcSfooULF2bkyJFJknvuuSeDBg1q44l2T/X19VmzZk26du2aurq6th4H2IXNmzcvSXL44Ye38STArs7nBbAjfFYAO8rnBbCjmj8vdpXfdVpzoY1Mnz49yQd/2d+8gDQAAAAAAHwaiAtVsq21EJJk8eLFuf3225Mkw4cPT21t7c4aCwAAAAAAPjFrLlTJlVdemS5duuTUU0/NwIED06VLl7z55pt54oknMnHixKxZsyYdOnTYYrFmAAAAAADY1YkLVbJp06Y8/PDDefjhh7e6vba2Nt/73vd2iWdjAQAAAABACXGhSr797W/n4IMPzty5c7NixYq88847qa2tTZ8+fTJ06NCce+656devX1uPCQAAAAAAxcSFKhkyZEiGDBnS1mMAAAAAAECrs6AzAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACjSvq0HAIBdweGHH97WIwCfEj4vgB3hswLYUT4vgE8rdy4AAAAAAABF3LnAn4Tfv/tUFs86qa3HAAAAAADYqv5DX27rEYq4cwEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFGlfjZO++uqrSZLevXunpqZmh47ZtGlTVqxYkSTp06dPNcYCAAAAAABaQVXiwvDhw9OuXbvcf//9Oeigg3bomCVLluSUU05Ju3btsnDhwmqMBQAAAAAAtIKqPRapqalppx4HAAAAAADsHLvcmguVSqWtRwAAAAAAALZjl4kLDQ0NSZJOnTq18SQAAAAAAMD27DJx4b777kuS9O3bt40nAQAAAAAAtqdVFnQ+99xzt/r6uHHjsscee2z32PXr1+eVV17JO++8k0qlkmOOOaY1RgIAAAAAAKqkVeLCnDlztlgroampKc8///wOHd+8iPO+++6bCy64oDVGAgAAAAAAqqRV4kKfPn02+/7VV19NpVJJz5490779ti9RqVTSqVOn9OrVK4cffnj++q//Ovvss09rjAQAAAAAAFRJq8SF6dOnb/b9F7/4xSTJbbfdloMOOqg1LgEAAAAAAOwiWiUu/LEjjzwyST5yvQUAAAAAAODTpypxYdKkSdU4LQAAAAAAsAto19YDAAAAAAAAny7iAgAAAAAAUKQqj0VqtmTJkvziF7/InDlzsmzZsqxZsyaNjY3bPaZSqWThwoXVHAsAAAAAAPgEqhYX7r777vzzP/9zNmzYkCRpamqq1qUAAAAAAICdqCpxYe7cufnud7+b5IOosO+++2bQoEHp3r172rXzJCYAAAAAAPg0q0pcuO2229LU1JTa2tqMHz8+I0aMSKVSqcalAAAAAACAnawqceGZZ55JpVLJBRdckDPPPLMalwAAAAAAANpIVZ5RtHr16iTJsGHDqnF6AAAAAACgDVUlLvTs2TNJUlNTU43TAwAAAAAAbagqceHII49Mkrz44ovVOD0AAAAAANCGqhIX/vZv/zY1NTW54447smHDhmpcAgAAAAAAaCNViQuHHHJIvvOd7+R3v/tdLr744qxcubIalwEAAAAAANpA+2qc9Cc/+UmSZPDgwZk5c2aGDx+eoUOH5vOf/3z22GOPjzz+kksuqcZYAAAAAABAK6g0NTU1tfZJv/jFL6ZSqbR839TUtNn3H+WFF15o7ZH4E1VfX581a9akfeOCdN94bVuPAwAAAACwVf2Hvrzd7fPmzUuSdO3aNXV1dTtjpO2qyp0LyQdBYXvfb0tJhAAAAAAAAHa+qsSFxx57rBqnBQAAAAAAdgFViQt9+/atxmkBAAAAAIBdQLu2HgAAAAAAAPh0ERcAAAAAAIAiVVvQudl7772XRx99NE8//XTefPPNvP/++7nuuus2e3TSypUrs3bt2tTW1qZ3797VHgkAAAAAAPgEqhoX7rvvvlx//fV59913kyRNTU2pVCp5//33N9tv+vTp+c53vpOOHTvmySefTNeuXas5FgAAAAAA8AlU7bFIkydPzrhx49LQ0JCmpqZ07959m/uOGDEie+65Z9atW5dp06ZVayQAAAAAAKAVVCUuvPLKK7n++uuTJIcddlgefPDBzJ49e5v7d+jQISeccEKamprym9/8phojAQAAAAAAraQqceHOO+/Mxo0b89nPfja33XZbDjrooI885tBDD02S1NfXV2MkAAAAAACglVQlLjz11FOpVCo599xz06lTpx06pn///kmS1157rRojAQAAAAAAraQqceHVV19NkgwaNGiHj2lexPm9996rxkgAAAAAAEArqUpc2LhxY5KkUqns8DFr165Nkuyxxx7VGAkAAAAAAGglVYkL++yzT5Jk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mjUrQ4cO/eRvCAAAAACANlWVNRf69OmTf/3Xf826dety9tlnZ8aMGdW4TJu55pprNgsLzUaOHNny9Yf/un/27Nmpr69Pklx33XWbhYUPGzNmTDp37pyVK1fmySefbOWpP55LL710s7BQqlevXi1B4Te/+U1rjQUAAAAAQBuqyp0L5557bpJkr732ypIlS3LRRRelW7du6d+//0f+NX6lUskdd9xRjbFaRb9+/XLAAQdsddtee+2VHj16ZOXKlXnrrbdaXp81a1aSD6LLfvvtl7Vr127z/AcccEAWLFiQ559/PieccELrDl+oUqns0KLcGzZsyH333Zdf//rXWbRoUVatWrXZGg3NFi9eXIUpAeD/sXfv0VaXBf7HP5sDcl2iiEgoaoKSkFjeEi8rTcZx1DCd1eRA5Cq0MdNRJ/PSOFNNmmaSMzWaYZmKJpnieBlbthQ00rxEghMKonIAL8NFlIsHoXPYvz9c5wzIpfPg2Rzw93qtxfKc73c/3/1sXeu7XPvN830AAACALa0mceGpp55KpVJJ8u4X1NVqNcuWLVvnb/NvSLVabRm3terTp88mz3ft2jVJ8s4777QcmzNnTpLktddeywEHHNCq91myZMlmzrDt7LjjjunRo8cmX7No0aJ86UtfygsvvPAXr7d8+fK2mhoAAAAAAO2oJnGhX79+tbjsVqF534K/pFqttvy8OV+qr169unhMW2sOJZty4YUX5oUXXkinTp0yatSoHHXUUdl9993To0ePlkdH/eu//mvuv//+NDU11XrKAAAAAABsATWJC5MmTarFZbdZ3bp1S5IMHTo0v/rVr2r2Po2NjTW79obMmzevZR+FSy+9NKeeeuoGX7dy5cotOS0AAAAAAGqsJhs6s67+/fsnSebPn7/OioYSnTt3TrLu45bea+HChZt17c01c+bMlp9POOGEjb6uNY9MAgAAAABg2yEubAGHH354kuTNN9/ME088sVnX2HnnnZP83/4NGzJlypRNXqP5MUVt9XiitR/dtLFrTps2LfPnz2+T9wMAAAAAYOsgLmwBRxxxRPbZZ58kybe+9a0sXrx4k69/5ZVX1ttzYf/990/y7mqBtVcMNFu8eHGuvfbaTV53hx12SNJ2Kxx22223lp8nT5683vm333473/72t9vkvQAAAAAA2HqIC1tApVLJlVdemS5duqS+vj4nnXRSfvazn+WFF17I0qVL88Ybb+T555/Pr371q5x55pk59thjs2LFinWucdxxx6V79+5JkrPOOisPP/xw3nzzzSxYsCD33HNP/u7v/q7l0UkbM2TIkCTJ1KlT8+tf/zpvvfVWGhsb09jYmDVr1hR/rv32268lMFx22WW57bbbMn/+/Lzxxht5+OGHc+qpp2bmzJn58Ic/XHxtAAAAAAC2Xu9rQ+cvfOELSd798vzmm29e7/jmeO+1PiiGDBmSn//85znvvPOyYMGCXHXVVbnqqqs2+Nq6urrU1dWtc2yHHXbIt771rVx00UV59dVXc9ZZZ61zfpdddsm4ceM2uffBSSedlHHjxmXp0qU577zz1jl39tln55xzzin6THV1dbn88svz5S9/OStWrMi//du/rXO+Q4cOueiiizJz5sxNPs4JAAAAAIBty/uKC0899VQqlUqrj/8l1Wp1s8ZtKw444IA8+OCDueuuuzJp0qTMmjUrS5cuTV1dXXr37p299947w4YNy3HHHZeePXuuN37EiBH50Ic+lHHjxuXZZ59NQ0ND+vbtm+HDh+eMM85Ir169Nvn+O++8cyZMmJDrr78+Tz/9dBYtWpQ///nP7+szHXroobnjjjty3XXX5amnnsqKFSuy44475uMf/3hGjx6dgw8+OBdffPH7eg8AAAAAALYulWq1Wt3cwZ/61Kdafp40adIGj2+Ota8F78esWbOyYsWKdFwzIz0bv9ne0wEAAAAA2KA9h2366S9Tp05NkvTo0SODBg3aElPapPe1cmFjEUAcAAAAAACADy4bOgMAAAAAAEXEBQAAAAAAoMj7eizSxlxyySWpVCo577zz0qdPn1aNWbRoUX7wgx+kUqnku9/9bi2mBQAAAAAAtIGarFy4++67c/fdd2fZsmWtHrN8+fKWcQAAAAAAwNbLY5EAAAAAAIAiW01caGxsTJJ07FiTJzUBAAAAAABtZKuJCy+++GKSpGfPnu08EwAAAAAAYFPaZJnA008/vcHj//M//5M333xzk2NXr16d+vr6/PSnP02lUslHPvKRtpgSAAAAAABQI20SF0aPHp1KpbLOsWq1mm984xutvka1Wk2lUskpp5zSFlMCAAAAAABqpM02OKhWq606tjFdu3bNmDFjcvzxx7fVlAAAAAAAgBpok7hwxRVXrPP7JZdckkqlknPPPTe77LLLRsdV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LgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXtmGjR4/OoEGDcvHFF7+v6wwaNCiDBg3KxIkT22hmAAAAAAB8kIkLH1ATJ05siQYAAAAAANCWxAUAAAAAAKBIx/aeAJtv/PjxbXKdWbNmtcl1AAAAAAD4/4OVCwAAAAAAQBErF5JcfPHFufvuu3PIIYdk/Pjxefrpp/Pzn/8806dPz7Jly9K3b98MHz48//AP/5Addthho9eZNWtWbrnlljz55JNZuHBhOnbsmP79++eoo47Kaaedll69em107B//+Mf84he/yDPPPJNFixalUqmkV69e6dOnTw4++OAce+yxGTp06DpjRo8enaeeeionn3xyrrzyyiTJK6+8kmOOOWad171334Vdd901kyZNWu/8FVdckVNOOSVJ8uKLL+aEE05IkowdOzYnnnjiRue+cuXKHHbYYWloaMiZZ56Z888/f73XzJkzJ7feemt+//vf5/XXX8+aNWvSt2/fHHnkkfnSl76Ufv36bfT6AAAAAABsXcSF95gwYUK+/e1vZ82aNS3H5s2blxtvvDH3339/br755uy1117rjfvZz36Wq6++ep1xq1atysyZMzNz5szcfvvtufbaa3PwwQdvcOxVV1213vHXXnstr732WqZNm5bZs2fnJz/5SRt9yr9s4MCBGTJkSGbMmJF77713k3Hh4YcfTkNDQ5JkxIgR652/8cYbM3bs2DQ2Nq5zvL6+PvX19bnzzjtzzTXX5Oijj27bDwEAAAAAQE2IC2uZO3duLrvssgwZMiTnn39+9t133yxfvjz3339/fvzjH2fhwoX5yle+knvvvTedO3duGXffffe1xIF99tkn559/fvbff/+sWrUqkydPzn/8x39k6dKl+fKXv5x77703/fv3bxk7Z86cjB07NkkybNiwjBkzJgMGDEiPHj2ybNmyvPTSS5kyZUqWL1/eqs+w66675o9//GPuu+++fPOb30zy7qqItXXo0LqnYY0YMSIzZszIY489liVLlmx05cW9996bJBkyZEgGDBiwzrnbbrst3/ve95Ikxx57bEaOHJm99947HTp0yHPPPZf//M//zDPPPJNzzz03d955Z/bZZ59WzQ0AAAAAgPZjz4W1LFiwIAMGDMj48eNz+OGHp1evXtljjz3y1a9+Nd/97neTvPu37W+77baWMatXr84VV1yRJNlrr71y++2351Of+lR22mmn9OvXL6NGjcpNN92U7bbbLg0NDS1ftDf73e9+l6ampuy0004ZN25cjjzyyPTr1y/bb799dtttt3zyk5/MpZdeut64jalUKunevXu22267lmPdu3df50/Xrl1bda0TTjghdXV1aWxszH//939v8DVLlizJY489YwdIgAAAIABJREFUlmT9VQsLFy5seVzTF7/4xfzoRz/KsGHD0rt37/Tq1StHHHFExo8fn4MPPjirVq1qiSwAAAAAAGzdxIX3+NrXvrbBL99HjBjRsufBxIkTW45PmjQpb7zxRpLkggsuSI8ePdYbO3jw4Hzuc59ref2SJUtazjU1NSVJevXqtU4Q2BrsvPPOGTZsWJJ3V2dsyAMPPJDGxsbU1dWt9+ikCRMmZPXq1enbt28uuOCCDY7v1KlTzj333CTJo48+mmXLlrXhJwAAAAAAoBbEhbV069Ythx9++EbP/9Vf/VWSdzc7bv4SfOrUqUmSrl275pOf/ORGxx533HFJ3o0Jaz+maN99902SzJ49O1dffXXefPPN9/ch2thJJ52UJJk+fXrmzp273vnm6NC8ImFtjz/+eJK0rEx4++23N/in+VFK1Wo1M2bMqOXHAQAAAACgDdhzYS177LFH6urqNnq+eSPnarWa1157Ldtvv31ee+21JMmee+6Zjh03/q9z7733bvm5eUySfOITn8jw4cPz0EMP5YYbbsiNN96Yj370oznwwANz0EEHZdiwYenWrdv7/Wibbfjw4enWrVsaGhpy77335pxzzmk5N2/evEybNi3JhjdynjNnTpJ3A8TGVj6819qrOgAAAAAA2DpZubCWv/Ql/trn33777XX++ZfGdu/efb2xzf793/89F154Yfr375+mpqZMnz49N954Y84666wcdthh+c53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FBEXAAAAAACAIuICAAAAAABQRFwAAAAAAACKiAsAAAAAAEARcQEAAAAAACgiLgAAAAAAAEXEBQAAAAAAoIi4AAAAAAAAFBEXAAAAAACAIuICAAAAAABQpGN7TwBaY/LkyZkwYUJmzJiRpUuXpnfv3hk2bFhOO+20DBo06H1ff9asWbn55pvz+9//PosXL07Pnj0zZMiQnHrqqTn66KPb4BMAW0It7hXVajVTp07NlClTMnXq1Lz88stZtmxZOnfunN122y2HHXZYRo4cmf79+7fxpwFqqdb/b7G2arWaL3zhC3nqqaeSJLvuumsmTZrUpu8B1M6WuF/MmTMnd9xxR6ZMmZLXX389TU1N6d27dwYOHJhDDz00p556arp06dIm7wXUTi3vF8uXL8/tt9+eyZMn5+WXX86KFSvSpUuX7L777hn2/9q796io6/yP4y/kolAq4AXNy0q6ouJlXTkUhWVAW6ZrYnkhM8nLWh7dMs1LiQWWtW1ua5qnXXXXA6IYBbiptCpeSFMpS4UQWMlU+CV5wZRLgjC/PzwzB2RABpgZsufjHI5f5/P5fj6f75zjm/Hzns/nExCgiRMnqkuXLk30JACswWAw6LvvvtPx48dNP9nZ2SovL5ckpaSkqGvXrk3Sl63mOh0MBoOhyVoDrOC1115TXFyc2TIXFxctXbpUo0ePbnD7iYmJioiIMP1DvllYWJhef/31BrcPwDasFSuee+457dmzp846rVq1UkREhJ588kmL2wdge9b+bHGz+Ph4LV682PR3kgvAL4ct4sWaNWv0/vvvq6ysrNY6TTnZAMA6rBkvMjMzNWPGDP3444+11nF1ddWyZcv02GOPNagPANaXl5en4ODgWsub6ve9Lec62RYJzdqaNWtMv5xDQkKUkJCggwcPat26derdu7fKysr06quv6siRIw1q/8iRI1q8eLHKy8vVu3dvrVu3TgcPHlRCQoJCQkIkSZs2bdKaNWua7JkAND1rxori4mJJkp+fn5YsWaL//Oc/OnTokFJSUhQZGSkPDw/9/PPPWrx4sfbu3duUjwXACqz92eJmFy5c0F//+lc5OTmpU6dOTdImANuwRbz44IMP9O6776qsrEzBwcFas2aNUlNTdejQISUmJurll19W7969m+qRAFiJNeNFUVGRKbHg7OysKVOmKCkpSQcPHtSnn36qF154QW5ubiotLdX8+fN18uTJpn48AFbQqVMnPfzww/Lz82vSdm0918nKBTRbly5dUnBwsEpKShQYGKi1a9fKwcHBVF5YWKiRI0fqwoULGjRokD766COL+xg7dqyOHz+u9u3ba+vWrfLw8DCVGQwGTZ06VQcOHJCbm5tSUlLk6enZJM8GoOlYO1asXr1aw4YNU79+/cyWnzp1SmPGjFFJSYl69uyp7du3N+p5AFiPLT5b3GzOnDnavn27pk2bpuPHjystLY2VC8AvgC3ixddff62nnnpKBoNB8+bN0/Tp05vyEQDYiLXjRdUVkPPnz9fUqVNr1Nm+fbvmzJkjSZo8ebJeeeWVRjwRAGspKirSoUOHNGjQIHXo0EGStHLlSq1atUpS06xcsPVcJysX0GwlJiaqpKREkvTSSy9V++UsSR4eHpo2bZok6dixY/r2228taj89PV3Hjx+XJE2bNq3aPzZJcnBw0Ny5cyVJJSUl2rJlS4OeA4B1WTtWzJw5s9bEgiR5e3vriSeekCTl5uYqPz/fovYB2I6148XN9u3bp+3bt6tLly6aNWtWo9oCYFu2iBd/+ctfZDAYFBAQQGIB+AWzdrw4ceKE6XrUqFFm6zzyyCOmc1m+++47i9oHYDt33nmnQkJCTImFpmaPuU6SC2i2jHucd+/eXb6+vmbrDB8+3HRt6TcAq+6hXrWdqnx9fdW9e/cGtQ/ANqwdK+qjV69epuu69kEFYF+2jBclJSWKjIyUJC1evFiurq4NbguA7Vk7XmRnZ+vo0aOSpPDw8IYNEkCzYO140bJlS9P1zYmLqq8by9q1a2dR+wBuH/aY6yS5gGbLmM0fNGhQrXU6deokLy+vavUtbd/Ly6vOPZCN/Tf224sArMPasaI+Lly4YLpu3bp1k7cPoGnYMl6sWLFC+fn5CgkJUVBQUIPbAWAf1o4X+/btkyQ5OjoqICCgWtn169ctaguAfVk7XlRdRf3ZZ5+ZrbNnzx6VlpZKkh588EGL2gdw+7DHXCfJBTRLBQUFpmWF3bp1q7OucS+yU6dOWdSHsX592y8uLlZBQYFFfQCwLlvEivrYuXOnJMnd3V3e3t5N3j6AxrNlvMjIyFBMTIzc3NxMeyQD+OWwRbzIyMgw3d+yZUslJycrLCxMAwcOlK+vrwICAvTiiy+atjYA0DzZIl4MHz7ctFL6nXfe0erVq3XmzBldu3ZN+fn5io6O1sKFCyXd2B7pscces/QxANwm7DHX6dSouwErKSwsNF3fakmfsfzy5csN6qO+7Rv7MH7bAID92SJW3EpSUpKysrIkSePGjZOjo2OTtg+gadgqXlRUVCgiIkIVFRWaPXu2OnfubHEbAOzLFvHihx9+kCS1bdtWUVFRio2NrVZ+6dIlJScn67///a/mz5+vZ5991qL2AdiGLeKFk5OT1q9frxdffFFfffWVVqxYoRUrVlSr07t3b82ZM0dhYWEWtQ3g9mKPuU5WLqBZMmb+per7C5pjLC8uLraoD+OSQRcXlzrrGQ9FunlcAOzPFrGiLrm5uYqKipIkde7cmcMYgWbMVvFi/fr1yszMlI+Pj5555hmL7wdgf7aIF1evXpV046DW2NhY/fa3v9XatWt19OhR0+Rh586dVVlZqbffflt79+617CEA2IStPl906NBB7733nh599FGz5RcvXlR+fj5zFsCvnD3mOkkuAADQAIWFhZo5c6aKi4vl7Oysd999V23atLH3sADYUV5enlauXCkHBwdFRkbKyYlFwgDMMxgMkqTy8nJ5eXlpw4YNGjp0qFxdXdW6dWs9+uijio6OlpubmyRp+fLl9hwuADvbtm2bgoODtXPnTk2ZMkVbtmxRWlqadu3apSVLlqiiokJr167VxIkTdfHiRXsPF8CvCMkFNEvGD9GSdO3atTrrGsvvuOMOi/pwdXWVJJWVldVZ7+effzY7LgD2Z4tYYU5JSYmee+45ff/992rRooXefvtt+fn5NbpdANZji3jx+uuvq7S0VOPGjdPgwYMtHySAZsEW8aJqH88884zc3d1r1OnevbvGjBkjScrJydHZs2ct6gOA9dkiXhw8eFBz585VWVmZIiMjtWDBAvXp00dt27ZVt27dNHHiRMXExKhly5Y6ceKE3nzzTcsfBMBtwR5znSQX0Cx5eHiYrm+VdTeWm/tAXp8+6tt+Q/oAYF22iBU3Kysr06xZs3T06FFJ0pIlSzRy5MhGtQnA+qwdL3bt2qXPP/9c7dq109y5cxs2SADNgi3/LyKpzi8oVC07efKkRX0AsD5bxIu1a9fKYDCoe/fuevLJJ83W6d27t0aMGCFJ+uyzz0xbrwH4dbHHXCfJBTRLHTt2NGXObvUNnby8PEmSt7e3RX0Y69e3/TvuuIPDnIFmxhaxoqqKigq99NJLOnDggCRp3rx5HJoG/EJYO14Y77l48aL8/f3l4+NT4yctLU2SlJ+fb3qNbxcCzY8tPl/cfffdpuu6tlVs27at6bqoqMiiPgBYny3ihfFLTb6+vnJwcKi13oABAyTd+D/LqVOnLOoDwO3BHnOdJBfQLDk4OMjX11eSdPz48VrrnTt3TgUFBZJkql9fxvoFBQWmNsw5duxYg9oHYH22iBVGBoNBixYt0s6dOyVJzz33HAc4A78gtowXAH7ZbBEv+vfvb7q+fPlyrfWqlrVu3dqiPgBYny3ihXE7JeNZLbW5VTmA25895jpJLqDZeuihhyRJp0+f1okTJ8zW+eyzz0zXQUFBDWpfkpKTk83WyczM1JkzZxrUPgDbsHasMIqKitKWLVskSU8//bTmzJnToHYA2I8148WoUaOUlJRU54/xw3uHDh1Mr02bNq0RTwTAWqz9+WLYsGGmQ9+//PLLWusdPnzYdN23b1+L+gBgG9aOFx07dpR0Y36irgRCRkaG6fquu+6yqA8Atwd7zHWSXECzFRoaalpeuHz58hq/RC9fvqy1a9dKkgYNGmRxtm3AgAEaOHCgpBt7GN78jSGDwaDly5dLunG4yeOPP96g5wBgXdaOFZL0t7/9TRs3bpQkjR49WosXL27kqAHYgzXjhaenp/r27Vvnj/EARxcXF9NrbLkINE/W/nzh7u5uOrMpOjra7N7Iubm5SkpKknTj7AXiBdA8WTteBAQESJLOnDmjhIQEs3VycnK0bds2SVK/fv3Uvn17i/oAcHuwx1yn4+uvv/56o1sBrMDV1VWOjo764osvdObMGeXk5Mjb21uOjo76+uuvNXfuXJ09e1ZOTk5avnx5jcx8QkKCRo8erVWrVqlLly5mv+nTs2dPbdmyRUVFRUpNTdVvfvMb3Xnnnfr+++8VFRWlPXv2SJJeeOEFBQYG2uS5AVjG2rFi3bp1ev/99yVJDzzwgN58801dv35d5eXlZn9atGihFi3I3QPNkS0+W9QlMTFR+fn5atOmjSZPntyUjwagidkiXvTv319JSUm6dOmSdu3apY4dO8rDw0NFRUXasWOHXn75ZV25ckXOzs567733SC4AzZS148Xdd9+t+Ph4VVRUaO/evSopKVH79u3l4uKiH3/8UVu3btXChQtVXFws6caK68acMwfAuk6ePKkzZ87o3LlzOnfunNLS0pSZmSlJ8vf319WrV01lLi4ucnV1Nd3bHOc6nRrdAmBF06dPV15enuLi4rRjxw7t2LGjWrmzs7PeeOMNDRkypEHtDxkyRG+88YYiIiKUk5OjKVOm1KgzYcIE9lUHmjlrxorY2FjTdWpqqvz8/Oqs/9Zbb2nMmDEW9wPANqz92QLA7cPa8aJz58768MMPNXPmTJ0+fVp//vOfa9Rxc3PTO++8Y/oWIoDmyZrxwtvbWytXrtTcuXN19epVrV271rQSoionJyctWLCALZ2BZi4yMlJpaWlmy2bNmlXt7w2ZX7D1XCfJBTR7kZGRGjZsmDZt2qRvv/1WP/30kzp06KB7771X4eHh8vHxaVT7oaGh6tevn9avX69Dhw7p/Pnzatu2rXx9fRUWFlZtvzIAzZe1YwWA2wfxAkB9WTteDB48WNu2bdP69eu1e/du5efnq7KyUl26dFFgYKDCw8PZOx34hbBmvHjwwQeVnJysuLg47d+/X6dOnVJRUZFatmyprl276p577lFYWJh69uzZhE8E4JfKlnOdDgaOkwcAAAAAAAAAABZgU2gAAAAAAAAAAGARkgsAAAAAAAAAAMAiJBcAAAAAAAAAAIBFSC4AAAAAAAAAAACLkFwAAAAAAAAAAAAWIbkAAAAAAAAAAAAsQnIBAAAAAAAAAABYhOQCAAAAAAAAAACwCMkFAAAAAAAAAABgEZILAAAAAAAAAADAIiQXAAAAAAAAAACARUguAAAAAAAAAAAAi5BcAAAAAAAAAAAAFiG5AAAAAOC2c/jwYfn4+MjHx0cJCQn2Ho4SEhJM4zl8+HCj2jK2s3DhQrPlQUFB8vHx0aRJk8yWT5o0ST4+PgoKCmrUOAAAAPDrRnIBAAAAAAAAAABYhOQCAAAAAMCElQ0AAACoDyd7DwAAAAAAUH/Z2dmNuj8mJqaJRgIAAIBfM1YuAAAAAAAAAAAAi5BcAAAAAAAAAAAAFmFbJAAAAAC1SkhI0KJFiyRJ0dHR8vf31yeffKKkpCTl5uaquLhYnTp10gMPPKDp06fLy8urRht5eXkKDg6WJM2aNUuzZ8/WkSNHFBcXpyNHjuj8+fMqKyvTl19+qTZt2pjuu3jxojZs2KB9+/YpLy9PJSUlcnd3V//+/TVy5EiNGDFCDg4O9X6WHTt26KOPPlJWVpYuX76sDh06KCAgQFOnTlXPnj1rve/atWvat2+f9u/fr4yMDJ09e1YlJSVyc3NTly5ddM899+jpp59Wt27d6j0Wg8Fg8fto5OPjI0kKDQ3V22+/Xe8+jSZNmqS0tDR16dJFu3fvNr2+cOFCJSYmmv6en59v6quq6OhoDRo0SEOHDtWVK1c0ePBgxcXF3bLf0NBQZWZmytPTU/v27ZOLi4vFYwcAAEDzQXIBAAAAQL1cv35dM2bM0L59+6q9fvr0acXExCgxMVGrVq1SQEBAne188MEHWrlypQwGQ611UlJS9PLLL6u4uLja6+fPn9eePXu0Z88ebdiwQatXr5anp+ctxx4REaGPPvqo2mv/93//p08++USffvqpli1bpj/+8Y9m750zZ45SUlJqvH7lyhVduXJFJ06cUGxsrJYuXarQ0NBbjqWp3kd7atWqlR5//HHFxMTom2++0cmTJ9WrV69a62dkZCgzM1OSNHr0aBILAAAAtwGSCwAAAADq5b333lN6err8/f0VFham7t27q7CwUNu2bVNSUpKKior0/PPPKzExUd7e3mbb2LVrl7KysnT33Xdr8uTJ6tu3ryoqKnT06FE5OztLktLS0jR79mxVVFTI0dFR48ZiO6xoAAAKWUlEQVSN0x/+8Ae1adNGp06dUkxMjI4dO6ZvvvlGzz77rOLj4+ucrN64caPS09PVp08fhYeHq1evXioqKtLu3bu1adMmlZWVacGCBfLy8pK/v3+N+ysqKtSjRw8FBQVpwIABuuuuu+Tk5KRz587pq6++0ubNm1VSUqJXX31V3bp1k5+fn9XfR2uYM2eOpkyZokWLFikjI0MdO3bUunXratTr2rWrJGnChAmmw6Hj4+NNK1zMiY+PN12PGzeuiUcOAAAAeyC5AAAAAKBe0tPTNWbMGC1btqzadkRDhw7VkCFDtHjxYpWWlioqKkr//ve/zbaRlZUlf39/rVmzRq1atTK9/vvf/17SjYn8hQsXqqKiQi1atNDq1as1bNgwU73+/ftrxIgReumll5ScnKysrCz94x//0OzZs+sc9/33368PP/ywWhIiICBADzzwgGbMmKGKigpFREQoOTlZLVpUP5pu0aJF6tGjR412+/fvr5CQEE2ePFnjx49XQUGBVqxYYZpwt+b7aA1eXl7y8vKSm5ubJMnZ2Vm9e/eutX6vXr3k5+enr776SklJSZo7d67ZJE9paam2bt0qSfL397dpwgQAAADWw4HOAAAAAOqlXbt2ioiIMHvOwdixYxUYGChJ+uKLL5Sbm2u2jRYtWmjZsmXVEgtVpaSkKD8/X9KNb7hXTSxUbWPp0qXy8PCQJMXGxqq8vLzWcTs7O+utt94yO/E9dOhQPfnkk5Kk77//Xvv3769Rx1xioarOnTtr2rRpkqQvv/xSly9frrN+U7yPzcWECRMkSZcvX9auXbvM1klOTlZRUZGkG88HAACA2wPJBQAAAAD1Mnz4cNO32s0xTtJL0oEDB8zWGTx4cJ0HH1ed3DdOXJvTunVrjRw5UpJUWFioEydO1Fo3MDCwzgOS6zPuqn766SedPXtW//vf/5STk6OcnBxTssRgMNQ5Fqlp3sfm4pFHHjEleW4+08LI+Lq7u7seffRRm40NAAAA1sW2SAAAAADqZcCAAXWWDxo0yHSdnZ1ttk6fPn3qbCMnJ0eS5ObmJh8fnzrrDh482LQFUXZ2tgYOHGi23q3G3a9fPzk7O6u8vLzWcaenpysmJkYHDhzQhQsX6myvsLCwzvKmeB+bCxcXF4WGhupf//qXDh06pLNnz1ZLHuXm5uqbb76RJI0aNYqDnAEAAG4jrFwAAAAAUC/t27evd3ltWwO1adOmzjaM93l4eNQ4+6Cu/uqa0L/VuJ2cnOTu7l6t/6r++c9/auzYsdqyZcstEwuSdO3atTrLm+J9bE7Gjx8vBwcHGQwGffzxx9XKqq5mGD9+vK2HBgAAACsiuQAAAADAZhwdHe09BIukpaVp+fLlMhgM8vT01Lx58/Txxx/r0KFDSk9PV3Z2trKzs7V+/XrTPQaDwX4DtoMePXro3nvvlSQlJCSooqJCklRWVqYtW7ZIurHKpFevXnYbIwAAAJoe2yIBAAAAqJdbfWu/arlxJYCljPcVFhaqsrKyztULVfsz7vt/q3rmXL9+3bRC4OZxb968WdKNpMiGDRvUs2dPs21cuXKlzj4sGU9TvI+2NmHCBB08eFA//vij9u7dq+DgYO3atcu0ooRVCwAAALcfVi4AAAAAqJf09PQ6y48dO2a6vtV5CbUx3ldSUmI6f6E2xr38b9XfrcadmZmp8vJys+0Yx+Dj41NrYkGSMjIy6uzDkvE0xftoa8HBwerQoYMkKT4+vtqfrVu31vDhw+02NgAAAFgHyQUAAAAA9ZKcnKySkpJay6vut3///fc3qI/AwEDTtXHVgDlFRUXaunWrJMnT01P9+vWrte7+/ftVUFBQa3ld475+/bokqbS0tNb7S0pKlJiYWGv5zWzxPjZGq1atJN3Y1qi+nJ2d9cQTT0iSUlNTdeTIER08eFDSjYOcjW0CAADg9kFyAQAAAEC9XLx4UUuXLjV7pkB8fLz2798vSbrvvvvq/JZ/XYKCgtS1a1dJN5ILqampNepUVlbqtddeM225M3HiRDk51b7ja3l5uRYtWmRanVDV559/bprM79GjR7XkhvE1STp9+rS+/vrrGvdfv35dr7zyis6fP1+/B5Rt3sfG6Nixo6Qb47x69Wq97xs7dqxatGihiooKvfDCC6bnGzdunFXGCQAAAPvizAUAAAAA9TJw4EAlJCQoLy9PTz31lLp3767CwkJt27bN9M19V1dXLVmypMF9ODo66q233lJ4eLgqKir0/PPPa/z48QoJCVGbNm10+vRpxcTEmLZE6tOnj/70pz/dctwHDhzQ2LFjFR4erl69eqm4uFgpKSnauHGjKioq5OjoqKVLl9Y442HMmDHavXu3KisrNWPGDE2ZMkVDhgxRq1atlJ2drQ0bNigrK0tDhgzRkSNH6vWMtngfG8PPz08ff/yxKisr9corr2jSpElq166dqfyuu+6Sq6trjfu6du2qwMBApaammpItAwcOVJ8+fWw2dgAAANgOyQUAAAAA9fLiiy8qOjpae/fuVVpaWo3yO++8U6tWrZK3t3ej+vH399f777+v+fPnq7i4WLGxsYqNja1Rb/DgwVq9erVcXFzqbC8sLEx9+/bV5s2btWDBghrlzs7OWrZsmfz9/WuUPfzww5owYYLi4uJ05coV/f3vf69RZ9SoURozZozCw8Pr9Xy2eh8bavjw4VqzZo1yc3O1Y8cO7dixo1p5dHS07rnnHrP3jh8/vtpqE1YtAAAA3L5ILgAAAACoFycnJ3344Yf65JNPlJSUpJMnT6q4uFheXl4aNmyYpk+fLi8vrybpKyQkRDt37lRMTIxSU1N19uxZlZaWyt3dXf3799eIESM0YsSIGisNahMVFaXAwEBt3rxZWVlZ+umnn9S+fXvdd999mjp1ap3bD0VGRuree+9VXFycMjMzVVpaKk9PT/n6+uqJJ55QSEiIDh8+XO9ns+X72BCtWrXSpk2btG7dOn3++ec6c+aMSkpKVFlZect7H3roIXl4eKiwsFB33HGHRowYYYMRAwAAwB4cDOY2+gQAAAAASQkJCVq0aJGkur+xDkjSDz/8oKCgIFVWVmr8+PGKioqy95AAAABgJRzoDAAAAABoEsazGqQbWyQBAADg9kVyAQAAAADQaEVFRdq4caMk6Xe/+518fX3tPCIAAABYE2cuAAAAAAAapKCgQD///LPOnTunDz74QJcuXZIkzZw5084jAwAAgLWRXAAAAAAANMi8efOUlpZW7bWRI0fqwQcftNOIAAAAYCskFwAAAAAAjdKyZUt169ZNoaGheuaZZ+w9HAAAANiAg8FgMNh7EAAAAAAAAAAA4JeDA50BAAAAAAAAAIBFSC4AAAAAAAAAAACLkFwAAAAAAAAAAAAWIbkAAAAAAAAAAAAsQnIBAAAAAAAAAABYhOQCAAAAAAAAAACwCMkFAAAAAAAAAABgEZILAAAAAAAAAADAIiQXAAAAAAAAAACARUguAAAAAAAAAAAAi5BcAAAAAAAAAAAAFiG5AAAAAAAAAAAALEJyAQAAAAAAAAAAWOT/AaJkKPkcN4/qAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "image/png": { + "width": 779, + "height": 489 + } + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7WL5pDmvFyaU" + }, + "source": [ + "### Predicting on Raw Text\n", + "\n", + "Let's use our model to predict the sentiment of some raw text:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "QEPi7zQRsDhH" + }, + "source": [ + "review_text = \"I love completing my todos! Best app ever!!!\"" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GaN4RnqMnxYw" + }, + "source": [ + "We have to use the tokenizer to encode the text:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "zA5Or4D2sLc9" + }, + "source": [ + "encoded_review = tokenizer.encode_plus(\n", + " review_text,\n", + " max_length=MAX_LEN,\n", + " add_special_tokens=True,\n", + " return_token_type_ids=False,\n", + " pad_to_max_length=True,\n", + " return_attention_mask=True,\n", + " return_tensors='pt',\n", + ")" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "et8xlDrKpH60" + }, + "source": [ + "Let's get the predictions from our model:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Qr_t3rUksumr", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "4a69d750-c56a-40c1-822a-0b3e7df16b3e" + }, + "source": [ + "input_ids = encoded_review['input_ids'].to(device)\n", + "attention_mask = encoded_review['attention_mask'].to(device)\n", + "\n", + "output = model(input_ids, attention_mask)\n", + "_, prediction = torch.max(output, dim=1)\n", + "\n", + "print(f'Review text: {review_text}')\n", + "print(f'Sentiment : {class_names[prediction]}')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Review text: I love completing my todos! Best app ever!!!\n", + "Sentiment : positive\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PVhwzq7bpPRl" + }, + "source": [ + "## Summary\n", + "\n", + "Nice job! You learned how to use BERT for sentiment analysis. You built a custom classifier using the Hugging Face library and trained it on our app reviews dataset!\n", + "\n", + "- [Read the tutorial](https://www.curiousily.com/posts/sentiment-analysis-with-bert-and-hugging-face-using-pytorch-and-python/)\n", + "- [Run the notebook in your browser (Google Colab)](https://colab.research.google.com/drive/1PHv-IRLPCtv7oTcIGbsgZHqrB5LPvB7S)\n", + "- [Read the `Getting Things Done with Pytorch` book](https://github.com/curiousily/Getting-Things-Done-with-Pytorch)\n", + "\n", + "You learned how to:\n", + "\n", + "- Intuitively understand what BERT is\n", + "- Preprocess text data for BERT and build PyTorch Dataset (tokenization, attention masks, and padding)\n", + "- Use Transfer Learning to build Sentiment Classifier using the Transformers library by Hugging Face\n", + "- Evaluate the model on test data\n", + "- Predict sentiment on raw text\n", + "\n", + "Next, we'll learn how to deploy our trained model behind a REST API and build a simple web app to access it." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Wf39tauBa2V2" + }, + "source": [ + "## References\n", + "\n", + "- [BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding](https://arxiv.org/abs/1810.04805)\n", + "- [L11 Language Models - Alec Radford (OpenAI)](https://www.youtube.com/watch?v=BnpB3GrpsfM)\n", + "- [The Illustrated BERT, ELMo, and co.](https://jalammar.github.io/illustrated-bert/)\n", + "- [BERT Fine-Tuning Tutorial with PyTorch](https://mccormickml.com/2019/07/22/BERT-fine-tuning/)\n", + "- [How to Fine-Tune BERT for Text Classification?](https://arxiv.org/pdf/1905.05583.pdf)\n", + "- [Huggingface Transformers](https://huggingface.co/transformers/)\n", + "- [BERT Explained: State of the art language model for NLP](https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270)" + ] + } + ] +} \ No newline at end of file