diff --git "a/notebooks/Training LSTM-bidirectional.ipynb" "b/notebooks/Training LSTM-bidirectional.ipynb" new file mode 100644--- /dev/null +++ "b/notebooks/Training LSTM-bidirectional.ipynb" @@ -0,0 +1,669 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Toxic Spans Detection" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 'GeForce RTX 2070')" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + "from torch.utils.data import Dataset, DataLoader\n", + "from torchinfo import summary\n", + "\n", + "from torchtext.data import Field\n", + "from torchtext.vocab import GloVe\n", + "\n", + "from nltk.tokenize import word_tokenize \n", + "from nltk.tokenize import TweetTokenizer \n", + "import spacy\n", + "import string\n", + "import ast\n", + "from termcolor import colored\n", + "\n", + "from tqdm import trange, tqdm\n", + "from IPython.display import clear_output\n", + "\n", + "from utils.processing import color_toxic_words, remove_symbols, completely_toxic, separate_words, get_index_toxic_words, f1, f1_scores\n", + "from utils.lstm import spacy_tokenizer, plot_loss_and_score, prepare_data, train_model\n", + "\n", + "sns.set_style('darkgrid')\n", + "nlp = spacy.load('en_core_web_md')\n", + "torch.manual_seed(42)\n", + "torch.backends.cudnn.deterministic = True\n", + "dev = 'cuda:0' if torch.cuda.is_available() else 'cpu'\n", + "torch.cuda.current_device(), torch.cuda.get_device_name(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# To plot using LaTeX, sometimes it gives trouble, in that case comment these two lines\n", + "plt.rc('text', usetex=True)\n", + "plt.rc('font', family='serif')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- [Preprocesamiento](#Preprocesamiento)\n", + "- [LSTM](#LSTM)\n", + " - [Embeddings](#Embeddings)\n", + " - [Datasets y dataloaders](#Datasets)\n", + " - [Training](#Training)\n", + "- [Evaluación](#Evaluación)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Preprocesamiento\n", + "\n", + "El mayor problema son las publicaciones que están como [ ], así que tratamos 3 preprocesamientos distintos (aplicando siempre `remove_symbols`), para los score de Codalab usamos el **procesamiento 2**:\n", + "\n", + "1. Dejando [ ] como están:\n", + " - **best-model-try1.pt**, *train*=0.6198, *test*=0.6258.\n", + "2. Poner los posts con [ ] como completamente tóxicos:\n", + " - **best-model-try2.pt**, *train*=0.6498 , *test*=0.6526 \n", + "3. Dropping [ ] del dataset de training:\n", + " - **best-model-try3.pt**, *train*=0.7260, *test*=0.6459\n", + " \n", + "Mejor score en Codalab: 0.6488." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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})\n", + "evaluation = pd.read_csv('../data/tsd_test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "train['spans_clean'] = train['spans']\n", + "test['spans_clean'] = test['spans']" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Preprocesamiento-1: dejando [ ] como están\n", + "\n", + "# # Quitamos símbolos\n", + "# indices_clean = [remove_symbols(index, text) for index,text in zip(train['spans'], train['text'])]\n", + "# train['spans_clean'] = indices_clean\n", + "\n", + "# # Pasamos a minúscula\n", + "# train['text'] = train['text'].apply(lambda x:x.lower())" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Preprocesamiento-2: poner los posts con [ ] como completamente tóxicos\n", + "\n", + "clean_spans = [completely_toxic(span, text) for (span, text) in zip(train['spans'], train['text'])]\n", + "train['spans_clean'] = clean_spans\n", + "\n", + "# Quitamos símbolos\n", + "indices_clean = [remove_symbols(index, text) for index,text in zip(train['spans'], train['text'])]\n", + "train['spans_clean'] = indices_clean\n", + "\n", + "# Pasamos a minúscula\n", + "train['text'] = train['text'].apply(lambda x:x.lower())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Preprocesamiento-3: quitar las publicaciones [ ] del conjunto de entrenamiento\n", + "\n", + "# indices = [i for i in train.index if len(train.loc[i]['spans']) == 0]\n", + "# train = train.drop(indices)\n", + "\n", + "# # Quitamos símbolos\n", + "# indices_clean = [remove_symbols(index, text) for index,text in zip(train['spans'], train['text'])]\n", + "# train['spans_clean'] = indices_clean\n", + "\n", + "# # Pasamos a minúscula\n", + "# train['text'] = train['text'].apply(lambda x:x.lower())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## LSTM\n", + "\n", + "Estamos basándonos en [Sequence models and LSTM networks](https://pytorch.org/tutorials/beginner/nlp/sequence_models_tutorial.html). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Cargar embeddings\n", + "\n", + "Checar [Deep Learning For NLP with PyTorch and Torchtext](https://towardsdatascience.com/deep-learning-for-nlp-with-pytorch-and-torchtext-4f92d69052f)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Descargar embeddings en caso de que no estén, puede tardar un rato\n", + "GloVe(name='twitter.27B', dim=200)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/david/Documentos/Ciencia de Datos/3º semestre/PLN/Proyecto/SemEval2021/toxic-spans-venv/lib/python3.7/site-packages/torchtext/data/field.py:150: UserWarning: Field class will be retired soon and moved to torchtext.legacy. Please see the most recent release notes for further information.\n", + " warnings.warn('{} class will be retired soon and moved to torchtext.legacy. Please see the most recent release notes for further information.'.format(self.__class__.__name__), UserWarning)\n" + ] + } + ], + "source": [ + "# Aquí había un problema, estábamos usando 2 tokenizadores diferentes para sacar los\n", + "# embeddings y para preprocesar el texto para entrenar. Pondré el de SpaCy como \n", + "# tokenizador en común con el corpus de 'en_core_web_md'\n", + "\n", + "text_field = Field(\n", + " tokenize='spacy',\n", + " tokenizer_language='en_core_web_md',\n", + " lower=True\n", + ")\n", + "label_field = Field(sequential=False, use_vocab=False)\n", + "# sadly have to apply preprocess manually\n", + "preprocessed_text = train['text'].apply(lambda x: text_field.preprocess(x))\n", + "# load fastext simple embedding with 300d\n", + "text_field.build_vocab(\n", + " preprocessed_text, \n", + " vectors='glove.twitter.27B.200d'\n", + ")\n", + "# get the vocab instance\n", + "vocab = text_field.vocab" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[4353, 12785, 29, 24, 57, 16, 7312, 980]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# El tokenizador hace bien su trabajo, los embeddings existen siempre y cuando la \n", + "# palabra esté en el dataset de entrenamiento\n", + "vocab.lookup_indices([\"f**k\", 'dont', \"do\", \"n't\", '...', \"are\", 'a**hole', 'asshole'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Datasets y dataloaders" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 7939/7939 [00:51<00:00, 153.53it/s]\n", + "100%|██████████| 690/690 [00:04<00:00, 154.67it/s]\n" + ] + } + ], + "source": [ + "train_data = prepare_data(train['spans_clean'], train['text'])\n", + "test_data = prepare_data(test['spans'], test['text'])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def prepare_sequence(seq):\n", + " idxs = vocab.lookup_indices(seq) # Si no está lo pone como 0\n", + " return torch.tensor(idxs, dtype=torch.long, device=dev)\n", + "\n", + "def prepare_sequence_tags(seq):\n", + " tag_to_ix = {\"non_toxic\": 0, \"toxic\": 1} \n", + " idxs = [tag_to_ix[s] for s in seq]\n", + " return torch.tensor(idxs, dtype=torch.long, device=dev)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "class SpansDataset(Dataset):\n", + " \"\"\"Spans dataset.\"\"\"\n", + "\n", + " def __init__(self, data):\n", + " self.data = data\n", + "\n", + " def __len__(self):\n", + " return len(self.data)\n", + "\n", + " def __getitem__(self, idx):\n", + " if torch.is_tensor(idx):\n", + " idx = idx.tolist()\n", + "\n", + " text = prepare_sequence(self.data[idx][0])\n", + " spans = prepare_sequence_tags(self.data[idx][1])\n", + " sample = {'tokenized' : self.data[idx][0], 'original_text' : self.data[idx][2], 'text': text, 'spans': spans, 'true_index' : self.data[idx][3]}\n", + "\n", + " return sample" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "train_size = len(train_data)\n", + "test_size = len(test_data)\n", + "\n", + "train_ds = SpansDataset(train_data)\n", + "test_ds = SpansDataset(test_data)\n", + "\n", + "# Having bigger batches WILL make training faster. However, big batches are more difficult \n", + "# in RNNs in general due to variable sequence size, they need padding.\n", + "trainloader = DataLoader(train_ds, batch_size=1, shuffle=True)\n", + "\n", + "# Test is dev in reality\n", + "testloader = DataLoader(test_ds, batch_size=1, shuffle=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "tag_to_ix = {\"non_toxic\": 0, \"toxic\": 1} # Assign each tag with a unique index" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "\n", + "### Training" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "class LSTMTagger(nn.Module):\n", + "\n", + " def __init__(self, embedding_dim, stacked_layers, dropout_p, weight, hidden_dim, vocab_size):\n", + " super(LSTMTagger, self).__init__()\n", + " self.hidden_dim = hidden_dim # Dimension del estado oculta en cada direccion de la LSTM\n", + " self.stacked_layers = stacked_layers # Cuantas capas en la LSTM\n", + " \n", + " self.word_embeddings = nn.Embedding.from_pretrained(weight)\n", + " self.lstm = nn.LSTM(embedding_dim,\n", + " hidden_dim,\n", + " num_layers=stacked_layers,\n", + " dropout=dropout_p,\n", + " bidirectional=True)\n", + "\n", + " # Linear layers\n", + " self.fc1 = nn.Linear(hidden_dim*2, 1) # 2 veces el tamaño de hidden_dim por ser bidireccional\n", + "\n", + " def forward(self, sentence):\n", + " embeds = self.word_embeddings(sentence)\n", + " output, _ = self.lstm(embeds.view(len(sentence), 1, -1))\n", + " x = torch.sigmoid(self.fc1(output.view(len(sentence), -1)))\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def tagger_LSTM(text, threshold=0.5):\n", + " \"\"\"\n", + " Hace el tagging con el modelo que entrenamos.\n", + " \"\"\"\n", + " ix_to_tag = {0: 'non_toxic', 1: 'toxic'}\n", + " words = spacy_tokenizer(text.lower()) # Parece funcionar mejor\n", + " \n", + " with torch.no_grad():\n", + " inputs = prepare_sequence(words)\n", + " tag_scores = model(inputs)\n", + " \n", + " tags = [1 if x > threshold else 0 for x in tag_scores]\n", + " tagged_sentence = list(zip(words, tags))\n", + "\n", + " return tagged_sentence" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# try2\n", + "HIDDEN_DIM = 600\n", + "embedding_dim = len(vocab.vectors[0])\n", + "model = LSTMTagger(embedding_dim, 6, 0.2, vocab.vectors, HIDDEN_DIM, len(vocab.vectors))\n", + "model.to(torch.device(dev)) # Lo mueve a la GPU, en caso de que haya\n", + "\n", + "# Antes eran 100\n", + "stop_after_best = 10\n", + "# Nombre del archivo de backup\n", + "savefile = 'models/best-model-try2.pt'" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "=================================================================\n", + "Layer (type:depth-idx) Param #\n", + "=================================================================\n", + "LSTMTagger --\n", + "├─Embedding: 1-1 (3,922,200)\n", + "├─LSTM: 1-2 47,097,600\n", + "├─Linear: 1-3 1,201\n", + "=================================================================\n", + "Total params: 51,021,001\n", + "Trainable params: 47,098,801\n", + "Non-trainable params: 3,922,200\n", + "=================================================================" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "summary(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training on: GeForce RTX 2070\n", + "###############################################\n", + "Current epoch: 21\n", + "Last model save was in epoch 11\n", + "Stopping training in: 1 epochs.\n", + "###############################################\n", + "[Best iter] training F1 is: 0.6766653565858526\n", + "[Best iter] dev F1 is: 0.6017265203778007\n", + "###############################################\n", + "[Last iter] training F1 was: 0.7492784357238852\n", + "[Last iter] dev. F1 was: 0.5907988600623444\n", + "###############################################\n" + ] + }, + { + "data": { + "image/png": "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zsPNqDp0Cr/d9RF+t+sjzB5rxtKpI3FFaT5MWZqExUGZK5QzGqrO4zG2j4Gz/EcDOqau9h9xjjl6QMcjIiJKFFHuAIiIiDLFsqkFuHPxZBQadRAQ7odx5+LJWDa1AHkGLb48ewweu242tn9jLm6oGIdWpw/3vXQESx9+E7f/04aXa5vj9sIgAgBn+TpI6uhpSpJaD2f5OkUdk4iIKBFYYUFERJRAXVUbubkGtLW5Yu4zNlePb5aPwzcuLcYHpzpRdegUXvigGa992IpsrQqXT87H0qkjcVFRLl48fIrLpFKEt3Q59h9vx+T3H0SB1IomYTiOlH4PUwfRa6LrmJPefxCFCTomERFRIjBhQUREJBNBEDC1wIipBUbc8qkSvG1vQ9WhU3jlSAv+ZWuCUaeCyxdCUOIyqRS241AT7js4CZ7Apsi2rIMi7ixsGvBrIhnHJCIiSgQmLIiIiBRAJQq4ZNwwXDJuGH54xSS8UX8aP6s6HElWdOEyqUPbQ7uORvVIAcKviXuqavF/e48N6JgftboQCPF1RkREysOEBRERkcJkaVS4csoI3PnvQzEfb4qxEgkNDfHufSAkYfQAV5050uzs17mIiIhShQkLIiIihYq3TGqBUSdDNKQE8V4ThUYdHvi8ZUDHvHrzHr7OiIhIkbhKCBERkULdNH88stTRH9VZahE3zR8vT0Aku2S8Jvg6IyIipWKFBRERkUJ19Q/gKiHUJRmvCb7OiIhIqZiwICIiUrCuZVKJuiTjNcHXGRERKRGnhBARERERERGR4jBhQURERERERESKw4QFERERERERESkOExZEREREREREpDhMWBARERERERGR4jBhQURERERERESKw4QFERERERERESkOExZEREREREREpDhMWBARERERERGR4jBhQURERERERESKw4QFERERERERESkOExZEREREREREpDiCJEmS3EEQEREREREREZ2LFRZEREREREREpDhMWBARERERERGR4jBhQURERERERESKw4QFERERERERESkOExZEREREREREpDhMWBARERERERGR4jBhQURERERERESKw4QF0RC0evXqbtvsdjsqKythtVpRWVmJjo6OuM/vz76pEOt6bDYbtm7disrKStxyyy2w2+1xn79x40ZMmTIFc+fOxerVq3vcNxViXU9/YkyH+zN37lxMmTIlck1TpkxBZWVlzOcr7f4QEVFicDwSTWmfdxyPRFPa/RkypAzQ0NAgbd68Wdq9e7e0efNmqb29PSH7yqWmpkbasmWLtHnzZunmm2+WGhoa4u57//33S6WlpdKcOXOkVatW9bivXPoTYzrcnzlz5kilpaWRayotLZU2b94cc1+l3Z/du3dLW7ZskUpLS7s9tnz58si/29vbpZtvvjnucfqzbzLFu5729nZpy5YtUftdccUVcY+zY8eOpMXYHz3dn/7EmA73Z/fu3VHbzr1f51PK/ZGknt+fM+2ziPov014DHI8o9/6k81hEkjgeiUcpn3ccj8SmlPsz1MYiGZGwSMc3tnjS9Y2tJ+n4xhZPur6xnW/OnDlRP9fU1EirVq3qcZ+B7Jsqsa7n3N+b9vZ2qbS0NO4bsdLuU6z/nn2NMR3uz/n3YceOHT0OoJVyf3p7f86kzyIamEx6DXA8otz7kyljEUnieOR8SrtXHI9I3R6X21Aci6T9lBCbzQaz2Rz52WQyobq6etD7yqWrdKpLWVkZ7Ha77CVUqZAO9wcAKioqIv+uqqqK+jld2e12GI3GqG1mszlmqVt/9pWLxWLBtm3bIj/X1NTAZDLBZDLF3N9ut6OqqgpWqxUbN25U5O9bX2NMh/tz7n3o6OhAe3s7ioqK4u6vlPvT0/tzpn0WUf9l2muA4xFl359MHIsAHI8o5fOuJxyPyHt/huJYRC13AIPV0y/D+S+4/uwrl4G+sZlMJuzevRs33nhj3H3l0tcY0+H+DPSNTcn3BwDa29tjbo/1RtyffeV07n/nLVu2YP369XH3XblyZWR/s9mMtWvX4vHHH096jP3R1xjT5f50eeSRR3DjjTf2uI9S7k9P78+Z9llE/ZdprwGOR5R7fzJ1LAJwPKKUz7uecDwi7/0ZimORtE9Y8I1N/l+c3vCNTdn3BwjH5nA4orbFux/92VcJtm7diquuugpLly6Nu8+5v3MWiwVWqzUVofVLX2NMt/tTXV2N22+/vcd9lHR/4r0/Z+JnEfVPJr4GOB6JprT7A2TWWATgeERJn3fxcDwSJuf9GWpjkbSfEsI3NmX84vQkk9/YevuGIh3uD4C4mVSLxTKofeVmtVpRVFTU4++QzWbDihUrUhhV//UnxnS7P+eWI8ai1Ptz/vtzJn8WUd9k8muA4xHl3p9MGosAHI8o8fPuXByPKOv+DJWxSNonLPjGpqxfnPPxjU3Z96eLxWKJepOy2+0oLy+P+rkr49rbvkrRNTeva15vVVVV5LFzr6eoqAgrV66MPGa1WrFkyZLUBtuL3mJMx/sDhO/R+eWIgPLvT6z350z9LKK+y9TXAMcjn1Da/cm0sQjA8YjSPu/Ox/GIcu7PUBqLpP2UkL68sZnNZphMprT5xel6Y+t6wVRVVUVejOdej9J+cWLpyxtbut0foOc3NiXfH5vNBqvVio6ODmzcuBHz5s2LfICuX78elZWVsFgssNlsuPfeeyPP69q363p62lcJ12O327Fq1aqosrZz39TPvZ6ue7V161YAQENDg+Kup7cY0+3+dOm6rvMp9f4A8d+fM/GziPonE18DHI988phS7086jkUAjkc4HlHG9XRJt/HIUBuLCJIkSXIHMVhdL8KuX4Zz5+rdcsstUb84Pe2rBHa7HStWrOj2xrZz504A3a/HarVGuu02NDQospFSTzGm2/3psnXrVjQ0NHSb65aO94eI+qa39+dM+iyigcmk1wDHI8q+PwDHIkRD0VAci2REwoKIiIiIiIiIMkva97AgIiIiIiIioszDhAURERERERERKQ4TFkRERERERESkOExYEBEREREREZHiMGFBRERERERERIqjljsAIpKX1WrFli1bUF1djY6ODlgsFowdOxYAcOzYMdhsNgDAb37zm8i64alis9mwdu1a2O123HPPPVFryRMREVHm4HiEiGJhwoJoiKuoqEBFRQVWr14Nq9WKlStXRn0Qd3R0YNWqVZE13FPJYrHgnnvuwerVq1N+biIiIkodjkeIKBZOCSGiHplMJtx2222yDBAAwGw2y3JeIiIiUg6OR4iGJiYsiCiurvLLiooKtLW1yRsMERERDUkcjxANXZwSQkQx2Ww2PPDAA3j88ccBADfeeCMAoKqqCj/5yU/Q0dERVapZU1OD8vJy3H777VHH2bhxIxwOB4xGI+x2O4qKirrt07Vf1+Nd355s2rQpap+tW7eio6MDO3bswNixY6Mer6ys7Lbvzp07B/FfgIiIiOTG8QjR0MaEBRFF2bp1K6qqqmC1WlFRURHZbrFYACDS6Grt2rUAgHvuuQdAeG7p3Llz8f7770cGFStWrIDZbI783LVt9erVUdtWr16Nmpoa7N27F0B4sPDoo4+io6MjKq4nnngCJpMJJpMJd999N6qqqrB06VLYbDbs2LED27Zti+y/Y8eOhP53ISIiotTheISIAE4JIaLzrFy5Eo8//njUB3g8XYMGIDy3tKKiAlarFXa7HVarFTabLWqQAQDl5eWRx4DwNydWqxXLli2L7HP77bdj586dMJlMkW1lZWWRn4uKigAgah6rzWbDihUrsHHjRlit1qjBAhEREaUXjkeICGDCgojiOP+DvatEsifnfnB3DQDO/ZAHgNzcXADhks2ufQHAaDTGPFaX8x8/V1f3bgB49NFHsXr1aqxYsaLHWImIiEj5OB4hGtqYsCCiuM79VqO6urrbh/b5uj7si4qKIvueW0YJINIsq+vxWN9OxNI1sIil65uTbdu24fDhw/jNb34Dm82GqqqqHo9JREREysfxCNHQxYQFEfWqsrKy2wc98EnXbgCRssslS5agqKgIS5cuRVFRUbe5my+88AIsFkvkG5Ouf1dXV0edo7KyMur4PampqcHdd98d+Xnp0qWoqKjo9m0KERERpS+OR4iGHjbdJBrirFYrtmzZEimJ3Lp1K3bv3g0AcDgcqKmpQUdHB5YsWdLtuW1tbdi4cSOA8Dcet912G9asWRN5fNu2bXjggQdwyy23IDc3F21tbViyZEm3rtyPP/44Nm7ciFWrVqGsrAxGoxHTp08HADzwwAORuEwmE8rKyiIduHfs2IGioiKYzWYYjUbcfffdMBqNcDgcqKio6FZGSkRERMrE8QgRxSJIkiTJHQQRpZeqqiqsXbsW99xzT9RSYkRERESpwvEIUebjlBAiIiIiIiIiUhwmLIioX6xWKzZv3gzgkzXSiYiIiFKJ4xGioYFTQoiIiIiIiIhIcVhhQURERERERESKw4QFERERERERESkOExZEREREREREpDhMWBARERERERGR4jBhQURERERERESKw4QFERERERERESnO/wMC/9Ux0y+m3wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 7939/7939 [06:52<00:00, 19.26it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting evaluation for loss function.\n", + "Starting evaluation for dev F1\n", + "Finished Training\n" + ] + } + ], + "source": [ + "loss_per_epoch, training_loss, f1_scores_train, f1_scores_dev = train_model(model, trainloader, testloader, stop_after_best, savefile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para graficar la red ver [Visualize a net in PyTorch?](https://stackoverflow.com/questions/52468956/how-do-i-visualize-a-net-in-pytorch)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Evaluación" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# model = torch.load('best-model-try2.pt')\n", + "# model.eval()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "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})\n", + "evaluation = pd.read_csv('../data/tsd_test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\u001b[1m\u001b[36m Pred: \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", + "0\u001b[1m\u001b[33m Gold: \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", + "1\u001b[1m\u001b[36m Pred: \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", + "1\u001b[1m\u001b[33m Gold: \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", + "2\u001b[1m\u001b[36m Pred: \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", + "2\u001b[1m\u001b[33m Gold: \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", + "3\u001b[1m\u001b[36m Pred: \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", + "3\u001b[1m\u001b[33m Gold: \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", + "4\u001b[1m\u001b[36m Pred: \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[0m\u001b[41mh\u001b[0m\u001b[41my\u001b[0m\u001b[41mp\u001b[0m\u001b[41mo\u001b[0m\u001b[41mc\u001b[0m\u001b[41mr\u001b[0m\u001b[41mi\u001b[0m\u001b[41mt\u001b[0m\u001b[41mi\u001b[0m\u001b[41mc\u001b[0m\u001b[41ma\u001b[0m\u001b[41ml\u001b[0m \u001b[0mw\u001b[0ma\u001b[0mn\u001b[0mk\u001b[0me\u001b[0mr\u001b[0m.\u001b[0m\n", + "4\u001b[1m\u001b[33m Gold: \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": [ + "indices_test = []\n", + "for i, (gold_index, text) in enumerate(zip(test['spans'],test['text'])):\n", + " tagged_sentence = tagger_LSTM(text) \n", + " prediction_index = get_index_toxic_words(text.lower(), tagged_sentence)\n", + " indices_test.append(prediction_index)\n", + " \n", + " if i < 5:\n", + " print(str(i) + colored(' Pred: ', color='cyan', attrs=['bold']) + \n", + " color_toxic_words(prediction_index, text))\n", + " print(str(i) + colored(' Gold: ', color='yellow', attrs=['bold']) + \n", + " color_toxic_words(gold_index, text) + '\\n'*2)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "F1 in test: 0.550321\n" + ] + } + ], + "source": [ + "score_test = [f1(pred, gold) for pred,gold in zip(indices_test, test['spans'])]\n", + "print('F1 in test: {:.6f}'.format(np.mean(score_test)))" + ] + } + ], + "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" + }, + "toc-autonumbering": true + }, + "nbformat": 4, + "nbformat_minor": 4 +}