{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Supervised sentiment: overview of the Stanford Sentiment Treebank"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "__author__ = \"Christopher Potts\"\n",
    "__version__ = \"CS224u, Stanford, Spring 2022\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "## Contents\n",
    "\n",
    "1. [Overview of this unit](#Overview-of-this-unit)\n",
    "1. [Set-up](#Set-up)\n",
    "1. [Data readers](#Data-readers)\n",
    "    1. [Train split](#Train-split)\n",
    "    1. [Dev and test splits](#Dev-and-test-splits)\n",
    "1. [Tokenization](#Tokenization)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Overview of this unit\n",
    "\n",
    "We have a few inter-related goals for this unit:\n",
    "\n",
    "* Provide a basic introduction to supervised learning in the context of a problem that has long been central to academic research and industry applications: __sentiment analysis__.\n",
    "\n",
    "* Explore and evaluate a diverse array of methods for modeling sentiment:\n",
    "  * Hand-built feature functions with (mostly linear) classifiers\n",
    "  * Dense feature representations derived from VSMs as we built them in the previous unit\n",
    "  * Recurrent neural networks (RNNs)\n",
    "  \n",
    "* Begin discussing and implementing responsible methods for __hyperparameter optimization__ and __classifier assessment and comparison__.\n",
    "\n",
    "The unit is built around the [Stanford Sentiment Treebank (SST)](http://nlp.stanford.edu/sentiment/), a widely-used resource for evaluating supervised NLU models, and one that provides rich linguistic representations."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Set-up\n",
    "\n",
    "*  Make sure your environment includes all the requirements for [the cs224u repository](https://github.com/cgpotts/cs224u).\n",
    "\n",
    "* If you haven't already, download [the course data](http://web.stanford.edu/class/cs224u/data/data.tgz), unpack it, and place it in the directory containing the course repository – the same directory as this notebook. (If you want to put it somewhere else, change `SST_HOME` below.)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from nltk.tokenize.treebank import TreebankWordDetokenizer\n",
    "from nltk.tokenize.treebank import TreebankWordTokenizer\n",
    "import os\n",
    "import pandas as pd\n",
    "\n",
    "import sst"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "SST_HOME = os.path.join('data', 'sentiment')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Data readers\n",
    "\n",
    "Our SST distribution is the ternary version of the problem (SST-3). It consists of train/dev/test files with the following columns:\n",
    "\n",
    "1. `example_id`: a string with the format 'N-S' where N is the example number and S is the index for the subtree in example N. Both N and S are five-digit numbers with 0-padding.\n",
    "2. `sentence`: a string giving the example sentence.\n",
    "3. `label`: a string giving the label: `'positive'`, `'negative'`, or `'neutral'`. This value is derived from the original SST by mapping labels 0 and 1 to `'negative'`, label 2 to `'neutral'`, and labels 3 and 4 to `'positive'`.\n",
    "4. `is_subtree`: the integer `1` if the example is a (proper) subtree, else `0`. This affects only the train file. Our dev and test splits contain no subtrees – full examples only – and hence `is_subtree` is always `0` for them."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train split"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When reading in the train split, you have a few options. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Root-only formulation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The default will include only full examples and retain duplicate examples:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_df = sst.train_reader(SST_HOME)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'example_id': '04162-00001',\n",
       "  'sentence': \"One can only assume that the jury who bestowed star Hoffman 's brother Gordy with the Waldo Salt Screenwriting award at 2002 's Sundance Festival were honoring an attempt to do something different over actually pulling it off\",\n",
       "  'label': 'negative',\n",
       "  'is_subtree': 0},\n",
       " {'example_id': '05626-00001',\n",
       "  'sentence': \"Comedy troupe Broken Lizard 's first movie is very funny but too concerned with giving us a plot .\",\n",
       "  'label': 'neutral',\n",
       "  'is_subtree': 0},\n",
       " {'example_id': '02940-00001',\n",
       "  'sentence': \"Imagine O. Henry 's The Gift of the Magi relocated to the scuzzy underbelly of NYC 's drug scene .\",\n",
       "  'label': 'negative',\n",
       "  'is_subtree': 0}]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.sample(3, random_state=1).to_dict(orient=\"records\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8544"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.shape[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This yields the following label distribution:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "positive    3610\n",
       "negative    3310\n",
       "neutral     1624\n",
       "Name: label, dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.label.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You might want to remove the duplicate examples:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "dup_train_df = sst.train_reader(SST_HOME, dedup=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8534"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dup_train_df.shape[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This removes only ten examples for this setting so it is unlikely to be a significant choice."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our CSV-based distribution should make it easy to do basic analysis of the dataset to inform system development. \n",
    "\n",
    "Here's a look at the distribution of examples by length in characters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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mhCInn32WX344YdyOp3q1q2boqKivJbv37/f523t27dPN954o+d23Tk7U6dOVWZmpl5//XVJ0jXXXOO13vbt2zVy5EhJ0vLlyxUWFqbJkyerqqpKo0ePVnZ2tkJDQz3zX3nlFc2aNctzNVpaWlqDn30EAADMye9ANHHixGa785EjR8owGr8E+HzL6kRERCgrK0tZWVmNzomNjdW6deuaVCMAALj4+R2IHnnkkZaoAwAAIGia9G33p06d0v/+7/9q/vz5+vrrryWde6vs008/bdbiAAAAWoPfR4gOHjyoMWPGyG636+OPP9b06dMVGxurDRs2eL7TDAAAoD3x+wjR7Nmzdeedd+qDDz5QRESEZ3zcuHHatWtXsxYHAADQGvwORHv37tWMGTPqjV922WXn/SoMAACAtsrvQBQREdHgx2AfPXpUl156abMUBQAA0Jr8DkQTJkzQo48+6vn2WIvFohMnTujhhx/WT37yk2YvEAAAoKX5HYh+//vf64svvlDnzp1VVVWlESNGqGfPnoqOjtYTTzzREjUCAAC0KL+vMouJidHu3bu1bds27d+/X7W1tbr22ms9X5UBAADQ3vgdiF5++WXdeuutGjVqlEaNGuUZr66uVk5Oju64445mLRAAAKCl+f2W2V133aXy8vJ646dPn9Zdd93VLEUBAAC0Jr8DkWEYslgs9cZPnjwpu93eLEUBAAC0Jp/fMuvfv78sFossFotGjx6tsLD/W7WmpkbHjh3T2LFjW6RIAACAluRzIKr7lvuioiKlpKToe9/7nmdZeHi4rrjiCi67BwAA7ZLPgajuW+6vuOIK3XbbbbLZbC1WFAAAQGvy+xyiq666SkVFRfXG3377be3bt685agIAAGhVfgei++67T5988km98U8//VT33XdfsxQFAADQmvwORO+9956uvfbaeuP9+/fXe++91yxFAQAAtCa/A5HNZtPnn39eb7y4uNjryjMAAID2wu9AlJSUpPnz53t9OOOpU6f0m9/8RklJSc1aHAAAQGvw+5DOM888oxtuuEHdunVT//79JZ27FD8+Pl5r165t9gIBAABamt+B6LLLLtPBgwf1yiuv6N///rc6dOigu+66S7fffrusVmtL1AgAANCimnTST1RUlO65557mrgUAACAomnwW9HvvvacTJ06ourraazwtLS3gogAAAFqT34Hoo48+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7qSfjfClZwMGDJDVavWaU1xcrEOHDtHXRnz11Vf65JNP1KVLF0n00DAM3X///Xrttde0bds2de/e3Ws5j8MLu1APG8LjsJkF51xu88jJyTGsVquxevVq47333jMyMjKMqKgo4+OPPw52aW3SnDlzjB07dhgfffSRsWfPHiM1NdWIjo729OvJJ5807Ha78dprrxnvvvuucfvttxtdunQxKioqglx58Jw+fdo4cOCAceDAAUOSsWzZMuPAgQPG8ePHDcPwrWe//OUvja5duxpbtmwx9u/fb4waNcro16+f8c033wRrt1rV+Xp4+vRpY86cOUZBQYFx7NgxY/v27cbQoUONyy67jB7+/371q18Zdrvd2LFjh1FcXOz5V1lZ6ZnD4/D8LtRDHoctj0DUCv7nf/7H6NatmxEeHm5ce+21XpdRwtutt95qdOnSxbBarYbT6TQmTZpkHD582LO8trbWeOSRRwyHw2HYbDbjhhtuMN59990gVhx827dvNyTV+zd16lTDMHzrWVVVlXH//fcbsbGxRocOHYzU1FTjxIkTQdib4DhfDysrK43k5GTj0ksvNaxWq3H55ZcbU6dOrdcfM/ewod5JMl566SXPHB6H53ehHvI4bHkWwzCM1jseBQAA0PZwDhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADC9/w+au+vA70OJ1AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = train_df.sentence.str.len().hist().set_ylabel(\"Length in characters\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And by word count, assuming a very simple tokenization strategy:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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dO2118rtdquoqKjZQOTz+eTz+czlqqoqSaffymt8NC7bkSvMsOY43YyAP9F27N5rq/4t2/3cYRX6bI3O0OeW1tZpAtG3336rRx99VFOmTFF0dLQkqaysTBEREerdu3fA2NjYWJWVlZlj+vXr12R//fr1M8ecTXZ2thYtWtRkfX5+vqKioszlM2ex7GLJSGuP98SIBmsPaGN27fWWLVssPZ5dzx1Wo8/W6Mh9rqmpadG4ThGI/H6/7rzzTjU0NOi5554773jDMORwOMzl//v35sacaf78+Zo9e7a5XFVVpbi4OKWmpio6Olp+v18FBQVKSUmR0+kM8hV1fglZWy05jquboSdGNGjhnm7yNTT/80Lr2b3XB7LSLDmO3c8dVqHP1ugMfW58h+d8Onwg8vv9mjx5skpLS/XWW2+Zs0OS5PF4VFdXp4qKioBZovLyco0ePdoc8+WXXzbZ7/HjxxUbG9vscV0ul1wuV5P1Tqcz4Id+5rJd+Oqt/YXpa3BYfky7smuvrf53bNdzh9XoszU6cp9bWleH/hyixjD0ySefaNu2berTp0/A9sTERDmdzoCpumPHjunAgQNmIEpKSlJlZaXef/99c8x7772nyspKcwwAALC3dp0hqq6u1qeffmoul5aWqqSkRDExMfJ6vfrpT3+qDz74QK+99prq6+vNa35iYmIUEREht9utadOmac6cOerTp49iYmI0d+5cDRs2zLzrbMiQIbr55pt133336YUXXpAk3X///UpPT+cOMwAAIKmdA9GePXt00003mcuN1+xMnTpVWVlZevXVVyVJV111VcDztm/fruTkZEnSsmXLFB4ersmTJ6u2tlZjx45Vbm6uwsLCzPGvvPKKZs6cad6NNnHixLN+9hEAALCndg1EycnJMozmb/E917ZGkZGRysnJUU5OTrNjYmJitHbt2guqEQAAdH0d+hoiAAAAKxCIAACA7RGIAACA7RGIAACA7RGIAACA7RGIAACA7RGIAACA7RGIAACA7RGIAACA7RGIAACA7QUdiNasWaPXX3/dXJ43b5569eql0aNH6/DhwyEtDgAAwApBB6LFixere/fukqR33nlHK1as0JIlS9S3b189/PDDIS8QAACgrQX95a5ffPGFLr30UknS5s2b9dOf/lT333+/rrvuOvMb6AEAADqToGeIvve97+nrr7+WJOXn52vc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Zo1qamq0bt06SVJlZaVWr16tZ555RuPGjdPVV1+ttWvXav/+/dq2bVt7vSQAANCBhLd3AS3x4IMPasKECRo3bpyefPJJc31paanKysqUmppqrnO5XBozZoyKioo0ffp0FRcXy+/3B4zxer1KSEhQUVGR0tLSznpMn88nn89nLldVVUmS/H6/+Whcbi1XmNHqfXRVrm5GwJ9oO/TaGnbvcyjOmcEcx6rj2VVn6HNLa+vwgWj9+vX64IMPtHv37ibbysrKJEmxsbEB62NjY3X48GFzTERERMDMUuOYxuefTXZ2thYtWtRkfX5+vqKioszlgoKClr+YZiwZ2epddHlPjGho7xJsg15bw6593rJli6XHC8U5GufXkftcU1PTonEdOhB98cUXmjVrlvLz8xUZGdnsOIfDEbBsGEaTdWc635j58+dr9uzZ5nJVVZXi4uKUmpqq6Oho+f1+FRQUKCUlRU6ns4Wv6OwSsra26vldmauboSdGNGjhnm7yNZz7Z4rWodfWsHufD2SdfVY+1EJ5jkbzOkOfG9/hOZ8OHYiKi4tVXl6uxMREc119fb127typFStW6NChQ5JOzwL179/fHFNeXm7OGnk8HtXV1amioiJglqi8vFyjR49u9tgul0sul6vJeqfTGfBDP3P5Qvjq7XdSDJavwUGfLEKvrWHXPlv9SzMU52icX0fuc0vr6tAXVY8dO1b79+9XSUmJ+RgxYoTuvvtulZSUaODAgfJ4PAFTdXV1dSosLDTDTmJiopxOZ8CYY8eO6cCBA+cMRAAAwD469AxRz549lZCQELCuR48e6tOnj7k+MzNTixcv1qBBgzRo0CAtXrxYUVFRmjJliiTJ7XZr2rRpmjNnjvr06aOYmBjNnTtXw4YN07hx4yx/TQAAoOPp0IGoJebNm6fa2lo98MADqqio0KhRo5Sfn6+ePXuaY5YtW6bw8HBNnjxZtbW1Gjt2rHJzcxUWFtaOlQMAgI6i0wWiHTt2BCw7HA5lZWUpKyur2edERkYqJydHOTk5bVscAADolDr0NUQAAABWIBABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADbIxABAADb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1hk/frz592HDhikpKUk//OEPtWbNGl177bWSukaPecssSH379lVYWFiT2aDy8vImCRmh0Xg3Az0PnRkzZujVV1/V9u3bNWDAAHM9vQ6diIgIXXrppRoxYoSys7M1fPhwPfvss/Q4hIqLi1VeXq7ExESFh4crPDxchYWF+u1vf6vw8HCzn/Q6tHr06KFhw4bpk08+6VL/PROIghQREaHExEQVFBQErC8oKNDo0aPbqaquLT4+Xh6PJ6DndXV1KiwspOdBMgxDDz30kDZu3Ki33npL8fHxAdvpddsxDEM+n48eh9DYsWO1f/9+lZSUmI8RI0bo7rvvVklJiQYOHEiv24DP59NHH32k/v37d63/ntvtcu5ObP369YbT6TRWr15tfPjhh0ZmZqbRo0cP4/PPP2/v0jqtkydPGnv37jX27t1rSDKWLl1q7N271zh8+LBhGIbx1FNPGW6329i4caOxf/9+46677jL69+9vVFVVtXPlncu///u/G26329ixY4dx7Ngx81FTU2OOodetN3/+fGPnzp1GaWmpsW/fPuNXv/qV0a1bNyM/P98wDHrclv7vXWaGQa9DYc6cOcaOHTuMzz77zHj33XeN9PR0o2fPnubvvK7SYwLRBfrd735nXHzxxUZERITxox/9yLxtGRdm+/bthqQmj6lTpxqGcfrWzscee8zweDyGy+UybrzxRmP//v3tW3QndLYeSzJeeuklcwy9br177rnHPD98//vfN8aOHWuGIcOgx23pzEBEr1vvjjvuMPr37284nU7D6/UakyZNMg4ePGhu7yo9dhiGYbTP3BQAAEDHwDVEAADA9ghEAADA9ghEAADA9ghEAADA9ghEAADA9ghEAADA9ghEAADA9ghEAADA9ghEAADA9ghEAADA9ghEAADA9ghEAADA9v4flV/zWTNY9E0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_df['word_count'] = train_df.sentence.str.split().apply(len)\n",
    "\n",
    "_ = train_df['word_count'].hist().set_ylabel(\"Length in words\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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VzR8+HAtWLBAqamp8vb2LvXtW2lfXU5KSorq1aunJ554QtOmTXN3OUC5wAW7ACRJL730kmrVqqUbbrhB6enpWrJkid5//309//zzbgkuVnf06FH973//02uvvSYPDw89+eST7i4JKDcILwAkSV5eXnrttdd09OhR5ebmKjw8XDNmzOBD9yq9//77eumll1S/fn199NFHql27trtLAsoNThsBAABLYao0AACwFMILAACwFMILAJc7ePCgbDab5s2b5+5SStSUKVMKfXkhANcjvADAVSK8AO5BeAFQIjIyMtxdAoDrBOEFKIf27t0rm82mzz//3N62bds22Ww23XTTTQ59//SnP6ldu3aSpPz8fE2bNk1NmzaVj4+PatSooaFDh+ro0aMOz4mMjFTz5s21bt06denSRf7+/nrooYckXbgR47333qvAwEBVrlxZ991332Vv8Hglv//+u/7617/qhhtusNfTp08f7d+/397n1KlTGjlypGrXri1vb2/dcMMNeu655xxu/PhHp61sNptiY2Ptj2NjY2Wz2bR3717df//9qly5skJCQvTQQw/pzJkzDs87d+6c5s+fL5vNJpvN9of3pQJQcvieF6Acuummm1SzZk2tXLlS99xzjyRp5cqV8vPz0759+3Ts2DHVqlVLubm5SkhI0IgRIyRJjz/+uObMmaPRo0frzjvv1MGDB/XCCy9o7dq12r59u8Ndq48fP64hQ4ZowoQJmjJlijw8PJSZmamePXvq2LFjmjp1qho3bqxvvvlG9913n9OvIS0tTbfccosOHjyop59+Wh07dlR6errWrVun48ePq2nTpjp//ry6deumX375RZMnT1bLli21fv16TZ06VTt27NA333xz1fvw7rvv1n333aeHH35Yu3fv1sSJEyVJ//73vyVJmzZtUvfu3dWtWze98MILkqRKlSpd9fYAOMG9dycA4CpDhgwxN9xwg/1xz549zaOPPmqqVq1q5s+fb4wx5ttvvzWSTFxcnPnhhx+MpEI3UdyyZYuRZJ599ll7W0REhJFkVq1a5dD3nXfeMZLMV1995dD+6KOPFrpXz5W89NJLRpKJj4+/bJ93333XSDKfffaZQ/urr75qf13GFH2voAKSzKRJk+yPJ02aZCSZadOmOfQbOXKk8fX1Nfn5+fa2gICAK94zCkDJ47QRUE716NFD//vf/5SUlKTz589rw4YNuv3229WtWzfFx8dLunA0xsfHR7fccovWrFkj6cL9hC7WoUMH3XjjjVq1apVDe9WqVdW9e3eHtjVr1igwMFB/+tOfHNoHDRrkdP3Lli1T48aN1bNnz8v2Wb16tQICAjRw4ECH9oLXcGnNzrj0NbRs2VLnz59XSkrKVa8TQMkgvADlVMGH/sqVK7Vhwwbl5OSoe/fu6tmzp/1DfeXKleratav8/PyUmpoqSapZs2ahddWqVcu+vEBR/VJTUxUSElKoPTQ01On6f/vtN9WpU+cP+6Smpio0NFQ2m82hvUaNGvL09CxUszOCg4MdHvv4+EiSMjMzr3qdAEoG4QUop+rUqaPGjRtr5cqVio+PV/v27VWlShX16NFDx48f15YtW7R582Z7yCn4sD5+/HihdR07dszhehdJhQJDwTpOnDhRqP1qLtitXr16oQuFL7c9c8ldTlJSUpSbm2uv2dfXV5IcLuKVdE3hBoD7EF6Acqxnz55avXq14uPjFRUVJUlq3Lix6tatqxdffFE5OTn28FJwCujDDz90WEdiYqJ++OEH9ejR44rb69atm9LS0rR48WKH9o8//tjp2nv37q2ffvpJq1evvmyfHj16KD09vdB3rXzwwQf25ZIUEhIiX19f7dq1y6HfV1995XRdF/Px8eFIDOAGzDYCyrEePXpo9uzZOnnypGbNmuXQPnfuXFWtWtU+TbpJkyYaPny43nzzTXl4eKh379722UZhYWF66qmnrri9oUOHaubMmRo6dKheeeUVhYeHa+nSpVqxYoXTtY8ZM0affvqp+vXrp2eeeUYdOnRQZmamEhISdOedd6pbt24aOnSo3n77bT344IM6ePCgWrRooQ0bNmjKlCnq06ePPZjZbDYNGTJE//73v9WwYUO1atVK33333VWFqou1aNFCa9eu1ddff62aNWsqMDBQTZo0uaZ1AigGd18xDMB1Tp8+bTw8PExAQIDJzs62t3/00UdGkhkwYIBD/7y8PPPqq6+axo0bGy8vL1OtWjUzZMgQc+TIEYd+ERER5qabbipym0ePHjV33323qVixogkMDDR333232bhxo9OzjQrqf/LJJ03dunWNl5eXqVGjhrnjjjvM/v377X1SU1PNiBEjTM2aNY2np6epV6+emThxojl//rzDus6cOWMeeeQRExISYgICAkzfvn3NwYMH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sWOHbrjhBoWGhio+Pt7+nOzsbCUkJKhLly7ObAoAAKBITh15CQwMVPPmzR3aAgICFBwcbG8fM2aMpkyZovDwcIWHh2vKlCny9/fXoEGDSq5qAABw3bqq2UZ/ZMKECcrMzNTIkSN1+vRpdezYUXFxcQoMDCzpTQEAgOvQNYeXtWvXOjy22WyKjY1VbGzsta4aAACgEO5tBAAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALMWp8PLOO++oZcuWqlSpkipVqqTOnTtr2bJl9uXGGMXGxqpWrVry8/NTZGSk9u7dW+JFAwCA65dT4aVOnTr6+9//rq1bt2rr1q3q3r27+vXrZw8o06ZN04wZM/TWW28pMTFRoaGhioqKUlpamkuKBwAA1x+nwkvfvn3Vp08fNW7cWI0bN9Yrr7yiihUravPmzTLGaNasWXruuec0YMAANW/eXPPnz1dGRoY+/vhjV9UPAACuM55X+8S8vDx9/vnnOnfunDp37qykpCQlJycrOjra3sfHx0cRERHauHGjHnvssSLXk5WVpaysLPvjs2fPSpJycnKUk5NzteXhErm5ufa/2a8oqxinsArGaslzZj86HV52796tzp076/z586pYsaK+/PJLNWvWTBs3bpQkhYSEOPQPCQnRoUOHLru+qVOnavLkyYXa4+Li5O/v72x5uIwj6ZLkqc2bN+vXPe6uBiga4xRWwVgteRkZGcXu63R4adKkiXbs2KHff/9d//3vf/Xggw8qISHBvtxmszn0N8YUarvYxIkTNXbsWPvjs2fPKiwsTNHR0apUqZKz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SkpK0i+//CJJ+vHHH9WhQweH51/6OCUlRSNGjFDjxo1VuXJlVa5cWenp6U7/Njp48GCtXbtWx44dk3ThqE+fPn1UtWpVSdK2bds0b948h1p79eql/Px8JSUlObUtWMe1jN9r1b59e4fH586d04QJE9SsWTNVqVJFFStW1P79+znych3r1KmTbDab/XHnzp114MAB7du3T56enurYsaN9WXBwsJo0aaIffvhB0oXT4i+//LK6du2qSZMmadeuXddUi5eXl+655x599NFHki6M16+++sp+9Hrfvn06f/68oqKiHH5mPvjggxL7mSlvuMrNjby8vBwe22w25efnKz8/XzVr1tTatWsLPefiq9ov/sGUZD+fW2DYsGH67bffNGvWLNWrV08+Pj7q3LmzsrOznaqzQ4cOatiwoT755BM9/vjj+vLLL+3naSUpPz9fjz32mGJiYgo9t27duk5tC9ZxLePXw8Oj0HgtOGRfHAEBAQ6Px48frxUrVmj69Olq1KiR/Pz8NHDgQKfHOq5fxhj7e+ojjzyiXr166ZtvvlFcXJymTp2q119/XU888cRVr3/w4MGKiIhQSkqK4uPj5evrq969e0u68B4qSd98841q167t8DzunVQ0wksZ1LZtWyUnJ8vT09N+Ee2lmjRpou+++04PPPCAvW3r1q0OfdavX6/Zs2erT58+kqQjR47o5MmTDn28vLyUl5d3xZoGDRqkjz76SHXq1JGHh4fuuOMOh3r37t2rRo0aFfclohwrzvitXr269uzZ49C2Y8cOh0Dk7e1drLEpXRjrw4YN01133SVJSk9P18GDB6+qfpQPmzdvLvQ4PDxczZo1U25urrZs2aIuXbpIklJTU/XTTz/pxhtvtPcPCwvTiBEjNGLECE2cOFHvvfdekeGluOO0S5cuCgsL06effqply5bpnnvukbe3tySpWbNm8vHx0eHDhx0mQuDyOG1UBvXs2VOdO3dW//79tWLFCh08eFAbN27U888/bw8oTzzxhP71r39p/vz5OnDggF5++WXt2rXL4WhMo0aN9J///Ec//PCDtmzZosGDB8vPz89hW/Xr19eqVauUnJys06dPX7amwYMHa/v27XrllVc0cOBA+fr62pc9/fTT2rRpk0aNGqUdO3bowIEDWrx48TX9lgLrKs747d69u7Zu3aoPPvhABw4c0KRJkwqFmfr162vLli06ePCgTp48af/ttCiNGjXSwoULtWPHDu3cuVODBg36w/4o/44cOaKxY8fqxx9/1IIFC/Tmm2/qySefVHh4uPr166dHH31UGzZs0M6dOzVkyBDVrl1b/fr1k3Rh5tuKFSuUlJSk7du3a/Xq1Q7B5mL169dXenq6Vq1apZMnTyojI6PIfjabTYMGDdK7776r+Ph4DRkyxL4sMDBQ48aN01NPPaX58+frl19+0ffff6+3335b8+fPL/mdUw4QXsogm82mpUuX6rbbbtNDDz2kxo0b689//rMOHjyokJAQSRfCxMSJEzVu3Di1bdtWSUlJGjZsmEOo+Pe//63Tp0+rTZs2euCBBxQTE6MaNWo4bOv1119XfHy8wsLC1KZNm8vWFB4erptvvlm7du2yn6ct0LJlSyUkJOjAgQO69dZb1aZNG73wwguqWbNmCe4VWEVxxm+vXr30wgsvaMKECbr55puVlpamoUOHOqxn3LhxqlChgpo1a6bq1av/4fUrM2fOVNWqVdWlSxf17dtXvXr1Utu2bV36OlG2DR06VJmZmerQoYNGjRqlJ554wv6lcXPnzlW7du105513qnPnzjLGaOnSpfYjf3l5eRo1apRuvPFG3X777WrSpIlmz55d5Ha6dOmiESNG6L777lP16tU1bdq0y9Y0ePBg7du3T7Vr11bXrl0dlv3tb3/Tiy++qKlTp+rGG29Ur1699PXXX6tBgwYltEfKF5u59MQzLCsqKkqhoaH6z3/+4+5SAMBtIiMj1bp1a76evxzjmheLysjI0LvvvqtevXqpQoUKWrBggVauXKn4+Hh3lwYAgEsRXiyq4ND8yy+/rKysLDVp0kT//e9/1bNnT3eXBgCAS3HaCAAAWAoX7AIAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAocZGRkRozZkyx+q5du1Y2m02///77NW2zfv36fCkZcJ0gvAAAAEshvAAAAEshvABwqQ8//FDt27dXYGCgQkNDNWjQIKWkpBTq9+2336pVq1by9fVVx44dtXv3boflGzdu1G233SY/Pz+FhYUpJiZG586dK62XAaAMIbwAcKns7Gz97W9/086dO7Vo0SL7HdAvNX78eE2fPl2JiYmqUaOG/vSnPyknJ0eStHv3bvXq1UsDBgzQrl279Omnn2rDhg0aPXp0Kb8aAGUB9zYC4FIPPfSQ/d833HCD3njjDXXo0EHp6emqWLGifdmkSZMUFRUlSZo/f77q1KmjL7/8Uvfee69ee+01DRo0yH4RcHh4uN544w1FRETonXfeka+vb6m+JgDuxZEXAC71/fffq1+/fqpXr54CAwMVGRkpSTp8+LBDv86dO9v/HRQUpCZNmuiHH36QJG3btk3z5s1TxYoV7X969eql/Px8JSUlldprAVA2cOQFgMucO3dO0dHRio6O1ocffqjq1avr8OHD6tWrl7Kzs6/4fJvNJknKz8/XY489ppiYmEJ96tatW+J1AyjbCC8AXGb//v06efKk/v73vyssLEyStHXr1iL7bt682R5ETp8+rZ9++klNmzaVJLVt21Z79+5Vo0aNSqdwAGUap40AuEzdunXl7e2tN998U//73/+0ePFi/e1vfyuy70svvaRVq1Zpz549GjZsmKpVq6b+/ftLkp5++mlt2rRJo0aN0o4dO3TgwAEtXrxYTzzxRCm+GgBlBeEFgMtUr15d8+bN0+eff65mzZrp73//u6ZPn15k37///e968skn1a5dOx0/flyLFy+Wt7e3JKlly5ZKSEjQgQMHdOutt6pNmzZ64YUXVLNmzdJ8OQDKCJsxxri7CAAAgOLiyAsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALCU/wfDPXC+Og8zgAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = train_df.boxplot(\"word_count\", by=\"label\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Including subtrees"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Much of the special interest of the SST is that it includes labels, not just for full examples, but also for all the constituent words and phrases in those examples. You might also want to try training on this expanded dataset. It's much larger and so experiments will be more costly in terms of time and compute resources, but it could be worth it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "subtree_train_df = sst.train_reader(SST_HOME, include_subtrees=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "318582"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subtree_train_df.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>example_id</th>\n",
       "      <th>sentence</th>\n",
       "      <th>label</th>\n",
       "      <th>is_subtree</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>00001-00001</td>\n",
       "      <td>The Rock is destined to be the 21st Century 's...</td>\n",
       "      <td>positive</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>00001-00002</td>\n",
       "      <td>The Rock</td>\n",
       "      <td>neutral</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>00001-00003</td>\n",
       "      <td>The</td>\n",
       "      <td>neutral</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>00001-00004</td>\n",
       "      <td>Rock</td>\n",
       "      <td>neutral</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>00001-00005</td>\n",
       "      <td>is destined to be the 21st Century 's new `` C...</td>\n",
       "      <td>positive</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    example_id                                           sentence     label  \\\n",
       "0  00001-00001  The Rock is destined to be the 21st Century 's...  positive   \n",
       "1  00001-00002                                           The Rock   neutral   \n",
       "2  00001-00003                                                The   neutral   \n",
       "3  00001-00004                                               Rock   neutral   \n",
       "4  00001-00005  is destined to be the 21st Century 's new `` C...  positive   \n",
       "\n",
       "   is_subtree  \n",
       "0           0  \n",
       "1           1  \n",
       "2           1  \n",
       "3           1  \n",
       "4           1  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subtree_train_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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aD4Hq9mzZ+v111+/5I09AQAArkc+nwosKyvTp59+qr/+9a+644472nza8+rVqy1rDgAAIJD4HKx69OhhfggyAAAA/o/PwWr58uX+6AMAACDgcYNQAAAAi7RrxepHP/qRNm7cqIiICN15552XvHfV3//+d8uaAwAACCTtClYPPvig7Ha7JGnChAn+7AcAACBgtStYPf/88xf8HgAAAP+Ha6wAAAAsQrACAACwCMEKAADAIgQrAAAAixCsAAAALOLznddbWlqUn5+vjRs3qq6uTt98843X/k8++cSy5gAAAAKJz8HqqaeeUn5+vsaMGSOXy3XJm4UCAABcT3wOVoWFhfrjH/+oBx54wB/9AAAABCyfr7EKCQnRbbfd5o9eAAAAAprPwWr27Nl6/fXXZRiGP/oBAAAIWO06FThx4kSvx5988on++te/6o477lBwcLDXvtWrV1vXHQAAQABpV7ByOBxej3/84x/7pRkAAIBA1q5gtXz5cn/3AQAAEPB8vsbq/vvv18mTJ9tsb2xs1P33329FTwAAAAHJ52C1adMmNTc3t9l+7tw5/e1vf7OkKQAAgEDU7vtY7dy50/x+9+7dqq2tNR+3tLSoqKhIN998s7XdAQAABJB2B6sf/vCHstlsstlsFzzlFxoaqry8PEubAwAACCTtDlYHDhyQYRi69dZb9dlnn+mmm24y94WEhCg6OlpBQUF+aRIAACAQtDtY9e7dW5LafOgyAAAAvuXzZwV+9NFHF9xus9nUtWtX3XbbbUpISLjqxgAAAAKNz8FqwoQJstlsbT7SpnWbzWbTPffcow8//FARERGWNQoAANDZ+Xy7hZKSEt11110qKSlRQ0ODGhoaVFJSorvvvltr165VaWmpjh8/rjlz5vijXwAAgE7L5xWrp556Sm+//baGDBlibhsxYoS6du2qxx9/XLt27dJrr72mxx57zNJGAQAAOjufV6z+93//V+Hh4W22h4eH64svvpAk9enTR1999dXVdwcAABBAfA5WycnJ+n//7//p2LFj5rZjx47p6aef1l133SVJ2r9/v3r27GldlwAAAAHA51OBy5Yt04MPPqiePXsqPj5eNptNhw4d0q233qo///nPkqTTp0/rueees7xZAACAzsznYJWYmKg9e/Zo/fr12rdvnwzD0A9+8AOlpaXphhu+XQCbMGGC1X0CAAB0ej4H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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "subtree_train_df['word_count'] = subtree_train_df.sentence.str.split().apply(len)\n",
    "\n",
    "_ = subtree_train_df['word_count'].hist().set_ylabel(\"Length in words\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this setting, removing duplicates has a large effect, since many subtrees are repeated:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "subtree_dedup_train_df = sst.train_reader(SST_HOME, include_subtrees=True, dedup=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(159274, 4)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subtree_dedup_train_df.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Label distribution:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "neutral     81658\n",
       "positive    42672\n",
       "negative    34944\n",
       "Name: label, dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subtree_dedup_train_df.label.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dev and test splits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For the dev and test splits, we include only the root-level examples, and we do not deduplicate to remain aligned with the original paper. (The dev set has one repeated example, and the test set has none.)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "dev_df = sst.dev_reader(SST_HOME)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1101, 4)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dev_df.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Label distribution:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "positive    444\n",
       "negative    428\n",
       "neutral     229\n",
       "Name: label, dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dev_df.label.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There is an associated `sst.test_reader(SST_HOME)` with 2,210 (root-only) examples and no duplicates. As always in our field, you should use the test set only at the very end of your system development, and you should never, ever develop a system on the basis of test-set scores. \n",
    "\n",
    "In a similar vein, you should use the dev set only very sparingly. This will give you a clearer picture of how you will ultimately do on test; over-use of a dev set can lead to over-fitting on that particular dataset with a resulting loss of performance at test time.\n",
    "\n",
    "In the homework and associated bake-off for this course, we will introduce a second dev/test pair involving sentences about restaurants. The goal there is to have a fresh test set, and to push you to develop a system that works both for the SST movie domain and this new domain."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = dev_df.sentence.str.len().hist().set_ylabel(\"Length in characters\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGdCAYAAAD0e7I1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAny0lEQVR4nO3df3RU9Z3/8ddAhknAJIBAJllSDBJ/1AC1/DKgJAqJAmKR3QWh26Ur/uiKLCkgB8rxS2gpULpGLLRQTynBejixpwJ1RSTDryBL3QUalhCt0jX8cA1GfiUhCZOY3O8fLLOO4UduMsNNPnk+zslx5nM/ufOe9wyTl/feuddlWZYlAAAAQ3VwugAAAIBwIuwAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIwW4XQBrUFDQ4M+++wzRUdHy+VyOV0OAABoAsuyVFlZqYSEBHXocO3tN4QdSZ999pkSExOdLgMAADTDqVOn1Lt372suJ+xIio6OlnS5WVFRUcrPz1dmZqbcbrfDlbU/dXV19N9B9N9Z9N9Z9N9Zzel/RUWFEhMTA3/Hr4WwIwV2XcXExCgqKkqdO3dWTEwMb3YH1NXV0X8H0X9n0X9n0X9ntaT/NzoEhQOUAQCA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIwW4XQBQKjcNn+r0yXYdnz5OKdLAADjsWUHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMJqjYWfZsmUaMmSIoqOj1atXL02YMEEfffRR0BzLspSdna2EhARFRUUpPT1dxcXFQXP8fr9mzpypHj16qEuXLnrsscf06aef3synAgAAWilHw05BQYFmzJih999/Xz6fT19++aUyMzNVVVUVmLNixQrl5ORo9erVOnDggLxerzIyMlRZWRmYk5WVpc2bNysvL0/79u3TxYsX9eijj6q+vt6JpwUAAFqRCCcf/N133w26v379evXq1UuHDh3SyJEjZVmWVq5cqYULF2rixImSpA0bNiguLk4bN27Us88+q/Lycq1bt06/+93vNHr0aEnS66+/rsTERO3YsUMPP/zwTX9eAACg9XA07HxdeXm5JKl79+6SpJKSEp0+fVqZmZmBOR6PR2lpadq/f7+effZZHTp0SHV1dUFzEhISlJKSov3791817Pj9fvn9/sD9iooKSVJdXZ0iIiICt3HzXel7c/rv6WiFupywa23vs5b0Hy1H/51F/53VnP43dW6rCTuWZWn27Nm6//77lZKSIkk6ffq0JCkuLi5oblxcnE6cOBGY06lTJ3Xr1q3RnCu//3XLli3T4sWLG43n5+erc+fOkiSfz9eyJ4QWaU7/VwwNQyFh9s477zhdwlXx/ncW/XcW/XeWnf5XV1c3aV6rCTvPP/+8jhw5on379jVa5nK5gu5bltVo7OuuN2fBggWaPXt24H5FRYUSExOVmZmpqKgo+Xw+ZWRkyO12N+OZoCXq6uqa3f+U7O1hqip8jma3rt2sLek/Wo7+O4v+O6s5/b+yZ+ZGWkXYmTlzpt566y3t3btXvXv3Dox7vV5Jl7fexMfHB8bLysoCW3u8Xq9qa2t1/vz5oK07ZWVlGj58+FUfz+PxyOPxNBp3u92BBn/1Nm6+5vTfX3/9ANwatdb3GO9/Z9F/Z9F/Z9npf1PnOfptLMuy9Pzzz2vTpk3atWuXkpKSgpYnJSXJ6/UGbdKqra1VQUFBIMgMGjRIbrc7aE5paamOHj16zbADAADaD0e37MyYMUMbN27UH//4R0VHRweOsYmNjVVUVJRcLpeysrK0dOlSJScnKzk5WUuXLlXnzp01derUwNzp06drzpw5uvXWW9W9e3fNnTtX/fv3D3w7CwAAtF+Ohp01a9ZIktLT04PG169fr+9///uSpHnz5qmmpkbPPfeczp8/r2HDhik/P1/R0dGB+S+//LIiIiI0adIk1dTUaNSoUcrNzVXHjh1v1lMBAACtlKNhx7Ju/FVhl8ul7OxsZWdnX3NOZGSkVq1apVWrVoWwOgAAYAKujQUAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGit4gzKANqO2+ZvdboE244vH+d0CQAcxJYdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYLcLpAoD27Lb5W50uIYino6UVQ6WU7O3y17ucLgcAQoItOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABgtwukC0DrdNn+rI4/r6WhpxVApJXu7/PUuR2oAAJiFLTsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKPZDjsbNmzQ1q3/dw6WefPmqWvXrho+fLhOnDgR0uIAAABaynbYWbp0qaKioiRJf/rTn7R69WqtWLFCPXr00A9/+MOQFwgAANASts+gfOrUKfXr10+StGXLFv3d3/2dnnnmGY0YMULp6emhrg8AAKBFbG/ZueWWW3T27FlJUn5+vkaPHi1JioyMVE1NTWirAwAAaCHbYScjI0NPPfWUnnrqKX388ccaN26cJKm4uFi33XabrXXt3btX48ePV0JCglwul7Zs2RK0/Pvf/75cLlfQz3333Rc0x+/3a+bMmerRo4e6dOmixx57TJ9++qndpwUAAAxlO+z88pe/VGpqqr744gu9+eabuvXWWyVJhw4d0pQpU2ytq6qqSgMHDtTq1auvOeeRRx5RaWlp4Oedd94JWp6VlaXNmzcrLy9P+/bt08WLF/Xoo4+qvr7e7lMDAAAGsn3MTteuXa8aThYvXmz7wceMGaMxY8Zcd47H45HX673qsvLycq1bt06/+93vArvTXn/9dSUmJmrHjh16+OGHbdcEAADM0qSwc+TIkSavcMCAAc0u5mr27NmjXr16qWvXrkpLS9NPf/pT9erVS9LlrUl1dXXKzMwMzE9ISFBKSor2799/zbDj9/vl9/sD9ysqKiRJdXV1ioiICNxuzzwdLWcet4MV9F/cXKb2v638e75SZ1up1zT031nN6X9T57osy7rhp1qHDh3kcrlkWZZcLtd15zZ395HL5dLmzZs1YcKEwNgbb7yhW265RX369FFJSYlefPFFffnllzp06JA8Ho82btyof/qnfwoKLpKUmZmppKQk/frXv77qY2VnZ191S9TGjRvVuXPnZtUPAABururqak2dOlXl5eWKiYm55rwmbdkpKSkJ3C4sLNTcuXP1wgsvKDU1VdLl8+289NJLWrFiRQvLDjZ58uTA7ZSUFA0ePFh9+vTR1q1bNXHixGv+3o1C2YIFCzR79uzA/YqKCiUmJiozM1NRUVHy+XzKyMiQ2+0OzRNpg1KytzvyuJ4Oln4yuEEvHuwgf8P1gzVCz9T+H81uG7u06+rq+PxxEP13VnP6f2XPzI00Kez06dMncPvv//7v9Ytf/EJjx44NjA0YMECJiYl68cUXg7bMhFp8fLz69OmjY8eOSZK8Xq9qa2t1/vx5devWLTCvrKxMw4cPv+Z6PB6PPB5Po3G32x1o8Fdvt0f+emf/0PkbXI7X0J6Z1v+29m+5vX/+OI3+O8tO/5s6z/a3sYqKipSUlNRoPCkpSR988IHd1dly9uxZnTp1SvHx8ZKkQYMGye12y+fzBeaUlpbq6NGj1w07AACg/bAddu6++24tWbJEly5dCoz5/X4tWbJEd999t611Xbx4UYcPH9bhw4clXd5ddvjwYZ08eVIXL17U3Llz9ac//UnHjx/Xnj17NH78ePXo0UOPP/64JCk2NlbTp0/XnDlztHPnThUWFuof/uEf1L9//8C3swAAQPtm+6vna9eu1fjx45WYmKiBAwdKkv7rv/5LLpdLb7/9tq11HTx4UA8++GDg/pXjaKZNm6Y1a9aoqKhIr732mi5cuKD4+Hg9+OCDeuONNxQdHR34nZdfflkRERGaNGmSampqNGrUKOXm5qpjx452nxoAADCQ7bAzdOhQlZSU6PXXX9df/vIXWZalyZMna+rUqerSpYutdaWnp+t6Xwbbvv3GB8lGRkZq1apVWrVqla3HBgAA7YOtsFNXV6c777xTb7/9tp555plw1QQAABAyto7Zcbvd8vv9NzzXDgAAQGth+wDlmTNn6mc/+5m+/PLLcNQDAAAQUraP2fmP//gP7dy5U/n5+erfv3+j43Q2bdoUsuIAIBRum7/V6RKaxNPR0oqhl0/q+dFPH3W6HMAYzboQ6N/+7d+GoxYAAICQsx121q9fH446AAAAwsJ22Lniiy++0EcffSSXy6U77rhDPXv2DGVdAAAAIWH7AOWqqio9+eSTio+P18iRI/XAAw8oISFB06dPV3V1dThqBAAAaDbbYWf27NkqKCjQv/3bv+nChQu6cOGC/vjHP6qgoEBz5swJR40AAADNZns31ptvvqk//OEPSk9PD4yNHTtWUVFRmjRpktasWRPK+gAAAFrE9pad6upqxcXFNRrv1asXu7EAAECrYzvspKamatGiRUFXPa+pqdHixYuVmpoa0uIAAABayvZurFdeeUWPPPKIevfurYEDB8rlcunw4cOKjIxs0oU7AQAAbibbYSclJUXHjh0Luur5E088oe9+97uKiooKR40AAADN1qzz7ERFRenpp58OdS0AAAAhZ/uYnYSEBE2dOlWvvvqqPv7443DUBAAAEDK2w85LL72kmJgY5eTk6K677lJ8fLyeeOIJrV27Vh9++GE4agQAAGg227uxpkyZoilTpkiSPv/8c+3evVtvv/22Zs6cqYaGBtXX14e8SAAAgOZq1jE7Fy9e1L59+1RQUKA9e/aosLBQ/fv3V1paWqjrAwAAaBHbYWfYsGE6cuSIUlJSlJ6erh/96Ed64IEH1LVr1zCUBwAA0DK2j9k5duyYOnfurL59+6pv377q168fQQcAALRatsPOuXPntHv3bo0YMUI7duxQWlqavF6vJk+erLVr14ajRgAAgGazHXYkacCAAfqXf/kXvfnmm9q2bZvGjBmjTZs2acaMGaGuDwAAoEVsH7NTWFioPXv2aM+ePXrvvfdUWVmpgQMHatasWXrwwQfDUSMAAECz2Q47Q4YM0b333qu0tDQ9/fTTGjlypGJiYsJRGwAAQIvZDjvnzp0j3AAAgDbD9jE7BB0AANCWNOsAZQAAgLaCsAMAAIxG2AEAAEYj7AAAAKPZ/jZWfX29cnNztXPnTpWVlamhoSFo+a5du0JWHAAAQEvZDjuzZs1Sbm6uxo0bp5SUFLlcrnDUBQAAEBK2w05eXp5+//vfa+zYseGoBwAAIKRsH7PTqVMn9evXLxy1AAAAhJztsDNnzhy98sorsiwrHPUAAACElO3dWPv27dPu3bu1bds23XPPPXK73UHLN23aFLLiAAAAWsp22Onatasef/zxcNQCAAAQcrbDzvr168NRBwAAQFhwUkEAAGC0Jm3Z+fa3v62dO3eqW7duuvfee697bp0///nPISsOAACgpZoUdr7zne/I4/FIkiZMmBDOegAAAEKqSWFn0aJFV70NAADQ2nHMDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAo9k+g3J9fb1yc3O1c+dOlZWVqaGhIWj5rl27QlYcAABAS9kOO7NmzVJubq7GjRunlJSU655gEAAAwGm2w05eXp5+//vfa+zYseGoBwAAIKRsH7PTqVMn9evXLxy1AAAAhJztsDNnzhy98sorsiwrHPUAAACEVJN2Y02cODHo/q5du7Rt2zbdc889crvdQcs2bdoUuuoAAABaqElhJzY2Nuj+448/HpZiAAAAQq1JYWf9+vXhrgMAACAsbB+z89BDD+nChQuNxisqKvTQQw+FoiYAAICQsR129uzZo9ra2kbjly5d0nvvvReSogAAAEKlyefZOXLkSOD2Bx98oNOnTwfu19fX691339Xf/M3fhLY6AACAFmpy2PnWt74ll8sll8t11d1VUVFRWrVqVUiLAwAAaKkmh52SkhJZlqW+ffvqP//zP9WzZ8/Ask6dOqlXr17q2LFjWIoEAABoriaHnT59+khSowt/AgAAtGa2r4311ltvXXXc5XIpMjJS/fr1U1JSUosLAwAACAXbYWfChAlyuVyNLhdxZczlcun+++/Xli1b1K1bt5AVCgAA0By2v3ru8/k0ZMgQ+Xw+lZeXq7y8XD6fT0OHDtXbb7+tvXv36uzZs5o7d2446gUAALDFdtiZNWuWcnJyNGrUKEVHRys6OlqjRo3Sv/7rv+qFF17QiBEjtHLlSvl8vhuua+/evRo/frwSEhLkcrm0ZcuWoOWWZSk7O1sJCQmKiopSenq6iouLg+b4/X7NnDlTPXr0UJcuXfTYY4/p008/tfu0AACAoWyHnf/+7/9WTExMo/GYmBh98sknkqTk5GSdOXPmhuuqqqrSwIEDtXr16qsuX7FihXJycrR69WodOHBAXq9XGRkZqqysDMzJysrS5s2blZeXp3379unixYt69NFHVV9fb/epAQAAA9kOO4MGDdILL7ygL774IjD2xRdfaN68eRoyZIgk6dixY+rdu/cN1zVmzBgtWbKk0VXVpctbdVauXKmFCxdq4sSJSklJ0YYNG1RdXa2NGzdKksrLy7Vu3Tq99NJLGj16tO699169/vrrKioq0o4dO+w+NQAAYCDbYWfdunUqKSlR79691a9fPyUnJ6t37946fvy4fvOb30iSLl68qBdffLFFhZWUlOj06dPKzMwMjHk8HqWlpWn//v2SpEOHDqmuri5oTkJCglJSUgJzAABA+2b721h33nmnPvzwQ23fvl0ff/yxLMvSXXfdpYyMDHXocDk7TZgwocWFXbkcRVxcXNB4XFycTpw4EZjTqVOnRt/6iouLC7qcxdf5/X75/f7A/YqKCklSXV2dIiIiArfbM09H68aTwvG4Hayg/+Lmov/O+mr/2/tnkBOu9JzeO6M5/W/qXNthR7r8NfNHHnlEjzzySHN+3fZjfdWVr7dfz43mLFu2TIsXL240np+fr86dO0tSkw6wNtmKoc4+/k8Gc/JKJ9F/Z/1kcIPeeecdp8tot9r757/T7PS/urq6SfOaFXZ27typnTt3qqysrNEZlX/72982Z5WNeL1eSZe33sTHxwfGy8rKAlt7vF6vamtrdf78+aCtO2VlZRo+fPg1171gwQLNnj07cL+iokKJiYnKzMxUVFSUfD6fMjIy5Ha7Q/Jc2qKU7O2OPK6ng6WfDG7Qiwc7yN9w/VCL0KP/zvpq/w/9v/D/zySC1dXV8fnvoOb0/8qemRuxHXYWL16sH//4xxo8eLDi4+NvuJWluZKSkuT1euXz+XTvvfdKkmpra1VQUKCf/exnki4fLO12u+Xz+TRp0iRJUmlpqY4ePaoVK1Zcc90ej0cej6fRuNvtDjT4q7fbI3+9s3/o/A0ux2toz+i/s/wNrnb9+eO09v757zQ7/W/qPNthZ+3atcrNzdX3vvc9u7/ayMWLF/XXv/41cL+kpESHDx9W9+7d9Y1vfENZWVlaunSpkpOTlZycrKVLl6pz586aOnWqJCk2NlbTp0/XnDlzdOutt6p79+6aO3eu+vfvr9GjR7e4PgAA0PbZDju1tbXX3UVkx8GDB/Xggw8G7l/ZtTRt2jTl5uZq3rx5qqmp0XPPPafz589r2LBhys/PV3R0dOB3Xn75ZUVERGjSpEmqqanRqFGjlJubyxXYAQCApGaEnaeeekobN25s8VfLJSk9Pb3RNba+yuVyKTs7W9nZ2decExkZqVWrVmnVqlUtrgcAAJjHdti5dOmSXn31Ve3YsUMDBgxotL8sJycnZMUBAAC0lO2wc+TIEX3rW9+SJB09ejRoWbgOVgYAAGgu22Fn9+7d4agDAAAgLGxfLuKKv/71r9q+fbtqamok6brH3gAAADjFdtg5e/asRo0apTvuuENjx45VaWmppMsHLs+ZMyfkBQIAALSE7bDzwx/+UG63WydPngxcWkGSJk+erHfffTekxQEAALSU7WN28vPztX37dvXu3TtoPDk5OXCBTgAAgNbC9padqqqqoC06V5w5c+aql2AAAABwku2wM3LkSL322muB+y6XSw0NDfr5z38edDZkAACA1sD2bqyf//znSk9P18GDB1VbW6t58+apuLhY586d07//+7+Ho0YAAIBms71l55vf/KaOHDmioUOHKiMjQ1VVVZo4caIKCwt1++23h6NGAACAZrO9ZUeSvF6vFi9eHDR26tQpPfnkk/rtb38bksIAAABCodknFfy6c+fOacOGDaFaHQAAQEiELOwAAAC0RoQdAABgNMIOAAAwWpMPUJ44ceJ1l1+4cKGltQAAAIRck8NObGzsDZf/4z/+Y4sLAgAACKUmh53169eHsw4AAICw4JgdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABitydfGAgDcPLfN3+p0CbYdXz7O6RKAq2LLDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmdQDrO2eBZUAABMwpYdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgtFYddrKzs+VyuYJ+vF5vYLllWcrOzlZCQoKioqKUnp6u4uJiBysGAACtTasOO5J0zz33qLS0NPBTVFQUWLZixQrl5ORo9erVOnDggLxerzIyMlRZWelgxQAAoDVp9WEnIiJCXq838NOzZ09Jl7fqrFy5UgsXLtTEiROVkpKiDRs2qLq6Whs3bnS4agAA0FpEOF3AjRw7dkwJCQnyeDwaNmyYli5dqr59+6qkpESnT59WZmZmYK7H41FaWpr279+vZ5999prr9Pv98vv9gfsVFRWSpLq6OkVERARuh4KnoxWS9bQXng5W0H9xc9F/Z7X1/ofqc9MpV+pv68+jrWpO/5s612VZVqv9V7Vt2zZVV1frjjvu0Oeff64lS5boL3/5i4qLi/XRRx9pxIgR+p//+R8lJCQEfueZZ57RiRMntH379muuNzs7W4sXL240vnHjRnXu3DkszwUAAIRWdXW1pk6dqvLycsXExFxzXqsOO19XVVWl22+/XfPmzdN9992nESNG6LPPPlN8fHxgztNPP61Tp07p3XffveZ6rrZlJzExUWfOnFFUVJR8Pp8yMjLkdrtbXHNK9rVDFxrzdLD0k8ENevFgB/kbXE6X0+7Qf2e19f4fzX7Y6RJapK6uLqSf/7CnOf2vqKhQjx49bhh2Wv1urK/q0qWL+vfvr2PHjmnChAmSpNOnTweFnbKyMsXFxV13PR6PRx6Pp9G42+0ONPirt1vCX9/2PrBaA3+Di945iP47q63235SAEKrPfzSPnf43dV6rP0D5q/x+vz788EPFx8crKSlJXq9XPp8vsLy2tlYFBQUaPny4g1UCAIDWpFVv2Zk7d67Gjx+vb3zjGyorK9OSJUtUUVGhadOmyeVyKSsrS0uXLlVycrKSk5O1dOlSde7cWVOnTnW6dAAA0Eq06rDz6aefasqUKTpz5ox69uyp++67T++//7769OkjSZo3b55qamr03HPP6fz58xo2bJjy8/MVHR3tcOUAAKC1aNVhJy8v77rLXS6XsrOzlZ2dfXMKAgAAbU6bOmYHAADALsIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIzWqi8ECgBoO26bv9XpEmw7vnyc0yXgJmDLDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYLcLpAgAAcMpt87cGbns6WloxVErJ3i5/vcvBqq7v+PJxTpfQ5rBlBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADBahNMFAACAprtt/lanS7Dt+PJxjj4+W3YAAIDRjAk7v/rVr5SUlKTIyEgNGjRI7733ntMlAQCAVsCIsPPGG28oKytLCxcuVGFhoR544AGNGTNGJ0+edLo0AADgMCPCTk5OjqZPn66nnnpKd999t1auXKnExEStWbPG6dIAAIDD2vwByrW1tTp06JDmz58fNJ6Zman9+/df9Xf8fr/8fn/gfnl5uSTp3LlzioyMVHV1tc6ePSu3293i+iK+rGrxOtqTiAZL1dUNiqjroPoGl9PltDv031n031n0P3zOnj17wzl1dXW2//5WVlZKkizLuu68Nh92zpw5o/r6esXFxQWNx8XF6fTp01f9nWXLlmnx4sWNxpOSksJSI+yZ6nQB7Rz9dxb9dxb9D48eL4V3/ZWVlYqNjb3m8jYfdq5wuYJTuGVZjcauWLBggWbPnh2439DQoHPnzunWW29VZWWlEhMTderUKcXExIS1ZjRWUVFB/x1E/51F/51F/53VnP5blqXKykolJCRcd16bDzs9evRQx44dG23FKSsra7S15wqPxyOPxxM01rVrV0n/F5piYmJ4szuI/juL/juL/juL/jvLbv+vt0XnijZ/gHKnTp00aNAg+Xy+oHGfz6fhw4c7VBUAAGgt2vyWHUmaPXu2vve972nw4MFKTU3Vq6++qpMnT+oHP/iB06UBAACHGRF2Jk+erLNnz+rHP/6xSktLlZKSonfeeUd9+vSxvS6Px6NFixY12s2Fm4P+O4v+O4v+O4v+Oyuc/XdZN/q+FgAAQBvW5o/ZAQAAuB7CDgAAMBphBwAAGI2wAwAAjEbY+Zpf/epXSkpKUmRkpAYNGqT33nvP6ZKMtHfvXo0fP14JCQlyuVzasmVL0HLLspSdna2EhARFRUUpPT1dxcXFzhRrmGXLlmnIkCGKjo5Wr169NGHCBH300UdBc+h/+KxZs0YDBgwInDgtNTVV27ZtCyyn9zfXsmXL5HK5lJWVFRjjNQif7OxsuVyuoB+v1xtYHq7eE3a+4o033lBWVpYWLlyowsJCPfDAAxozZoxOnjzpdGnGqaqq0sCBA7V69eqrLl+xYoVycnK0evVqHThwQF6vVxkZGYGLvqH5CgoKNGPGDL3//vvy+Xz68ssvlZmZqaqq/7toLf0Pn969e2v58uU6ePCgDh48qIceekjf+c53Ah/o9P7mOXDggF599VUNGDAgaJzXILzuuecelZaWBn6KiooCy8LWewsBQ4cOtX7wgx8Ejd11113W/PnzHaqofZBkbd68OXC/oaHB8nq91vLlywNjly5dsmJjY621a9c6UKHZysrKLElWQUGBZVn03wndunWzfvOb39D7m6iystJKTk62fD6flZaWZs2aNcuyLN7/4bZo0SJr4MCBV10Wzt6zZed/1dbW6tChQ8rMzAwaz8zM1P79+x2qqn0qKSnR6dOng14Lj8ejtLQ0XoswKC8vlyR1795dEv2/merr65WXl6eqqiqlpqbS+5toxowZGjdunEaPHh00zmsQfseOHVNCQoKSkpL0xBNP6JNPPpEU3t4bcQblUDhz5ozq6+sbXTw0Li6u0UVGEV5X+n211+LEiRNOlGQsy7I0e/Zs3X///UpJSZFE/2+GoqIipaam6tKlS7rlllu0efNmffOb3wx8oNP78MrLy9Of//xnHThwoNEy3v/hNWzYML322mu644479Pnnn2vJkiUaPny4iouLw9p7ws7XXLnq+RWWZTUaw83BaxF+zz//vI4cOaJ9+/Y1Wkb/w+fOO+/U4cOHdeHCBb355puaNm2aCgoKAsvpfficOnVKs2bNUn5+viIjI685j9cgPMaMGRO43b9/f6Wmpur222/Xhg0bdN9990kKT+/ZjfW/evTooY4dOzbailNWVtYoZSK8rhyZz2sRXjNnztRbb72l3bt3q3fv3oFx+h9+nTp1Ur9+/TR48GAtW7ZMAwcO1CuvvELvb4JDhw6prKxMgwYNUkREhCIiIlRQUKBf/OIXioiICPSZ1+Dm6NKli/r3769jx46F9f1P2PlfnTp10qBBg+Tz+YLGfT6fhg8f7lBV7VNSUpK8Xm/Qa1FbW6uCggJeixCwLEvPP/+8Nm3apF27dikpKSloOf2/+SzLkt/vp/c3wahRo1RUVKTDhw8HfgYPHqzvfve7Onz4sPr27ctrcBP5/X59+OGHio+PD+/7v0WHNxsmLy/Pcrvd1rp166wPPvjAysrKsrp06WIdP37c6dKMU1lZaRUWFlqFhYWWJCsnJ8cqLCy0Tpw4YVmWZS1fvtyKjY21Nm3aZBUVFVlTpkyx4uPjrYqKCocrb/v++Z//2YqNjbX27NljlZaWBn6qq6sDc+h/+CxYsMDau3evVVJSYh05csT60Y9+ZHXo0MHKz8+3LIveO+Gr38ayLF6DcJozZ461Z88e65NPPrHef/9969FHH7Wio6MDf2fD1XvCztf88pe/tPr06WN16tTJ+va3vx34Oi5Ca/fu3ZakRj/Tpk2zLOvyVxAXLVpkeb1ey+PxWCNHjrSKioqcLdoQV+u7JGv9+vWBOfQ/fJ588snAZ0zPnj2tUaNGBYKOZdF7J3w97PAahM/kyZOt+Ph4y+12WwkJCdbEiROt4uLiwPJw9d5lWZbVsm1DAAAArRfH7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgtP8PU432kRqsVh4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dev_df['word_count'] = dev_df.sentence.str.split().apply(len)\n",
    "\n",
    "_ = dev_df['word_count'].hist().set_ylabel(\"Length in words\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAHNCAYAAADWsJtQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBH0lEQVR4nO3deVxWZf7/8fetwM0imAsCKu64ZVpqmrSAC5imaWY1qanTamrmmFm2jNgUlJXZZNlUk9KkZjktaqnghhrioOWSqVnhUkKkmYogsly/P/xy/7wFlVu5gSOv5+PBw851X+ecz326vHl7zrnuYzPGGAEAAFhEtYouAAAAwBWEFwAAYCmEFwAAYCmEFwAAYCmEFwAAYCmEFwAAYCmEFwAAYCmEFwAAYCmEFwAAYCmEF1RJc+bMkc1mc/oJDAxUZGSklixZUtHlOTRp0kQjR450eb3s7GzFxMRozZo1ZV7T5SoyMlKRkZEX7Gez2TR27Fi31rJ3717ZbDbNmTPH5XXXrFkjm82mhQsXllk9RdtkPKGyILygSps9e7Y2bNig5ORkvfPOO6pevbr69++vxYsXV3RplyQ7O1tTp07llw2Ay5JHRRcAVKR27dqpc+fOjuWbb75ZtWrV0vz589W/f/8KrMxasrOz5evrW9FlAKgiOPMCnMHb21teXl7y9PR0av/jjz80evRoNWjQQF5eXmrWrJmefvpp5ebmSpJOnjypa665Ri1atNDRo0cd62VkZCg4OFiRkZEqKCiQJI0cOVI1atTQjh071LNnT/n5+SkwMFBjx45Vdnb2BWvcv3+/hg0bpnr16slut6tNmzZ69dVXVVhYKOn0JYfAwEBJ0tSpUx2XxS50+WnHjh2Kjo6Wr6+vAgMDNWbMGH355ZfFLhdERkaqXbt2Wrt2rcLDw+Xr66t77723VLVJ574EUdKlEleOlTFGb731lq6++mr5+PioVq1aGjx4sH7++edi/aZNm6bGjRvL29tbHTt21NKlSy943M/2r3/9Sy1btpTdblfbtm310UcfOb0XDw8PxcXFFVtv7dq1stls+uSTT1za348//qi//vWvCgsLk6+vrxo0aKD+/ftr+/btJfY/efKkJkyYoODgYPn4+CgiIkLffvttsX6bNm3Srbfeqtq1a8vb21vXXHONPv74Y5dqA8qdAaqg2bNnG0kmJSXF5OXlmVOnTpkDBw6YcePGmWrVqplly5Y5+ubk5Jj27dsbPz8/88orr5iEhATz7LPPGg8PD9O3b19Hvx9++MH4+/ubQYMGGWOMKSgoMD169DD16tUzBw8edPQbMWKE8fLyMo0aNTIvvPCCSUhIMDExMcbDw8P069fPqc7GjRubESNGOJYzMzNNgwYNTGBgoHn77bfNsmXLzNixY40k8/DDDxtjjDl58qRZtmyZkWTuu+8+s2HDBrNhwwbz448/nvN4HDx40NSpU8c0atTIzJkzx3z11VfmnnvuMU2aNDGSzOrVqx19IyIiTO3atU1oaKh54403zOrVq01SUlKpajPGmNWrVxfbpjHGpKWlGUlm9uzZF3WsHnjgAePp6Wkee+wxs2zZMjNv3jzTunVrExQUZDIyMhz9pkyZ4jg2S5cuNe+8845p0KCBCQ4ONhEREec8RkUkmdDQUNO2bVszf/58s2jRInPzzTcbSeaTTz5x9LvttttMo0aNTH5+vtP6d9xxh6lfv77Jy8s75z5KOhZJSUnmscceMwsXLjRJSUnms88+MwMHDjQ+Pj5m165dxY5vaGioGTBggFm8eLH58MMPTYsWLUxAQID56aefHH1XrVplvLy8zI033mgWLFhgli1bZkaOHFls3+f6fwZUFMILqqSi8HL2j91uN2+99ZZT37fffttIMh9//LFT+0svvWQkmYSEBEfbggULjCQzY8YM8/e//91Uq1bN6XVjTv9ClmRef/11p/YXXnjBSDLr1693tJ0dXp588kkjyWzcuNFp3YcfftjYbDaze/duY4wxv//+u5FkpkyZUqrj8fjjjxubzWZ27Njh1N67d+8Sw4sks3LlSqe+pa3N1fBSmmO1YcMGI8m8+uqrTv0OHDhgfHx8zKRJk4wxxhw5csR4e3ub2267zanf119/bSSVOrz4+Pg4BaL8/HzTunVr06JFC0db0fv87LPPHG2//vqr8fDwMFOnTj3vPko6FmfLz883p06dMmFhYeZvf/tbsf127NjRFBYWOtr37t1rPD09zf333+9oa926tbnmmmuKBal+/fqZkJAQU1BQ4LRNwgsqCy4boUr74IMPlJqaqtTUVC1dulQjRozQmDFjNHPmTEefVatWyc/PT4MHD3Zat+gyzMqVKx1td955px5++GE9/vjjev755/XUU08pKiqqxH0PHTrUaXnIkCGSpNWrV5+z3lWrVqlt27bq0qVLsVqMMVq1atWF33QJkpKS1K5dO7Vt29ap/e677y6xf61atdSjR49yqU268LFasmSJbDabhg0bpvz8fMdPcHCwOnTo4LhEtWHDBp08ebLY9sLDw9W4ceNS19OzZ08FBQU5lqtXr6677rpLP/74o3755RdJpy+vdejQQW+++aaj39tvvy2bzaYHH3yw9G/+/+Tn5ys2NlZt27aVl5eXPDw85OXlpT179mjnzp3F+g8ZMkQ2m82x3LhxY4WHhzuO2Y8//qhdu3Y5jsWZx61v375KT0/X7t27Xa4TKA+EF1Rpbdq0UefOndW5c2fdfPPN+te//qXo6GhNmjRJf/75pyTp8OHDCg4OdvpFIEn16tWTh4eHDh8+7NR+7733Ki8vTx4eHho3blyJ+/Xw8FCdOnWc2oKDgx37O5fDhw8rJCSkWHv9+vUvuO75HD582OmXcZGS2iSVWIO7aivNsfrtt99kjFFQUJA8PT2dflJSUnTo0CGn/kXrl7TN0jjf+me+z3HjxmnlypXavXu38vLy9O6772rw4MEu7avIhAkT9Oyzz2rgwIFavHixNm7cqNTUVHXo0EE5OTmlrvHMYyZJEydOLHbMRo8eLUmO4wZUNsw2As7Svn17LV++XD/88IO6dOmiOnXqaOPGjTLGOAWYzMxM5efnq27duo62EydO6J577lHLli3122+/6f7779cXX3xRbB/5+fk6fPiw0y/ljIwMSSr2i/pMderUUXp6erH2gwcPSpJTLa6oU6eO45fZmYpqOtvZQc6V2ry9vSXJcbNzkXP9oizNsapbt65sNpvWrVsnu91ebBtFbUX9S3pfGRkZatKkSYk1lNT3XG1n1jlkyBA98cQTevPNN3XdddcpIyNDY8aMKdU+zvbhhx9q+PDhio2NdWo/dOiQrrjiilLXeOYxk6TJkydr0KBBJe6zVatWF1Ur4G6ceQHOsmXLFklyzNjp2bOnsrKy9Pnnnzv1++CDDxyvFxk1apT279+vTz/9VP/+97+1aNEivfbaayXuZ+7cuU7L8+bNk6TzflFaz5499f333+ubb74pVovNZlP37t0l/f9f1iX9i7wkERER+u677/T99987tZ85g+ZCSltbUUDYtm2bU79Fixadc9sXOlb9+vWTMUa//vqr40zamT9XXXWVJOm6666Tt7d3se0lJydr3759pX6vK1eudAp7BQUFWrBggZo3b66GDRs62r29vfXggw8qPj5e06dP19VXX63rr7++1Ps5k81mKxbMvvzyS/36668l9p8/f76MMY7lffv2KTk52XHMWrVqpbCwMG3durXEY9a5c2f5+/tfVK2A21XkDTdARSm6YXf27NmO2ThLliwx9957r5HkdENn0Wwjf39/M336dJOYmGimTJliPD09nWYbvfvuu8Vushw7dqzx9PR0uon1fDNo+vTp41TnuWYbBQcHm3feeccsX77cjBs3zthsNjN69Ohi67Zq1cosX77cpKammrS0tHMej19//dVpttHSpUvNPffcYxo3bmwkmaSkJEffiIgIc+WVVxbbhiu19erVy9SqVcu8++67JiEhwTzxxBMmLCzMpdlGZx+rBx980Pj6+prHH3/cLF682KxatcrMnTvXPPzww043YT/zzDOO2UbLli0z7777bpnNNvroo4+K9f/ll1+Mh4eHkWTee++9C27fmJJv2B0+fLix2+3mtddeMytXrjTTpk0zgYGBpmHDhk51nz3baMmSJWbu3LmmRYsWxt/f32nW2apVq4zdbjfR0dFm3rx5jllMsbGxZvDgwcW2yQ27qCwIL6iSSpptVLNmTXP11Veb6dOnm5MnTzr1P3z4sBk1apQJCQkxHh4epnHjxmby5MmOftu2bTM+Pj5OQcOY09OWO3XqZJo0aWKOHDlijDn9C9nPz89s27bNREZGGh8fH1O7dm3z8MMPm6ysLKf1zw4vxhizb98+M2TIEFOnTh3j6elpWrVqZV5++WXHzJAiK1asMNdcc42x2+1GUrHtnO27774zvXr1Mt7e3qZ27drmvvvuM/Hx8UaS2bp1q6PfucKLK7Wlp6ebwYMHm9q1a5uaNWuaYcOGmU2bNpUYXkp7rIwx5v333zddu3Y1fn5+xsfHxzRv3twMHz7cbNq0ydGnsLDQxMXFmdDQUOPl5WXat29vFi9ebCIiIkodXsaMGWPeeust07x5c+Pp6Wlat25t5s6de851IiMjTe3atU12dvYFt29MyeHlyJEj5r777jP16tUzvr6+5oYbbjDr1q0rVndR0PjPf/5jxo0bZwIDA43dbjc33nij03EosnXrVnPnnXeaevXqGU9PTxMcHGx69Ohh3n777WLbJLygsrAZc8Z5RQBuN3LkSC1cuFBZWVkVXcoFPfjgg5o/f74OHz4sLy+vct+/lY7VuWRmZqpx48Z65JFHNG3atIouB7gscMMuAEnSc889p/r166tZs2bKysrSkiVL9N577+mZZ56pkOBidb/88ot+/vlnvfzyy6pWrZoeffTRii4JuGwQXgBIkjw9PfXyyy/rl19+UX5+vsLCwjR9+nR+6V6k9957T88995yaNGmiuXPnqkGDBhVdEnDZ4LIRAACwFKZKAwAASyG8AAAASyG8AHC7vXv3ymazac6cORVdSpmKjY0t9uWFANyP8AIAF4nwAlQMwguAMpGdnV3RJQCoIggvwGVox44dstls+uSTTxxtmzdvls1m05VXXunU99Zbb1WnTp0kSYWFhZo2bZpat24tu92uevXqafjw4frll1+c1omMjFS7du20du1ahYeHy9fXV/fee6+k0w9ivPPOO+Xv76+aNWvqrrvuOucDHi/kzz//1GOPPaZmzZo56unbt6927drl6PPHH39o9OjRatCggby8vNSsWTM9/fTTTg9+PN9lK5vNppiYGMdyTEyMbDabduzYobvvvls1a9ZUUFCQ7r33Xh09etRpvRMnTig+Pl42m002m+28z6UCUHb4nhfgMnTllVcqJCREK1as0B133CFJWrFihXx8fPT999/r4MGDql+/vvLz85WUlKRRo0ZJkh5++GG98847Gjt2rPr166e9e/fq2Wef1Zo1a/TNN984PbU6PT1dw4YN06RJkxQbG6tq1aopJydHvXr10sGDBxUXF6eWLVvqyy+/1F133eXyezh+/LhuuOEG7d27V0888YS6du2qrKwsrV27Vunp6WrdurVOnjyp7t2766efftLUqVPVvn17rVu3TnFxcdqyZYu+/PLLiz6Gt99+u+666y7dd9992r59uyZPnixJev/99yVJGzZsUI8ePdS9e3c9++yzkqSAgICL3h8AF1Ts0wkAuMuwYcNMs2bNHMu9evUyDzzwgKlVq5aJj483xhjz9ddfG0kmISHB7Ny500gq9hDFjRs3GknmqaeecrRFREQYSWblypVOfWfNmmUkmS+++MKp/YEHHij2rJ4Lee6554wkk5iYeM4+b7/9tpFkPv74Y6f2l156yfG+jCn5WUFFJJkpU6Y4lqdMmWIkmWnTpjn1Gz16tPH29jaFhYWONj8/vws+MwpA2eOyEXCZ6tmzp37++WelpaXp5MmT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Ok7ZL1++XJ07d5bdbte6dev0008/acCAAQoKClKNGjV07bXXasWKFeVwJFAZRUZGauzYsRo7dqyuuOIK1alTR88884zjacVHjhzR8OHDVatWLfn6+qpPnz7as2ePY/19+/apf//+qlWrlvz8/HTllVfqq6++kuR82WjNmjX661//qqNHjzrGadHfgzMvG9199936y1/+4lRjXl6e6tatq9mzZ0s6HcSnTZumZs2aycfHRx06dNDChQvdfKSsi/BSgeLj4+Xn56eNGzdq2rRpeu6555SYmChjjG655RZlZGToq6++0ubNm9WxY0f17NlTf/zxhyRp7ty5euGFF/TSSy9p8+bNatSokWbNmuW0/ePHj2vEiBFat26dUlJSFBYWpr59+zqe3J2amipJmj17ttLT0x3LZ+rVq5euuOIK/fe//3W0FRQU6OOPP9bQoUMlSdu3b1fv3r01aNAgbdu2TQsWLND69es1duxYtxw3VA6XMn4v5PXXX1e3bt30wAMPKD09Xenp6U5Pmp80aZLi4uK0c+dOtW/fXllZWerbt69WrFihb7/9Vr1791b//v21f/9+d719VHLx8fHy8PDQxo0b9c9//lOvvfaa3nvvPUmnw/GmTZu0aNEibdiwQcYY9e3bV3l5eZKkMWPGKDc3V2vXrtX27dv10ksvlXg2Ojw8XDNmzFBAQIBjnE6cOLFYv6FDh2rRokXKyspytC1fvlwnTpzQ7bffLkl65plnNHv2bM2aNUs7duzQ3/72Nw0bNkxJSUnuODzWZ1AhIiIizA033ODUdu2115onnnjCrFy50gQEBJiTJ086vd68eXPzr3/9yxhjTNeuXc2YMWOcXr/++utNhw4dzrnP/Px84+/vbxYvXuxok2Q+++wzp35Tpkxx2s64ceNMjx49HMvLly83Xl5e5o8//jDGGHPPPfeYBx980Gkb69atM9WqVTM5OTnnrAfWdanjd8SIEWbAgAFOrz/66KMmIiLCaR+PPvqoU5/Vq1cbSebzzz+/YI1t27Y1b7zxhmO5cePG5rXXXrvwm4PlRUREmDZt2pjCwkJH2xNPPGHatGljfvjhByPJfP31147XDh06ZHx8fMzHH39sjDHmqquuMjExMSVuu2gMHjlyxBhjzOzZs03NmjWL9TtzvJ06dcrUrVvXfPDBB47X7777bnPHHXcYY4zJysoy3t7eJjk52Wkb9913n7n77rtdfv9VAWdeKlD79u2dlkNCQpSZmanNmzcrKytLderUcdx/UqNGDaWlpemnn36SJO3evVtdunRxWv/s5czMTI0aNUotW7ZUzZo1VbNmTWVlZbn8r9GhQ4dqzZo1OnjwoKTTZ3369u2rWrVqSZI2b96sOXPmONXau3dvFRYWKi0tzaV9wTouZfxeqs6dOzstnzhxQpMmTVLbtm11xRVXqEaNGtq1axdnXqqw6667TjabzbHcrVs37dmzR99//708PDzUtWtXx2t16tRRq1attHPnTkmnL4s///zzuv766zVlyhRt27btkmrx9PTUHXfcoblz50o6PV6/+OILx9nr77//XidPnlRUVJTT35kPPvigzP7OXG64y60CeXp6Oi3bbDYVFhaqsLBQISEhWrNmTbF1zryr/cy/mJIc13OLjBw5Ur///rtmzJihxo0by263q1u3bjp16pRLdXbp0kXNmzfXRx99pIcfflifffaZ4zqtJBUWFuqhhx7SuHHjiq3bqFEjl/YF67iU8VutWrVi47XolH1p+Pn5OS0//vjjWr58uV555RW1aNFCPj4+Gjx4sMtjHVWXMcbxmXr//ferd+/e+vLLL5WQkKC4uDi9+uqreuSRRy56+0OHDlVERIQyMzOVmJgob29v9enTR9Lpz1BJ+vLLL9WgQQOn9Xh2UskIL5VQx44dlZGRIQ8PD8dNtGdr1aqV/ve//+mee+5xtG3atMmpz7p16/TWW2+pb9++kqQDBw7o0KFDTn08PT1VUFBwwZqGDBmiuXPnqmHDhqpWrZpuueUWp3p37NihFi1alPYt4jJWmvEbGBio7777zqlty5YtToHIy8urVGNTOj3WR44cqdtuu02SlJWVpb17915U/bg8pKSkFFsOCwtT27ZtlZ+fr40bNyo8PFySdPjwYf3www9q06aNo39oaKhGjRqlUaNGafLkyXr33XdLDC+lHafh4eEKDQ3VggULtHTpUt1xxx3y8vKSJLVt21Z2u1379+93mgiBc+OyUSXUq1cvdevWTQMHDtTy5cu1d+9eJScn65lnnnEElEceeUT//ve/FR8frz179uj555/Xtm3bnM7GtGjRQv/5z3+0c+dObdy4UUOHDpWPj4/Tvpo0aaKVK1cqIyNDR44cOWdNQ4cO1TfffKMXXnhBgwcPlre3t+O1J554Qhs2bNCYMWO0ZcsW7dmzR4sWLbqkf6XAukozfnv06KFNmzbpgw8+0J49ezRlypRiYaZJkybauHGj9u7dq0OHDjn+dVqSFi1a6NNPP9WWLVu0detWDRky5Lz9cfk7cOCAJkyYoN27d2v+/Pl644039OijjyosLEwDBgzQAw88oPXr12vr1q0aNmyYGjRooAEDBkg6PfNt+fLlSktL0zfffKNVq1Y5BZszNWnSRFlZWVq5cqUOHTqk7OzsEvvZbDYNGTJEb7/9thITEzVs2DDHa/7+/po4caL+9re/KT4+Xj/99JO+/fZbvfnmm4qPjy/7g3MZILxUQjabTV999ZVuuukm3XvvvWrZsqX+8pe/aO/evQoKCpJ0OkxMnjxZEydOVMeOHZWWlqaRI0c6hYr3339fR44c0TXXXKN77rlH48aNU7169Zz29eqrryoxMVGhoaG65pprzllTWFiYrr32Wm3bts1xnbZI+/btlZSUpD179ujGG2/UNddco2effVYhISFleFRgFaUZv71799azzz6rSZMm6dprr9Xx48c1fPhwp+1MnDhR1atXV9u2bRUYGHje+1dee+011apVS+Hh4erfv7969+6tjh07uvV9onIbPny4cnJy1KVLF40ZM0aPPPKI40vjZs+erU6dOqlfv37q1q2bjDH66quvHGf+CgoKNGbMGLVp00Y333yzWrVqpbfeeqvE/YSHh2vUqFG66667FBgYqGnTpp2zpqFDh+r7779XgwYNdP311zu99o9//EN///vfFRcXpzZt2qh3795avHixmjZtWkZH5PJiM2dfeIZlRUVFKTg4WP/5z38quhQAqDCRkZG6+uqr+Xr+yxj3vFhUdna23n77bfXu3VvVq1fX/PnztWLFCiUmJlZ0aQAAuBXhxaKKTs0///zzys3NVatWrfTf//5XvXr1qujSAABwKy4bAQAAS+GGXQAAYCmEFwAAYCmEFwAAYCmEFwAAYCmEFwAAYCmEFwBlLjIyUuPHjy9V3zVr1shms+nPP/+8pH02adKELyUDqgjCCwAAsBTCCwAAsBTCCwC3+vDDD9W5c2f5+/srODhYQ4YMUWZmZrF+X3/9tTp06CBvb2917dpV27dvd3o9OTlZN910k3x8fBQaGqpx48bpxIkT5fU2AFQihBcAbnXq1Cn94x//0NatW/X55587noB+tscff1yvvPKKUlNTVa9ePd16663Ky8uTJG3fvl29e/fWoEGDtG3bNi1YsEDr16/X2LFjy/ndAKgMeLYRALe69957Hf/drFkz/fOf/1SXLl2UlZWlGjVqOF6bMmWKoqKiJEnx8fFq2LChPvvsM9155516+eWXNWTIEMdNwGFhYfrnP/+piIgIzZo1S97e3uX6ngBULM68AHCrb7/9VgMGDFDjxo3l7++vyMhISdL+/fud+nXr1s3x37Vr11arVq20c+dOSdLmzZs1Z84c1ahRw/HTu3dvFRYWKi0trdzeC4DKgTMvANzmxIkTio6OVnR0tD788EMFBgZq//796t27t06dOnXB9W02mySpsLBQDz30kMaNG1esT6NGjcq8bgCVG+EFgNvs2rVLhw4d0osvvqjQ0FBJ0qZNm0rsm5KS4ggiR44c0Q8//KDWrVtLkjp27KgdO3aoRYsW5VM4gEqNy0YA3KZRo0by8vLSG2+8oZ9//lmLFi3SP/7xjxL7Pvfcc1q5cqW+++47jRw5UnXr1tXAgQMlSU888YQ2bNigMWPGaMuWLdqzZ48WLVqkRx55pBzfDYDKgvACwG0CAwM1Z84cffLJJ2rbtq1efPFFvfLKKyX2ffHFF/Xoo4+qU6dOSk9P16JFi+Tl5SVJat++vZKSkrRnzx7deOONuuaaa/Tss88qJCSkPN8OgErCZowxFV0EAABAaXHmBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWMr/A3WXh6akh6rLAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = dev_df.boxplot(\"word_count\", by=\"label\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tokenization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The SST began as a collection of sentences from [Rotten Tomatoes](https://www.rottentomatoes.com/) that were released as a corpus by [Pang and Lee 2004](https://doi.org/10.3115/1218955.1218990). The data were parsed as part of the SST project, and we are now releasing them in a flat format similar to what one sees in benchmarks like [GLUE](https://gluebenchmark.com). Along this journey, the sentences have acquired a tokenization scheme that is reminiscent of what one sees in standard [Penn Treenbank](https://catalog.ldc.upenn.edu/docs/LDC95T7/cl93.html) formats, with some additional quirks. This makes the tokens different in sigificant respects from what one sees in most standard English texts:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"The Rock is destined to be the 21st Century 's new `` Conan '' and that he 's going to make a splash even greater than Arnold Schwarzenegger , Jean-Claud Van Damme or Steven Segal .\""
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex = train_df.iloc[0].sentence\n",
    "\n",
    "ex"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One can address some of this using the NLTK `TreebankWordDetokenizer`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "detokenizer = TreebankWordDetokenizer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "def detokenize(s):\n",
    "    return detokenizer.detokenize(s.split())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'The Rock is destined to be the 21st Century\\'s new \"Conan\" and that he\\'s going to make a splash even greater than Arnold Schwarzenegger, Jean-Claud Van Damme or Steven Segal.'"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "detokenize(ex)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, there is additional clean-up one could do, but this is a start."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Another option would be to go in the reverse – for outside data, one could try to bring it into the SST format:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "tokenizer = TreebankWordTokenizer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "def treebank_tokenize(s):\n",
    "    return tokenizer.tokenize(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['The',\n",
       " 'Rock',\n",
       " 'is',\n",
       " \"n't\",\n",
       " 'the',\n",
       " 'new',\n",
       " '``',\n",
       " 'Conan',\n",
       " \"''\",\n",
       " '–',\n",
       " 'he',\n",
       " \"'s\",\n",
       " 'this',\n",
       " 'generation',\n",
       " \"'s\",\n",
       " 'Olivier',\n",
       " '!']"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "treebank_tokenize(\"The Rock isn't the new ``Conan'' – he's this generation's Olivier!\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  },
  "widgets": {
   "state": {},
   "version": "1.1.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
