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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
spanstext
0[8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,...Another violent and aggressive immigrant killi...
1[33, 34, 35, 36, 37, 38, 39]I am 56 years old, I am not your fucking junio...
2[0, 1, 2, 3]Damn, a whole family. Sad indeed.
3[7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]What a knucklehead. How can anyone not know th...
4[32, 33, 34, 35, 36, 37, 38]\"who do you think should do the killing?\"\\n\\nA...
\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 +}