diff --git "a/notebooks/HMM and CRF.ipynb" "b/notebooks/HMM and CRF.ipynb"
new file mode 100644--- /dev/null
+++ "b/notebooks/HMM and CRF.ipynb"
@@ -0,0 +1,948 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Toxic Spans Detection"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "\n",
+ "import ast\n",
+ "from termcolor import colored\n",
+ "import string\n",
+ "\n",
+ "from nltk import pos_tag\n",
+ "from nltk.corpus import treebank\n",
+ "from nltk.tag import HiddenMarkovModelTrainer\n",
+ "from nltk.tokenize import word_tokenize\n",
+ "\n",
+ "import pycrfsuite\n",
+ "\n",
+ "from sklearn.metrics import classification_report, confusion_matrix\n",
+ "from sklearn.preprocessing import LabelBinarizer\n",
+ "\n",
+ "from IPython.display import clear_output\n",
+ "from itertools import chain\n",
+ "from tqdm import trange, tqdm\n",
+ "\n",
+ "import string\n",
+ "from utils.processing import color_toxic_words, remove_symbols, completely_toxic, separate_words, get_index_toxic_words, f1\n",
+ "from utils.basic_models import word2features, sent2features, sent2labels, sent2tokens, token_postag_label\n",
+ "\n",
+ "sns.set_style('darkgrid')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Resumen\n",
+ "\n",
+ "1. Quitando símbolos tóxicos (\", espacios, !, etc) tenemos los siguientes resultados:\n",
+ " - Hidden Markov Model: 0.321\n",
+ " - Conditional Random Fields: 0.551\n",
+ " - LSTM: 0.561 `(EMBEDDING_DIM = 32, HIDDEN_DIM = 32, EPOCHS = 10)`\n",
+ "2. Quitando símbolos tóxicos (\", espacios, !, etc) y agregando como completamente tóxicos todos los que no tienen índices (los que viene como [ ]):\n",
+ " - Hidden Markov Model: 0.299\n",
+ " - Conditional Random Fields: 0.546\n",
+ " - LSTM: 0.556 `(EMBEDDING_DIM = 32, HIDDEN_DIM = 32, EPOCHS = 10)`\n",
+ " \n",
+ "3. Sin quitar símbolos tóxicos (\", espacios, !, etc), es decir, dataset original:\n",
+ " - Hidden Markov Model: 0.367\n",
+ " - Conditional Random Fields: 0.501\n",
+ " - LSTM: 0.535 `(EMBEDDING_DIM = 32, HIDDEN_DIM = 32, EPOCHS = 10)`\n",
+ " \n",
+ "4. Sin quitar símbolos tóxicos (\", espacios, !, etc) y agregando como completamente tóxicos todos los que no tienen índices (los que viene como [ ]):\n",
+ " - Hidden Markov Model: 0.367\n",
+ " - Conditional Random Fields: 0.501\n",
+ " - LSTM: 0.535 `(EMBEDDING_DIM = 32, HIDDEN_DIM = 32, EPOCHS = 10)`\n",
+ " \n",
+ "Para la LSTM lo mejor parece ser la opción 1. Lo mejor hasta ahora es con `(EMBEDDING_DIM = 20 HIDDEN_DIM = 20 EPOCHS = 25)` (0.581)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "- [1. Exploración](#1)\n",
+ " - [1.1 Mal etiquetados](#1.1)\n",
+ "- [2. Preprocesamiento](#2)\n",
+ "- [3. Modelos](#3)\n",
+ " - [3.1 Hidden Markov Model](#3.1)\n",
+ " - [3.2 Conditional Random Fields for Sequence Prediction](#3.2)\n",
+ " - [3.3 LSTM](#3.3)\n",
+ "- [4. Evaluation](#4)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "# Exploración"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "train = pd.read_csv('../data/tsd_train.csv', converters={'spans':ast.literal_eval})\n",
+ "test = pd.read_csv('../data/tsd_trial.csv', converters={'spans':ast.literal_eval})"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " spans | \n",
+ " text | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,... | \n",
+ " Another violent and aggressive immigrant killi... | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " [33, 34, 35, 36, 37, 38, 39] | \n",
+ " I am 56 years old, I am not your fucking junio... | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " [0, 1, 2, 3] | \n",
+ " Damn, a whole family. Sad indeed. | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] | \n",
+ " What a knucklehead. How can anyone not know th... | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " [32, 33, 34, 35, 36, 37, 38] | \n",
+ " \"who do you think should do the killing?\"\\n\\nA... | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " spans \\\n",
+ "0 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,... \n",
+ "1 [33, 34, 35, 36, 37, 38, 39] \n",
+ "2 [0, 1, 2, 3] \n",
+ "3 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] \n",
+ "4 [32, 33, 34, 35, 36, 37, 38] \n",
+ "\n",
+ " text \n",
+ "0 Another violent and aggressive immigrant killi... \n",
+ "1 I am 56 years old, I am not your fucking junio... \n",
+ "2 Damn, a whole family. Sad indeed. \n",
+ "3 What a knucklehead. How can anyone not know th... \n",
+ "4 \"who do you think should do the killing?\"\\n\\nA... "
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "train.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Veamos las secciones tóxicas de algunas oraciones:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0 - A\u001b[0mn\u001b[0mo\u001b[0mt\u001b[0mh\u001b[0me\u001b[0mr\u001b[0m \u001b[0m\u001b[41mv\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41ml\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mg\u001b[0m\u001b[41mg\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mm\u001b[0m\u001b[41mm\u001b[0m\u001b[41mi\u001b[0m\u001b[41mg\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m \u001b[0mk\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0ma\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mn\u001b[0mo\u001b[0mc\u001b[0me\u001b[0mn\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mt\u001b[0me\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0mg\u001b[0me\u001b[0mn\u001b[0mt\u001b[0m \u001b[0mU\u001b[0mS\u001b[0m \u001b[0mC\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0mz\u001b[0me\u001b[0mn\u001b[0m.\u001b[0m.\u001b[0m.\u001b[0m.\u001b[0m \u001b[0mS\u001b[0ma\u001b[0mr\u001b[0mc\u001b[0ma\u001b[0ms\u001b[0mm\u001b[0m\n",
+ "\n",
+ "\n",
+ "1 - I\u001b[0m \u001b[0ma\u001b[0mm\u001b[0m \u001b[0m5\u001b[0m6\u001b[0m \u001b[0my\u001b[0me\u001b[0ma\u001b[0mr\u001b[0ms\u001b[0m \u001b[0mo\u001b[0ml\u001b[0md\u001b[0m,\u001b[0m \u001b[0mI\u001b[0m \u001b[0ma\u001b[0mm\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0m\u001b[41mf\u001b[0m\u001b[41mu\u001b[0m\u001b[41mc\u001b[0m\u001b[41mk\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m \u001b[0mj\u001b[0mu\u001b[0mn\u001b[0mi\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mp\u001b[0ma\u001b[0ml\u001b[0m.\u001b[0m \u001b[0mW\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0ms\u001b[0ma\u001b[0my\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mk\u001b[0me\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0m \u001b[0ms\u001b[0me\u001b[0mn\u001b[0ms\u001b[0me\u001b[0m.\u001b[0m \u001b[0mI\u001b[0m \u001b[0md\u001b[0mo\u001b[0mn\u001b[0m'\u001b[0mt\u001b[0m \u001b[0mk\u001b[0mn\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mw\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0mb\u001b[0ma\u001b[0ms\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mo\u001b[0mn\u001b[0m.\u001b[0m \u001b[0mT\u001b[0mh\u001b[0me\u001b[0m \u001b[0mc\u001b[0mh\u001b[0me\u001b[0ma\u001b[0mp\u001b[0m \u001b[0mb\u001b[0ml\u001b[0ma\u001b[0mc\u001b[0mk\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mk\u001b[0me\u001b[0mt\u001b[0m \u001b[0mc\u001b[0mr\u001b[0ma\u001b[0mp\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mu\u001b[0mp\u001b[0m \u001b[0mf\u001b[0mr\u001b[0mo\u001b[0mm\u001b[0m \u001b[0mM\u001b[0me\u001b[0mx\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0ms\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mo\u001b[0md\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mu\u001b[0mf\u001b[0mf\u001b[0m \u001b[0mf\u001b[0mr\u001b[0mo\u001b[0mm\u001b[0m \u001b[0mB\u001b[0mC\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mH\u001b[0mu\u001b[0mm\u001b[0mb\u001b[0mo\u001b[0ml\u001b[0mt\u001b[0m.\u001b[0m \u001b[0m \u001b[0mT\u001b[0mh\u001b[0me\u001b[0m \u001b[0mI\u001b[0m5\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mr\u001b[0mr\u001b[0mi\u001b[0md\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mj\u001b[0mu\u001b[0ms\u001b[0mt\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0mb\u001b[0mu\u001b[0ms\u001b[0my\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mk\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0ma\u001b[0m \u001b[0mt\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mn\u001b[0me\u001b[0my\u001b[0m.\u001b[0m \u001b[0mN\u001b[0mo\u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mh\u001b[0ma\u001b[0ms\u001b[0m \u001b[0mr\u001b[0me\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0my\u001b[0m \u001b[0mc\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0mg\u001b[0me\u001b[0md\u001b[0m \u001b[0me\u001b[0mx\u001b[0mc\u001b[0me\u001b[0mp\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ml\u001b[0me\u001b[0mg\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mk\u001b[0me\u001b[0mt\u001b[0m \u001b[0mh\u001b[0ma\u001b[0ms\u001b[0m \u001b[0mm\u001b[0ma\u001b[0md\u001b[0me\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m \u001b[0me\u001b[0ma\u001b[0ms\u001b[0my\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0ml\u001b[0me\u001b[0mg\u001b[0ma\u001b[0ml\u001b[0m \u001b[0ma\u001b[0mg\u001b[0me\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m.\u001b[0m \u001b[0m \u001b[0mA\u001b[0mn\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ml\u001b[0me\u001b[0mg\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mk\u001b[0me\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0mt\u001b[0mr\u001b[0mo\u001b[0ml\u001b[0ml\u001b[0me\u001b[0md\u001b[0m \u001b[0mb\u001b[0my\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mr\u001b[0mp\u001b[0mo\u001b[0mr\u001b[0ma\u001b[0mt\u001b[0me\u001b[0m \u001b[0mg\u001b[0mr\u001b[0mo\u001b[0mw\u001b[0me\u001b[0mr\u001b[0ms\u001b[0m \u001b[0mw\u001b[0mi\u001b[0mt\u001b[0mh\u001b[0m \u001b[0mm\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m \u001b[0md\u001b[0mo\u001b[0ml\u001b[0ml\u001b[0ma\u001b[0mr\u001b[0m \u001b[0mf\u001b[0ma\u001b[0mc\u001b[0mi\u001b[0ml\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0me\u001b[0ms\u001b[0m,\u001b[0m \u001b[0mo\u001b[0mr\u001b[0m \u001b[0ma\u001b[0m \u001b[0mc\u001b[0mo\u001b[0m-\u001b[0mo\u001b[0mp\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0me\u001b[0mr\u001b[0m \u001b[0mg\u001b[0mr\u001b[0mo\u001b[0mw\u001b[0me\u001b[0mr\u001b[0ms\u001b[0m.\u001b[0m \u001b[0mT\u001b[0mh\u001b[0me\u001b[0m \u001b[0mF\u001b[0me\u001b[0md\u001b[0me\u001b[0mr\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mv\u001b[0me\u001b[0mr\u001b[0mn\u001b[0mm\u001b[0me\u001b[0mn\u001b[0mt\u001b[0m \u001b[0m\"\u001b[0mw\u001b[0ma\u001b[0mr\u001b[0m \u001b[0mo\u001b[0mn\u001b[0m \u001b[0md\u001b[0mr\u001b[0mu\u001b[0mg\u001b[0ms\u001b[0m\"\u001b[0m \u001b[0mr\u001b[0me\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0my\u001b[0m \u001b[0mh\u001b[0ma\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0m \u001b[0mi\u001b[0mm\u001b[0mp\u001b[0ma\u001b[0mc\u001b[0mt\u001b[0m \u001b[0mo\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ml\u001b[0me\u001b[0mg\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mk\u001b[0me\u001b[0mt\u001b[0m \u001b[0mi\u001b[0mn\u001b[0m \u001b[0mO\u001b[0mr\u001b[0me\u001b[0mg\u001b[0mo\u001b[0mn\u001b[0m.\u001b[0m \u001b[0mI\u001b[0m \u001b[0md\u001b[0mo\u001b[0mn\u001b[0m'\u001b[0mt\u001b[0m \u001b[0ms\u001b[0me\u001b[0me\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0m \u001b[0mg\u001b[0ml\u001b[0mu\u001b[0mt\u001b[0mt\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0mw\u001b[0me\u001b[0me\u001b[0md\u001b[0m,\u001b[0m \u001b[0mw\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0me\u001b[0mv\u001b[0me\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mm\u001b[0me\u001b[0ma\u001b[0mn\u001b[0ms\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "2 - \u001b[41mD\u001b[0m\u001b[41ma\u001b[0m\u001b[41mm\u001b[0m\u001b[41mn\u001b[0m,\u001b[0m \u001b[0ma\u001b[0m \u001b[0mw\u001b[0mh\u001b[0mo\u001b[0ml\u001b[0me\u001b[0m \u001b[0mf\u001b[0ma\u001b[0mm\u001b[0mi\u001b[0ml\u001b[0my\u001b[0m.\u001b[0m \u001b[0mS\u001b[0ma\u001b[0md\u001b[0m \u001b[0mi\u001b[0mn\u001b[0md\u001b[0me\u001b[0me\u001b[0md\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "3 - W\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0ma\u001b[0m \u001b[0m\u001b[41mk\u001b[0m\u001b[41mn\u001b[0m\u001b[41mu\u001b[0m\u001b[41mc\u001b[0m\u001b[41mk\u001b[0m\u001b[41ml\u001b[0m\u001b[41me\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41ma\u001b[0m\u001b[41md\u001b[0m.\u001b[0m \u001b[0mH\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mk\u001b[0mn\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0mb\u001b[0me\u001b[0m \u001b[0mo\u001b[0mf\u001b[0mf\u001b[0me\u001b[0mn\u001b[0ms\u001b[0mi\u001b[0mv\u001b[0me\u001b[0m?\u001b[0m?\u001b[0m\n",
+ "\n",
+ "\n",
+ "4 - \"\u001b[0mw\u001b[0mh\u001b[0mo\u001b[0m \u001b[0md\u001b[0mo\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mk\u001b[0m \u001b[0ms\u001b[0mh\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0md\u001b[0mo\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0m\u001b[41mk\u001b[0m\u001b[41mi\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m?\u001b[0m\"\u001b[0m\n",
+ "\u001b[0m\n",
+ "\u001b[0mA\u001b[0mn\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0me\u001b[0mv\u001b[0me\u001b[0mr\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m.\u001b[0m \u001b[0mT\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0ma\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mm\u001b[0mu\u001b[0mn\u001b[0mi\u001b[0mt\u001b[0my\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mb\u001b[0ml\u001b[0me\u001b[0mm\u001b[0m,\u001b[0m \u001b[0ms\u001b[0mo\u001b[0m \u001b[0me\u001b[0mv\u001b[0me\u001b[0mr\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0mw\u001b[0mh\u001b[0mo\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0me\u001b[0m \u001b[0mp\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ms\u001b[0mo\u001b[0ml\u001b[0mu\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m \u001b[0ms\u001b[0mh\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0mb\u001b[0me\u001b[0m \u001b[0ma\u001b[0ml\u001b[0ml\u001b[0mo\u001b[0mw\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mh\u001b[0me\u001b[0ml\u001b[0mp\u001b[0m.\u001b[0m \u001b[0mA\u001b[0ms\u001b[0m \u001b[0mI\u001b[0m \u001b[0ms\u001b[0ma\u001b[0mi\u001b[0md\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mv\u001b[0me\u001b[0m:\u001b[0m \u001b[0mr\u001b[0me\u001b[0mm\u001b[0mo\u001b[0mv\u001b[0me\u001b[0m \u001b[0ma\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mt\u001b[0me\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0ms\u001b[0m \u001b[0mo\u001b[0mn\u001b[0m \u001b[0mf\u001b[0mr\u001b[0me\u001b[0me\u001b[0m \u001b[0mr\u001b[0ma\u001b[0mn\u001b[0mg\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mt\u001b[0ms\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ma\u001b[0ml\u001b[0ml\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mh\u001b[0me\u001b[0ml\u001b[0mp\u001b[0m.\u001b[0m \u001b[0mP\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0mw\u001b[0mh\u001b[0mo\u001b[0m \u001b[0ma\u001b[0ml\u001b[0ml\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mi\u001b[0mr\u001b[0m \u001b[0mp\u001b[0me\u001b[0mt\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mr\u001b[0mo\u001b[0ma\u001b[0mm\u001b[0m \u001b[0mo\u001b[0mu\u001b[0mt\u001b[0ms\u001b[0mi\u001b[0md\u001b[0me\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0mp\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mb\u001b[0ml\u001b[0me\u001b[0mm\u001b[0m,\u001b[0m \u001b[0mb\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mi\u001b[0mr\u001b[0m \u001b[0mp\u001b[0me\u001b[0mt\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0mp\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mb\u001b[0ml\u001b[0me\u001b[0mm\u001b[0m.\u001b[0m \u001b[0mI\u001b[0mt\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0mb\u001b[0me\u001b[0m \u001b[0mv\u001b[0me\u001b[0mr\u001b[0my\u001b[0m \u001b[0ms\u001b[0ma\u001b[0md\u001b[0m \u001b[0mi\u001b[0mf\u001b[0m \u001b[0mp\u001b[0me\u001b[0mt\u001b[0ms\u001b[0m \u001b[0mw\u001b[0me\u001b[0mr\u001b[0me\u001b[0m \u001b[0mk\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0me\u001b[0md\u001b[0m,\u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mu\u001b[0ml\u001b[0mt\u001b[0mi\u001b[0mm\u001b[0ma\u001b[0mt\u001b[0me\u001b[0ml\u001b[0my\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mo\u001b[0mw\u001b[0mn\u001b[0me\u001b[0mr\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mr\u001b[0me\u001b[0ms\u001b[0mp\u001b[0mo\u001b[0mn\u001b[0ms\u001b[0mi\u001b[0mb\u001b[0mi\u001b[0ml\u001b[0mi\u001b[0mt\u001b[0my\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mk\u001b[0me\u001b[0m \u001b[0ms\u001b[0mu\u001b[0mr\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mi\u001b[0mr\u001b[0m \u001b[0mp\u001b[0me\u001b[0mt\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mk\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mb\u001b[0mi\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m.\u001b[0m\n",
+ "\u001b[0m\n",
+ "\u001b[0mY\u001b[0me\u001b[0ma\u001b[0mr\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mg\u001b[0mo\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mm\u001b[0me\u001b[0m \u001b[0mV\u001b[0me\u001b[0mr\u001b[0mm\u001b[0mo\u001b[0mn\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mc\u001b[0mq\u001b[0mu\u001b[0ma\u001b[0mi\u001b[0mn\u001b[0mt\u001b[0ma\u001b[0mn\u001b[0mc\u001b[0me\u001b[0ms\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mr\u001b[0mn\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mf\u001b[0mr\u001b[0mo\u001b[0mm\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mR\u001b[0ma\u001b[0mn\u001b[0mg\u001b[0me\u001b[0mr\u001b[0m:\u001b[0m \u001b[0mN\u001b[0me\u001b[0mx\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mi\u001b[0mm\u001b[0me\u001b[0m \u001b[0mI\u001b[0m \u001b[0ms\u001b[0me\u001b[0me\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0md\u001b[0mo\u001b[0mg\u001b[0m \u001b[0mr\u001b[0mu\u001b[0mn\u001b[0mn\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0md\u001b[0me\u001b[0me\u001b[0mr\u001b[0m,\u001b[0m \u001b[0mI\u001b[0m'\u001b[0ml\u001b[0ml\u001b[0m \u001b[0ms\u001b[0mh\u001b[0mo\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m.\u001b[0m \u001b[0mN\u001b[0me\u001b[0mx\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mi\u001b[0mm\u001b[0me\u001b[0m \u001b[0ms\u001b[0mh\u001b[0me\u001b[0m \u001b[0ms\u001b[0ma\u001b[0mw\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m \u001b[0mr\u001b[0mu\u001b[0mn\u001b[0mn\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0md\u001b[0me\u001b[0me\u001b[0mr\u001b[0m,\u001b[0m \u001b[0ms\u001b[0mh\u001b[0me\u001b[0m \u001b[0md\u001b[0mi\u001b[0md\u001b[0m.\u001b[0m \u001b[0m\n",
+ "\u001b[0m\n",
+ "\u001b[0mV\u001b[0me\u001b[0mr\u001b[0mm\u001b[0mo\u001b[0mn\u001b[0mt\u001b[0m \u001b[0md\u001b[0mo\u001b[0me\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mp\u001b[0mr\u001b[0me\u001b[0mt\u001b[0me\u001b[0mn\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mr\u001b[0ma\u001b[0mp\u001b[0mp\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m,\u001b[0m \u001b[0mn\u001b[0me\u001b[0mu\u001b[0mt\u001b[0me\u001b[0mr\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mr\u001b[0me\u001b[0ml\u001b[0me\u001b[0ma\u001b[0ms\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0md\u001b[0mo\u001b[0mg\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mo\u001b[0ml\u001b[0mv\u001b[0me\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mb\u001b[0ml\u001b[0me\u001b[0mm\u001b[0ms\u001b[0m.\u001b[0m \u001b[0mT\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0ms\u001b[0me\u001b[0mr\u001b[0mi\u001b[0mo\u001b[0mu\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mr\u001b[0me\u001b[0ma\u001b[0mt\u001b[0ms\u001b[0m.\u001b[0m \u001b[0mW\u001b[0me\u001b[0m \u001b[0mj\u001b[0mu\u001b[0ms\u001b[0mt\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mf\u001b[0me\u001b[0me\u001b[0ml\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mo\u001b[0md\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mo\u001b[0mu\u001b[0mr\u001b[0ms\u001b[0me\u001b[0ml\u001b[0mv\u001b[0me\u001b[0ms\u001b[0m.\u001b[0m \u001b[0mI\u001b[0mf\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0mw\u001b[0me\u001b[0mr\u001b[0me\u001b[0m \u001b[0ms\u001b[0me\u001b[0mr\u001b[0mi\u001b[0mo\u001b[0mu\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mf\u001b[0me\u001b[0mr\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mt\u001b[0ms\u001b[0m,\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0mk\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mm\u001b[0m.\u001b[0m \u001b[0mN\u001b[0me\u001b[0mu\u001b[0mt\u001b[0me\u001b[0mr\u001b[0me\u001b[0md\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mt\u001b[0ms\u001b[0m \u001b[0me\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mb\u001b[0mi\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m.\u001b[0m \u001b[0mD\u001b[0mo\u001b[0mn\u001b[0m'\u001b[0mt\u001b[0m \u001b[0mr\u001b[0me\u001b[0ml\u001b[0me\u001b[0ma\u001b[0ms\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mm\u001b[0m.\u001b[0m \u001b[0mK\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mm\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i,(index,text) in enumerate(train.head(5).values):\n",
+ " print('{} - '.format(i) + color_toxic_words(index, text) + '\\n'*2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "### ¿Mal etiquetados?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "En algunas oraciones pone los espacios, comas y otros signos como caracteres tóxicos, hay que tener cuidado y al final concatenarlos si es que hay dos o más palabras tóxicas juntas. En la competencia parecen concatenarlos, pero no son consistententes en otras partes."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "158 - \u001b[41mT\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m.\u001b[0m\u001b[41m \u001b[0m\u001b[41mW\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mu\u001b[0m\u001b[41mr\u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m.\u001b[0m\u001b[41m \u001b[0m\u001b[41mA\u001b[0m\u001b[41mn\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mk\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mf\u001b[0m\u001b[41m \u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mk\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41m(\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41md\u001b[0m\u001b[41my\u001b[0m\u001b[41m)\u001b[0m\u001b[41m \u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m?\u001b[0m\n",
+ "\n",
+ "\n",
+ "159 - \u001b[41m[\u001b[0m\u001b[41mT\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mj\u001b[0m\u001b[41mu\u001b[0m\u001b[41mx\u001b[0m\u001b[41mt\u001b[0m\u001b[41ma\u001b[0m\u001b[41mp\u001b[0m\u001b[41mo\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41mk\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41mt\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mm\u001b[0m\u001b[41mp\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41md\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41m\"\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mg\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mg\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m\u001b[41m\"\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mb\u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41ml\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41m]\u001b[0m\n",
+ "\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0mf\u001b[0me\u001b[0mr\u001b[0m \u001b[0mw\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0md\u001b[0me\u001b[0mt\u001b[0me\u001b[0mr\u001b[0mm\u001b[0mi\u001b[0mn\u001b[0me\u001b[0md\u001b[0m \u001b[0mb\u001b[0ma\u001b[0ms\u001b[0me\u001b[0md\u001b[0m \u001b[0mu\u001b[0mp\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0me\u001b[0mv\u001b[0mi\u001b[0md\u001b[0me\u001b[0mn\u001b[0mc\u001b[0me\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0m\"\u001b[0me\u001b[0mx\u001b[0mt\u001b[0mr\u001b[0me\u001b[0mm\u001b[0me\u001b[0ml\u001b[0my\u001b[0m \u001b[0ms\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0my\u001b[0m \u001b[0mo\u001b[0mr\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m?\u001b[0m\"\u001b[0m \u001b[0m \u001b[0mI\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mh\u001b[0mo\u001b[0mw\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ms\u001b[0me\u001b[0me\u001b[0m \u001b[0mf\u001b[0me\u001b[0md\u001b[0me\u001b[0mr\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0mt\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mj\u001b[0mu\u001b[0md\u001b[0mg\u001b[0me\u001b[0ms\u001b[0m \u001b[0mf\u001b[0mu\u001b[0mn\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m?\u001b[0m\n",
+ "\u001b[0m[\u001b[0mT\u001b[0mh\u001b[0mo\u001b[0ms\u001b[0me\u001b[0m \u001b[0m\"\u001b[0mj\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0mi\u001b[0ms\u001b[0mt\u001b[0ms\u001b[0m\"\u001b[0m \u001b[0mk\u001b[0mn\u001b[0me\u001b[0mw\u001b[0m \u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mh\u001b[0ma\u001b[0md\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0md\u001b[0mo\u001b[0m \u001b[0mw\u001b[0mi\u001b[0mt\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mo\u001b[0mt\u001b[0mh\u001b[0me\u001b[0mr\u001b[0m]\u001b[0m\n",
+ "\u001b[0mW\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m?\u001b[0m \u001b[0m \u001b[0m\u001b[41mY\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41m \u001b[0m\u001b[41mb\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mP\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41m \u001b[0m\u001b[41my\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41me\u001b[0m\u001b[41mv\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41m\"\u001b[0m\u001b[41mj\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mr\u001b[0m\u001b[41mn\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m\u001b[41m\"\u001b[0m\u001b[41m \u001b[0m\u001b[41mk\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mw\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mn\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mb\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41mu\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m'\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m.\u001b[0m\n",
+ "\u001b[0mW\u001b[0ma\u001b[0mi\u001b[0mt\u001b[0m.\u001b[0m \u001b[0m \u001b[0mW\u001b[0mh\u001b[0my\u001b[0m \u001b[0md\u001b[0mo\u001b[0mn\u001b[0m'\u001b[0mt\u001b[0m \u001b[0mI\u001b[0m \u001b[0mh\u001b[0me\u001b[0ma\u001b[0mr\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0mi\u001b[0ma\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m?\u001b[0m\n",
+ "\u001b[0m[\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0mu\u001b[0mn\u001b[0mr\u001b[0me\u001b[0ml\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m \u001b[0mS\u001b[0mC\u001b[0mO\u001b[0mT\u001b[0mU\u001b[0mS\u001b[0m \u001b[0mc\u001b[0ma\u001b[0ms\u001b[0me\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mu\u001b[0mt\u001b[0me\u001b[0m]\u001b[0m\n",
+ "\u001b[0mL\u001b[0me\u001b[0mt\u001b[0m \u001b[0mm\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mr\u001b[0ma\u001b[0mi\u001b[0mg\u001b[0mh\u001b[0mt\u001b[0m.\u001b[0m \u001b[0m \u001b[0mT\u001b[0mh\u001b[0me\u001b[0m \u001b[0mj\u001b[0mu\u001b[0md\u001b[0mg\u001b[0me\u001b[0m \u001b[0mi\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mr\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0ml\u001b[0me\u001b[0m \u001b[0mu\u001b[0ms\u001b[0me\u001b[0md\u001b[0m \u001b[0me\u001b[0mx\u001b[0ma\u001b[0mc\u001b[0mt\u001b[0ml\u001b[0my\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ms\u001b[0mt\u001b[0ma\u001b[0mn\u001b[0md\u001b[0ma\u001b[0mr\u001b[0md\u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0me\u001b[0me\u001b[0mm\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0m\"\u001b[0mu\u001b[0mn\u001b[0mr\u001b[0me\u001b[0ml\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m?\u001b[0m\"\u001b[0m\n",
+ "\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ms\u001b[0mi\u001b[0mr\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0mi\u001b[0mn\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0me\u001b[0mt\u001b[0me\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0me\u001b[0mt\u001b[0me\u001b[0ml\u001b[0my\u001b[0m \u001b[0mi\u001b[0mr\u001b[0mr\u001b[0ma\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0m \u001b[0md\u001b[0me\u001b[0mn\u001b[0mi\u001b[0ma\u001b[0ml\u001b[0m.\u001b[0m \u001b[0m \u001b[0mI\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0ml\u001b[0me\u001b[0ma\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mn\u001b[0mo\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0ms\u001b[0mt\u001b[0mr\u001b[0mu\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mf\u001b[0ma\u001b[0mc\u001b[0mt\u001b[0ms\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mk\u001b[0me\u001b[0m \u001b[0ma\u001b[0m \u001b[0ml\u001b[0mi\u001b[0mc\u001b[0mk\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0md\u001b[0mi\u001b[0mf\u001b[0mf\u001b[0me\u001b[0mr\u001b[0me\u001b[0mn\u001b[0mc\u001b[0me\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0me\u001b[0ml\u001b[0mu\u001b[0md\u001b[0me\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0ms\u001b[0me\u001b[0ml\u001b[0mf\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0me\u001b[0ml\u001b[0mi\u001b[0me\u001b[0mv\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mk\u001b[0mn\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ml\u001b[0ma\u001b[0mw\u001b[0m \u001b[0mb\u001b[0me\u001b[0mt\u001b[0mt\u001b[0me\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0me\u001b[0ml\u001b[0ms\u001b[0me\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "218 - T\u001b[0mr\u001b[0mu\u001b[0md\u001b[0me\u001b[0ma\u001b[0m\u001b[41mu\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mf\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mf\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41mp\u001b[0m\u001b[41m.\u001b[0m\u001b[41m \u001b[0m\u001b[41mT\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mr\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41ml\u001b[0m\u001b[41mo\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mm\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mo\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mH\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mR\u001b[0m\u001b[41mo\u001b[0m\u001b[41my\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mA\u001b[0m\u001b[41mn\u001b[0m\u001b[41mu\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m\u001b[41mn\u001b[0m\u001b[41m'\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mg\u001b[0m\u001b[41mi\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mL\u001b[0m\u001b[41mi\u001b[0mb\u001b[0me\u001b[0mr\u001b[0ma\u001b[0ml\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mu\u001b[0mn\u001b[0mf\u001b[0ma\u001b[0mi\u001b[0mr\u001b[0m \u001b[0ma\u001b[0md\u001b[0mv\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0ma\u001b[0mg\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mu\u001b[0mg\u001b[0mh\u001b[0mt\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "358 - \u001b[41mT\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mg\u001b[0m\u001b[41mn\u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mn\u001b[0m\u001b[41ma\u001b[0m\u001b[41mr\u001b[0m\u001b[41mc\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41md\u001b[0m\u001b[41me\u001b[0m\u001b[41mf\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m\u001b[41mi\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mc\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mp\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41mr\u001b[0m\u001b[41mm\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41ms\u001b[0m\u001b[41m,\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mp\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41me\u001b[0m\u001b[41mx\u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41m,\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41ml\u001b[0m\u001b[41mo\u001b[0m\u001b[41mw\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41md\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41my\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41mr\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mu\u001b[0m\u001b[41mc\u001b[0m\u001b[41mk\u001b[0m\u001b[41me\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m,\u001b[0m \u001b[0ml\u001b[0mi\u001b[0mk\u001b[0me\u001b[0m \u001b[0mP\u001b[0mr\u001b[0mu\u001b[0mi\u001b[0mt\u001b[0mt\u001b[0m.\u001b[0m \u001b[0mT\u001b[0mh\u001b[0me\u001b[0m \u001b[0mG\u001b[0mO\u001b[0mP\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mv\u001b[0me\u001b[0ms\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "369 - \u001b[41mM\u001b[0m\u001b[41mC\u001b[0m\u001b[41m \u001b[0m\u001b[41mC\u001b[0m\u001b[41ma\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mn\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41mm\u001b[0m\u001b[41mp\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41mr\u001b[0m\u001b[41mr\u001b[0m\u001b[41mi\u001b[0m\u001b[41ma\u001b[0m\u001b[41mg\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mb\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41ma\u001b[0m\u001b[41mk\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mi\u001b[0m\u001b[41mf\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mc\u001b[0m\u001b[41mi\u001b[0m\u001b[41mp\u001b[0m\u001b[41ml\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mf\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mr\u001b[0m\u001b[41m \u001b[0m\u001b[41mn\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41m.\u001b[0m\u001b[41m \u001b[0m\u001b[41m \u001b[0m\u001b[41mW\u001b[0m\u001b[41ma\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41md\u001b[0m\u001b[41ma\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mi\u001b[0m\u001b[41ml\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mo\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mg\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mf\u001b[0m\u001b[41ma\u001b[0m\u001b[41mr\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0my\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "very_toxic = [i for i,x in zip(train.index, train['spans']) if len(x)>100][0:5]\n",
+ "\n",
+ "for i,(index,text) in zip(very_toxic, train.values[very_toxic]):\n",
+ " print('{} - '.format(i) + color_toxic_words(index, text) + '\\n'*2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Y está el problema de los etiquetados como [ ], que pueden ser completamente tóxicos, sarcásticos o simplemente son no tóxicos."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0 B\u001b[0mu\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mN\u001b[0mO\u001b[0mT\u001b[0m \u001b[0ma\u001b[0m \u001b[0md\u001b[0me\u001b[0mf\u001b[0me\u001b[0mn\u001b[0ms\u001b[0me\u001b[0m.\u001b[0m \u001b[0m \u001b[0mI\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0me\u001b[0mv\u001b[0me\u001b[0mn\u001b[0m \u001b[0ma\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mo\u001b[0md\u001b[0m \u001b[0md\u001b[0me\u001b[0mf\u001b[0ml\u001b[0me\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m.\u001b[0m \u001b[0m \u001b[0mI\u001b[0mn\u001b[0m \u001b[0mA\u001b[0mm\u001b[0me\u001b[0mr\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0m \u001b[0mt\u001b[0mo\u001b[0md\u001b[0ma\u001b[0my\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0mh\u001b[0ma\u001b[0mv\u001b[0me\u001b[0m \u001b[0mN\u001b[0ma\u001b[0mz\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mv\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mN\u001b[0ma\u001b[0mz\u001b[0mi\u001b[0m \u001b[0mf\u001b[0ml\u001b[0ma\u001b[0mg\u001b[0m \u001b[0ma\u001b[0mt\u001b[0m \u001b[0mr\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0me\u001b[0ms\u001b[0m \u001b[0mi\u001b[0mn\u001b[0m \u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0mc\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0me\u001b[0ms\u001b[0m.\u001b[0m \u001b[0mI\u001b[0mn\u001b[0m \u001b[0mw\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mp\u001b[0ma\u001b[0mc\u001b[0mi\u001b[0mt\u001b[0my\u001b[0m \u001b[0md\u001b[0mo\u001b[0me\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mk\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mo\u001b[0mk\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mw\u001b[0mh\u001b[0mo\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0ms\u001b[0me\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0ma\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mb\u001b[0ml\u001b[0me\u001b[0mm\u001b[0m?\u001b[0m\n",
+ "\u001b[0m\n",
+ "\u001b[0mE\u001b[0mn\u001b[0mo\u001b[0mu\u001b[0mg\u001b[0mh\u001b[0m \u001b[0mw\u001b[0mi\u001b[0mt\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0m\"\u001b[0mW\u001b[0me\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mw\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mb\u001b[0ml\u001b[0ma\u001b[0mh\u001b[0m \u001b[0mb\u001b[0ml\u001b[0ma\u001b[0mh\u001b[0m\"\u001b[0m \u001b[0mg\u001b[0ma\u001b[0mr\u001b[0mb\u001b[0ma\u001b[0mg\u001b[0me\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "1 J\u001b[0mi\u001b[0mm\u001b[0m\n",
+ "\u001b[0m\n",
+ "\u001b[0mI\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mk\u001b[0m \u001b[0mD\u001b[0mo\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0md\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0ma\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ma\u001b[0m \u001b[0md\u001b[0ma\u001b[0mn\u001b[0mg\u001b[0me\u001b[0mr\u001b[0mo\u001b[0mu\u001b[0ms\u001b[0m,\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mr\u001b[0mc\u001b[0mi\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ms\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0m \u001b[0mb\u001b[0mu\u001b[0mf\u001b[0mf\u001b[0mo\u001b[0mo\u001b[0mn\u001b[0m.\u001b[0m \u001b[0mB\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mI\u001b[0m \u001b[0md\u001b[0mo\u001b[0mn\u001b[0m'\u001b[0mt\u001b[0m \u001b[0mh\u001b[0ma\u001b[0mt\u001b[0me\u001b[0m \u001b[0mD\u001b[0mo\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0md\u001b[0m.\u001b[0m \u001b[0m \u001b[0mH\u001b[0me\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mr\u001b[0mt\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0me\u001b[0mm\u001b[0mo\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0m \u001b[0me\u001b[0mf\u001b[0mf\u001b[0mo\u001b[0mr\u001b[0mt\u001b[0m \u001b[0mn\u001b[0me\u001b[0me\u001b[0md\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mh\u001b[0ma\u001b[0mt\u001b[0me\u001b[0m.\u001b[0m \u001b[0mT\u001b[0mo\u001b[0m \u001b[0ms\u001b[0ma\u001b[0my\u001b[0m \u001b[0mI\u001b[0m \u001b[0mh\u001b[0ma\u001b[0mt\u001b[0me\u001b[0m \u001b[0mh\u001b[0mi\u001b[0mm\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0ma\u001b[0md\u001b[0mm\u001b[0mi\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mI\u001b[0m \u001b[0me\u001b[0mv\u001b[0me\u001b[0mn\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mh\u001b[0mi\u001b[0mm\u001b[0m,\u001b[0m \u001b[0mw\u001b[0mh\u001b[0mi\u001b[0mc\u001b[0mh\u001b[0m \u001b[0mI\u001b[0m \u001b[0md\u001b[0mo\u001b[0mn\u001b[0m'\u001b[0mt\u001b[0m.\u001b[0m \u001b[0mW\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mI\u001b[0m \u001b[0md\u001b[0mo\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0md\u001b[0ma\u001b[0mm\u001b[0ma\u001b[0mg\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m'\u001b[0ms\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mr\u001b[0me\u001b[0ma\u001b[0md\u001b[0my\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mu\u001b[0mn\u001b[0mt\u001b[0mr\u001b[0my\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0mt\u001b[0mi\u001b[0mn\u001b[0mu\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0md\u001b[0ma\u001b[0mm\u001b[0ma\u001b[0mg\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m'\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mu\u001b[0mn\u001b[0mt\u001b[0mr\u001b[0my\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mr\u001b[0ml\u001b[0md\u001b[0m \u001b[0mu\u001b[0mn\u001b[0mt\u001b[0mi\u001b[0ml\u001b[0m \u001b[0mh\u001b[0me\u001b[0m \u001b[0ml\u001b[0me\u001b[0ma\u001b[0mv\u001b[0me\u001b[0ms\u001b[0m \u001b[0mo\u001b[0mf\u001b[0mf\u001b[0mi\u001b[0mc\u001b[0me\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "2 E\u001b[0mx\u001b[0mp\u001b[0mo\u001b[0ms\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mh\u001b[0my\u001b[0mp\u001b[0mo\u001b[0mc\u001b[0mr\u001b[0mi\u001b[0mt\u001b[0me\u001b[0ms\u001b[0m \u001b[0ml\u001b[0mi\u001b[0mk\u001b[0me\u001b[0m \u001b[0mT\u001b[0mr\u001b[0mu\u001b[0mm\u001b[0mp\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mP\u001b[0me\u001b[0mn\u001b[0mc\u001b[0me\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mr\u001b[0ma\u001b[0mp\u001b[0me\u001b[0mu\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m?\u001b[0m \u001b[0mG\u001b[0mo\u001b[0mo\u001b[0md\u001b[0m \u001b[0mj\u001b[0mo\u001b[0mb\u001b[0m!\u001b[0m\n",
+ "\n",
+ "\n",
+ "3 T\u001b[0mh\u001b[0me\u001b[0m \u001b[0mm\u001b[0ma\u001b[0ml\u001b[0mi\u001b[0mg\u001b[0mn\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mr\u001b[0mc\u001b[0mi\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ms\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mm\u001b[0me\u001b[0mn\u001b[0mt\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0my\u001b[0m \u001b[0md\u001b[0me\u001b[0mr\u001b[0ma\u001b[0mn\u001b[0mg\u001b[0me\u001b[0md\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mc\u001b[0mi\u001b[0mo\u001b[0mp\u001b[0ma\u001b[0mt\u001b[0mh\u001b[0m,\u001b[0m \u001b[0mb\u001b[0mi\u001b[0mg\u001b[0mo\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mr\u001b[0ma\u001b[0ms\u001b[0mc\u001b[0mi\u001b[0ms\u001b[0mt\u001b[0m,\u001b[0m \u001b[0md\u001b[0mi\u001b[0ms\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0me\u001b[0mn\u001b[0mu\u001b[0mo\u001b[0mu\u001b[0ms\u001b[0m \u001b[0mb\u001b[0ml\u001b[0mo\u001b[0mw\u001b[0mh\u001b[0ma\u001b[0mr\u001b[0md\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mp\u001b[0ma\u001b[0mt\u001b[0mh\u001b[0mo\u001b[0ml\u001b[0mo\u001b[0mg\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0ml\u001b[0m \u001b[0ml\u001b[0mi\u001b[0ma\u001b[0mr\u001b[0m,\u001b[0m \u001b[0mh\u001b[0ma\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mc\u001b[0me\u001b[0mr\u001b[0mt\u001b[0mi\u001b[0mf\u001b[0mi\u001b[0me\u001b[0md\u001b[0m \u001b[0mh\u001b[0mi\u001b[0mm\u001b[0ms\u001b[0me\u001b[0ml\u001b[0mf\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0ma\u001b[0m \u001b[0mf\u001b[0ma\u001b[0ms\u001b[0mc\u001b[0mi\u001b[0ms\u001b[0mt\u001b[0m.\u001b[0m \u001b[0mH\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mm\u001b[0mu\u001b[0mc\u001b[0mh\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mn\u001b[0mg\u001b[0me\u001b[0mr\u001b[0m \u001b[0mb\u001b[0me\u001b[0mf\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mG\u001b[0mO\u001b[0mP\u001b[0m \u001b[0ms\u001b[0my\u001b[0mc\u001b[0mo\u001b[0mp\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ms\u001b[0mu\u001b[0mc\u001b[0mk\u001b[0me\u001b[0me\u001b[0ms\u001b[0m \u001b[0ms\u001b[0ma\u001b[0my\u001b[0m,\u001b[0m \u001b[0m\"\u001b[0mE\u001b[0mn\u001b[0mo\u001b[0mu\u001b[0mg\u001b[0mh\u001b[0m!\u001b[0m\"\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0md\u001b[0me\u001b[0mm\u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0mr\u001b[0me\u001b[0mp\u001b[0mu\u001b[0mg\u001b[0mn\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0m,\u001b[0m \u001b[0me\u001b[0mx\u001b[0mc\u001b[0mr\u001b[0me\u001b[0mm\u001b[0me\u001b[0mn\u001b[0mt\u001b[0m-\u001b[0ms\u001b[0mp\u001b[0me\u001b[0mw\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mo\u001b[0ml\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mo\u001b[0mu\u001b[0ms\u001b[0mt\u001b[0me\u001b[0mr\u001b[0m?\u001b[0m\n",
+ "\n",
+ "\n",
+ "4 t\u001b[0mh\u001b[0me\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mN\u001b[0mO\u001b[0m \u001b[0mC\u001b[0mO\u001b[0mN\u001b[0mS\u001b[0mE\u001b[0mN\u001b[0mS\u001b[0mU\u001b[0mS\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mi\u001b[0mg\u001b[0mn\u001b[0mo\u001b[0mr\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0m \u001b[0ml\u001b[0mo\u001b[0ms\u001b[0me\u001b[0mr\u001b[0m,\u001b[0m \u001b[0mN\u001b[0mO\u001b[0mN\u001b[0mE\u001b[0m,\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0md\u001b[0me\u001b[0mb\u001b[0ma\u001b[0mt\u001b[0me\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mo\u001b[0mu\u001b[0ms\u001b[0ma\u001b[0mn\u001b[0md\u001b[0ms\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0ms\u001b[0mc\u001b[0mi\u001b[0me\u001b[0mn\u001b[0mt\u001b[0mi\u001b[0ms\u001b[0mt\u001b[0m \u001b[0md\u001b[0mo\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mg\u001b[0mr\u001b[0me\u001b[0me\u001b[0m \u001b[0mp\u001b[0me\u001b[0mr\u001b[0mi\u001b[0mo\u001b[0md\u001b[0m,\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0md\u001b[0mo\u001b[0mn\u001b[0mt\u001b[0m \u001b[0mn\u001b[0me\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mv\u001b[0me\u001b[0m \u001b[0mf\u001b[0mr\u001b[0mo\u001b[0mm\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mo\u001b[0mt\u001b[0mh\u001b[0me\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ml\u001b[0me\u001b[0mf\u001b[0mt\u001b[0m \u001b[0mw\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mu\u001b[0mp\u001b[0mi\u001b[0md\u001b[0mi\u001b[0mt\u001b[0my\u001b[0m \u001b[0ml\u001b[0mi\u001b[0mk\u001b[0me\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0ms\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "actually_toxic = [i for i in train.index if len(train.loc[i]['spans']) == 0][0:5]\n",
+ "\n",
+ "for i,(index,text) in enumerate(train.values[actually_toxic]):\n",
+ " print(str(i) + ' ' + color_toxic_words(index, text) + '\\n'*2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "## Preprocesamiento\n",
+ "Primero sería mejor tener las palabras tóxicas que los caracteres, también hay que tener cuidado cuando marcan un espacio o algún signo de puntuación como tóxico, al final sólo hay que concatenar si hay dos palabras tóxicas juntas (por hacer). También hay que pasar todo a minúscula y hacer el análisis en minúscula."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[41mf\u001b[0m\u001b[41mu\u001b[0m\u001b[41mc\u001b[0m\u001b[41mk\u001b[0m\u001b[41m \u001b[0m\u001b[41my\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41m!\u001b[0m\u001b[41m!\u001b[0m\u001b[41m!\u001b[0m\n",
+ "\u001b[41mf\u001b[0m\u001b[41mu\u001b[0m\u001b[41mc\u001b[0m\u001b[41mk\u001b[0m \u001b[0m\u001b[41my\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41m!\u001b[0m\u001b[41m!\u001b[0m\u001b[41m!\u001b[0m\n"
+ ]
+ }
+ ],
+ "source": [
+ "text = 'fuck you idiot!!!'\n",
+ "index = np.arange(len(text)).tolist()\n",
+ "\n",
+ "print(color_toxic_words(index, text))\n",
+ "print(color_toxic_words(remove_symbols(index, text), text))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Quitamos símbolos."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "indices_clean = [remove_symbols(index, text) for index,text in \n",
+ " zip(train['spans'], train['text'])]\n",
+ "\n",
+ "train['spans_clean'] = indices_clean"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Veamos como se ven si lo hacemos así:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "158 - \u001b[41mT\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m.\u001b[0m\u001b[41m \u001b[0m\u001b[41mW\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mu\u001b[0m\u001b[41mr\u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m.\u001b[0m\u001b[41m \u001b[0m\u001b[41mA\u001b[0m\u001b[41mn\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mk\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mf\u001b[0m\u001b[41m \u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mk\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41m(\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41md\u001b[0m\u001b[41my\u001b[0m\u001b[41m)\u001b[0m\u001b[41m \u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m?\u001b[0m\n",
+ "158 - \u001b[41mT\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m.\u001b[0m \u001b[0m\u001b[41mW\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mu\u001b[0m\u001b[41mr\u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m.\u001b[0m \u001b[0m\u001b[41mA\u001b[0m\u001b[41mn\u001b[0m\u001b[41my\u001b[0m \u001b[0m\u001b[41mp\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41my\u001b[0m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mk\u001b[0m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mf\u001b[0m \u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mk\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m \u001b[0m(\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41md\u001b[0m\u001b[41my\u001b[0m)\u001b[0m \u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m?\u001b[0m\n",
+ "\n",
+ "\n",
+ "159 - \u001b[41m[\u001b[0m\u001b[41mT\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mj\u001b[0m\u001b[41mu\u001b[0m\u001b[41mx\u001b[0m\u001b[41mt\u001b[0m\u001b[41ma\u001b[0m\u001b[41mp\u001b[0m\u001b[41mo\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41mk\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41mt\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mm\u001b[0m\u001b[41mp\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41md\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41m\"\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mg\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mg\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m\u001b[41m\"\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mb\u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41ml\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41m]\u001b[0m\n",
+ "\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0mf\u001b[0me\u001b[0mr\u001b[0m \u001b[0mw\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0md\u001b[0me\u001b[0mt\u001b[0me\u001b[0mr\u001b[0mm\u001b[0mi\u001b[0mn\u001b[0me\u001b[0md\u001b[0m \u001b[0mb\u001b[0ma\u001b[0ms\u001b[0me\u001b[0md\u001b[0m \u001b[0mu\u001b[0mp\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0me\u001b[0mv\u001b[0mi\u001b[0md\u001b[0me\u001b[0mn\u001b[0mc\u001b[0me\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0m\"\u001b[0me\u001b[0mx\u001b[0mt\u001b[0mr\u001b[0me\u001b[0mm\u001b[0me\u001b[0ml\u001b[0my\u001b[0m \u001b[0ms\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0my\u001b[0m \u001b[0mo\u001b[0mr\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m?\u001b[0m\"\u001b[0m \u001b[0m \u001b[0mI\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mh\u001b[0mo\u001b[0mw\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ms\u001b[0me\u001b[0me\u001b[0m \u001b[0mf\u001b[0me\u001b[0md\u001b[0me\u001b[0mr\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0mt\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mj\u001b[0mu\u001b[0md\u001b[0mg\u001b[0me\u001b[0ms\u001b[0m \u001b[0mf\u001b[0mu\u001b[0mn\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m?\u001b[0m\n",
+ "\u001b[0m[\u001b[0mT\u001b[0mh\u001b[0mo\u001b[0ms\u001b[0me\u001b[0m \u001b[0m\"\u001b[0mj\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0mi\u001b[0ms\u001b[0mt\u001b[0ms\u001b[0m\"\u001b[0m \u001b[0mk\u001b[0mn\u001b[0me\u001b[0mw\u001b[0m \u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mh\u001b[0ma\u001b[0md\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0md\u001b[0mo\u001b[0m \u001b[0mw\u001b[0mi\u001b[0mt\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mo\u001b[0mt\u001b[0mh\u001b[0me\u001b[0mr\u001b[0m]\u001b[0m\n",
+ "\u001b[0mW\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m?\u001b[0m \u001b[0m \u001b[0m\u001b[41mY\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41m \u001b[0m\u001b[41mb\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mP\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41m \u001b[0m\u001b[41my\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41me\u001b[0m\u001b[41mv\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41m\"\u001b[0m\u001b[41mj\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mr\u001b[0m\u001b[41mn\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m\u001b[41m\"\u001b[0m\u001b[41m \u001b[0m\u001b[41mk\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mw\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mn\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mb\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41mu\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m'\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m.\u001b[0m\n",
+ "\u001b[0mW\u001b[0ma\u001b[0mi\u001b[0mt\u001b[0m.\u001b[0m \u001b[0m \u001b[0mW\u001b[0mh\u001b[0my\u001b[0m \u001b[0md\u001b[0mo\u001b[0mn\u001b[0m'\u001b[0mt\u001b[0m \u001b[0mI\u001b[0m \u001b[0mh\u001b[0me\u001b[0ma\u001b[0mr\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0mi\u001b[0ma\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m?\u001b[0m\n",
+ "\u001b[0m[\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0mu\u001b[0mn\u001b[0mr\u001b[0me\u001b[0ml\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m \u001b[0mS\u001b[0mC\u001b[0mO\u001b[0mT\u001b[0mU\u001b[0mS\u001b[0m \u001b[0mc\u001b[0ma\u001b[0ms\u001b[0me\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mu\u001b[0mt\u001b[0me\u001b[0m]\u001b[0m\n",
+ "\u001b[0mL\u001b[0me\u001b[0mt\u001b[0m \u001b[0mm\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mr\u001b[0ma\u001b[0mi\u001b[0mg\u001b[0mh\u001b[0mt\u001b[0m.\u001b[0m \u001b[0m \u001b[0mT\u001b[0mh\u001b[0me\u001b[0m \u001b[0mj\u001b[0mu\u001b[0md\u001b[0mg\u001b[0me\u001b[0m \u001b[0mi\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mr\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0ml\u001b[0me\u001b[0m \u001b[0mu\u001b[0ms\u001b[0me\u001b[0md\u001b[0m \u001b[0me\u001b[0mx\u001b[0ma\u001b[0mc\u001b[0mt\u001b[0ml\u001b[0my\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ms\u001b[0mt\u001b[0ma\u001b[0mn\u001b[0md\u001b[0ma\u001b[0mr\u001b[0md\u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0me\u001b[0me\u001b[0mm\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0m\"\u001b[0mu\u001b[0mn\u001b[0mr\u001b[0me\u001b[0ml\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m?\u001b[0m\"\u001b[0m\n",
+ "\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ms\u001b[0mi\u001b[0mr\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0mi\u001b[0mn\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0me\u001b[0mt\u001b[0me\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0me\u001b[0mt\u001b[0me\u001b[0ml\u001b[0my\u001b[0m \u001b[0mi\u001b[0mr\u001b[0mr\u001b[0ma\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0m \u001b[0md\u001b[0me\u001b[0mn\u001b[0mi\u001b[0ma\u001b[0ml\u001b[0m.\u001b[0m \u001b[0m \u001b[0mI\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0ml\u001b[0me\u001b[0ma\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mn\u001b[0mo\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0ms\u001b[0mt\u001b[0mr\u001b[0mu\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mf\u001b[0ma\u001b[0mc\u001b[0mt\u001b[0ms\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mk\u001b[0me\u001b[0m \u001b[0ma\u001b[0m \u001b[0ml\u001b[0mi\u001b[0mc\u001b[0mk\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0md\u001b[0mi\u001b[0mf\u001b[0mf\u001b[0me\u001b[0mr\u001b[0me\u001b[0mn\u001b[0mc\u001b[0me\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0me\u001b[0ml\u001b[0mu\u001b[0md\u001b[0me\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0ms\u001b[0me\u001b[0ml\u001b[0mf\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0me\u001b[0ml\u001b[0mi\u001b[0me\u001b[0mv\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mk\u001b[0mn\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ml\u001b[0ma\u001b[0mw\u001b[0m \u001b[0mb\u001b[0me\u001b[0mt\u001b[0mt\u001b[0me\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0me\u001b[0ml\u001b[0ms\u001b[0me\u001b[0m.\u001b[0m\n",
+ "159 - [\u001b[0m\u001b[41mT\u001b[0m\u001b[41mo\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41my\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mj\u001b[0m\u001b[41mu\u001b[0m\u001b[41mx\u001b[0m\u001b[41mt\u001b[0m\u001b[41ma\u001b[0m\u001b[41mp\u001b[0m\u001b[41mo\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41mk\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41ma\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41mt\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mm\u001b[0m\u001b[41mp\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mg\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m \u001b[0m\u001b[41md\u001b[0m\u001b[41mo\u001b[0m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41ms\u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m \u001b[0m\"\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mg\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mg\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m\"\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mb\u001b[0m\u001b[41ms\u001b[0m\u001b[41mo\u001b[0m\u001b[41ml\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m]\u001b[0m\n",
+ "\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0mf\u001b[0me\u001b[0mr\u001b[0m \u001b[0mw\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0md\u001b[0me\u001b[0mt\u001b[0me\u001b[0mr\u001b[0mm\u001b[0mi\u001b[0mn\u001b[0me\u001b[0md\u001b[0m \u001b[0mb\u001b[0ma\u001b[0ms\u001b[0me\u001b[0md\u001b[0m \u001b[0mu\u001b[0mp\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0me\u001b[0mv\u001b[0mi\u001b[0md\u001b[0me\u001b[0mn\u001b[0mc\u001b[0me\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0m\"\u001b[0me\u001b[0mx\u001b[0mt\u001b[0mr\u001b[0me\u001b[0mm\u001b[0me\u001b[0ml\u001b[0my\u001b[0m \u001b[0ms\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0my\u001b[0m \u001b[0mo\u001b[0mr\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m?\u001b[0m\"\u001b[0m \u001b[0m \u001b[0mI\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mh\u001b[0mo\u001b[0mw\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ms\u001b[0me\u001b[0me\u001b[0m \u001b[0mf\u001b[0me\u001b[0md\u001b[0me\u001b[0mr\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0mt\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mj\u001b[0mu\u001b[0md\u001b[0mg\u001b[0me\u001b[0ms\u001b[0m \u001b[0mf\u001b[0mu\u001b[0mn\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m?\u001b[0m\n",
+ "\u001b[0m[\u001b[0mT\u001b[0mh\u001b[0mo\u001b[0ms\u001b[0me\u001b[0m \u001b[0m\"\u001b[0mj\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0mi\u001b[0ms\u001b[0mt\u001b[0ms\u001b[0m\"\u001b[0m \u001b[0mk\u001b[0mn\u001b[0me\u001b[0mw\u001b[0m \u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mh\u001b[0ma\u001b[0md\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0mh\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0md\u001b[0mo\u001b[0m \u001b[0mw\u001b[0mi\u001b[0mt\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mo\u001b[0mt\u001b[0mh\u001b[0me\u001b[0mr\u001b[0m]\u001b[0m\n",
+ "\u001b[0mW\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m?\u001b[0m \u001b[0m \u001b[0m\u001b[41mY\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m \u001b[0m\u001b[41mb\u001b[0m\u001b[41me\u001b[0m\u001b[41mt\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m \u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m \u001b[0m\u001b[41mP\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mn\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m \u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m \u001b[0m\u001b[41my\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m \u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41me\u001b[0m\u001b[41mv\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m \u001b[0m\"\u001b[0m\u001b[41mj\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mr\u001b[0m\u001b[41mn\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m\"\u001b[0m \u001b[0m\u001b[41mk\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mw\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m \u001b[0m\u001b[41mw\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mn\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41mn\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41mb\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41mu\u001b[0m\u001b[41ms\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m'\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41ma\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m\u001b[41me\u001b[0m.\u001b[0m\n",
+ "\u001b[0mW\u001b[0ma\u001b[0mi\u001b[0mt\u001b[0m.\u001b[0m \u001b[0m \u001b[0mW\u001b[0mh\u001b[0my\u001b[0m \u001b[0md\u001b[0mo\u001b[0mn\u001b[0m'\u001b[0mt\u001b[0m \u001b[0mI\u001b[0m \u001b[0mh\u001b[0me\u001b[0ma\u001b[0mr\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0mi\u001b[0ma\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m?\u001b[0m\n",
+ "\u001b[0m[\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0mu\u001b[0mn\u001b[0mr\u001b[0me\u001b[0ml\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m \u001b[0mS\u001b[0mC\u001b[0mO\u001b[0mT\u001b[0mU\u001b[0mS\u001b[0m \u001b[0mc\u001b[0ma\u001b[0ms\u001b[0me\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mu\u001b[0mt\u001b[0me\u001b[0m]\u001b[0m\n",
+ "\u001b[0mL\u001b[0me\u001b[0mt\u001b[0m \u001b[0mm\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mr\u001b[0ma\u001b[0mi\u001b[0mg\u001b[0mh\u001b[0mt\u001b[0m.\u001b[0m \u001b[0m \u001b[0mT\u001b[0mh\u001b[0me\u001b[0m \u001b[0mj\u001b[0mu\u001b[0md\u001b[0mg\u001b[0me\u001b[0m \u001b[0mi\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mr\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0ml\u001b[0me\u001b[0m \u001b[0mu\u001b[0ms\u001b[0me\u001b[0md\u001b[0m \u001b[0me\u001b[0mx\u001b[0ma\u001b[0mc\u001b[0mt\u001b[0ml\u001b[0my\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ms\u001b[0mt\u001b[0ma\u001b[0mn\u001b[0md\u001b[0ma\u001b[0mr\u001b[0md\u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0me\u001b[0me\u001b[0mm\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0m\"\u001b[0mu\u001b[0mn\u001b[0mr\u001b[0me\u001b[0ml\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m?\u001b[0m\"\u001b[0m\n",
+ "\u001b[0mY\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ms\u001b[0mi\u001b[0mr\u001b[0m,\u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0mi\u001b[0mn\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0me\u001b[0mt\u001b[0me\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0me\u001b[0mt\u001b[0me\u001b[0ml\u001b[0my\u001b[0m \u001b[0mi\u001b[0mr\u001b[0mr\u001b[0ma\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0ma\u001b[0ml\u001b[0m \u001b[0md\u001b[0me\u001b[0mn\u001b[0mi\u001b[0ma\u001b[0ml\u001b[0m.\u001b[0m \u001b[0m \u001b[0mI\u001b[0mt\u001b[0m \u001b[0mi\u001b[0ms\u001b[0m \u001b[0mc\u001b[0ml\u001b[0me\u001b[0ma\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mn\u001b[0mo\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mn\u001b[0ms\u001b[0mt\u001b[0mr\u001b[0mu\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mo\u001b[0mn\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mf\u001b[0ma\u001b[0mc\u001b[0mt\u001b[0ms\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mm\u001b[0ma\u001b[0mk\u001b[0me\u001b[0m \u001b[0ma\u001b[0m \u001b[0ml\u001b[0mi\u001b[0mc\u001b[0mk\u001b[0m \u001b[0mo\u001b[0mf\u001b[0m \u001b[0md\u001b[0mi\u001b[0mf\u001b[0mf\u001b[0me\u001b[0mr\u001b[0me\u001b[0mn\u001b[0mc\u001b[0me\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0md\u001b[0me\u001b[0ml\u001b[0mu\u001b[0md\u001b[0me\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0ms\u001b[0me\u001b[0ml\u001b[0mf\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0me\u001b[0ml\u001b[0mi\u001b[0me\u001b[0mv\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mk\u001b[0mn\u001b[0mo\u001b[0mw\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0ml\u001b[0ma\u001b[0mw\u001b[0m \u001b[0mb\u001b[0me\u001b[0mt\u001b[0mt\u001b[0me\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0mo\u001b[0mn\u001b[0me\u001b[0m \u001b[0me\u001b[0ml\u001b[0ms\u001b[0me\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "218 - T\u001b[0mr\u001b[0mu\u001b[0md\u001b[0me\u001b[0ma\u001b[0m\u001b[41mu\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mf\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mf\u001b[0m\u001b[41m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41mp\u001b[0m\u001b[41m.\u001b[0m\u001b[41m \u001b[0m\u001b[41mT\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mr\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m\u001b[41m \u001b[0m\u001b[41ml\u001b[0m\u001b[41mo\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mm\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mo\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41md\u001b[0m\u001b[41m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41m \u001b[0m\u001b[41mH\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mR\u001b[0m\u001b[41mo\u001b[0m\u001b[41my\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m\u001b[41m \u001b[0m\u001b[41mA\u001b[0m\u001b[41mn\u001b[0m\u001b[41mu\u001b[0m\u001b[41ms\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m\u001b[41mn\u001b[0m\u001b[41m'\u001b[0m\u001b[41mt\u001b[0m\u001b[41m \u001b[0m\u001b[41mg\u001b[0m\u001b[41mi\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41m \u001b[0m\u001b[41mL\u001b[0m\u001b[41mi\u001b[0mb\u001b[0me\u001b[0mr\u001b[0ma\u001b[0ml\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mu\u001b[0mn\u001b[0mf\u001b[0ma\u001b[0mi\u001b[0mr\u001b[0m \u001b[0ma\u001b[0md\u001b[0mv\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0ma\u001b[0mg\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mu\u001b[0mg\u001b[0mh\u001b[0mt\u001b[0m.\u001b[0m\n",
+ "218 - T\u001b[0mr\u001b[0mu\u001b[0md\u001b[0me\u001b[0ma\u001b[0m\u001b[41mu\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41mf\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41ml\u001b[0m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mf\u001b[0m \u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41mp\u001b[0m.\u001b[0m \u001b[0m\u001b[41mT\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mr\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m\u001b[41ml\u001b[0m\u001b[41my\u001b[0m \u001b[0m\u001b[41ml\u001b[0m\u001b[41mo\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m \u001b[0m\u001b[41me\u001b[0m\u001b[41ml\u001b[0m\u001b[41me\u001b[0m\u001b[41mc\u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m \u001b[0m\u001b[41mr\u001b[0m\u001b[41me\u001b[0m\u001b[41mf\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mm\u001b[0m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m\u001b[41mn\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mw\u001b[0m\u001b[41ma\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41mp\u001b[0m\u001b[41mo\u001b[0m\u001b[41mi\u001b[0m\u001b[41mn\u001b[0m\u001b[41mt\u001b[0m\u001b[41me\u001b[0m\u001b[41md\u001b[0m \u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mo\u001b[0m \u001b[0m\u001b[41mH\u001b[0m\u001b[41mi\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41mR\u001b[0m\u001b[41mo\u001b[0m\u001b[41my\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m \u001b[0m\u001b[41mA\u001b[0m\u001b[41mn\u001b[0m\u001b[41mu\u001b[0m\u001b[41ms\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41ma\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mw\u001b[0m\u001b[41mo\u001b[0m\u001b[41mu\u001b[0m\u001b[41ml\u001b[0m\u001b[41md\u001b[0m\u001b[41mn\u001b[0m\u001b[41m'\u001b[0m\u001b[41mt\u001b[0m \u001b[0m\u001b[41mg\u001b[0m\u001b[41mi\u001b[0m\u001b[41mv\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mt\u001b[0m\u001b[41mh\u001b[0m\u001b[41me\u001b[0m \u001b[0m\u001b[41mL\u001b[0m\u001b[41mi\u001b[0mb\u001b[0me\u001b[0mr\u001b[0ma\u001b[0ml\u001b[0ms\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mu\u001b[0mn\u001b[0mf\u001b[0ma\u001b[0mi\u001b[0mr\u001b[0m \u001b[0ma\u001b[0md\u001b[0mv\u001b[0ma\u001b[0mn\u001b[0mt\u001b[0ma\u001b[0mg\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mu\u001b[0mg\u001b[0mh\u001b[0mt\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "very_toxic = [i for i,x in zip(train.index, train['spans']) if len(x)>100][0:3]\n",
+ "\n",
+ "for i, (index,text,index_clean) in zip(very_toxic, train.values[very_toxic]):\n",
+ " print('{} - '.format(i) + color_toxic_words(index, text))\n",
+ " print('{} - '.format(i) + color_toxic_words(index_clean, text) + '\\n'*2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "También pasemos a minúscula el texto para el entrenamiento:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "train['text'] = train['text'].apply(lambda x:x.lower())"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "## Modelos\n",
+ "\n",
+ "En la competencia usarán el F1 score para evaluar como sigue:\n",
+ "\n",
+ "\n",
+ "To evaluate the responses of a system participating in the challenge, we employ the $F_{1}$ score, as in [1]. Let system $A_i$ return a set $S^{t}_{A_{i}}$ of character offsets, for parts of the post found to be toxic. Let $G^{t}$ be the character offsets of the ground truth annotations of $t$. We compute the $F_{1}$ score of system $A_i$ with respect to the ground truth $G$ for post $t$ as follows, where $|·|$ denotes set cardinality.\n",
+ " \n",
+ "$$ F_{1}^{t}(A_{i}, G) = \\dfrac{2 \\cdot P^{t}(A_{i}, G) \\cdot R^{t}(A_{i}, G)}{P^{t}(A_{i}, G) + R^{t}(A_{i}, G)}$$\n",
+ " \n",
+ "$$ P^{t}(A_{i}, G) = \\dfrac{|S^{t}_{A_{i}} \\cap S^{t}_{A_{i}}|}{|S^{t}_{A_{i}}|} $$\n",
+ " \n",
+ "$$ R^{t}(A_{i}, G) = \\dfrac{|S^{t}_{A_{i}} \\cap S^{t}_{A_{i}}|}{|S^{t}_{G}|} $$ \n",
+ " \n",
+ "If $S^{t}_{G}$ is empty for some post $t$ (no gold spans are given for $t$), we set $F_{1}^{t}(A_{i}, G)$ if $S^{t}_{A_{i}}$ is also empty, and $F_{1}^{t}(A_{i}, G) = 0$ otherwise. We finally average $F_{1}^{t}(A_{i}, G)$ over all the posts $t$ of an evaluation dataset $T$ to obtain a single score for system $A_{i}$.\n",
+ "\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "### Hidden Markov Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "En nuestro caso debemos etiquetar en `toxic` y `non_toxic`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "train_data = []\n",
+ "for index, text in zip(train['spans_clean'], train['text']):\n",
+ " toxic_words = [text[i[0]:i[-1]+1] for i in separate_words(index) if len(index) > 0]\n",
+ " # print(toxic_words)\n",
+ " \n",
+ " tokens = word_tokenize(text)\n",
+ " tagged_tokens = []\n",
+ " \n",
+ " for token in tokens:\n",
+ " if token in toxic_words:\n",
+ " tagged_tokens.append((token, 'toxic'))\n",
+ " # Removemos en caso de que se repita posteriormente pero esté como 'non_toxic'\n",
+ " toxic_words.remove(token) \n",
+ " else:\n",
+ " tagged_tokens.append((token, 'non_toxic'))\n",
+ " \n",
+ " train_data.append(tagged_tokens)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Entrenamos:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "trainer = HiddenMarkovModelTrainer()\n",
+ "tagger_HMM = trainer.train_supervised(train_data)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Veamos que score tenemos en el dataset de `test` y comparemos nuestras predicciones:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[1m\u001b[36mPred: \u001b[0mB\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m'\u001b[0ms\u001b[0m \u001b[0ma\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ma\u001b[0m \u001b[0mb\u001b[0mi\u001b[0mg\u001b[0mo\u001b[0mt\u001b[0m.\u001b[0m \u001b[0mI\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m.\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mB\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m'\u001b[0ms\u001b[0m \u001b[0ma\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ma\u001b[0m \u001b[0m\u001b[41mb\u001b[0m\u001b[41mi\u001b[0m\u001b[41mg\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m.\u001b[0m \u001b[0mI\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "\u001b[1m\u001b[36mPred: \u001b[0mH\u001b[0mo\u001b[0mw\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mo\u001b[0mp\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mt\u001b[0me\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ml\u001b[0me\u001b[0mt\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mt\u001b[0mu\u001b[0mr\u001b[0me\u001b[0m \u001b[0ma\u001b[0md\u001b[0md\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mm\u001b[0me\u001b[0m \u001b[0mb\u001b[0ml\u001b[0me\u001b[0ma\u001b[0mc\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mn\u001b[0me\u001b[0m \u001b[0mp\u001b[0mo\u001b[0mo\u001b[0ml\u001b[0m.\u001b[0m \u001b[0mW\u001b[0me\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mw\u001b[0ma\u001b[0my\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mu\u001b[0mb\u001b[0mm\u001b[0mi\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mi\u001b[0mr\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mm\u001b[0me\u001b[0ms\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mD\u001b[0ma\u001b[0mr\u001b[0mw\u001b[0mi\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mw\u001b[0ma\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m.\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mH\u001b[0mo\u001b[0mw\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mo\u001b[0mp\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mt\u001b[0me\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ml\u001b[0me\u001b[0mt\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mt\u001b[0mu\u001b[0mr\u001b[0me\u001b[0m \u001b[0ma\u001b[0md\u001b[0md\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mm\u001b[0me\u001b[0m \u001b[0mb\u001b[0ml\u001b[0me\u001b[0ma\u001b[0mc\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mn\u001b[0me\u001b[0m \u001b[0mp\u001b[0mo\u001b[0mo\u001b[0ml\u001b[0m.\u001b[0m \u001b[0mW\u001b[0me\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mw\u001b[0ma\u001b[0my\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mu\u001b[0mb\u001b[0mm\u001b[0mi\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mi\u001b[0mr\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mm\u001b[0me\u001b[0ms\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mD\u001b[0ma\u001b[0mr\u001b[0mw\u001b[0mi\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mw\u001b[0ma\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "\u001b[1m\u001b[36mPred: \u001b[0mI\u001b[0mf\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0m \u001b[0mw\u001b[0me\u001b[0mr\u001b[0me\u001b[0m \u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0m \u001b[0mB\u001b[0mo\u001b[0my\u001b[0mc\u001b[0mo\u001b[0mt\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0m \u001b[0mi\u001b[0mn\u001b[0me\u001b[0mp\u001b[0mt\u001b[0m \u001b[0m \u001b[0ma\u001b[0mi\u001b[0mr\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0m \u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m,\u001b[0m \u001b[0m \u001b[0ms\u001b[0mo\u001b[0m \u001b[0m \u001b[0m \u001b[0mr\u001b[0mo\u001b[0mg\u001b[0mu\u001b[0me\u001b[0m \u001b[0m \u001b[0mb\u001b[0mu\u001b[0ms\u001b[0mi\u001b[0mn\u001b[0me\u001b[0ms\u001b[0ms\u001b[0me\u001b[0ms\u001b[0m \u001b[0m \u001b[0ml\u001b[0mi\u001b[0mk\u001b[0me\u001b[0m \u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0m \u001b[0mo\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0m \u001b[0m \u001b[0ms\u001b[0mt\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mr\u001b[0mi\u001b[0mv\u001b[0me\u001b[0m \u001b[0m \u001b[0m \u001b[0mt\u001b[0ma\u001b[0mk\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mi\u001b[0md\u001b[0mi\u001b[0mo\u001b[0mt\u001b[0ms\u001b[0m \u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0m \u001b[0ma\u001b[0m \u001b[0mr\u001b[0mi\u001b[0md\u001b[0me\u001b[0m.\u001b[0m.\u001b[0m.\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mI\u001b[0mf\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0m \u001b[0mw\u001b[0me\u001b[0mr\u001b[0me\u001b[0m \u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0m \u001b[0mB\u001b[0mo\u001b[0my\u001b[0mc\u001b[0mo\u001b[0mt\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0m \u001b[0mi\u001b[0mn\u001b[0me\u001b[0mp\u001b[0mt\u001b[0m \u001b[0m \u001b[0ma\u001b[0mi\u001b[0mr\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0m \u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m,\u001b[0m \u001b[0m \u001b[0ms\u001b[0mo\u001b[0m \u001b[0m \u001b[0m \u001b[0mr\u001b[0mo\u001b[0mg\u001b[0mu\u001b[0me\u001b[0m \u001b[0m \u001b[0mb\u001b[0mu\u001b[0ms\u001b[0mi\u001b[0mn\u001b[0me\u001b[0ms\u001b[0ms\u001b[0me\u001b[0ms\u001b[0m \u001b[0m \u001b[0ml\u001b[0mi\u001b[0mk\u001b[0me\u001b[0m \u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0m \u001b[0mo\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0m \u001b[0m \u001b[0ms\u001b[0mt\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mr\u001b[0mi\u001b[0mv\u001b[0me\u001b[0m \u001b[0m \u001b[0m \u001b[0mt\u001b[0ma\u001b[0mk\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m \u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0m \u001b[0ma\u001b[0m \u001b[0mr\u001b[0mi\u001b[0md\u001b[0me\u001b[0m.\u001b[0m.\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "\u001b[1m\u001b[36mPred: \u001b[0mT\u001b[0mr\u001b[0mu\u001b[0mm\u001b[0mp\u001b[0m \u001b[0mC\u001b[0ml\u001b[0ma\u001b[0mi\u001b[0mm\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mR\u001b[0mu\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ma\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mn\u001b[0me\u001b[0mv\u001b[0me\u001b[0mr\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mv\u001b[0ma\u001b[0md\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mU\u001b[0mk\u001b[0mr\u001b[0ma\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0mw\u001b[0mh\u001b[0me\u001b[0mn\u001b[0m \u001b[0mR\u001b[0mu\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ma\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mr\u001b[0me\u001b[0ma\u001b[0md\u001b[0my\u001b[0m \u001b[0mh\u001b[0ma\u001b[0ms\u001b[0m \u001b[0m-\u001b[0m \u001b[0mh\u001b[0mo\u001b[0mw\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0mb\u001b[0me\u001b[0m?\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mT\u001b[0mr\u001b[0mu\u001b[0mm\u001b[0mp\u001b[0m \u001b[0mC\u001b[0ml\u001b[0ma\u001b[0mi\u001b[0mm\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mR\u001b[0mu\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ma\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mn\u001b[0me\u001b[0mv\u001b[0me\u001b[0mr\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mv\u001b[0ma\u001b[0md\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mU\u001b[0mk\u001b[0mr\u001b[0ma\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0mw\u001b[0mh\u001b[0me\u001b[0mn\u001b[0m \u001b[0mR\u001b[0mu\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ma\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mr\u001b[0me\u001b[0ma\u001b[0md\u001b[0my\u001b[0m \u001b[0mh\u001b[0ma\u001b[0ms\u001b[0m \u001b[0m-\u001b[0m \u001b[0mh\u001b[0mo\u001b[0mw\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0mb\u001b[0me\u001b[0m?\u001b[0m\n",
+ "\n",
+ "\n",
+ "\u001b[1m\u001b[36mPred: \u001b[0mA\u001b[0ms\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mn\u001b[0mg\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mp\u001b[0ma\u001b[0my\u001b[0m \u001b[0ma\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0md\u001b[0mu\u001b[0mc\u001b[0mt\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mn\u001b[0m \u001b[0mf\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m.\u001b[0m\n",
+ "\u001b[0mB\u001b[0mu\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mb\u001b[0me\u001b[0mt\u001b[0mt\u001b[0me\u001b[0mr\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mb\u001b[0me\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mC\u001b[0mo\u001b[0ms\u001b[0mt\u001b[0mc\u001b[0mo\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mW\u001b[0ma\u001b[0ml\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mu\u001b[0mf\u001b[0mf\u001b[0m \u001b[0mb\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mh\u001b[0me\u001b[0ma\u001b[0mp\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n",
+ "\u001b[0mI\u001b[0mf\u001b[0m \u001b[0ms\u001b[0mo\u001b[0m,\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mc\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0m \u001b[0mh\u001b[0my\u001b[0mp\u001b[0mo\u001b[0mc\u001b[0mr\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mn\u001b[0mk\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mA\u001b[0ms\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mn\u001b[0mg\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mp\u001b[0ma\u001b[0my\u001b[0m \u001b[0ma\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0md\u001b[0mu\u001b[0mc\u001b[0mt\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mn\u001b[0m \u001b[0mf\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m.\u001b[0m\n",
+ "\u001b[0mB\u001b[0mu\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mb\u001b[0me\u001b[0mt\u001b[0mt\u001b[0me\u001b[0mr\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mb\u001b[0me\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mC\u001b[0mo\u001b[0ms\u001b[0mt\u001b[0mc\u001b[0mo\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mW\u001b[0ma\u001b[0ml\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mu\u001b[0mf\u001b[0mf\u001b[0m \u001b[0mb\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mh\u001b[0me\u001b[0ma\u001b[0mp\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n",
+ "\u001b[0mI\u001b[0mf\u001b[0m \u001b[0ms\u001b[0mo\u001b[0m,\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mc\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0m \u001b[0mh\u001b[0my\u001b[0mp\u001b[0mo\u001b[0mc\u001b[0mr\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mn\u001b[0mk\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "scores_HMM = []\n",
+ "tag_to_ix = {\"non_toxic\": 0, \"toxic\": 1}\n",
+ "\n",
+ "for i, (gold_index, text) in enumerate(test.values):\n",
+ " tagged_sentence = tagger_HMM.tag(word_tokenize(text.lower())) \n",
+ " tagged_sentence = [(x[0], tag_to_ix[x[1]]) for x in tagged_sentence]\n",
+ " prediction_index = get_index_toxic_words(text.lower(), tagged_sentence)\n",
+ " \n",
+ " if i < 5:\n",
+ " print(colored('Pred: ', color='cyan', attrs=['bold']) + \n",
+ " color_toxic_words(prediction_index, text)) \n",
+ " print(colored('Gold: ', color='yellow', attrs=['bold']) + \n",
+ " color_toxic_words(gold_index, text) + '\\n'*2)\n",
+ " \n",
+ " scores_HMM.append(f1(prediction_index, gold_index))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "No es muy bueno desafortunadamente."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "HMM score: 0.319\n"
+ ]
+ }
+ ],
+ "source": [
+ "print('HMM score: {:.3f}'.format(np.mean(scores_HMM)))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "### Conditional Random Fields for Sequence Prediction"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 7939/7939 [00:09<00:00, 839.87it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "train_data_crf = []\n",
+ "for text, toxic_tags in tqdm(zip(train['text'], train_data), total=len(train_data)):\n",
+ " pos_tags = token_postag_label(text.lower())\n",
+ " sentence = []\n",
+ " for x,y in zip(pos_tags, toxic_tags):\n",
+ " sentence.append(x + (y[1],))\n",
+ " \n",
+ " train_data_crf.append(sentence)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train = [sent2features(s) for s in train_data_crf]\n",
+ "y_train = [sent2labels(s) for s in train_data_crf]\n",
+ "\n",
+ "trainer = pycrfsuite.Trainer(verbose=False)\n",
+ "\n",
+ "for xseq, yseq in zip(X_train, y_train):\n",
+ " trainer.append(xseq, yseq)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Probablemente sea buena idea hacer una búsqueda de los mejores hiperparámetros, ya que el performance cambia significativamente dependiendo de los hiperparámetros."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "trainer.set_params({\n",
+ " 'c1': 1.0, # coefficient for L1 penalty\n",
+ " 'c2': 0.01, # coefficient for L2 penalty\n",
+ " 'max_iterations': 100, # stop earlier\n",
+ " # include transitions that are possible, but not observed\n",
+ " 'feature.possible_transitions': True\n",
+ "})\n",
+ "\n",
+ "# trainer.params()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CPU times: user 13.8 s, sys: 2.63 ms, total: 13.8 s\n",
+ "Wall time: 13.8 s\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "%time trainer.train('models/toxic_speech.crfsuite')\n",
+ "\n",
+ "tagger_crf = pycrfsuite.Tagger()\n",
+ "tagger_crf.open('models/toxic_speech.crfsuite')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 690/690 [00:00<00:00, 857.18it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "test_data_crf = []\n",
+ "for text in tqdm(test['text']):\n",
+ " pos_tags = token_postag_label(text.lower())\n",
+ " sentence = []\n",
+ " for x in pos_tags:\n",
+ " sentence.append(x + ('',))\n",
+ " \n",
+ " test_data_crf.append(sentence)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[1m\u001b[36mPred: \u001b[0mB\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m'\u001b[0ms\u001b[0m \u001b[0ma\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ma\u001b[0m \u001b[0mb\u001b[0mi\u001b[0mg\u001b[0mo\u001b[0mt\u001b[0m.\u001b[0m \u001b[0mI\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m.\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mB\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mh\u001b[0me\u001b[0m'\u001b[0ms\u001b[0m \u001b[0ma\u001b[0m \u001b[0m\u001b[41mm\u001b[0m\u001b[41mo\u001b[0m\u001b[41mr\u001b[0m\u001b[41mo\u001b[0m\u001b[41mn\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ma\u001b[0m \u001b[0m\u001b[41mb\u001b[0m\u001b[41mi\u001b[0m\u001b[41mg\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m.\u001b[0m \u001b[0mI\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0ma\u001b[0mn\u001b[0my\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mc\u001b[0mo\u001b[0mm\u001b[0mp\u001b[0ml\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0mt\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "\u001b[1m\u001b[36mPred: \u001b[0mH\u001b[0mo\u001b[0mw\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mo\u001b[0mp\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mt\u001b[0me\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ml\u001b[0me\u001b[0mt\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mt\u001b[0mu\u001b[0mr\u001b[0me\u001b[0m \u001b[0ma\u001b[0md\u001b[0md\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mm\u001b[0me\u001b[0m \u001b[0mb\u001b[0ml\u001b[0me\u001b[0ma\u001b[0mc\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mn\u001b[0me\u001b[0m \u001b[0mp\u001b[0mo\u001b[0mo\u001b[0ml\u001b[0m.\u001b[0m \u001b[0mW\u001b[0me\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mw\u001b[0ma\u001b[0my\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mu\u001b[0mb\u001b[0mm\u001b[0mi\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mi\u001b[0mr\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mm\u001b[0me\u001b[0ms\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mD\u001b[0ma\u001b[0mr\u001b[0mw\u001b[0mi\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mw\u001b[0ma\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m.\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mH\u001b[0mo\u001b[0mw\u001b[0m \u001b[0ma\u001b[0mb\u001b[0mo\u001b[0mu\u001b[0mt\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mo\u001b[0mp\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0mt\u001b[0me\u001b[0mc\u001b[0mt\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0ml\u001b[0me\u001b[0mt\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mt\u001b[0mu\u001b[0mr\u001b[0me\u001b[0m \u001b[0ma\u001b[0md\u001b[0md\u001b[0m \u001b[0ms\u001b[0mo\u001b[0mm\u001b[0me\u001b[0m \u001b[0mb\u001b[0ml\u001b[0me\u001b[0ma\u001b[0mc\u001b[0mh\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mn\u001b[0me\u001b[0m \u001b[0mp\u001b[0mo\u001b[0mo\u001b[0ml\u001b[0m.\u001b[0m \u001b[0mW\u001b[0me\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mw\u001b[0ma\u001b[0my\u001b[0ms\u001b[0m \u001b[0ms\u001b[0mu\u001b[0mb\u001b[0mm\u001b[0mi\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mi\u001b[0mr\u001b[0m \u001b[0mn\u001b[0ma\u001b[0mm\u001b[0me\u001b[0ms\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mD\u001b[0ma\u001b[0mr\u001b[0mw\u001b[0mi\u001b[0mn\u001b[0m \u001b[0ma\u001b[0mw\u001b[0ma\u001b[0mr\u001b[0md\u001b[0ms\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "\u001b[1m\u001b[36mPred: \u001b[0mI\u001b[0mf\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0m \u001b[0mw\u001b[0me\u001b[0mr\u001b[0me\u001b[0m \u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0m \u001b[0mB\u001b[0mo\u001b[0my\u001b[0mc\u001b[0mo\u001b[0mt\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0m \u001b[0mi\u001b[0mn\u001b[0me\u001b[0mp\u001b[0mt\u001b[0m \u001b[0m \u001b[0ma\u001b[0mi\u001b[0mr\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0m \u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m,\u001b[0m \u001b[0m \u001b[0ms\u001b[0mo\u001b[0m \u001b[0m \u001b[0m \u001b[0mr\u001b[0mo\u001b[0mg\u001b[0mu\u001b[0me\u001b[0m \u001b[0m \u001b[0mb\u001b[0mu\u001b[0ms\u001b[0mi\u001b[0mn\u001b[0me\u001b[0ms\u001b[0ms\u001b[0me\u001b[0ms\u001b[0m \u001b[0m \u001b[0ml\u001b[0mi\u001b[0mk\u001b[0me\u001b[0m \u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0m \u001b[0mo\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0m \u001b[0m \u001b[0ms\u001b[0mt\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mr\u001b[0mi\u001b[0mv\u001b[0me\u001b[0m \u001b[0m \u001b[0m \u001b[0mt\u001b[0ma\u001b[0mk\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m \u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0m \u001b[0ma\u001b[0m \u001b[0mr\u001b[0mi\u001b[0md\u001b[0me\u001b[0m.\u001b[0m.\u001b[0m.\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mI\u001b[0mf\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0m \u001b[0mw\u001b[0me\u001b[0mr\u001b[0me\u001b[0m \u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0mw\u001b[0mo\u001b[0mu\u001b[0ml\u001b[0md\u001b[0m \u001b[0m \u001b[0mB\u001b[0mo\u001b[0my\u001b[0mc\u001b[0mo\u001b[0mt\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0m \u001b[0mi\u001b[0mn\u001b[0me\u001b[0mp\u001b[0mt\u001b[0m \u001b[0m \u001b[0ma\u001b[0mi\u001b[0mr\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0m \u001b[0mb\u001b[0mu\u001b[0mt\u001b[0m \u001b[0m \u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0my\u001b[0m \u001b[0m \u001b[0ma\u001b[0mr\u001b[0me\u001b[0m \u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0m \u001b[0ms\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m,\u001b[0m \u001b[0m \u001b[0ms\u001b[0mo\u001b[0m \u001b[0m \u001b[0m \u001b[0mr\u001b[0mo\u001b[0mg\u001b[0mu\u001b[0me\u001b[0m \u001b[0m \u001b[0mb\u001b[0mu\u001b[0ms\u001b[0mi\u001b[0mn\u001b[0me\u001b[0ms\u001b[0ms\u001b[0me\u001b[0ms\u001b[0m \u001b[0m \u001b[0ml\u001b[0mi\u001b[0mk\u001b[0me\u001b[0m \u001b[0m \u001b[0mt\u001b[0mh\u001b[0mi\u001b[0ms\u001b[0m \u001b[0m \u001b[0mo\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0m \u001b[0m \u001b[0ms\u001b[0mt\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mt\u001b[0mh\u001b[0mr\u001b[0mi\u001b[0mv\u001b[0me\u001b[0m \u001b[0m \u001b[0m \u001b[0mt\u001b[0ma\u001b[0mk\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m\u001b[41mi\u001b[0m\u001b[41mo\u001b[0m\u001b[41mt\u001b[0m\u001b[41ms\u001b[0m \u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0m \u001b[0ma\u001b[0m \u001b[0mr\u001b[0mi\u001b[0md\u001b[0me\u001b[0m.\u001b[0m.\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n",
+ "\u001b[1m\u001b[36mPred: \u001b[0mT\u001b[0mr\u001b[0mu\u001b[0mm\u001b[0mp\u001b[0m \u001b[0mC\u001b[0ml\u001b[0ma\u001b[0mi\u001b[0mm\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mR\u001b[0mu\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ma\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mn\u001b[0me\u001b[0mv\u001b[0me\u001b[0mr\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mv\u001b[0ma\u001b[0md\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mU\u001b[0mk\u001b[0mr\u001b[0ma\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0mw\u001b[0mh\u001b[0me\u001b[0mn\u001b[0m \u001b[0mR\u001b[0mu\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ma\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mr\u001b[0me\u001b[0ma\u001b[0md\u001b[0my\u001b[0m \u001b[0mh\u001b[0ma\u001b[0ms\u001b[0m \u001b[0m-\u001b[0m \u001b[0mh\u001b[0mo\u001b[0mw\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0mb\u001b[0me\u001b[0m?\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mT\u001b[0mr\u001b[0mu\u001b[0mm\u001b[0mp\u001b[0m \u001b[0mC\u001b[0ml\u001b[0ma\u001b[0mi\u001b[0mm\u001b[0me\u001b[0md\u001b[0m \u001b[0mt\u001b[0mh\u001b[0ma\u001b[0mt\u001b[0m \u001b[0mR\u001b[0mu\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ma\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0m \u001b[0mn\u001b[0me\u001b[0mv\u001b[0me\u001b[0mr\u001b[0m \u001b[0mi\u001b[0mn\u001b[0mv\u001b[0ma\u001b[0md\u001b[0me\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0m \u001b[0mU\u001b[0mk\u001b[0mr\u001b[0ma\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m,\u001b[0m \u001b[0mw\u001b[0mh\u001b[0me\u001b[0mn\u001b[0m \u001b[0mR\u001b[0mu\u001b[0ms\u001b[0ms\u001b[0mi\u001b[0ma\u001b[0m \u001b[0ma\u001b[0ml\u001b[0mr\u001b[0me\u001b[0ma\u001b[0md\u001b[0my\u001b[0m \u001b[0mh\u001b[0ma\u001b[0ms\u001b[0m \u001b[0m-\u001b[0m \u001b[0mh\u001b[0mo\u001b[0mw\u001b[0m \u001b[0m\u001b[41ms\u001b[0m\u001b[41mt\u001b[0m\u001b[41mu\u001b[0m\u001b[41mp\u001b[0m\u001b[41mi\u001b[0m\u001b[41md\u001b[0m \u001b[0mc\u001b[0ma\u001b[0mn\u001b[0m \u001b[0mp\u001b[0me\u001b[0mo\u001b[0mp\u001b[0ml\u001b[0me\u001b[0m \u001b[0mb\u001b[0me\u001b[0m?\u001b[0m\n",
+ "\n",
+ "\n",
+ "\u001b[1m\u001b[36mPred: \u001b[0mA\u001b[0ms\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mn\u001b[0mg\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mp\u001b[0ma\u001b[0my\u001b[0m \u001b[0ma\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0md\u001b[0mu\u001b[0mc\u001b[0mt\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mn\u001b[0m \u001b[0mf\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m.\u001b[0m\n",
+ "\u001b[0mB\u001b[0mu\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mb\u001b[0me\u001b[0mt\u001b[0mt\u001b[0me\u001b[0mr\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mb\u001b[0me\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mC\u001b[0mo\u001b[0ms\u001b[0mt\u001b[0mc\u001b[0mo\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mW\u001b[0ma\u001b[0ml\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mu\u001b[0mf\u001b[0mf\u001b[0m \u001b[0mb\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mh\u001b[0me\u001b[0ma\u001b[0mp\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n",
+ "\u001b[0mI\u001b[0mf\u001b[0m \u001b[0ms\u001b[0mo\u001b[0m,\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mc\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0m \u001b[0mh\u001b[0my\u001b[0mp\u001b[0mo\u001b[0mc\u001b[0mr\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mn\u001b[0mk\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n",
+ "\u001b[1m\u001b[33mGold: \u001b[0mA\u001b[0ms\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mn\u001b[0mg\u001b[0m \u001b[0ma\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0mr\u001b[0m \u001b[0mw\u001b[0mi\u001b[0ml\u001b[0ml\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mp\u001b[0ma\u001b[0my\u001b[0m \u001b[0ma\u001b[0m \u001b[0ml\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mm\u001b[0mo\u001b[0mr\u001b[0me\u001b[0m \u001b[0mf\u001b[0mo\u001b[0mr\u001b[0m \u001b[0mp\u001b[0mr\u001b[0mo\u001b[0md\u001b[0mu\u001b[0mc\u001b[0mt\u001b[0ms\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m,\u001b[0m \u001b[0mt\u001b[0mh\u001b[0me\u001b[0mn\u001b[0m \u001b[0mf\u001b[0mi\u001b[0mn\u001b[0me\u001b[0m.\u001b[0m\n",
+ "\u001b[0mB\u001b[0mu\u001b[0mt\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0mb\u001b[0me\u001b[0mt\u001b[0mt\u001b[0me\u001b[0mr\u001b[0m \u001b[0mn\u001b[0mo\u001b[0mt\u001b[0m \u001b[0mb\u001b[0me\u001b[0m \u001b[0mg\u001b[0mo\u001b[0mi\u001b[0mn\u001b[0mg\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mC\u001b[0mo\u001b[0ms\u001b[0mt\u001b[0mc\u001b[0mo\u001b[0m \u001b[0ma\u001b[0mn\u001b[0md\u001b[0m \u001b[0mW\u001b[0ma\u001b[0ml\u001b[0mm\u001b[0ma\u001b[0mr\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mb\u001b[0mu\u001b[0my\u001b[0m \u001b[0ms\u001b[0mt\u001b[0mu\u001b[0mf\u001b[0mf\u001b[0m \u001b[0mb\u001b[0me\u001b[0mc\u001b[0ma\u001b[0mu\u001b[0ms\u001b[0me\u001b[0m \u001b[0mi\u001b[0mt\u001b[0m'\u001b[0ms\u001b[0m \u001b[0mc\u001b[0mh\u001b[0me\u001b[0ma\u001b[0mp\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n",
+ "\u001b[0mI\u001b[0mf\u001b[0m \u001b[0ms\u001b[0mo\u001b[0m,\u001b[0m \u001b[0mw\u001b[0me\u001b[0m \u001b[0mg\u001b[0me\u001b[0mt\u001b[0m \u001b[0mt\u001b[0mo\u001b[0m \u001b[0mc\u001b[0ma\u001b[0ml\u001b[0ml\u001b[0m \u001b[0my\u001b[0mo\u001b[0mu\u001b[0m \u001b[0ma\u001b[0m \u001b[0mh\u001b[0my\u001b[0mp\u001b[0mo\u001b[0mc\u001b[0mr\u001b[0mi\u001b[0mt\u001b[0mi\u001b[0mc\u001b[0ma\u001b[0ml\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mn\u001b[0mk\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "scores_CRF = []\n",
+ "tag_to_ix = {\"non_toxic\": 0, \"toxic\": 1}\n",
+ "\n",
+ "for i, (text_crf, (gold_index,text)) in enumerate(zip(test_data_crf, test.values)):\n",
+ " words = [x[0] for x in text_crf]\n",
+ " tags = tagger_crf.tag(sent2features(text_crf))\n",
+ " \n",
+ " tagged_sentence = [(word, tag_to_ix[tag]) for word,tag in zip(words,tags)]\n",
+ " prediction_index = get_index_toxic_words(text.lower(), tagged_sentence)\n",
+ " \n",
+ " if i < 5:\n",
+ " print(colored('Pred: ', color='cyan', attrs=['bold']) + \n",
+ " color_toxic_words(prediction_index, text)) \n",
+ " print(colored('Gold: ', color='yellow', attrs=['bold']) + \n",
+ " color_toxic_words(gold_index, text) + '\\n'*2)\n",
+ " \n",
+ " scores_CRF.append(f1(prediction_index, gold_index))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Mejora pero sigue siendo bajo."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CRF score: 0.552\n"
+ ]
+ }
+ ],
+ "source": [
+ "print('CRF score: {:.3f}'.format(np.mean(scores_CRF)))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "FileNotFoundError",
+ "evalue": "[Errno 2] No such file or directory: '../Datos/tsd_test.csv'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mevaluation\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'../Datos/tsd_test.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mevaluation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/Documentos/Ciencia de Datos/3º semestre/PLN/Proyecto/SemEval2021/toxic-spans-venv/lib/python3.7/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)\u001b[0m\n\u001b[1;32m 603\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwds_defaults\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 604\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 605\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 606\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 607\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/Documentos/Ciencia de Datos/3º semestre/PLN/Proyecto/SemEval2021/toxic-spans-venv/lib/python3.7/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 455\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 457\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 458\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 459\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/Documentos/Ciencia de Datos/3º semestre/PLN/Proyecto/SemEval2021/toxic-spans-venv/lib/python3.7/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 812\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 813\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 814\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 815\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 816\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/Documentos/Ciencia de Datos/3º semestre/PLN/Proyecto/SemEval2021/toxic-spans-venv/lib/python3.7/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, engine)\u001b[0m\n\u001b[1;32m 1043\u001b[0m )\n\u001b[1;32m 1044\u001b[0m \u001b[0;31m# error: Too many arguments for \"ParserBase\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1045\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mmapping\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[call-arg]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1046\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1047\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_failover_to_python\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/Documentos/Ciencia de Datos/3º semestre/PLN/Proyecto/SemEval2021/toxic-spans-venv/lib/python3.7/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, src, **kwds)\u001b[0m\n\u001b[1;32m 1860\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1861\u001b[0m \u001b[0;31m# open handles\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1862\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open_handles\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1863\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandles\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1864\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mkey\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"storage_options\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"encoding\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"memory_map\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"compression\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/Documentos/Ciencia de Datos/3º semestre/PLN/Proyecto/SemEval2021/toxic-spans-venv/lib/python3.7/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_open_handles\u001b[0;34m(self, src, kwds)\u001b[0m\n\u001b[1;32m 1361\u001b[0m \u001b[0mcompression\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"compression\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1362\u001b[0m \u001b[0mmemory_map\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"memory_map\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1363\u001b[0;31m \u001b[0mstorage_options\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"storage_options\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1364\u001b[0m )\n\u001b[1;32m 1365\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/Documentos/Ciencia de Datos/3º semestre/PLN/Proyecto/SemEval2021/toxic-spans-venv/lib/python3.7/site-packages/pandas/io/common.py\u001b[0m in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m 645\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 646\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0merrors\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 647\u001b[0;31m \u001b[0mnewline\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 648\u001b[0m )\n\u001b[1;32m 649\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../Datos/tsd_test.csv'"
+ ]
+ }
+ ],
+ "source": [
+ "evaluation = pd.read_csv('../Datos/tsd_test.csv')\n",
+ "evaluation.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "indices_evaluation = []\n",
+ "\n",
+ "for text in evaluation['text']:\n",
+ " tagged_sentence = tagger_LSTM(text) \n",
+ " tagged_sentence = [(x[0], tag_to_ix[x[1]]) for x in tagged_sentence]\n",
+ " prediction_index = get_index_toxic_words(text.lower(), tagged_sentence)\n",
+ " indices_evaluation.append(prediction_index)\n",
+ " print(colored('Pred: ', color='cyan', attrs=['bold']) + \n",
+ " color_toxic_words(prediction_index, text)) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "evaluation['spans'] = indices_evaluation\n",
+ "evaluation = evaluation[['spans', 'text']]\n",
+ "evaluation.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Para la evaluación se debe subir un zip con un archivo txt de la siguiente manera (al final subir el archivo `spans-pred.zip` que se produce):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions = evaluation['spans'].tolist()\n",
+ "ids = evaluation.index.tolist()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "with open(\"spans-pred.txt\", \"w\") as out:\n",
+ " for uid, text_scores in zip(ids, predictions):\n",
+ " out.write(f\"{str(uid)}\\t{str(text_scores)}\\n\")\n",
+ " \n",
+ "# Zip the predictions\n",
+ "! zip -r spans-pred.zip ./spans-pred.* \n",
+ "! rm spans-pred.txt\n",
+ "! mv spans-pred.zip ../spans-pred.zip"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}