{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "884b2140",
      "metadata": {
        "id": "884b2140"
      },
      "source": [
        "# Procesamiento y detección de tópicos con LDA\n",
        "\n",
        "En este notebook se trabaja con el News Category Dataset de HuffPost.\n",
        "\n",
        "El objetivo es construir un flujo completo de análisis de tópicos:\n",
        "\n",
        "- Cargar un corpus de noticias,\n",
        "- Explorar sus categorías,\n",
        "- Construir un texto de trabajo,\n",
        "- Aplicar un preprocesamiento básico,\n",
        "- Representar los documentos mediante una matriz documento-término con conteos,\n",
        "- Entrenar un modelo LDA,\n",
        "- Interpretar los tópicos aprendidos,\n",
        "- Analizar la mezcla de tópicos por documento,\n",
        "- Comparar los resultados con las categorías reales del dataset,\n",
        "- Probar distintos números de tópicos,\n",
        "- Revisar algunas limitaciones,\n",
        "- Añadir extensiones opcionales con lematización y TF-IDF."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "98cb68d8",
      "metadata": {
        "id": "98cb68d8"
      },
      "source": [
        "## 1. Carga del dataset\n",
        "\n",
        "El dataset, que se descarga automáticamente en el siguiente bloque de código, está representado formato JSON por líneas. Esto significa que cada línea del archivo contiene una noticia en formato JSON."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "dd12455b",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "dd12455b",
        "outputId": "8cc44938-ddc8-42c5-c722-020c7d972270"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "--2026-05-20 11:54:07--  https://webs.um.es/slopez/datasets/BigData/News_Category_Dataset_HuffPost.json\n",
            "Resolving webs.um.es (webs.um.es)... 155.54.212.112\n",
            "Connecting to webs.um.es (webs.um.es)|155.54.212.112|:443... connected.\n",
            "HTTP request sent, awaiting response... 200 OK\n",
            "Length: 87295572 (83M) [application/json]\n",
            "Saving to: ‘News_Category_Dataset_HuffPost.json’\n",
            "\n",
            "News_Category_Datas 100%[===================>]  83.25M  84.1MB/s    in 1.0s    \n",
            "\n",
            "2026-05-20 11:54:08 (84.1 MB/s) - ‘News_Category_Dataset_HuffPost.json’ saved [87295572/87295572]\n",
            "\n"
          ]
        }
      ],
      "source": [
        "!wget https://webs.um.es/slopez/datasets/BigData/News_Category_Dataset_HuffPost.json"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "c19487df",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 311
        },
        "id": "c19487df",
        "outputId": "1ed2c3ad-4df7-4fe7-dcb1-61eab4231097"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones del dataset: (209527, 6)\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>link</th>\n",
              "      <th>headline</th>\n",
              "      <th>category</th>\n",
              "      <th>short_description</th>\n",
              "      <th>authors</th>\n",
              "      <th>date</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>https://www.huffpost.com/entry/covid-boosters-...</td>\n",
              "      <td>Over 4 Million Americans Roll Up Sleeves For O...</td>\n",
              "      <td>U.S. NEWS</td>\n",
              "      <td>Health experts said it is too early to predict...</td>\n",
              "      <td>Carla K. Johnson, AP</td>\n",
              "      <td>2022-09-23</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>https://www.huffpost.com/entry/american-airlin...</td>\n",
              "      <td>American Airlines Flyer Charged, Banned For Li...</td>\n",
              "      <td>U.S. NEWS</td>\n",
              "      <td>He was subdued by passengers and crew when he ...</td>\n",
              "      <td>Mary Papenfuss</td>\n",
              "      <td>2022-09-23</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>https://www.huffpost.com/entry/funniest-tweets...</td>\n",
              "      <td>23 Of The Funniest Tweets About Cats And Dogs ...</td>\n",
              "      <td>COMEDY</td>\n",
              "      <td>\"Until you have a dog you don't understand wha...</td>\n",
              "      <td>Elyse Wanshel</td>\n",
              "      <td>2022-09-23</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>https://www.huffpost.com/entry/funniest-parent...</td>\n",
              "      <td>The Funniest Tweets From Parents This Week (Se...</td>\n",
              "      <td>PARENTING</td>\n",
              "      <td>\"Accidentally put grown-up toothpaste on my to...</td>\n",
              "      <td>Caroline Bologna</td>\n",
              "      <td>2022-09-23</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>https://www.huffpost.com/entry/amy-cooper-lose...</td>\n",
              "      <td>Woman Who Called Cops On Black Bird-Watcher Lo...</td>\n",
              "      <td>U.S. NEWS</td>\n",
              "      <td>Amy Cooper accused investment firm Franklin Te...</td>\n",
              "      <td>Nina Golgowski</td>\n",
              "      <td>2022-09-22</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                link  \\\n",
              "0  https://www.huffpost.com/entry/covid-boosters-...   \n",
              "1  https://www.huffpost.com/entry/american-airlin...   \n",
              "2  https://www.huffpost.com/entry/funniest-tweets...   \n",
              "3  https://www.huffpost.com/entry/funniest-parent...   \n",
              "4  https://www.huffpost.com/entry/amy-cooper-lose...   \n",
              "\n",
              "                                            headline   category  \\\n",
              "0  Over 4 Million Americans Roll Up Sleeves For O...  U.S. NEWS   \n",
              "1  American Airlines Flyer Charged, Banned For Li...  U.S. NEWS   \n",
              "2  23 Of The Funniest Tweets About Cats And Dogs ...     COMEDY   \n",
              "3  The Funniest Tweets From Parents This Week (Se...  PARENTING   \n",
              "4  Woman Who Called Cops On Black Bird-Watcher Lo...  U.S. NEWS   \n",
              "\n",
              "                                   short_description               authors  \\\n",
              "0  Health experts said it is too early to predict...  Carla K. Johnson, AP   \n",
              "1  He was subdued by passengers and crew when he ...        Mary Papenfuss   \n",
              "2  \"Until you have a dog you don't understand wha...         Elyse Wanshel   \n",
              "3  \"Accidentally put grown-up toothpaste on my to...      Caroline Bologna   \n",
              "4  Amy Cooper accused investment firm Franklin Te...        Nina Golgowski   \n",
              "\n",
              "        date  \n",
              "0 2022-09-23  \n",
              "1 2022-09-23  \n",
              "2 2022-09-23  \n",
              "3 2022-09-23  \n",
              "4 2022-09-22  "
            ]
          },
          "execution_count": 2,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "import pandas as pd\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import re\n",
        "from collections import Counter\n",
        "\n",
        "# El dataset de HuffPost está representado en formato JSON por líneas.\n",
        "df = pd.read_json('News_Category_Dataset_HuffPost.json', lines=True)\n",
        "\n",
        "print(\"Dimensiones del dataset:\", df.shape)\n",
        "df.head()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "a6d7c15c",
      "metadata": {
        "id": "a6d7c15c"
      },
      "source": [
        "### Inspección inicial\n",
        "\n",
        "Antes de procesar el texto, revisamos qué columnas contiene el dataset.\n",
        "\n",
        "- `link`: enlace,\n",
        "- `headline`: titular,\n",
        "- `category`: categoría original de la noticia,\n",
        "- `short_description`: breve descripción,\n",
        "- `authors`: autores,\n",
        "- `date`: fecha.\n",
        "\n",
        "Para el análisis de tópicos no usaremos la categoría como etiqueta de entrenamiento. La categoría se utilizará más adelante solo como ayuda para interpretar los resultados."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "id": "0ab9f3f4",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "0ab9f3f4",
        "outputId": "cfb0bf48-66df-49f4-cbd4-9421c46acfbf"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "<class 'pandas.DataFrame'>\n",
            "RangeIndex: 209527 entries, 0 to 209526\n",
            "Data columns (total 6 columns):\n",
            " #   Column             Non-Null Count   Dtype         \n",
            "---  ------             --------------   -----         \n",
            " 0   link               209527 non-null  str           \n",
            " 1   headline           209527 non-null  str           \n",
            " 2   category           209527 non-null  str           \n",
            " 3   short_description  209527 non-null  str           \n",
            " 4   authors            209527 non-null  str           \n",
            " 5   date               209527 non-null  datetime64[us]\n",
            "dtypes: datetime64[us](1), str(5)\n",
            "memory usage: 9.6 MB\n"
          ]
        }
      ],
      "source": [
        "df.info()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "id": "d5c889a2",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "d5c889a2",
        "outputId": "807bcdf3-c79c-4c57-b753-e88e2818cb68"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Ejemplo de noticia:\n",
            "- Link:  https://www.huffpost.com/entry/covid-boosters-uptake-us_n_632d719ee4b087fae6feaac9\n",
            "- Headline:  Over 4 Million Americans Roll Up Sleeves For Omicron-Targeted COVID Boosters\n",
            "- Category:  U.S. NEWS\n",
            "- Short description:  Health experts said it is too early to predict whether demand would match up with the 171 million doses of the new boosters the U.S. ordered for the fall.\n",
            "- Authors:  Carla K. Johnson, AP\n",
            "- Date:  2022-09-23 00:00:00\n"
          ]
        }
      ],
      "source": [
        "print(\"Ejemplo de noticia:\")\n",
        "print(\"- Link: \", df.iloc[0][\"link\"])\n",
        "print(\"- Headline: \", df.iloc[0][\"headline\"])\n",
        "print(\"- Category: \", df.iloc[0][\"category\"])\n",
        "print(\"- Short description: \", df.iloc[0][\"short_description\"])\n",
        "print(\"- Authors: \", df.iloc[0][\"authors\"])\n",
        "print(\"- Date: \", df.iloc[0][\"date\"])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "id": "SfDFDenSjBS6",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "SfDFDenSjBS6",
        "outputId": "e89cbba3-a6ce-4629-eff1-4dae635b5af6"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<StringArray>\n",
              "[     'U.S. NEWS',         'COMEDY',      'PARENTING',     'WORLD NEWS',\n",
              " 'CULTURE & ARTS',           'TECH',         'SPORTS',  'ENTERTAINMENT',\n",
              "       'POLITICS',     'WEIRD NEWS',    'ENVIRONMENT',      'EDUCATION',\n",
              "          'CRIME',        'SCIENCE',       'WELLNESS',       'BUSINESS',\n",
              " 'STYLE & BEAUTY',   'FOOD & DRINK',          'MEDIA',   'QUEER VOICES',\n",
              "  'HOME & LIVING',          'WOMEN',   'BLACK VOICES',         'TRAVEL',\n",
              "          'MONEY',       'RELIGION',  'LATINO VOICES',         'IMPACT',\n",
              "       'WEDDINGS',        'COLLEGE',        'PARENTS', 'ARTS & CULTURE',\n",
              "          'STYLE',          'GREEN',          'TASTE', 'HEALTHY LIVING',\n",
              "  'THE WORLDPOST',      'GOOD NEWS',      'WORLDPOST',          'FIFTY',\n",
              "           'ARTS',        'DIVORCE']\n",
              "Length: 42, dtype: str"
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Listado categorías en la columna \"category\"\n",
        "df[\"category\"].unique()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "ff03e3d3",
      "metadata": {
        "id": "ff03e3d3"
      },
      "source": [
        "## 2. Exploración inicial del corpus\n",
        "\n",
        "El dataset completo contiene muchas categorías. Para una práctica guiada, es recomendable trabajar con un subconjunto reducido.\n",
        "\n",
        "Esto permite que:\n",
        "\n",
        "- el entrenamiento sea más rápido,\n",
        "- los tópicos sean más fáciles de interpretar,\n",
        "- y podamos comparar los tópicos aprendidos con categorías reales conocidas.\n",
        "\n",
        "Aunque LDA es un método no supervisado, las categorías reales nos ayudan a comprobar si los tópicos descubiertos tienen sentido."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "id": "1c0b34ce",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 761
        },
        "id": "1c0b34ce",
        "outputId": "be76a58c-f7f7-4d6e-a14e-0bf7d2446476"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Número de categorías: 42\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "category\n",
              "POLITICS          35602\n",
              "WELLNESS          17945\n",
              "ENTERTAINMENT     17362\n",
              "TRAVEL             9900\n",
              "STYLE & BEAUTY     9814\n",
              "PARENTING          8791\n",
              "HEALTHY LIVING     6694\n",
              "QUEER VOICES       6347\n",
              "FOOD & DRINK       6340\n",
              "BUSINESS           5992\n",
              "COMEDY             5400\n",
              "SPORTS             5077\n",
              "BLACK VOICES       4583\n",
              "HOME & LIVING      4320\n",
              "PARENTS            3955\n",
              "THE WORLDPOST      3664\n",
              "WEDDINGS           3653\n",
              "WOMEN              3572\n",
              "CRIME              3562\n",
              "IMPACT             3484\n",
              "Name: count, dtype: int64"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Número de documentos por categoría\n",
        "conteo_categorias = df[\"category\"].value_counts()\n",
        "\n",
        "print(\"Número de categorías:\", conteo_categorias.shape[0])\n",
        "conteo_categorias.head(20)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "id": "966ae8d9",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 565
        },
        "id": "966ae8d9",
        "outputId": "bf959e3f-5ce3-4226-98e9-9d1c1e3c34fb"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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cHFxMd+L1HvetGlTi7hly5YZkozdu3eb+5o1a2YEBgZanXvJkiWGJGPFihUW/fv27TMkGXPnzjUMwzC+/PJLQ5IRGxub7jWm5fjx44Yki98xwzCMRYsWGZKMbt26mfsye78Nw/qepWXevHmGJOPrr7+26O/Tp0+m/v24fv264ebmZsyZM8fcv3z5ckOSsXXr1gzPnfrfk3Pnzlnl4O7ubgwePDjdsUlJSUa+fPms/l26d++eUbFiRaNq1armvnfeeceQZPz0008Z5gPANvF4MADgoc6ePatOnTrJ399f9vb2cnR0VN26dSVJx48ff+j4NWvWyGQyqXPnzrp79665+fv7q2LFiubH9Pbs2aPk5GS1a9fOYnz16tUVFBRk0bdlyxaVKVNGVatWtejv3r27DMMwrwCnatmypXkFJyN3797VlClTVKZMGTk5OcnBwUFOTk768ccfLa61atWqOnTokF599VWtX79eiYmJD537Qc2bN7f4uXTp0pKkZs2aWfVfuXLF4hHho0ePqmPHjgoMDJSbm5tcXFzUq1cv3bt3T6dOnZIkBQcHy9vbW6NGjdJHH32kY8eOZSm/9FSoUMFixVu6/+cbFhamQoUKWfz5NmnSRJK0bds2SdJ///tfubi4qGfPno+cx61bt7R582a98MILcnV1tThv06ZNdevWLe3Zs8dizIOPvKdeiySLR1vTs2bNGnl5ealFixYW56pUqZL8/f3Nv8OVKlWSk5OT+vbtq4ULF1o9/p6erVu3SpJefvlli/527drJwcHywbjM3u/M2rp1qzw8PKzuT6dOnaxir1+/rlGjRik4OFgODg5ycHCQu7u7kpKSMvXfAkn6/fff9corryggIEAODg5ydHRUYGCgJFn9OxYdHa3Jkydrz549Vo+/79q1S1euXFG3bt0s7kNKSooaN26sffv2WbzCAOCfi8eDAeAJ4+vrK1dXV/3000+Zir9+/bqeffZZubi4aPLkyQoJCZGrq6vOnz+vF198UTdv3nzoHL/99psMwzA/AvxXqTv3pj72l1bcX/suX75sVchKUqFChSzmSpX6SODDDB06VB9++KFGjRqlunXrytvbW3Z2durdu7fFtYaHh8vNzU2ff/65PvroI9nb26tOnTp6++23VaVKlYeeJ1++fBY/Ozk5Zdh/69Ytubu765dfflHNmjVVunRpzZo1S8WL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JSYm6siRI2ysAgDAE4Z3WgEANsXNzU379+/XggULdPXqVXl6eqpevXqKiIigYAUA4AnESisAAAAAwGY9+te9AQAAAAB4TChaAQAAAAA2i6IVAAAAAGCz2IgJf6uUlBRduHBBHh4eMplMuZ0OAAAAgFxiGIauXbumQoUKyc4u/fVUilb8rS5cuKCAgIDcTgMAAACAjTh//ryKFCmS7nGKVvytPDw8JN3/xcybN28uZwMAAAAgtyQmJiogIMBcI6SHohV/q9RHgvPmzUvRCgAAAOChrw2yERMAAAAAwGZRtAIAAAAAbBZFKwAAAADAZlG0AgAAAABsFhsxIVeUG79eds6uuZ0GAAAA8MSIm9Yst1PIFlZaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLovUx6d69u0wmk0wmkxwdHVW8eHENHz5cSUlJ5piFCxeqatWqcnNzk4eHh+rUqaM1a9ZYzBMTEyOTyaSrV6+meZ4JEyaoUqVKkqSgoCDzOdNq9erVM8fNnj3bYp6DBw/qpZdeUoECBeTi4qKQkBD16dNHp06dMsesWLFC1apVk6enpzw8PFS2bFkNGzbske8VAAAAAKSHovUxaty4sS5evKizZ89q8uTJmjt3roYPHy5JGj58uPr166d27drp0KFD2rt3r5599lm1atVKH3zwQbbOt2/fPl28eFEXL17UihUrJEknT540961cuTLNcWvWrFH16tWVnJysRYsW6fjx4/rPf/4jT09PjR07VpK0adMmdejQQW3bttXevXv1v//9TxEREbp9+3a2cgUAAACAzGD34MfI2dlZ/v7+kqROnTpp69atWrVqlbp166aZM2fqvffe08CBA83xERERunXrloYOHapWrVopICAgS+fz8/Mz/3O+fPkkSfnz55eXl1e6Y27cuKEePXqoadOm+uqrr8z9xYoVU7Vq1cwrvGvWrFHt2rU1YsQIc0xISIhat26dpRwBAAAAICtYaf0b5cmTR3fu3NGSJUvk7u6ufv36WcUMGzZMd+7cMa+UPm7r16/XH3/8oZEjR6Z5PLXg9ff319GjR3XkyJEszZ+cnKzExESLBgAAAACZRdH6N9m7d68WL16s+vXr69SpUypRooScnJys4goVKiRPT0+Ld0kfpx9//FGSVKpUqQzjBg4cqGeeeUbly5dXUFCQOnTooMjISCUnJ2c4burUqfL09DS3rK4eAwAAAHiyUbQ+RmvWrJG7u7tcXFxUo0YN1alTR++///5DxxmGIZPJ9DdkeP9cmeHm5qZvv/1Wp0+f1pgxY+Tu7q5hw4apatWqunHjRrrjwsPDlZCQYG7nz5/PqdQBAAAAPAEoWh+jsLAwxcbG6uTJk7p165ZWrlyp/PnzKyQkRGfOnElzE6MLFy4oMTFRJUuW/FtyDAkJkSSdOHEiU/ElSpRQ79699emnn+rAgQM6duyYli5dmm68s7Oz8ubNa9EAAAAAILMoWh8jNzc3BQcHKzAwUI6Ojub+Dh066Pr16/r444+txsyYMUOOjo5q06bN35Lj888/L19fX02fPj3N4+l9ake6/+kcV1dXi8/4AAAAAEBOYvfgXFCjRg29/vrrGjFihG7fvq3WrVvrzp07+vzzzzVnzhzNnj3b6t3Pw4cPy8PDw6Iv9fusj8LNzU2ffvqpXnrpJbVs2VKDBg1ScHCw/vjjDy1btkw///yzvvjiC02YMEE3btxQ06ZNFRgYqKtXr+q9997TnTt31LBhw0fOAwAAAADSQtGaS2bPnq0KFSpo3rx5Gjt2rEwmk5566imtWrVKLVq0sIqvU6eOVV9m30d9mFatWmnXrl2aOnWqOnXqpMTERAUEBOi5557T5MmTJUl169bVhx9+qK5du+q3336Tt7e3KleurA0bNig0NDRH8gAAAACAvzIZOVX5AJmQmJh4fxfhwctk5+ya2+kAAAAAT4y4ac1yOwULqbVBQkJChnvf8E4rAAAAAMBm8XgwcsWRiY3YSRgAAADAQ7HSCgAAAACwWRStAAAAAACbRdEKAAAAALBZFK0AAAAAAJtF0QoAAAAAsFkUrQAAAAAAm0XRCgAAAACwWRStAAAAAACbRdEKAAAAALBZFK0AAAAAAJtF0QoAAAAAsFkUrQAAAAAAm0XRCgAAAACwWRStAAAAAACb5ZDbCeDJVG78etk5u+Z2GgCARxA3rVlupwAAeAKw0goAAAAAsFkUrQAAAAAAm0XRCgAAAACwWRStmfDRRx/Jw8NDd+/eNfddv35djo6OevbZZy1id+zYIZPJpFOnTikoKEgmk8mqTZs2TZIUFxcnk8mk2NjYNM8bHR0tLy+vdPPq3r27xXypVq1aJZPJZP45JiYmzTxMJpPi4+MlSUlJSRo1apSKFy8uFxcX+fn5qV69elqzZo15nrNnz6pjx44qVKiQXFxcVKRIEbVq1UqnTp3K1H0EAAAAgKxiI6ZMCAsL0/Xr17V//35Vr15d0v3i1N/fX/v27dONGzfk6np/U6GYmBgVKlRIISEhkqRJkyapT58+FvN5eHjkWG4uLi56++231a9fP3l7e2cYe/LkSeXNm9eiL3/+/JKkV155RXv37tUHH3ygMmXK6PLly9q1a5cuX74sSbp9+7YaNmyoUqVKaeXKlSpYsKB++eUXrV27VgkJCTl2PQAAAADwIIrWTAgNDVWhQoUUExNjLlpjYmLUqlUrbd26Vbt27VKDBg3M/WFhYeaxHh4e8vf3f2y5NWjQQKdPn9bUqVM1ffr0DGPz58+f7srt6tWrNWfOHDVt2lSSFBQUpKefftp8/NixYzp79qy2bNmiwMBASVJgYKBq1aqVMxcCAAAAAGng8eBMqlevnrZu3Wr+eevWrapXr57q1q1r7r99+7Z2795tUbQ+bvb29poyZYref/99/fLLL9mex9/fX2vXrtW1a9fSPO7n5yc7Ozt9+eWXunfvXqbnTU5OVmJiokUDAAAAgMyiaM2kevXqaefOnbp7966uXbumgwcPqk6dOqpbt65iYmIkSXv27NHNmzctitZRo0bJ3d3doqXG55QXXnhBlSpV0vjx4zOMK1KkiEUeoaGh5mPz58/Xrl275OPjo2eeeUZDhgzRzp07zccLFy6s9957T+PGjZO3t7eee+45vfXWWzp79myG55w6dao8PT3NLSAg4NEuFgAAAMAThaI1k8LCwpSUlKR9+/Zpx44dCgkJUf78+VW3bl3t27dPSUlJiomJUdGiRVW8eHHzuBEjRig2NtaiVatWLcfze/vtt7Vw4UIdO3Ys3ZgdO3ZY5LF+/XrzsTp16ujs2bPavHmz2rRpo6NHj+rZZ5/VW2+9ZY4ZMGCA4uPj9fnnn6tGjRpavny5ypYtq40bN6Z7zvDwcCUkJJjb+fPnc+aCAQAAADwReKc1k4KDg1WkSBFt3bpVf/75p+rWrSvp/mO1xYoV086dO7V161Y999xzFuN8fX0VHBz82POrU6eOGjVqpNGjR6t79+5pxhQrVizD3YhTd0N+9tln9cYbb2jy5MmaNGmSRo0aJScnJ0n339Ft2bKlWrZsqcmTJ6tRo0aaPHmyGjZsmOaczs7OcnZ2ftTLAwAAAPCEYqU1C8LCwhQTE6OYmBjVq1fP3F+3bl2tX79ee/bs+VvfZ/2radOmafXq1dq1a1eOzFemTBndvXtXt27dSvO4yWRSqVKllJSUlCPnAwAAAIC/YqU1C8LCwjRgwADduXPHvNIq3S9a+/fvr1u3blkVrdeuXTN/CzWVq6urxadnTp48aXWuMmXKSJLu3btn9R1XJycn8/EHlS9fXi+//LLef//9NPP//fffrQpQHx8fOTo6ql69eurYsaOqVKkiHx8fHTt2TKNHj1ZYWJjy5s2r2NhYjR8/Xl26dFGZMmXk5OSkbdu2KTIyUqNGjUrzfAAAAADwqChasyAsLEw3b95UqVKlVKBAAXN/3bp1de3aNZUoUcJqo6Fx48Zp3LhxFn39+vXTRx99ZP65Q4cOVuf66aefJEnXr19X5cqVLY4FBgYqLi4uzRzfeustLVu2LM1jD268lGr37t2qXr26GjVqpIULF2r06NG6ceOGChUqpObNm5tzL1KkiIKCgjRx4kTFxcXJZDKZfx4yZEia5wMAAACAR2UyDMPI7STw5EhMTLy/i/DgZbJzds3tdAAAjyBuWrPcTgEA8A+WWhskJCRYPIn6V7zTCgAAAACwWTwejFxxZGKjDP82BQAAAAAkVloBAAAAADaMohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMccjsBPJnKjV8vO2fX3E4DAPCAuGnNcjsFAACssNIKAAAAALBZFK0AAAAAAJtF0QoAAAAAsFm5XrR2795dJpPJqjVu3FiSFBQUJJPJpD179liMGzx4sOrVq2cRk157WNy0adMkSXFxcRb9np6eql69ulavXi1JqlevXobnCQoKMuc3ZcoU2dvbm+d+UHR0tLy8vCx+fvCaU129elUmk0kxMTHmvtRz/fV+JCcny8fHJ934v7YvvvhCkhQTEyOTyaRy5crp3r17FnN6eXkpOjraHJNRi46Otv7DBQAAAIBHZBMbMTVu3FhRUVEWfc7OzuZ/dnFx0ahRo7Rt27Y0x+/bt89ccO3atUtt2rTRyZMnlTdvXkmSk5OTOXbSpEnq06ePxXgPDw+Lnzdt2qSyZcvq6tWrmjt3rtq0aaMDBw5o5cqVun37tiTp/Pnzqlq1qjlWkuzt7c1zREVFaeTIkYqMjNQbb7zx0Hvg4OCgzZs3a+vWrQoLC8swNiAgQFFRUapevbq576uvvpK7u7uuXLliFR8VFWVVED9YNEvSmTNn9Nlnn6lHjx5W42vWrKmLFy+af3799deVmJho8Wfm6emZYc4AAAAAkB25vtIq3S9Q/f39LZq3t7f5eL9+/bRnzx6tXbs2zfF+fn7mcfny5ZMk5c+f36pPul+g/vVcbm5uFvP5+PjI399fpUqVUkREhO7cuaOtW7cqX7585jF+fn4WsQ/2bdu2TTdv3tSkSZOUlJSk7du3P/QeuLm5qUePHpkqcLt166YvvvhCN2/eNPdFRkaqW7duacZ7eXlZXbOLi4tFzMCBAzV+/HjdunXLaryTk5PF2Dx58lj9meXJk+eheQMAAABAVtlE0fowQUFBeuWVVxQeHq6UlJS/7bx37tzRJ598IklydHTM9LgFCxaoY8eOcnR0VMeOHbVgwYJMjZswYYIOHz6sL7/8MsO4p59+WsWKFdOKFSsk3V/13b59u7p06ZLpHP9q8ODBunv3rj744INsz5GW5ORkJSYmWjQAAAAAyCybKFrXrFkjd3d3i/bWW29ZxIwZM0Y//fSTFi1a9EjnGjVqlNW5HnwHVLr/OKy7u7tcXFw0bNgwBQUFqV27dpmaPzExUStWrFDnzp0lSZ07d9aXX36ZqWKtUKFCev311/Xmm2/q7t27Gcb26NFDkZGRku4//tu0aVPzSu9fdezY0eqaz549axHj6uqq8ePHa+rUqUpISMjMpWbK1KlT5enpaW4BAQE5NjcAAACAfz+bKFrDwsIUGxtr0QYMGGAR4+fnp+HDh2vcuHHm90qzY8SIEVbnqlatmkXM0qVLdfDgQX3zzTcKDg7Wp59+avGIcUYWL16s4sWLq2LFipKkSpUqqXjx4uaNjx5m1KhRunTpkrkgTU/nzp21e/dunT17VtHR0erZs2e6sbNmzbK65rSKx169esnX11dvv/12pnLNjPDwcCUkJJjb+fPnc2xuAAAAAP9+NrERk5ubm4KDgx8aN3ToUM2dO1dz587N9rl8fX0feq6AgACVLFlSJUuWlLu7u9q0aaNjx44pf/78D50/MjJSR48elYPD/93alJQULViwQH379n3oeC8vL4WHh2vixIlq3rx5unE+Pj5q3ry5evXqpVu3bqlJkya6du1amrH+/v6Zur8ODg6aPHmyunfvrtdee+2h8Znh7OxssakWAAAAAGSFTay0Zpa7u7vGjh2riIiIv+3dyLp166pcuXKKiIh4aOzhw4e1f/9+xcTEWKxqbt++Xfv27dORI0cydc6BAwfKzs5Oc+bMyTCuZ8+eiomJUdeuXS12Ln4UL730ksqWLauJEyfmyHwAAAAA8ChsYqU1OTlZ8fHxFn0ODg7y9fW1iu3bt69mzZqlJUuWWD3WmxnXrl2zOperq6v58zhpGTZsmF566SWNHDlShQsXTjduwYIFqlq1qurUqWN1rEaNGlqwYIFmzZr10BxdXFw0ceJEq0ek/6px48a6dOlShrlL97/3+tdr9vDwsNo1OdW0adPUqFGjh+YJAAAAAI+bTay0rlu3TgULFrRotWvXTjPW0dFRb731VpqfZsmMcePGWZ1r5MiRGY5p3ry5goKCMlxtvX37tj7//HO1adMmzeNt2rTR559/nun3cbt166bixYtnGGMymeTr62vxHdq09OjRw+qa33///XTjn3vuOT333HMP3QwKAAAAAB43k2EYRm4ngSdHYmLi/V2EBy+TnbNrbqcDAHhA3LRmuZ0CAOAJklobJCQkZPj0qE08Hownz5GJjR76WDMAAAAA2MTjwQAAAAAApIWiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2yyG3E8CTqdz49bJzds3tNIB/hLhpzXI7BQAAgFzDSisAAAAAwGZRtAIAAAAAbBZFKwAAAADAZlG05hKTyZRh6969u1Wcu7u7KlasqOjo6DTnXLx4sezt7fXKK6+Y+/73v//JZDLpu+++S3NMo0aN1LJlS0lS9+7d08ylcePG5vigoCDNnj07R+4BAAAAADwMRWsuuXjxornNnj1befPmteibM2eOOTYqKkoXL17UoUOH1L59e/Xo0UPr16+3mjMyMlIjR47UF198oRs3bkiSnn76aVWsWFFRUVFW8efPn9emTZvUq1cvc1/jxo0t8rh48aKWLFnyGO4AAAAAADwcRWsu8ff3NzdPT0+ZTCarvlReXl7y9/dXiRIlNHr0aOXLl08bNmywmC8uLk67du3SG2+8oVKlSunLL780H+vVq5eWLVumpKQkizHR0dHy8/NTs2b/tzOps7OzRR7+/v7y9vZ+THcBAAAAADJG0foPcu/ePS1btkxXrlyRo6OjxbHIyEg1a9ZMnp6e6ty5sxYsWGA+9vLLL+vOnTtavny5uc8wDEVHR6tbt25ycHh8Xz5KTk5WYmKiRQMAAACAzKJo/Qfo2LGj3N3d5ezsrPbt2ytfvnzq3bu3+XhKSoqio6PVuXNnSVKHDh20e/dunT59WpKUL18+tW7d2uIR4ZiYGJ09e1Y9e/a0ONeaNWvk7u5u0d56661s5z516lR5enqaW0BAQLbnAgAAAPDkoWj9B5g1a5ZiY2O1ceNGVapUSbNmzVJwcLD5+IYNG5SUlKQmTZpIknx9ffX8888rMjLSHNOrVy9t377dXMhGRkaqVq1aCg0NtThXWFiYYmNjLdqAAQOynXt4eLgSEhLM7fz589meCwAAAMCT5/E9F4oc4+/vr+DgYAUHB2v58uWqXLmyqlSpojJlyki6X4BeuXJFrq6u5jEpKSk6ePCg3nrrLdnb26tBgwYKDAxUdHS0Ro4cqZUrV+qDDz6wOpebm5tFQfyonJ2d5ezsnGPzAQAAAHiysNL6DxMcHKw2bdooPDxcknT58mV9/fXX+uKLL6xWSK9fv67//ve/ku5/OqdHjx5auHChFi9eLDs7O7Vr1y43LwUAAAAAHoqV1n+gYcOGqWLFitq/f7++++47+fj46KWXXpKdneXfQTRv3lwLFixQ8+bNJUk9evTQpEmTNHr0aHXo0EFubm5WcycnJys+Pt6iz8HBQb6+vuaff/31V8XGxlrEFC1aVPny5cuhKwQAAACA+yha/4HKly+vBg0aaNy4cfrll1/0wgsvWBWsktSmTRu1b99ev/32mwoUKKCiRYuqQYMG2rBhg9UGTKnWrVunggULWvSFhobqxIkT5p9nzJihGTNmWMRERUWpe/fuj35xAAAAAPAAk2EYRm4ngSdHYmLi/V2EBy+TnbPrwwcAUNy0Zg8PAgAA+IdJrQ0SEhKUN2/edONYaUWuODKxUYa/mAAAAAAgsRETAAAAAMCGUbQCAAAAAGwWRSsAAAAAwGZRtAIAAAAAbBZFKwAAAADAZlG0AgAAAABsFkUrAAAAAMBmUbQCAAAAAGwWRSsAAAAAwGZRtAIAAAAAbBZFKwAAAADAZlG0AgAAAABsFkUrAAAAAMBmUbQCAAAAAGwWRSsAAAAAwGY55HYCeDKVG79eds6uuZ0GYNPipjXL7RQAAAByHSutAAAAAACbRdEKAAAAALBZuVq0/v777+rXr5+KFi0qZ2dn+fv7q1GjRtq9e7diYmJkMpkybG+99Zbc3Nx0+vRpi3kvXLggb29vzZkzR5IUFBSk2bNnp5lDXFxcuvPv2bMnw/xnzpypoKAg5cmTR6GhoZo/f36mrjsoKMh8Dnt7exUqVEi9evXSn3/+aY7J6Prj4+Mt5vvll1/k5OSkUqVKpXt9sbGxVsdat26t7t27Z3gPUltYWJgcHR313XffWcyRlJSk4sWLa8iQIZm6dgAAAADIilx9p7VNmza6c+eOFi5cqOLFi+u3337T5s2bdeXKFTVs2FAXL140x77++utKTExUVFSUuc/T01MHDx5Ut27dtGPHDtnZ3a/B+/btq8qVK2vQoEGZzmXTpk0qW7asRZ+Pj0+68du3b9fw4cP13nvvqUWLFjp//rz++OOPTJ9v0qRJ6tOnj+7du6dTp06pb9++GjRokP7zn/9YxJ08eVJ58+a16MufP7/Fz9HR0WrXrp22b9+unTt3qlatWpnOQ5ICAgIs7vWMGTO0bt06bdq0ydzn7u6ucePGqXv37jp06JDc3NwkSSNHjpSzs7OmTp2apXMCAAAAQGbkWtF69epVfffdd4qJiVHdunUlSYGBgapatao5xt/f3/zPefLkUXJyskWfJH388ccqV66c3n33XQ0fPlzR0dHasWOHfvjhB5lMpkzn4+PjYzV3Ruzs7GRvb69evXrJ1dVVQUFBmR4rSR4eHubzFS5cWF27dtUXX3xhFZc/f355eXmlO49hGIqKitLcuXNVpEgRLViwIMtFq729vcW1u7u7y8HBwep+TJkyRevWrdOoUaP0wQcfaOvWrfrkk0+0a9cuubi4ZOmcAAAAAJAZufZ4sLu7u9zd3bVq1SolJydnex4/Pz99/PHHGjt2rDZu3KghQ4Zozpw5CgwMzMFsrVWuXFmFCxfWq6++qpSUlEea69dff9WaNWtUrVq1LI/dunWrbty4oQYNGqhLly5atmyZrl279kj5pMfFxUWfffaZ5s+fr1WrVqlnz54aPXq0qlSpku6Y5ORkJSYmWjQAAAAAyKxcK1odHBwUHR2thQsXysvLS7Vq1dLo0aP1ww8/ZHmu1q1bq127dmrcuLHq1Kmj7t27Z3mOmjVrmgvp1Hbv3r00Y1NSUtSqVStVrFhRV69eVadOnXT79m3z8XLlymnmzJkZnm/UqFFyd3dXnjx5VKRIEZlMJr377rtWcUWKFLHIKTQ01OL4ggUL1KFDB9nb26ts2bIKDg7W0qVLs3z9mVWlShWFh4erTZs28vHx0ZgxYzKMnzp1qjw9Pc0tICDgseUGAAAA4N8nVzdiatOmjS5cuKBvvvlGjRo1UkxMjJ566ilFR0dnea6xY8cqJSVFY8eOzVYuS5cuVWxsrEWzt7dPM3bdunXauXOnoqOjtXTpUl2+fFktWrRQUlKSbt26pTNnzqh27doZnm/EiBGKjY3VDz/8oM2bN0uSmjVrZlUo79ixwyKn9evXm49dvXpVK1euVOfOnc19nTt3VmRkZLbuQWaNGTNGKSkpeuONN+TgkPET5uHh4UpISDC38+fPP9bcAAAAAPy75OpGTNL9R04bNmyohg0baty4cerdu7fGjx+f5dXS1OLpYUVUegICAhQcHJyp2B9++EFFixZVvnz5JEmrVq3S888/r/r166t169YqXry4xbu5afH19TWfr2TJkpo9e7Zq1KihrVu3qkGDBua4YsWKpftO6+LFi3Xr1i2Lx4oNw1BKSoqOHTumMmXKyNPTU5KUkJBgNf7q1avZeoza0dFRUubutbOzs5ydnbN8DgAAAACQbPA7rWXKlFFSUlJup5GhwoUL66efftIvv/wiSXJzc9PatWt1+/ZthYeHa/LkyVnaBEqSeVX35s2bmR6zYMECDRs2zGIl9tChQwoLCzOvtnp7e8vPz0/79u2zGHvz5k0dPXrU6nFjAAAAALAlubbSevnyZb300kvq2bOnKlSoIA8PD+3fv1/Tp09Xq1atcvx8v/76q9W3SosWLWqRz1+/f+rl5ZXmrrht2rTRxIkT1axZM/O3Wvfs2aOLFy/Kzc1NkZGRatWqlfkTPGm5du2a4uPjZRiGzp8/r5EjR8rX11c1a9a0iPv9999169Ytiz4fHx8dPXpUBw4c0KJFi6y+z9qxY0e9+eabmjp1qhwdHTV8+HBNmTJFBQoUUM2aNfXnn3/q7bffloODg8WjxQAAAABga3KtaHV3d1e1atU0a9YsnTlzRnfu3FFAQID69Omj0aNH5/j5ZsyYoRkzZlj0RUVFqV69epJk8UhuqiVLlqhDhw5W/a6urtq1a5fCw8PVo0cPXbp0SWXLltX06dNVpUoVVatWTYMHD9Z7772Xbj7jxo3TuHHjJN3fAfmZZ57Rxo0brb4Nm9ZK6O7du7Vo0SKVKVPGqmCV7m9M1b9/f61evVovvviihg8fLnd3d82YMUNnzpyRl5eXqlevrh07dlh9AxYAAAAAbInJMAwjt5PAkyMxMfH+LsKDl8nO2TW30wFsWty0ZrmdAgAAwGOTWhskJCRkuJhmc++0AgAAAACQKtd3D8aT6cjERjyaDAAAAOChWGkFAAAAANgsilYAAAAAgM2iaAUAAAAA2CyKVgAAAACAzaJoBQAAAADYLIpWAAAAAIDNomgFAAAAANgsilYAAAAAgM2iaAUAAAAA2CyKVgAAAACAzaJoBQAAAADYLIpWAAAAAIDNomgFAAAAANgsilYAAAAAgM1yyO0E8GQqN3697JxdczsNIMfETWuW2ykAAAD8K7HSCgAAAACwWRStAAAAAACbRdEKAAAAALBZFK1p6N69u0wmk0wmkxwdHVW8eHENHz5cSUlJ5pi+ffvK3t5eX3zxhdX4CRMmmMfb2dmpUKFCevnll3X+/HmLuHr16pnjHmyvvPKKOcZkMsnFxUXnzp2zGNu6dWt1797dHJNRezBu1apVWZo7VXx8vF5//XUFBwfLxcVFBQoUUO3atfXRRx/pxo0bmb21AAAAAJAlFK3paNy4sS5evKizZ89q8uTJmjt3roYPHy5JunHjhpYuXaoRI0ZowYIFaY4vW7asLl68qF9++UVLly7V4cOH1a5dO6u4Pn366OLFixZt+vTpFjEmk0njxo1LN9cHx86ePVt58+a16JszZ066Yx82tySdPXtWlStX1oYNGzRlyhQdPHhQmzZt0pAhQ7R69Wpt2rQpw/EAAAAAkF3sHpwOZ2dn+fv7S5I6deqkrVu3atWqVZo3b56WL1+uMmXKKDw8XAULFlRcXJyCgoIsxjs4OJjHFypUSH369NGgQYOUmJiovHnzmuNcXV3NcekZOHCgZs6cqeHDh6t8+fJWxx8c7+npKZPJ9NA5Mzu3JL366qtycHDQ/v375ebmZu4vX7682rRpI8MwMnUuAAAAAMgqVlozKU+ePLpz544kacGCBercubM8PT3VtGlTRUVFZTg2Pj5eK1eulL29vezt7bN87po1a6p58+YKDw/PVu6PMvfly5e1YcMGDRgwwKJgfZDJZEp3/uTkZCUmJlo0AAAAAMgsitZM2Lt3rxYvXqz69evrxx9/1J49e9S+fXtJUufOnRUVFaWUlBSLMYcPH5a7u7tcXV1VsGBBxcTEpFn4zZ07V+7u7hZt4cKFVjlMnTpV69at044dO3L8+jKa+/Tp0zIMQ6GhoRb9vr6+5nxHjRqV4dyenp7mFhAQkOP5AwAAAPj3omhNx5o1a+Tu7i4XFxfVqFFDderU0fvvv68FCxaoUaNG8vX1lSQ1bdpUSUlJVu91hoaGKjY2Vvv27VNERIQqVaqkiIgIq/O8/PLLio2NtWgvvPCCVVyZMmXUtWvXDAvE7MrM3H9dTd27d69iY2NVtmxZJScnpzsuPDxcCQkJ5vbXzagAAAAAICO805qOsLAwzZs3T46OjipUqJAcHR117949ffbZZ4qPj5eDw//dunv37mnBggV6/vnnzX1OTk4KDg6WdH9Tph9//FH9+/fXf/7zH4vzeHp6muMeZuLEiQoJCbHYATinpDd3cHCwTCaTTpw4YdFfvHhxSfcfm86Is7OznJ2dczRXAAAAAE8OVlrT4ebmpuDgYAUGBsrR0VGStHbtWl27dk0HDx60WBldvny5Vq1apcuXL6c739ixY7VkyRIdOHAg2zkFBATotdde0+jRo3Xv3r1sz5OVuX18fNSwYUN98MEHFp/8AQAAAIC/A0VrFixYsEDNmjVTxYoVVa5cOXNr06aN/Pz89Pnnn6c7tnjx4mrVqpXV52Vu3Lih+Ph4i/bnn3+mO094eLguXLjwWD4zk97cc+fO1d27d1WlShUtXbpUx48f18mTJ/X555/rxIkT2dpcCgAAAAAyg6I1k3777Td9++23atOmjdUxk8mkF198Md1vtqYaNmyYvv32W33//ffmvk8++UQFCxa0aB07dkx3jnz58mnUqFG6detW9i8mi3OXKFFCBw8eVIMGDRQeHq6KFSuqSpUqev/99zV8+HC99dZbOZ4LAAAAAEiSyeAjm/gbJSYm3t9FePAy2Tm75nY6QI6Jm9Yst1MAAAD4R0mtDRISEpQ3b95041hpBQAAAADYLHYPRq44MrFRhn+bAgAAAAASK60AAAAAABtG0QoAAAAAsFkUrQAAAAAAm0XRCgAAAACwWRStAAAAAACbRdEKAAAAALBZFK0AAAAAAJtF0QoAAAAAsFkUrQAAAAAAm0XRCgAAAACwWRStAAAAAACbRdEKAAAAALBZFK0AAAAAAJtF0QoAAAAAsFkOuZ0Ankzlxq+XnbNrbqcBGxY3rVlupwAAAAAbwEorAAAAAMBmUbQCAAAAAGwWRSsAAAAAwGbZVNHavXt3tW7d2qo/JiZGJpNJV69etfg5rRYfH28x9pdffpGTk5NKlSqV5jlNJpNWrVpl/nnChAnpzp3a4uLiNGHCBFWqVMlqvri4OJlMJsXGxmrbtm1ydHTUd999ZxGTlJSk4sWLa8iQIWnmFB0dLS8vr0zdpxYtWqhBgwZpxu3evVsmk0kHDhywyOvBPPPnz69r165ZjKtUqZImTJhg0Xf69Gn17NlTRYsWlbOzswoXLqz69etr0aJFunv3brq5AgAAAMCjsKmiNatOnjypixcvWrT8+fNbxERHR6tdu3a6ceOGdu7c+dA5hw8fbjFfkSJFNGnSJIu+gICATOVXt25dDRw4UN27d1dSUpK5f+TIkXJ2dtbUqVOzdsFp6NWrl7Zs2aJz585ZHYuMjFSlSpX01FNPpTv+2rVrmjFjRobn2Lt3r5566ikdP35cH374oY4cOaI1a9aoZ8+e+uijj3T06NFHvg4AAAAASMs/evfg/PnzZ7giaRiGoqKiNHfuXBUpUkQLFixQrVq1MpzT3d1d7u7u5p/t7e3l4eEhf3//bOU4ZcoUrVu3TqNGjdIHH3ygrVu36pNPPtGuXbvk4uKSrTkf1Lx5c+XPn1/R0dEaP368uf/GjRtaunSppkyZkuH4gQMH6t1339WAAQOsCn7p/j3s3r27QkJCtHPnTtnZ/d/fc1SuXFkvv/yyDMN45OsAAAAAgLT8o1daH2br1q26ceOGGjRooC5dumjZsmVWj8I+bi4uLvrss880f/58rVq1Sj179tTo0aNVpUqVHJnfwcFBXbt2VXR0tEXxuHz5ct2+fVsvv/xyhuM7duyo4OBgTZo0Kc3jsbGxOn78uIYPH25RsD7IZDKlO39ycrISExMtGgAAAABkVraL1n379mnkyJHq0KGDXnzxRYv2KNasWWNe7UxtTZo0STO2SJEiFnGhoaEWxxcsWKAOHTrI3t5eZcuWVXBwsJYuXfpI+T3o8OHDVrmWLVvWKq5KlSoKDw9XmzZt5OPjozFjxuRYDpLUs2dPxcXFKSYmxtwXGRmpF198Ud7e3hmONZlMmjZtmubPn68zZ85YHT916pQkWdzb33//3eKa586dm+78U6dOlaenp7ll9tFqAAAAAJCyWbR+8cUXqlWrlo4dO6avvvpKd+7c0bFjx7RlyxZ5eno+UkJhYWGKjY21aJ9++mmasTt27LCIW79+vfnY1atXtXLlSnXu3Nnc17lzZ0VGRj5Sfg8KDQ21ynXt2rVpxo4ZM0YpKSl644035OCQs09llypVSjVr1jRf25kzZ7Rjxw717NkzU+MbNWqk2rVra+zYsenGPLia6uPjY75eLy8v3b59O91x4eHhSkhIMLfz589n8qoAAAAAIJvvtE6ZMkWzZs3SgAED5OHhoTlz5qhYsWLq16+fChYs+EgJubm5KTg42KLvl19+STO2WLFi6b7TunjxYt26dUvVqlUz9xmGoZSUFB07dkxlypR5pDwlycnJySrX9ApSR0fHDI8/ql69eum1117Thx9+qKioKAUGBqp+/fqZHj9t2jTVqFFDI0aMsOgvWbKkJOnEiRPm3ZLt7e3N1/2w63F2dpazs3MWrgQAAAAA/k+2VlrPnDmjZs2aSbpflCQlJclkMmnIkCGaP39+jiaYXQsWLNCwYcMsVkEPHTqksLCwHF1ttRXt2rWTvb29Fi9erIULF6pHjx4Zvmv6V1WrVtWLL76oN954w6K/cuXKKlWqlGbMmKGUlJScThsAAAAAMpStZb98+fKZNzQqXLiwjhw5ovLly+vq1au6ceNGjiaYkd9//123bt2y6PPx8dHRo0d14MABLVq0yOr7rB07dtSbb76pqVOnmlc/f/rpJ/P3S1MFBwdb7CL8d7t3755VTk5OTumuELu7u6t9+/YaPXq0EhIS1L179yyfMyIiQmXLlrVYPTWZTIqKilLDhg1Vq1YthYeHq3Tp0rpz5462b9+uS5cuyd7ePsvnAgAAAIDMyFbR+uyzz2rjxo0qX7682rVrp9dff11btmzRxo0bs/RI6qP668ZLkrR7924tWrRIZcqUsSpYJal169bq37+/Vq9ebd40aujQoVZxW7duVb169XI858y6fv26KleubNEXGBiouLi4dMf06tVLCxYs0PPPP6+iRYtm+ZwhISHq2bOn1Wp59erV9b///U9TpkzRgAEDFB8fLzc3N1WsWFGzZs3K9LuzAAAAAJBVJiMbH9m8cuWKbt26pUKFCiklJUUzZszQd999p+DgYI0dO/ahO9biyZWYmHh/F+HBy2Tn7Jrb6cCGxU1rltspAAAA4DFKrQ0SEhKUN2/edOMyVbRu27ZNVatWVZ48eXI0STx5KFqRWRStAAAA/26ZLVoz9XjwyZMnNXLkSK1du1Y+Pj5KTEzMMD6jEwKSdGRiI35PAAAAADxUporWvn37SpLq1aunw4cPy8vLK82daQ3DkMlk0r1793I2SwAAAADAEynTGzH17dvXvDHQ1q1bH1tCAAAAAACkytLuwc8884zu3r2rmJgY9ezZUwEBAY8rLwAAAAAAZJfVAQ4ODpoxYwaPAAMAAAAAHrssF62SVL9+fcXExORwKgAAAAAAWMrS48GpmjRpovDwcB05ckRPP/203NzcLI63bNkyR5IDAAAAADzZMvWd1r+ys0t/gZbdg5GRzH6LCQAAAMC/W45+p/WvUlJSsp0YAAAAAACZla13WgEAAAAA+Dtku2jdtm2bWrRooeDgYJUsWVItW7bUjh07cjI3AAAAAMATLltF6+eff64GDRrI1dVVgwYN0muvvaY8efKofv36Wrx4cU7nCAAAAAB4QmVrI6bSpUurb9++GjJkiEX/u+++q08++UTHjx/PsQTx78JGTAAAAACkzNcG2VppPXv2rFq0aGHV37JlS/3000/ZmRIAAAAAACvZKloDAgK0efNmq/7NmzcrICDgkZMCAAAAAEDK5idvhg0bpkGDBik2NlY1a9aUyWTSd999p+joaM2ZMyenc8S/ULnx62Xn7JrbaSCXxU1rltspAAAAwMZlq2jt37+//P39NXPmTC1btkzS/fdcly5dqlatWuVoggAAAACAJ1e2ilZJeuGFF/TCCy/kZC4AAAAAAFjI9ndaAQAAAAB43LJVtHp7eytfvnxWzcfHR4ULF1bdunUVFRWV07manT9/Xr169VKhQoXk5OSkwMBAvf7667p8+bJFXFBQkGbPnm01fvbs2QoKCjL/PGHCBJlMJqtWqlQpc0y9evXSjHnllVfMMQ/2u7u7q2LFioqOjk73Om7fvi1fX19Nnjw5zeNTp06Vr6+vbt++naXrrlevngYPHmzRd/r0afXo0UNFihSRs7OzihUrpo4dO2r//v1p5v9g++KLL8wxH3/8sSpWrCg3Nzd5eXmpcuXKevvtt9O9RgAAAAB4FNl6PHjcuHGKiIhQkyZNVLVqVRmGoX379mndunUaMGCAfvrpJ/Xv3193795Vnz59cjThs2fPqkaNGgoJCdGSJUtUrFgxHT16VCNGjNB///tf7dmzR/ny5cvyvGXLltWmTZss+hwcLG9Pnz59NGnSJIs+V1fLzYSioqLUuHFjJSUlaenSperRo4cKFiyoRo0aWZ3TyclJnTt3VnR0tN58802ZTCarubp06SInJ6dHuu79+/erfv36KleunD7++GOVKlVK165d09dff61hw4Zp27ZtVvk/yMvLS5K0YMECDR06VO+9957q1q2r5ORk/fDDDzp27Fia5wUAAACAR5WtovW7777T5MmTLVYZpfurcBs2bNCKFStUoUIFvffeezletA4YMEBOTk7asGGD8uTJI0kqWrSoKleurBIlSujNN9/UvHnzsjyvg4OD/P39M4xxdXV9aIyXl5c5ZvTo0Zo5c6Y2bNiQZtEqSb169dKcOXO0fft21a1b19y/Y8cO/fjjj+rVq5ek7F+3YRjq3r27SpYsqR07dsjO7v8W1ytVqqTXX3893fz/avXq1WrXrp05J+l+sQ8AAAAAj0u2Hg9ev369GjRoYNVfv359rV+/XpLUtGlTnT179tGy+4srV65o/fr1evXVV82FWyp/f3+9/PLLWrp0qQzDyNHzZse9e/e0bNkyXblyRY6OjunGlS9fXs8884zV49SRkZGqWrWqypUr90jXHRsbq6NHj2rYsGEWBWuq1FXUzPD399eePXt07ty5TI9JTk5WYmKiRQMAAACAzMpW0ZovXz6tXr3aqn/16tXmR1STkpLk4eHxaNn9xY8//ijDMFS6dOk0j5cuXVp//vmnLl26lOW5Dx8+LHd3d4vWu3dvi5i5c+daxSxcuNAipmPHjnJ3d5ezs7Pat2+vfPnyWc3zVz179tSXX36p69evS5KuX7+u5cuXm1c0H+W6f/zxR0myeD83I6n5P9hS//Jh/Pjx8vLyUlBQkEJDQ9W9e3ctW7ZMKSkp6c43depUeXp6mltAQECm8gAAAAAAKZuPB48dO1b9+/fX1q1bVbVqVZlMJu3du1dr167VRx99JEnauHGjxeOuf4fUlUYnJ6csjw0NDdU333xj0ffXovvll1/Wm2++adGXP39+i59nzZqlBg0a6Pz58xo6dKiGDBmi4ODgDM/dsWNHDR06VEuXLlWvXr3Mq6YdOnTIVO6p1/3Xd2Ifdiwtqfk/KLXQLFiwoHbv3q0jR45o27Zt2rVrl7p166ZPP/1U69atS3MlNzw8XEOHDjX/nJiYSOEKAAAAINOyVbT26dNHZcqU0QcffKCVK1fKMAyVKlVK27ZtU82aNSVJw4YNy9FEJSk4OFgmk0nHjh1T69atrY6fOHFCfn5+5kde8+bNq4SEBKu4q1evytPT06LPycnpocWlp6fnQ2P8/f0VHBys4OBgLV++XJUrV1aVKlVUpkyZDOdt27atoqKi1KtXL0VFRalt27bKmzdvpq/b29tbvr6+VsdCQkIkScePH1elSpUyzP3B/DNSrlw5lStXTgMGDNB3332nZ599Vtu2bVNYWJhVrLOzs5ydnR96XgAAAABIS7a/01qrVi0tWbJEBw4c0MGDB7VkyRJzwfq4+Pj4qGHDhpo7d65u3rxpcSw+Pl6LFi1S9+7dzX2lSpXSvn37rObZt2+fQkNDH2uu0v1is02bNgoPD39obK9evbRz506tWbNGO3futNjsKDPX3b59+zRXUytVqqQyZcpo5syZaT7Ge/Xq1axf2ANSi/GkpKRHmgcAAAAA0pLtovXMmTMaM2aMOnXqpN9//12StG7dOh09ejTHkkvLBx98oOTkZDVq1Ejbt2/X+fPntW7dOjVs2FAhISEaN26cOXbo0KH673//q0mTJunYsWM6duyY3nrrLa1bt85qJfju3buKj4+3aL/99ptFzI0bN6xi/vzzzwzzHTZsmFavXm3xPdS01K1bV8HBweratauCg4NVp06dTF934cKFFRERkea8JpNJUVFROnXqlOrUqaO1a9fq7Nmz+uGHHxQREaFWrVpZxF+9etXqGlML0v79++utt97Szp07de7cOe3Zs0ddu3aVn5+fatSokeH1AQAAAEB2ZKto3bZtm8qXL6/vv/9eK1asMG8g9MMPP2j8+PE5muBflSxZUvv27VPx4sXVrl07BQYGqkmTJgoJCdHOnTvl7u5ujq1evbrWr1+vTZs2qXbt2qpdu7Y2bNig9evXq1q1ahbzHj16VAULFrRogYGBFjGffPKJVUzHjh0zzLd8+fJq0KCBRTGdnp49e+rPP/9Uz54907zu/fv3q0SJEmrfvr1KlCihvn37KiwsTLt3787w27RVq1Y1j+3Tp49Kly6tli1b6ujRo5o9e7ZFbOp3ZR9s77//viSpQYMG2rNnj1566SWFhISoTZs2cnFx0ebNm+Xj4/PQ6wMAAACArDIZ2fg+TI0aNfTSSy9p6NCh8vDw0KFDh1S8eHHt27dPrVu31q+//vo4ck3X+PHj9e6772rDhg2s+Nm4xMTE+7sID14mO2fX3E4HuSxuWrPcTgEAAAC5JLU2SEhIMO/nk5ZsbcR0+PBhLV682Krfz89Ply9fzs6Uj2TixIkKCgrS999/r2rVqqW5iy1sy5GJjTL8xQQAAAAAKZtFq5eXly5evKhixYpZ9B88eFCFCxfOkcSyqkePHrlyXgAAAADA45OtJclOnTpp1KhRio+Pl8lkUkpKinbu3Knhw4era9euOZ0jAAAAAOAJla2iNSIiQkWLFlXhwoV1/fp1lSlTRnXq1FHNmjU1ZsyYnM4RAAAAAPCEytZGTKnOnj2rAwcOKCUlRZUrV1bJkiVzMjf8C2X2ZWsAAAAA/26ZrQ2ytdI6adIk3bhxQ8WLF1fbtm3Vrl07lSxZUjdv3tSkSZOynTQAAAAAAA/K1kqrvb29Ll68qPz581v0X758Wfnz59e9e/dyLEH8u7DSCgAAAEB6zCuthmHIZDJZ9R86dEj58uXLzpQAAAAAAFjJ0idvvL29ZTKZZDKZFBISYlG43rt3T9evX9crr7yS40kCAAAAAJ5MWSpaZ8+eLcMw1LNnT02cOFGenp7mY05OTgoKClKNGjVyPEkAAAAAwJMpS0Vrt27dJEnFihVTzZo15ejo+FiSAgAAAABAymLRmqpu3brmf75586bu3LljcZwNdgAAAAAAOSFbGzHduHFDr732mvLnzy93d3d5e3tbNAAAAAAAckK2itYRI0Zoy5Ytmjt3rpydnfXpp59q4sSJKlSokD777LOczhEAAAAA8ITK1uPBq1ev1meffaZ69eqpZ8+eevbZZxUcHKzAwEAtWrRIL7/8ck7nCQAAAAB4AmVrpfXKlSsqVqyYpPvvr165ckWSVLt2bW3fvj3nsgMAAAAAPNGytdJavHhxxcXFKTAwUGXKlNGyZctUtWpVrV69Wl5eXjmcIv6Nyo1fLztn19xOA7ksblqz3E4BAAAANi5bK609evTQoUOHJEnh4eHmd1sHDx6sESNG5GiCAAAAAIAnV7ZWWocMGWL+57CwMJ04cUL79+9XcHCwKlSokGPJAQAAAACebFlaad2yZYvKlCmjxMREi/6iRYuqfv366tixo3bs2JGjCQIAAAAAnlxZKlpnz56tPn36KG/evFbHPD091a9fP7377rs5llxaunfvLpPJZNVOnz5tjjl//rx69eqlQoUKycnJSYGBgXr99dd1+fJlq/mOHj2qdu3ayc/PT87OzipZsqTGjh2rGzduWMQFBQWZz5UnTx4FBQWpXbt22rJlS6byXrdunSpXrqw8efKocOHCevXVV7N8vY6OjipQoIAaNmyoyMhIpaSkZJhjqVKl9M4778gwDHNMXFycTCaTYmNjLX7Onz+/rl27ZjFfpUqVNGHCBPPP9erV0+DBgy1i5syZI2dnZy1evDhT1wMAAAAAWZGlovXQoUNq3Lhxuseff/55/e9//3vkpB6mcePGunjxokVL3c347NmzqlKlik6dOqUlS5bo9OnT+uijj7R582bVqFHDvNOxJO3Zs0fVqlXT7du39e233+rUqVOaMmWKFi5cqIYNG+r27dsW5500aZIuXryokydP6rPPPpOXl5caNGigiIiIDPO9deuWXnzxRVWoUEGHDx/Wt99+q0qVKmX5euPi4vTf//5XYWFhev3119W8eXPdvXs3zRyPHz+u4cOHa/To0Zo/f/5Dz3Ht2jXNmDEj0zlJ0vjx4xUeHq6vvvpKnTp1ytJYAAAAAMiMLL3T+ttvv8nR0TH9yRwcdOnSpUdO6mGcnZ3l7++f5rEBAwbIyclJGzZsUJ48eSTdf3y5cuXKKlGihN58803NmzdPhmGoV69eKl26tFauXCk7u/v1e2BgoEJCQlS5cmXNmjVLo0aNMs/t4eFhPm/RokVVp04dFSxYUOPGjVPbtm0VGhqabs729vZ6+eWXFRwcLElZKlofvN7ChQvrqaeeUvXq1VW/fn1FR0erd+/eaebYu3dvzZs3Txs2bFC/fv0yPMfAgQP17rvvasCAAcqfP3+GsYZhaNCgQfrPf/6jDRs2qHbt2pm+FgAAAADIiiyttBYuXFiHDx9O9/gPP/ygggULPnJS2XXlyhWtX79er776qrlgTeXv76+XX35ZS5culWEYio2N1bFjxzR06FBzwZqqYsWKatCggZYsWfLQc77++usyDENff/11ujEuLi5q1KiRRo4cabHS+yiee+45VaxYUStXrkzzuGEYiomJ0fHjxzP8i4ZUHTt2VHBwsCZNmpRh3N27d9WlSxctX75c27Zte2jBmpycrMTERIsGAAAAAJmVpaK1adOmGjdunG7dumV17ObNmxo/fryaN2+eY8mlZ82aNXJ3dze3l156SZL0448/yjAMlS5dOs1xpUuX1p9//qlLly7p1KlT5r70YlNjMpIvXz7lz59fcXFx6cZMnDhRBw8eVPPmzVW3bl1duHDBfOy1115TixYtHnqetJQqVcrqvKNGjZK7u7ucnZ0VFhZmXhV9GJPJpGnTpmn+/Pk6c+ZMunGffPKJli9frpiYGFWsWPGh806dOlWenp7mFhAQ8NAxAAAAAJAqS0XrmDFjdOXKFYWEhGj69On6+uuv9c033+jtt99WaGiorly5ojfffPNx5WoWFham2NhYc3vvvfcyNS51QyKTyZSp2MzEPSz2zz//1NSpU/X+++9r8uTJeuGFF1SrVi39+OOPkqQjR45k+/HatM47YsQIxcbGatu2bQoLC9Obb76pmjVrZmq+Ro0aqXbt2ho7dmy6MbVr15a7u7vGjBlj9T5tWsLDw5WQkGBu58+fz1QuAAAAACBl8Z3WAgUKaNeuXerfv7/Cw8MtisBGjRpp7ty5KlCgwGNJ9EFubm7md0MfFBwcLJPJpGPHjql169ZWx0+cOCFvb2/5+voqJCREknTs2LE03y89ceKESpYs+dBcLl++rEuXLpk3gvqrkydPKjk5WZUrV5Z0f6OkxMRE1a5dW7Nnz9aePXu0aNGih54nLcePH7c6r6+vr4KDgxUcHKwVK1YoODhY1atXV4MGDTI157Rp01SjRg2NGDEizePly5fXzJkz1aBBA7Vr105Lly7N8PFjZ2dnOTs7Z/6iAAAAAOABWVpple5vVLR27Vr98ccf+v7777Vnzx798ccfWrt2rYKCgh5Dipnn4+Ojhg0bau7cubp586bFsfj4eC1atEjt27eXyWRSpUqVVKpUKc2aNcvq0zGHDh3Spk2b1LFjx4eec86cObKzs0uzSJbuvwcsSdu3bzf3zZo1Sy1atFCnTp3Ur18/c0xWbNmyRYcPH1abNm3SjfH29tbAgQM1fPhwi8/eZKRq1ap68cUX9cYbb6QbU6lSJW3ZskXfffedXnrpJd25cyfL+QMAAABAZmS5aE3l7e2tZ555RlWrVpW3t3dO5vRIPvjgAyUnJ6tRo0bavn27zp8/r3Xr1qlhw4YqXLiw+fM0JpNJn376qY4dO6Y2bdpo7969+vnnn7V8+XK1aNFCNWrUsPom6bVr1xQfH6/z589r+/bt6tu3ryZPnqyIiIg0V34lKSAgQB06dNCAAQP02Wef6cyZM9q0aZN++OEHubm56ZtvvtHvv/+e4TUlJycrPj5ev/76qw4cOKApU6aoVatWat68ubp27Zrh2AEDBujkyZNasWJFpu9hRESEtmzZopMnT6YbU6FCBW3dulW7d+9W27ZtrT4PBAAAAAA5IdtFq60qWbKk9u/frxIlSqh9+/YqUaKE+vbtq7CwMO3evVv58uUzx9aqVUt79uyRvb29mjZtquDgYIWHh6tbt27auHGj1WOt48aNU8GCBRUcHKwuXbooISFBmzdvtvgsTloWLlyoIUOGKCIiQmXLltUrr7yiJk2a6Ny5c/L09FTLli2tVoYftG7dOhUsWFBBQUFq3Lixtm7dqvfee09ff/217O3tMzy3n5+funTpogkTJlitKKcnJCREPXv2THPDrQeVLVtWW7du1d69e9WmTRsKVwAAAAA5zmRk9rlRIAckJibe30V48DLZObvmdjrIZXHTmuV2CgAAAMglqbVBQkKC8ubNm25cljZiAnLKkYmNMvzFBAAAAADpX/h4MAAAAADg34OiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2yyG3E8CTqdz49bJzds3tNPA3iJvWLLdTAAAAwD8YK60AAAAAAJtF0QoAAAAAsFkUrY+ge/fuMplM5ubj46PGjRvrhx9+kCTFxcXJZDIpNjbWamzr1q3VvXt3889nz55Vx44dVahQIbm4uKhIkSJq1aqVTp06ZY4xmUxatWqVxc8uLi46d+5chnP/Nc/U1rhxY3PMwYMH1bx5c+XPn18uLi4KCgpS+/bt9ccff5hjVqxYoWrVqsnT01MeHh4qW7ashg0bls27BwAAAAAPR9H6iBo3bqyLFy/q4sWL2rx5sxwcHNS8efMszXH79m01bNhQiYmJWrlypU6ePKmlS5eqXLlySkhIyHCsyWTSuHHjspRnaluyZIkk6ffff1eDBg3k6+ur9evX6/jx44qMjFTBggV148YNSdKmTZvUoUMHtW3bVnv37tX//vc/RURE6Pbt21m6VgAAAADICjZiekTOzs7y9/eXJPn7+2vUqFGqU6eOLl26lOk5jh07prNnz2rLli0KDAyUJAUGBqpWrVoPHTtw4EDNnDlTw4cPV/ny5TOV51/t2rVLiYmJ+vTTT+XgcP9XolixYnruuefMMWvWrFHt2rU1YsQIc19ISIhat26dmUsEAAAAgGxhpTUHXb9+XYsWLVJwcLB8fHwyPc7Pz092dnb68ssvde/evSyds2bNmmrevLnCw8Ozmq6Zv7+/7t69q6+++kqGYaQbc/ToUR05ciRLcycnJysxMdGiAQAAAEBmUbQ+ojVr1sjd3V3u7u7y8PDQN998o6VLl8rOLvO3tnDhwnrvvfc0btw4eXt767nnntNbb72ls2fPZmr81KlTtW7dOu3YsSNTeaa2t956S5JUvXp1jR49Wp06dZKvr6+aNGmid955R7/99pt5/MCBA/XMM8+ofPnyCgoKUocOHRQZGank5OSH5ubp6WluAQEBmbomAAAAAJAoWh9ZWFiYYmNjFRsbq++//17PP/+8mjRpYrU50sMMGDBA8fHx+vzzz1WjRg0tX75cZcuW1caNGx86tkyZMuratatGjRqVqTxT24ABA8zHIyIiFB8fr48++khlypTRRx99pFKlSunw4cOSJDc3N3377bc6ffq0xowZI3d3dw0bNkxVq1Y1v/ealvDwcCUkJJjb+fPns3BXAAAAADzpKFofkZubm4KDgxUcHKyqVatqwYIFSkpK0ieffCJPT09JSnMzpatXr5qPp/Lw8FDLli0VERGhQ4cO6dlnn9XkyZMzlcfEiRN18OBBi92F08szteXLl88ixsfHRy+99JJmzpyp48ePq1ChQpoxY4ZFTIkSJdS7d299+umnOnDggI4dO6alS5emm5ezs7Py5s1r0QAAAAAgsyhac5jJZJKdnZ1u3rwpb29v+fn5ad++fRYxN2/e1NGjRxUaGprhPKVKlVJSUlKmzhsQEKDXXntNo0ePzvJ7sWlxcnJSiRIlMjx/UFCQXF1dM50jAAAAAGQVuwc/ouTkZMXHx0uS/vzzT33wwQe6fv26WrRoIUkaPny4pkyZogIFCqhmzZr6888/9fbbb8vBwUGdO3eWJMXGxmr8+PHq0qWLypQpIycnJ23btk2RkZEZPvL7V+Hh4frkk0/0008/qX379unmmcrBwUG+vr5as2aNvvjiC3Xo0EEhISEyDEOrV6/W2rVrFRUVJUmaMGGCbty4oaZNmyowMFBXr17Ve++9pzt37qhhw4bZvn8AAAAAkBGK1ke0bt06FSxYUNL9x3tLlSql5cuXq169epLuF63u7u6aMWOGzpw5Iy8vL1WvXl07duwwPypbpEgRBQUFaeLEiYqLi5PJZDL/PGTIkEznki9fPo0aNUqjR4/OMM9UoaGhOnHihMqUKSNXV1cNGzZM58+fl7Ozs0qWLKlPP/1UXbp0kSTVrVtXH374obp27arffvtN3t7eqly5sjZs2JDhijEAAAAAPAqTkd43ToDHIDEx8f4uwoOXyc7ZNbfTwd8gblqz3E4BAAAANii1NkhISMhw7xveaQUAAAAA2CweD0auODKxETsJAwAAAHgoVloBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMccjsBPJnKjV8vO2fX3E4D2RA3rVlupwAAAIAnCCutAAAAAACbRdEKAAAAALBZFK0AAAAAAJtF0fo3iY+P18CBA1W8eHE5OzsrICBALVq00ObNm80xu3btUtOmTeXt7S0XFxeVL19eM2fO1L179yzmMplMMplM2rNnj0V/cnKyfHx8ZDKZFBMTYxX/1/bFF19IkmJiYsx9dnZ28vT0VOXKlTVy5EhdvHhRkvSf//xHbm5uOn36tMU5L1y4IG9vb82ZMycnbxcAAAAASKJo/VvExcXp6aef1pYtWzR9+nQdPnxY69atU1hYmAYMGCBJ+uqrr1S3bl0VKVJEW7du1YkTJ/T6668rIiJCHTp0kGEYFnMGBAQoKirKou+rr76Su7t7mjlERUXp4sWLFq1169YWMSdPntSFCxe0b98+jRo1Sps2bVK5cuV0+PBhdenSRY0aNVK3bt2UkpJiHtO3b19VrlxZgwYNyoE7BQAAAACWKFr/Bq+++qpMJpP27t2rtm3bKiQkRGXLltXQoUO1Z88eJSUlqU+fPmrZsqXmz5+vSpUqKSgoSL1799bChQv15ZdfatmyZRZzduvWTV988YVu3rxp7ouMjFS3bt3SzMHLy0v+/v4WzcXFxSImf/788vf3V0hIiDp06KCdO3fKz89P/fv3lyR9/PHHOn36tN59911JUnR0tHbs2KGoqCiZTKacvGUAAAAAIImi9bG7cuWK1q1bpwEDBsjNzc3quJeXlzZs2KDLly9r+PDhVsdbtGihkJAQLVmyxKL/6aefVrFixbRixQpJ0vnz57V9+3Z16dIlx3LPkyePXnnlFe3cuVO///67/Pz89PHHH2vs2LHauHGjhgwZojlz5igwMDDdOZKTk5WYmGjRAAAAACCzKFofs9OnT8swDJUqVSrdmFOnTkmSSpcunebxUqVKmWMe1KNHD0VGRkq6//hv06ZN5efnl+YcHTt2lLu7u0U7e/bsQ/NPzTsuLk6S1Lp1a7Vr106NGzdWnTp11L179wzHT506VZ6enuYWEBDw0HMCAAAAQCqK1scs9V3UzDw++9f3Vh/sT2t8586dtXv3bp09e1bR0dHq2bNnunPPmjVLsbGxFi0zBWRa+Y8dO1YpKSkaO3bsQ8eHh4crISHB3M6fP//QMQAAAACQyiG3E/i3K1mypEwmk44fP2618VGqkJAQSdLx48dVs2ZNq+MnTpxQmTJlrPp9fHzUvHlz9erVS7du3VKTJk107dq1NM/h7++v4ODgLOd//PhxSVJQUJC5z8HBweL/ZsTZ2VnOzs5ZPi8AAAAASKy0Pnb58uVTo0aN9OGHHyopKcnq+NWrV/X8888rX758mjlzptXxb775Rj/++KM6duyY5vw9e/ZUTEyMunbtKnt7+xzN/ebNm5o/f77q1KmT7mPHAAAAAPA4sdL6N5g7d65q1qypqlWratKkSapQoYLu3r2rjRs3at68eTp+/Lg+/vhjdejQQX379tVrr72mvHnzavPmzRoxYoTatm2rdu3apTl348aNdenSJeXNmzfDHK5evar4+HiLPg8PD4vNoX7//XfdunVL165d0//+9z9Nnz5df/zxh1auXPnoNwEAAAAAsoGi9W9QrFgxHThwQBERERo2bJguXrwoPz8/Pf3005o3b54kqW3bttq6daumTJmiOnXq6ObNmwoODtabb76pwYMHp/tOrMlkkq+v70Nz6NGjh1Xf1KlT9cYbb5h/Dg0Nlclkkru7u4oXL67nn39eQ4cOlb+/fzavHAAAAAAejclIb/cf4DFITEy8v4vw4GWyc3bN7XSQDXHTmuV2CgAAAPgXSK0NEhISMnxylHdaAQAAAAA2i8eDkSuOTGz00PdwAQAAAICVVgAAAACAzaJoBQAAAADYLIpWAAAAAIDNomgFAAAAANgsilYAAAAAgM2iaAUAAAAA2CyKVgAAAACAzaJoBQAAAADYLIpWAAAAAIDNomgFAAAAANgsilYAAAAAgM2iaAUAAAAA2CyKVgAAAACAzaJoBQAAAADYLIfcTgBPpnLj18vO2TW300A64qY1y+0UAAAAAEmstAIAAAAAbBhFKwAAAADAZlG0AgAAAABsFkVrLvr999/Vr18/FS1aVM7OzvL391ejRo20e/duSVJQUJBMJpNMJpNcXV1Vrlw5ffzxxxZz3Lx5U+PHj1doaKicnZ3l6+urtm3b6ujRoxZxEyZMMM9lZ2enQoUK6eWXX9b58+cVFxdnPpZemzBhgiRpxYoVqlatmjw9PeXh4aGyZctq2LBhf8v9AgAAAPDkYSOmXNSmTRvduXNHCxcuVPHixfXbb79p8+bNunLlijlm0qRJ6tOnj65fv67o6Gi98sor8vLyUvv27ZWcnKwGDRro559/1syZM1WtWjX99ttvmjp1qqpVq6ZNmzapevXq5rnKli2rTZs2KSUlRWfOnNGAAQPUrl07fffdd7p48aI5bsaMGVq3bp02bdpk7nN3d9emTZvUoUMHTZkyRS1btpTJZNKxY8e0efPmv+eGAQAAAHjiULTmkqtXr+q7775TTEyM6tatK0kKDAxU1apVLeI8PDzk7+8vSZo8ebKWLVumVatWqX379po9e7Z2796tgwcPqmLFiuY5UldDe/XqpSNHjshkMkmSHBwczHMVKlRIffr00aBBg5SUlGTul+4XqA/GplqzZo1q166tESNGmPtCQkLUunXrnL05AAAAAPD/8XhwLnF3d5e7u7tWrVql5OTkTI9zcXHRnTt3JEmLFy9Ww4YNzQVrKjs7Ow0ZMkTHjh3ToUOH0pwnPj5eK1eulL29vezt7TN1bn9/fx09elRHjhzJdL7JyclKTEy0aAAAAACQWRStucTBwUHR0dFauHChvLy8VKtWLY0ePVo//PBDmvF3795VdHS0Dh8+rPr160uSTp06pdKlS6cZn9p/6tQpc9/hw4fl7u4uV1dXFSxYUDExMRowYIDc3NwylfPAgQP1zDPPqHz58goKClKHDh0UGRmZYdE9depUeXp6mltAQECmzgUAAAAAEkVrrmrTpo0uXLigb775Ro0aNVJMTIyeeuopRUdHm2NGjRold3d35cmTRwMGDNCIESPUr1+/h85tGIYkmR8NlqTQ0FDFxsZq3759ioiIUKVKlRQREZHpfN3c3PTtt9/q9OnTGjNmjNzd3TVs2DBVrVpVN27cSHNMeHi4EhISzO38+fOZPh8AAAAAULTmMhcXFzVs2FDjxo3Trl271L17d40fP958fMSIEYqNjdW5c+d0/fp1TZ8+XXZ29//YQkJCdOzYsTTnPXHihCSpZMmS5j4nJycFBwerbNmyGj16tCpVqqT+/ftnOecSJUqod+/e+vTTT3XgwAEdO3ZMS5cuTTPW2dlZefPmtWgAAAAAkFkUrTamTJkySkpKMv/s6+ur4OBgFSpUyGLVVJI6dOigTZs2Wb23mpKSolmzZqlMmTJW77s+aOzYsVqyZIkOHDiQ7XyDgoLk6upqkTMAAAAA5BR2D84lly9f1ksvvaSePXuqQoUK8vDw0P79+zV9+nS1atUqU3MMGTJEX3/9tVq0aGHxyZspU6bo+PHj2rRpk1Wh+6DixYurVatWGjdunNasWfPQ802YMEE3btxQ06ZNFRgYqKtXr+q9997TnTt31LBhw0xfOwAAAABkFkVrLnF3d1e1atU0a9YsnTlzRnfu3FFAQID69Omj0aNHZ2oOFxcXbdmyRVOnTtXo0aN17tw5eXh4KCwsTHv27FG5cuUeOsewYcNUq1Ytff/996pWrVqGsXXr1tWHH36orl276rfffpO3t7cqV66sDRs2KDQ0NFM5AwAAAEBWmIzUHXuAv0FiYuL9XYQHL5Ods2tup4N0xE1rltspAAAA4F8utTZISEjIcO8b3mkFAAAAANgsHg9GrjgysRE7CQMAAAB4KFZaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzKFoBAAAAADaLohUAAAAAYLMoWgEAAAAANouiFQAAAABgsyhaAQAAAAA2i6IVAAAAAGCzHHI7ATyZyo1fLztn19xO44kTN61ZbqcAAAAAZAkrrQAAAAAAm0XRCgAAAACwWRStAAAAAACb9Y8tWrt37y6TyWRuPj4+aty4sX744QeLOJPJpFWrVj10vilTpsje3l7Tpk1L83h8fLwGDhyo4sWLy9nZWQEBAWrRooU2b95sjgkKCtLs2bPNPxuGoWHDhsnDw0NbtmyxmnPmzJny9PTUjRs3rI7dunVLXl5eevfdd819CxcuVNWqVeXm5iYPDw/VqVNHa9assRgXExMjk8mkq1evWuQxf/58VatWTe7u7vLy8lKVKlU0e/Zs87knTJhgcT9TW6lSpczznD17Vh07dlShQoXk4uKiIkWKqFWrVjp16lTGNxcAAAAAsukfW7RKUuPGjXXx4kVdvHhRmzdvloODg5o3b56tuaKiojRy5EhFRkZaHYuLi9PTTz+tLVu2aPr06Tp8+LDWrVunsLAwDRgwIM357t27p169eumzzz7Tli1b9Nxzz1nFdO3aVTdv3tSKFSusjq1YsUI3btxQly5dJEnDhw9Xv3791K5dOx06dEh79+7Vs88+q1atWumDDz7I8Nq6dOmiwYMHq1WrVtq6datiY2M1duxYff3119qwYYM5rmzZsub7mdq+++47SdLt27fVsGFDJSYmauXKlTp58qSWLl2qcuXKKSEhIcPzAwAAAEB2/aN3D3Z2dpa/v78kyd/fX6NGjVKdOnV06dIl+fn5ZXqebdu26ebNm5o0aZI+++wzbd++XXXq1DEff/XVV2UymbR37165ubmZ+8uWLauePXtazZecnKyOHTtq37592r59u0qXLp3mef38/NSiRQtFRkaai9NUkZGRatmypfz8/LRnzx7NnDlT7733ngYOHGiOiYiI0K1btzR06FC1atVKAQEBVudYtmyZFi1apFWrVqlVq1bm/qCgILVs2VKJiYnmPgcHB/P9/Ktjx47p7Nmz2rJliwIDAyVJgYGBqlWrVprxAAAAAJAT/tErrQ+6fv26Fi1apODgYPn4+GRp7IIFC9SxY0c5OjqqY8eOWrBggfnYlStXtG7dOg0YMMCiYE3l5eVllUezZs109OhR7dy5M92CNVWvXr20bds2/fTTT+a+uLg4bd26Vb169ZIkLVmyRO7u7urXr5/V+GHDhunOnTtprtZK0qJFixQaGmpRsKYymUzy9PTMML9Ufn5+srOz05dffql79+5laox0v4BPTEy0aAAAAACQWf/oonXNmjVyd3eXu7u7PDw89M0332jp0qWys8v8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zzyDS5cuoby8HC+++CLMzMxa3F9zZs2ahejoaPz4448AgDNnzuDll19u8fFvvPEGYmNjERsbK2m3t7fH448/jl9//VXSXrdYlZWVlWQF5/pUKhVUKlWLx0FERERERHSnh+JJa0vMmDEDhYWF2LVrl96+VatWwc7ODs8++6zePltbW0ycOBGpqamNvhp8Lzp06ID09HTU1NQA+LOo3rdvH7Zt24bExEREREQ8sHMBgIuLC7y8vBAfH48NGzZg+PDhcHFxafHxlpaWiIiIwLJlyyTfO1UqlXj++efxxRdf4Ny5cw90zERERERERM15pIrWKVOmwN/fH3FxcTh16hSys7Px6quvYufOnfjss890KwfXt3HjRly6dAlPPvlko/0LIVBaWqq3NbR4EQCEhITgt99+w4wZM3D06FHk5eXh22+/1b1+u3nz5mavqaCgQO+V5MZe3wX+XJBpx44dSEhIaHYBpobMmTMHarVab+Xk5cuXo0OHDhg4cCA2bNiA7OxsnDhxAgkJCcjIyGjRK8hERERERET34qF4PbglFAoFtm3bhtWrV+ODDz7AvHnzoFKp4OnpiZSUFAwdOrTRY83NzWFubt5k/xUVFdBoNHrtJSUlDf4UjoeHB9LT0xEeHo5nn30W1dXVGDp0KJKTk3HixAn4+/vDxcUFU6dObfScM2bM0Gu7c4Xg+qZOnYqgoCAAgI+PT5PX0xBTU1O88847eOGFFyTtdnZ2yMzMxIoVK/Dee++hqKgISqUS3bp1w/Tp0zF//vy7PhcREREREVFLKAR/ZJMMqKKi4s9VhOdvg1LV1tjDeWSdihln7CEQERERETWprjYoLy+HtbV1o3GPzJNWerjkLvVu8i8mERERERER8Ah9p5WIiIiIiIgePSxaiYiIiIiISLZYtBIREREREZFssWglIiIiIiIi2WLRSkRERERERLLFopWIiIiIiIhki0UrERERERERyRaLViIiIiIiIpItFq1EREREREQkWyxaiYiIiIiISLZYtBIREREREZFssWglIiIiIiIi2WLRSkRERERERLLFopWIiIiIiIhki0UrERERERERydZjxh4A/TW5RX4PpaqtsYfxUDsVM87YQyAiIiIianV80kpERERERESyxaKViIiIiIiIZItFaysICAiAQqGAQqGAqakpnnjiCSxcuBDXr1/XxcyZMwcmJibYsmWL3vFRUVG645VKJbRaLXx9fVFcXCyJGz58uC7uzi0wMFAXo1Ao0KZNG5w+fVpy7OTJkxEQEKCLaWqri0tJScGIESNga2uLtm3bolu3bvD398ft27cf0J0jIiIiIiKSYtHaSsaMGYOSkhKcPHkS7777LmJjY7Fw4UIAQGVlJbZu3YpFixYhLi6uweN79eqFkpISnD17Flu3bkVOTg6ef/55vbjZs2ejpKREsq1cuVISo1Ao8NZbbzU61juP/fDDD2FtbS1pW716NfLy8vDcc89hwIABSEtLQ05ODtasWQNTU1PU1tbex50iIiIiIiJqHBdiaiUqlQqOjo4AgBdeeAEpKSlITEzE2rVr8fXXX6Nnz54IDw+HRqPBqVOn0LlzZ8nxjz32mO54rVaL2bNnIyQkBBUVFbC2ttbFtW3bVhfXmODgYKxatQoLFy6Eu7u73v47j1er1VAoFHp9xsfHQ6PRSApiFxcXjBkzpmU3hIiIiIiI6B7wSauBmJub49atWwCAuLg4vPjii1Cr1Rg7dizi4+ObPLa0tBQ7duyAiYkJTExM7vrcgwcPxvjx4xEeHn5PYwf+LGxLSkqQlpZ2V8dVVVWhoqJCshEREREREbUUi1YDyMzMxJdffolRo0ahsLAQhw4dwvTp0wEAL774IuLj4/Vesc3JyYGlpSXatm0LjUaD/fv3Y968ebCwsJDExcbGwtLSUrJt2rRJbwzR0dHYu3cvDhw4cE/XMG3aNMycORNeXl7QaDSYMmUKPvroo2aL0OjoaKjVat3m5OR0T+cnIiIiIqK/JhatreTbb7+FpaUl2rRpA09PTwwbNgxr1qxBXFwcvL290a5dOwDA2LFjcf36dSQnJ0uO7969O7KysvDzzz9j2bJl6NOnD5YtW6Z3Hl9fX2RlZUm2KVOm6MX17NkTL730EsLCwu7pekxMTBAfH4+zZ89i5cqV0Gq1WLZsme67t40JDw9HeXm5bqu/mBQREREREVFT+J3WVjJixAisXbsWpqam0Gq1MDU1RU1NDT7//HOUlpbiscf+/9bX1NQgLi4Oo0eP1rWZmZmha9euAP5clKmwsBBz587F5s2bJedRq9W6uOYsXboUrq6uSExMvOfr6tChA/z8/ODn54d3330Xrq6uWLduHZYuXdpgvEqlgkqluufzERERERHRXxuL1lZiYWGhV0zu2bMHV69exbFjxyTfTf3111/h6+uLy5cvw87OrsH+IiIi4Orqitdffx39+vW7pzE5OTkhKCgIS5YsgYuLyz31cScbGxtoNBrJT/kQERERERE9SHw92IDi4uIwbtw4eHh4wM3NTbdNnToV9vb2+OKLLxo99oknnsCkSZP0frqmsrISpaWlkq2srKzRfsLDw3H+/Hm915Gbs379esydOxf79u3DiRMnkJeXh7CwMOTl5WHChAl31RcREREREVFLsWg1kAsXLmD37t2YOnWq3j6FQgEfH59Gf7O1zoIFC7B7924cPnxY1/bpp59Co9FItpkzZzbah62tLcLCwnDz5s27Gv/TTz+Na9euITAwEL169YKXlxcOHTqExMREeHl53VVfRERERERELaUQQghjD4L+OioqKv5cRXj+NihVbY09nIfaqZhxxh4CEREREdE9q6sNysvLYW1t3Wgcn7QSERERERGRbHEhJjKK3KXeTf5rChEREREREcAnrURERERERCRjLFqJiIiIiIhItli0EhERERERkWyxaCUiIiIiIiLZYtFKREREREREssWilYiIiIiIiGSLP3lDBiWEAPDnDwkTEREREdFfV11NUFcjNIZFKxnU5cuXAQBOTk5GHgkREREREcnB1atXoVarG93PopUMytbWFgBw5syZJv9ikuFVVFTAyckJxcXFsLa2NvZwqB7mR96YH/libuSN+ZE35ke+HpXcCCFw9epVaLXaJuNYtJJBKZV/fo1arVY/1BPsUWZtbc3cyBjzI2/Mj3wxN/LG/Mgb8yNfj0JuWvIgiwsxERERERERkWyxaCUiIiIiIiLZYtFKBqVSqRAZGQmVSmXsoVA9zI28MT/yxvzIF3Mjb8yPvDE/8vVXy41CNLe+MBEREREREZGR8EkrERERERERyRaLViIiIiIiIpItFq1EREREREQkWyxaiYiIiIiISLZYtJLBxMbGokuXLmjTpg369++PAwcOGHtIj5yoqCgoFArJ5ujoqNsvhEBUVBS0Wi3Mzc0xfPhw5OXlSfqoqqpCcHAw2rVrBwsLC0ycOBFnz56VxJSVlcHPzw9qtRpqtRp+fn64cuWKIS7xoZGWloYJEyZAq9VCoVAgMTFRst+QuThz5gwmTJgACwsLtGvXDiEhIaiurm6Ny35oNJefgIAAvbk0aNAgSQzz0zqio6MxYMAAWFlZoX379pg8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DRsGb29vLFmyBAEBAZJ9SqUSQghJ261bt/T6MDU1lXxWKBQNttW99lpbW4v+/fvjP//5j15f9vb2uj/fWZwCgBCiwdWN6/pvSP3xN6S2thavvvpqg9+t7NSpU7PHN6X+uO68BnNz8yaPfVD3v+58d97/CRMmYMWKFXp9aTSaJvttyavLTV2zk5MTCgoKkJSUhOTkZLz22mt47733kJqaqnc+IqJHCZ+0EhER3YeYmBjs2rUL6enpknZ7e3uUlpZKCqesrKz7Pl+/fv1QWFiI9u3bo2vXrpJNrVY3elzPnj2RlZUlWSDpp59+glKp1C3U1NAxhw4dkrTV/9yvXz/k5eXpjaVr166SJ7136tGjR5P9WltbQ6vV4uDBg5KY9PR09OjRA8CfTzKzsrLwxx9/NHgOe3t7lJSUSNoe1P3Py8tD586d9a63/j8UNMXU1BQ1NTWSth49ejR5zcCfxfrEiRPx73//G/v370dGRgZycnLu76KIiGSORSsREdF9cHd3h6+vL9asWSNpHz58OH7//XesXLkSJ06cwMcff6y3Cu298PX1Rbt27TBp0iQcOHAARUVFSE1NRWhoaJOLQvn6+qJNmzbw9/dHbm4uUlJSEBwcDD8/P90rsPUFBgbixIkTeOONN1BQUIAvv/wSGzdulMSEhYUhIyMD8+bNQ1ZWFgoLC7Fz504EBwc3OpbQ0FBs2LABGzZswP/+9z9ERkYiLy9PErNo0SKsWLECW7duRUFBAd58801kZWUhNDQUADBz5kw4Ojpi8uTJ+Omnn3Dy5Els374dGRkZAICRI0fil19+weeff47CwkJERkYiNze3Jbe4SfPmzcMff/yBmTNnIjMzEydPnsS+ffswa9YsvSK0KZ07d8YPP/yA0tJS3U8nLVq0CBs3bsS6detQWFiI999/Hzt27MDChQsBABs3bkRcXBxyc3Nx8uRJbN68Gebm5nB2dr7v6yIikjMWrURERPfpnXfe0XsVtUePHoiNjcXHH38MDw8PZGZm6oqP+9G2bVukpaWhU6dO8PHxQY8ePTBr1izcuHED1tbWTR73/fff448//sCAAQPw97//HaNGjcJHH33U6DGdOnXC9u3bsWvXLnh4eGDdunVYvny5JKZ3795ITU1FYWEhnnnmGfTt2xcRERGSV2Xrmz59Ot566y2EhYWhf//+OH36NObOnSuJCQkJwYIFC7BgwQK4u7tj79692LlzJ7p16wYAMDMzw759+9C+fXuMHTsW7u7uiImJgYmJCQDA29sbERERWLx4MQYMGICrV6/ipZdeavb+Nker1eKnn35CTU0NvL294ebmhtDQUKjVasl3k5uzatUqJCUlwcnJCX379gUATJ48GatXr8Z7772HXr16Yf369YiPj9f9TM/jjz+OTz/9FEOGDEHv3r3xww8/YNeuXbCzs7vv6yIikjOFaMkXVoiIiIiIiIiMgE9aiYiIiIiISLZYtBIREREREZFssWglIiIiIiIi2WLRSkRERERERLLFopWIiIiIiIhki0UrERERERERyRaLViIiIiIiIpItFq1EREREREQkWyxaiYiIiIiISLZYtBIREREREZFssWglIiIiIiIi2fo/En90wfYBLcwAAAAASUVORK5CYII=",
            "text/plain": [
              "<Figure size 1000x600 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "# Visualización de las categorías más frecuentes\n",
        "top_categorias = conteo_categorias.head(15)\n",
        "\n",
        "plt.figure(figsize=(10, 6))\n",
        "top_categorias.sort_values().plot(kind=\"barh\")\n",
        "plt.title(\"Categorías más frecuentes del dataset\")\n",
        "plt.xlabel(\"Número de documentos\")\n",
        "plt.ylabel(\"Categoría\")\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "8bfb8c46",
      "metadata": {
        "id": "8bfb8c46"
      },
      "source": [
        "### 2.1. Selección de categorías para la práctica\n",
        "\n",
        "Para esta práctica seleccionaremos algunas categorías con temas relativamente diferenciables.\n",
        "\n",
        "La selección puede ajustarse si el dataset concreto tiene nombres ligeramente distintos de categorías.\n",
        "\n",
        "La idea es trabajar con noticias de varios ámbitos para que LDA pueda descubrir estructuras temáticas."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "id": "4b6fa51a",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4b6fa51a",
        "outputId": "401627e6-7373-480c-99d1-c54fdaa2f2f1"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Categorías seleccionadas disponibles:\n",
            "['POLITICS', 'SPORTS', 'BUSINESS', 'TRAVEL', 'FOOD & DRINK', 'WELLNESS', 'ENTERTAINMENT', 'TECH']\n"
          ]
        }
      ],
      "source": [
        "# Categorías propuestas para la sesión guiada.\n",
        "categorias_propuestas = [\n",
        "    \"POLITICS\",\n",
        "    \"SPORTS\",\n",
        "    \"BUSINESS\",\n",
        "    \"TRAVEL\",\n",
        "    \"FOOD & DRINK\",\n",
        "    \"WELLNESS\",\n",
        "    \"ENTERTAINMENT\",\n",
        "    \"TECH\"\n",
        "]\n",
        "\n",
        "categorias_disponibles = []\n",
        "for categoria in categorias_propuestas:\n",
        "    if categoria in df[\"category\"].unique():\n",
        "        categorias_disponibles.append(categoria)\n",
        "\n",
        "print(\"Categorías seleccionadas disponibles:\")\n",
        "print(categorias_disponibles)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "id": "db490a02",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 384
        },
        "id": "db490a02",
        "outputId": "bdf5fbd4-59c6-4874-cf75-f713afe21ede"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones tras filtrar categorías: (100322, 6)\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "category\n",
              "POLITICS         35602\n",
              "WELLNESS         17945\n",
              "ENTERTAINMENT    17362\n",
              "TRAVEL            9900\n",
              "FOOD & DRINK      6340\n",
              "BUSINESS          5992\n",
              "SPORTS            5077\n",
              "TECH              2104\n",
              "Name: count, dtype: int64"
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Filtramos el dataset para quedarnos con las categorías seleccionadas\n",
        "df_filtrado = df[df[\"category\"].isin(categorias_disponibles)].copy()\n",
        "\n",
        "print(\"Dimensiones tras filtrar categorías:\", df_filtrado.shape)\n",
        "df_filtrado[\"category\"].value_counts()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "1212a951",
      "metadata": {
        "id": "1212a951"
      },
      "source": [
        "### 2.2. Reducción del tamaño del corpus\n",
        "\n",
        "Para que el notebook se ejecute de forma rápida durante la sesión, tomaremos un máximo de documentos por categoría.\n",
        "\n",
        "Esto no es obligatorio en un análisis real, pero resulta útil en clase."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "id": "03604ff4",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Index(['link', 'headline', 'category', 'short_description', 'authors', 'date'], dtype='str')\n"
          ]
        }
      ],
      "source": [
        "print(df_filtrado.columns)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "id": "a721d338",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 440
        },
        "id": "a721d338",
        "outputId": "ae02b752-641d-4601-d4b9-96222ac95e8d"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones del corpus reducido: (4000, 6)\n",
            "category\n",
            "BUSINESS         500\n",
            "ENTERTAINMENT    500\n",
            "FOOD & DRINK     500\n",
            "POLITICS         500\n",
            "SPORTS           500\n",
            "TECH             500\n",
            "TRAVEL           500\n",
            "WELLNESS         500\n",
            "Name: count, dtype: int64\n"
          ]
        }
      ],
      "source": [
        "# Número máximo de documentos por categoría.\n",
        "# Podemos aumentar este valor si el entorno de ejecución lo permite.\n",
        "\"\"\"\n",
        "max_documentos_por_categoria = 500\n",
        "\n",
        "df_reducido = (\n",
        "    df_filtrado\n",
        "    .groupby(\"category\", group_keys=False)\n",
        "    .apply(lambda datos_categoria: datos_categoria.sample(\n",
        "        n=min(len(datos_categoria), max_documentos_por_categoria),\n",
        "        random_state=42\n",
        "    ))\n",
        "    .reset_index(drop=True)\n",
        ")\n",
        "\n",
        "print(\"Dimensiones del corpus reducido:\", df_reducido.shape)\n",
        "df_reducido[\"category\"].value_counts()\n",
        "\"\"\"\n",
        "\n",
        "# Número máximo de documentos por categoría.\n",
        "# Podemos aumentar este valor si el entorno de ejecución lo permite.\n",
        "max_documentos_por_categoria: int = 500\n",
        "\n",
        "# Creamos una lista para almacenar los subconjuntos de cada categoría.\n",
        "subconjuntos: list = []\n",
        "\n",
        "# Recorremos cada categoría y sus documentos asociados.\n",
        "for categoria, datos_categoria in df_filtrado.groupby(\"category\"):\n",
        "\n",
        "    # Calculamos cuántos documentos vamos a tomar de esta categoría.\n",
        "    # Si hay menos de 500, tomamos todos.\n",
        "    numero_documentos: int = min(\n",
        "        len(datos_categoria),\n",
        "        max_documentos_por_categoria\n",
        "    )\n",
        "\n",
        "    # Seleccionamos aleatoriamente documentos de esta categoría.\n",
        "    datos_categoria_reducidos = datos_categoria.sample(\n",
        "        n=numero_documentos,\n",
        "        random_state=42\n",
        "    )\n",
        "\n",
        "    # Añadimos el subconjunto a la lista.\n",
        "    subconjuntos.append(datos_categoria_reducidos)\n",
        "\n",
        "# Unimos todos los subconjuntos en un único DataFrame.\n",
        "df_reducido = pd.concat(subconjuntos, ignore_index=True)\n",
        "\n",
        "print(\"Dimensiones del corpus reducido:\", df_reducido.shape)\n",
        "print(df_reducido[\"category\"].value_counts())"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "857ca37e",
      "metadata": {
        "id": "857ca37e"
      },
      "source": [
        "## 3. Construcción del texto de trabajo\n",
        "\n",
        "El dataset tiene varios campos textuales. Para esta práctica combinaremos:\n",
        "\n",
        "- el titular (`headline`),\n",
        "- y la descripción breve (`short_description`).\n",
        "\n",
        "De esta forma, cada documento tendrá algo más de contenido que si usáramos únicamente el titular."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "id": "eb748c25",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 293
        },
        "id": "eb748c25",
        "outputId": "b2f18fed-e5c0-4ba3-9ec1-833f950cdc5b"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>text</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>How to Manage Your Personal Brand</td>\n",
              "      <td>Make no mistake: If you have a Facebook accoun...</td>\n",
              "      <td>How to Manage Your Personal Brand. Make no mis...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>It Looks Like Uber's Winning Its War With New ...</td>\n",
              "      <td>Grab the popcorn.</td>\n",
              "      <td>It Looks Like Uber's Winning Its War With New ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>The Progressive Promise of Today's Technology</td>\n",
              "      <td>A digital policy for the new century, tailored...</td>\n",
              "      <td>The Progressive Promise of Today's Technology....</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>Don't Let These 5 Confusing Words Mar Your Image</td>\n",
              "      <td>Tom's an articulate physician, totally able to...</td>\n",
              "      <td>Don't Let These 5 Confusing Words Mar Your Ima...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>What You Don't Know About Overnight Success</td>\n",
              "      <td>I've been fighting this thing for 32 years. \"O...</td>\n",
              "      <td>What You Don't Know About Overnight Success. I...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   category                                           headline  \\\n",
              "0  BUSINESS                  How to Manage Your Personal Brand   \n",
              "1  BUSINESS  It Looks Like Uber's Winning Its War With New ...   \n",
              "2  BUSINESS      The Progressive Promise of Today's Technology   \n",
              "3  BUSINESS   Don't Let These 5 Confusing Words Mar Your Image   \n",
              "4  BUSINESS        What You Don't Know About Overnight Success   \n",
              "\n",
              "                                   short_description  \\\n",
              "0  Make no mistake: If you have a Facebook accoun...   \n",
              "1                                  Grab the popcorn.   \n",
              "2  A digital policy for the new century, tailored...   \n",
              "3  Tom's an articulate physician, totally able to...   \n",
              "4  I've been fighting this thing for 32 years. \"O...   \n",
              "\n",
              "                                                text  \n",
              "0  How to Manage Your Personal Brand. Make no mis...  \n",
              "1  It Looks Like Uber's Winning Its War With New ...  \n",
              "2  The Progressive Promise of Today's Technology....  \n",
              "3  Don't Let These 5 Confusing Words Mar Your Ima...  \n",
              "4  What You Don't Know About Overnight Success. I...  "
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Sustituimos valores ausentes por cadenas vacías\n",
        "df_reducido[\"headline\"] = df_reducido[\"headline\"].fillna(\"\")\n",
        "df_reducido[\"short_description\"] = df_reducido[\"short_description\"].fillna(\"\")\n",
        "\n",
        "# Creamos una columna de texto combinando titular y descripción\n",
        "df_reducido[\"text\"] = (\n",
        "    df_reducido[\"headline\"].astype(str)\n",
        "    + \". \"\n",
        "    + df_reducido[\"short_description\"].astype(str)\n",
        ")\n",
        "\n",
        "# Eliminamos espacios sobrantes\n",
        "df_reducido[\"text\"] = df_reducido[\"text\"].str.strip()\n",
        "\n",
        "df_reducido[[\"category\", \"headline\", \"short_description\", \"text\"]].head()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "id": "ovQuScWG3rUf",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ovQuScWG3rUf",
        "outputId": "6e15d7df-7533-466a-be22-71d87d60b555"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Ejemplo de noticia:\n",
            "- Headline:  How to Manage Your Personal Brand\n",
            "- Short description:  Make no mistake: If you have a Facebook account, an Instagram page, a Twitter profile, you are a brand. Every time you upload a photo, add a link, or post an update, you're putting into the world another idea of yourself and what you stand for.\n",
            "- Text:  How to Manage Your Personal Brand. Make no mistake: If you have a Facebook account, an Instagram page, a Twitter profile, you are a brand. Every time you upload a photo, add a link, or post an update, you're putting into the world another idea of yourself and what you stand for.\n"
          ]
        }
      ],
      "source": [
        "print(\"Ejemplo de noticia:\")\n",
        "print(\"- Headline: \", df_reducido.iloc[0][\"headline\"])\n",
        "print(\"- Short description: \", df_reducido.iloc[0][\"short_description\"])\n",
        "print(\"- Text: \", df_reducido.iloc[0][\"text\"])"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "8ef1c493",
      "metadata": {
        "id": "8ef1c493"
      },
      "source": [
        "### 3.1. Revisión de textos vacíos o demasiado cortos\n",
        "\n",
        "Los documentos muy cortos pueden ser problemáticos para LDA porque contienen poca información para inferir tópicos.\n",
        "\n",
        "Por ello, revisaremos la longitud de los textos y eliminaremos aquellos demasiado breves."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "id": "b961ed62",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 649
        },
        "id": "b961ed62",
        "outputId": "019de81a-b029-4d71-ce8c-44b12fad860d"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "count    4000.00000\n",
            "mean      171.04225\n",
            "std        75.56621\n",
            "min        14.00000\n",
            "25%       119.00000\n",
            "50%       166.00000\n",
            "75%       206.00000\n",
            "max      1098.00000\n",
            "Name: text_length, dtype: float64\n"
          ]
        },
        {
          "data": {
            "image/png": "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sG3btmn//v1q3rx5ro91M82aNZMkffzxx3btCxcutHvv6+urZs2aaceOHapdu7YiIiKyvXKaCb0Zi8UiT09Pu2CblJSU56clXPtMrv/MlixZogsXLuTpM4uMjNS6devsQmdWVpY+/fTTW+57s+9lhQoVlJycbBecMzIytGrVKrt+uR2fG2nWrNkNv89/16RJExUrVkz79u3LcWwjIiLk6emZq3NKfwXWhg0baunSpXbXn5WVpQULFqhs2bK69957s+0XEhKi7t2769lnn9WBAwd08eLFG57jRp+vI9dy4cIFderUSRUqVND69evVt29fDR8+XFu3bs12rpzGsXnz5tq3b1+25UofffSRLBaLbfyu/2xat26tkSNHKiMjQ3v37r3hNQL5hZlbIJ/t2bPHtu4tOTlZGzdu1Jw5c+Tm5qa4uLhs/4z8dzNnztS6devUtm1blStXTpcvX7Y9rqlFixaSJH9/f5UvX15ffPGFmjdvrqCgIJUoUSLPv14VGhqq9u3ba/To0SpdurQWLFig+Ph4TZgwQb6+vpKkBg0aqGrVqhoyZIiuXr2q4sWLKy4uTps2bbI7VtGiRTVp0iS9+OKLatGihV566SWFhITol19+0c6dOzVt2rQca6hatapefvllvffeeypSpIhat26tw4cP64033lBYWJgGDhyYp2u7XsuWLfXwww9r6NChunDhgiIiIvTtt99q/vz52fq+8847evDBB/XQQw/p1VdfVYUKFXTu3Dn98ssvWr58uW19YW61a9dOS5cuVe/evfXUU0/p2LFj+ve//63SpUvn6Z+ko6Ki1KpVKw0bNkxpaWlq0qSJdu3apVGjRqlevXrq1q2bw8ccOXKkli9frubNm2vkyJHy8fHRzJkzbWs2ixS58XzIzb6XTz/9tN58800988wzeu2113T58mW9++67yszMtDuGI+OTk5iYGH344Ydq27at3nrrLYWEhOjjjz/ONiNatGhRvffee4qOjtaZM2f01FNPqVSpUjp16pR27typU6dOacaMGQ59drGxsYqKilKzZs00ZMgQeXp6avr06dqzZ48++eQT2/+padiwodq1a6fatWurePHi2r9/v+bPn69GjRrZ/rzlJDw8XJI0a9Ys+fv7y9vbWxUrVlRwcHCur+WVV17R0aNH9f3338vPz0+TJk3Sli1b9Mwzz2jHjh0qVqyYJKlWrVpatGiRFi9erEqVKsnb21u1atXSwIED9dFHH6lt27YaO3asypcvrxUrVmj69Ol69dVXbQH+pZdeko+Pj5o0aaLSpUsrKSlJsbGxCgwMzNO/KAAOc+LNbIBLufZEgWsvT09PU6pUKRMZGWnGjRtnkpOTs+1z/d3iW7ZsMU888YQpX7688fLyMsHBwSYyMtIsW7bMbr81a9aYevXqGS8vLyPJdlf+teP9/W73G53LmL/uom/btq357LPPTM2aNY2np6epUKGCmTx5crb9f/75Z9OyZUsTEBBgSpYsafr162dWrFiR4x3cX331lYmMjDR+fn7G19fX1KhRw0yYMOGmtWRmZpoJEyaYe++913h4eJgSJUqY5557zhw7dsyuX2RkpKlZs2a2+m50R/71zp49a3r06GGKFStmfH19TVRUlPnpp59yvBv/0KFDpkePHqZMmTLGw8PDlCxZ0jRu3Ni89dZbtzxPTk9LGD9+vKlQoYLx8vIy1atXNx988EGOn0VOcrq+S5cumWHDhpny5csbDw8PU7p0afPqq6+alJSUbLW0bds22zGvf+KBMcZs3LjRNGzY0Hh5eRmr1Wpee+01M2HCBCPJnD179qb73uh7acxf34m6desaHx8fU6lSJTNt2rQcr92R8cnJvn37TFRUlPH29jZBQUGmZ8+e5osvvsjxe5qQkGDatm1rgoKCjIeHhylTpoxp27at+fTTT296jpyelnDts3vkkUeMn5+f8fHxMQ888IBZvny5XZ/hw4ebiIgIU7x4cePl5WUqVapkBg4caP78889bXtvUqVNNxYoVjZubW7bz3+paPvjggxxr/uWXX0xAQIDdExwOHz5sWrZsafz9/Y0ku+/dkSNHTJcuXUxwcLDx8PAwVatWNf/5z39MZmamrc+8efNMs2bNTEhIiPH09DShoaGmc+fOZteuXbe8RiA/WIxx4N8OAQD/OC1bttThw4cd+jEFAHAWliUAAGwGDRqkevXqKSwsTGfOnNHHH3+s+Ph4zZ4929mlAUCuEG4BADaZmZl68803lZSUJIvFoho1amj+/Pl67rnnnF0aAOQKyxIAAADgMngUGAAAAFwG4RYAAAAug3ALAAAAl8ENZfrrV2ROnDghf39/h362FAAAAHeGMUbnzp1TaGjoTX9UhnCrv34XOywszNllAAAA4BaOHTumsmXL3nA7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LCzModoBAABQ+DgcbtevX18QdUiS/Pz8VKtWLR08eND2i2hJSUkqXbq0rU9ycrJtNtdqtSojI0MpKSl2s7fJyck3XRfs5eUlLy+vgrkIAAAAOI3DjwK75pdfftGqVat06dIlSX/Nlt6u9PR07d+/X6VLl1bFihVltVoVHx9v256RkaGEhARbcK1fv748PDzs+pw8eVJ79uzJ15veAAAAcHdweOb29OnT6ty5s9avXy+LxaKDBw+qUqVKevHFF1WsWDFNmjQp18caMmSIHnvsMZUrV07Jycl66623lJaWpujoaFksFsXExGjcuHGqUqWKqlSponHjxsnX11ddunSRJAUGBqpnz54aPHiwgoODFRQUpCFDhqhWrVq2pycAAADgn8PhcDtw4EB5eHjo6NGjql69uq396aef1sCBAx0Kt8ePH9ezzz6rP//8UyVLltQDDzyg7777TuXLl5ckDR06VJcuXVLv3r2VkpKihg0bavXq1bZn3ErSlClT5O7urs6dO+vSpUtq3ry55s6dyzNuAQAA/oEsxsH1BFarVatWrVKdOnXk7++vnTt32h7dVatWLZ0/f76gai0waWlpCgwMVGpqqgICApxdjku4mx4Fdnh8W2eXAAAAbiG3ec3hNbcXLlyQr69vtvY///yTm7QAAADgVA6H24cfflgfffSR7b3FYlFWVpb+85//qFmzZvlaHAAAAOAIh9fc/uc//1HTpk31ww8/KCMjQ0OHDtXevXt15swZffvttwVRIwAAAJArDs/c1qhRQ7t27dL999+vqKgoXbhwQR07dtSOHTtUuXLlgqgRAAAAyBWHZ26lv24q4+drAQAAUNjkKdxevnxZu3btUnJysrKysuy2tW/fPl8KAwAAABzlcLhduXKlnn/+ef3555/ZtlksFmVmZuZLYQAAAICjHF5z27dvX3Xq1EknT55UVlaW3YtgCwAAAGdyONwmJydr0KBBCgkJKYh6AAAAgDxzONw+9dRT2rBhQwGUAgAAANweh9fcTps2TZ06ddLGjRtVq1YteXh42G3v379/vhUHAAAAOMLhcLtw4UKtWrVKPj4+2rBhgywWi22bxWIh3AIAAMBpHA63//rXvzR27FgNHz5cRYo4vKoBAAAAKDAOp9OMjAw9/fTTBFsAAAAUOg4n1OjoaC1evLggagEAAABui8PLEjIzMzVx4kStWrVKtWvXznZD2eTJk/OtOAAAAMARDofb3bt3q169epKkPXv22G37+81lAAAAwJ3mcLhdv359QdSBQqrC8BXOLgEAACDXuCsMAAAALsPhmdtmzZrddPnBunXrbqsgAAAAIK8cDrd169a1e3/lyhUlJiZqz549io6Ozq+6AAAAAIc5HG6nTJmSY/vo0aN1/vz52y4IAAAAyKt8W3P73HPP6cMPP8yvwwEAAAAOy7dwu2XLFnl7e+fX4QAAAACHObwsoWPHjnbvjTE6efKkfvjhB73xxhv5VhgAAADgKIfDbWBgoN37IkWKqGrVqho7dqxatmyZb4UBAAAAjnI43M6ZM6cg6gAAAABum8Nrbrdt26atW7dma9+6dat++OGHfCkKAAAAyAuHw22fPn107NixbO2///67+vTpky9FAQAAAHnhcLjdt2+f7rvvvmzt9erV0759+/KlKAAAACAvHA63Xl5e+uOPP7K1nzx5Uu7uDi/hBQAAAPKNw+E2KipKI0aMUGpqqq3t7Nmzev311xUVFZWvxQEAAACOcHiqddKkSXr44YdVvnx51atXT5KUmJiokJAQzZ8/P98LBAAAAHLL4XBbpkwZ7dq1Sx9//LF27twpHx8fvfDCC3r22Wfl4eFREDUCAAAAuZKnRbJ+fn56+eWX87sWAAAA4LbkKdz++uuvmjp1qvbv3y+LxaLq1atrwIABqly5cn7XBwAAAOSawzeUrVq1SjVq1ND333+v2rVrKzw8XFu3blXNmjUVHx9fEDUCAAAAueLwzO3w4cM1cOBAjR8/Plv7sGHDeGICAAAAnMbhmdv9+/erZ8+e2dp79OjBjzgAAADAqRwOtyVLllRiYmK29sTERJUqVSrPhcTGxspisSgmJsbWZozR6NGjFRoaKh8fHzVt2lR79+612y89PV39+vVTiRIl5Ofnp/bt2+v48eN5rgMAAAB3L4fD7UsvvaSXX35ZEyZM0MaNG7Vp0yaNHz9evXr1yvMTFLZt26ZZs2apdu3adu0TJ07U5MmTNW3aNG3btk1Wq1VRUVE6d+6crU9MTIzi4uK0aNEibdq0SefPn1e7du2UmZmZp1oAAABw93J4ze0bb7whf39/TZo0SSNGjJAkhYaGavTo0erfv7/DBZw/f15du3bVBx98oLfeesvWbozR1KlTNXLkSHXs2FGSNG/ePIWEhGjhwoXq1auXUlNTNXv2bM2fP18tWrSQJC1YsEBhYWFas2aNWrVq5XA9AAAAuHs5PHNrsVg0cOBAHT9+XKmpqUpNTdXx48c1YMAAWSwWhwvo06eP2rZtawun1xw6dEhJSUlq2bKlrc3Ly0uRkZHavHmzJGn79u26cuWKXZ/Q0FCFh4fb+uQkPT1daWlpdi8AAADc/fL0nNtr/P39b+vkixYt0o8//qht27Zl25aUlCRJCgkJsWsPCQnRkSNHbH08PT1VvHjxbH2u7Z+T2NhYjRkz5rZqBwAAQOGTq3Bbr169XM/K/vjjj7nqd+zYMQ0YMECrV6+Wt7f3Dftdf15jzC1ruVWfESNGaNCgQbb3aWlpCgsLy1XdAAAAKLxyFW47dOhg++/Lly9r+vTpqlGjhho1aiRJ+u6777R371717t071yfevn27kpOTVb9+fVtbZmamvvnmG02bNk0HDhyQ9NfsbOnSpW19kpOTbbO5VqtVGRkZSklJsZu9TU5OVuPGjW94bi8vL3l5eeW6VgAAANwdchVuR40aZfvvF198Uf3799e///3vbH2OHTuW6xM3b95cu3fvtmt74YUXVK1aNQ0bNkyVKlWS1WpVfHy86tWrJ0nKyMhQQkKCJkyYIEmqX7++PDw8FB8fr86dO0uSTp48qT179mjixIm5rgUAAACuweE1t59++ql++OGHbO3PPfecIiIi9OGHH+bqOP7+/goPD7dr8/PzU3BwsK09JiZG48aNU5UqVVSlShWNGzdOvr6+6tKliyQpMDBQPXv21ODBgxUcHKygoCANGTJEtWrVynaDGgAAAFyfw+HWx8dHmzZtUpUqVezaN23adNO1s3kxdOhQXbp0Sb1791ZKSooaNmyo1atX293INmXKFLm7u6tz5866dOmSmjdvrrlz58rNzS1fawEAAEDhZzHGGEd2GD9+vEaPHq0XX3xRDzzwgKS/1tx++OGHevPNNzV8+PACKbQgpaWlKTAwUKmpqQoICHB2OYVKheErnF1CgTs8vq2zSwAAALeQ27zm8Mzt8OHDValSJb3zzjtauHChJKl69eqaO3eubd0rAAAA4Ax5es5t586dCbIAAAAodBz+hTIAAACgsCLcAgAAwGUQbgEAAOAyCLcAAABwGXkOtxkZGTpw4ICuXr2an/UAAAAAeeZwuL148aJ69uwpX19f1axZU0ePHpUk9e/fX+PHj8/3AgEAAIDccjjcjhgxQjt37tSGDRvsfpGsRYsWWrx4cb4WBwAAADjC4efcfv7551q8eLEeeOABWSwWW3uNGjX066+/5mtxAAAAgCMcnrk9deqUSpUqla39woULdmEXAAAAuNMcDrcNGjTQihUrbO+vBdoPPvhAjRo1yr/KAAAAAAc5vCwhNjZWjz76qPbt26erV6/qnXfe0d69e7VlyxYlJCQURI0AAABArjg8c9u4cWN9++23unjxoipXrqzVq1crJCREW7ZsUf369QuiRgAAACBXHJ65laRatWpp3rx5+V0LAAAAcFtyFW7T0tJyfcCAgIA8FwMAAADcjlyF22LFiuX6SQiZmZm3VRBwp1UYvuLWnXJweHzbfK4EAADcrlyF2/Xr19v++/Dhwxo+fLi6d+9uezrCli1bNG/ePMXGxhZMlQAAAEAu5CrcRkZG2v577Nixmjx5sp599llbW/v27VWrVi3NmjVL0dHR+V8lAAAAkAsOPy1hy5YtioiIyNYeERGh77//Pl+KAgAAAPLC4XAbFhammTNnZmv/73//q7CwsHwpCgAAAMgLhx8FNmXKFD355JNatWqVHnjgAUnSd999p19//VVLlizJ9wIBAACA3HJ45rZNmzY6ePCgHn/8cZ05c0anT5/W448/rp9//llt2rQpiBoBAACAXMnTjziULVtWb7/9dn7XAgAAANwWh2duAQAAgMKKcAsAAACXQbgFAACAyyDcAgAAwGXk6YYySTp16pQOHDggi8Wie++9VyVLlszPugAAAACHOTxze+HCBfXo0UOhoaF6+OGH9dBDDyk0NFQ9e/bUxYsXC6JGAAAAIFccDreDBg1SQkKCli1bprNnz+rs2bP64osvlJCQoMGDBxdEjQAAAECuOLwsYcmSJfrss8/UtGlTW1ubNm3k4+Ojzp07a8aMGflZH/JJheErnF0CAABAgXN45vbixYsKCQnJ1l6qVCmWJQAAAMCpHA63jRo10qhRo3T58mVb26VLlzRmzBg1atQoX4sDAAAAHOHwsoSpU6eqdevWKlu2rOrUqSOLxaLExER5e3tr1apVBVEjAAAAkCsOh9tatWrp4MGDWrBggX766ScZY/TMM8+oa9eu8vHxKYgaAQAAgFxxKNxeuXJFVatW1ZdffqmXXnqpoGoCAAAA8sShNbceHh5KT0+XxWIpqHoAAACAPHP4hrJ+/fppwoQJunr16m2ffMaMGapdu7YCAgIUEBCgRo0a6euvv7ZtN8Zo9OjRCg0NlY+Pj5o2baq9e/faHSM9PV39+vVTiRIl5Ofnp/bt2+v48eO3XRsAAADuPg6vud26davWrl2r1atXq1atWvLz87PbvnTp0lwfq2zZsho/frzuueceSdK8efP0+OOPa8eOHapZs6YmTpyoyZMna+7cubr33nv11ltvKSoqSgcOHJC/v78kKSYmRsuXL9eiRYsUHByswYMHq127dtq+fbvc3NwcvTwAAADcxSzGGOPIDi+88MJNt8+ZM+e2CgoKCtJ//vMf20/8xsTEaNiwYZL+mqUNCQnRhAkT1KtXL6WmpqpkyZKaP3++nn76aUnSiRMnFBYWpq+++kqtWrXK1TnT0tIUGBio1NRUBQQE3Fb9hRU/4pD/Do9v6+wSAAD4x8htXnN45vZ2w+uNZGZm6tNPP9WFCxfUqFEjHTp0SElJSWrZsqWtj5eXlyIjI7V582b16tVL27dv15UrV+z6hIaGKjw8XJs3b75huE1PT1d6errtfVpaWoFcEwAAAO4sh9fcStLVq1e1Zs0a/fe//9W5c+ck/TVjev78eYePtXv3bhUtWlReXl565ZVXFBcXpxo1aigpKUmSsv0aWkhIiG1bUlKSPD09Vbx48Rv2yUlsbKwCAwNtr7CwMIfrBgAAQOHj8MztkSNH9Oijj+ro0aNKT09XVFSU/P39NXHiRF2+fFkzZ8506HhVq1ZVYmKizp49qyVLlig6OloJCQm27dc/mcEYc8unNdyqz4gRIzRo0CDb+7S0NAIuAACAC3B45nbAgAGKiIhQSkqK3Y82PPHEE1q7dq3DBXh6euqee+5RRESEYmNjVadOHb3zzjuyWq2SlG0GNjk52Taba7ValZGRoZSUlBv2yYmXl5ftCQ3XXgAAALj7ORxuN23apH/961/y9PS0ay9fvrx+//332y7IGKP09HRVrFhRVqtV8fHxtm0ZGRlKSEhQ48aNJUn169eXh4eHXZ+TJ09qz549tj4AAAD453B4WUJWVpYyMzOztR8/ftz2eK7cev3119W6dWuFhYXp3LlzWrRokTZs2KCVK1fKYrEoJiZG48aNU5UqVVSlShWNGzdOvr6+6tKliyQpMDBQPXv21ODBgxUcHKygoCANGTJEtWrVUosWLRy9NAAAANzlHA63UVFRmjp1qmbNmiXprzWx58+f16hRo9SmTRuHjvXHH3+oW7duOnnypAIDA1W7dm2tXLlSUVFRkqShQ4fq0qVL6t27t1JSUtSwYUOtXr3aLkRPmTJF7u7u6ty5sy5duqTmzZtr7ty5POMWAADgH8jh59yeOHFCzZo1k5ubmw4ePKiIiAgdPHhQJUqU0DfffKNSpUoVVK0FhufcIi94zi0AAHdOgT3nNjQ0VImJifrkk0/0448/KisrSz179lTXrl3tbjADAAAA7jSHw60k+fj4qEePHurRo0d+1wMAAADkWZ7C7e+//65vv/1WycnJysrKstvWv3//fCkMAAAAcFSefn73lVdekaenp4KDg+1+LMFisRBuAQAA4DQOh9s333xTb775pkaMGKEiRfL0670AAABAgXA4nV68eFHPPPMMwRYAAACFjsMJtWfPnvr0008LohYAAADgtji8LCE2Nlbt2rXTypUrVatWLXl4eNhtnzx5cr4VBwAAADjC4XA7btw4rVq1SlWrVpWkbDeUAQAAAM7icLidPHmyPvzwQ3Xv3r0AygEAAADyzuE1t15eXmrSpElB1AIAAADcFofD7YABA/Tee+8VRC0AAADAbXF4WcL333+vdevW6csvv1TNmjWz3VC2dOnSfCsOAAAAcITD4bZYsWLq2LFjQdQCAAAA3JY8/fwuAAAAUBjxM2MAAABwGQ7P3FasWPGmz7P97bffbqsgAAAAIK9uGW6XLl2qhg0bqkyZMpKkmJgYu+1XrlzRjh07tHLlSr322msFUiQAAACQG7cMt0WKFNFDDz2kuLg41alTRwMGDMix3/vvv68ffvgh3wsEAAAAcuuWa247dOigRYsWKTo6+qb9WrdurSVLluRbYQAAAICjcnVD2f33369vvvnmpn0+++wzBQUF5UtRAAAAQF7k+oaygIAASVK9evXsbigzxigpKUmnTp3S9OnT879CAAAAIJccflpChw4d7N4XKVJEJUuWVNOmTVWtWrX8qgsAAABwmMPhdtSoUQVRBwAAAHDb+BEHAAAAuIxcz9wWKVLkpj/eIEkWi0VXr1697aIAAACAvMh1uI2Li7vhts2bN+u9996TMSZfigIAAADyItfh9vHHH8/W9tNPP2nEiBFavny5unbtqn//+9/5WhyyqzB8hbNLAAAAKLTytOb2xIkTeumll1S7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6VJTokQJM3ToUFsfxufOOnfunNmxY4fZsWOHkWQmT55sduzYYXvsZ36Nx6OPPmpq165ttmzZYrZs2WJq1arFo8BygXBbAN5//31Tvnx54+npae677z7b46hQcCTl+JozZ46tT1ZWlhk1apSxWq3Gy8vLPPzww2b37t12x7l06ZLp27evCQoKMj4+PqZdu3bm6NGjd/hq/hmuD7eMj3MtX77chIeHGy8vL1OtWjUza9Ysu+2Mj/OkpaWZAQMGmHLlyhlvb29TqVIlM3LkSJOenm7rw/jcWevXr8/x75zo6GhjTP6Nx+nTp03Xrl2Nv7+/8ff3N127djUpKSl36CrvXhZjjHHOnDEAAACQv1hzCwAAAJdBuAUAAIDLINwCAADAZRBuAQAA4DIItwAAAHAZhFsAAAC4DMItAAAAXAbhFgAAAC6DcAsAt3D48GFZLBYlJiYWyPEtFos+//zzAjk2APzTEG4BFGrdu3dXhw4dnFpDWFiYTp48qfDwcEnShg0bZLFYdPbsWafW5aoqVKigqVOnOrsMAHcpwi0A3IKbm5usVqvc3d2dXUqhlpGR4ewS7BS2egDcGYRbAHe1hIQE3X///fLy8lLp0qU1fPhwXb161ba9adOm6t+/v4YOHaqgoCBZrVaNHj3a7hg//fSTHnzwQXl7e6tGjRpas2aN3VKBvy9LOHz4sJo1ayZJKl68uCwWi7p37y4p5xnHunXr2p3v4MGDevjhh23nio+Pv+U1GmM0ceJEVapUST4+PqpTp44+++wz2/ZrM8lr165VRESEfH191bhxYx04cOCmxz1+/LieeeYZBQUFyc/PTxEREdq6dask6ddff9Xjjz+ukJAQFS1aVA0aNNCaNWvs9q9QoYLeeustde/eXYGBgXrppZckScOGDdO9994rX19fVapUSW+88YauXLlit++yZcsUEREhb29vlShRQh07dpT013gdOXJEAwcOlMVikcVise2zefNmPfzww/Lx8VFYWJj69++vCxcu3LKeW+03ffp0ValSRd7e3goJCdFTTz11yzEBUHgRbgHctX7//Xe1adNGDRo00M6dOzVjxgzNnj1bb731ll2/efPmyc/PT1u3btXEiRM1duxYW6jMyspShw4d5Ovrq61bt2rWrFkaOXLkDc8ZFhamJUuWSJIOHDigkydP6p133slVvVlZWerYsaPc3Nz03XffaebMmRo2bNgt9/vXv/6lOXPmaMaMGdq7d68GDhyo5557TgkJCXb9Ro4cqUmTJumHH36Qu7u7evToccNjnj9/XpGRkTpx4oSWLVumnTt3aujQocrKyrJtb9OmjdasWaMdO3aoVatWeuyxx3T06FG74/znP/9ReHi4tm/frjfeeEOS5O/vr7lz52rfvn1655139MEHH2jKlCm2fVasWKGOHTuqbdu22rFjhy2US9LSpUtVtmxZjR07VidPntTJkyclSbt371arVq3UsWNH7dq1S4sXL9amTZvUt2/fm9Zzq/1++OEH9e/fX2PHjtWBAwe0cuVKPfzww7ccEwCFmAGAQiw6Oto8/vjjOW57/fXXTdWqVU1WVpat7f333zdFixY1mZmZxhhjIiMjzYMPPmi3X4MGDcywYcOMMcZ8/fXXxt3d3Zw8edK2PT4+3kgycXFxxhhjDh06ZCSZHTt2GGOMWb9+vZFkUlJS7I5bvnx5M2XKFLu2OnXqmFGjRhljjFm1apVxc3Mzx44ds23/+uuv7c51vfPnzxtvb2+zefNmu/aePXuaZ5991q6eNWvW2LavWLHCSDKXLl3K8bj//e9/jb+/vzl9+nSO23NSo0YN895779nely9f3nTo0OGW+02cONHUr1/f9r5Ro0ama9euN+yf0+fYrVs38/LLL9u1bdy40RQpUsR2jTnVc6v9lixZYgICAkxaWtotrwPA3YEFZADuWvv371ejRo3s/um6SZMmOn/+vI4fP65y5cpJkmrXrm23X+nSpZWcnCzpr9nXsLAwWa1W2/b777+/wOotV66cypYta2tr1KjRTffZt2+fLl++rKioKLv2jIwM1atXz67t79dZunRpSVJycrLtc/i7xMRE1atXT0FBQTme98KFCxozZoy+/PJLnThxQlevXtWlS5eyzdxem3H9u88++0xTp07VL7/8ovPnz+vq1asKCAiwO/e1JQO5tX37dv3yyy/6+OOPbW3GGGVlZenQoUOqXr16jvXcar+oqCiVL19elSpV0qOPPqpHH31UTzzxhHx9fR2qD0DhQbgFcNcyxtgF22ttkuzaPTw87PpYLBbbP7/ndIy8KlKkiO381/x9ren1266vMyfX6lyxYoXKlCljt83Ly8vu/d+v89pxr+1/PR8fn5ue97XXXtOqVav0P//zP7rnnnvk4+Ojp556KttNWn5+fnbvv/vuOz3zzDMaM2aMWrVqpcDAQC1atEiTJk3K9blzkpWVpV69eql///7Ztv09vF9fz6328/T01I8//qgNGzZo9erVevPNNzV69Ght27ZNxYoVc7hOAM5HuAVw16pRo4aWLFliF1A3b94sf3//bEHwRqpVq6ajR4/qjz/+UEhIiCRp27ZtN93H09NTkpSZmWnXXrJkSdsaUUlKS0vToUOH7Oo9evSoTpw4odDQUEnSli1bbnmNXl5eOnr0qCIjI3N1TblRu3Zt/e///q/OnDmT4+ztxo0b1b17dz3xxBOS/lqDe/jw4Vse99tvv1X58uXt1i0fOXIk27nXrl2rF154IcdjeHp6Zvts77vvPu3du1f33HPPLWtwdD93d3e1aNFCLVq00KhRo1SsWDGtW7fOdpMbgLsLN5QBKPRSU1OVmJho9zp69Kh69+6tY8eOqV+/fvrpp5/0xRdfaNSoURo0aJCKFMnd/7xFRUWpcuXKio6O1q5du/Ttt9/agtmNZlXLly8vi8WiL7/8UqdOndL58+clSY888ojmz5+vjRs3as+ePYqOjpabm5ttvxYtWqhq1ap6/vnntXPnTm3cuPGmN69Jf92cNWTIEA0cOFDz5s3Tr7/+qh07duj999/XvHnzcnWNOXn22WdltVrVoUMHffvtt/rtt9+0ZMkSW9i+5557tHTpUiUmJmrnzp3q0qXLDWeB/+6ee+7R0aNHtWjRIv3666969913FRcXZ9dn1KhR+uSTTzRq1Cjt379fu3fv1sSJE23bK1SooG+++Ua///67/vzzT0l/PYFhy5Yt6tOnjxITE3Xw4EEtW7ZM/fr1u2k9t9rvyy+/1LvvvqvExEQdOXJEH330kbKyslS1alWHPk8AhYjzlvsCwK1FR0cbSdle0dHRxhhjNmzYYBo0aGA8PT2N1Wo1w4YNM1euXLHtHxkZaQYMGGB3zMcff9y2vzHG7N+/3zRp0sR4enqaatWqmeXLlxtJZuXKlcaY7DeUGWPM2LFjjdVqNRaLxXas1NRU07lzZxMQEGDCwsLM3Llz7W4oM8aYAwcOmAcffNB4enqae++916xcufKmN5QZY0xWVpZ55513TNWqVY2Hh4cpWbKkadWqlUlISDDG5HyD244dO4wkc+jQoRse9/Dhw+bJJ580AQEBxtfX10RERJitW7farrlZs2bGx8fHhIWFmWnTpmX7LHO68csYY1577TUTHBxsihYtap5++mkzZcoUExgYaNdnyZIlpm7dusbT09OUKFHCdOzY0bZty5Ytpnbt2sbLy8v8/a+p77//3kRFRZmiRYsaPz8/U7t2bfP222/fsp6b7bdx40YTGRlpihcvbnx8fEzt2rXN4sWLb/iZASj8LMbksAgMAP7Bvv32Wz344IP65ZdfVLlyZWeXAwBwAOEWwD9eXFycihYtqipVquiXX37RgAEDVLx4cW3atMnZpQEAHMQNZQD+8c6dO6ehQ4fq2LFjKlGihFq0aGF3dz8A4O7BzC0AAABcBk9LAAAAgMsg3AIAAMBlEG4BAADgMgi3AAAAcBmEWwAAALgMwi0AAABcBuEWAAAALoNwCwAAAJfx/wCCqIF/h4ldvgAAAABJRU5ErkJggg==",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "# Calculamos una longitud simple en número de caracteres\n",
        "df_reducido[\"text_length\"] = df_reducido[\"text\"].str.len()\n",
        "\n",
        "print(df_reducido[\"text_length\"].describe())\n",
        "\n",
        "plt.figure(figsize=(8, 5))\n",
        "plt.hist(df_reducido[\"text_length\"], bins=40)\n",
        "plt.title(\"Distribución de la longitud de los textos\")\n",
        "plt.xlabel(\"Longitud en caracteres\")\n",
        "plt.ylabel(\"Número de documentos\")\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "id": "6b7c9e0c",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6b7c9e0c",
        "outputId": "733b23d0-6942-424d-82d6-dcd1bfc0f9f4"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones tras eliminar textos cortos: (3952, 8)\n"
          ]
        }
      ],
      "source": [
        "# Eliminamos textos demasiado cortos\n",
        "longitud_minima = 40\n",
        "\n",
        "df_reducido = df_reducido[df_reducido[\"text_length\"] >= longitud_minima].copy()\n",
        "df_reducido = df_reducido.reset_index(drop=True)\n",
        "\n",
        "print(\"Dimensiones tras eliminar textos cortos:\", df_reducido.shape)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "dfa2401c",
      "metadata": {
        "id": "dfa2401c"
      },
      "source": [
        "## 4. Preprocesamiento básico\n",
        "\n",
        "El objetivo del preprocesamiento es reducir ruido antes de construir la representación documento-término.\n",
        "\n",
        "En esta práctica aplicaremos un preprocesamiento sencillo:\n",
        "\n",
        "- Conversión a minúsculas,\n",
        "- Eliminación de caracteres no alfabéticos,\n",
        "- Tokenización básica,\n",
        "- Eliminación de stopwords en inglés,\n",
        "- Eliminación de tokens muy cortos.\n",
        "\n",
        "No aplicaremos stemming como flujo principal, porque puede producir raíces poco interpretables.\n",
        "\n",
        "La lematización se deja como extensión opcional al final del notebook."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "id": "daef60d5",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "daef60d5",
        "outputId": "34cc2b6c-3bc5-4146-cfe5-dc5795ed199c"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "[nltk_data] Downloading package stopwords to\n",
            "[nltk_data]     /Users/sergio/nltk_data...\n",
            "[nltk_data]   Package stopwords is already up-to-date!\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "True"
            ]
          },
          "execution_count": 16,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "import nltk\n",
        "\n",
        "# Descargamos la lista de stopwords de NLTK.\n",
        "# Si ya está descargada, NLTK no la vuelve a descargar.\n",
        "nltk.download(\"stopwords\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "id": "aa3c63f0",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "aa3c63f0",
        "outputId": "7f6411fe-95c3-408c-9216-26c911668759"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Número total de stopwords: 215\n"
          ]
        }
      ],
      "source": [
        "from nltk.corpus import stopwords\n",
        "\n",
        "stopwords_ingles = set(stopwords.words(\"english\"))\n",
        "\n",
        "# Añadimos algunas palabras frecuentes poco informativas en noticias.\n",
        "# Esta lista puede ajustarse tras inspeccionar resultados.\n",
        "stopwords_adicionales = {\n",
        "    \"said\", \"says\", \"say\", \"also\", \"one\", \"two\", \"new\", \"would\", \"could\",\n",
        "    \"get\", \"like\", \"time\", \"people\", \"year\", \"years\", \"make\", \"made\"\n",
        "}\n",
        "\n",
        "stopwords_totales = stopwords_ingles.union(stopwords_adicionales)\n",
        "\n",
        "print(\"Número total de stopwords:\", len(stopwords_totales))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 18,
      "id": "V2f6qj4WlrdU",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "V2f6qj4WlrdU",
        "outputId": "c34df7ac-2fba-42a2-dfa3-7bdd12aa77d3"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "{'a',\n",
              " 'about',\n",
              " 'above',\n",
              " 'after',\n",
              " 'again',\n",
              " 'against',\n",
              " 'ain',\n",
              " 'all',\n",
              " 'also',\n",
              " 'am',\n",
              " 'an',\n",
              " 'and',\n",
              " 'any',\n",
              " 'are',\n",
              " 'aren',\n",
              " \"aren't\",\n",
              " 'as',\n",
              " 'at',\n",
              " 'be',\n",
              " 'because',\n",
              " 'been',\n",
              " 'before',\n",
              " 'being',\n",
              " 'below',\n",
              " 'between',\n",
              " 'both',\n",
              " 'but',\n",
              " 'by',\n",
              " 'can',\n",
              " 'could',\n",
              " 'couldn',\n",
              " \"couldn't\",\n",
              " 'd',\n",
              " 'did',\n",
              " 'didn',\n",
              " \"didn't\",\n",
              " 'do',\n",
              " 'does',\n",
              " 'doesn',\n",
              " \"doesn't\",\n",
              " 'doing',\n",
              " 'don',\n",
              " \"don't\",\n",
              " 'down',\n",
              " 'during',\n",
              " 'each',\n",
              " 'few',\n",
              " 'for',\n",
              " 'from',\n",
              " 'further',\n",
              " 'get',\n",
              " 'had',\n",
              " 'hadn',\n",
              " \"hadn't\",\n",
              " 'has',\n",
              " 'hasn',\n",
              " \"hasn't\",\n",
              " 'have',\n",
              " 'haven',\n",
              " \"haven't\",\n",
              " 'having',\n",
              " 'he',\n",
              " \"he'd\",\n",
              " \"he'll\",\n",
              " \"he's\",\n",
              " 'her',\n",
              " 'here',\n",
              " 'hers',\n",
              " 'herself',\n",
              " 'him',\n",
              " 'himself',\n",
              " 'his',\n",
              " 'how',\n",
              " 'i',\n",
              " \"i'd\",\n",
              " \"i'll\",\n",
              " \"i'm\",\n",
              " \"i've\",\n",
              " 'if',\n",
              " 'in',\n",
              " 'into',\n",
              " 'is',\n",
              " 'isn',\n",
              " \"isn't\",\n",
              " 'it',\n",
              " \"it'd\",\n",
              " \"it'll\",\n",
              " \"it's\",\n",
              " 'its',\n",
              " 'itself',\n",
              " 'just',\n",
              " 'like',\n",
              " 'll',\n",
              " 'm',\n",
              " 'ma',\n",
              " 'made',\n",
              " 'make',\n",
              " 'me',\n",
              " 'mightn',\n",
              " \"mightn't\",\n",
              " 'more',\n",
              " 'most',\n",
              " 'mustn',\n",
              " \"mustn't\",\n",
              " 'my',\n",
              " 'myself',\n",
              " 'needn',\n",
              " \"needn't\",\n",
              " 'new',\n",
              " 'no',\n",
              " 'nor',\n",
              " 'not',\n",
              " 'now',\n",
              " 'o',\n",
              " 'of',\n",
              " 'off',\n",
              " 'on',\n",
              " 'once',\n",
              " 'one',\n",
              " 'only',\n",
              " 'or',\n",
              " 'other',\n",
              " 'our',\n",
              " 'ours',\n",
              " 'ourselves',\n",
              " 'out',\n",
              " 'over',\n",
              " 'own',\n",
              " 'people',\n",
              " 're',\n",
              " 's',\n",
              " 'said',\n",
              " 'same',\n",
              " 'say',\n",
              " 'says',\n",
              " 'shan',\n",
              " \"shan't\",\n",
              " 'she',\n",
              " \"she'd\",\n",
              " \"she'll\",\n",
              " \"she's\",\n",
              " 'should',\n",
              " \"should've\",\n",
              " 'shouldn',\n",
              " \"shouldn't\",\n",
              " 'so',\n",
              " 'some',\n",
              " 'such',\n",
              " 't',\n",
              " 'than',\n",
              " 'that',\n",
              " \"that'll\",\n",
              " 'the',\n",
              " 'their',\n",
              " 'theirs',\n",
              " 'them',\n",
              " 'themselves',\n",
              " 'then',\n",
              " 'there',\n",
              " 'these',\n",
              " 'they',\n",
              " \"they'd\",\n",
              " \"they'll\",\n",
              " \"they're\",\n",
              " \"they've\",\n",
              " 'this',\n",
              " 'those',\n",
              " 'through',\n",
              " 'time',\n",
              " 'to',\n",
              " 'too',\n",
              " 'two',\n",
              " 'under',\n",
              " 'until',\n",
              " 'up',\n",
              " 've',\n",
              " 'very',\n",
              " 'was',\n",
              " 'wasn',\n",
              " \"wasn't\",\n",
              " 'we',\n",
              " \"we'd\",\n",
              " \"we'll\",\n",
              " \"we're\",\n",
              " \"we've\",\n",
              " 'were',\n",
              " 'weren',\n",
              " \"weren't\",\n",
              " 'what',\n",
              " 'when',\n",
              " 'where',\n",
              " 'which',\n",
              " 'while',\n",
              " 'who',\n",
              " 'whom',\n",
              " 'why',\n",
              " 'will',\n",
              " 'with',\n",
              " 'won',\n",
              " \"won't\",\n",
              " 'would',\n",
              " 'wouldn',\n",
              " \"wouldn't\",\n",
              " 'y',\n",
              " 'year',\n",
              " 'years',\n",
              " 'you',\n",
              " \"you'd\",\n",
              " \"you'll\",\n",
              " \"you're\",\n",
              " \"you've\",\n",
              " 'your',\n",
              " 'yours',\n",
              " 'yourself',\n",
              " 'yourselves'}"
            ]
          },
          "execution_count": 18,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "stopwords_totales"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 19,
      "id": "9cc846e7",
      "metadata": {
        "id": "9cc846e7"
      },
      "outputs": [],
      "source": [
        "def preprocesar_texto(texto):\n",
        "    '''\n",
        "    Aplica un preprocesamiento básico sobre un texto en inglés.\n",
        "\n",
        "    Pasos:\n",
        "    1. Convertir a minúsculas.\n",
        "    2. Eliminar caracteres no alfabéticos.\n",
        "    3. Separar en tokens.\n",
        "    4. Eliminar stopwords.\n",
        "    5. Eliminar tokens muy cortos.\n",
        "\n",
        "    Devuelve:\n",
        "    - Una cadena con los tokens procesados unidos por espacios.\n",
        "    '''\n",
        "\n",
        "    # 1. Convertir a minúsculas\n",
        "    texto = texto.lower()\n",
        "    # 2. Eliminar caracteres no alfabéticos (también descarta números). \\s significa un \"espacio en blanco\"\n",
        "    texto = re.sub(r\"[^a-z\\s]\", \" \", texto)\n",
        "    # 3. Separar en tokens, obviando espacios duplicados\n",
        "    tokens = texto.split()\n",
        "\n",
        "    # Filtramos aquellos tokens que no sean stopwords y cuya longitud (nº de letras) sea mayor o igual a 3\n",
        "    tokens_filtrados = []\n",
        "    for token in tokens:\n",
        "        if token not in stopwords_totales and len(token) >= 3:\n",
        "            tokens_filtrados.append(token)\n",
        "\n",
        "    texto_procesado = \" \".join(tokens_filtrados)\n",
        "\n",
        "    return texto_procesado"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 20,
      "id": "8ee4cf58",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 521
        },
        "id": "8ee4cf58",
        "outputId": "43268a21-2895-46e2-8668-c3eea3703484"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>text</th>\n",
              "      <th>processed_text</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>How to Manage Your Personal Brand. Make no mis...</td>\n",
              "      <td>manage personal brand mistake facebook account...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>It Looks Like Uber's Winning Its War With New ...</td>\n",
              "      <td>looks uber winning war york grab popcorn</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>The Progressive Promise of Today's Technology....</td>\n",
              "      <td>progressive promise today technology digital p...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>Don't Let These 5 Confusing Words Mar Your Ima...</td>\n",
              "      <td>let confusing words mar image tom articulate p...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>What You Don't Know About Overnight Success. I...</td>\n",
              "      <td>know overnight success fighting thing overnigh...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   category                                               text  \\\n",
              "0  BUSINESS  How to Manage Your Personal Brand. Make no mis...   \n",
              "1  BUSINESS  It Looks Like Uber's Winning Its War With New ...   \n",
              "2  BUSINESS  The Progressive Promise of Today's Technology....   \n",
              "3  BUSINESS  Don't Let These 5 Confusing Words Mar Your Ima...   \n",
              "4  BUSINESS  What You Don't Know About Overnight Success. I...   \n",
              "\n",
              "                                      processed_text  \n",
              "0  manage personal brand mistake facebook account...  \n",
              "1           looks uber winning war york grab popcorn  \n",
              "2  progressive promise today technology digital p...  \n",
              "3  let confusing words mar image tom articulate p...  \n",
              "4  know overnight success fighting thing overnigh...  "
            ]
          },
          "execution_count": 20,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "df_reducido[\"processed_text\"] = df_reducido[\"text\"].apply(preprocesar_texto)\n",
        "\n",
        "df_reducido[[\"category\", \"text\", \"processed_text\"]].head()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "7b3504de",
      "metadata": {
        "id": "7b3504de"
      },
      "source": [
        "### 4.1. Comparación entre texto original y texto procesado\n",
        "\n",
        "Es importante revisar manualmente algunos ejemplos.\n",
        "\n",
        "El preprocesamiento puede eliminar ruido, pero también puede eliminar información útil si se aplica de forma demasiado agresiva."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 21,
      "id": "48e98eab",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "48e98eab",
        "outputId": "1d4bdb91-105d-4f91-9244-ed112d047f3b"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "====================================================================================================\n",
            "Categoría: BUSINESS\n",
            "\n",
            "Texto original:\n",
            "How to Manage Your Personal Brand. Make no mistake: If you have a Facebook account, an Instagram page, a Twitter profile, you are a brand. Every time you upload a photo, add a link, or post an update, you're putting into the world another idea of yourself and what you stand for.\n",
            "\n",
            "Texto procesado:\n",
            "manage personal brand mistake facebook account instagram page twitter profile brand every upload photo add link post update putting world another idea stand\n",
            "\n",
            "====================================================================================================\n",
            "Categoría: BUSINESS\n",
            "\n",
            "Texto original:\n",
            "It Looks Like Uber's Winning Its War With New York. Grab the popcorn.\n",
            "\n",
            "Texto procesado:\n",
            "looks uber winning war york grab popcorn\n",
            "\n",
            "====================================================================================================\n",
            "Categoría: BUSINESS\n",
            "\n",
            "Texto original:\n",
            "The Progressive Promise of Today's Technology. A digital policy for the new century, tailored not just to the moment but for the future, is vital if we are to unleash economic growth, shared prosperity, and the full potential of technology for citizens and consumers. But such a policy architecture requires a new consensus -- on privacy, on security, on customer protections, on growth and mobility.\n",
            "\n",
            "Texto procesado:\n",
            "progressive promise today technology digital policy century tailored moment future vital unleash economic growth shared prosperity full potential technology citizens consumers policy architecture requires consensus privacy security customer protections growth mobility\n",
            "\n"
          ]
        }
      ],
      "source": [
        "for indice in range(3):\n",
        "    print(\"=\" * 100)\n",
        "    print(\"Categoría:\", df_reducido.loc[indice, \"category\"])\n",
        "    print(\"\\nTexto original:\")\n",
        "    print(df_reducido.loc[indice, \"text\"])\n",
        "    print(\"\\nTexto procesado:\")\n",
        "    print(df_reducido.loc[indice, \"processed_text\"])\n",
        "    print()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "2bef18c4",
      "metadata": {
        "id": "2bef18c4"
      },
      "source": [
        "## 5. Exploración del texto procesado\n",
        "\n",
        "Antes de entrenar LDA, revisaremos qué palabras aparecen con más frecuencia en el corpus procesado.\n",
        "\n",
        "Esto ayuda a detectar:\n",
        "\n",
        "- términos demasiado frecuentes,\n",
        "- palabras poco informativas,\n",
        "- posibles stopwords adicionales,\n",
        "- y ruido que podría afectar a los tópicos."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 22,
      "id": "1e3accae",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 990
        },
        "id": "1e3accae",
        "outputId": "73eca2e9-ca74-476c-98ff-b506060c76c4"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>word</th>\n",
              "      <th>frequency</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>trump</td>\n",
              "      <td>251</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>day</td>\n",
              "      <td>218</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>world</td>\n",
              "      <td>202</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>best</td>\n",
              "      <td>180</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>photos</td>\n",
              "      <td>176</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>life</td>\n",
              "      <td>162</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>first</td>\n",
              "      <td>156</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>food</td>\n",
              "      <td>152</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>may</td>\n",
              "      <td>146</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>know</td>\n",
              "      <td>143</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>way</td>\n",
              "      <td>137</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>take</td>\n",
              "      <td>129</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>good</td>\n",
              "      <td>128</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>week</td>\n",
              "      <td>125</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>want</td>\n",
              "      <td>122</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>many</td>\n",
              "      <td>119</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>think</td>\n",
              "      <td>114</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>video</td>\n",
              "      <td>114</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>back</td>\n",
              "      <td>112</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>health</td>\n",
              "      <td>112</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>even</td>\n",
              "      <td>111</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>need</td>\n",
              "      <td>111</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>22</th>\n",
              "      <td>apple</td>\n",
              "      <td>110</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>23</th>\n",
              "      <td>love</td>\n",
              "      <td>103</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>24</th>\n",
              "      <td>things</td>\n",
              "      <td>101</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25</th>\n",
              "      <td>help</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>26</th>\n",
              "      <td>game</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>27</th>\n",
              "      <td>travel</td>\n",
              "      <td>100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28</th>\n",
              "      <td>every</td>\n",
              "      <td>97</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>29</th>\n",
              "      <td>last</td>\n",
              "      <td>97</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "      word  frequency\n",
              "0    trump        251\n",
              "1      day        218\n",
              "2    world        202\n",
              "3     best        180\n",
              "4   photos        176\n",
              "5     life        162\n",
              "6    first        156\n",
              "7     food        152\n",
              "8      may        146\n",
              "9     know        143\n",
              "10     way        137\n",
              "11    take        129\n",
              "12    good        128\n",
              "13    week        125\n",
              "14    want        122\n",
              "15    many        119\n",
              "16   think        114\n",
              "17   video        114\n",
              "18    back        112\n",
              "19  health        112\n",
              "20    even        111\n",
              "21    need        111\n",
              "22   apple        110\n",
              "23    love        103\n",
              "24  things        101\n",
              "25    help        100\n",
              "26    game        100\n",
              "27  travel        100\n",
              "28   every         97\n",
              "29    last         97"
            ]
          },
          "execution_count": 22,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Unimos todos los textos procesados\n",
        "todos_los_tokens = []\n",
        "\n",
        "for texto in df_reducido[\"processed_text\"]:\n",
        "    tokens = texto.split()\n",
        "    for token in tokens:\n",
        "        todos_los_tokens.append(token)\n",
        "\n",
        "# Calculamos el número de apariciones de cada token\n",
        "frecuencias = Counter(todos_los_tokens)\n",
        "\n",
        "# Obtenemos y mostramos las frecuencias de las 30 palabras más frecuentes\n",
        "palabras_frecuentes = pd.DataFrame(\n",
        "    frecuencias.most_common(30),\n",
        "    columns=[\"word\", \"frequency\"]\n",
        ")\n",
        "\n",
        "palabras_frecuentes"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 23,
      "id": "5e6dcd47",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 565
        },
        "id": "5e6dcd47",
        "outputId": "866afad4-a50e-4662-e344-eab66096ba8a"
      },
      "outputs": [
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2cAAAIiCAYAAABMqbAOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlYBJREFUeJzs3XlcVdX+//HXAeEIAgdBEVQUR9ScUtPQhKNWlDg1OaQpatrkgOONnIfCyrluNjvkdNXSTC01FbIcwnkeIkkySVMDR1TYvz/8en4eEURFmd7Px2M/LnvvNXzW8cjt41p7bZNhGAYiIiIiIiKSoxxyOgARERERERFRciYiIiIiIpIrKDkTERERERHJBZSciYiIiIiI5AJKzkRERERERHIBJWciIiIiIiK5gJIzERERERGRXEDJmYiIiIiISC6g5ExERERERCQXUHImIpKLpaam0qRJE4KCgrh48WJOhyMiIiL3kZIzEcnUjBkzMJlMtqNQoUKULl2arl27cuzYsTtuz2q1YrVa7yqWgIAAWrRocVd186qhQ4dy/Phxli1bhouLS7a1+8EHH1CxYkWcnZ0xmUz8+++/2dZ2brZixQpGjhyZI33PnTuXyZMn50jf2SE8PJyAgICcDkPug+u/5+Pj4+9rP++88w5Lliy5r32I5HVKzkQkS6ZPn87GjRtZvXo1PXr0YN68eTRu3Jjz58/ndGj51vLly5k1axY//PAD3t7e2dbujh076NOnD02aNGHt2rVs3LgRd3f3bGs/N1uxYgWjRo3Kkb7zenIm+VdYWBgbN27Ez8/vvvaj5Ezk9grldAAikjdUr16devXqAdCkSRNSU1MZM2YMS5YsoWPHjjkc3e1duXLFNvOXV4SFhd3V7OTt7N27F4AePXpQv379TMteuHABV1fXbI9BMpeamsrVq1cxm805HcoD9aDHre/3NcWLF6d48eI5HYaIoJkzEblLjz76KAB//PEHAKNGjaJBgwZ4eXnh4eFBnTp1+OKLLzAM47Zt3WndxYsXU7NmTQoXLkz58uWZOnWq3f3o6GhMJhNfffUVAwYMoFSpUpjNZn777TdOnjzJ66+/TrVq1XBzc8PHx4emTZuyfv36dP1MmzaNWrVq4ebmhru7O1WqVOGtt97KdCzx8fGYTCbef/993n33XQICAnBxccFqtXLo0CGuXLnCm2++ScmSJbFYLDzzzDOcOHHCro3//e9/PPnkk/j5+eHi4kLVqlV58803081S/v7777Rv356SJUtiNpspUaIEzZo1Y8eOHRnGZ7Va6dSpEwANGjTAZDIRHh5uu1e9enV++uknGjZsiKurK926dQMgOTmZgQMHUq5cOZydnSlVqhQRERHpYkpLS+ODDz6gdu3auLi44OnpyaOPPsrSpUttZUwm0y2XFgYEBNhiuS4xMZFXXnmF0qVL4+zsTLly5Rg1ahRXr15N95mPHz+eiRMnUq5cOdzc3AgKCmLTpk22cuHh4fz3v/+1xXD9uL6UyzAMPvroI1vsRYsW5fnnn+f333+3i2n79u20aNECHx8fzGYzJUuWJCwsjD///DPTz3358uX88ccfdn3fGP97773H2LFjKVeuHGazmXXr1nHp0iUGDBhA7dq1sVgseHl5ERQUxLfffpuuj4ULF9KgQQMsFguurq6UL1/e9ueXmayOO6uuf4/Wr1/Po48+iouLC6VKlWLYsGGkpqbaymU2boAtW7bQqlUrvLy8KFy4MA8//DALFiyw6+v6crzVq1fTtWtXvLy8KFKkCC1btkwXf2bf76NHj9KpUyfbn2nVqlWZMGECaWlpdm2kpKQwevRoqlatSuHChfH29qZJkyZs2LDhjj/PrHyP/vvf/xIcHIyPjw9FihShRo0avPfee1y5cuWWY9u4cSMNGzbExcWFgIAApk+fDlybha9Tpw6urq7UqFGDH3744Zaf483LGn/88UeaNWuGh4cHrq6uNGrUiDVr1tiVGTlyJCaTib1799KhQwcsFgslSpSgW7duJCUl2cqZTCbOnz/PzJkzbd//G5e479mzh9atW1O0aFEKFy5M7dq1mTlzJiIFTd75J2QRyVV+++03ANu/tsbHx/PKK69QpkwZADZt2kTv3r05duwYw4cPz7StO6m7Y8cOIiIiGDlyJL6+vsyZM4e+ffty+fJlBg4caFc2MjKSoKAgPv74YxwcHPDx8eHkyZMAjBgxAl9fX86dO8fixYuxWq2sWbPG9h8L8+fP5/XXX6d3796MHz8eBwcHfvvtN/bt25elz+e///0vNWvW5L///S///vsvAwYMoGXLljRo0AAnJye+/PJL/vjjDwYOHMjLL79sl7wcOHCAJ598kj59+uDu7s6BAwcYN24cv/76K2vXrrWVa968Oampqbz33nuU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rubNm3P8+HEOHjxo18bNz702bNiQsmXL2pZIXner7/fatWupVq1auucvw8PDMQzDNvv4/fffU7hw4UyXimb392j79u20atUKb29v2+/Gzp07k5qayqFDh+zK+vn5UbduXdu5l5cXPj4+1K5d226G7PrvnMz+XmzYsIHTp0/TpUsXu3GkpaXx1FNPERsbm25J881/3jVr1uTSpUu3/f0P1/4MmjVrhr+/v9318PBwLly4YDfTLZLfKTkTkSyZNWsWsbGxbN++nb/++otdu3bRqFEjAH799VeefPJJAD777DN++eUXYmNjGTJkCECm7+e607q+vr7p2rh+7dSpU3bXb7Xz2MSJE3nttddo0KABX3/9NZs2bSI2NpannnrKrq+XXnrJtvTwueeew8fHhwYNGrB69erMP6j/4+XlZXfu7Oyc6fVLly4BcP78eRo1asT69esZPXo0MTEx7Nixw7bs8XqMJpOJNWvWEBoaynvvvUedOnUoXrw4ffr0yXR53e3c6jP7+++/2bVrF05OTnaHu7s7hmHYEteTJ0/i6Oh4yz+ju/H333/z3Xffpev3oYceAkiXMN+8o+X1TSWy8n64v//+G8MwKFGiRLr+Nm3aZOvLYrEQExND7dq1eeutt3jooYcoWbIkI0aMSPcc0J261Wf/zTff0LZtW0qVKsXs2bPZuHEjsbGxdOvWzfadAQgODmbJkiVcvXqVzp07U7p0aapXr868efOyZdx36lZLIbP69/Tvv/8GYODAgeliev3114H0f/YZ/V7Iyu+EU6dO3fL69YTmehsnT56kZMmSdv/ocrPs/B4dPXqUxo0bc+zYMaZMmcL69euJjY21PTd58/f65t8tcO33y+1+52Q0DoDnn38+3TjeffddDMPg9OnTdnXu5e9fVv8MRAoCPXMmIllStWpV226NN5s/fz5OTk4sW7aMwoUL265nZcvkO62bmJiY4bWb/+Pg+nNQN5o9ezZWq5Vp06bZXb9VQtO1a1e6du3K+fPn+emnnxgxYgQtWrTg0KFDlC1b9rZjuxtr164lISGBn376icaNG9uu3zizdl3ZsmX54osvADh06BALFixg5MiRXL58mY8//viu+r/VZ1asWDFcXFzSPeNy43249vxhamoqiYmJmW7JbTabSUlJSXf95v8AK1asGDVr1uTtt9++ZTuZPS9zp4oVK4bJZGL9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zMj0MzcMwzh9+rTx/PPPG56enra+bxe/YRjGuHHjjICAAMNsNhtVq1Y1PvvsM9sOedctW7bMePrpp41SpUoZzs7Oho+Pj9G8eXNj/fr1t40rK+M2jDvbrfGhhx4yoqOjjXr16hlms9nw8/Mz3nrrLbvdF2837p07dxpt27Y1fHx8DCcnJ8PX19do2rSp8fHHH9vKXP8ur1q1ynjppZcMT09Pw8XFxWjevLlx+PDhW8Z1K3/88Yfx4osvGt7e3oaTk5MRGBhovP/++3Y7rhqGYVy8eNEYPny4UalSJcPZ2dnw9vY2mjZtamzYsOGOPs+sfo++++47o1atWkbhwoWNUqVKGYMGDTK+//57AzDWrVt327Fd/515M8B444030n2ON/5dMAzDiImJMcLCwgwvLy/DycnJKFWqlBEWFmb3e+z6d/HkyZN2dW/V5o4dO4xGjRoZrq6uBmD3/wW7d+82WrZsaVgsFsPZ2dmoVauW7fedSEFiMowsvCFWREREJAusViv//PNPutne+2HGjBl07dqV2NjY285CiojkBdqtUUREREREJBdQciYiIiIiIpILaFmjiIiIiIhILqCZMxERERERkVxAyZmIiIiIiEguoORMREREREQkF9BLqO+TtLQ0/vrrL9zd3TGZTDkdjoiIiIiI5BDDMDh79iwlS5bEwSHj+TElZ/fJX3/9hb+/f06HISIiIiIiuURCQgKlS5fO8L6Ss/vE3d0duPYH4OHhkcPRiIiIiIhITklOTsbf39+WI2REydl9cn0po4eHh5IzERERERG57eNO2hBEREREREQkF1ByJiIiIiIikgsoORMREREREckFlJyJiIiIiIjkAkrOREREREREcgElZyIiIiIiIrmAkjMREREREZFcQMmZiIiIiIhILqDkTEREREREJBdQciYiIiIiIpILKDkTERERERHJBZSciYiIiIiI5AJKzkRERERERHIBJWciIiIiIiK5gJIzERERERGRXEDJmYiIiIiISC6g5ExERERERCQXUHImIiIiIiKSCxTK6QDyu+ojVuJgds3pMERERERECoz4cWE5HcJdyXUzZ1arlYiIiJwOQ0RERERE5IHKdcnZ7RiGwdWrV3M6DBERERERkWyVq5Kz8PBwYmJimDJlCiaTCZPJxIwZMzCZTKxcuZJ69ephNptZv3494eHhtGnTxq5+REQEVqvVdm61WunduzcREREULVqUEiVK8Omnn3L+/Hm6du2Ku7s7FSpU4Pvvv7fViY6OxmQysXz5cmrVqkXhwoVp0KABu3fvfkCfgoiIiIiIFES5KjmbMmUKQUFB9OjRg+PHj3P8+HH8/f0BGDx4MFFRUezfv5+aNWtmuc2ZM2dSrFgxfv31V3r37s1rr73GCy+8QMOGDdm2bRuhoaG89NJLXLhwwa7eoEGDGD9+PLGxsfj4+NCqVSuuXLmSYT8pKSkkJyfbHSIiIiIiIlmVq5Izi8WCs7Mzrq6u+Pr64uvri6OjIwCjR4/miSeeoEKFCnh7e2e5zVq1ajF06FAqVapEZGQkLi4uFCtWjB49elCpUiWGDx/OqVOn2LVrl129ESNG8MQTT1CjRg1mzpzJ33//zeLFizPsJyoqCovFYjuuJ5UiIiIiIiJZkauSs8zUq1fvrurdOMvm6OiIt7c3NWrUsF0rUaIEACdOnLCrFxQUZPvZy8uLwMBA9u/fn2E/kZGRJCUl2Y6EhIS7ildERERERAqmPLOVfpEiRezOHRwcMAzD7tqtlh06OTnZnZtMJrtrJpMJgLS0tNvGcL3srZjNZsxm823bEBERERERuZVcN3Pm7OxMamrqbcsVL16c48eP213bsWNHtsWxadMm289nzpzh0KFDVKlSJdvaFxERERERuVGuS84CAgLYvHkz8fHx/PPPPxnOaDVt2pQtW7Ywa9YsDh8+zIgRI9izZ0+2xTF69GjWrFnDnj17CA8Pp1ixYul2hxQREREREckuuS45GzhwII6OjlSrVo3ixYtz9OjRW5YLDQ1l2LBhDB48mEceeYSzZ8/SuXPnbItj3Lhx9O3bl7p163L8+HGWLl2Ks7NztrUvIiIiIiJyI5Nx84NbBVx0dDRNmjThzJkzeHp63nU7ycnJWCwWkpKS8PDwyL4ARUREREQkT8lqbpDrZs5EREREREQKIiVnIiIiIiIiuUCe2Ur/QbFarem26L8X1UesxMHsmm3tiYiIiEjuFj8uLKdDkDyqwMycWa1WIiIicjoMERERERGRWyowyZmIiIiIiEhupuRMREREREQkF8iXydn58+fp3Lkzbm5u+Pn5MWHCBLv7s2fPpl69eri7u+Pr68uLL77IiRMnADAMg4oVKzJ+/Hi7Onv27MHBwYG4uLhb9pmSkkJycrLdISIiIiIiklX5MjkbNGgQ69atY/HixaxatYro6Gi2bt1qu3/58mXGjBnDzp07WbJkCUeOHCE8PBwAk8lEt27dmD59ul2bX375JY0bN6ZChQq37DMqKgqLxWI7/P3979v4REREREQk/8l3L6E+d+4c3t7ezJo1i3bt2gFw+vRpSpcuTc+ePZk8eXK6OrGxsdSvX5+zZ8/i5ubG8ePH8ff3Z8OGDdSvX58rV65QqlQp3n//fbp06XLLflNSUkhJSbGdJycn4+/vj3/EAu3WKCIiIlKAaLdGuVmBfQl1XFwcly9fJigoyHbNy8uLwMBA2/n27dtp3bo1ZcuWxd3dHavVCsDRo0cB8PPzIywsjC+//BKAZcuWcenSJV544YUM+zWbzXh4eNgdIiIiIiIiWZXvkrPbTQSeP3+eJ598Ejc3N2bPnk1sbCyLFy8Gri13vO7ll19m/vz5XLx4kenTp9OuXTtcXTUDJiIiIiIi90e+S84qVqyIk5MTmzZtsl07c+YMhw4dAuDAgQP8888/jBs3jsaNG1OlShXbZiA3at68OUWKFGHatGl8//33dOvW7YGNQURERERECp5COR1AdnNzc6N79+4MGjQIb29vSpQowZAhQ3BwuJaHlilTBmdnZz744ANeffVV9uzZw5gxY9K14+joSHh4OJGRkVSsWNFumaSIiIiIiEh2y3fJGcD777/PuXPnaNWqFe7u7gwYMICkpCQAihcvzowZM3jrrbeYOnUqderUYfz48bRq1SpdO927d+edd965p1mzPaNC9fyZiIiIiIjcVr7brTE7/fLLL1itVv78809KlChxR3WzuiOLiIiIiIjkb1nNDfLlzNm9SklJISEhgWHDhtG2bds7TsxERERERETulJKzW5g3bx7du3endu3afPXVV/fUVvURK/WeMxEREZE7pHeFSUGU73ZrvFPx8fGYTCZ27NhhuxYeHk5qaipbt26lVKlSREdHYzKZ+Pfff3MsThERERERyd8KfHImIiIiIiKSGxTo5OzGl06LiIiIiIjkpFydnH333Xd4enqSlpYGwI4dOzCZTAwaNMhW5pVXXqFDhw4AfP311zz00EOYzWYCAgKYMGGCXXsBAQGMHTuW8PBwLBYLPXr0uGW/K1asoHLlyri4uNCkSRPi4+PvzwBFRERERET+T65OzoKDgzl79izbt28HICYmhmLFihETE2MrEx0dTUhICFu3bqVt27a0b9+e3bt3M3LkSIYNG8aMGTPs2nz//fepXr06W7duZdiwYen6TEhI4Nlnn6V58+bs2LGDl19+mTfffPO2saakpJCcnGx3iIiIiIiIZFWuTs4sFgu1a9cmOjoauJaI9evXj507d3L27FkSExM5dOgQVquViRMn0qxZM4YNG0blypUJDw+nV69evP/++3ZtNm3alIEDB1KxYkUqVqyYrs9p06ZRvnx5Jk2aRGBgIB07diQ8PPy2sUZFRWGxWGyHv79/dnwEIiIiIiJSQOTq5AzAarUSHR2NYRisX7+e1q1bU716dX7++WfWrVtHiRIlqFKlCvv376dRo0Z2dRs1asThw4dJTU21XatXr16m/e3fv59HH30Uk8lkuxYUFHTbOCMjI0lKSrIdCQkJdzhSEREREREpyHL9e86sVitffPEFO3fuxMHBgWrVqhESEkJMTAxnzpwhJCQEAMMw7BKq69duVqRIkUz7u1WdrDCbzZjN5ruqKyIiIiIikutnzq4/dzZ58mRCQkIwmUyEhIQQHR1te94MoFq1avz88892dTds2EDlypVxdHTMcn/VqlVj06ZNdtduPhcREREREcluuT45u/7c2ezZs7FarcC1hG3btm22580ABgwYwJo1axgzZgyHDh1i5syZfPjhhwwcOPCO+nv11VeJi4ujf//+HDx4kLlz56bbVERERERERCS75fpljQBNmjRh27ZttkSsaNGiVKtWjb/++ouqVasCUKdOHRYsWMDw4cMZM2YMfn5+jB49OkubedyoTJkyfP311/Tr14+PPvqI+vXr884779CtW7e7in3PqFA8PDzuqq6IiIiIiBQcJuNuH7KSTCUnJ2OxWEhKSlJyJiIiIiJSgGU1N8j1yxpFREREREQKgjyxrDEvqz5iJQ5m15wOQ0RERPKQ+HFhOR2CiOSAPD9zZrVaiYiIyOkwRERERERE7kmeT87up+joaEwmE//++29OhyIiIiIiIvmckjMREREREZFcIF8kZ1evXqVXr154enri7e3N0KFDub4J5eXLlxk8eDClSpWiSJEiNGjQgOjoaFvdP/74g5YtW1K0aFGKFCnCQw89xIoVK4iPj6dJkybAta37TSbTHW/LLyIiIiIiklX5YkOQmTNn0r17dzZv3syWLVvo2bMnZcuWpUePHnTt2pX4+Hjmz59PyZIlWbx4MU899RS7d++mUqVKvPHGG1y+fJmffvqJIkWKsG/fPtzc3PD39+frr7/mueee4+DBg3h4eODi4pJhDCkpKaSkpNjOk5OTH8TQRUREREQkn8gXyZm/vz+TJk3CZDIRGBjI7t27mTRpEk2bNmXevHn8+eeflCxZEoCBAwfyww8/MH36dN555x2OHj3Kc889R40aNQAoX768rV0vLy8AfHx88PT0zDSGqKgoRo0adX8GKCIiIiIi+V6+WNb46KOPYjKZbOdBQUEcPnyYLVu2YBgGlStXxs3NzXbExMQQFxcHQJ8+fRg7diyNGjVixIgR7Nq1665iiIyMJCkpyXYkJCRky9hERERERKRgyBczZ5lxdHRk69atODo62l13c3MD4OWXXyY0NJTly5ezatUqoqKimDBhAr17976jfsxmM2azOdviFhERERGRgiVfzJxt2rQp3XmlSpV4+OGHSU1N5cSJE1SsWNHu8PX1tZX39/fn1Vdf5ZtvvmHAgAF89tlnADg7OwOQmpr64AYjIiIiIiIFUr5IzhISEujfvz8HDx5k3rx5fPDBB/Tt25fKlSvTsWNHOnfuzDfffMORI0eIjY3l3XffZcWKFQBERESwcuVKjhw5wrZt21i7di1Vq1YFoGzZsphMJpYtW8bJkyc5d+5cTg5TRERERETysXyxrLFz585cvHiR+vXr4+joSO/evenZsycA06dPZ+zYsQwYMIBjx47h7e1NUFAQzZs3B67Nir3xxhv8+eefeHh48NRTTzFp0iQASpUqxahRo3jzzTfp2rUrnTt3ZsaMGXcU255RoXh4eGTreEVEREREJP8xGddfCCbZKjk5GYvFQlJSkpIzEREREZECLKu5Qb5Y1igiIiIiIpLX5YtljblZ9RErcTC75nQYIiIikoPix4XldAgikgfk6pmzgIAAJk+enNNhiIiIiIiI3He5OjnLDuHh4bRp0yanwxAREREREclUvk/ORERERERE8oIcTc6sViu9evWiV69eeHp64u3tzdChQ7lxA8kLFy7QrVs33N3dKVOmDJ9++qldG7t376Zp06a4uLjg7e1Nz549be8jGzlyJDNnzuTbb7/FZDJhMpmIjo6+bT2A6Oho6tevT5EiRfD09KRRo0b88ccf9/9DERERERGRAinHZ85mzpxJoUKF2Lx5M1OnTmXSpEl8/vnntvsTJkygXr16bN++nddff53XXnuNAwcOANcSt6eeeoqiRYsSGxvLwoUL+fHHH+nVqxcAAwcOpG3btjz11FMcP36c48eP07Bhw9vWu3r1Km3atCEkJIRdu3axceNGevbsiclkynAcKSkpJCcn2x0iIiIiIiJZleO7Nfr7+zNp0iRMJhOBgYHs3r2bSZMm0aNHDwCaN2/O66+/DsB//vMfJk2aRHR0NFWqVGHOnDlcvHiRWbNmUaRIEQA+/PBDWrZsybvvvkuJEiVwcXEhJSUFX19fW58zZ87MtJ6TkxNJSUm0aNGCChUqAFC1atVMxxEVFcWoUaOy/fMREREREZGCIcdnzh599FG7GamgoCAOHz5MamoqADVr1rTdM5lM+Pr6cuLECQD2799PrVq1bAkWQKNGjUhLS+PgwYMZ9nm7el5eXoSHhxMaGkrLli2ZMmUKx48fz3QckZGRJCUl2Y6EhIQ7+yBERERERKRAy/Hk7HacnJzszk0mE2lpaQAYhpHhUsPMliBmpd706dPZuHEjDRs25H//+x+VK1dm06ZNGbZpNpvx8PCwO0RERERERLIqx5OzmxOeTZs2UalSJRwdHW9bt1q1auzYsYPz58/brv3yyy84ODhQuXJlAJydnW2zcHdSD+Dhhx8mMjKSDRs2UL16debOnXtXYxQREREREbmdHE/OEhIS6N+/PwcPHmTevHl88MEH9O3bN0t1O3bsSOHChenSpQt79uxh3bp19O7dm5deeokSJUoA115kvWvXLg4ePMg///zDlStXblvvyJEjREZGsnHjRv744w9WrVrFoUOHbvvcmYiIiIiIyN3K8Q1BOnfuzMWLF6lfvz6Ojo707t2bnj17Zqmuq6srK1eupG/fvjzyyCO4urry3HPPMXHiRFuZHj16EB0dTb169Th37hzr1q3DarVmWs/V1ZUDBw4wc+ZMTp06hZ+fH7169eKVV1654/HtGRWqJY4iIiIiInJbJuPGl4o9YFarldq1azN58uScCuG+SU5OxmKxkJSUpORMRERERKQAy2pukOPLGkVERERERCQXLGvM76qPWImD2TWnwxAREcm34seF5XQIIiLZIkdnzqKjox/Ikkar1UpERARwbYOQG/tMTEzkiSeeoEiRInh6et73WERERERERG6lwM2cxcbG2r18etKkSRw/fpwdO3ZgsVhyMDIRERERESnIClxy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YcOIjY1NVy40NBSLxcLYsWMz3QhEREREREQkOxS45OzVV1/l2WefpV27djRo0IBTp07ZzaJd5+DgQHh4OKmpqXTu3DkHIhURERERkYIkz+/WeD/16NGDv//+m6VLl95x3azuyCIiIiIiIvlbVnODAvfMWVYkJSURGxvLnDlz+Pbbb3M6HBERERERKQCUnN1C69at+fXXX3nllVd44okncjocEREREREpAPJEcma1WqlduzaTJ09+IP3dbtv8O1F9xEq9hFpERHKUXjAtIpI3FLgNQURERERERHIjJWciIiIiIiK5QJ5Mzn744QcsFguzZs0iPDycNm3aMH78ePz8/PD29uaNN97gypUrtvJnzpyhc+fOFC1aFFdXV55++mkOHz4MgGEYFC9enK+//tpWvnbt2vj4+NjON27ciJOTE+fOnXtwgxQRERERkQIlzyVn8+fPp23btsyaNcv2/rF169YRFxfHunXrmDlzJjNmzGDGjBm2OuHh4WzZsoWlS5eyceNGDMOgefPmXLlyBZPJRHBwsO05szNnzrBv3z6uXLnCvn37gGvPoNWtWxc3N7cM40pJSSE5OdnuEBERERERyao8lZx99NFHvPrqq3z77be0bt3adr1o0aJ8+OGHVKlShRYtWhAWFsaaNWsAOHz4MEuXLuXzzz+ncePG1KpVizlz5nDs2DGWLFkCXNtw5Hpy9tNPP1GrVi2aNm1quxYdHY3Vas00tqioKCwWi+3w9/fP7uGLiIiIiEg+lmeSs6+//pqIiAhWrVpFkyZN7O499NBDODo62s79/Pw4ceIEAPv376dQoUI0aNDAdt/b25vAwED2798PXEvO9u7dyz///ENMTAxWqxWr1UpMTAxXr15lw4YNhISEZBpfZGQkSUlJtiMhISG7hi4iIiIiIgVAnknOateuTfHixZk+fTqGYdjdc3Jysjs3mUykpaUBpCt7nWEYmEwmAKpXr463tzcxMTG25CwkJISYmBhiY2O5ePEijz32WKbxmc1mPDw87A4REREREZGsyjPJWYUKFVi3bh3ffvstvXv3znK9atWqcfXqVTZv3my7durUKQ4dOkTVqlUBbM+dffvtt+zZs4fGjRtTo0YNrly5wscff0ydOnVwd3fP9jGJiIiIiIhcl2eSM4DKlSuzbt062xLHrKhUqRKtW7emR48e/Pzzz+zcuZNOnTpRqlQpu+fWrFYrc+fOpWbNmnh4eNgStjlz5tz2eTMREREREZF7laeSM4DAwEDWrl3LvHnzGDBgQJbqTJ8+nbp169KiRQuCgoIwDIMVK1bYLYds0qQJqampdolYSEgIqampt33eTERERERE5F6ZjIweypJ7kpycjMViISkpSc+fiYiIiIgUYFnNDfLczJmIiIiIiEh+pORMREREREQkFyiU0wHkd9VHrMTB7JrTYYiISB4UPy4sp0MQEZEHSDNnIiIiIiIiuYCSMxERERERkVwgXyRn3333HZ6enqSlpQGwY8cOTCYTgwYNspV55ZVX6NChA6dOnaJDhw6ULl0aV1dXatSowbx582zlZs2ahbe3NykpKXZ9PPfcc3Tu3PnBDEhERERERAqcfJGcBQcHc/bsWbZv3w5ATEwMxYoVIyYmxlYmOjqakJAQLl26RN26dVm2bBl79uyhZ8+evPTSS2zevBmAF154gdTUVJYuXWqr+88//7Bs2TK6du2aYQwpKSkkJyfbHSIiIiIiIlmVL5Izi8VC7dq1iY6OBq4lYv369WPnzp2cPXuWxMREDh06hNVqpVSpUgwcOJDatWtTvnx5evfuTWhoKAsXLgTAxcWFF198kenTp9vanzNnDqVLl7Z7QfXNoqKisFgstsPf3/9+DllERERERPKZfJGcAVitVqKjozEMg/Xr19O6dWuqV6/Ozz//zLp16yhRogRVqlQhNTWVt99+m5o1a+Lt7Y2bmxurVq3i6NGjtrZ69OjBqlWrOHbsGADTp08nPDwck8mUYf+RkZEkJSXZjoSEhPs+ZhERERERyT/yzVb6VquVL774gp07d+Lg4EC1atUICQkhJiaGM2fOEBISAsCECROYNGkSkydPpkaNGhQpUoSIiAguX75sa+vhhx+mVq1azJo1i9DQUHbv3s13332Xaf9msxmz2XxfxygiIiIiIvlXvknOrj93NnnyZEJCQjCZTISEhBAVFcWZM2fo27cvgG1WrVOnTgCkpaVx+PBhqlatatfeyy+/zKRJkzh27BiPP/64limKiIiIiMh9lW+WNV5/7mz27Nm2Z8OCg4PZtm2b7XkzgIoVK7J69Wo2bNjA/v37eeWVV0hMTEzXXseOHTl27BifffYZ3bp1e4AjERERERGRgijfJGcATZo0ITU11ZaIFS1alGrVqlG8eHHbzNiwYcOoU6cOoaGhWK1WfH19adOmTbq2PDw8eO6553Bzc7vlfRERERERkexkMgzDyOkgcqsnnniCqlWrMnXq1Duum5ycjMViISkpCQ8Pj/sQnYiIiIiI5AVZzQ3yzTNn2en06dOsWrWKtWvX8uGHH+Z0OCIiIiIiUgAoObuFOnXqcObMGd59910CAwNzOhwRERERESkAlJzdQnx8fLa1VX3EShzMrtnWnoiI5C7x48JyOgQREckn8tWGIFkVHh6uTT5ERERERCRXyfPJmdVqJSIiIqfDEBERERERuSd5PjkTERERERHJD/J0chYeHk5MTAxTpkzBZDJhMpmIi4uje/fulCtXDhcXFwIDA5kyZUqm7WzduhUfHx/efvttAJKSkujZsyc+Pj54eHjQtGlTdu7cmWkbKSkpJCcn2x0iIiIiIiJZlac3BJkyZQqHDh2ievXqjB49Grj24unSpUuzYMECihUrxoYNG+jZsyd+fn60bds2XRvR0dG0adOGqKgoXnvtNQzDICwsDC8vL1asWIHFYuGTTz6hWbNmHDp0CC8vr1vGEhUVxahRo+7reEVEREREJP/K08mZxWLB2dkZV1dXfH19bddvTJLKlSvHhg0bWLBgQbrk7Ntvv+Wll17ik08+oUOHDgCsW7eO3bt3c+LECcxmMwDjx49nyZIlLFq0iJ49e94ylsjISPr37287T05Oxt/fP9vGKiIiIiIi+VueTs4y8vHHH/P555/zxx9/cPHiRS5fvkzt2rXtymzevJlly5axcOFCnnnmGdv1rVu3cu7cOby9ve3KX7x4kbi4uAz7NJvNtmRORERERETkTuW75GzBggX069ePCRMmEBQUhLu7O++//z6bN2+2K1ehQgW8vb358ssvCQsLw9nZGYC0tDT8/PyIjo5O17anp+cDGIGIiIiIiBREeT45c3Z2JjU11Xa+fv16GjZsyOuvv267dqsZr2LFivHNN99gtVpp164dCxYswMnJiTp16pCYmEihQoUICAh4EEMQERERERHJ27s1AgQEBLB582bi4+P5559/qFixIlu2bGHlypUcOnSIYcOGERsbe8u6Pj4+rF27lgMHDtChQweuXr3K448/TlBQEG3atGHlypXEx8ezYcMGhg4dypYtWx7w6EREREREpKDI8zNnAwcOpEuXLlSrVo2LFy9y4MABduzYQbt27TCZTHTo0IHXX3+d77///pb1fX19Wbt2LVarlY4dOzJ37lxWrFjBkCFD6NatGydPnsTX15fg4GBKlChxx/HtGRWKh4fHvQ5TRERERETyOZNhGEZOB5EfJScnY7FYSEpKUnImIiIiIlKAZTU3yPPLGkVERERERPKDPL+sMberPmIlDmbXnA5DRESyUfy4sJwOQURE8iHNnGVRQEAAkydPzukwREREREQkn1JyJiIiIiIikgsoORMREREREckF8lxydvbsWTp27EiRIkXw8/Nj0qRJWK1WIiIiADhz5gydO3emaNGiuLq68vTTT3P48GG7Nr7++mseeughzGYzAQEBTJgwwe7+iRMnaNmyJS4uLpQrV445c+bcNq6UlBSSk5PtDhERERERkazKc8lZ//79+eWXX1i6dCmrV69m/fr1bNu2zXY/PDycLVu2sHTpUjZu3IhhGDRv3pwrV64AsHXrVtq2bUv79u3ZvXs3I0eOZNiwYcyYMcOujfj4eNauXcuiRYv46KOPOHHiRKZxRUVFYbFYbIe/v/99Gb+IiIiIiORPeeo9Z2fPnsXb25u5c+fy/PPPA5CUlETJkiXp0aMHb7zxBpUrV+aXX36hYcOGAJw6dQp/f39mzpzJCy+8QMeOHTl58iSrVq2ytTt48GCWL1/O3r17OXToEIGBgWzatIkGDRoAcODAAapWrcqkSZNsM3Q3S0lJISUlxXaenJyMv78//hELtFujiEg+o90aRUTkTuTL95z9/vvvXLlyhfr169uuWSwWAgMDAdi/fz+FChWyJVUA3t7eBAYGsn//fluZRo0a2bXbqFEjDh8+TGpqqq2NevXq2e5XqVIFT0/PTGMzm814eHjYHSIiIiIiIlmVp5Kz65N8JpPpltczmgQ0DMNW58afb66fWR8iIiIiIiL3U55KzipUqICTkxO//vqr7VpycrJtw49q1apx9epVNm/ebLt/6tQpDh06RNWqVW1lfv75Z7t2N2zYQOXKlXF0dKRq1apcvXqVLVu22O4fPHiQf//99z6OTERERERECrpCOR3AnXB3d6dLly4MGjQILy8vfHx8GDFiBA4ODphMJipVqkTr1q3p0aMHn3zyCe7u7rz55puUKlWK1q1bAzBgwAAeeeQRxowZQ7t27di4cSMffvghH330EQCBgYE89dRT9OjRg08//ZRChQoRERGBi4tLTg5dRERERETyuTyVnAFMnDiRV199lRYtWuDh4cHgwYNJSEigcOHCAEyfPp2+ffvSokULLl++THBwMCtWrMDJyQmAOnXqsGDBAoYPH86YMWPw8/Nj9OjRhIeH2/qYPn06L7/8MiEhIZQoUYKxY8cybNiwu4p3z6hQPX8mIiIiIiK3lad2a7yV8+fPU6pUKSZMmED37t1zOhybrO7IIiIiIiIi+VtWc4M8N3O2fft2Dhw4QP369UlKSmL06NEAtmWLIiIiIiIieVGeS84Axo8fz8GDB3F2dqZu3bqsX7+eYsWK5XRYt1R9xEq950xEJA/RO8xERCSn5Lnk7OGHH2br1q33tY8ZM2YQERGhHRpFREREROSByVNb6YuIiIiIiORXSs5ERERERERygTyRnH333Xd4enqSlpYGwI4dOzCZTAwaNMhW5pVXXqFDhw7AtZdKBwcH4+Ligr+/P3369OH8+fO2spcvX2bw4MGUKlWKIkWK0KBBA6KjozPs/9SpU9SvX59WrVpx6dKl+zNIEREREREp0O4qOUtNTWX8+PHUr18fX19fvLy87I7sFhwczNmzZ9m+fTsAMTExFCtWjJiYGFuZ6OhoQkJC2L17N6GhoTz77LPs2rWL//3vf/z888/06tXLVrZr16788ssvzJ8/n127dvHCCy/w1FNPcfjw4XR9//nnnzRu3JgqVarwzTff2N6ndrOUlBSSk5PtDhERERERkay6q+Rs1KhRTJw4kbZt25KUlET//v159tlncXBwYOTIkdkcIlgsFmrXrm2b3YqOjqZfv37s3LmTs2fPkpiYyKFDh7Barbz//vu8+OKLREREUKlSJRo2bMjUqVOZNWsWly5dIi4ujnnz5rFw4UIaN25MhQoVGDhwII899hjTp0+36/fQoUM0atSIxx9/nJkzZ1KoUMb7p0RFRWGxWGyHv79/tn8OIiIiIiKSf91VcjZnzhw+++wzBg4cSKFChejQoQOff/45w4cPZ9OmTdkdIwBWq5Xo6GgMw2D9+vW0bt2a6tWr8/PPP7Nu3TpKlChBlSpV2Lp1KzNmzMDNzc12hIaGkpaWxpEjR9i2bRuGYVC5cmW7MjExMcTFxdn6u3jxIo899hht2rRh6tSpmEymTOOLjIwkKSnJdiQkJNyXz0FERERERPKnu9pKPzExkRo1agDg5uZGUlISAC1atGDYsGHZF90NrFYrX3zxBTt37sTBwYFq1aoREhJCTEwMZ86cISQkBIC0tDReeeUV+vTpk66NMmXKsGvXLhwdHdm6dSuOjo52993c3Gw/m81mHn/8cZYvX86gQYMoXbp0pvGZzWbMZnM2jFRERERERAqiu0rOSpcuzfHjxylTpgwVK1Zk1apV1KlTh9jY2PuWoFx/7mzy5MmEhIRgMpkICQkhKiqKM2fO0LdvXwDq1KnD3r17qVix4i3befjhh0lNTeXEiRM0btw4w/4cHBz46quvePHFF2natCnR0dGULFnyvoxNRERERETkrpY1PvPMM6xZswaAvn37MmzYMCpVqkTnzp3p1q1btgZ43fXnzmbPno3VagWuJWzbtm2zPW8G8J///IeNGzfyxhtvsGPHDg4fPszSpUvp3bs3AJUrV6Zjx4507tyZb775hiNHjhAbG8u7777LihUr7Pp0dHRkzpw51KpVi6ZNm5KYmHhfxiYiIiIiInJXM2fjxo2z/fz888/j7+/PL7/8QsWKFWnVqlW2BXezJk2asG3bNlsiVrRoUapVq8Zff/1F1apVAahZsyYxMTEMGTKExo0bYxgGFSpUoF27drZ2pk+fztixYxkwYADHjh3D29uboKAgmjdvnq7PQoUKMW/ePNq1a2ebQfPx8clyzHtGheLh4XFvAxcRERERkXzPZBiGcScVrly5Qs+ePRk2bBjly5e/X3HlecnJyVgsFpKSkpSciYiIiIgUYFnNDe54WaOTkxOLFy++p+BERERERETE3l0ta3zmmWdYsmQJ/fv3z+548p3qI1biYHbN6TBERASIHxeW0yGIiIhk6K6Ss4oVKzJmzBg2bNhA3bp1KVKkiN39W21jLyIiIiIiIhm742fOAMqVK5dxgyYTv//++z0FlZuYTCYWL15MmzZt7qje9XWl/hELNHMmIpJLaOZMRERyQlafOburmbMjR47cdWAiIiIiIiKS3l295+xGhmFwF5Nvd+W7777D09OTtLQ0AHbs2IHJZGLQoEG2Mq+88godOnTg1KlTdOjQgdKlS+Pq6kqNGjWYN2+eXXtWq5U+ffowePBgvLy88PX1ZeTIkbb7AQEBwLVn7Ewmk+1cREREREQku911cvbFF19QvXp1ChcuTOHChalevTqff/55dsaWTnBwMGfPnmX79u0AxMTEUKxYMWJiYmxloqOjCQkJ4dKlS9StW5dly5axZ88eevbsyUsvvcTmzZvt2pw5cyZFihRh8+bNvPfee4wePZrVq1cDEBsbC1x7L9rx48dt57eSkpJCcnKy3SEiIiIiIpJVd5WcDRs2jL59+9KyZUsWLlzIwoULadmyJf369WPo0KHZHaONxWKhdu3aREdHA9cSsX79+rFz507Onj1LYmIihw4dwmq1UqpUKQYOHEjt2rUpX748vXv3JjQ0lIULF9q1WbNmTUaMGEGlSpXo3Lkz9erVY82aNQAUL14cAE9PT3x9fW3ntxIVFYXFYrEd/v7+9+dDEBERERGRfOmukrNp06bx2WefERUVRatWrWjVqhVRUVF8+umnfPzxx9kdox2r1Up0dDSGYbB+/Xpat25N9erV+fnnn1m3bh0lSpSgSpUqpKam8vbbb1OzZk28vb1xc3Nj1apVHD161K69mjVr2p37+flx4sSJO44rMjKSpKQk25GQkHBP4xQRERERkYLlrjYESU1NpV69eumu161bl6tXr95zUJmxWq188cUX7Ny5EwcHB6pVq0ZISAgxMTGcOXOGkJAQACZMmMCkSZOYPHkyNWrUoEiRIkRERHD58mW79pycnOzOTSaT7Zm2O2E2mzGbzXc/MBERERERKdDuauasU6dOTJs2Ld31Tz/9lI4dO95zUJm5/tzZ5MmTCQkJwWQyERISQnR0tO15M8A2q9apUydq1apF+fLlOXz48B335+TkRGpqanYPQ0RERERExE6WZ8769+9v+9lkMvH555+zatUqHn30UQA2bdpEQkICnTt3zv4ob3D9ubPZs2czZcoU4FrC9sILL3DlyhWsVitw7UXZX3/9NRs2bKBo0aJMnDiRxMREqlatekf9BQQEsGbNGho1aoTZbKZo0aLZPSQREREREZGsJ2fXd0i8rm7dugDExcUB1zbPKF68OHv37s3G8G6tSZMmbNu2zZaIFS1alGrVqvHXX3/Zkq9hw4Zx5MgRQkNDcXV1pWfPnrRp04akpKQ76mvChAn079+fzz77jFKlShEfH39H9feMCs30RXMiIiIiIiIAJuNBvaSsgMnqW8BFRERERCR/y2pucM8voRYREREREZF7d1e7NcK1FzQvXLiQo0ePptsB8ZtvvrnnwPKL6iNW4mB2zekwRETyvfhxYTkdgoiIyD25q5mz+fPn06hRI/bt28fixYu5cuUK+/btY+3atVgsluyOUUREREREJN+7q+TsnXfeYdKkSSxbtgxnZ2emTJnC/v37adu2LWXKlMnuGEVERERERPK9u0rO4uLiCAu7tnzEbDZz/vx5TCYT/fr149NPP83WAEVERERERAqCu0rOvLy8OHv2LAClSpViz549APz7779cuHAh24KzWq307t2biIgIihYtSokSJfj00085f/48Xbt2xd3dnQoVKvD9998DkJqaSvfu3SlXrhwuLi4EBgba3oV2XXh4OG3atGH8+PH4+fnh7e3NG2+8wZUrVwAYPXo0NWrUSBdL3bp1GT58eLaNTURERERE5EZ3lZw1btyY1atXA9C2bVv69u1Ljx496NChA82aNcvWAGfOnEmxYsX49ddf6d27N6+99hovvPACDRs2ZNu2bYSGhvLSSy9x4cIF0tLSKF26NAsWLGDfvn0MHz6ct956iwULFti1uW7dOuLi4li3bh0zZ85kxowZzJgxA4Bu3bqxb98+YmNjbeV37drF9u3bCQ8PzzDOlJQUkpOT7Q4REREREZGsuqv3nJ0+fZpLly5RsmRJ0tLSGD9+PD///DMVK1Zk2LBhFC1aNFuCs1qtpKamsn79euDazJjFYuHZZ59l1qxZACQmJuLn58fGjRt59NFH07Xxxhtv8Pfff7No0SLg2sxZdHQ0cXFxODo6AtcSTAcHB+bPnw9A8+bNCQgI4KOPPgKgX79+7Nixg3Xr1mUY68iRIxk1alS66/4RC7Rbo4jIA6DdGkVEJLe6r+858/LyomTJktcacHBg8ODBLF26lIkTJ2ZbYnZdzZo1bT87Ojri7e1tt+ywRIkSAJw4cQKAjz/+mHr16lG8eHHc3Nz47LPPOHr0qF2bDz30kC0xA/Dz87PVB+jRowfz5s3j0qVLXLlyhTlz5tCtW7dM44yMjCQpKcl2JCQk3P2gRURERESkwMnye87uZJleZtngnXJycrI7N5lMdtdMJhMAaWlpLFiwgH79+jFhwgSCgoJwd3fn/fffZ/PmzbdtMy0tzXbesmVLzGYzixcvxmw2k5KSwnPPPZdpnGazGbPZfFdjFBERERERyXJy5unpaUuEMmIYBiaTidTU1HsO7G6sX7+ehg0b8vrrr9uuxcXF3XE7hQoVokuXLkyfPh2z2Uz79u1xddXSRBERERERuX+ynJxl9rxVblGxYkVmzZrFypUrKVeuHF999RWxsbGUK1fujtt6+eWXqVq1KgC//PJLdocqIiIiIiJiJ8vJWUhIyP2MI1u8+uqr7Nixg3bt2mEymejQoQOvv/66bav9O1GpUiUaNmzIqVOnaNCgwV3HtGdUaLYu8xQRERERkfzprnZrvO7ChQscPXqUy5cv212/cROPvMowDKpUqcIrr7xC//7977h+VndkERERERGR/C2ruUGWZ85udPLkSbp27ZrhjFROPXOWXU6cOMFXX33FsWPH6Nq1a06HIyIiIiIiBcBdJWcRERGcOXOGTZs20aRJExYvXszff//N2LFjmTBhQnbH+MCVKFGCYsWK8emnn97zqwGqj1ip95yJiNwBva9MREQKqrt6z9natWuZNGkSjzzyCA4ODpQtW5ZOnTrx3nvvERUVld0xZig6OhqTycS///6bYZmRI0dSu3btO2q3bNmyDBkyhBdffPHeAhQREREREcmiu0rOzp8/j4+PD3DthdQnT54EoEaNGmzbti37oruJ1WolIiLijuoMHDiQNWvW3J+AREREREREssldJWeBgYEcPHgQgNq1a/PJJ59w7NgxPv74Y/z8/LI1wHvl5uaGt7d3TochIiIiIiKSqbtKziIiIjh+/DgAI0aM4IcffqBMmTJMnTqVd955J1sDvC48PJyYmBimTJmCyWTCZDIRHx8PwNatW6lXrx6urq40bNjQljhC+mWN4eHhtGnThvHjx+Pn54e3tzdvvPEGV65cybDv6dOnY7FYWL169X0Zm4iIiIiIyB1tCHLhwgUGDRrEkiVLuHLlCqtWrWLq1KnEx8dz4MABypQpQ7Fixe5LoFOmTOHQoUNUr16d0aNHA7B3714AhgwZwoQJEyhevDivvvoq3bp1y/TF0evWrcPPz49169bx22+/0a5dO2rXrk2PHj3SlR0/fjxRUVGsXLmSRx99NMM2U1JSSElJsZ0nJyff7VBFRERERKQAuqOZsxEjRjBjxgzCwsLo0KEDq1ev5rXXXsPV1ZU6derct8QMwGKx4OzsjKurK76+vvj6+uLo6AjA22+/TUhICNWqVePNN99kw4YNXLp0KcO2ihYtyocffkiVKlVo0aIFYWFht3wuLTIykokTJxIdHZ1pYgYQFRWFxWKxHf7+/vc2YBERERERKVDuaObsm2++4YsvvqB9+/YAdOzYkUaNGpGammpLlHLCjS+9vv7M24kTJyhTpswtyz/0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YbFYbIe/v382fSoiIiIiIlIQ5Lrk7EZ+fn6cOHGCrVu3cu7cOby9vXFzc7MdR44cIS4uDoDz588zePBgqlWrhqenJ25ubhw4cCDDmbPMBAQE4O7uni6OzERGRpKUlGQ7EhIS7rhfEREREREpuHLNVvoATk5Oducmk4m0tDTS0tLw8/MjOjo6XR1PT08ABg0axMqVKxk/fjwVK1bExcWF559/nsuXL2dbHJkxm82YzeY77ktERERERARyWXKWkTp16pCYmEihQoXSbdxx3fr16wkPD+eZZ54Brj2DFh8fn2m7Tk5OpKamZnO0IiIiIiIidy5XLWvMyOOPP05QUBBt2rRh5cqVxMfHs2HDBoYOHcqWLVsAqFixIt988w07duxg586dvPjii7ed7QoICGDNmjUkJiZy5syZBzEUERERERGRW8oTyZnJZGLFihUEBwfTrVs3KleuTPv27YmPj6dEiRIATJo0iaJFi9KwYUNatmxJaGgoderUybTdCRMmsHr1avz9/Xn44YcfxFBERERERERuyWQYhpHTQeRHycnJWCwWkpKS8PDwyOlwREREREQkh2Q1N8gTM2ciIiIiIiL5nZIzERERERGRXCBP7NaYl1UfsRIHs2tOhyEikivEjwvL6RBERERyLc2ciYiIiIiI5AJKzkRERERERHKBPJmcGYbBe++9R/ny5XFxcaFWrVosWrSItLQ0Spcuzccff2xXftu2bZhMJn7//XcAkpKS6NmzJz4+Pnh4eNC0aVN27txpKz9y5Ehq167NV199RUBAABaLhfbt23P27NkHOk4RERERESk48mRyNnToUKZPn860adPYu3cv/fr1o1OnTqxfv5727dszZ84cu/Jz584lKCiI8uXLYxgGYWFhJCYmsmLFCrZu3UqdOnVo1qwZp0+fttWJi4tjyZIlLFu2jGXLlhETE8O4ceMyjCklJYXk5GS7Q0REREREJKvyXHJ2/vx5Jk6cyJdffkloaCjly5cnPDycTp068cknn9CxY0d++eUX/vjjDwDS0tKYP38+nTp1AmDdunXs3r2bhQsXUq9ePSpVqsT48ePx9PRk0aJFtn7S0tKYMWMG1atXp3Hjxrz00kusWbMmw7iioqKwWCy2w9/f//5+ECIiIiIikq/kueRs3759XLp0iSeeeAI3NzfbMWvWLOLi4nj44YepUqUK8+bNAyAmJoYTJ07Qtm1bALZu3cq5c+fw9va2q3/kyBHi4uJs/QQEBODu7m479/Pz48SJExnGFRkZSVJSku1ISEi4T5+AiIiIiIjkR3luK/20tDQAli9fTqlSpezumc1mADp27MjcuXN58803mTt3LqGhoRQrVsxW38/Pj+jo6HRte3p62n52cnKyu2cymWx934rZbLb1LyIiIiIicqfyXHJWrVo1zGYzR48eJSQk5JZlXnzxRYYOHcrWrVtZtGgR06ZNs92rU6cOiYmJFCpUiICAgAcUtYiIiIiISObyXHLm7u7OwIED6devH2lpaTz22GMkJyezYcMG3Nzc6NKlC+XKlaNhw4Z0796dq1ev0rp1a1v9xx9/nKCgINq0acO7775LYGAgf/31FytWrKBNmzbUq1cvB0cnIiIiIiIFVZ5LzgDGjBmDj48PUVFR/P7773h6elKnTh3eeustW5mOHTvyxhtv0LlzZ1xcXGzXTSYTK1asYMiQIXTr1o2TJ0/i6+tLcHAwJUqUyInhiIiIiIiIYDIMw8jpIPKj5ORkLBYLSUlJeHh45HQ4IiIiIiKSQ7KaG+S53RpFRERERETyIyVnIiIiIiIiuUCefObsQTOZTCxevJg2bdrccd3qI1biYHbN/qBERPKg+HFhOR2CiIhIrqWZMxERERERkVxAyZmIiIiIiEgukKeSM6vVSp8+fRg8eDBeXl74+voycuRI2/2kpCR69uyJj48PHh4eNG3alJ07d9q18d1331G3bl0KFy5M+fLlGTVqFFevXrXdP3z4MMHBwRQuXJhq1aqxevXqBzU8EREREREpwPLcM2czZ86kf//+bN68mY0bNxIeHk6jRo14/PHHCQsLw8vLixUrVmCxWPjkk09o1qwZhw4dwsvLi5UrV9KpUyemTp1K48aNiYuLo2fPngCMGDGCtLQ0nn32WYoVK8amTZtITk4mIiIiS3GlpKSQkpJiO09OTr4fwxcRERERkXwqT73nzGq1kpqayvr1623X6tevT9OmTXnyySd55plnOHHiBGaz2Xa/YsWKDB48mJ49exIcHMzTTz9NZGSk7f7s2bMZPHgwf/31F6tWraJ58+bEx8dTunRpAH744Qeefvrp224IMnLkSEaNGpXuun/EAm0IIiLyf7QhiIiIFERZfc9Znps5q1mzpt25n58fJ06cYOvWrZw7dw5vb2+7+xcvXiQuLg6ArVu3Ehsby9tvv227n5qayqVLl7hw4QL79++nTJkytsQMICgoKEtxRUZG0r9/f9t5cnIy/v7+dzw+EREREREpmPJccubk5GR3bjKZSEtLIy0tDT8/P6Kjo9PV8fT0BCAtLY1Ro0bx7LPPpitTuHBhbjWJaDKZshSX2Wy2m7ETERERERG5E3kuOctInTp1SExMpFChQgQEBGRY5uDBg1SsWPGW96tVq8bRo0f566+/KFmyJAAbN268XyGLiIiIiIjY5Jvk7PHHHycoKIg2bdrw7rvvEhgYyF9//cWKFSto06YN9erVY/jw4bRo0QJ/f39eeOEFHBwc2LVrF7t372bs2LE8/vjjBAYG0rlzZyZMmEBycjJDhgzJ6aGJiIiIiEgBkKe20s+MyWRixYoVBAcH061bNypXrkz79u2Jj4+nRIkSAISGhrJs2TJWr17NI488wqOPPsrEiRMpW7YsAA4ODixevJiUlBTq16/Pyy+/bPd8moiIiIiIyP2Sp3ZrzEuyuiOLiIiIiIjkb1nNDfLNzJmIiIiIiEhepuRMREREREQkF8g3G4LkVtVHrNRLqEWkQNOLp0VERLJGM2fAjBkzbO9CExERERERyQlKzkRERERERHIBJWciIiIiIiK5QK5Pzn744Qcee+wxPD098fb2pkWLFsTFxQEQHx+PyWRi/vz5NGzYkMKFC/PQQw8RHR1tqx8dHY3JZGL58uXUqlWLwoUL06BBA3bv3p1pv9999x1169alcOHClC9fnlGjRnH16tUMy6ekpJCcnGx3iIiIiIiIZFWuT87Onz9P//79iY2NZc2aNTg4OPDMM8+QlpZmKzNo0CAGDBjA9u3badiwIa1ateLUqVN27QwaNIjx48cTGxuLj48PrVq14sqVK7fsc+XKlXTq1Ik+ffqwb98+PvnkE2bMmJHpC6mjoqKwWCy2w9/fP3s+ABERERERKRDy3EuoT548iY+PD7t378bNzY1y5coxbtw4/vOf/wBw9epVypUrR+/evRk8eDDR0dE0adKE+fPn065dOwBOnz5N6dKlmTFjBm3btmXGjBlERETw77//AhAcHMzTTz9NZGSkrd/Zs2czePBg/vrrr1vGlZKSQkpKiu08OTkZf39//CMWaLdGESnQtFujiIgUdFl9CXWu30o/Li6OYcOGsWnTJv755x/bjNnRo0epVq0aAEFBQbbyhQoVol69euzfv9+unRvLeHl5ERgYmK7MdVu3biU2NtZupiw1NZVLly5x4cIFXF3TJ1tmsxmz2Xz3AxURERERkQIt1ydnLVu2xN/fn88++4ySJUuSlpZG9erVuXz5cqb1TCbTbdvOqExaWhqjRo3i2WefTXevcOHCWQtcRERERETkDuTq5OzUqVPs37+fTz75hMaNGwPw888/pyu3adMmgoODgWvLGrdu3UqvXr3SlSlTpgwAZ86c4dChQ1SpUuWW/dapU4eDBw9SsWLF7ByOiIiIiIhIhnJ1cla0aFG8vb359NNP8fPz4+jRo7z55pvpyv33v/+lUqVKVK1alUmTJnHmzBm6detmV2b06NF4e3tTokQJhgwZQrFixWjTps0t+x0+fDgtWrTA39+fF154AQcHB3bt2sXu3bsZO3bs/RiqiIiIiIgUcLk6OXNwcGD+/Pn06dOH6tWrExgYyNSpU7FarXblxo0bx7vvvsv27dupUKEC3377LcWKFUtXpm/fvhw+fJhatWqxdOlSnJ2db9lvaGgoy5YtY/To0bz33ns4OTlRpUoVXn755Tsew55RoZk+9CciIiIiIgJ5cLfGG8XHx1OuXDm2b99O7dq1b1nm+m6NZ86cwdPT84HFltUdWUREREREJH/Lam6Q699zJiIiIiIiUhDk6mWN+UH1ESv1njMRyTP0TjIREZGck6eTs4CAAAzDwGq1Urt2bSZPnpyujNVqJQ+v3BQRERERkQJCyxpFRERERERyASVnIiIiIiIiuUC+S87OnDlD586dKVq0KK6urjz99NMcPnwYgKSkJFxcXPjhhx/s6nzzzTcUKVKEc+fOAXDs2DHatWtne89a69atiY+Pf9BDERERERGRAiTfJWfh4eFs2bKFpUuXsnHjRgzDoHnz5ly5cgWLxUJYWBhz5syxqzN37lxat26Nm5sbFy5coEmTJri5ufHTTz/x888/4+bmxlNPPcXly5cz7DclJYXk5GS7Q0REREREJKvyVXJ2+PBhli5dyueff07jxo2pVasWc+bM4dixYyxZsgSAjh07smTJEi5cuABce+fA8uXL6dSpEwDz58/HwcGBzz//nBo1alC1alWmT5/O0aNHiY6OzrDvqKgoLBaL7fD397/fwxURERERkXwkXyVn+/fvp1ChQjRo0MB2zdvbm8DAQPbv3w9AWFgYhQoVYunSpQB8/fXXuLu78+STTwKwdetWfvvtN9zd3XFzc8PNzQ0vLy8uXbpEXFxchn1HRkaSlJRkOxISEu7jSEVEREREJL/J01vp3yyjLfMNw8BkMgHg7OzM888/z9y5c2nfvj1z586lXbt2FCp07aNIS0ujbt266ZY+AhQvXjzDvs1mM2azORtGISIiIiIiBVG+Ss6qVavG1atX2bx5Mw0bNgTg1KlTHDp0iKpVq9rKdezYkSeffJK9e/eybt06xowZY7tXp04d/ve//+Hj44OHh8cDH4OIiIiIiBRM+WpZY6VKlWjdujU9evTg559/ZufOnXTq1IlSpUrRunVrW7mQkBBKlChBx44dCQgI4NFHH7Xd69ixI8WKFaN169asX7+eI0eOEBMTQ9++ffnzzz9zYlgiIiIiIlIA5KuZM4Dp06fTt29fWrRoweXLlwkODmbFihU4OTnZyphMJjp06MD777/P8OHD7eq7urry008/8Z///Idnn32Ws2fPUqpUKZo1a3ZXM2l7RoVqBk5ERERERG7LZGT0oJbck+TkZCwWC0lJSUrOREREREQKsKzmBvlqWaOIiIiIiEhele+WNeY21UesxMHsmtNhiIikEz8uLKdDEBERkRvk6pmz6OhoTCYT//77b4ZlRo4cSe3atR9YTCIiIiIiIvdDrkrOrFYrERERd1Rn4MCBrFmz5v4EJCIiIiIi8oDk+WWNbm5uuLm55XQYIiIiIiIi9yTXzJyFh4cTExPDlClTMJlMmEwm4uPjAdi6dSv16tXD1dWVhg0bcvDgQVu9m5c1hoeH06ZNG8aPH4+fnx/e3t688cYbXLlyxVbm+PHjhIWF4eLiQrly5Zg7dy4BAQFMnjzZrt0yZcpgNpspWbIkffr0ud8fgYiIiIiIFGC5ZuZsypQpHDp0iOrVqzN69GgA9u7dC8CQIUOYMGECxYsX59VXX6Vbt2788ssvGba1bt06/Pz8WLduHb/99hvt2rWjdu3a9OjRA4DOnTvzzz//EB0djZOTE/379+fEiRO2+osWLWLSpEnMnz+fhx56iMTERHbu3Jlp/CkpKaSkpNjOk5OT7/qzEBERERGRgifXJGcWiwVnZ2dcXV3x9fUF4MCBAwC8/fbbhISEAPDmm28SFhbGpUuXKFy48C3bKlq0KB9++CGOjo5UqVKFsLAw1qxZQ48ePThw4AA//vgjsbGx1KtXD4DPP/+cSpUq2eofPXoUX19fHn/8cZycnChTpgz169fPNP6oqChGjRp1z5+DiIiIiIgUTLlmWWNmatasafvZz88PwG6m62YPPfQQjo6OdnWulz948CCFChWiTp06tvsVK1akaNGitvMXXniBixcvUr58eXr06MHixYu5evVqpjFGRkaSlJRkOxISEu5skCIiIiIiUqDlieTMycnJ9rPJZAIgLS0tS+Wv17le3jCMW9a58bq/vz8HDx7kv//9Ly4uLrz++usEBwfbPbd2M7PZjIeHh90hIiIiIiKSVbkqOXN2diY1NfW+9lGlShWuXr3K9u3bbdd+++23dO9Sc3FxoVWrVkydOpXo6Gg2btzI7t2772tsIiIiIiJScOWaZ84AAgIC2Lx5M/Hx8bi5uWU6O3a3qlSpwuOPP07Pnj2ZNm0aTk5ODBgwABcXF9us3IwZM0hNTaVBgwa4urry1Vdf4eLiQtmyZbM9HhEREREREchlydnAgQPp0qUL1apV4+LFi0yfPv2+9DNr1iy6d+9OcHAwvr6+REVFsXfvXtsGI56enowbN47+/fuTmppKjRo1+O677/D29r7jvvaMCtUSRxERERERuS2TkdFDWAXIn3/+ib+/Pz/++CPNmjXLljaTk5OxWCwkJSUpORMRERERKcCymhvkqpmzB2Xt2rWcO3eOGjVqcPz4cQYPHkxAQADBwcE5HZqIiIiIiBRQBTI5u3LlCm+99Ra///477u7uNGzYkDlz5qTb5TE7VB+xEgeza7a3KyJyN+LHheV0CCIiIpKBXLVb492wWq1ERETcUZ3Q0FD27NnDhQsXeO211zhy5Ig2+xARERERkRyV55MzERERERGR/EDJmYiIiIiISC6QL5KztLQ0Bg8ejJeXF76+vowcOdJ2LykpiZ49e+Lj44OHhwdNmzZl586dGbYVHh5OmzZtGDVqlK3OK6+8wuXLlx/ASEREREREpKDKF8nZzJkzKVKkCJs3b+a9995j9OjRrF69GsMwCAsLIzExkRUrVrB161bq1KlDs2bNOH36dIbtrVmzhv3797Nu3TrmzZvH4sWLGTVqVKYxpKSkkJycbHeIiIiIiIhkVb5IzmrWrMmIESOoVKkSnTt3pl69eqxZs4Z169axe/duFi5cSL169ahUqRLjx4/H09OTRYsWZdies7MzX375JQ899BBhYWGMHj2aqVOnkpaWlmGdqKgoLBaL7fD3978fQxURERERkXwq3yRnN/Lz8+PEiRNs3bqVc+fO4e3tjZubm+04cuQIcXFxGbZXq1YtXF3///b3QUFBnDt3joSEhAzrREZGkpSUZDsyKysiIiIiInKzfPGes5vfT2YymUhLSyMtLQ0/Pz+io6PT1fH09LzjfkwmU4b3zGYzZrP5jtsUERERERGBfJKcZaROnTokJiZSqFAhAgICslxv586dXLx4ERcXFwA2bdqEm5sbpUuXvk+RioiIiIhIQZcvljVm5PHHHycoKIg2bdqwcuVK4uPj2bBhA0OHDmXLli0Z1rt8+TLdu3dn3759fP/994wYMYJevXrh4JCvPy4REREREclB+XrmzGQysWLFCoYMGUK3bt04efIkvr6+BAcHU6JEiQzrNWvWjEqVKhEcHExKSgrt27e3257/TuwZFYqHh8ddjkBERERERAoKk2EYRk4HkZuEh4fz77//smTJkntqJzk5GYvFQlJSkpIzEREREZECLKu5gdbpiYiIiIiI5AL5elljblB9xEoczK63Lygi8gDEjwvL6RBEREQkA0rObjJjxoycDkFERERERAogLWsUERERERHJBZSciYiIiIiI5AK5Ojk7e/YsHTt2pEiRIvj5+TFp0iSsVisREREAzJ49m3r16uHu7o6vry8vvvgiJ06csNWPjo7GZDKxcuVKHn74YVxcXGjatCknTpzg+++/p2rVqnh4eNChQwcuXLhgq2cYBu+99x7ly5fHxcWFWrVqsWjRogc9fBERERERKUBydXLWv39/fvnlF5YuXcrq1atZv34927Zts92/fPkyY8aMYefOnSxZsoQjR44QHh6erp2RI0fy4YcfsmHDBhISEmjbti2TJ09m7ty5LF++nNWrV/PBBx/Yyg8dOpTp06czbdo09u7dS79+/ejUqRMxMTEZxpqSkkJycrLdISIiIiIiklW59j1nZ8+exdvbm7lz5/L8888DkJSURMmSJenRoweTJ09OVyc2Npb69etz9uxZ3NzciI6OpkmTJvz44480a9YMgHHjxhEZGUlcXBzly5cH4NVXXyU+Pp4ffviB8+fPU6xYMdauXUtQUJCt7ZdffpkLFy4wd+7cW8Y7cuRIRo0ale66f8QC7dYoIrmGdmsUERF58PL8e85+//13rly5Qv369W3X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x913363x48dXe3/r1q1df/v4+Lhts9lsrssW/f39T1vHb6WkpOiHH37QM888ozZt2shut6tHjx6qqKg4q88BAJxfhDMAQIMVHx+vt99+W1FRUWrcuPo/ie3bt5e/v7/+85//1HhZ4y9PgCwsLFSzZs0kqdqlhfHx8dqxY8fveox/TEyMXn75ZR0+fLhWZ88yMzP13HPPaeDAgZKkgoICt4ecAACsiQeCAAAarHvuuUeHDx/WiBEj9Omnnyo3N1erVq3S6NGjVVlZKT8/Pz3wwAOaPHmyFi9erH379mnz5s165ZVXJEnt2rVTZGSkUlNT9b///U8ffvih5syZ47aPBx54QJ988onuuecebd++XXv37tXy5ct177331rrOESNGyOl0aujQodq4caNyc3P19ttv65NPPqlxfLt27fTaa69p165d2rJli5KTk8/67BsA4PwjnAEAGqyIiAht3LhRlZWVSkpKUufOnfW3v/1NDofDdcni1KlTdf/992vatGnq2LGjbrnlFte9YD4+Pnr99de1e/duxcbGatasWXr88cfd9hETE6P169dr79696tWrl+Li4jR16lSFh4fXuk5fX1+tWrVKoaGhGjhwoLp06aKZM2eqUaNGNY5/9dVXdeTIEcXFxem2227T+PHjFRoaeo7fEgDgfOFpjQAAAABgAZw5AwAAAAALIJwBAAAAgAUQzgAAAADAAghnAAAAAGABhDMAAAAAsADCGQAAAABYAOEMAAAAACyAcAYAAAAAFkA4AwAAAAALIJwBAAAAgAUQzgAAAADAAv4PDlHtEZgIsv0AAAAASUVORK5CYII=",
            "text/plain": [
              "<Figure size 1000x600 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "plt.figure(figsize=(10, 6))\n",
        "plt.barh(\n",
        "    palabras_frecuentes[\"word\"][::-1],\n",
        "    palabras_frecuentes[\"frequency\"][::-1]\n",
        ")\n",
        "plt.title(\"Palabras más frecuentes tras el preprocesamiento\")\n",
        "plt.xlabel(\"Frecuencia\")\n",
        "plt.ylabel(\"Palabra\")\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "ceabccc6",
      "metadata": {
        "id": "ceabccc6"
      },
      "source": [
        "### 5.1. Longitud de los documentos procesados\n",
        "\n",
        "También revisaremos cuántos tokens quedan en cada documento tras el preprocesamiento.\n",
        "\n",
        "Si muchos documentos quedan con muy pocas palabras, el modelo de tópicos tendrá menos información para trabajar."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 24,
      "id": "1e932f67",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 648
        },
        "id": "1e932f67",
        "outputId": "ac696d9f-2886-462a-9d7c-3029c316b7d6"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "count    3952.000000\n",
            "mean       16.234818\n",
            "std         6.553792\n",
            "min         3.000000\n",
            "25%        12.000000\n",
            "50%        16.000000\n",
            "75%        20.000000\n",
            "max        98.000000\n",
            "Name: processed_length, dtype: float64\n"
          ]
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAHUCAYAAAAgFQAeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVr9JREFUeJzt3XlY1FX///HXyCYQoqAykqhoaCpgLuWSa6LmbpZaWumdleUWLqm0qd0FSrl0Z8u3fm53Zvq9S7szLUVNytQ0k1S0HbcCTUNwQRA4vz+6nG8jqAwOjkzPx3XNdTnnc+Yz78+coV4czpyxGGOMAAAAADdQwdUFAAAAAM5CuAUAAIDbINwCAADAbRBuAQAA4DYItwAAAHAbhFsAAAC4DcItAAAA3AbhFgAAAG6DcAsAAAC3QbgFrtKiRYtksVj09ddfu7qUYm3atEkWi0WbNm2yta1Zs0bTpk0rk+ebNm2aLBZLqR/fsWNHdezY0Wn1DBs2THXq1HHa+a5GnTp1NGzYMFeXcV0qy/ckSq+4/34A1zvCLeDmmjVrpq1bt6pZs2a2tjVr1mj69OkurAqwx3sSgLN4uroAAGWrUqVKatWqlavLANzS+fPnZbFY5OnJ/06B6wUzt8A1snnzZnXu3FkBAQHy8/NTmzZttHr1ars+F5Y4fPbZZ3r88cdVtWpVBQcHq3///vrtt9/s+ubm5mrChAmyWq3y8/NT+/bttXPnziJ/+r74z4rDhg3Ta6+9JkmyWCy224EDB3TgwAFZLBYtWrSoSP0Wi6XIn41Xr16tW265RT4+PgoPD9fLL79c4tfDGKPExETVrl1bFStWVLNmzfTJJ58U2zc7O1sTJ05UeHi4vL29deONNyo2NlZnzpwp8fP91blz5xQXF2d3vlGjRunkyZN2/TZu3KiOHTsqODhYvr6+qlWrlu6++26dPXv2suc/f/68Jk2aZBubtm3bavv27cX23bt3r/r27asqVaqoYsWKuuWWW7R48eIi/U6ePKkJEyaobt268vHxUfXq1dWjRw999913ki795+PixnTYsGG64YYb9N1336lbt27y9/dXjRo1NGPGDEnStm3b1LZtW/n7+6t+/frF1pORkaERI0aoZs2a8vb2Vnh4uKZPn678/Pwiz/3yyy9r9uzZCg8P1w033KDWrVtr27ZtdvVc6j0plf141alTR7169dLKlSsVHR2tihUrqm7duvrXv/5l1+/Ca/zOO+9owoQJuvHGG+Xj46OffvpJkrRgwQI1adJEFStWVFBQkO666y7t37+/yPN99dVX6t27t4KDg1WxYkXVq1dPsbGxdn1+/PFHDR48WNWrV5ePj48aNmxoe40uKCws1AsvvKAGDRrI19dXlStXVnR0tF555RVbn59++kn/+Mc/FBERIT8/P914443q3bu39uzZU6Su7777Tnfeeaf8/PxUtWpVPfbYYzp16lSxr1lJrvWXX37Rvffeq9DQUPn4+CgkJESdO3dWSkrKJccCcAZ+1QSugeTkZHXp0kXR0dGaP3++fHx89Prrr6t379567733NGjQILv+Dz/8sHr27KmlS5fq8OHDevLJJ3X//fdr48aNtj7/+Mc/tHz5ck2aNEl33HGH9u3bp7vuukvZ2dmXreXZZ5/VmTNn9P7772vr1q229ho1aig9Pb3E17Rhwwb17dtXrVu31rJly1RQUKDExEQdPXq0RI+fPn26pk+fruHDh+uee+7R4cOH9cgjj6igoEANGjSw9Tt79qw6dOigI0eO6KmnnlJ0dLRSU1P13HPPac+ePVq/fr1Da3yNMerXr582bNiguLg4tWvXTrt379bUqVO1detWbd26VT4+Pjpw4IB69uypdu3aacGCBapcubJ+/fVXffrpp8rLy5Ofn98ln+ORRx7Rv//9b02cOFFdunTR3r171b9//yJB4fvvv1ebNm1UvXp1/etf/1JwcLCWLFmiYcOG6ejRo5o0aZIk6dSpU2rbtq0OHDigyZMnq2XLljp9+rQ+//xzpaen6+abby7x9V9w/vx59e/fX4899piefPJJLV26VHFxccrOztYHH3ygyZMnq2bNmnr11Vc1bNgwRUZGqnnz5pL+DLa33XabKlSooOeee0716tXT1q1b9cILL+jAgQNauHCh3XO99tpruvnmmzV37lxJf74He/ToobS0NAUGBl72PXktxkuSUlJSFBsbq2nTpslqterdd9/VE088oby8PE2cONGub1xcnFq3bq0333xTFSpUUPXq1ZWQkKCnnnpK9913nxISEnTixAlNmzZNrVu31o4dOxQRESFJWrt2rXr37q2GDRtq9uzZqlWrlg4cOKB169bZzr9v3z61adNGtWrV0qxZs2S1WrV27VqNHTtWx48f19SpUyVJiYmJmjZtmp555hm1b99e58+f13fffWcX+n/77TcFBwdrxowZqlatmv744w8tXrxYLVu21K5du2w/a0ePHlWHDh3k5eWl119/XSEhIXr33Xc1evToIq9VSa+1R48etv8u1KpVS8ePH9eWLVuK/FICOJ0BcFUWLlxoJJkdO3Zcsk+rVq1M9erVzalTp2xt+fn5JjIy0tSsWdMUFhbanWvkyJF2j09MTDSSTHp6ujHGmNTUVCPJTJ482a7fe++9ZySZoUOH2to+++wzI8l89tlntrZRo0aZ4n7809LSjCSzcOHCIsckmalTp9rut2zZ0oSGhpqcnBxbW3Z2tgkKCir23H+VmZlpKlasaO666y679i+//NJIMh06dLC1JSQkmAoVKhR5fd9//30jyaxZs+ayzzV06FBTu3Zt2/1PP/3USDKJiYl2/ZYvX24kmbfeesvu/CkpKZc9/8X2799vJJlx48bZtb/77rtFxubee+81Pj4+5tChQ3Z9u3fvbvz8/MzJkyeNMcY8//zzRpJJSkq65PMWN87GFD+mQ4cONZLMBx98YGs7f/68qVatmpFkvvnmG1v7iRMnjIeHhxk/frytbcSIEeaGG24wBw8etHuul19+2Ugyqampds8dFRVl8vPzbf22b99uJJn33nvP1nap92RZj5cxxtSuXdtYLJYij+3SpYupVKmSOXPmjDHm/17j9u3b2/XLzMw0vr6+pkePHnbthw4dMj4+Pmbw4MG2tnr16pl69erZ/dxcrFu3bqZmzZomKyvLrn306NGmYsWK5o8//jDGGNOrVy9zyy23OHSt+fn5Ji8vz0RERNi9RydPnnzJ1+Cv76uSXuvx48eNJDN37lyH6gOcgWUJQBk7c+aMvvrqK91zzz264YYbbO0eHh564IEHdOTIEX3//fd2j+nTp4/d/ejoaEnSwYMHJf05EyxJAwcOtOt3zz33XJO1f2fOnNGOHTvUv39/VaxY0dYeEBCg3r17X/HxW7du1blz5zRkyBC79jZt2qh27dp2bR9//LEiIyN1yy23KD8/33br1q1bqT7FfWH2++JdCwYMGCB/f39t2LBBknTLLbfI29tbjz76qBYvXqxffvmlROf/7LPPJKnItQ0cOLDI2GzcuFGdO3dWWFiYXfuwYcN09uxZ2yzmJ598ovr16ysmJqZkF1kCFotFPXr0sN339PTUTTfdpBo1aqhp06a29qCgIFWvXt323pP+HJNOnTopNDTUbky6d+8u6f/enxf07NlTHh4etvsXv58vp6zH64LGjRurSZMmdm2DBw9Wdna2vvnmG7v2u+++2+7+1q1blZOTU6TGsLAw3XHHHbYaf/jhB/38888aPny43c/NX507d04bNmzQXXfdJT8/P7vXt0ePHjp37pxtScdtt92mb7/9ViNHjtTatWuL/atNfn6+4uPj1ahRI3l7e8vT01Pe3t768ccf7ZYRfPbZZ5d8DUpzrUFBQapXr55eeuklzZ49W7t27VJhYWGx1ww4G+EWKGOZmZkyxqhGjRpFjoWGhkqSTpw4YdceHBxsd9/Hx0eSlJOTY9c/JCTErp+np2eRx5aFzMxMFRYWymq1FjlWXNvFLtRfkscfPXpUu3fvlpeXl90tICBAxhgdP37codpPnDghT09PVatWza7dYrHIarXaaqtXr57Wr1+v6tWra9SoUapXr57q1atnt57RkWsrbmxOnDhRovfF77//rpo1azpwlVfm5+dXJGB5e3srKCioSF9vb2+dO3fOdv/o0aNatWpVkTFp3LixJBUZkyu9ny+nrMfrgsu9Fy/++bx4zC4cv9RY/nUcJV12LE+cOKH8/Hy9+uqrRV7fC7+MXHh94+Li9PLLL2vbtm3q3r27goOD1blzZ7ttCcePH69nn31W/fr106pVq/TVV19px44datKkid3rf+LEiRL9PJb0Wi0WizZs2KBu3bopMTFRzZo1U7Vq1TR27NhLruMFnIU1t0AZq1KliipUqFDsetYLHxKrWrWqQ+e8EBaOHj2qG2+80daen59f5H/EjrgQdnJzc+3aLz5nlSpVZLFYlJGRUeQcxbVd7EL9l3r8X/elrVq1qnx9fbVgwYJiz1Wa1y4/P1+///67XWAyxigjI0O33nqrra1du3Zq166dCgoK9PXXX+vVV19VbGysQkJCdO+9917x2q40NsHBwSV6X1SrVk1Hjhy57HVdauwcDf8lUbVqVUVHR+vFF18s9viFcO4MZT1eF1zuvXxxOL94jfeF45cay7+Oo6TLjmWVKlVsf9UZNWpUsX3Cw8Ml/fkL0/jx4zV+/HidPHlS69ev11NPPaVu3brp8OHD8vPz05IlS/Tggw8qPj7e7hzHjx9X5cqV7a6hJD/PJb1WSapdu7bmz58v6c9Z6//93//VtGnTlJeXpzfffPOSrwFwtZi5BcqYv7+/WrZsqRUrVtjNlBQWFmrJkiWqWbOm6tev79A527dvL0lavny5Xfv7779v92n1S7nUzFlISIgqVqyo3bt327X/97//tbvv7++v2267TStWrLCb0Tt16pRWrVp1xedv1aqVKlasqHfffdeufcuWLUX+VN2rVy/9/PPPCg4OVosWLYrcHP2Chs6dO0uSlixZYtf+wQcf6MyZM7bjf+Xh4aGWLVvaPq1+8Z+p/+rCF1BcfG3/+7//W2RsOnfurI0bNxbZCePf//63/Pz8bFu4de/eXT/88IPdBwovduF1uHjsPvroo0s+prR69eqlvXv3ql69esWOSWnC7aXek2U9Xhekpqbq22+/tWtbunSpAgIC7PaILk7r1q3l6+tbpMYjR47Ylp5IUv369VWvXj0tWLCgyC8hF/j5+alTp07atWuXoqOji319i/vrTOXKlXXPPfdo1KhR+uOPP2w7TVgsFttre8Hq1av166+/2rV16tTpkq9Baa71YvXr19czzzyjqKioEo0HcDWYuQWcZOPGjbb/ofxVjx49lJCQoC5duqhTp06aOHGivL299frrr2vv3r167733HP5Gr8aNG+u+++7TrFmz5OHhoTvuuEOpqamaNWuWAgMDVaHC5X9vjYqKkiTNnDlT3bt3l4eHh6Kjo+Xt7a37779fCxYsUL169dSkSRNt3769yP/gJOmf//yn7rzzTnXp0kUTJkxQQUGBZs6cKX9/f/3xxx+Xff4qVapo4sSJeuGFF/Twww9rwIABOnz4sO2T6n8VGxurDz74QO3bt9e4ceMUHR2twsJCHTp0SOvWrdOECRPUsmXLEr92Xbp0Ubdu3TR58mRlZ2fr9ttvt336vmnTpnrggQckSW+++aY2btyonj17qlatWjp37pxt9vhya18bNmyo+++/X3PnzpWXl5diYmK0d+9evfzyy6pUqZJd36lTp9rWrz733HMKCgrSu+++q9WrVysxMVGBgYG212D58uXq27evpkyZottuu005OTlKTk5Wr1691KlTJ1mtVsXExCghIUFVqlRR7dq1tWHDBq1YsaLEr01JPf/880pKSlKbNm00duxYNWjQQOfOndOBAwe0Zs0avfnmmw4vo7jUe7Ksx+uC0NBQ9enTR9OmTVONGjW0ZMkSJSUlaebMmVfcaaFy5cp69tln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fn5+Gjx4sCQpMDBQw4cP14QJExQcHKygoCBNnDhRUVFRRT6gBgAAAPfncLhNSEjQnXfeqX379ik/P1+vvPKKUlNTtXXrViUnJzu1uEmTJiknJ0cjR45UZmamWrZsqXXr1ikgIMDWZ86cOfL09NTAgQOVk5Ojzp07a9GiRfLw8HBqLQAAALj+WYwxxtEH7dmzRy+//LJ27typwsJCNWvWTJMnT1ZUVFRZ1FjmsrOzFRgYqKysrHL54TJnfmofrsFuCQAAXF5J85rDM7eSFBUVZdsKDAAAALhelCjcOvINXuVx5hMAAADuoUThtnLlyiXeCaGgoOCqCgIAAABKq0Th9rPPPrP9+8CBA5oyZYqGDRtm2x1h69atWrx4sRISEsqmSgAAAKAEShRuO3ToYPv3888/r9mzZ+u+++6ztfXp00dRUVF66623NHToUOdXCQAAAJSAw1/isHXrVrVo0aJIe4sWLbR9+3anFAUAAACUhsPhNiwsTG+++WaR9v/5n/9RWFiYU4oCAAAASsPhrcDmzJmju+++W2vXrlWrVq0kSdu2bdPPP/+sDz74wOkFAgAAACXl8Mxtjx499OOPP6pv3776448/dOLECfXt21c//PCDevToURY1AgAAACVSqi9xqFmzpl588UVn1wIAAABcFYdnbgEAAIDrFeEWAAAAboNwCwAAALdBuAUAAIDbKNUHyiTp999/1/fffy+LxaL69eurWrVqzqwLAAAAcJjDM7dnzpzRQw89pNDQULVv317t2rVTaGiohg8frrNnz5ZFjQAAAECJOBxux48fr+TkZH300Uc6efKkTp48qf/+979KTk7WhAkTyqJGAAAAoEQcXpbwwQcf6P3331fHjh1tbT169JCvr68GDhyoN954w5n1AQAAACXm8Mzt2bNnFRISUqS9evXqLEsAAACASzkcblu3bq2pU6fq3LlztracnBxNnz5drVu3dmpxAAAAgCMcXpYwd+5cde/eXTVr1lSTJk1ksViUkpKiihUrau3atWVRIwAAAFAiDofbqKgo/fjjj1qyZIm+++47GWN07733asiQIfL19S2LGgEAAIAScSjcnj9/Xg0aNNDHH3+sRx55pKxqAgAAAErFoTW3Xl5eys3NlcViKat6AAAAgFJz+ANlY8aM0cyZM5Wfn18W9QAAAACl5vCa26+++kobNmzQunXrFBUV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+fj42LVVrly5xM9ZqVIlfuDcFGPrvhhb98S4ui/G1n1dzdhebsb2gnK/W4K3t7eaN2+upKQku/akpCS1adPGRVUBAADAFcr9zK0kjR8/Xg888IBatGih1q1b66233tKhQ4f02GOPubo0AAAAXENuEW4HDRqkEydO6Pnnn1d6eroiIyO1Zs0a1a5d26nP4+Pjo6lTpxZZ0oDyj7F1X4yte2Jc3Rdj676u1di6xT63AAAAgOQGa24BAACACwi3AAAAcBuEWwAAALgNwi0AAADcBuHWAa+//rrCw8NVsWJFNW/eXF988YWrS4IDEhISdOuttyogIEDVq1dXv3799P3339v1McZo2rRpCg0Nla+vrzp27KjU1FQXVYzSSEhIkMViUWxsrK2NcS2/fv31V91///0KDg6Wn5+fbrnlFu3cudN2nLEtn/Lz8/XMM88oPDxcvr6+qlu3rp5//nkVFhba+jC25cPnn3+u3r17KzQ0VBaLRR9++KHd8ZKMY25ursaMGaOqVavK399fffr00ZEjR0pdE+G2hJYvX67Y2Fg9/fTT2rVrl9q1a6fu3bvr0KFDri4NJZScnKxRo0Zp27ZtSkpKUn5+vrp27aozZ87Y+iQmJmr27NmaN2+eduzYIavVqi5duujUqVMurBwltWPHDr311luKjo62a2dcy6fMzEzdfvvt8vLy0ieffKJ9+/Zp1qxZdt8oydiWTzNnztSbb76pefPmaf/+/UpMTNRLL72kV1991daHsS0fzpw5oyZNmmjevHnFHi/JOMbGxmrlypVatmyZNm/erNOnT6tXr14qKCgoXVEGJXLbbbeZxx57zK7t5ptvNlOmTHFRRbhax44dM5JMcnKyMcaYwsJCY7VazYwZM2x9zp07ZwIDA82bb77pqjJRQqdOnTIREREmKSnJdOjQwTzxxBPGGMa1PJs8ebJp27btJY8ztuVXz549zUMPPWTX1r9/f3P//fcbYxjb8kqSWblype1+Scbx5MmTxsvLyyxbtszW59dffzUVKlQwn376aanqYOa2BPLy8rRz50517drVrr1r167asmWLi6rC1crKypIkBQUFSZLS0tKUkZFhN84+Pj7q0KED41wOjBo1Sj179lRMTIxdO+Nafn300Udq0aKFBgwYoOrVq6tp06Z6++23bccZ2/Krbdu22rBhg3744QdJ0rfffqvNmzer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vVsDBgzQnXfeqR9//NH2uLNnz+rll1/WO++8o88//1yHDh3SxIkTJUn5+fnq16+fOnTooN27d2vr1q169NFHi11uAuBvxACAGxs6dKjp27evMcaYVq1amYceesgYY8zKlSvNX/8TOHXqVNOkSRO7x86ZM8fUrl3b7ly1a9c2BQUFtrYGDRqYdu3a2e7n5+cbf39/89577xljjJk/f75p0KCBKSwstPXJzc01vr6+Zu3atbbzhoSEmNzcXFuft956y1SpUsWcPn3a1rZ69WpToUIFk5GRUey1xsXFmYYNG9o91+TJk40kk5mZaYwx5oEHHjCPPvqo3eO++OILU6FCBZOTk1PseYt7bdatW2c8PDzMoUOHbG2pqalGktm+fbvd47Zs2WKCgoLMSy+9ZOv7008/GYvFYn799Ve783bu3NnExcUZY4xZuHChkWR++ukn2/HXXnvNhISEGGOMOXHihJFkNm3aVGzdAP6ePF2arAHgGpo5c6buuOMOTZgwodTnaNy4sSpU+L8/eoWEhCgyMtJ238PDQ8HBwTp27JgkaefOnfrpp58UEBBgd55z587p559/tt2PioqSt7e37f7+/fvVpEkT+fv729puv/12FRYW6vvvv1dISEiR2vbv369WrVrZzVy2bt3ars+Fet59911bmzFGhYWFSktLU8OGDUv0Ouzfv19hYWF2H7pr1KiRKleurP379+vWW2+V9OfShZiYGL3wwgsaN26cre8333wjY4xtCcYFubm5Cg4Ott338/NTvXr1bPdr1Khhe22DgoI0bNgwdevWTV26dFFMTIwGDhyoGjVqlOgaALgnwi2Av4327durW7dueuqppzRs2DC7YxUqVJAxxq7t/PnzRc7h5eVld99isRTbVlhYKEkqLCxU8+bN7cLkBdWqVbP9+68hVvozcF7qz+uXar+4/uIUFhZqxIgRGjt2bJFjtWrVuuLjr1Tfxe3VqlVTaGioli1bpuHDh6tSpUq2Ojw8PLRz5055eHjYneOGG26w/bu41/av17lw4UKNHTtWn376qZYvX65nnnlGSUlJatWqVYmvBYB7IdwC+FuZMWOGbrnlliIzhtWqVVNGRoZdOEtJSbnq52vWrJmWL1+u6tWr24JdSTRq1EiLFy/WmTNnbMH3yy+/VIUKFYrU/tfHfPjhh3Zt27ZtK1JPamqqbrrpphLX4u3trYKCgiLPdejQIR0+fNg2e7tv3z5lZWXZzf76+vrq448/Vo8ePdStWzetW7dOAQEBatq0qQoKCnTs2DG1a9euxLUUp2nTpmratKni4uLUunVrLV26lHAL/I3xgTIAfytRUVEaMmSIXn31Vbv2jh076vfff1diYqJ+/vlnvfbaa/rkk0+u+vmGDBmiqlWrqm/fvvriiy+Ulpam5ORkPfHEE5f9cNuQIUNUsWJFDR06VHv37tVnn32mMWPG6IEHHih2SYIkPfbYY/r55581fvx4ff/991q6dKltZ4MLJk+erK1bt2rUqFFKSUnRjz/+qI8++khjxoy5ZC116tRRWlqaUlJSdPz4ceXm5iomJkbR0dEaMmSIvvnmG23fvl0PPvigOnTooBYtWtg93t/fX6tXr5anp6e6d++u06dPq379+hoyZIgefPBBrVixQmlpadqxY4dmzpypNWvWlOi1TUtLU1xcnLZu3aqDBw9q3bp1+uGHH0q8tAKAeyLcAvjb+ec//1nkT/gNGzbU66+/rtdee01NmjTR9u3bbZ/Kvxp+fn76/PPPVatWLfXv318NGzbUQw89pJycnMvO5Pr5+Wnt2rX6448/dOutt+qee+5R586dNW/evEs+platWvrggw+0atUqNWnSRG+++abi4+Pt+kRHRys5OVk//vij2rVrp6ZNm+rZZ5+97DrVu+++W3feeac6deqkatWq6b333pPFYtGHH36oKlWqqH379oqJiVHdunW1fPnyYs9xww036JNPPpExRj169NCZM2e0cOFCPfjgg5owYYIaNGigPn366Kuvvirxl2f4+fnpu+++091336369evr0Ucf1ejRozVixIgSPR6Ae7KYkizSAgAAAMoBZm4BAADgNgi3AAAAcBuEWwAAALgNwi0AAADcBuEWAAAAboNwCwAAALdBuAUAAIDbINwCAADAbRBuAQAA4DYItwAAAHAbhFsAAAC4jf8PcA/OtIa6/kEAAAAASUVORK5CYII=",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "df_reducido[\"processed_length\"] = df_reducido[\"processed_text\"].apply(lambda texto: len(texto.split()))\n",
        "\n",
        "print(df_reducido[\"processed_length\"].describe())\n",
        "\n",
        "plt.figure(figsize=(8, 5))\n",
        "plt.hist(df_reducido[\"processed_length\"], bins=30)\n",
        "plt.title(\"Longitud de los documentos procesados\")\n",
        "plt.xlabel(\"Número de tokens\")\n",
        "plt.ylabel(\"Número de documentos\")\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 25,
      "id": "4f6b0c72",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4f6b0c72",
        "outputId": "ab0227bf-9354-4b61-8076-b87be43806fb"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones tras filtrar por longitud procesada: (3924, 10)\n"
          ]
        }
      ],
      "source": [
        "# Eliminamos documentos que hayan quedado con muy pocos tokens tras el preprocesamiento\n",
        "min_tokens = 5\n",
        "\n",
        "df_reducido = df_reducido[df_reducido[\"processed_length\"] >= min_tokens].copy()\n",
        "df_reducido = df_reducido.reset_index(drop=True)\n",
        "\n",
        "print(\"Dimensiones tras filtrar por longitud procesada:\", df_reducido.shape)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "7b760066",
      "metadata": {
        "id": "7b760066"
      },
      "source": [
        "## 6. Representación de la matriz documento-término con conteos\n",
        "\n",
        "Para entrenar LDA clásico usaremos una matriz documento-término con conteos.\n",
        "\n",
        "Esto significa que:\n",
        "\n",
        "- Cada fila representa un documento\n",
        "- Cada columna representa un término del vocabulario\n",
        "- Cada celda indica cuántas veces aparece un término en un documento\n",
        "\n",
        "Usamos conteos porque LDA intenta explicar las ocurrencias observadas de palabras en los documentos.\n",
        "\n",
        "Por eso, en el flujo principal no usaremos TF-IDF como entrada de LDA.\n",
        "\n",
        "Para construir esta matriz usaremos `CountVectorizer`, que se encarga de crear el vocabulario y contar las apariciones de cada término en cada documento.\n",
        "\n",
        "En esta práctica configuraremos algunos parámetros importantes:\n",
        "\n",
        "- `lowercase=False`: indica que `CountVectorizer` no debe convertir el texto a minúsculas, porque ya lo hemos hecho previamente durante el preprocesamiento.\n",
        "- `min_df=5`: conserva únicamente los términos que aparecen en al menos 5 documentos distintos. Esto ayuda a eliminar palabras muy raras, errores o términos demasiado específicos.\n",
        "- `max_df=0.80`: elimina los términos que aparecen en más del 80% de los documentos. Esto ayuda a quitar palabras demasiado frecuentes que no aportan mucha información para distinguir tópicos.\n",
        "- `max_features=3000`: limita el vocabulario a un máximo de 3000 términos, seleccionando los más frecuentes después de aplicar los filtros anteriores. Esto reduce el tamaño de la matriz y hace que el entrenamiento sea más manejable.\n",
        "\n",
        "Es importante no confundir `min_df=5` con el filtro anterior `min_tokens=5`.\n",
        "\n",
        "Aunque en ambos casos aparece el valor 5, se aplican a niveles diferentes:\n",
        "\n",
        "- `min_tokens=5` filtra documentos: elimina documentos que han quedado con menos de 5 palabras útiles tras el preprocesamiento.\n",
        "- `min_df=5` filtra términos: elimina palabras que aparecen en menos de 5 documentos distintos.\n",
        "\n",
        "Por tanto, `min_tokens` controla que cada documento tenga una cantidad mínima de información, mientras que `min_df` controla que el vocabulario no incluya términos demasiado raros.\n",
        "\n",
        "Ambos filtros ayudan a reducir ruido, pero actúan sobre elementos distintos del corpus."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 26,
      "id": "a0bee210",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "a0bee210",
        "outputId": "9c842171-838f-4455-944b-7072cbbd6ae8"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones de la matriz documento-término (nº documentos, nº términos):\n",
            "(3924, 2797)\n"
          ]
        }
      ],
      "source": [
        "from sklearn.feature_extraction.text import CountVectorizer\n",
        "\n",
        "# CountVectorizer construye automáticamente el vocabulario y la matriz documento-término.\n",
        "# Como ya hemos preprocesado el texto, indicamos lowercase=False.\n",
        "vectorizador_conteos = CountVectorizer(\n",
        "    lowercase=False,\n",
        "    min_df=5,\n",
        "    max_df=0.80,\n",
        "    max_features=3000\n",
        ")\n",
        "\n",
        "matriz_conteos = vectorizador_conteos.fit_transform(df_reducido[\"processed_text\"])\n",
        "\n",
        "print(\"Dimensiones de la matriz documento-término (nº documentos, nº términos):\")\n",
        "print(matriz_conteos.shape)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 27,
      "id": "84f297f2",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "84f297f2",
        "outputId": "74825f48-086d-4504-f4e0-28cfebd35ad5"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Tamaño del vocabulario: 2797\n",
            "Primeros términos del vocabulario:\n",
            "['abc' 'ability' 'able' 'abortion' 'absolutely' 'abuse' 'academy'\n",
            " 'accepted' 'access' 'accessible' 'accident' 'according' 'account'\n",
            " 'accusations' 'accused' 'across' 'act' 'acting' 'action' 'actions'\n",
            " 'active' 'activities' 'activity' 'actor' 'actors' 'actress' 'actual'\n",
            " 'actually' 'add' 'added' 'adding' 'addition' 'address' 'adds'\n",
            " 'administration' 'admits' 'admitted' 'adorable' 'ads' 'adult' 'adults'\n",
            " 'advance' 'advanced' 'advances' 'advantage' 'adventure' 'advertising'\n",
            " 'advice' 'adviser' 'affect']\n"
          ]
        }
      ],
      "source": [
        "vocabulario = vectorizador_conteos.get_feature_names_out()\n",
        "\n",
        "print(\"Tamaño del vocabulario:\", len(vocabulario))\n",
        "print(\"Primeros términos del vocabulario:\")\n",
        "print(vocabulario[:50])"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "ee86db40",
      "metadata": {
        "id": "ee86db40"
      },
      "source": [
        "### 6.1. Ejemplo de vector de un documento\n",
        "\n",
        "La matriz generada es dispersa, porque la mayoría de documentos solo contienen una pequeña parte del vocabulario.\n",
        "\n",
        "Vamos a inspeccionar el vector de un documento concreto mostrando únicamente los términos con frecuencia mayor que cero."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 28,
      "id": "e7d0e9b4",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 786
        },
        "id": "e7d0e9b4",
        "outputId": "304acbaa-19b1-437c-f555-c2ced83d124e"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Categoría real: BUSINESS\n",
            "Texto original:\n",
            "How to Manage Your Personal Brand. Make no mistake: If you have a Facebook account, an Instagram page, a Twitter profile, you are a brand. Every time you upload a photo, add a link, or post an update, you're putting into the world another idea of yourself and what you stand for.\n",
            "\n",
            "Términos presentes en la representación:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>term</th>\n",
              "      <th>count</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>brand</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>account</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>page</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>update</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>twitter</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>stand</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>putting</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>profile</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>post</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>photo</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>personal</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>mistake</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>add</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>manage</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>link</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>instagram</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>idea</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>facebook</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>every</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>another</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "         term  count\n",
              "3       brand      2\n",
              "0     account      1\n",
              "11       page      1\n",
              "19     update      1\n",
              "18    twitter      1\n",
              "17      stand      1\n",
              "16    putting      1\n",
              "15    profile      1\n",
              "14       post      1\n",
              "13      photo      1\n",
              "12   personal      1\n",
              "10    mistake      1\n",
              "1         add      1\n",
              "9      manage      1\n",
              "8        link      1\n",
              "7   instagram      1\n",
              "6        idea      1\n",
              "5    facebook      1\n",
              "4       every      1\n",
              "2     another      1"
            ]
          },
          "execution_count": 28,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Podemos modificar este valor para indicar el índice del documento concreto a visualizar\n",
        "indice_documento = 0\n",
        "\n",
        "# Extrae la fila de la matriz asociada al documento \"indice_documento\"\n",
        "vector_documento = matriz_conteos[indice_documento].toarray()[0]\n",
        "\n",
        "# Lista de términos del documento\n",
        "terminos_presentes = []\n",
        "\n",
        "# Recorre el vector del documento posición a posición, y añade el término a \"terminos_presentes\" si la frecuencia es > 0\n",
        "# como una tupla junto con su frecuencia\n",
        "# Ejemplo: (\"market\", 2)\n",
        "for indice_termino, frecuencia in enumerate(vector_documento):\n",
        "    if frecuencia > 0:\n",
        "        terminos_presentes.append((vocabulario[indice_termino], frecuencia))\n",
        "\n",
        "# Convierte la lista de términos presentes en un dataframe de pandas, con columnas \"term\" y \"count\", de forma ordenada por frecuencia\n",
        "df_vector_documento = pd.DataFrame(\n",
        "    terminos_presentes,\n",
        "    columns=[\"term\", \"count\"]\n",
        ").sort_values(by=\"count\", ascending=False)\n",
        "\n",
        "print(\"Categoría real:\", df_reducido.loc[indice_documento, \"category\"])\n",
        "print(\"Texto original:\")\n",
        "print(df_reducido.loc[indice_documento, \"text\"])\n",
        "print(\"\\nTérminos presentes en la representación:\")\n",
        "df_vector_documento.head(20)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "2f7d377b",
      "metadata": {
        "id": "2f7d377b"
      },
      "source": [
        "## 7. Entrenamiento de un modelo LDA\n",
        "\n",
        "A continuación entrenaremos un modelo LDA.\n",
        "\n",
        "Para comenzar, fijaremos manualmente el número de tópicos. Este valor es un hiperparámetro del modelo.\n",
        "\n",
        "En una práctica real, conviene probar varios valores y comparar los resultados.\n",
        "\n",
        "Para crear el modelo usaremos `LatentDirichletAllocation`, indicando algunos parámetros importantes:\n",
        "\n",
        "- `n_components=numero_topicos`: indica cuántos tópicos queremos que aprenda el modelo. Si `numero_topicos = 8`, LDA intentará descubrir 8 tópicos distintos en el corpus.\n",
        "- `random_state=42`: fija la semilla aleatoria del modelo para que los resultados sean reproducibles. Así, si ejecutamos el notebook varias veces con los mismos datos y parámetros, obtendremos resultados más estables.\n",
        "- `learning_method=\"batch\"`: indica que el modelo usará todos los documentos en cada iteración de entrenamiento. Es una opción adecuada para esta práctica porque resulta más estable y sencilla de explicar.\n",
        "- `max_iter=20`: indica el número máximo de iteraciones de entrenamiento. En cada iteración, el modelo reajusta internamente las distribuciones de tópicos por documento y de palabras por tópico.\n",
        "\n",
        "Estos parámetros permiten controlar el comportamiento del entrenamiento.\n",
        "\n",
        "El más importante desde el punto de vista interpretativo es `n_components`, porque determina cuántos tópicos intentará descubrir el modelo."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 29,
      "id": "6cef9012",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6cef9012",
        "outputId": "6b7fb04f-ee08-43f3-f7ab-cf5f84ac9ff2"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Modelo LDA entrenado\n"
          ]
        }
      ],
      "source": [
        "from sklearn.decomposition import LatentDirichletAllocation\n",
        "\n",
        "numero_topicos = 8\n",
        "\n",
        "modelo_lda = LatentDirichletAllocation(\n",
        "    n_components=numero_topicos,\n",
        "    random_state=42,\n",
        "    learning_method=\"batch\",\n",
        "    max_iter=20\n",
        ")\n",
        "\n",
        "modelo_lda.fit(matriz_conteos)\n",
        "\n",
        "print(\"Modelo LDA entrenado\")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "1335fe6c",
      "metadata": {
        "id": "1335fe6c"
      },
      "source": [
        "### 7.1. Palabras principales de cada tópico\n",
        "\n",
        "Cada tópico aprendido por LDA puede representarse mediante las palabras con mayor peso dentro de ese tópico.\n",
        "\n",
        "Estas palabras no son una etiqueta automática. Sirven para que una persona interprete el tópico."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 30,
      "id": "0e1ffe27",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "0e1ffe27",
        "outputId": "6811740b-cef9-4492-ed5a-3dd9857646a5"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>trump, donald, president, obama, clinton, hous...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>first, star, life, way, uber, data, nfl, olymp...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>city, things, photos, york, best, study, every...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>apple, week, iphone, back, help, best, travel,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>food, photos, facebook, think, holiday, well, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>health, healthy, may, keep, take, want, good, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>world, day, first, state, little, best, play, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>food, super, day, watch, summer, week, bowl, v...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  trump, donald, president, obama, clinton, hous...\n",
              "1      1  first, star, life, way, uber, data, nfl, olymp...\n",
              "2      2  city, things, photos, york, best, study, every...\n",
              "3      3  apple, week, iphone, back, help, best, travel,...\n",
              "4      4  food, photos, facebook, think, holiday, well, ...\n",
              "5      5  health, healthy, may, keep, take, want, good, ...\n",
              "6      6  world, day, first, state, little, best, play, ...\n",
              "7      7  food, super, day, watch, summer, week, bowl, v..."
            ]
          },
          "execution_count": 30,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "def obtener_palabras_topico(modelo, vocabulario, numero_palabras=10):\n",
        "    '''\n",
        "    Devuelve una tabla con las palabras principales de cada tópico.\n",
        "    '''\n",
        "    filas = []\n",
        "\n",
        "    for indice_topico, distribucion_palabras in enumerate(modelo.components_):\n",
        "        indices_ordenados = distribucion_palabras.argsort()[::-1]\n",
        "        indices_top = indices_ordenados[:numero_palabras]\n",
        "\n",
        "        palabras = []\n",
        "        pesos = []\n",
        "\n",
        "        for indice in indices_top:\n",
        "            palabras.append(vocabulario[indice])\n",
        "            pesos.append(distribucion_palabras[indice])\n",
        "\n",
        "        filas.append({\n",
        "            \"topic\": indice_topico,\n",
        "            \"top_words\": \", \".join(palabras),\n",
        "            \"weights\": pesos\n",
        "        })\n",
        "\n",
        "    return pd.DataFrame(filas)\n",
        "\n",
        "tabla_topicos = obtener_palabras_topico(modelo_lda, vocabulario, numero_palabras=12)\n",
        "tabla_topicos[[\"topic\", \"top_words\"]]"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 31,
      "id": "6IFZCildzk6o",
      "metadata": {
        "id": "6IFZCildzk6o"
      },
      "outputs": [],
      "source": [
        "categorias_propuestas = [\n",
        "    \"POLITICS\",\n",
        "    \"SPORTS\",\n",
        "    \"BUSINESS\",\n",
        "    \"TRAVEL\",\n",
        "    \"FOOD & DRINK\",\n",
        "    \"WELLNESS\",\n",
        "    \"ENTERTAINMENT\",\n",
        "    \"TECH\"\n",
        "]"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "8344d0f3",
      "metadata": {
        "id": "8344d0f3"
      },
      "source": [
        "## 8. Interpretación de tópicos\n",
        "\n",
        "La interpretación de tópicos combina la salida del modelo con revisión humana.\n",
        "\n",
        "Para interpretar un tópico conviene revisar:\n",
        "\n",
        "- sus palabras principales,\n",
        "- los documentos donde ese tópico tiene más peso,\n",
        "- y si el conjunto de palabras tiene sentido para el objetivo del análisis."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "6bae72f0",
      "metadata": {
        "id": "6bae72f0"
      },
      "source": [
        "### 8.1. Visualización de palabras principales por tópico\n",
        "\n",
        "Una forma sencilla de analizar un tópico es representar sus palabras principales con un gráfico de barras.\n",
        "\n",
        "Esto ayuda a ver qué términos dominan cada tópico."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 32,
      "id": "a9dd9be0",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 488
        },
        "id": "a9dd9be0",
        "outputId": "a1602b84-18f0-49e1-fc09-aa66ba8f690f"
      },
      "outputs": [
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHVCAYAAADGu/wBAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUF9JREFUeJzt3X98zfX///H7mW1nv4cZG9b8nmGESaOY30SRSiFMoZTVkpSKoXr7TXr7lJL8SkmFfCiS3/k5v0K8kax51/xIbDPaz9f3j747H4dtZnidbW7Xy+Vc2nm9nq/n6/E6r50u9z09z/NYDMMwBAAAAOC2cnJ0AQAAAMCdgOANAAAAmIDgDQAAAJiA4A0AAACYgOANAAAAmIDgDQAAAJiA4A0AAACYgOANAAAAmIDgDQAAAJiA4A0AQDGSlJSk6tWrq1+/fo4uBcANIngDuG3mzp0ri8Viezg7O6ty5crq37+/fv/99xvuLzIyUpGRkYWqpUqVKurSpUuhji1uRo8eLYvFctv6j4+Pl8Vi0dy5c2/bOaTbfx03IioqSlWqVCnUsQX9vX3//fcL9JpGRUWpevXq+vjjjwtVj/R/7834+PhC91FY//73v1W7dm1ZrVZVrVpVY8aMUUZGhul1AI7g7OgCAJR8c+bMUe3atXX58mVt2rRJ48aN08aNG3XgwAF5eno6urwSZ8CAAerYseNt6z8wMFDbtm1T9erVb9s57kTvv/++ypUrp6ioqDzbTJkyRfHx8dq0aZNcXFwKfa7OnTtr27ZtCgwMLHQfhfHOO+9o5MiReu2119S+fXvFxcXpzTff1O+//66PPvrI1FoARyB4A7jt6tWrp/DwcElSq1atlJWVpbfeekvLli1T7969HVzd9WVkZNhG7IuyS5cuycPDQ5UrV1blypVv23msVqvuvffe29Y/8vbyyy/r5Zdfvul+/P395e/vfwsqKrhz587p7bff1sCBA/Wvf/1L0j//GpCRkaE333xTMTExqlOnjqk1AWZjqgkA0+WEtt9++02SNGbMGDVt2lRly5aVj4+PGjVqpNmzZ8swjOv2daPHLl26VPXr15ebm5uqVaum9957z27/hg0bZLFYtGDBAr388suqVKmSrFarfvnlF509e1bPPfec6tSpIy8vL5UvX16tW7fW5s2brznPBx98oAYNGsjLy0ve3t6qXbu2Xn/99XyvJWcKx8SJE/XOO+/orrvukpubm8LDw7V27Vq7tjnTMPbs2aNHH31UZcqUsY1A5zZFI2eqzapVq9SoUSO5u7urdu3a+uSTT66p4/fff9egQYMUFBQkV1dXVaxYUY8++qhOnz5tV+eV0yJyzrl37151795dPj4+8vX11ZNPPqmzZ8/a9f/FF1+offv2CgwMlLu7u0JDQ/Xaa68pNTU139fnyuMjIiLk6ekpLy8vdejQQXv37rVr8+uvv+qJJ55QxYoVZbVaVaFCBbVp00b79u27bv9z585VSEiIrFarQkNDNX/+/Fzbpaen6+2337ZNm/D391f//v2vud6CqFKlin7++Wdt3LjRNjXryqktCQkJevLJJ1W+fHlbXVOmTFF2dratzY38/uQ11WTVqlVq06aNfH195eHhodDQUI0bN86uzfLlyxURESEPDw95e3urXbt22rZt23WvcdWqVfr777/Vv39/u+39+/eXYRhatmxZwV4soBgr2sM3AEqkX375RZJsI27x8fF65plndNddd0mStm/frujoaP3+++8aNWpUvn3dyLH79u1TTEyMRo8erYCAAC1cuFAvvvii0tPTNWzYMLu2I0aMUEREhGbOnCknJyeVL1/eFqhiY2MVEBCgixcvaunSpYqMjNTatWtt83gXLVqk5557TtHR0Zo8ebKcnJz0yy+/6NChQwV6fWbMmKHg4GC9++67ys7O1sSJE9WpUydt3LhRERERdm27d++uJ554Qs8+++x1g+tPP/2kl19+Wa+99poqVKigjz/+WE8//bRq1KihFi1aSPondDdp0kQZGRl6/fXXVb9+fZ07d06rV6/W+fPnVaFChXzP8fDDD6tHjx569tln9fPPP2vkyJE6dOiQduzYYZsacezYMT3wwAOKiYmRp6en/vOf/2jChAnauXOn1q1bl2////rXv/Tmm2+qf//+evPNN5Wenq5Jkybp/vvv186dO20jpg888ICysrI0ceJE3XXXXfrzzz+1detWXbhwId/+586dq/79+6tr166aMmWKkpKSNHr0aKWlpcnJ6f/GqrKzs9W1a1dt3rxZw4cPV7NmzfTbb78pNjZWkZGR2rVrl9zd3fM915WWLl2qRx99VL6+vnr//fcl/fMvC5J09uxZNWvWTOnp6XrrrbdUpUoVrVixQsOGDdPx48dt7XPcyO/PlWbPnq2BAweqZcuWmjlzpsqXL6+jR4/q4MGDtjafffaZevfurfbt2+vzzz9XWlqaJk6caHsP3HfffXn2n9NPWFiY3fbAwECVK1fO7jxAiWUAwG0yZ84cQ5Kxfft2IyMjw0hJSTFWrFhh+Pv7G97e3sapU6euOSYrK8vIyMgwxo4da/j5+RnZ2dm2fS1btjRatmyZ5/nyOzY4ONiwWCzGvn377I5p166d4ePjY6SmphqGYRjr1683JBktWrS47vVlZmYaGRkZRps2bYyHH37Ytn3IkCFG6dKlr3v81U6cOGFIMipWrGhcvnzZtj05OdkoW7as0bZtW9u22NhYQ5IxatSoa/rJ2Xel4OBgw83Nzfjtt99s2y5fvmyULVvWeOaZZ2zbnnrqKcPFxcU4dOjQdeucM2fONed86aWX7NouXLjQkGR8+umnufaVnZ1tZGRkGBs3bjQkGT/99FOe15GQkGA4Ozsb0dHRdn2kpKQYAQEBRo8ePQzDMIw///zTkGS8++67eV5DbrKysoyKFSsajRo1svvdiY+PN1xcXIzg4GDbts8//9yQZHz99dd2fcTFxRmSjPfff9+27Xq/tznq1q2ba7vXXnvNkGTs2LHDbvvgwYMNi8ViHDlyxDCMG/v9yXlvnjhxwjCMf15DHx8f47777rO79ivlvD5hYWFGVlaWbXtKSopRvnx5o1mzZvle38CBAw2r1Zrrvlq1ahnt27fP93igJGCqCYDb7t5775WLi4u8vb3VpUsXBQQE6LvvvrONnq5bt05t27aVr6+vSpUqJRcXF40aNUrnzp3TmTNn8u37Ro6tW7euGjRoYLetV69eSk5O1p49e+y2P/LII7meb+bMmWrUqJHc3Nzk7OwsFxcXrV27VocPH7a1ueeee3ThwgX17NlT33zzjf78888Cv1bSP6PYbm5utufe3t568MEHtWnTJmVlZRWoztzcfffdtn8ZkCQ3NzfVqlXLNuVHkr777ju1atVKoaGhN1Rzjqvn7Pfo0UPOzs5av369bduvv/6qXr16KSAgwHbPWrZsKUl2r+PVVq9erczMTPXt21eZmZm2h5ubm1q2bKkNGzZIksqWLavq1atr0qRJmjp1qvbu3Ws3JSMvR44c0R9//KFevXrZTdUJDg5Ws2bN7NquWLFCpUuX1oMPPmhXy913362AgABbLbfCunXrVKdOHd1zzz1226OiomQYxjX/SnAjvz85tm7dquTkZD333HN5riST8/r06dPHbvTfy8tLjzzyiLZv365Lly7ley35rVJTVFawAW4ngjeA227+/PmKi4vT3r179ccff2j//v1q3ry5JGnnzp1q3769JGnWrFnasmWL4uLi9MYbb0iSLl++nGe/N3psQEDANX3kbDt37pzd9txWe5g6daoGDx6spk2b6uuvv9b27dsVFxenjh072p2rT58++uSTT/Tbb7/pkUceUfny5dW0aVOtWbMm/xfqOnWmp6fr4sWL160zL35+ftdss1qtdrWfPXv2pj6YeXXtzs7O8vPzs72+Fy9e1P33368dO3bo7bff1oYNGxQXF6clS5ZIyv9+58wxb9KkiVxcXOweX3zxhe0PHIvForVr16pDhw6aOHGiGjVqJH9/f73wwgtKSUnJs/+cGvP7PbmylgsXLsjV1fWaWk6dOnXDf2zl59y5c7ne54oVK9rVnVetOdty+/3JkTONKr97n3OevGrJzs7W+fPn8zzez89Pf//9d67h/K+//lLZsmXzPBYoKZjjDeC2Cw0Nta1qcrVFixbJxcVFK1assBulK8gHrW702FOnTuW57epQmtvo26effqrIyEh98MEHdttzC3P9+/dX//79lZqaqk2bNik2NlZdunTR0aNHFRwcnO915VWnq6urvLy8rlvnzfD399d///vfQh9/6tQpVapUyfY8MzNT586ds72+69at0x9//KENGzbYRrklXXfutSSVK1dOkvTVV19d9zUMDg7W7NmzJUlHjx7V4sWLNXr0aKWnp2vmzJm5HpNTY36/J1fW4ufnp1WrVuXal7e3d/4XcwP8/PyUmJh4zfY//vjDVsuVbuT3J0fO5y3yu/c5r09etTg5OalMmTJ5Hp8zt/vAgQNq2rSpXW1//vmn6tWrl+exQEnBiDcAh8pZpq9UqVK2bZcvX9aCBQtu+bE///yzfvrpJ7ttn332mby9vdWoUaMCnS/nA2859u/fn++KDp6enurUqZPeeOMNpaen6+eff77ueZYsWaK///7b9jwlJUX/+7//q/vvv9/uWm+HTp06af369Tpy5Eihjl+4cKHd88WLFyszM9P2wdOcPxSufh0//PDD6/bdoUMHOTs76/jx4woPD8/1kZtatWrpzTffVFhY2DVTiq4UEhKiwMBAff7553ar4vz222/aunWr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1q5dq3feeUe+vr5ydXWVh4eHAgIC8n09xo0bpzFjxhTilQQAAEBR5vAR73vvvVcWi8X2PCIiQseOHVNWVpYkKTw83K797t27NXfuXHl5edkeHTp0UHZ2tk6cOKF27dopODhY1apVU58+fbRw4UJdunQp13MfPnxYzs7OdueoXbu2SpcubXe+ixcvys/Pz+6cJ06c0PHjx23tqlSpYgvdkhQYGGg3cl5QI0aMUFJSku1x8uTJG+4DAAAARY/DR7yvx9PT0+55dna2nnnmGb3wwgvXtL3rrrvk6uqqPXv2aMOGDfr+++81atQojR49WnFxcXaBWpJtLvmVwf9q2dnZCgwM1IYNG67Zd2V/V6+UYrFYlJ2dfZ2ru5bVarWNrAMAAKDkcHjw3r59+zXPa9asqVKlSuXavlGjRvr5559Vo0aNPPt0dnZW27Zt1bZtW8XGxqp06dJat26dunfvbtcuNDRUmZmZ2rVrl+655x5J0pEjR3ThwgW78506dUrOzs6qUqVK4S5Skqurq20UHwAAAHceh081OXnypIYOHaojR47o888/17///W+9+OKLebZ/9dVXtW3bNj3//PPat2+fjh07puXLlys6OlqStGLFCr333nvat2+ffvvtN82fP1/Z2dkKCQm5pq+QkBB17NhRAwcO1I4dO7R7924NGDBA7u7utjZt27ZVRESEunXrptWrVys+Pl5bt27Vm2++qV27dhX4OqtUqaIdO3YoPj5ef/75Z6FGwwEAAFB8OTx49+3bV5cvX9Y999yj559/XtHR0bYPLOamfv362rhxo44dO6b7779fDRs21MiRIxUYGCjpn+kfS5YsUevWrRUaGqqZM2fq888/V926dXPtb86cOQoKClLLli3VvXt327KBOSwWi7799lu1aNFCTz31lGrVqqUnnnhC8fHxqlChQoGvc9iwYSpVqpTq1Kkjf39/JSQkFPhYAAAAFH8WI2eiswPwbY7Xl5ycLF9fXwXFLJaT1cPR5aCEix/f2dElAABQ7OTktaSkJPn4+OTZzuEj3gAAAMCdgOANAAAAmMChq5rktkQfAAAAUBIx4g0AAACYgOANAAAAmIDgDQAAAJiA4A0AAACYwOFfGY+COTimQ77rQgIAAKBoY8QbAAAAMAHBGwAAADABwRsAAAAwAcEbAAAAMAHBGwAAADABwRsAAAAwAcsJFhP1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dHS0IiIiJEnbtm3TSy+9pPj4eL399tu3tEgAAACguCtU8P7ggw80a9Ys9ezZ07btoYceUv369RUdHU3wBgAAAK5SqKkmWVlZCg8Pv2Z748aNlZmZedNFAQAAACVNoZYTjI6OlouLi6ZOnWq3fdiwYbp8+bL+53/+55YVeKcr6PI0AAAAcIxbvpzgld9SabFY9PHHH+v777/XvffeK0navn27Tp48qb59+95E2QAAAEDJVODgvXfvXrvnjRs3liQdP35ckuTv7y9/f3/9/PPPt7A8AAAAoGQocPBev3797awDAAAAKNFu+gt0AAAAAFxfoZYTlKS4uDh9+eWXSkhIUHp6ut2+JUuW3HRhAAAAQElSqBHvRYsWqXnz5jp06JCWLl2qjIwMHTp0SOvWrZOvr++trhEAAAAo9go14v2vf/1L06ZN0/PPPy9vb29Nnz5dVatW1TPPPKPAwMBbXSMk1YtdLSerh6PLQAHEj+/s6BIAAEARVKgR7+PHj6tz53/ChdVqVWpqqiwWi1566SV99NFHt7RAAAAAoCQoVPAuW7asUlJSJEmVKlXSwYMHJUkXLlzQpUuXbl11AAAAQAlRqKkm999/v9asWaOwsDD16NFDL774otatW6c1a9aoTZs2t7pGAAAAoNgrVPCeMWOG/v77b0nSiBEj5OLioh9//FHdu3fXyJEjb2mBAAAAQElgMQzDcHQRyFtycrJ8fX0VFLOYD1cWE3y4EgCAO0tOXktKSpKPj0+e7Qo84p2cnFzgk+d3QgAAAOBOVODgXbp0aVkslnzbGIYhi8WirKysmy4MAAAAKEkKHLzXr19/O+sAAAAASrQCB++WLVvezjpui8jISN1999169913HV0KAAAA7nCFWtUkx6VLl5SQkKD09HS77fXr17+pogAAAICSplDB++zZs+rfv7++++67XPczxxsAAACwV6hvroyJidH58+e1fft2ubu7a9WqVZo3b55q1qyp5cuX3+oab0p2draGDx+usmXLKiAgQKNHj7btS0hIUNeuXeXl5SUfHx/16NFDp0+ftu2PiopSt27d7PqLiYlRZGSk7flXX32lsLAwubu7y8/PT23btlVqaqpt/5w5cxQaGio3NzfVrl1b77///u26VAAAABRhhRrxXrdunb755hs1adJETk5OCg4OVrt27eTj46Nx48apc+eis47xvHnz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",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "def graficar_topico(modelo, vocabulario, indice_topico, numero_palabras=10):\n",
        "    distribucion_palabras = modelo.components_[indice_topico]\n",
        "    indices_ordenados = distribucion_palabras.argsort()[::-1]\n",
        "    indices_top = indices_ordenados[:numero_palabras]\n",
        "\n",
        "    palabras = vocabulario[indices_top]\n",
        "    pesos = distribucion_palabras[indices_top]\n",
        "\n",
        "    plt.figure(figsize=(8, 5))\n",
        "    plt.barh(palabras[::-1], pesos[::-1])\n",
        "    plt.title(f\"Palabras principales del tópico {indice_topico}\")\n",
        "    plt.xlabel(\"Peso\")\n",
        "    plt.ylabel(\"Palabra\")\n",
        "    plt.show()\n",
        "\n",
        "# Ejemplo: mostramos el tópico 0\n",
        "graficar_topico(modelo_lda, vocabulario, indice_topico=0, numero_palabras=10)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 33,
      "id": "4d35b915",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "4d35b915",
        "outputId": "2285c7d9-050c-4875-de54-aff7e255ab02"
      },
      "outputs": [
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHVCAYAAADGu/wBAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUF9JREFUeJzt3X98zfX///H7mW1nv4cZG9b8nmGESaOY30SRSiFMoZTVkpSKoXr7TXr7lJL8SkmFfCiS3/k5v0K8kax51/xIbDPaz9f3j747H4dtZnidbW7Xy+Vc2nm9nq/n6/E6r50u9z09z/NYDMMwBAAAAOC2cnJ0AQAAAMCdgOANAAAAmIDgDQAAAJiA4A0AAACYgOANAAAAmIDgDQAAAJiA4A0AAACYgOANAAAAmIDgDQAAAJiA4A0AQDGSlJSk6tWrq1+/fo4uBcANIngDuG3mzp0ri8Viezg7O6ty5crq37+/fv/99xvuLzIyUpGRkYWqpUqVKurSpUuhji1uRo8eLYvFctv6j4+Pl8Vi0dy5c2/bOaTbfx03IioqSlWqVCnUsQX9vX3//fcL9JpGRUWpevXq+vjjjwtVj/R/7834+PhC91FY//73v1W7dm1ZrVZVrVpVY8aMUUZGhul1AI7g7OgCAJR8c+bMUe3atXX58mVt2rRJ48aN08aNG3XgwAF5eno6urwSZ8CAAerYseNt6z8wMFDbtm1T9erVb9s57kTvv/++ypUrp6ioqDzbTJkyRfHx8dq0aZNcXFwKfa7OnTtr27ZtCgwMLHQfhfHOO+9o5MiReu2119S+fXvFxcXpzTff1O+//66PPvrI1FoARyB4A7jt6tWrp/DwcElSq1atlJWVpbfeekvLli1T7969HVzd9WVkZNhG7IuyS5cuycPDQ5UrV1blypVv23msVqvuvffe29Y/8vbyyy/r5Zdfvul+/P395e/vfwsqKrhz587p7bff1sCBA/Wvf/1L0j//GpCRkaE333xTMTExqlOnjqk1AWZjqgkA0+WEtt9++02SNGbMGDVt2lRly5aVj4+PGjVqpNmzZ8swjOv2daPHLl26VPXr15ebm5uqVaum9957z27/hg0bZLFYtGDBAr388suqVKmSrFarfvnlF509e1bPPfec6tSpIy8vL5UvX16tW7fW5s2brznPBx98oAYNGsjLy0ve3t6qXbu2Xn/99XyvJWcKx8SJE/XOO+/orrvukpubm8LDw7V27Vq7tjnTMPbs2aNHH31UZcqUsY1A5zZFI2eqzapVq9SoUSO5u7urdu3a+uSTT66p4/fff9egQYMUFBQkV1dXVaxYUY8++qhOnz5tV+eV0yJyzrl37151795dPj4+8vX11ZNPPqmzZ8/a9f/FF1+offv2CgwMlLu7u0JDQ/Xaa68pNTU139fnyuMjIiLk6ekpLy8vdejQQXv37rVr8+uvv+qJJ55QxYoVZbVaVaFCBbVp00b79u27bv9z585VSEiIrFarQkNDNX/+/Fzbpaen6+2337ZNm/D391f//v2vud6CqFKlin7++Wdt3LjRNjXryqktCQkJevLJJ1W+fHlbXVOmTFF2dratzY38/uQ11WTVqlVq06aNfH195eHhodDQUI0bN86uzfLlyxURESEPDw95e3urXbt22rZt23WvcdWqVfr777/Vv39/u+39+/eXYRhatmxZwV4soBgr2sM3AEqkX375RZJsI27x8fF65plndNddd0mStm/frujoaP3+++8aNWpUvn3dyLH79u1TTEyMRo8erYCAAC1cuFAvvvii0tPTNWzYMLu2I0aMUEREhGbOnCknJyeVL1/eFqhiY2MVEBCgixcvaunSpYqMjNTatWtt83gXLVqk5557TtHR0Zo8ebKcnJz0yy+/6NChQwV6fWbMmKHg4GC9++67ys7O1sSJE9WpUydt3LhRERERdm27d++uJ554Qs8+++x1g+tPP/2kl19+Wa+99poqVKigjz/+WE8//bRq1KihFi1aSPondDdp0kQZGRl6/fXXVb9+fZ07d06rV6/W+fPnVaFChXzP8fDDD6tHjx569tln9fPPP2vkyJE6dOiQduzYYZsacezYMT3wwAOKiYmRp6en/vOf/2jChAnauXOn1q1bl2////rXv/Tmm2+qf//+evPNN5Wenq5Jkybp/vvv186dO20jpg888ICysrI0ceJE3XXXXfrzzz+1detWXbhwId/+586dq/79+6tr166aMmWKkpKSNHr0aKWlpcnJ6f/GqrKzs9W1a1dt3rxZw4cPV7NmzfTbb78pNjZWkZGR2rVrl9zd3fM915WWLl2qRx99VL6+vnr//fcl/fMvC5J09uxZNWvWTOnp6XrrrbdUpUoVrVixQsOGDdPx48dt7XPcyO/PlWbPnq2BAweqZcuWmjlzpsqXL6+jR4/q4MGDtjafffaZevfurfbt2+vzzz9XWlqaJk6caHsP3HfffXn2n9NPWFiY3fbAwECVK1fO7jxAiWUAwG0yZ84cQ5Kxfft2IyMjw0hJSTFWrFhh+Pv7G97e3sapU6euOSYrK8vIyMgwxo4da/j5+RnZ2dm2fS1btjRatmyZ5/nyOzY4ONiwWCzGvn377I5p166d4ePjY6SmphqGYRjr1683JBktWrS47vVlZmYaGRkZRps2bYyHH37Ytn3IkCFG6dKlr3v81U6cOGFIMipWrGhcvnzZtj05OdkoW7as0bZtW9u22NhYQ5IxatSoa/rJ2Xel4OBgw83Nzfjtt99s2y5fvmyULVvWeOaZZ2zbnnrqKcPFxcU4dOjQdeucM2fONed86aWX7NouXLjQkGR8+umnufaVnZ1tZGRkGBs3bjQkGT/99FOe15GQkGA4Ozsb0dHRdn2kpKQYAQEBRo8ePQzDMIw///zTkGS8++67eV5DbrKysoyKFSsajRo1svvdiY+PN1xcXIzg4GDbts8//9yQZHz99dd2fcTFxRmSjPfff9+27Xq/tznq1q2ba7vXXnvNkGTs2LHDbvvgwYMNi8ViHDlyxDCMG/v9yXlvnjhxwjCMf15DHx8f47777rO79ivlvD5hYWFGVlaWbXtKSopRvnx5o1mzZvle38CBAw2r1Zrrvlq1ahnt27fP93igJGCqCYDb7t5775WLi4u8vb3VpUsXBQQE6LvvvrONnq5bt05t27aVr6+vSpUqJRcXF40aNUrnzp3TmTNn8u37Ro6tW7euGjRoYLetV69eSk5O1p49e+y2P/LII7meb+bMmWrUqJHc3Nzk7OwsFxcXrV27VocPH7a1ueeee3ThwgX17NlT33zzjf78888Cv1bSP6PYbm5utufe3t568MEHtWnTJmVlZRWoztzcfffdtn8ZkCQ3NzfVqlXLNuVHkr777ju1atVKoaGhN1Rzjqvn7Pfo0UPOzs5av369bduvv/6qXr16KSAgwHbPWrZsKUl2r+PVVq9erczMTPXt21eZmZm2h5ubm1q2bKkNGzZIksqWLavq1atr0qRJmjp1qvbu3Ws3JSMvR44c0R9//KFevXrZTdUJDg5Ws2bN7NquWLFCpUuX1oMPPmhXy913362AgABbLbfCunXrVKdOHd1zzz1226OiomQYxjX/SnAjvz85tm7dquTkZD333HN5riST8/r06dPHbvTfy8tLjzzyiLZv365Lly7ley35rVJTVFawAW4ngjeA227+/PmKi4vT3r179ccff2j//v1q3ry5JGnnzp1q3769JGnWrFnasmWL4uLi9MYbb0iSLl++nGe/N3psQEDANX3kbDt37pzd9txWe5g6daoGDx6spk2b6uuvv9b27dsVFxenjh072p2rT58++uSTT/Tbb7/pkUceUfny5dW0aVOtWbMm/xfqOnWmp6fr4sWL160zL35+ftdss1qtdrWfPXv2pj6YeXXtzs7O8vPzs72+Fy9e1P33368dO3bo7bff1oYNGxQXF6clS5ZIyv9+58wxb9KkiVxcXOweX3zxhe0PHIvForVr16pDhw6aOHGiGjVqJH9/f73wwgtKSUnJs/+cGvP7PbmylgsXLsjV1fWaWk6dOnXDf2zl59y5c7ne54oVK9rVnVetOdty+/3JkTONKr97n3OevGrJzs7W+fPn8zzez89Pf//9d67h/K+//lLZsmXzPBYoKZjjDeC2Cw0Nta1qcrVFixbJxcVFK1assBulK8gHrW702FOnTuW57epQmtvo26effqrIyEh98MEHdttzC3P9+/dX//79lZqaqk2bNik2NlZdunTR0aNHFRwcnO915VWnq6urvLy8rlvnzfD399d///vfQh9/6tQpVapUyfY8MzNT586ds72+69at0x9//KENGzbYRrklXXfutSSVK1dOkvTVV19d9zUMDg7W7NmzJUlHjx7V4sWLNXr0aKWnp2vmzJm5HpNTY36/J1fW4ufnp1WrVuXal7e3d/4XcwP8/PyUmJh4zfY//vjDVsuVbuT3J0fO5y3yu/c5r09etTg5OalMmTJ5Hp8zt/vAgQNq2rSpXW1//vmn6tWrl+exQEnBiDcAh8pZpq9UqVK2bZcvX9aCBQtu+bE///yzfvrpJ7ttn332mby9vdWoUaMCnS/nA2859u/fn++KDp6enurUqZPeeOMNpaen6+eff77ueZYsWaK///7b9jwlJUX/+7//q/vvv9/uWm+HTp06af369Tpy5Eihjl+4cKHd88WLFyszM9P2wdOcPxSufh0//PDD6/bdoUMHOTs76/jx4woPD8/1kZtatWrpzTffVFhY2DVTiq4UEhKiwMBAff7553ar4vz222/aunWr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1q5dq3feeUe+vr5ydXWVh4eHAgIC8n09xo0bpzFjxhTilQQAAEBR5vAR73vvvVcWi8X2PCIiQseOHVNWVpYkKTw83K797t27NXfuXHl5edkeHTp0UHZ2tk6cOKF27dopODhY1apVU58+fbRw4UJdunQp13MfPnxYzs7OdueoXbu2SpcubXe+ixcvys/Pz+6cJ06c0PHjx23tqlSpYgvdkhQYGGg3cl5QI0aMUFJSku1x8uTJG+4DAAAARY/DR7yvx9PT0+55dna2nnnmGb3wwgvXtL3rrrvk6uqqPXv2aMOGDfr+++81atQojR49WnFxcXaBWpJtLvmVwf9q2dnZCgwM1IYNG67Zd2V/V6+UYrFYlJ2dfZ2ru5bVarWNrAMAAKDkcHjw3r59+zXPa9asqVKlSuXavlGjRvr5559Vo0aNPPt0dnZW27Zt1bZtW8XGxqp06dJat26dunfvbtcuNDRUmZmZ2rVrl+655x5J0pEjR3ThwgW78506dUrOzs6qUqVK4S5Skqurq20UHwAAAHceh081OXnypIYOHaojR47o888/17///W+9+OKLebZ/9dVXtW3bNj3//PPat2+fjh07puXLlys6OlqStGLFCr333nvat2+ffvvtN82fP1/Z2dkKCQm5pq+QkBB17NhRAwcO1I4dO7R7924NGDBA7u7utjZt27ZVRESEunXrptWrVys+Pl5bt27Vm2++qV27dhX4OqtUqaIdO3YoPj5ef/75Z6FGwwEAAFB8OTx49+3bV5cvX9Y999yj559/XtHR0bYPLOamfv362rhxo44dO6b7779fDRs21MiRIxUYGCjpn+kfS5YsUevWrRUaGqqZM2fq888/V926dXPtb86cOQoKClLLli3VvXt327KBOSwWi7799lu1aNFCTz31lGrVqqUnnnhC8fHxqlChQoGvc9iwYSpVqpTq1Kkjf39/JSQkFPhYAAAAFH8WI2eiswPwbY7Xl5ycLF9fXwXFLJaT1cPR5aCEix/f2dElAABQ7OTktaSkJPn4+OTZzuEj3gAAAMCdgOANAAAAmMChq5rktkQfAAAAUBIx4g0AAACYgOANAAAAmIDgDQAAAJiA4A0AAACYwOFfGY+COTimQ77rQgIAAKBoY8QbAAAAMAHBGwAAADABwRsAAAAwAcEbAAAAMAHBGwAAADABwRsAAAAwAcsJFhP1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dHS0IiIiJEnbtm3TSy+9pPj4eL399tu3tEgAAACguCtU8P7ggw80a9Ys9ezZ07btoYceUv369RUdHU3wBgAAAK5SqKkmWVlZCg8Pv2Z748aNlZmZedNFAQAAACVNoZYTjI6OlouLi6ZOnWq3fdiwYbp8+bL+53/+55YVeKcr6PI0AAAAcIxbvpzgld9SabFY9PHHH+v777/XvffeK0navn27Tp48qb59+95E2QAAAEDJVODgvXfvXrvnjRs3liQdP35ckuTv7y9/f3/9/PPPt7A8AAAAoGQocPBev3797awDAAAAKNFu+gt0AAAAAFxfoZYTlKS4uDh9+eWXSkhIUHp6ut2+JUuW3HRhAAAAQElSqBHvRYsWqXnz5jp06JCWLl2qjIwMHTp0SOvWrZOvr++trhEAAAAo9go14v2vf/1L06ZN0/PPPy9vb29Nnz5dVatW1TPPPKPAwMBbXSMk1YtdLSerh6PLQAHEj+/s6BIAAEARVKgR7+PHj6tz53/ChdVqVWpqqiwWi1566SV99NFHt7RAAAAAoCQoVPAuW7asUlJSJEmVKlXSwYMHJUkXLlzQpUuXbl11AAAAQAlRqKkm999/v9asWaOwsDD16NFDL774otatW6c1a9aoTZs2t7pGAAAAoNgrVPCeMWOG/v77b0nSiBEj5OLioh9//FHdu3fXyJEjb2mBAAAAQElgMQzDcHQRyFtycrJ8fX0VFLOYD1cWE3y4EgCAO0tOXktKSpKPj0+e7Qo84p2cnFzgk+d3QgAAAOBOVODgXbp0aVkslnzbGIYhi8WirKysmy4MAAAAKEkKHLzXr19/O+sAAAAASrQCB++WLVvezjpui8jISN1999169913HV0KAAAA7nCFWtUkx6VLl5SQkKD09HS77fXr17+pogAAAICSplDB++zZs+rfv7++++67XPczxxsAAACwV6hvroyJidH58+e1fft2ubu7a9WqVZo3b55q1qyp5cuX3+oab0p2draGDx+usmXLKiAgQKNHj7btS0hIUNeuXeXl5SUfHx/16NFDp0+ftu2PiopSt27d7PqLiYlRZGSk7flXX32lsLAwubu7y8/PT23btlVqaqpt/5w5cxQaGio3NzfVrl1b77///u26VAAAABRhhRrxXrdunb755hs1adJETk5OCg4OVrt27eTj46Nx48apc+eis47xvHnz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",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAHVCAYAAAAzRXexAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR3BJREFUeJzt3Xl8TXf+x/H3jSQ3e0iaiCUSaicooWNN1D60tlaLllCqC7UUUy2SMJ2o2mo6pUUtrVbVNq2OJYOgVRq1VMswVMQoQw1JbEkk5/dHH7m/3kZCjsRN5PV8PM7j0XvO93zP59x79PH29b3fazEMwxAAAACAAnNydAEAAABASUWYBgAAAEwiTAMAAAAmEaYBAAAAkwjTAAAAgEmEaQAAAMAkwjQAAABgEmEaAAAAMIkwDQAAAJhEmAYAwMFSUlL04IMPauDAgY4uBUABEaYBFMiSJUtksVhsm7OzsypXrqxBgwbpzJkzBe4vMjJSkZGRpmoJDQ1Vt27dTJ1b0sTExMhisRRZ/0lJSbJYLFqyZEmRXUMq+vsoiKioKIWGhpo6906f23ffffeO3tOoqCg9+OCDWrhwoal6pP//s5mUlGS6DzPmzJmjXr16qWrVqrJYLKb/PAMllbOjCwBQMi1evFi1a9fW9evXtWPHDsXFxWn79u06dOiQPD09HV3efWfIkCHq3LlzkfVfoUIFffPNN3rwwQeL7Bql0bvvvqsHHnhAUVFRebaZOXOmkpKStGPHDrm4uJi+VteuXfXNN9+oQoUKpvswY/78+fL09NQjjzyiL7744p5eGygOCNMATKlfv77Cw8MlSW3btlVWVpamTp2qdevWqX///g6u7vYyMzNtI+vF2bVr1+Th4aHKlSurcuXKRXYdq9WqP/zhD0XWP/L2yiuv6JVXXrnrfgICAhQQEFAIFRXM4cOH5eT06z90169f/55fH3A0pnkAKBQ5QezUqVOSpNjYWD388MPy8/OTj4+PGjdurEWLFskwjNv2VdBz165dqwYNGsjNzU3VqlXT3Llz7Y4nJCTIYrHoww8/1CuvvKJKlSrJarXq+PHjunDhgl588UXVrVtXXl5eCgwM1COPPKKdO3fmus68efPUsGFDeXl5ydvbW7Vr19Zrr72W773kTJ+YPn263njjDVWpUkVubm4KDw/Xli1b7NrmTIHYt2+fHn/8cZUrV842Unyr6RE501w2btyoxo0by93dXbVr19YHH3yQq44zZ87oueeeU3BwsFxdXVWxYkU9/vjj+u9//2tX52+nJORcc//+/erVq5d8fHzk6+urp59+WhcuXLDr/9NPP1XHjh1VoUIFubu7q06dOnr11Vd19erVfN+f357fvHlzeXp6ysvLS506ddL+/fvt2vz000966qmnVLFiRVmtVpUvX17t2rXTgQMHbtv/kiVLVKtWLVmtVtWpU0fLli27ZbuMjAz9+c9/Vu3atWW1WhUQEKBBgwblut87ERoaqh9//FHbt2+3TYv67bSS5ORkPf300woMDLTVNXPmTGVnZ9vaFOT5yWuax8aNG9WuXTv5+vrKw8NDderUUVxcnF2bzz//XM2bN5eHh4e8vb3VoUMHffPNN3d0nzlBGiitiveQDIAS4/jx45JkGxlLSkrSsGHDVKVKFUnS7t27NWLECJ05c0aTJ0/Ot6+CnHvgwAGNGjVKMTExCgoK0vLlyzVy5EhlZGRo7Nixdm0nTJig5s2ba/78+XJyclJgYKAtJEVHRysoKEhXrlzR2rVrFRkZqS1bttjmf65YsUIvvviiRowYoRkzZsjJyUnHjx/X4cOH7+j9eeeddxQSEqI5c+YoOztb06dPV5cuXbR9+3Y1b97crm2vXr301FNP6fnnn79tGD148KBeeeUVvfrqqypfvrwWLlyoZ599VtWrV1ebNm0k/RqkmzZtqszMTL322mtq0KCBLl68qE2bNunSpUsqX758vtfo2bOn+vTpo+eff14//vijJk2apMOHD2vPnj22aQn//ve/9cc//lGjRo2Sp6en/vWvf+nNN9/Ut99+q61bt+bb/1/+8hdNnDhRgwYN0sSJE5WRkaG33npLrVu31rfffqu6detKkv74xz8qKytL06dPV5UqVfTLL79o165dunz5cr79L1myRIMGDVL37t01c+ZMpaSkKCYmRunp6XZBMDs7W927d9fOnTs1fvx4tWjRQqdOnVJ0dLQiIyO1d+9eubu753ut31q7dq0ef/xx+fr66t1335X0678ASNKFCxfUokULZWRkaOrUqQoNDdX69es1duxYnThxwtY+R0Gen99atGiRhg4dqoiICM2fP1+BgYE6duyYfvjhB1ubjz/+WP3791fHjh31ySefKD09XdOnT7f9GWjVqtUd3zNQKhkAUACLFy82JBm7d+82MjMzjbS0NGP9+vVGQECA4e3tbZw7dy7XOVlZWUZmZqYxZcoUw9/f38jOzrYdi4iIMCIiIvK8Xn7nhoSEGBaLxThw4IDdOR06dDB8fHyMq1evGoZhGNu2bTMkGW3atLnt/d28edPIzMw02rVrZ/Ts2dO2f/jw4UbZsmVve/7vnTx50pBkVKxY0bh+/bptf2pqquHn52e0b9/eti86OtqQZEyePDlXPznHfiskJMRwc3MzTp06Zdt3/fp1w8/Pzxg2bJht3+DBgw0XFxfj8OHDt61z8eLFua45evRou7bLly83JBkfffTRLfvKzs42MjMzje3btxuSjIMHD+Z5H8nJyYazs7MxYsQIuz7S0tKMoKAgo0+fPoZhGMYvv/xiSDLmzJmT5z3cSlZWllGxYkWjcePGds9OUlKS4eLiYoSEhNj2ffLJJ4YkY/Xq1XZ9JCYmGpKMd99917bvds9tjnr16t2y3auvvmpIMvbs2WO3/4UXXjAsFotx9OhRwzAK9vzk/Nk8efKkYRi/voc+Pj5Gq1at7O79t3Len7CwMCMrK8u2Py0tzQgMDDRatGhx23u8k/sF7mf82wwAU/7whz/IxcVF3t7e6tatm4KCgrRhwwbbKOfWrVvVvn17+fr6qkyZMnJxcdHkyZN18eJFnT9/Pt++C3JuvXr11LBhQ7t9/fr1U2pqqvbt22e3v3fv3re83vz589W4cWO5ubnJ2dlZLi4u2rJli44cOWJr06xZM12+fFl9+/bV3//+d/3yyy93/F5Jv442u7m52V57e3vr0Ucf1Y4dO5SVlXVHdd5Ko0aNbCP4kuTm5qaaNWvapttI0oYNG9S2bVvVqVOnQDXn+P0c+D59+sjZ2Vnbtm2z7fvpp5/Ur18/BQUF2T6ziIgISbJ7H39v06ZNunnzpgYMGKCbN2/aNjc3N0VERCghIUGS5OfnpwcffFBvvfWWZs2apf3799tNh8jL0aNH9fPPP6tfv35202RCQkLUokULu7br169X2bJl9eijj9rV0qhRIwUFBdlqKQxbt25V3bp11axZM7v9UVFRMgwj12h+QZ6fHLt27VJqaqpefPHFPFdQyXl/nnnmGbtRei8vL/Xu3Vu7d+/WtWvXzN4mUCoQpgGYsmzZMiUmJmr//v36+eef9f3336tly5aSpG+//VYdO3aUJC1YsEBff/21EhMT9frrr0uSrl+/nme/BT03KCgoVx85+y5evGi3/1arHMyaNUsvvPCCHn74Ya1evVq7d+9WYmKiOnfubHetZ555Rh988IFOnTql3r17KzAwUA8//LDi4+Pzf6NuU2dGRoauXLly2zrz4u/vn2uf1Wq1q/3ChQt39eXF39fu7Owsf39/2/t75coVtW7dWnv27NGf//xnJSQkKDExUWvWrJGU/+edM2e7adOmcnFxsds+/fRT219aLBaLtmzZok6dOmn69Olq3LixAgIC9PLLLystLS3P/nNqzO85+W0tly9flqura65azp07V+C/QOXn4sWLt/ycK1asaFd3XrXm7LvV85MjZwpTfp99znXyqiU7O1uXLl3K83wAzJkGYFKdOnVsq3n83ooVK+Ti4qL169fbjaatW7futv0W9Nxz587lue/3QfNWo3MfffSRIiMjNW/ePLv9twpogwYN0qBBg3T16lXt2LFD0dHR6tatm44dO6aQkJB87yuvOl1dXeXl5XXbOu9GQECA/vOf/5g+/9y5c6pUqZLt9c2bN3Xx4kXb+7t161b9/PPPSkhIsI1GS7rtXGZJeuCBByRJq1atuu17GBISokWLFkmSjh07ppUrVyomJkYZGRmaP3/+Lc/JqTG/5+S3tfj7+2vjxo237Mvb2zv/mykAf39/nT17Ntf+n3/+2VbLbxXk+cmR8/2F/D77nPcnr1qcnJxUrly5PM8HwMg0gCKQs+RcmTJlbPuuX7+uDz/8sNDP/fHHH3Xw4EG7fR9//LG8vb3VuHHjO7pezpfCcnz//ff5rmTg6empLl266PXXX1dGRoZ+/PHH215nzZo1unHjhu11WlqavvjiC7Vu3druXotCly5dtG3bNh09etTU+cuXL7d7vXLlSt28edP25cyc8P/79/G99967bd+dOnWSs7OzTpw4ofDw8Ftut1KzZk1NnDhRYWFhuabz/FatWrVUoUIFffLJJ3arwZw6dUq7du2ya9utWzddvHhRWVlZt6yjVq1at72f3/v9vxLkaNeunQ4fPpyr9mXLlslisaht27Z2+808Py1atJCvr6/mz5+f50o4tWrVUqVKlfTxxx/btbl69apWr15tW+EDQN4YmQZQ6Lp27apZs2apX79+eu6553Tx4kXNmDEjV9gqjHMrVqyoxx57TDExMapQoYI++ugjxcfH680337yjENCt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7dW8eXP16NFDmzZtUlJSknbt2qWJEydq7969ji4PAAAA9xhhugAsFov+8Y9/qE2bNho8eLBq1qypp556SklJSSpfvryjywMAAMA9ZjEMw3B0EaVNamrqr6t6jFopJ6uHo8sBAKBIJU3r6ugSgALLyWspKSny8fHJsx0j0wAAAIBJhGkAAADAJMI0AAAAYBJhGgAAADCJMA0AAACYRJgGAAAATCJMAwAAACbxc+IO9ENsp3zXLQQAAEDxxsg0AAAAYBJhGgAAADCJMA0AAACYRJgGAAAATCJMAwAAACYRpgEAAACTWBrPgepHb5KT1cPRZQAASpmkaV0dXQJw32BkGgAAADCJMA0AAACYRJgGAAAATCJMAwAAACYRpgEAAACTCNMAAACASYRpAAAAwCTCNAAAAGASYRoAAAAwiTANAAAAmESYBgAAAEwiTAMAAAAm3fdh+osvvlDZsmWVnZ0tSTpw4IAsFovGjRtnazNs2DD17dtXFy9eVN++fVW5cmV5eHgoLCxMn3zyia3dsmXL5O/vr/T0dLtr9O7dWwMGDLg3NwQAAIBi474P023atFFaWpr2798vSdq+fbseeOABbd++3dYmISFBERERunHjhpo0aaL169frhx9+0HPPPadnnnlGe/bskSQ98cQTysrK0ueff24795dfftH69es1aNCgPGtIT09Xamqq3QYAAICS774P076+vmrUqJESEhIk/RqcR48erYMHDyotLU3nzp3TsWPHFBkZqUqVKmns2LFq1KiRqlWrphEjRqhTp0767LPPJEnu7u7q16+fFi9ebOt/+fLlqly5siIjI/OsIS4uTr6+vrYtODi4KG8ZAAAA98h9H6YlKTIyUgkJCTIMQzt37lT37t1Vv359ffXVV9q2bZvKly+v2rVrKysrS2+88YYaNGggf39/eXl5afPmzUpOTrb1NXToUG3evFlnzpyRJC1evFhRUVGyWCx5Xn/ChAlKSUmxbadPny7yewYAAEDRc3Z0AfdCZGSkFi1apIMHD8rJyUl169ZVRESEtm/frkuXLikiIkKSNHPmTM2ePVtz5sxRWFiYPD09NWrUKGVkZNj6euihh9SwYUMtW7ZMnTp10qFDh/TFF1/ke32r1Sqr1Vqk9wgAAIB7r1SE6Zx503PmzFFERIQsFosiIiIUFxenS5cuaeTIkZJkG7V++umnJUnZ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",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "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hOR4PX/3939VyNa6dWsdOHDgutoXLFggi8Wili1b2u3PzfPTtGlT+fr6atasWTddmSckJETlypXTokWL7NpcuXJFy5cvt604civr1q1Tx44d9cADD2jVqlUs2Ycih5FsAHdNRESEpkyZom7duqlfv346f/68Jk2adFv/53unfcuWLavHHntMY8eOVZkyZfTRRx9p/fr1mjBhQo7hQLoWrMaNG6cxY8YoLCxMCQkJev3111WpUiVlZGTY2vXt21fu7u5q1qyZypQpo9OnTys6Olq+vr667777cjxPsWLF1LZtWw0fPlxZWVmaMGGCUlJSFBUVlWPff+r111/XV199pRYtWujll19WnTp1dPHiRa1Zs0bDhw9X9erVb9l/xYoVcnZ2Vtu2bW2ri9SrV09dunSRdC3MlShRQgMGDNCYMWPk4uKihQsXXvfLz41UrFhRr7/+ul555RX98ssvevDBB1WiRAn99ttv+uGHH+Tp6amoqCjt3btXgwYN0pNPPqng4GC5uroqLi5Oe/fu1ciRI296fCcnJ40bN059+vTR448/rr59++rixYu21Wj+6umnn9bChQv18MMPa+jQoWrUqJFcXFz0v//9Txs3blSHDh30+OOP38Yd///q1KmjJUuW6OOPP1blypXl5uamOnXq6IUXXtCCBQsUERGh119/XUFBQfriiy/07rvv6rnnnlO1atXsjpOb58fLy0uTJ09Wnz591KZNG/Xt21elS5fWkSNHtGfPHs2YMUNOTk6aOHGiunfvrkceeUT9+/dXamqq3n77bV28eFHjx4+/5fV999136tixowICAvTyyy9ft5xizZo15ePjc0f3DChwHPu5SwCFRfYKBtu3b79lu7lz5xohISGG1Wo1KleubERHRxsffPCB3eoHhnHjVRput29QUJARERFhLFu2zKhVq5bh6upqVKxY0ZgyZYrd8bJXF/nkk0+uqzM1NdUYMWKEUa5cOcPNzc0IDQ01Vq1aZfTs2dNu5Yn58+cbLVu2NEqXLm24uroaZcuWNbp06WLs3bv3lvche3WICRMmGFFRUUb58uUNV1dXo0GDBsbatWvt2mavvHH27NnrjnOz1UUiIiKua3uje5qUlGT07t3bCAgIMFxcXGz1//bbb3Z13mh1kR07dhiPPvqo4eXlZXh7extdu3a19cu2efNmo0mTJoaHh4fh7+9v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AAAAgMkI2QAAAIDJCNkAAACAyVjCL5+pPWatnKweji4DAAA4QOL4CEeXAJMwkg0AAACYjJANAAAAmIyQDQAAAJiMkA0AAACYjJANAAAAmIyQDQAAAJiMkA0AAACYjJANAAAAmKzQheyKFSvqnXfecXQZAAAAKMIKXcg2Q2RkpDp27OjoMgAAAFBAEbIBAAAAkxW4kB0eHq5BgwZp0KBBKl68uPz8/DR69GgZhmFr88cff6h3797y9vZWhQoV9P7779sdY9++fWrVqpXc3d3l5+enfv366fLly5KksWPHav78+fr0009lsVhksVgUHx+fYz9Jio+PV6NGjeTp6anixYurWbNmOn78eN7fFAAAAOQrBS5kS9L8+fPl7Oysbdu2adq0aYqJidGcOXNs70+ePFkNGzbUrl279Pzzz+u5557ToUOHJF0L4A8++KBKlCih7du365NPPtHXX3+tQYMGSZJGjBihLl266MEHH9SpU6d06tQpNW3aNMd+GRkZ6tixo8LCwrR3715t2bJF/fr1k8ViueE1pKamKiUlxW4DAABA4eDs6AJyIzAwUDExMbJYLAoJCdG+ffsUExOjvn37SpIefvhhPf/885Kkl156STExMYqPj1f16tW1cOFCXb16VQsWLJCnp6ckacaMGXr00Uc1YcIElS5dWu7u7kpNTVVAQIDtnPPnz79lPxcXFyUnJ+uRRx5RlSpVJEk1atS46TVER0crKioqT+4PAAAAHKtAjmQ3btzYboS4SZMmOnz4sDIzMyVJdevWtb1nsVgUEBCgM2fOSJIOHjyoevXq2YKyJDVr1kxZWVlKSEi46Tlz6leyZElFRkaqffv2evTRRzV16lSdOnXqpscbNWqUkpOTbVtSUtKd3wgAAADkSwUyZOfExcXF7rXFYlFWVpYkyTCMm07huNn+2+0XGxurLVu2qGnTpvr4449VrVo1bd269YZ9rFarfHx87DYAAAAUDgUyZP89uG7dulXBwcEqVqxYjn1r1qyp3bt368qVK7Z933//vZycnFStWjVJkqurq21U/E76SVKDBg00atQobd68WbVr19aiRYtydY0AAAAouApkyE5KStLw4cOVkJCgxYsXa/r06Ro6dOht9e3evbvc3NzUs2dP/fTTT9q4caMGDx6sZ599VqVLl5Z07Qtt9u7dq4SEBJ07d07p6ek59jt27JhG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qW7duho8eDAhGwAAAEVarqaLZGZmqmHDhtftv/fee5WRkfGPiwIAAAAKslwt4Td48GC5uLhoypQpdvtHjBihq1ev6r///a9pBRYVd7IkDAAAAO6+PFnC76/f7mixWDRnzhytW7dOjRs3liRt3bpVSUlJ6tGjRy7LBgAAAAqH2w7Zu3btsnt97733SpKOHj0qSfL395e/v7/2799vYnkAAABAwXPbIXvjxo15WQcAAABQaPzjL6MBAAAAYC9XS/hJ0vbt2/XJJ5/oxIkTSktLs3tvxYoV/7gwAAAAoKDK1Uj2kiVL1KxZMx04cEArV65Uenq6Dhw4oLi4OPn6+ppdIwAAAFCg5Gok+6233lJMTIwGDhwob29vTZ06VZUqVVL//v1VpkwZs2ssUmqPWSsnq4ejywAAADeROD7C0SWgAMjVSPbRo0cVEXHtAbNarbpy5YosFoteeOEFvf/++6YWCAAAABQ0uQrZJUuW1KVLlyRJ5cqV008//SRJunjxov744w/zqgMAAAAKoFxNF2nevLnWr1+vOnXqqEuXLho6dKji4uK0fv16tW7d2uwaAQAAgAIlVyF7xowZ+vPPPyVJo0aNkouLi7777jt16tRJr776qqkFAgAAAAWNxTAMw9FFQEpJSZGvr68Chy3lg48AAORjfPCx6MrOa8nJyfLx8bll29seyU5JSbntAnI6KQAAAFCY3XbILl68uCwWyy3bGIYhi8WizMzMf1wYAAAAUFDddsjeuHFjXtYBAAAAFBq3HbLDwsLyso4CZ968eRo2bJguXrzo6FIAAACQz+RqdZFsf/zxh06cOKG0tDS7/XXr1v1HReWVyMhIXbx4UatWrXJ0KQAAACjEchWyz549q169eumrr7664fvMyQYAAEBRlqtvfBw2bJguXLigrVu3yt3dXWvWrNH8+fMVHByszz77zOwa79iyZctUp04dubu7y8/PT23atNG///1vzZ8/X59++qksFossFovi4+MVHx8vi8ViN+1j9+7dslgsSkxMtO2bN2+eKlSoIA8PDz3++OM6f/687b3ExEQ5OTnpxx9/tKtj+vTpCgoKEqskAgAAFC25GsmOi4vTp59+qvvuu09OTk4KCgpS27Zt5ePjo+joaEVEOG79yFOnTqlr166aOHGiHn/8cV26dEnffvutevTooRMnTiglJUWxsbGSrn09/ObNm3M85rZt29S7d2+99dZb6tSpk9asWaMxY8bY3q9YsaLatGmj2NhYNWzY0LY/NjZWkZGRN1yVJTU1VampqbbXd7JEIgAAAPK3XI1kX7lyRaVKlZJ0LaiePXtWklSnTh3t3LnTvOpy4dSpU8rIyFCnTp1UsWJF1alTR88//7y8vLzk7u4uq9WqgIAABQQEyNXV9baOOXXqVLVv314jR45UtWrVNGTIELVv396uTZ8+fbR48WJbcN6zZ492796tXr163fCY0dHR8vX1tW2BgYH/7MIBAACQb+QqZIeEhCghIUGSVL9+fb333ns6efKkZs2apTJlypha4J2qV6+eWrdurTp16ujJJ5/U7NmzdeHChX90zIMHD6pJkyZ2+/7+umPHjnJ2dtbKlSslSXPnzlXLli1VsWLFGx5z1KhRSk5Otm1JSUn/qEYAAADkH7mek33q1ClJ0pgxY7RmzRpVqFBB06ZN01tvvWVqgXeqWLFiWr9+vb766ivVrFlT06dPV0hIiI4dO3bD9k5O127BX+dNp6en27W5nTnVrq6uevbZZxUbG6u0tDQtWrRIvXv3vml7q9UqHx8fuw0AAACFwx3Nyf7jjz/073//W6tWrVJ6errWrVunadOmKTExUYcOHVKFChV0zz335FWtt81isahZs2Zq1qyZXnvtNQUFBWnlypVydXW9buUTf39/SdemmZQoUULStQ8+/lXNmjW1detWu31/fy1dmzJSu3Ztvfvuu0pPT1enTp1MvCoAAAAUFHcUsseMGaN58+ape/fucnd316JFi/Tcc8/pk08+UWhoaF7VeEe2bdumDRs2qF27dipVqpS2bdums2fPqkaNGvrzzz+1du1aJSQkyM/PT76+vqpataoCAwM1duxYvfHGGzp8+LAmT55sd8whQ4aoadOmmjhxojp27Kh169ZpzZo11527Ro0aaty4sV566SX17t1b7u7ud+uyAQAAkI/c0XSRFStW6IMPPtD777+vqVOn6osvvtCqVavy1brYPj4++uabb/Twww+rWrVqGj16tCZPnqyHHnpIffv2VUhIiBo2bCh/f399//33cnFx0eLFi3Xo0CHVq1dPEyZM0BtvvGF3zMaNG2vOnDmaPn266tevr3Xr1mn06NE3PP+//vUvpaWl3XKqCAAAAAo3i3EHizi7urrq2LFjKleunG2fu7u7fv75Z1bH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SRo+fLj69++vnTt3avr06Zo8ebIkqVWrVpoxY4YaN26srKwsvfTSS3Yj0TExMSpTpozq168vJycnffLJJwoICFDx4sVzVctLL72kxo0ba+DAgerbt688PT118OBBrV+/XtOnT9fq1av1yy+/qEWLFipRooS+/PJLZWVlKSQkRNu2bdOGDRvUrl07lSpVStu2bdPZs2dVo0YNM24TAAAAChCHh+wePXro6tWratSokYoVK6bBgwerX79+kqTJkyerV69eatGihcqWLaupU6dqx44dtr5eXl6aMGGCDh8+rGLFium+++7Tl19+KSen3A3Q161bV5s2bdIrr7yi5s2byzAMValSRU899ZSka8sHrlixQmPHjtWff/6p4OBgLV68WLVq1dLBgwf1zTff6J133lFKSoqCgoI0efJkPfTQQ//8JgEAAKBAsRg3W2MOd1VKSop8fX0VOGypnKweji4HAIB8I3F8hKNLACT9/7yWnJyc4+fpHD4nGwAAAChsCNkAAACAyQjZAAAAgMkI2QAAAIDJCNkAAACAyQjZAAAAgMkI2QAAAIDJCNkAAACAyRz+jY+w91NU+xwXNwcAAED+xkg2AAAAYDJCNgAAAGAyQjYAAABgMkI2AAAAYDJCNgAAAGAyQjYAAABgMpbwy2dqj1krJ6uHo8sAACBPJI6PcHQJwF3BSDYAAABgMkI2AAAAYDJCNgAAAGAyQjYAAABgMkI2AAAAYDJCNgAAAGAyQjYAAABgMkI2AAAAYDJCdi4kJibKYrFo9+7dN20THx8vi8Wiixcv3rW6AAAAkD8QsgEAAACTEbLvUFpamqNLAAAAQD5X6EL2559/ruLFiysrK0uStHv3blksFv373/+2tenfv7+6du0qSVq+fLlq1aolq9WqihUravLkyXbHq1ixot544w1FRkbK19dXffv2veF5v/zyS1WrVk3u7u5q2bKlEhMT8+YCAQAAkO8VupDdokULXbp0Sbt27ZIkbdq0Sffcc482bdpkaxMfH6+wsDDt2LFDXbp00dNPP619+/Zp7NixevXVVzVv3jy7Y7799tuqXbu2duzYoVdfffW6cyYlJalTp056+OGHtXv3bvXp00cjR468ZZ2pqalKSUmx2wAAAFA4FLqQ7evrq/r16ys+Pl7StUD9wgsvaM+ePbp06ZJOnz6tn3/+WeHh4ZoyZYpat26t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",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAHVCAYAAADhFX3pAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAATf5JREFUeJzt3Xt8z/X///H7e7a9d96Yw4zlkDFnZshxc65GifJzKI1EfXIOH0rNUEMOfUpJEvokOiFJITORaOYYQsuQiHzYnNrx9fujy97f3s3mReb9Hrfr5fK6XLxf7+fr+Xq83s+5dPfs+X7OYhiGIQAAAACFcnF0AQAAAEBxQHAGAAAATCA4AwAAACYQnAEAAAATCM4AAACACQRnAAAAwASCMwAAAGACwRkAAAAwgeAMAAAAmEBwBgDgFkpLS9Pdd9+txx9/3NGlALhOBGcABVq4cKEsFovtcHV1VcWKFdWvXz+dOHHiuvuLiopSVFTUDdVSuXJlde7c+YauLW4mTJggi8VSZP2npqbKYrFo4cKFRXYPqeif43rExMSocuXKN3St2Z/bN99809RnGhMTo7vvvlvvvPPODdUj/d/fzdTU1Bvu43pdunRJPXv2VI0aNeTr6ytvb2/Vrl1bkydP1qVLl25ZHYAjuTq6AADOb8GCBQoLC9OVK1f0zTffKD4+Xhs3btTevXvl7e3t6PJuOwMGDNC9995bZP2XL19e3333ne6+++4iu8ed6M0331Tp0qUVExNTYJsZM2YoNTVV33zzjdzc3G74XtHR0fruu+9Uvnz5G+7jemVlZckwDI0cOVJVqlSRi4uLvvnmG02cOFGJiYn6+uuvb1ktgKMQnAFcU506dRQRESFJatOmjXJycjRp0iStWLFCffr0cXB115aVlWWbMXdmly9flpeXlypWrKiKFSsW2X2sVqvuueeeIusfBXv22Wf17LPP/uN+ypQpozJlytyEiswLCAjQhx9+aHeuffv2ysjI0LRp0/Tzzz+ratWqt7Qm4FZjqQaA65YXuo4ePSpJiouLU9OmTVWqVCn5+fkpPDxc8+fPl2EY1+zreq9dvny56tWrJw8PD1WtWlWvvfaa3fuJiYmyWCz673//q2effVYVKlSQ1WrVTz/9pDNnzuhf//qXatWqJR8fH5UtW1Zt27bVpk2b8t1nzpw5ql+/vnx8fOTr66uwsDA999xzhT5L3hKIadOm6aWXXtJdd90lDw8PRUREaP369XZt85Yx7NixQw8//LBKlixpmwG+2hKHvKUqX331lcLDw+Xp6amwsDC9++67+eo4ceKEBg4cqJCQELm7uys4OFgPP/ywfvvtN7s6/7qsIO+eO3fuVLdu3eTn5yd/f389+uijOnPmjF3/H374oTp27Kjy5cvL09NTNWvW1NixY03/7/oPP/xQzZo1k7e3t3x8fNSpUyft3LnTrs3PP/+snj17Kjg4WFarVeXKlVO7du20a9eua/a/cOFC1ahRQ1arVTVr1tR777131XaZmZmaPHmywsLCZLVaVaZMGfXr1y/f85pRuXJl7du3Txs3brQtbfrr0pBjx47p0UcfVdmyZW11zZgxQ7m5ubY21/PzU9BSja+++krt2rWTv7+/vLy8VLNmTcXHx9u1WblypZo1ayYvLy/5+vqqQ4cO+u677677mfPkBXhn/4cpcDPwUw7guv3000+S/u8/mKmpqRo0aJDuuusuSdLWrVs1ZMgQnThxQi+++GKhfV3Ptbt27dLw4cM1YcIEBQUFafHixRo2bJgyMzM1atQou7bjxo1Ts2bN9NZbb8nFxUVly5a1BaLY2FgFBQXp4sWLWr58uaKiorR+/XrbOtalS5fqX//6l4YMGaLp06fLxcVFP/30k/bv32/q85k9e7YqVaqkV199Vbm5uZo2bZruu+8+bdy4Uc2aNbNr261bN/Xs2VNPPfXUNYPn7t279eyzz2rs2LEqV66c3nnnHT3xxBOqVq2aWrduLenP0Ny4cWNlZWXpueeeU7169XT27FmtWbNG586dU7ly5Qq9x0MPPaQePXroqaee0r59+/TCCy9o//792rZtm21pweHDh3X//fdr+PDh8vb21o8//qipU6fq+++/V0JCQqH9v/zyyxo/frz69eun8ePHKzMzU6+88opatWql77//XrVq1ZIk3X///crJydG0adN011136ffff9eWLVt0/vz5QvtfuHCh+vXrpwcffFAzZsxQWlqaJkyYoIyMDLm4/N9cUW5urh588EFt2rRJY8aMUfPmzXX06FHFxsYqKipK27dvl6enZ6H3+qvly5fr4Ycflr+/v958801Jf87sS9KZM2fUvHlzZWZmatKkSapcubJWrVqlUaNGKSUlxdY+z/X8/PzV/Pnz9eSTTyoyMlJvvfWWypYtq0OHDumHH36wtfnggw/Up08fdezYUUuWLLHNFuf9HWjZsuU1n9UwDOXk5Ojy5cvasmWLZsyYoV69etn+DgO3NQMACrBgwQJDkrF161YjKyvLuHDhgrFq1SqjTJkyhq+vr3Hq1Kl81+Tk5BhZWVnGxIkTjcDAQCM3N9f2XmRkpBEZGVng/Qq7tlKlSobFYjF27dpld02HDh0MPz8/49KlS4ZhGMaGDRsMSUbr1q2v+XzZ2dlGVlaW0a5dO+Ohhx6ynR88eLAREBBwzev/7siRI4YkIzg42Lhy5YrtfHp6ulGqVCmjffv2tnOxsbGGJOPFF1/M10/ee39VqVIlw8PDwzh69Kjt3JUrV4xSpUoZgwYNsp3r37+/4ebmZuzfv/+adS5YsCDfPUeMGGHXdvHixYYk4/33379qX7m5uUZWVpaxceNGQ5Kxe/fuAp/j2LFjhqurqzFkyBC7Pi5cuGAEBQUZPXr0MAzDMH7//XdDkvHqq68W+AxXk5OTYwQHBxvh4eF2PzupqamGm5ubUalSJdu5JUuWGJKMTz/91K6PpKQkQ5Lx5ptv2s5d6+c2T+3ata/abuzYsYYkY9u2bXbnn376acNisRgHDx40DOP6fn7y/m4eOXLEMIw/P0M/Pz+jZcuWds/+V3mfT926dY2cnBzb+QsXLhhly5Y1mjdvfs1nNIz/++zyjn79+hlZWVmmrgWKO5ZqALime+65R25ubvL19VXnzp0VFBSkL7/80jZ7mZCQoPbt28vf318lSpSQm5ubXnzxRZ09e1anT58utO/rubZ27dqqX7++3bnevXsrPT1dO3bssDvfvXv3q97vrbfeUnh4uDw8POTq6io3NzetX79eBw4csLVp0qSJzp8/r169eumzzz7T77//bvqzkv6cRfbw8LC99vX1VZcuXfTNN98oJyfHVJ1X06BBA7tZPQ8PD1WvXt22ZEaSvvzyS7Vp00Y1a9a8rprz/H3Neo8ePeTq6qoNGzbYzv3888/q3bu3goKCbGMWGRkpSXaf49+tWbNG2dnZ6tu3r7Kzs22Hh4eHIiMjlZiYKEkqVaqU7r77br3yyiuaOXOmdu7cabekoSAHDx7Ur7/+qt69e9stdalUqZKaN29u13bVqlUKCAhQly5d7Gpp0KCBgoKCbLXcDAkJCapVq5aaNGlidz4mJkaGYeSbpb+en588W7ZsUXp6uv71r38VuJNJ3ufz2GOP2c2++/j4qHv37tq6dasuX758zefp1KmTkpKSlJCQoJdeekmffvqpunfvbmqMgOKO4Azgmt577z0lJSVp586d+vXXX7Vnzx61aNFCkvT999+rY8eOkqR58+bp22+/VVJSkp5//nlJ0pUrVwrs93qvDQoKytdH3rmzZ8/anb/abgMzZ87U008/raZNm+rTTz/V1q1blZSUpHvvvdfuXo899pjeffddHT16VN27d1fZsmXVtGlTrVu3rvAP6hp1ZmZm6uLFi9essyCBgYH5zlmtVrvaz5w584++WPj32l1dXRUYGGj7fC9evKhWrVpp27Ztmjx5shITE5WUlKRly5ZJKny889ZYN27cWG5ubnbHhx9+aPsHisVi0fr169WpUydNmzZN4eHhKlOmjIYOHaoLFy4U2H9ejYX9nPy1lvPnz8vd3T1fLadOnbrufywV5uzZs1cd5+DgYLu6C6o179zVfn7y5C1DKmzs8+5TUC25ubk6d+5cgdfnKVmypCIiItSmTRs999xzevvtt7Vy5Up99tln17wWKO5Y4wzgmmrWrGnbVePvli5dKjc3N61atcpulmzFihXX7Pd6rz116lSB5/4eKq826/b+++8rKipKc+bMsTt/tTDWr18/9evXT5cuXdI333yj2NhYde7cWYcOHVKlSpUKfa6C6nR3d5ePj8816/wnypQpo19++eWGrz916pQqVKhge52dna2zZ8/aPt+EhAT9+uuvSkxMtM0yS7rm2mNJKl26tCTpk08+ueZnWKlSJc2fP1+SdOjQIX300UeaMGGCMjMz9dZbb131mrwaC/s5+WstgYGB+uqrr67al6+vb+EPcx0CAwN18uTJfOd//fVXWy1/dT0/P3nyvm9Q2NjnfT4F1eLi4qKSJUsWeH1B8mbSDx06dN3XAsUNM84A/pG8bd5KlChhO3flyhX997//venX7tu3T7t377Y798EHH8jX11fh4eGm7pf3ha08e/bsKXRHAW9vb9133316/vnnlZmZqX379l3zPsuWLdMff/xhe33hwgV9/vnnatWqld2zFoX77rtPGzZs0MGDB2/o+sWLF9u9/uijj5SdnW374mRe0P/75zh37txr9t2pUye5uroqJSVFERERVz2upnr16ho/frzq1q2bb0nOX9WoUUPly5fXkiVL7HZlOXr0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gwbl+0cCAAAA7gw3FJwXL16sefPmadSoUXJ1dVWvXr30zjvv6MUXX9TWrVtvdo2mLVq0SN7e3tq2bZumTZumiRMnat26dTIMQ9HR0Tp16pRWr16t5ORkhYeHq127doXOjq9fv14HDhzQhg0btGTJEi1fvlxxcXGF1pCRkaH09HS7AwAAAMXfDQXnU6dOqW7dupIkHx8fpaWlSZI6d+6sL7744uZVd53q1aun2NhYhYaGqm/fvoqIiND69eu1YcMG7d27Vx9//LEiIiIUGhqq6dOnKyAgQJ988kmB/bm7u+vdd99V7dq1FR0drYkTJ+q1115Tbm5ugdfEx8fL39/fdoSEhBTFowIAAOAWu6HgXLFiRZ08eVKSVK1aNa1du1aSlJSUJKvVevOqu0716tWze12+fHmdPn1aycnJunjxogIDA+Xj42M7jhw5opSUlAL7q1+/vry8vGyvmzVrposXL+r48eMFXjNu3DilpaXZjsLaAgAAoPi4oS8HPvTQQ1q/fr2aNm2qYcOGqVevXpo/f76OHTumESNG3OwaTXNzc7N7bbFYlJubq9zcXJUvX16JiYn5rgkICLju+1gslgLfs1qtDv3HAwAAAIrGDQXnKVOm2P788MMPKyQkRN9++62qVaumBx544KYVd7OEh4fr1KlTcnV1VeXKlU1ft3v3bl25ckWenp6SpK1bt8rHx0cVK1YsokoBAADgrK57qUZWVpb69eunn3/+2XauadOmGjlypFOGZklq3769mjVrpq5du2rNmjVKTU3Vli1bNH78eG3fvr3A6zIzM/XEE09o//79+vLLLxUbG6vBgwfLxYXtrwEAAO40150A3dzctHz58qKopchYLBatXr1arVu3Vv/+/VW9enX17NlTqampKleuXIHXtWvXTqGhoWrdurV69OihLl26OHS7PQAAADiOxTAM43ov6tevn+rWrauRI0cWRU1OISYmRufPn9eKFSv+UT/p6el/7q4x/CO5WL2ufQEAU1KnRDu6BADAbSIvr6WlpcnPz6/Adje0xrlatWqaNGmStmzZokaNGsnb29vu/aFDh95ItwAAAIDTuqHg/M477yggIEDJyclKTk62e89isRCcAQAAcNu5oeB85MiRm12H01m4cKGjSwAAAIAT+cfbQxiGoRtYJg0AAAAUKzccnOfPn686derIw8NDHh4eqlOnjt55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",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "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zxVk5+TJkwoPD9e0adNu+S8mQElF6AZgqkWLFikuLk67d+/WmTNntHfvXrVt21aS9MMPP+j++++XJH300UfavHmz4uLi9Nprr0mSrl+/nuN589vX398/yzky9128eNFuf3arOsycOVPPP/+87rnnHn355Zfatm2b4uLi1LVrV7trPf300/r444918uRJPfLII6pQoYLuuecerV+/PveBukWdqampunr16i3rzEm5cuWy7LNarXa1X7hwQVWqVMnzObOr88+cnZ1Vrlw52/hevXpV7du31/bt2/WPf/xDMTExiouL0/LlyyXl/uedOae8ZcuWcnFxsds+++wz2y83FotFGzZsUJcuXTR16lQ1a9ZMfn5+GjlypK5cuZLj+TNrzO198udaLl++LFdX1yy1nDt3Lt+/aOXm4sWL2f45V6pUya7unGrN3Jfd+ydT5tSp3P7sM6+TUy0ZGRm6dOlSjv2HDRumhg0b6pFHHtHly5d1+fJlW0i/evWqEhMTc+wLlBTM6QZgqgYNGqhFixbZHlu6dKlcXFz09ddf2z2dy8vKJvnte+7cuRz3/TWQZve0b/HixQoNDdWcOXPs9mcX5AYMGKABAwYoOTlZ3333nSIiItSzZ08dOXJE1apVy/W+cqrT1dVVXl5et6zz7/Dz89PPP/9c4P7nzp1T5cqVba9v3Lihixcv2sZ348aNOnPmjGJiYmxPtyXdcq61JJUvX16S9MUXX9xyDKtVq6Z58+ZJko4cOaJly5Zp0qRJSk1N1fvvv59tn8wac3uf/LmWcuXKac2aNdme6++uLvLXus6ePZtlf+ZSe5njkik/759MmZ+vyO3PPnN8cqrFyclJZcqUybH//v37dfLkyWzbdOzYUb6+vnl6HwDFGU+6AThM5pfmlCpVyrbv+vXr+s9//lPofQ8cOKA9e/bY7fvkk0/k7e2tZs2a5el6f11ibe/evbmu3ODp6alu3brptddeU2pqqg4cOHDL6yxfvlx//PGH7fWVK1f03//+V+3bt7e7VzN069ZN0dHROnz4cIH6L1myxO71smXLdOPGDduHTDN/SfjrOH7wwQe3PHeXLl3k7OysY8eOqUWLFtlu2albt65ef/11NWrUKMs0oj+rV6+eAgIC9Omnn9qtfnPy5Elt2bLFrm3Pnj118eJFpaenZ1tHvXr1bnk/f/XXf3XI1KlTJx08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",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "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koxdu3YZV65cMTIzM401a9YY/v7+hre3t5GWlnbNMTk5OcaVK1eMcePGGX5+fkZubq5tW1RUlBEVFZXv+Qo6tnLlyobFYjEOHDhgd0zbtm0NHx8f4+LFi4ZhGMbmzZsNSUarVq1ueH3Z2dnGlStXjJiYGKNr16629qFDhxply5a94fF/durUKUOSUbFiReO3336ztWdkZBjly5c32rRpY2tLSEgwJBmvvPLKNf3kbfujypUrG25ubsb3339va/vtt9+M8uXLG4MHD7a1Pf7444aLi4tx+PDhG9Y5f/78a845fPhwu30XL15sSDLee++96/aVm5trXLlyxdi6dashyTh48GC+15Gammo4Ozsbw4YNs+sjMzPTCAoKMnr27GkYhmH88ssvhiRjxowZ+V7D9eTk5BgVK1Y0wsPD7e6dlJQUw8XFxahcubKt7d///rchyfjwww/t+khOTjYkGbNmzbK13ei+zXP33Xdfd78XXnjBkGTs3r3brv3JJ580LBaLcezYMcMwbu3+yfuzeerUKcMwrn6GPj4+xn333Wd37X+U9/nUr1/fyMnJsbVnZmYaAQEBRvPmzW94jX369DEWL15sbNu2zVi+fLnxwAMPGJKMl19++YbHAiUBU1wAmMa9994rFxcXeXt7q2PHjgoKCtK6detso7GbNm1SmzZt5OvrqzJlysjFxUWvvPKKzp07pzNnzhTY960ce/fdd6thw4Z2bX369FFGRob27dtn1969e/frnm/OnDkKDw+Xm5ubnJ2d5eLioo0bN+rIkSO2fZo1a6Zff/1VvXv31kcffaRffvnlpj8r6eqouJubm+29t7e3OnXqpG3btiknJ+em6ryeRo0a2T2M5+bmppo1a9qmGknSunXr1Lp1a9WpU+eWas7z52cKevbsKWdnZ23evNnW9t1336lPnz4KCgqyfc+ioqIkye5z/LP169crOztbjz32mLKzs20vNzc3RUVFacuWLZKk8uXLq1q1apo8ebKmTZum/fv3200Fyc+xY8f0448/qk+fPnZThCpXrqzmzZvb7btmzRqVLVtWnTp1squlUaNGCgoKstVSFDZt2qS6deuqWbNmdu1xcXEyDOOanzrcyv2TZ+fOncrIyNBTTz2V78o5eZ/Po48+avfTBC8vL3Xv3l27du3SpUuXCryWxYsXq0+fPmrZsqW6d++utWvXqmPHjkpKSirU1CCguCGgAzCNRYsWKTk5Wfv379ePP/6or776Si1atJAkffnll2rXrp0kae7cudqxY4eSk5P10ksvSZJ+++23fPu91WODgoKu6SOv7dy5c3bt11vdYtq0aXryySd1zz336MMPP9SuXbuUnJysDh062J3r0Ucf1TvvvKPvv/9e3bt3V0BAgO655x5t2LCh4A/qBnVevnxZFy5cuGGd+fHz87umzWq12tV+9uzZv/SA6Z9rd3Z2lp+fn+3zvXDhglq2bKndu3fr1Vdf1ZYtW5ScnKwVK1ZIKvj7nTcHvmnTpnJxcbF7vf/++7Z/CFksFm3cuFHt27fXpEmTFB4eLn9/f/39739XZmZmvv3n1VjQffLHWn799Ve5urpeU0taWtot/6OsIOfOnbvu97lixYp2dedXa17b9e6fPHnhuKDvfd558qslNzdX58+fz/f4/DzyyCPKzs7Wnj17bvlYoLhhDjoA06hTp45tFZc/W7p0qVxcXLRmzRq7Ub9Vq1bdsN9bPTYtLS3ftj+H1+uNIr733nuKjo7W7Nmz7dqvF/r69++v/v376+LFi9q2bZsSEhLUsWNHHT9+XJUrVy7wuvKr09XVVV5eXjes86/w9/fX//3f/xX6+LS0NFWqVMn2Pjs7W+fOnbN9vps2bdKPP/6oLVu22EbNJd1wbrgkVahQQZK0fPnyG36GlStX1rx58yRJx48f17Jly5SYmKjLly9rzpw51z0mr8aC7pM/1uLn56dPPvnkun15e3sXfDG3wM/PTz/99NM17T/++KOtlj+6lfsnT97zIAV97/M+n/xqcXJyUrly5fI9Pj/G/3+g+4+j8kBJxV0OoFjIW76wTJkytrbffvtN7777bpEf+8033+jgwYN2bUuWLJG3t7fCw8Nv6nx5D+7l+eqrrwpcwcLT01MPPPCAXnrpJV2+fFnffPPNDc+zYsUK/f7777b3mZmZ+s9//qOWLVvaXevt8MADD2jz5s06duxYoY5fvHix3ftly5YpOzvb9gBt3j8o/vw5vvnmmzfsu3379nJ2dtbJkycVERFx3df11KxZUy+//LLq169/zVSmP6pVq5aCg4P173//224VoO+//147d+6027djx446d+6ccnJyrltHrVq1bng9f/bnn2bkiYmJ0eHDh6+pfdGiRbJYLGrdurVde2Hun+bNm8vX11dz5szJ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999/vw4ePGjbfvLkSXXu3FmBgYHy8vJS06ZN9dlnn+V7rrCwMElS165dZbFYbO/zvPvuuwoLC5Ovr6969eqlzMxMSdKiRYvk5+enrKwsu/27d++uxx577K99AAAAACh2SnRAX7hwoTw9PbV7925NmjRJ48aN04YNG2QYhmJjY5WWlqa1a9dq7969Cg8PV0xMjP773/9Kki5cuKAHH3xQn332mfbv36/27durU6dOSk1Nve65kpOTJUnz58/XTz/9ZHsvXQ37q1at0po1a7RmzRpt3bpVSUlJkqS//e1vysnJ0erVq237//LLL1qzZo369++f77VlZWUpIyPD7gUAAIDir0QH9AYNGighIUE1atTQY489poiICG3cuFGbN2/WoUOH9MEHHygiIkI1atTQlClTVLZsWS1fvlyS1LBhQw0ePFj169dXjRo19Oqrr6pq1ap2QfqP/P39JUlly5ZVUFCQ7b10dSR/wYIFqlevnlq2bKlHH31UGzdulCS5u7urT58+mj9/vm3/xYsXKyQkRNHR0fle24QJE+Tr62t7hYaG/tWPCwAAACZQ4gP6HwUHB+vMmTPau3evLly4ID8/P3l5edlep06d0smTJyVJFy9e1KhRo1S3bl2VLVtWXl5eOnr0aL4j6AUJCwuTt7f3NXXkGThwoD799FP98MMPkq6OwsfFxcliseTb5+jRo5Wenm57nT59+pbrAgAAgPk4O7qA28nFxcXuvcViUW5urnJzcxUcHKwtW7Zcc0zZsmUlSSNHjtT69es1ZcoUVa9eXe7u7urRo4cuX75cZHXkady4sRo2bKhFixapffv2OnTokP7zn/8U2KfVapXVar3lWgAAAGBuJTqg5yc8PFxpaWlydna+5mHOPNu3b1dcXJy6du0q6eqc9JSUlAL7dXFxUU5OTqFqGjBggKZPn64ffvhBbdq0YcoKAABAKVWip7jkp02bNoqMjFSXLl20fv16paSkaOfOnXr55Ze1Z88eSVL16tW1YsUKHThwQAcPHlSfPn3sRr2vJywsTBs3blRaWprOnz9/SzX17dtXP/zwg+bOnavHH3+80NcGAACA4q1UBnSLxaK1a9eqVatWevzxx1WzZk316tVLKSkpCgwMlCRNnz5d5cqVU/PmzdWpUye1b99e4eHhBfY7depUbdiwQaGhoWrcuPEt1eTj46Pu3bvLy8tLXbp0KeylAQAAoJizGIZhOLoIXNW2bVvVqVNH//jHP2752IyMjKurucQvk5PV4zZUBwAAIKUkxTq6hGIrL6+lp6fLx8cn3/1K5Rx0s/nvf/+rTz/9VJs2bdLMmTMdXQ4AAAAciIBuAuHh4Tp//rwmTpyoWrVqObocAAAAOBAB3QRutDoMAAAASo9S+ZAoAAAAYFYEdAAAAMBECOgAAACAiRDQAQAAABMhoAMAAAAmwiouJczXY9sXuPA9AAAAzI0RdAAAAMBECOgAAACAiRDQAQAAABMhoAMAAAAmQkAHAAAATISADgAAAJgIyyyWMPUS1svJ6uHoMgAAgAmkJMU6ugQUAiPoAAAAgIkQ0AEAAAATIaADAAAAJkJABwAAAEyEgA4AAACYCAEdAAAAMBECOgAAAGAiBHQAAADARAjoAAAAgIkQ0AEAAAATIaADAAAAJkJAv0XR0dEaNmyY4uPjVa5cOQUGBuqtt97SxYsX1b9/f3l7e6tatWpat26dJCknJ0dPPPGEqlSpInd3d9WqVUtvvPGGrb9t27bJxcVFaWlpdud59tln1apVqzt6bQAAAHA8AnohLFy4UBUqVNCXX36pYcOG6cknn9Tf/vY3NW/eXPv27VP79u316KOP6tKlS8rNzVVISIiWLVumw4cP65VXXtGLL76oZcuWSZJatWqlqlWr6t1337X1n52drffee0/9+/fPt4asrCxlZGTYvQAAAFD8WQzDMBxdRHESHR2tnJwcbd++XdLVEXJfX19169ZNixYtkiSlpaUpODhYX3zxhe69995r+nj66af1888/a/ny5ZKkSZMmacGCBTp8+LAk6aOPPtIjjzyitLQ0eXp6XreOxMREjR079pr20PhlcrJ6FMm1AgCA4i0lKdbRJeAPMjIy5Ovrq/T0dPn4+OS7HyPohdCgQQPb12XKlJGfn5/q169vawsMDJQknTlzRpI0Z84cRUREyN/fX15eXpo7d65SU1Nt+8fFxenEiRPatWuXJOmdd95Rz5498w3nkjR69Gilp6fbXqdPny7SawQAAIBjODu6gOLIxcXF7r3FYrFrs1gskqTc3FwtW7ZMw4cP19SpUxUZGSlvb29NnjxZu3fvtu0fEBCgTp06af78+apatarWrl2rLVu2FFiD1WqV1WotuosCAACAKRDQb7Pt27erefPmeuqpp2xtJ0+evGa/AQMGqFevXgoJCVG1atXUokWLO1kmAAAATIIpLrdZ9erVtWfPHq1fv17Hjx/XmDFjlJycfM1+7du3l6+vr1599dUCHw4FAABAyUZAv82GDBmibt266eGHH9Y999yjc+fO2Y2m53FyclJcXJxycnL02GOPOaBSAAAAmAGruJjIwIED9fPPP2v16tW3fGzeU8Gs4gIAAPKwiou53OwqLsxBN4H09HQlJydr8eLF+uijjxxdDgAAAByIgG4CnTt31pdffqnBgwerbdu2ji4HAAAADkRAN4EbLakIAACA0oOHRAEAAAATIaADAAAAJkJABwAAAEyEgA4AAACYCA+JljBfj21f4LqaAAAAMDdG0AEAAAATIaADAAAAJkJABwAAAEyEgA4AAACYCAEdAAAAMBECOgAAAGAiLLNYwtRLWC8nq4ejywAAAHdYSlKso0tAEWEEHQAAADARAjoAAABgIgR0AAAAwEQI6AAAAICJENABAAAAEyGgAwAAACZCQAcAAABMhIAOAAAAmAgBHQAAADARAvpNiI6OVnx8vKPLAAAAQClAQAcAAABMhIAOAAAAmAgBvRA++eQT+fr6atGiRfrhhx/08MMPq1y5cvLz81Pnzp2VkpJit//8+fNVp04dubm5qXbt2po1a5ZtW0pKiiwWi5YuXarmzZvLzc1Nd999t7Zs2XJnLwoAAACmQEC/RUuXLlXPnj21aNEi9ejRQ61bt5aXl5e2bdumzz//XF5eXurQoYMuX74sSZo7d65eeuklvfbaazpy5Ihef/11jRkzRgsXLrTrd+TIkXr22We1f/9+NW/eXA899JDOnTuXbx1ZWVnKyMiwewEAAKD4I6DfglmzZmnIkCH66KOP1LlzZy1dulROTk56++23Vb9+fdWpU0fz589XamqqbQR8/Pjxmjp1qrp166YqVaqoW7duGj58uN588027vocOHaru3burTp06mj17tnx9fTVv3rx8a5kwYYJ8fX1tr9DQ0Nt56QAAALhDnB1dQHHx4Ycf6ueff9bnn3+uZs2aSZL27t2rEydOyNvb227f33//XSdPntTZs2d1+vRpPfHEExo4cKBte3Z2tnx9fe2OiYyMtH3t7OysiIgIHTlyJN96Ro8erREjRtjeZ2RkENIBAABKAAL6TWrUqJH27dun+fPnq2nTprJYLMrNzVWTJk20ePHia/b39/fX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ffqob9++WrVqlQzD0KRJk1S1alW5u7urYcOGWr58ue248+fPq2/fvvL395e7u7tq1Kih+fPn27YfOnRI999/v9zd3eXn56dBgwbpwoULjrhEACgyjKADAO44d3d3XblyRS+//LJWrFih2bNnq0aNGtq2bZseeeQR+fv7KyoqSmPGjNHhw4e1bt06VahQQSdOnNBvv/0mSbp06ZI6dOige++9V8nJyTpz5owGDBigoUOHasGCBY69QAD4CwjoAIA76ssvv9SSJUvUunVrTZs2TZs2bVJkZKQkqWrVqvr888/15ptvKioqSqmpqWrcuLEiIiIkSWFhYbZ+Fi9erN9++02LFi2Sp6enJGnmzJnq1KmTJk6cqMDAwDt+bQBQFAjoAIDbbs2aNfLy8lJ2drauXLmizp0767nnntPy5cvVtm1bu30vX76sxo0bS5KefPJJde/eXfv27VO7du3UpUsXNW/eXJJ05MgRNWzY0BbOJalFixbKzc3VsWPHCOgAii0COgDgtmvdurVmz54tFxcXVaxYUS4uLtq9e7ck6eOPP1alSpXs9rdarZKkBx54QN9//70+/vhjffbZZ4qJidHTTz+tKVOmyDAMWSyW654vv3YAKA4I6ACA287T01PVq1e3a6tbt66sVqtSU1MVFRWV77H+/v6Ki4tTXFycWrZsqZEjR2rKlCmqW7euFi5cqIsXL9pG0Xfs2CEnJyfVrFnztl4PANxOBHQAgEN4e3vrueee0/Dhw5Wbm6v77rtPGRkZ2rlzp7y8vNSvXz+98soratKkie6++25lZWVpzZo1qlOnjiSpb9++SkhIUL9+/ZSYmKizZ89q2LBhevTRR5neAqBYI6ADABxm/PjxCggI0IQJE/Tdd9+pbNmyCg8P14svvihJcnV11ejRo5WSkiJ3d3e1bNlSS5culSR5eHho/fr1euaZZ9S0aVN5eHioe/fumjZtmiMvCQD+MothGIajiwAAAABwFb+oCAAAADARAjoAAABgIgR0AAAAwEQI6AAAAICJENABAAAAEyGgAwAAACZCQAcAAABMhIAOAAAAmAgBHQAAADARAjoAAABgIgR0AAAAwET+H203GhhdLx05AAAAAElFTkSuQmCC",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "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9Lfz+cmxY8cOpaam6qWXXrrpTiY578/zzz9vN/vu5eWlTp06aefOnbp27dpN7yNnDBo0aKD3339fTZs21XPPPadVq1bpt99+09tvv533GwEUAQRnALf04Ycfavfu3dq3b59Onz6tH374QQ0bNpQkfffdd2rRooUkaf78+fr222+1e/duvf7665Kk69ev37Tf2z03MDAwVx85xy5cuGB3/Ea7DcyYMUMvvviiHn74YX3++efauXOndu/erVatWtld6/nnn9cHH3ygkydPqlOnTipVqpQefvhhbdiwIe836hZ1pqen68qVK7es82b8/f1zHbNarXa1nz9//m99sfCvtTs7O8vf39/2/l65ckWPPfaYdu3apUmTJikhIUG7d+/WihUrJOU93jlrrOvXry8XFxe7xyeffGL7D4rFYtHGjRvVsmVLTZ06VXXq1FFAQIAGDx6sy5cv37T/nBrz+pz8uZZLly7J1dU1Vy1nz5697f8s5eXChQs3HOfg4GC7um9Wa86xG31+cuQsQ8pr7HOuc7NasrOzdfHixZuen/P5a9mypd3xWrVqKSgoKNd/XoGiiDXOAG4pPDzctqvGXy1btkwuLi5avXq13SzZqlWrbtnv7Z579uzZmx77a6i80azb4sWLFRUVpblz59odv1EY69Wrl3r16qWrV69q69atGjt2rNq1a6ejR48qNDQ0z/u6WZ2urq7y8vK6ZZ1/R0BAgH799dc7Pv/s2bMqU6aM7XlmZqYuXLhge383bdqk06dPKyEhwTbLLOmWa48lqWTJkpKkzz777JbvYWhoqBYsWCBJOnr0qJYvX65x48YpPT1d8+bNu+E5OTXm9Tn5cy3+/v5au3btDfvy9vbO+2Zug7+/v86cOZPr+OnTp221/NntfH5y5HzfIK+xz3l/blaLk5OTihcvftPzH3zwwZu+ZhiG3Sw2UFTxKQfwt+Rs81asWDHbsevXr+ujjz666+f++OOPOnDggN2xjz/+WN7e3qpTp46p6/11N4Affvghzx0FPD091bp1a73++utKT0/Xjz/+eMvrrFixQr///rvt+eXLl/Xll1/qscces7vX/NC6dWtt3rxZR44cuaPzlyxZYvd8+fLlyszMtH1xMifo//V9fPfdd2/Zd8uWLeXs7Kzjx4+rXr16N3zcSOXKlTV69GhFRETkOatZpUoVBQUFaenSpXa7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zahQoYLx+uuvG2lpabY2jF/BsXnz5hv+W9ezZ0/DMMyN1fXr142BAwcaJUqUMNzd3Y127doZSUlJDrgbx7IYhmE4Zq4bAAAAKDxY4wwAAACYQHAGAAAATCA4AwAAACYQnAEAAAATCM4AAACACQRnAAAAwASCMwAAAGACwRkAAAAwgeAMAAAAmEBwBoD7VHR0tCwWiywWi1xcXFShQgWNGDFCV69edXRpAFAgOTu6AACA47Rq1Urx8fHKyMjQtm3b1KdPH129elVz5851dGkAUOAw4wwA9zGr1arAwECFhITo2WefVffu3bVq1SoZhqGpU6eqQoUKcnd3V82aNfXZZ5/Zzrt48aK6d++ugIAAubu7q1KlSoqPj7e9fvDgQT3++ONyd3eXv7+/+vXrpytXrjjiFgHgrmHGGQBg4+7uroyMDI0ePVorVqzQ3LlzValSJW3dulXPPfecAgICFBkZqTFjxujw4cNas2aNSpYsqZ9//lnXr1+XJF27dk2tWrXSI488ot27d+vcuXPq06ePBg4cqIULFzr2BgHgbyA4AwAkSd99950+/vhjNWnSRDNmzNCmTZvUoEEDSVKFChW0fft2vfvuu4qMjFRSUpJq166tevXqSZLCwsJs/SxZskTXr1/Xhx9+KE9PT0nSnDlz9MQTT2jKlCkqXbr0Pb83ALgbCM4AcB9bvXq1vLy8lJmZqYyMDLVv314jRozQZ599pubNm9u1TU9PV+3atSVJL774ojp16qS9e/eqRYsWeuqpp/Too49Kkn766SfVrFnTFpolqWHDhsrOztaRI0cIzgAKLYIzANzHmjRporlz58rFxUXBwcFycXHRrl27JElfffWVypQpY9fearVKklq3bq2TJ0/qq6++0jfffKOmTZvq5Zdf1vTp02UYhiwWyw2vd7PjAFAYEJwB4D7m6empihUr2h2rVq2arFarkpKSFBkZedNzAwICFB0drejoaD322GMaOXKkpk+frmrVqmnRokW6evWqbdb522+/lZOTkypXrpyv9wMA+YngDACw4+3trREjRmjo0KHKzs5Wo0aNlJqaqh07dsjLy0s9e/bUG2+8obp166p69epKS0vT6tWrFR4eLknq3r27xo4dq549e2rcuHE6f/68Bg0apOeff55lGgAKNYIzACCXiRMnqlSpUoqNjdUvv/wiPz8/1alTR//4xz8kSa6urho1apQSExPl7u6uxx57TMuWLZMkeXh4aN26dRoyZIjq168vDw8PderUSTNmzHDkLQHA32YxDMNwdBEAAABAQccPoAAAAAAmEJwBAAAAEwjOAAAAgAkEZwAAAMAEgjMAAABgAsEZAAAAMIHgDAAAAJhAcAYAAABMIDgDAAAAJhCcAQAAABMIzgAAAIAJ/x9SOIFaXUJ6PQAAAABJRU5ErkJggg==",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtYAAAHVCAYAAADVbLz1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUHJJREFUeJzt3Xd4FOX+///XhiSbHkgIJEAMvURCkGpoCdIEpIiiUoSABQtIaCrSRU8AaSpHVKQqiko7HkDKB0gQIoj0dgCBCCpIERKImDq/P/hlv66hhgmb8nxc11xXduaemffcWfWV23vvtRiGYQgAAADAXXFydAEAAABAYUCwBgAAAExAsAYAAABMQLAGAAAATECwBgAAAExAsAYAAABMQLAGAAAATECwBgAAAExAsAYAAABMQLAGACAfSUpKUqVKldS7d29HlwLgDhGsAeTavHnzZLFYbJuzs7PKlSunPn366Ndff73j60VFRSkqKipXtZQvX16PPPJIrs4taMaOHSuLxZJn109MTJTFYtG8efPy7B5S3j/HnYiOjlb58uVzde7tvm8/+OCD2+rT6OhoVapUSZ988kmu6pH+3z+biYmJub5Gbu95o23ChAn3rBbAUZwdXQCAgm/u3LmqXr26rl69qk2bNik2Nlbx8fHat2+fPD09HV1eofPss8/q4YcfzrPrBwUF6fvvv1elSpXy7B5F0QcffKCSJUsqOjr6hm2mTJmixMREbdq0SS4uLrm+V/v27fX9998rKCgo19fI7T3/afTo0Vq3bp0effTRe1YL4CgEawB3rWbNmqpXr54kqXnz5srMzNT48eO1fPly9ejRw8HV3Vp6erptxD0/+/PPP+Xh4aFy5cqpXLlyeXYfq9WqBx98MM+ujxsbMmSIhgwZctfXCQgIUEBAgAkV3d09U1JS9P3336tJkyaqVq3aPa0HcASmggAwXXYo+/nnnyVJ48aNU8OGDeXn5ycfHx/VqVNHs2fPlmEYt7zWnZ67bNky1apVS25ubqpYsaLee+89u+NxcXGyWCz69NNPNWTIEJUtW1ZWq1U//fSTzp07p5deekmhoaHy8vJSqVKl9NBDD+m7777LcZ+ZM2cqPDxcXl5e8vb2VvXq1fXGG2/c9Fmyp1hMmjRJb7/9tu677z65ubmpXr16Wr9+vV3b7GkSO3fu1OOPP64SJUrYRpCvN4UieyrM6tWrVadOHbm7u6t69eqaM2dOjjp+/fVXPf/88woODparq6vKlCmjxx9/XL///rtdnX+ftpB9z127dqlLly7y8fGRr6+vevbsqXPnztld/8svv1Tr1q0VFBQkd3d31ahRQ6+//rpSUlJu2j9/Pz8iIkKenp7y8vJSmzZttGvXLrs2x48f11NPPaUyZcrIarWqdOnSatGihXbv3n3L68+bN0/VqlWT1WpVjRo1tGDBguu2S0tL01tvvaXq1avLarUqICBAffr0yfG8t6N8+fI6cOCA4uPjbVMj/j715OTJk+rZs6dKlSplq2vKlCnKysqytbmT98+NpoKsXr1aLVq0kK+vrzw8PFSjRg3Fxsbatfnmm28UEREhDw8PeXt7q1WrVtcdib4dX375pa5cuaJnn302V+cDBU3+Hp4BUCD99NNPkmQbvUpMTFS/fv103333SZK2bt2qAQMG6Ndff9Xo0aNveq07OXf37t2KiYnR2LFjFRgYqIULF2rgwIFKS0vT0KFD7doOHz5cERER+vDDD+Xk5KRSpUrZAtOYMWMUGBioK1euaNmyZYqKitL69ett82gXLVqkl156SQMGDNDkyZPl5OSkn376SQcPHryt/pkxY4ZCQkI0ffp0ZWVladKkSWrbtq3i4+MVERFh17ZLly566qmn9MILL9wymO7Zs0dDhgzR66+/rtKlS+uTTz7RM888o8qVK6tZs2aSroXq+vXrKz09XW+88YZq1aqlCxcuaM2aNbp48aJKly5903s8+uijeuKJJ/TCCy/owIEDGjVqlA4ePKht27bZpi4cPXpU7dq1U0xMjDw9PfW///1PEydO1A8//KANGzbc9Pr/+te/NHLkSPXp00cjR45UWlqa3nnnHTVt2lQ//PCDQkNDJUnt2rVTZmamJk2apPvuu0/nz59XQkKCLl26dNPrz5s3T3369FGnTp00ZcoUJSUlaezYsUpNTZWT0/8ba8rKylKnTp303Xff6dVXX1WjRo30888/a8yYMYqKitKPP/4od3f3m97r75YtW6bHH39cvr6++uCDDyRd+z8DknTu3Dk1atRIaWlpGj9+vMqXL68VK1Zo6NChOnbsmK19tjt5//zd7Nmz9dxzzykyMlIffvihSpUqpSNHjmj//v22Np9//rl69Oih1q1b64svvlBqaqomTZpk+2egSZMmt/3M2ff0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FHI7Zs+eLTc3twKx3CZgJkasAeSp9u3ba+rUqerevbuef/55XbhwQZMnT84RvMw4t0yZMurYsaPGjh2roKAgffbZZ1q3bp0mTpx4W4HgkUce0fjx4zVmzBhFRkbq8OHDevPNN1WhQgVlZGTY2j333HNyd3dX48aNFRQUpDNnzig2Nla+vr6qX7/+Le9TrFgxtWrVSoMHD1ZWVpYmTpyo5ORkjRs37pbn3q0333xT3377rZo1a6Y33nhDYWFhunTpklavXq3BgwerevXqNz1/6dKlcnZ2VqtWrWyrgoSHh+uJJ56QdC3AlShRQi+88ILGjBkjFxcXLVy4MMcfPNdTvnx5vfnmmxoxYoSOHz+uhx9+WCVKlNDvv/+uH374QZ6enho3bpz27t2r/v37q2vXrqpSpYpcXV21YcMG7d27V6+//voNr+/k5KTx48fr2Wef1aOPPqrnnntOly5dsq0i83dPPfWUFi5cqHbt2mngwIFq0KCBXFxc9Msvv2jjxo3q1KnTHX/hSVhYmBYtWqQvv/xSFStWlJubm8LCwjRo0CAtWLBA7du315tvvqmQkBCtXLlSH3zwgV588UVVrVrV7jq5ef94eXlpypQpevbZZ9WyZUs999xzKl26tH766Sft2bNHM2bMkJOTkyZNmqQePXrokUceUb9+/ZSamqp33nlHly5duu1vTvztt9+0evVqPfnkk7c9wg0UGo797CSAgix75YHt27fftN2cOXOMatWqGVar1ahYsaIRGxtrzJ49227VAsO4/uoKt3tuSEiI0b59e2Px4sXG/fffb7i6uhrly5c3pk6dane97FVBvv766xx1pqamGkOHDjXKli1ruLm5GXXq1DGWL19u9O7d227FiPnz5xvNmzc3Spcubbi6uhplypQxnnjiCWPv3r037YfsVR0mTpxojBs3zihXrpzh6upqPPDAA8aaNWvs2mavmHHu3Lkc17nRqiDt27fP0fZ6fXrq1Cmjb9++RmBgoOHi4mKr//fff7er83qrguzYscPo0KGD4eXlZXh7exvdunWznZctISHBiIiIMDw8PIyAgADj2WefNXbu3HnDa/7T8uXLjebNmxs+Pj6G1Wo1QkJCjMcff9z4v//7P8MwDOP33383oqOjjerVqxuenp6Gl5eXUatWLWPatGlGRkZGzo7/h08++cSoUqWK4erqalStWtWY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du7cqeHDh2vQoEFat26dJMkwDLVv315nzpzRqlWrtGPHDtWpU0ctWrTQH3/8YbvGTz/9pK+++kpLlizR7t27r3uf1NRUJScn220AAAAoHJwdXcDdOn36tDIyMtSlSxeFhIRIksLCwu7oGo0bN9brr78uSapataq2bNmiadOmqVWrVtq4caP27duns2fPymq1SpImT56s5cuXa/HixXr++eclSWlpafr0008VEBBww/vExsZq3LhxuXlMAAAA5HMFfsQ6PDxcLVq0UFhYmLp27apZs2bp4sWLd3SNiIiIHK8PHTokSdqxY4euXLkif39/eXl52bYTJ07o2LFjtnNCQkJuGqolafjw4UpKSrJtp06duqM6AQAAkH8V+BHrYsWKad26dUpISNDatWv1/vvva8SIEdq2bZucnJxyTAm53Q8WWiwWSVJWVpaCgoIUFxeXo03x4sVtP3t6et7ymlar1TbqDQAAgMKlwAdr6VoIbty4sRo3bqzRo0crJCREy5YtU0BAgE6fPm1rl5mZqf3796t58+Z252/dujXH6+rVq0uS6tSpozNnzsjZ2Vnly5fP82cBAABAwVTgg/W2bdu0fv16tW7dWqVKldK2bdt07tw51ahRQ56enho8eLBWrlypSpUqadq0abp06VKOa2zZskWTJk1S586dtW7dOn399ddauXKlJKlly5aKiIhQ586dNXHiRFWrVk2//fabVq1apc6dO6tevXr3+IkBAACQHxX4YO3j46NNmzZp+vTpSk5OVkhIiKZMmaK2bdsqPT1de/bsUa9eveTs7KxBgwblGK2WpCFDhmjHjh0aN26cvL29NWXKFLVp00bStdHwVatWacSIEerbt6/OnTunwMBANWvWTKVLl77XjwsAAIB8ymIU8QWXy5cvr5iYmBzrXd8LycnJ8vX1VXDMV3Kyetzz+wMAUBgkTmjv6BJQiGXntaSkJPn4+Ny0bYFfFQQAAADIDwjWAAAAgAkK/Bzru5WYmOjoEgAAAFAIMGINAAAAmIBgDQAAAJiAYA0AAACYgGANAAAAmIBgDQAAAJigyK8Kkh/sH9fmlguOAwAAIH9jxBoAAAAwAcEaAAAAMAHBGgAAADABwRoAAAAwAcEaAAAAMAHBGgAAADABy+3lAzXHrJGT1cPRZQAAkGcSJ7R3dAlAnmPEGgAAADABwRoAAAAwAcEaAAAAMAHBGgAAADABwRoAAAAwAcEaAAAAMAHBGgAAADABwRoAAAAwAcH6H6KiohQTE+PoMgAAAFDAEKwBAAAAExCsAQAAABMU6WCdkpKiXr16ycvLS0FBQZoyZYrd8c8++0z16tWTt7e3AgMD1b17d509e1aSZBiGKleurMmTJ9uds3//fjk5OenYsWP37DkAAADgeEU6WA8bNkwbN27UsmXLtHbtWsXFxWnHjh2242lpaRo/frz27Nmj5cuX68SJE4qOjpYkWSwW9e3bV3PnzrW75pw5c9S0aVNVqlQpx/1SU1OVnJxstwEAAKBwKLLB+sqVK5o9e7YmT56sVq1aKSwsTPPnz1dmZqatTd++fdW2bVtVrFhRDz74oN577z19++23unLliiSpT58+Onz4sH744QdJUnp6uj777DP17dv3uveMjY2Vr6+vbQsODs77BwUAAMA9UWSD9bFjx5SWlqaIiAjbPj8/P1WrVs32eteuXerUqZNCQkLk7e2tqKgoSdLJkyclSUFBQWrfvr3mzJkjSVqxYoX++usvde3a9br3HD58uJKSkmzbqVOn8ujpAAAAcK8V2WBtGMZNj6ekpKh169by8vLSZ599pu3bt2vZsmWSrk0Ryfbss89q0aJFunr1qubOnasnn3xSHh4e172m1WqVj4+P3QYAAIDCocgG68qVK8vFxUVbt2617bt48aKOHDkiSfrf//6n8+fPa8KECWratKmqV69u++Di37Vr106enp6aOXOmvv322xtOAwEAAEDh5uzoAhzFy8tLzzzzjIYNGyZ/f3+VLl1aI0aMkJPTtb817rvvPrm6uur999/XCy+8oP3792v8+PE5rlOsWDFFR0dr+PDhqly5st3UEgAAABQdRXbEWpLeeecdNWvWTB07dlTLli3VpEkT1a1bV5IUEBCgefPm6euvv1ZoaKgmTJiQY2m9bM8884zS0tIYrQYAACjCLMatJhvjlrZs2aKoqCj98ssvKl269G2fl5ycfG11kJiv5GS9/rxsAAAKg8QJ7R1dApAr2XktKSnplp+PK7JTQcyQmpqqU6dOadSoUXriiSfuKFQDAACgcCnSU0Hu1hdffKFq1aopKSlJkyZNcnQ5AAAAcCCC9V2Ijo5WZmamduzYobJlyzq6HAAAADgQwRoAAAAwAcEaAAAAMAHBGgAAADABwRoAAAAwAcvt5QP7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",
            "text/plain": [
              "<Figure size 800x500 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "# Mostramos todos los tópicos uno a uno\n",
        "for indice_topico in range(numero_topicos):\n",
        "    graficar_topico(modelo_lda, vocabulario, indice_topico=indice_topico, numero_palabras=10)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "0c192cfa",
      "metadata": {
        "id": "0c192cfa"
      },
      "source": [
        "## 9. Distribución de tópicos por documento\n",
        "\n",
        "LDA no asigna necesariamente un único tópico a cada documento.\n",
        "\n",
        "En su lugar, estima una distribución de tópicos para cada documento.\n",
        "\n",
        "Esto significa que cada documento se representa como una combinación de los tópicos aprendidos por el modelo.\n",
        "\n",
        "Por ejemplo:\n",
        "\n",
        "- Documento A: 70% política, 20% economía, 10% viajes.\n",
        "- Documento B: 60% deporte, 25% entretenimiento, 15% política.\n",
        "\n",
        "Para obtener esta información usaremos el método `transform()` del modelo LDA:\n",
        "\n",
        "`distribucion_documentos = modelo_lda.transform(matriz_conteos)`\n",
        "\n",
        "Este método aplica el modelo LDA ya entrenado sobre la matriz documento-término con conteos.\n",
        "\n",
        "El resultado es una matriz documento-tópico.\n",
        "\n",
        "En esta matriz:\n",
        "\n",
        "- Cada fila representa un documento.\n",
        "- Cada columna representa un tópico aprendido por LDA.\n",
        "- Cada celda contiene la proporción o peso de ese tópico en ese documento.\n",
        "\n",
        "Por ejemplo, si el corpus tiene 3924 documentos y el modelo se ha entrenado con 8 tópicos, la matriz tendrá dimensiones `(3924, 8)`.\n",
        "\n",
        "Esto significa que cada documento queda representado mediante 8 valores, uno por cada tópico.\n",
        "\n",
        "Cada fila suma aproximadamente 1, porque representa una distribución de probabilidad sobre los tópicos.\n",
        "\n",
        "Por ejemplo, una fila podría ser:\n",
        "\n",
        "`[0.05, 0.02, 0.70, 0.04, 0.03, 0.10, 0.03, 0.03]`\n",
        "\n",
        "En ese caso, el tópico dominante del documento sería el tópico 2 (tercera columna), porque es el que tiene mayor peso.\n",
        "\n",
        "A continuación obtendremos esta distribución para todos los documentos del corpus."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 34,
      "id": "fcdc5cb9",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fcdc5cb9",
        "outputId": "1905bcce-7ce6-434c-e653-2c6cade31799"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones de la matriz documento-tópico:\n",
            "(3924, 8)\n"
          ]
        }
      ],
      "source": [
        "# Transformamos la matriz de conteos para obtener la distribución de tópicos por documento\n",
        "distribucion_documentos = modelo_lda.transform(matriz_conteos)\n",
        "\n",
        "# Salida: matriz con forma (nº documentos, nº tópicos).\n",
        "# Cada fila representa un documento.\n",
        "# Cada columna representa un tópico.\n",
        "# Cada celda contiene la proporción o peso de ese tópico en ese documento.\n",
        "# Los valores de cada fila suman aproximadamente 1.\n",
        "print(\"Dimensiones de la matriz documento-tópico:\")\n",
        "print(distribucion_documentos.shape)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 35,
      "id": "a3d5c570",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 574
        },
        "id": "a3d5c570",
        "outputId": "7ac63565-a899-495b-c348-89d51a9b8da1"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>text</th>\n",
              "      <th>processed_text</th>\n",
              "      <th>topic_0</th>\n",
              "      <th>topic_1</th>\n",
              "      <th>topic_2</th>\n",
              "      <th>topic_3</th>\n",
              "      <th>topic_4</th>\n",
              "      <th>topic_5</th>\n",
              "      <th>topic_6</th>\n",
              "      <th>topic_7</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>How to Manage Your Personal Brand</td>\n",
              "      <td>Make no mistake: If you have a Facebook accoun...</td>\n",
              "      <td>How to Manage Your Personal Brand. Make no mis...</td>\n",
              "      <td>manage personal brand mistake facebook account...</td>\n",
              "      <td>0.005444</td>\n",
              "      <td>0.005445</td>\n",
              "      <td>0.005446</td>\n",
              "      <td>0.005447</td>\n",
              "      <td>0.005449</td>\n",
              "      <td>0.005440</td>\n",
              "      <td>0.961877</td>\n",
              "      <td>0.005453</td>\n",
              "      <td>6</td>\n",
              "      <td>0.961877</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>It Looks Like Uber's Winning Its War With New ...</td>\n",
              "      <td>Grab the popcorn.</td>\n",
              "      <td>It Looks Like Uber's Winning Its War With New ...</td>\n",
              "      <td>looks uber winning war york grab popcorn</td>\n",
              "      <td>0.017901</td>\n",
              "      <td>0.017900</td>\n",
              "      <td>0.017867</td>\n",
              "      <td>0.017866</td>\n",
              "      <td>0.017861</td>\n",
              "      <td>0.017867</td>\n",
              "      <td>0.017859</td>\n",
              "      <td>0.874879</td>\n",
              "      <td>7</td>\n",
              "      <td>0.874879</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>The Progressive Promise of Today's Technology</td>\n",
              "      <td>A digital policy for the new century, tailored...</td>\n",
              "      <td>The Progressive Promise of Today's Technology....</td>\n",
              "      <td>progressive promise today technology digital p...</td>\n",
              "      <td>0.005004</td>\n",
              "      <td>0.964974</td>\n",
              "      <td>0.005003</td>\n",
              "      <td>0.005003</td>\n",
              "      <td>0.005004</td>\n",
              "      <td>0.005006</td>\n",
              "      <td>0.005004</td>\n",
              "      <td>0.005002</td>\n",
              "      <td>1</td>\n",
              "      <td>0.964974</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>Don't Let These 5 Confusing Words Mar Your Image</td>\n",
              "      <td>Tom's an articulate physician, totally able to...</td>\n",
              "      <td>Don't Let These 5 Confusing Words Mar Your Ima...</td>\n",
              "      <td>let confusing words mar image tom articulate p...</td>\n",
              "      <td>0.006957</td>\n",
              "      <td>0.476840</td>\n",
              "      <td>0.006960</td>\n",
              "      <td>0.237759</td>\n",
              "      <td>0.006951</td>\n",
              "      <td>0.250616</td>\n",
              "      <td>0.006966</td>\n",
              "      <td>0.006951</td>\n",
              "      <td>1</td>\n",
              "      <td>0.476840</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>What You Don't Know About Overnight Success</td>\n",
              "      <td>I've been fighting this thing for 32 years. \"O...</td>\n",
              "      <td>What You Don't Know About Overnight Success. I...</td>\n",
              "      <td>know overnight success fighting thing overnigh...</td>\n",
              "      <td>0.007357</td>\n",
              "      <td>0.007358</td>\n",
              "      <td>0.007361</td>\n",
              "      <td>0.007360</td>\n",
              "      <td>0.948491</td>\n",
              "      <td>0.007359</td>\n",
              "      <td>0.007357</td>\n",
              "      <td>0.007358</td>\n",
              "      <td>4</td>\n",
              "      <td>0.948491</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   category                                           headline  \\\n",
              "0  BUSINESS                  How to Manage Your Personal Brand   \n",
              "1  BUSINESS  It Looks Like Uber's Winning Its War With New ...   \n",
              "2  BUSINESS      The Progressive Promise of Today's Technology   \n",
              "3  BUSINESS   Don't Let These 5 Confusing Words Mar Your Image   \n",
              "4  BUSINESS        What You Don't Know About Overnight Success   \n",
              "\n",
              "                                   short_description  \\\n",
              "0  Make no mistake: If you have a Facebook accoun...   \n",
              "1                                  Grab the popcorn.   \n",
              "2  A digital policy for the new century, tailored...   \n",
              "3  Tom's an articulate physician, totally able to...   \n",
              "4  I've been fighting this thing for 32 years. \"O...   \n",
              "\n",
              "                                                text  \\\n",
              "0  How to Manage Your Personal Brand. Make no mis...   \n",
              "1  It Looks Like Uber's Winning Its War With New ...   \n",
              "2  The Progressive Promise of Today's Technology....   \n",
              "3  Don't Let These 5 Confusing Words Mar Your Ima...   \n",
              "4  What You Don't Know About Overnight Success. I...   \n",
              "\n",
              "                                      processed_text   topic_0   topic_1  \\\n",
              "0  manage personal brand mistake facebook account...  0.005444  0.005445   \n",
              "1           looks uber winning war york grab popcorn  0.017901  0.017900   \n",
              "2  progressive promise today technology digital p...  0.005004  0.964974   \n",
              "3  let confusing words mar image tom articulate p...  0.006957  0.476840   \n",
              "4  know overnight success fighting thing overnigh...  0.007357  0.007358   \n",
              "\n",
              "    topic_2   topic_3   topic_4   topic_5   topic_6   topic_7  dominant_topic  \\\n",
              "0  0.005446  0.005447  0.005449  0.005440  0.961877  0.005453               6   \n",
              "1  0.017867  0.017866  0.017861  0.017867  0.017859  0.874879               7   \n",
              "2  0.005003  0.005003  0.005004  0.005006  0.005004  0.005002               1   \n",
              "3  0.006960  0.237759  0.006951  0.250616  0.006966  0.006951               1   \n",
              "4  0.007361  0.007360  0.948491  0.007359  0.007357  0.007358               4   \n",
              "\n",
              "   dominant_topic_weight  \n",
              "0               0.961877  \n",
              "1               0.874879  \n",
              "2               0.964974  \n",
              "3               0.476840  \n",
              "4               0.948491  "
            ]
          },
          "execution_count": 35,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Creamos columnas con el peso de cada tópico en cada documento\n",
        "\n",
        "# Variables de partida:\n",
        "# - df_reducido: información original y procesada de cada noticia\n",
        "# - distribucion_documentos: distribución de tópicos que LDA ha estimado por documento\n",
        "\n",
        "df_topicos_documentos = df_reducido[[\"category\", \"headline\", \"short_description\", \"text\", \"processed_text\"]].copy()\n",
        "\n",
        "# Para cada tópico crea una nueva columna topic_nº y la añade a los datos procesados de partida\n",
        "for indice_topico in range(numero_topicos):\n",
        "    nombre_columna = f\"topic_{indice_topico}\"\n",
        "    df_topicos_documentos[nombre_columna] = distribucion_documentos[:, indice_topico]\n",
        "\n",
        "# Añadimos dos columnas relacionadas con el tópico mayoritario (nº de tópico y su peso)\n",
        "df_topicos_documentos[\"dominant_topic\"] = distribucion_documentos.argmax(axis=1)\n",
        "df_topicos_documentos[\"dominant_topic_weight\"] = distribucion_documentos.max(axis=1)\n",
        "\n",
        "df_topicos_documentos.head()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "564699ec",
      "metadata": {
        "id": "564699ec"
      },
      "source": [
        "### 9.1. Documentos representativos por tópico\n",
        "\n",
        "Un documento representativo de un tópico es un documento donde ese tópico tiene un peso alto.\n",
        "\n",
        "Revisar documentos representativos ayuda a interpretar mejor cada tópico."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 36,
      "id": "7cfa8fb3",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 293
        },
        "id": "7cfa8fb3",
        "outputId": "6e04da3a-3e00-43fa-944d-06a184745891"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_0</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>846</th>\n",
              "      <td>ENTERTAINMENT</td>\n",
              "      <td>Love Him or Hate Him: Entrepreneurs Can Learn ...</td>\n",
              "      <td>Entrepreneurs who are just starting out should...</td>\n",
              "      <td>0.970806</td>\n",
              "      <td>0</td>\n",
              "      <td>0.970806</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>204</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>Maybe The Federal Reserve Has Been Right About...</td>\n",
              "      <td>Hard as it may be for its legion of economic, ...</td>\n",
              "      <td>0.964961</td>\n",
              "      <td>0</td>\n",
              "      <td>0.964961</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3530</th>\n",
              "      <td>WELLNESS</td>\n",
              "      <td>Does Memory Training Really Work?</td>\n",
              "      <td>The latest research suggests memory training d...</td>\n",
              "      <td>0.964952</td>\n",
              "      <td>0</td>\n",
              "      <td>0.964952</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1699</th>\n",
              "      <td>POLITICS</td>\n",
              "      <td>States Must Find Way to Do Right by Home Care ...</td>\n",
              "      <td>When does justice delayed become justice denie...</td>\n",
              "      <td>0.960181</td>\n",
              "      <td>0</td>\n",
              "      <td>0.960181</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3746</th>\n",
              "      <td>WELLNESS</td>\n",
              "      <td>Birth and Death</td>\n",
              "      <td>Lola taught me how to handle adversity and Luc...</td>\n",
              "      <td>0.958258</td>\n",
              "      <td>0</td>\n",
              "      <td>0.958258</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "           category                                           headline  \\\n",
              "846   ENTERTAINMENT  Love Him or Hate Him: Entrepreneurs Can Learn ...   \n",
              "204        BUSINESS  Maybe The Federal Reserve Has Been Right About...   \n",
              "3530       WELLNESS                  Does Memory Training Really Work?   \n",
              "1699       POLITICS  States Must Find Way to Do Right by Home Care ...   \n",
              "3746       WELLNESS                                    Birth and Death   \n",
              "\n",
              "                                      short_description   topic_0  \\\n",
              "846   Entrepreneurs who are just starting out should...  0.970806   \n",
              "204   Hard as it may be for its legion of economic, ...  0.964961   \n",
              "3530  The latest research suggests memory training d...  0.964952   \n",
              "1699  When does justice delayed become justice denie...  0.960181   \n",
              "3746  Lola taught me how to handle adversity and Luc...  0.958258   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "846                0               0.970806  \n",
              "204                0               0.964961  \n",
              "3530               0               0.964952  \n",
              "1699               0               0.960181  \n",
              "3746               0               0.958258  "
            ]
          },
          "execution_count": 36,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "def mostrar_documentos_representativos(df_resultados, indice_topico, numero_documentos=5):\n",
        "    columna_topico = f\"topic_{indice_topico}\"\n",
        "\n",
        "    columnas_mostrar = [\n",
        "        \"category\",\n",
        "        \"headline\",\n",
        "        \"short_description\",\n",
        "        columna_topico,\n",
        "        \"dominant_topic\",\n",
        "        \"dominant_topic_weight\"\n",
        "    ]\n",
        "\n",
        "    # Ordena los documentos en base a la columna del tópico asociada al índice de tópico indicado como parámetro\n",
        "    documentos = (\n",
        "        df_resultados\n",
        "        .sort_values(by=columna_topico, ascending=False)\n",
        "        .head(numero_documentos)\n",
        "    )\n",
        "\n",
        "    return documentos[columnas_mostrar]\n",
        "\n",
        "# Ejemplo: documentos más representativos del tópico 0\n",
        "mostrar_documentos_representativos(df_topicos_documentos, indice_topico=0, numero_documentos=5)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 37,
      "id": "be2a533f",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "be2a533f",
        "outputId": "ffa16c14-4429-485f-b229-a9f90b483043"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "TÓPICO 0\n",
            "- Palabras principales:\n",
            "trump, donald, president, obama, clinton, house, court, gop, hillary, may, photos, republican\n",
            "\n",
            "- Documentos representativos:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_0</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>846</th>\n",
              "      <td>ENTERTAINMENT</td>\n",
              "      <td>Love Him or Hate Him: Entrepreneurs Can Learn ...</td>\n",
              "      <td>Entrepreneurs who are just starting out should...</td>\n",
              "      <td>0.970806</td>\n",
              "      <td>0</td>\n",
              "      <td>0.970806</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>204</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>Maybe The Federal Reserve Has Been Right About...</td>\n",
              "      <td>Hard as it may be for its legion of economic, ...</td>\n",
              "      <td>0.964961</td>\n",
              "      <td>0</td>\n",
              "      <td>0.964961</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3530</th>\n",
              "      <td>WELLNESS</td>\n",
              "      <td>Does Memory Training Really Work?</td>\n",
              "      <td>The latest research suggests memory training d...</td>\n",
              "      <td>0.964952</td>\n",
              "      <td>0</td>\n",
              "      <td>0.964952</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "           category                                           headline  \\\n",
              "846   ENTERTAINMENT  Love Him or Hate Him: Entrepreneurs Can Learn ...   \n",
              "204        BUSINESS  Maybe The Federal Reserve Has Been Right About...   \n",
              "3530       WELLNESS                  Does Memory Training Really Work?   \n",
              "\n",
              "                                      short_description   topic_0  \\\n",
              "846   Entrepreneurs who are just starting out should...  0.970806   \n",
              "204   Hard as it may be for its legion of economic, ...  0.964961   \n",
              "3530  The latest research suggests memory training d...  0.964952   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "846                0               0.970806  \n",
              "204                0               0.964961  \n",
              "3530               0               0.964952  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "TÓPICO 1\n",
            "- Palabras principales:\n",
            "first, star, life, way, uber, data, nfl, olympic, sports, night, best, world\n",
            "\n",
            "- Documentos representativos:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_1</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>3781</th>\n",
              "      <td>WELLNESS</td>\n",
              "      <td>ACEs: Adverse Childhood Experiences -- and Pro...</td>\n",
              "      <td>Many youth experience events in their early li...</td>\n",
              "      <td>0.967553</td>\n",
              "      <td>1</td>\n",
              "      <td>0.967553</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>The Progressive Promise of Today's Technology</td>\n",
              "      <td>A digital policy for the new century, tailored...</td>\n",
              "      <td>0.964974</td>\n",
              "      <td>1</td>\n",
              "      <td>0.964974</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>44</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>What Is the Optimal Credit Score?</td>\n",
              "      <td>Truthfully, the highest credit score is not th...</td>\n",
              "      <td>0.964951</td>\n",
              "      <td>1</td>\n",
              "      <td>0.964951</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "      category                                           headline  \\\n",
              "3781  WELLNESS  ACEs: Adverse Childhood Experiences -- and Pro...   \n",
              "2     BUSINESS      The Progressive Promise of Today's Technology   \n",
              "44    BUSINESS                  What Is the Optimal Credit Score?   \n",
              "\n",
              "                                      short_description   topic_1  \\\n",
              "3781  Many youth experience events in their early li...  0.967553   \n",
              "2     A digital policy for the new century, tailored...  0.964974   \n",
              "44    Truthfully, the highest credit score is not th...  0.964951   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "3781               1               0.967553  \n",
              "2                  1               0.964974  \n",
              "44                 1               0.964951  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "TÓPICO 2\n",
            "- Palabras principales:\n",
            "city, things, photos, york, best, study, every, back, business, world, getting, google\n",
            "\n",
            "- Documentos representativos:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_2</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>3420</th>\n",
              "      <td>TRAVEL</td>\n",
              "      <td>Five Things You Must Buy in the Caribbean -&nbsp;&nbsp;A...</td>\n",
              "      <td>Step away from the two-for-$20 T-shirts, the m...</td>\n",
              "      <td>0.967551</td>\n",
              "      <td>2</td>\n",
              "      <td>0.967551</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>376</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>The Odd Couple In Today's Office:&nbsp;&nbsp;Millennials...</td>\n",
              "      <td>The term 'reverse mentor' was coined and first...</td>\n",
              "      <td>0.967547</td>\n",
              "      <td>2</td>\n",
              "      <td>0.967547</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>218</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>4 Things They Don't Teach You in MBA Programs ...</td>\n",
              "      <td>Having spent six years in two different colleg...</td>\n",
              "      <td>0.964956</td>\n",
              "      <td>2</td>\n",
              "      <td>0.964956</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "      category                                           headline  \\\n",
              "3420    TRAVEL  Five Things You Must Buy in the Caribbean -  A...   \n",
              "376   BUSINESS  The Odd Couple In Today's Office:  Millennials...   \n",
              "218   BUSINESS  4 Things They Don't Teach You in MBA Programs ...   \n",
              "\n",
              "                                      short_description   topic_2  \\\n",
              "3420  Step away from the two-for-$20 T-shirts, the m...  0.967551   \n",
              "376   The term 'reverse mentor' was coined and first...  0.967547   \n",
              "218   Having spent six years in two different colleg...  0.964956   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "3420               2               0.967551  \n",
              "376                2               0.967547  \n",
              "218                2               0.964956  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "TÓPICO 3\n",
            "- Palabras principales:\n",
            "apple, week, iphone, back, help, best, travel, life, ways, rumors, first, company\n",
            "\n",
            "- Documentos representativos:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_3</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>715</th>\n",
              "      <td>ENTERTAINMENT</td>\n",
              "      <td>The Second Best Exotic Marigold Hotel: A Movie...</td>\n",
              "      <td>The return viewer to The Best Exotic Marigold ...</td>\n",
              "      <td>0.971728</td>\n",
              "      <td>3</td>\n",
              "      <td>0.971728</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3088</th>\n",
              "      <td>TRAVEL</td>\n",
              "      <td>5 Secrets To Having a Smarter -- and Happier -...</td>\n",
              "      <td>Money can destroy your trip, but not necessari...</td>\n",
              "      <td>0.967554</td>\n",
              "      <td>3</td>\n",
              "      <td>0.967554</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2460</th>\n",
              "      <td>TECH</td>\n",
              "      <td>App Neutrality Should Be Part of the Net Neutr...</td>\n",
              "      <td>I bet you think the mobile Internet is open. T...</td>\n",
              "      <td>0.966294</td>\n",
              "      <td>3</td>\n",
              "      <td>0.966294</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "           category                                           headline  \\\n",
              "715   ENTERTAINMENT  The Second Best Exotic Marigold Hotel: A Movie...   \n",
              "3088         TRAVEL  5 Secrets To Having a Smarter -- and Happier -...   \n",
              "2460           TECH  App Neutrality Should Be Part of the Net Neutr...   \n",
              "\n",
              "                                      short_description   topic_3  \\\n",
              "715   The return viewer to The Best Exotic Marigold ...  0.971728   \n",
              "3088  Money can destroy your trip, but not necessari...  0.967554   \n",
              "2460  I bet you think the mobile Internet is open. T...  0.966294   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "715                3               0.971728  \n",
              "3088               3               0.967554  \n",
              "2460               3               0.966294  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "TÓPICO 4\n",
            "- Palabras principales:\n",
            "food, photos, facebook, think, holiday, well, know, eat, weight, recipes, need, billion\n",
            "\n",
            "- Documentos representativos:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_4</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>265</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>Let's Talk Toilet Paper</td>\n",
              "      <td>I once worked in a Fortune 500 paper mill that...</td>\n",
              "      <td>0.972627</td>\n",
              "      <td>4</td>\n",
              "      <td>0.972627</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3522</th>\n",
              "      <td>WELLNESS</td>\n",
              "      <td>What Would YOU Do With A Second Chance In Life?</td>\n",
              "      <td>On Dec. 26, 2004, my life changed forever. Tha...</td>\n",
              "      <td>0.967530</td>\n",
              "      <td>4</td>\n",
              "      <td>0.967530</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3830</th>\n",
              "      <td>WELLNESS</td>\n",
              "      <td>Meditation Tips: Does Meditation Have to Be Se...</td>\n",
              "      <td>Some people think that their thoughts and feel...</td>\n",
              "      <td>0.964964</td>\n",
              "      <td>4</td>\n",
              "      <td>0.964964</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "      category                                           headline  \\\n",
              "265   BUSINESS                            Let's Talk Toilet Paper   \n",
              "3522  WELLNESS    What Would YOU Do With A Second Chance In Life?   \n",
              "3830  WELLNESS  Meditation Tips: Does Meditation Have to Be Se...   \n",
              "\n",
              "                                      short_description   topic_4  \\\n",
              "265   I once worked in a Fortune 500 paper mill that...  0.972627   \n",
              "3522  On Dec. 26, 2004, my life changed forever. Tha...  0.967530   \n",
              "3830  Some people think that their thoughts and feel...  0.964964   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "265                4               0.972627  \n",
              "3522               4               0.967530  \n",
              "3830               4               0.964964  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "TÓPICO 5\n",
            "- Palabras principales:\n",
            "health, healthy, may, keep, take, want, good, game, cancer, companies, even, still\n",
            "\n",
            "- Documentos representativos:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_5</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>1497</th>\n",
              "      <td>POLITICS</td>\n",
              "      <td>Reflections on Justice After Ferguson, MO:&nbsp;&nbsp;Wh...</td>\n",
              "      <td>It turns out that justice, like so much of wha...</td>\n",
              "      <td>0.974966</td>\n",
              "      <td>5</td>\n",
              "      <td>0.974966</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3769</th>\n",
              "      <td>WELLNESS</td>\n",
              "      <td>Better Data Will Lead to Better Care for Those...</td>\n",
              "      <td>People living with multiple chronic conditions...</td>\n",
              "      <td>0.969798</td>\n",
              "      <td>5</td>\n",
              "      <td>0.969798</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2153</th>\n",
              "      <td>SPORTS</td>\n",
              "      <td>NFL-Backed Youth Program Says It Reduced Concu...</td>\n",
              "      <td>As increasing numbers of parents keep their ch...</td>\n",
              "      <td>0.963505</td>\n",
              "      <td>5</td>\n",
              "      <td>0.963505</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "      category                                           headline  \\\n",
              "1497  POLITICS  Reflections on Justice After Ferguson, MO:  Wh...   \n",
              "3769  WELLNESS  Better Data Will Lead to Better Care for Those...   \n",
              "2153    SPORTS  NFL-Backed Youth Program Says It Reduced Concu...   \n",
              "\n",
              "                                      short_description   topic_5  \\\n",
              "1497  It turns out that justice, like so much of wha...  0.974966   \n",
              "3769  People living with multiple chronic conditions...  0.969798   \n",
              "2153  As increasing numbers of parents keep their ch...  0.963505   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "1497               5               0.974966  \n",
              "3769               5               0.969798  \n",
              "2153               5               0.963505  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "TÓPICO 6\n",
            "- Palabras principales:\n",
            "world, day, first, state, little, best, play, stress, way, around, video, facebook\n",
            "\n",
            "- Documentos representativos:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_6</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>775</th>\n",
              "      <td>ENTERTAINMENT</td>\n",
              "      <td>Filmmaker Fights the Stigma Against Mental Ill...</td>\n",
              "      <td>The best thing about the #MyMentalHealthStory ...</td>\n",
              "      <td>0.971730</td>\n",
              "      <td>6</td>\n",
              "      <td>0.971730</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>BUSINESS</td>\n",
              "      <td>How Clean Energy Works for Colorado</td>\n",
              "      <td>Smart clean energy policies like Colorado's pe...</td>\n",
              "      <td>0.966309</td>\n",
              "      <td>6</td>\n",
              "      <td>0.966309</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3872</th>\n",
              "      <td>WELLNESS</td>\n",
              "      <td>Can We Predict How Stressed Out You Are From T...</td>\n",
              "      <td>We set up a tracking poll in February to gauge...</td>\n",
              "      <td>0.966305</td>\n",
              "      <td>6</td>\n",
              "      <td>0.966305</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "           category                                           headline  \\\n",
              "775   ENTERTAINMENT  Filmmaker Fights the Stigma Against Mental Ill...   \n",
              "21         BUSINESS                How Clean Energy Works for Colorado   \n",
              "3872       WELLNESS  Can We Predict How Stressed Out You Are From T...   \n",
              "\n",
              "                                      short_description   topic_6  \\\n",
              "775   The best thing about the #MyMentalHealthStory ...  0.971730   \n",
              "21    Smart clean energy policies like Colorado's pe...  0.966309   \n",
              "3872  We set up a tracking poll in February to gauge...  0.966305   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "775                6               0.971730  \n",
              "21                 6               0.966309  \n",
              "3872               6               0.966305  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "TÓPICO 7\n",
            "- Palabras principales:\n",
            "food, super, day, watch, summer, week, bowl, videos, recipe, video, youtube, see\n",
            "\n",
            "- Documentos representativos:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "      <th>headline</th>\n",
              "      <th>short_description</th>\n",
              "      <th>topic_7</th>\n",
              "      <th>dominant_topic</th>\n",
              "      <th>dominant_topic_weight</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>1401</th>\n",
              "      <td>FOOD &amp; DRINK</td>\n",
              "      <td>9 Labor Day Grill Favorites</td>\n",
              "      <td>For most children, Labor Day is a bittersweet ...</td>\n",
              "      <td>0.973444</td>\n",
              "      <td>7</td>\n",
              "      <td>0.973444</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1408</th>\n",
              "      <td>FOOD &amp; DRINK</td>\n",
              "      <td>Labor Day Cocktails</td>\n",
              "      <td>Labor Day weekend is summer's last long weeken...</td>\n",
              "      <td>0.967566</td>\n",
              "      <td>7</td>\n",
              "      <td>0.967566</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3039</th>\n",
              "      <td>TRAVEL</td>\n",
              "      <td>Chefs A-Twitter In London, New York And Paris:...</td>\n",
              "      <td>When planning a trip, I am prejudiced in favor...</td>\n",
              "      <td>0.967545</td>\n",
              "      <td>7</td>\n",
              "      <td>0.967545</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "          category                                           headline  \\\n",
              "1401  FOOD & DRINK                        9 Labor Day Grill Favorites   \n",
              "1408  FOOD & DRINK                                Labor Day Cocktails   \n",
              "3039        TRAVEL  Chefs A-Twitter In London, New York And Paris:...   \n",
              "\n",
              "                                      short_description   topic_7  \\\n",
              "1401  For most children, Labor Day is a bittersweet ...  0.973444   \n",
              "1408  Labor Day weekend is summer's last long weeken...  0.967566   \n",
              "3039  When planning a trip, I am prejudiced in favor...  0.967545   \n",
              "\n",
              "      dominant_topic  dominant_topic_weight  \n",
              "1401               7               0.973444  \n",
              "1408               7               0.967566  \n",
              "3039               7               0.967545  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "# Revisamos documentos representativos de todos los tópicos\n",
        "# Un for es un bucle que repite algo varias veces (en este caso, tantas como valores para numero_topicos tengamos)\n",
        "for indice_topico in range(numero_topicos):\n",
        "    print(\"=\" * 120)\n",
        "    print(f\"TÓPICO {indice_topico}\")\n",
        "    print(\"- Palabras principales:\")\n",
        "    print(tabla_topicos.loc[tabla_topicos[\"topic\"] == indice_topico, \"top_words\"].values[0])\n",
        "    print(\"\\n- Documentos representativos:\")\n",
        "    display(mostrar_documentos_representativos(df_topicos_documentos, indice_topico, numero_documentos=3))"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "02fc483e",
      "metadata": {
        "id": "02fc483e"
      },
      "source": [
        "## 10. Comparación con las categorías reales\n",
        "\n",
        "El dataset incluye categorías reales asignadas por HuffPost.\n",
        "\n",
        "LDA no usa esas categorías durante el entrenamiento. Por eso, esta comparación no es una evaluación supervisada, sino una ayuda interpretativa. No siempre tendremos esta ayuda disponible, dependerá del dataset.\n",
        "\n",
        "La pregunta que queremos explorar es:\n",
        "\n",
        "¿los tópicos descubiertos por LDA se parecen a las categorías reales del dataset?"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 38,
      "id": "c53fc65f",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 332
        },
        "id": "c53fc65f",
        "outputId": "b285b7cf-27d4-47c8-9624-8078dc41f275"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th>dominant_topic</th>\n",
              "      <th>0</th>\n",
              "      <th>1</th>\n",
              "      <th>2</th>\n",
              "      <th>3</th>\n",
              "      <th>4</th>\n",
              "      <th>5</th>\n",
              "      <th>6</th>\n",
              "      <th>7</th>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>category</th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>BUSINESS</th>\n",
              "      <td>57</td>\n",
              "      <td>59</td>\n",
              "      <td>69</td>\n",
              "      <td>52</td>\n",
              "      <td>80</td>\n",
              "      <td>73</td>\n",
              "      <td>50</td>\n",
              "      <td>37</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ENTERTAINMENT</th>\n",
              "      <td>51</td>\n",
              "      <td>91</td>\n",
              "      <td>66</td>\n",
              "      <td>75</td>\n",
              "      <td>34</td>\n",
              "      <td>50</td>\n",
              "      <td>71</td>\n",
              "      <td>50</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>FOOD &amp; DRINK</th>\n",
              "      <td>49</td>\n",
              "      <td>28</td>\n",
              "      <td>67</td>\n",
              "      <td>43</td>\n",
              "      <td>118</td>\n",
              "      <td>32</td>\n",
              "      <td>53</td>\n",
              "      <td>109</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>POLITICS</th>\n",
              "      <td>229</td>\n",
              "      <td>30</td>\n",
              "      <td>32</td>\n",
              "      <td>34</td>\n",
              "      <td>23</td>\n",
              "      <td>59</td>\n",
              "      <td>45</td>\n",
              "      <td>39</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>SPORTS</th>\n",
              "      <td>50</td>\n",
              "      <td>103</td>\n",
              "      <td>46</td>\n",
              "      <td>64</td>\n",
              "      <td>30</td>\n",
              "      <td>71</td>\n",
              "      <td>41</td>\n",
              "      <td>80</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TECH</th>\n",
              "      <td>40</td>\n",
              "      <td>67</td>\n",
              "      <td>54</td>\n",
              "      <td>96</td>\n",
              "      <td>76</td>\n",
              "      <td>61</td>\n",
              "      <td>46</td>\n",
              "      <td>58</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>TRAVEL</th>\n",
              "      <td>44</td>\n",
              "      <td>51</td>\n",
              "      <td>76</td>\n",
              "      <td>72</td>\n",
              "      <td>64</td>\n",
              "      <td>45</td>\n",
              "      <td>70</td>\n",
              "      <td>64</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>WELLNESS</th>\n",
              "      <td>34</td>\n",
              "      <td>43</td>\n",
              "      <td>122</td>\n",
              "      <td>41</td>\n",
              "      <td>72</td>\n",
              "      <td>82</td>\n",
              "      <td>68</td>\n",
              "      <td>38</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "dominant_topic    0    1    2   3    4   5   6    7\n",
              "category                                           \n",
              "BUSINESS         57   59   69  52   80  73  50   37\n",
              "ENTERTAINMENT    51   91   66  75   34  50  71   50\n",
              "FOOD & DRINK     49   28   67  43  118  32  53  109\n",
              "POLITICS        229   30   32  34   23  59  45   39\n",
              "SPORTS           50  103   46  64   30  71  41   80\n",
              "TECH             40   67   54  96   76  61  46   58\n",
              "TRAVEL           44   51   76  72   64  45  70   64\n",
              "WELLNESS         34   43  122  41   72  82  68   38"
            ]
          },
          "execution_count": 38,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Tabla de frecuencia entre categoría real y tópico dominante\n",
        "# La función crosstab() cruza dos variables categóricas y cuenta cuántos casos hay en cada combinación\n",
        "# En este caso, cuenta cuántos documentos de cada categoría original tienen cada tópico como tópico dominante\n",
        "tabla_categoria_topico = pd.crosstab(\n",
        "    df_topicos_documentos[\"category\"],\n",
        "    df_topicos_documentos[\"dominant_topic\"]\n",
        ")\n",
        "\n",
        "tabla_categoria_topico"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 39,
      "id": "7e6b6f97",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 565
        },
        "id": "7e6b6f97",
        "outputId": "71f55161-313a-425d-af24-1cba5b741728"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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AIiiWKvtZfZ7RiaTNesxRVF84Xj19Xl+3OcLVkEQ6myrqalp8HgN7bNjxw7Mnj0ba9asgaenJ+RyOVatWoVff/31pceoT01NDYKDgxEZGVnrue7duze4LxER6SeuHBIRUavo0aMHsrKytNpOnjyJHj16aLWdPn261vabb75Z55guLi44fvy41rV+z5iZmcHKyuqljvmMg4MD2rZtq5Xh3r17yM/P12z37NkTVVVVWgVYaWkp8vPz6x23pRw/fhxeXl4IDQ1F37594eDgoLkZT2MYGRlp3RgHAPr164cLFy7AwcGh1sPIyKi5XgIREekQFodERNQqoqOjkZSUhA0bNkCtVuOrr77Crl27MG/ePK1+O3fuxPfff4/8/HwsXboUZ86cqfcmKOHh4SgrK8OECROQk5MDtVqNrVu3ar4+Izo6Gl9++SW2b9+Oy5cvY/78+VCpVIiKiqpzPFNTU0yfPh3R0dE4fPgwzp8/j6CgILRp8++fS0dHR4wePRozZsxAVlaW5sY5b7zxBkaPHt1Ms/VyHBwckJOTg/379yM/Px+LFy9GdnZ2o8exs7PDsWPHcPv2bZSUlAAAPvnkE5w6dQphYWFQqVRQq9VITU1FREREc78MIiLSETytlIiIWoWfnx/i4uKwatUqREZGQqlUIjExEYMHD9bqt3z5ciQnJyM0NBSWlpb48ccf0bNnzzrHtLCwwJEjRxAdHY23334bBgYGcHV11VxnGBkZibKyMsydOxfFxcXo2bMnUlNT4ejoWG/OVatWoby8HKNGjYJcLsfcuXPx4MEDrT6JiYmIiorC+++/j8rKSgwaNAhpaWl1XvvYkkJCQqBSqRAQEABBEDBx4kSEhoYiPT29UePExMQgODgY9vb2ePLkCURRhIuLCzIzM7Fo0SIMHDgQoijC3t4eAQEBLfRqiIhIaoL4MhdYEBERtQJBEJCSkgI/Pz+poxAREb12eFopERERERERsTgkIiIiIiIiXnNIREQ6hFc6EBERSYcrh0RERERERMTikIiIiIiIiFgcEhEREREREVgcEhEREREREVgcEhEREREREVgcEhEREREREVgcEhEREREREVgcEhEREREREVgcEhEREREREYD/AcVuljpt/a53AAAAAElFTkSuQmCC",
            "text/plain": [
              "<Figure size 1000x600 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "plt.figure(figsize=(10, 6))\n",
        "plt.imshow(tabla_categoria_topico, aspect=\"auto\")\n",
        "plt.title(\"Categoría real frente a tópico dominante\")\n",
        "plt.xlabel(\"Tópico dominante\")\n",
        "plt.ylabel(\"Categoría real\")\n",
        "plt.xticks(\n",
        "    ticks=np.arange(tabla_categoria_topico.shape[1]),\n",
        "    labels=tabla_categoria_topico.columns\n",
        ")\n",
        "plt.yticks(\n",
        "    ticks=np.arange(tabla_categoria_topico.shape[0]),\n",
        "    labels=tabla_categoria_topico.index\n",
        ")\n",
        "plt.colorbar(label=\"Número de documentos\")\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "7d7017ee",
      "metadata": {
        "id": "7d7017ee"
      },
      "source": [
        "### 10.1. Interpretación de la comparación\n",
        "\n",
        "La tabla anterior cruza la categoría real del dataset con el tópico dominante de cada documento, es decir, el tópico que tiene mayor peso según LDA.\n",
        "\n",
        "Es importante recordar que LDA no ha usado la categoría real durante el entrenamiento. La categoría solo se utiliza ahora como referencia para interpretar los resultados.\n",
        "\n",
        "En los resultados obtenidos se observan varios comportamientos interesantes.\n",
        "\n",
        "Por un lado, algunas categorías parecen concentrarse con más claridad en determinados tópicos.\n",
        "\n",
        "Por ejemplo, la categoría `POLITICS` aparece muy concentrada en el tópico 0.  \n",
        "Esto sugiere que el modelo ha aprendido un tópico bastante asociado a política, lo cual encaja con las palabras principales observadas en ese tópico.\n",
        "\n",
        "También se observa que `FOOD & DRINK` tiene bastante presencia en los tópicos 4 y 7.  \n",
        "Esto puede indicar que el modelo ha dividido el contenido relacionado con comida en más de un tópico, quizá separando recetas, hábitos, eventos o contenido más general.\n",
        "\n",
        "La categoría `WELLNESS` aparece especialmente asociada al tópico 2, aunque también se reparte entre otros tópicos.  \n",
        "Esto sugiere que el contenido de bienestar puede compartir vocabulario con otros temas, como salud, estilo de vida o alimentación.\n",
        "\n",
        "Por otro lado, algunas categorías aparecen bastante repartidas entre varios tópicos.\n",
        "\n",
        "Por ejemplo, `BUSINESS`, `TRAVEL`, `TECH`, `SPORTS` y `ENTERTAINMENT` no se concentran de forma clara en un único tópico.  \n",
        "Esto puede deberse a que sus documentos contienen vocabulario diverso o comparten términos con otras categorías.\n",
        "\n",
        "Estos resultados muestran una idea importante:\n",
        "\n",
        "- Una categoría real puede dividirse en varios tópicos.\n",
        "- Un tópico puede recoger documentos de varias categorías.\n",
        "- Los tópicos no tienen por qué coincidir exactamente con las categorías del dataset.\n",
        "- LDA descubre patrones de coocurrencia de palabras, no etiquetas predefinidas.\n",
        "\n",
        "Por tanto, la comparación con las categorías reales no debe interpretarse como una evaluación exacta de aciertos y errores.\n",
        "\n",
        "Debe entenderse como una herramienta de apoyo para analizar si los tópicos descubiertos tienen sentido y si capturan parte de la estructura temática del corpus."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "7d9b9485",
      "metadata": {
        "id": "7d9b9485"
      },
      "source": [
        "## 11. Prueba con distintos números de tópicos\n",
        "\n",
        "El número de tópicos es una decisión importante.\n",
        "\n",
        "Si usamos pocos tópicos, varios temas pueden mezclarse.\n",
        "\n",
        "Si usamos demasiados tópicos, un mismo tema puede fragmentarse en varios tópicos parecidos.\n",
        "\n",
        "A continuación entrenaremos varios modelos con distintos valores de `n_components` para comparar resultados."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 40,
      "id": "652ea5e3",
      "metadata": {
        "id": "652ea5e3"
      },
      "outputs": [],
      "source": [
        "def entrenar_y_resumir_lda(matriz, vocabulario, numero_topicos, numero_palabras=8):\n",
        "    modelo = LatentDirichletAllocation(\n",
        "        n_components=numero_topicos,\n",
        "        random_state=42,\n",
        "        learning_method=\"batch\",\n",
        "        max_iter=20\n",
        "    )\n",
        "\n",
        "    modelo.fit(matriz)\n",
        "\n",
        "    tabla = obtener_palabras_topico(\n",
        "        modelo,\n",
        "        vocabulario,\n",
        "        numero_palabras=numero_palabras\n",
        "    )\n",
        "\n",
        "    return modelo, tabla[[\"topic\", \"top_words\"]]"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 41,
      "id": "c4964627",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "c4964627",
        "outputId": "b7568a02-c185-4eef-c1e6-04a01747837e"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con 4 tópicos\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>trump, donald, president, food, may, know, oba...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>facebook, star, first, video, world, state, nf...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>life, world, google, day, food, best, business...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>week, apple, day, photos, want, top, watch, ip...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  trump, donald, president, food, may, know, oba...\n",
              "1      1  facebook, star, first, video, world, state, nf...\n",
              "2      2  life, world, google, day, food, best, business...\n",
              "3      3  week, apple, day, photos, want, top, watch, ip..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con 6 tópicos\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>trump, clinton, better, way, may, know, even, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>star, first, video, state, night, uber, film, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>life, world, things, city, back, take, game, y...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>apple, week, iphone, travel, think, best, hous...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>food, photos, day, recipes, best, holiday, wor...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>trump, health, donald, president, even, good, ...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  trump, clinton, better, way, may, know, even, ...\n",
              "1      1  star, first, video, state, night, uber, film, ...\n",
              "2      2  life, world, things, city, back, take, game, y...\n",
              "3      3  apple, week, iphone, travel, think, best, hous...\n",
              "4      4  food, photos, day, recipes, best, holiday, wor...\n",
              "5      5  trump, health, donald, president, even, good, ..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con 8 tópicos\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>trump, donald, president, obama, clinton, hous...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>first, star, life, way, uber, data, nfl, olymp...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>city, things, photos, york, best, study, every...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>apple, week, iphone, back, help, best, travel,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>food, photos, facebook, think, holiday, well, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>health, healthy, may, keep, take, want, good, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>world, day, first, state, little, best, play, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>food, super, day, watch, summer, week, bowl, v...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  trump, donald, president, obama, clinton, hous...\n",
              "1      1  first, star, life, way, uber, data, nfl, olymp...\n",
              "2      2  city, things, photos, york, best, study, every...\n",
              "3      3  apple, week, iphone, back, help, best, travel,...\n",
              "4      4  food, photos, facebook, think, holiday, well, ...\n",
              "5      5  health, healthy, may, keep, take, want, good, ...\n",
              "6      6  world, day, first, state, little, best, play, ...\n",
              "7      7  food, super, day, watch, summer, week, bowl, v..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con 10 tópicos\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>trump, donald, president, live, way, white, fi...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>first, olympic, sports, star, uber, fans, way,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>things, photos, got, world, google, change, ga...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>travel, apple, nfl, best, think, still, want, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>know, social, want, facebook, job, news, media...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>health, healthy, take, let, eating, good, keep...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>day, world, twitter, facebook, first, sleep, c...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>food, recipes, photos, summer, week, day, reci...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>8</td>\n",
              "      <td>women, life, best, world, things, know, photos...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>9</td>\n",
              "      <td>trump, apple, clinton, court, week, donald, go...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  trump, donald, president, live, way, white, fi...\n",
              "1      1  first, olympic, sports, star, uber, fans, way,...\n",
              "2      2  things, photos, got, world, google, change, ga...\n",
              "3      3  travel, apple, nfl, best, think, still, want, ...\n",
              "4      4  know, social, want, facebook, job, news, media...\n",
              "5      5  health, healthy, take, let, eating, good, keep...\n",
              "6      6  day, world, twitter, facebook, first, sleep, c...\n",
              "7      7  food, recipes, photos, summer, week, day, reci...\n",
              "8      8  women, life, best, world, things, know, photos...\n",
              "9      9  trump, apple, clinton, court, week, donald, go..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "valores_k = [4, 6, 8, 10]\n",
        "\n",
        "resultados_modelos = {}\n",
        "\n",
        "for k in valores_k:\n",
        "    print(\"=\" * 120)\n",
        "    print(f\"Modelo LDA con {k} tópicos\")\n",
        "\n",
        "    modelo_k, tabla_k = entrenar_y_resumir_lda(\n",
        "        matriz_conteos,\n",
        "        vocabulario,\n",
        "        numero_topicos=k,\n",
        "        numero_palabras=10\n",
        "    )\n",
        "\n",
        "    resultados_modelos[k] = {\n",
        "        \"model\": modelo_k,\n",
        "        \"topics\": tabla_k\n",
        "    }\n",
        "\n",
        "    display(tabla_k)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 42,
      "id": "Js9x87P9dG_3",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Js9x87P9dG_3",
        "outputId": "a0ea305b-53bc-4114-87ea-44b895646aef"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "{4: {'model': LatentDirichletAllocation(max_iter=20, n_components=4, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, donald, president, food, may, know, oba...\n",
              "  1      1  facebook, star, first, video, world, state, nf...\n",
              "  2      2  life, world, google, day, food, best, business...\n",
              "  3      3  week, apple, day, photos, want, top, watch, ip...},\n",
              " 6: {'model': LatentDirichletAllocation(max_iter=20, n_components=6, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, clinton, better, way, may, know, even, ...\n",
              "  1      1  star, first, video, state, night, uber, film, ...\n",
              "  2      2  life, world, things, city, back, take, game, y...\n",
              "  3      3  apple, week, iphone, travel, think, best, hous...\n",
              "  4      4  food, photos, day, recipes, best, holiday, wor...\n",
              "  5      5  trump, health, donald, president, even, good, ...},\n",
              " 8: {'model': LatentDirichletAllocation(max_iter=20, n_components=8, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, donald, president, obama, clinton, hous...\n",
              "  1      1  first, star, life, way, uber, data, nfl, olymp...\n",
              "  2      2  city, things, photos, york, best, study, every...\n",
              "  3      3  apple, week, iphone, back, help, best, travel,...\n",
              "  4      4  food, photos, facebook, think, holiday, well, ...\n",
              "  5      5  health, healthy, may, keep, take, want, good, ...\n",
              "  6      6  world, day, first, state, little, best, play, ...\n",
              "  7      7  food, super, day, watch, summer, week, bowl, v...},\n",
              " 10: {'model': LatentDirichletAllocation(max_iter=20, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, donald, president, live, way, white, fi...\n",
              "  1      1  first, olympic, sports, star, uber, fans, way,...\n",
              "  2      2  things, photos, got, world, google, change, ga...\n",
              "  3      3  travel, apple, nfl, best, think, still, want, ...\n",
              "  4      4  know, social, want, facebook, job, news, media...\n",
              "  5      5  health, healthy, take, let, eating, good, keep...\n",
              "  6      6  day, world, twitter, facebook, first, sleep, c...\n",
              "  7      7  food, recipes, photos, summer, week, day, reci...\n",
              "  8      8  women, life, best, world, things, know, photos...\n",
              "  9      9  trump, apple, clinton, court, week, donald, go...}}"
            ]
          },
          "execution_count": 42,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "resultados_modelos"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "97557864",
      "metadata": {
        "id": "97557864"
      },
      "source": [
        "### 11.1. Comparación de configuraciones\n",
        "\n",
        "Al comparar distintos números de tópicos, no debemos fijarnos solo en el valor de `k`.\n",
        "\n",
        "También debemos revisar si los tópicos resultantes son interpretables y útiles para el análisis.\n",
        "\n",
        "En los resultados obtenidos se observa que:\n",
        "\n",
        "- Con `k = 4`, los tópicos son demasiado generales. Algunos mezclan palabras de política, comida, tecnología o entretenimiento dentro del mismo tópico.\n",
        "- Con `k = 6`, empiezan a separarse algunos temas, como comida o tecnología, pero todavía aparecen tópicos mezclados.\n",
        "- Con `k = 8`, aparecen algunos tópicos más claros, como política, salud o comida, aunque todavía hay tópicos con palabras demasiado generales.\n",
        "- Con `k = 10`, algunos temas se fragmentan en varios tópicos parecidos. Por ejemplo, aparecen varios tópicos con palabras relacionadas con Trump, política, tecnología o redes sociales.\n",
        "\n",
        "Esto muestra una idea importante:\n",
        "\n",
        "- Si usamos pocos tópicos, temas diferentes pueden quedar mezclados.\n",
        "- Si usamos demasiados tópicos, un mismo tema puede dividirse en varios tópicos similares.\n",
        "- El mejor valor de `k` no siempre es el que produce más tópicos, sino el que genera tópicos más interpretables y útiles.\n",
        "\n",
        "En esta práctica, `k = 8` parece una opción razonable como punto de partida, porque permite separar algunos temas relevantes sin fragmentar tanto como `k = 10`.\n",
        "\n",
        "Aun así, los resultados todavía podrían mejorar ajustando el preprocesamiento, añadiendo stopwords específicas del corpus o modificando los parámetros del vectorizador.\n",
        "\n",
        "No siempre hay un único valor correcto para el número de tópicos."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "8dk2PUX2NTWx",
      "metadata": {
        "id": "8dk2PUX2NTWx"
      },
      "source": [
        "## 12. Extensión: uso de n-gramas en la representación\n",
        "\n",
        "En el flujo principal hemos construido la matriz documento-término usando únicamente palabras individuales.\n",
        "\n",
        "Es decir, cada término del vocabulario era un unigrama.\n",
        "\n",
        "Sin embargo, algunas expresiones tienen más significado cuando se consideran como secuencias de palabras.\n",
        "\n",
        "Por ejemplo:\n",
        "\n",
        "- `donald trump`\n",
        "- `white house`\n",
        "- `super bowl`\n",
        "- `stock market`\n",
        "- `social media`\n",
        "\n",
        "Si usamos solo palabras individuales, estas expresiones se separan en términos independientes.\n",
        "\n",
        "Con `CountVectorizer` podemos ampliar la representación usando el parámetro `ngram_range`.\n",
        "\n",
        "Por ejemplo:\n",
        "\n",
        "- `ngram_range=(1, 1)`: usa solo unigramas\n",
        "- `ngram_range=(1, 2)`: usa unigramas y bigramas\n",
        "- `ngram_range=(2, 2)`: usa solo bigramas\n",
        "\n",
        "En esta sección probaremos una representación con unigramas y bigramas para comprobar si los tópicos obtenidos son más interpretables.\n",
        "\n",
        "Es importante recordar que aquí no estamos construyendo un modelo probabilístico de n-gramas.\n",
        "\n",
        "Estamos usando n-gramas como términos del vocabulario dentro de la matriz documento-término."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 43,
      "id": "MSZ_ViByNgVU",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "MSZ_ViByNgVU",
        "outputId": "94d00b48-a0ca-4e41-b120-628b9c40587d"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones de la matriz documento-término con unigramas y bigramas:\n",
            "(3924, 2953)\n",
            "\n",
            "Tamaño del vocabulario con n-gramas: 2953\n",
            "\n",
            "Primeros términos del vocabulario:\n",
            "['abc' 'ability' 'able' 'abortion' 'absolutely' 'abuse' 'academy'\n",
            " 'accepted' 'access' 'accessible' 'accident' 'according' 'account'\n",
            " 'accusations' 'accused' 'across' 'across country' 'act' 'acting' 'action'\n",
            " 'actions' 'active' 'activities' 'activity' 'actor' 'actors' 'actress'\n",
            " 'actual' 'actually' 'actually want' 'add' 'added' 'adding' 'addition'\n",
            " 'address' 'adds' 'administration' 'admits' 'admitted' 'adorable' 'ads'\n",
            " 'adult' 'adults' 'advance' 'advanced' 'advances' 'advantage' 'adventure'\n",
            " 'advertising' 'advice']\n"
          ]
        }
      ],
      "source": [
        "# Construimos una nueva matriz documento-término usando unigramas y bigramas.\n",
        "# En este caso, el vocabulario puede contener palabras individuales y pares de palabras consecutivas.\n",
        "\n",
        "vectorizador_ngramas = CountVectorizer(\n",
        "    lowercase=False,\n",
        "    min_df=5,\n",
        "    max_df=0.80,\n",
        "    max_features=3000,\n",
        "    ngram_range=(1, 2)\n",
        ")\n",
        "\n",
        "matriz_ngramas = vectorizador_ngramas.fit_transform(df_reducido[\"processed_text\"])\n",
        "vocabulario_ngramas = vectorizador_ngramas.get_feature_names_out()\n",
        "\n",
        "print(\"Dimensiones de la matriz documento-término con unigramas y bigramas:\")\n",
        "print(matriz_ngramas.shape)\n",
        "\n",
        "print(\"\\nTamaño del vocabulario con n-gramas:\", len(vocabulario_ngramas))\n",
        "\n",
        "print(\"\\nPrimeros términos del vocabulario:\")\n",
        "print(vocabulario_ngramas[:50])"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "nWwIHjaFN1gB",
      "metadata": {
        "id": "nWwIHjaFN1gB"
      },
      "source": [
        "### 12.1. Entrenamiento de LDA con unigramas y bigramas\n",
        "\n",
        "Una vez construida la matriz documento-término con unigramas y bigramas, podemos entrenar de nuevo LDA.\n",
        "\n",
        "Para mantener la comparación con el modelo anterior, usaremos inicialmente el mismo número de tópicos.\n",
        "\n",
        "Reutilizaremos la función `entrenar_y_resumir_lda`, que entrena el modelo y devuelve una tabla con las palabras principales de cada tópico."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 44,
      "id": "O7ZLHUo0NgYF",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 298
        },
        "id": "O7ZLHUo0NgYF",
        "outputId": "bac7eef5-fcc3-4c87-aa72-02ae4a7ed833"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>day, travel, free, around, best, photos, busin...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>day, video, game, women, football, team, nfl, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>recipes, photos, season, holiday, need, job, u...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>trump, donald, donald trump, health, president...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>food, world, better, twitter, may, life, reall...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>apple, week, food, life, look, back, watch, ta...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>best, want, know, love, find, travel, right, s...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>facebook, social, first, want, olympic, media,...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  day, travel, free, around, best, photos, busin...\n",
              "1      1  day, video, game, women, football, team, nfl, ...\n",
              "2      2  recipes, photos, season, holiday, need, job, u...\n",
              "3      3  trump, donald, donald trump, health, president...\n",
              "4      4  food, world, better, twitter, may, life, reall...\n",
              "5      5  apple, week, food, life, look, back, watch, ta...\n",
              "6      6  best, want, know, love, find, travel, right, s...\n",
              "7      7  facebook, social, first, want, olympic, media,..."
            ]
          },
          "execution_count": 44,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "numero_topicos_ngramas = numero_topicos\n",
        "\n",
        "modelo_lda_ngramas, tabla_topicos_ngramas = entrenar_y_resumir_lda(\n",
        "    matriz_ngramas,\n",
        "    vocabulario_ngramas,\n",
        "    numero_topicos=numero_topicos_ngramas,\n",
        "    numero_palabras=12\n",
        ")\n",
        "\n",
        "tabla_topicos_ngramas"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 45,
      "id": "JLvBApagNgac",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 637
        },
        "id": "JLvBApagNgac",
        "outputId": "464afb43-4505-43bb-a377-0a4110f08f1b"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Tópicos obtenidos con la representación original basada en unigramas:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>trump, donald, president, obama, clinton, hous...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>first, star, life, way, uber, data, nfl, olymp...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>city, things, photos, york, best, study, every...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>apple, week, iphone, back, help, best, travel,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>food, photos, facebook, think, holiday, well, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>health, healthy, may, keep, take, want, good, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>world, day, first, state, little, best, play, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>food, super, day, watch, summer, week, bowl, v...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  trump, donald, president, obama, clinton, hous...\n",
              "1      1  first, star, life, way, uber, data, nfl, olymp...\n",
              "2      2  city, things, photos, york, best, study, every...\n",
              "3      3  apple, week, iphone, back, help, best, travel,...\n",
              "4      4  food, photos, facebook, think, holiday, well, ...\n",
              "5      5  health, healthy, may, keep, take, want, good, ...\n",
              "6      6  world, day, first, state, little, best, play, ...\n",
              "7      7  food, super, day, watch, summer, week, bowl, v..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\n",
            "Tópicos obtenidos con la representación basada en unigramas y bigramas:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>day, travel, free, around, best, photos, busin...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>day, video, game, women, football, team, nfl, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>recipes, photos, season, holiday, need, job, u...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>trump, donald, donald trump, health, president...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>food, world, better, twitter, may, life, reall...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>apple, week, food, life, look, back, watch, ta...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>best, want, know, love, find, travel, right, s...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>facebook, social, first, want, olympic, media,...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  day, travel, free, around, best, photos, busin...\n",
              "1      1  day, video, game, women, football, team, nfl, ...\n",
              "2      2  recipes, photos, season, holiday, need, job, u...\n",
              "3      3  trump, donald, donald trump, health, president...\n",
              "4      4  food, world, better, twitter, may, life, reall...\n",
              "5      5  apple, week, food, life, look, back, watch, ta...\n",
              "6      6  best, want, know, love, find, travel, right, s...\n",
              "7      7  facebook, social, first, want, olympic, media,..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "print(\"Tópicos obtenidos con la representación original basada en unigramas:\")\n",
        "display(tabla_topicos[[\"topic\", \"top_words\"]])\n",
        "\n",
        "print(\"\\nTópicos obtenidos con la representación basada en unigramas y bigramas:\")\n",
        "display(tabla_topicos_ngramas[[\"topic\", \"top_words\"]])"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "AiLSr9AqOK_9",
      "metadata": {
        "id": "AiLSr9AqOK_9"
      },
      "source": [
        "### 12.2. Comparación con la representación basada solo en unigramas\n",
        "\n",
        "Al incluir bigramas, el vocabulario puede contener expresiones de dos palabras que resultan más interpretables que los términos individuales.\n",
        "\n",
        "En los resultados obtenidos aparecen algunos bigramas informativos, como `donald trump` o `social media`.\n",
        "\n",
        "Estos términos pueden ayudar a interpretar mejor ciertos tópicos, porque representan expresiones con significado propio.\n",
        "\n",
        "Sin embargo, la inclusión de bigramas no ha producido una mejora clara en todos los tópicos.\n",
        "\n",
        "Muchos tópicos siguen estando dominados por palabras individuales demasiado generales, como `day`, `best`, `photos`, `life`, `want`, `know` o `week`.\n",
        "\n",
        "También se observan tópicos mezclados, donde aparecen términos de distintas áreas temáticas en el mismo grupo.\n",
        "\n",
        "Esto muestra que añadir bigramas puede ser útil, pero no garantiza automáticamente tópicos más claros.\n",
        "\n",
        "Su utilidad depende de varios factores:\n",
        "\n",
        "- La calidad del preprocesamiento\n",
        "- La lista de stopwords utilizada\n",
        "- Los valores de `min_df` y `max_df`\n",
        "- El tamaño del vocabulario permitido\n",
        "- El número de tópicos seleccionado\n",
        "- La frecuencia real de las expresiones dentro del corpus\n",
        "\n",
        "Por tanto, la comparación entre unigramas y unigramas + bigramas debe hacerse revisando la interpretabilidad final de los tópicos."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "1CpTsMieO46e",
      "metadata": {
        "id": "1CpTsMieO46e"
      },
      "source": [
        "### 12.3. Prueba con distintos números de tópicos usando n-gramas\n",
        "\n",
        "También podemos combinar el uso de n-gramas con la exploración de distintos valores de número de tópicos.\n",
        "\n",
        "Esto permite comprobar si los bigramas ayudan a obtener tópicos más claros en distintas configuraciones."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 46,
      "id": "mLnCx_24Ngc0",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "mLnCx_24Ngc0",
        "outputId": "502434ea-078e-45f5-8bff-d5d0a5ceea54"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con unigramas y bigramas, k = 4\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>day, best, know, free, top, recipe, facebook, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>day, first, world, game, team, women, video, w...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>food, want, season, life, change, ways, think,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>trump, donald, apple, donald trump, president,...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  day, best, know, free, top, recipe, facebook, ...\n",
              "1      1  day, first, world, game, team, women, video, w...\n",
              "2      2  food, want, season, life, change, ways, think,...\n",
              "3      3  trump, donald, apple, donald trump, president,..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con unigramas y bigramas, k = 6\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>facebook, day, google, recipe, health, busines...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>day, social, super, world, video, first, women...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>recipes, want, photos, change, season, life, u...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>trump, donald, donald trump, president, house,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>photos, world, best, food, city, travel, may, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>apple, week, love, life, know, look, food, tak...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  facebook, day, google, recipe, health, busines...\n",
              "1      1  day, social, super, world, video, first, women...\n",
              "2      2  recipes, want, photos, change, season, life, u...\n",
              "3      3  trump, donald, donald trump, president, house,...\n",
              "4      4  photos, world, best, food, city, travel, may, ...\n",
              "5      5  apple, week, love, life, know, look, food, tak..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con unigramas y bigramas, k = 8\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>day, travel, free, around, best, photos, busin...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>day, video, game, women, football, team, nfl, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>recipes, photos, season, holiday, need, job, u...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>trump, donald, donald trump, health, president...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>food, world, better, twitter, may, life, reall...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>apple, week, food, life, look, back, watch, ta...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>best, want, know, love, find, travel, right, s...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>facebook, social, first, want, olympic, media,...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  day, travel, free, around, best, photos, busin...\n",
              "1      1  day, video, game, women, football, team, nfl, ...\n",
              "2      2  recipes, photos, season, holiday, need, job, u...\n",
              "3      3  trump, donald, donald trump, health, president...\n",
              "4      4  food, world, better, twitter, may, life, reall...\n",
              "5      5  apple, week, food, life, look, back, watch, ta...\n",
              "6      6  best, want, know, love, find, travel, right, s...\n",
              "7      7  facebook, social, first, want, olympic, media,..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con unigramas y bigramas, k = 10\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>day, health, james, old, data, fun, watch, bus...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>women, game, super, team, bowl, first, way, su...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>change, life, american, stop, san, video, goog...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>trump, donald, donald trump, president, clinto...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>world, travel, twitter, city, may, best, reall...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>apple, iphone, week, life, know, good, rumors,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>facebook, state, right, home, company, best, s...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>first, want, help, social, world, media, show,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>8</td>\n",
              "      <td>food, day, photos, recipes, recipe, best, love...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>9</td>\n",
              "      <td>watch, week, see, videos, know, movie, youtube...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  day, health, james, old, data, fun, watch, bus...\n",
              "1      1  women, game, super, team, bowl, first, way, su...\n",
              "2      2  change, life, american, stop, san, video, goog...\n",
              "3      3  trump, donald, donald trump, president, clinto...\n",
              "4      4  world, travel, twitter, city, may, best, reall...\n",
              "5      5  apple, iphone, week, life, know, good, rumors,...\n",
              "6      6  facebook, state, right, home, company, best, s...\n",
              "7      7  first, want, help, social, world, media, show,...\n",
              "8      8  food, day, photos, recipes, recipe, best, love...\n",
              "9      9  watch, week, see, videos, know, movie, youtube..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "valores_k_ngramas = [4, 6, 8, 10]\n",
        "\n",
        "resultados_modelos_ngramas = {}\n",
        "\n",
        "for k in valores_k_ngramas:\n",
        "    print(\"=\" * 120)\n",
        "    print(f\"Modelo LDA con unigramas y bigramas, k = {k}\")\n",
        "\n",
        "    modelo_k_ngramas, tabla_k_ngramas = entrenar_y_resumir_lda(\n",
        "        matriz_ngramas,\n",
        "        vocabulario_ngramas,\n",
        "        numero_topicos=k,\n",
        "        numero_palabras=10\n",
        "    )\n",
        "\n",
        "    resultados_modelos_ngramas[k] = {\n",
        "        \"model\": modelo_k_ngramas,\n",
        "        \"topics\": tabla_k_ngramas\n",
        "    }\n",
        "\n",
        "    display(tabla_k_ngramas)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 47,
      "id": "5ILz3uGfNgfB",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5ILz3uGfNgfB",
        "outputId": "13f1f0ea-c478-440a-e92b-8b7fefc0efb7"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "{4: {'model': LatentDirichletAllocation(max_iter=20, n_components=4, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, donald, president, food, may, know, oba...\n",
              "  1      1  facebook, star, first, video, world, state, nf...\n",
              "  2      2  life, world, google, day, food, best, business...\n",
              "  3      3  week, apple, day, photos, want, top, watch, ip...},\n",
              " 6: {'model': LatentDirichletAllocation(max_iter=20, n_components=6, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, clinton, better, way, may, know, even, ...\n",
              "  1      1  star, first, video, state, night, uber, film, ...\n",
              "  2      2  life, world, things, city, back, take, game, y...\n",
              "  3      3  apple, week, iphone, travel, think, best, hous...\n",
              "  4      4  food, photos, day, recipes, best, holiday, wor...\n",
              "  5      5  trump, health, donald, president, even, good, ...},\n",
              " 8: {'model': LatentDirichletAllocation(max_iter=20, n_components=8, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, donald, president, obama, clinton, hous...\n",
              "  1      1  first, star, life, way, uber, data, nfl, olymp...\n",
              "  2      2  city, things, photos, york, best, study, every...\n",
              "  3      3  apple, week, iphone, back, help, best, travel,...\n",
              "  4      4  food, photos, facebook, think, holiday, well, ...\n",
              "  5      5  health, healthy, may, keep, take, want, good, ...\n",
              "  6      6  world, day, first, state, little, best, play, ...\n",
              "  7      7  food, super, day, watch, summer, week, bowl, v...},\n",
              " 10: {'model': LatentDirichletAllocation(max_iter=20, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, donald, president, live, way, white, fi...\n",
              "  1      1  first, olympic, sports, star, uber, fans, way,...\n",
              "  2      2  things, photos, got, world, google, change, ga...\n",
              "  3      3  travel, apple, nfl, best, think, still, want, ...\n",
              "  4      4  know, social, want, facebook, job, news, media...\n",
              "  5      5  health, healthy, take, let, eating, good, keep...\n",
              "  6      6  day, world, twitter, facebook, first, sleep, c...\n",
              "  7      7  food, recipes, photos, summer, week, day, reci...\n",
              "  8      8  women, life, best, world, things, know, photos...\n",
              "  9      9  trump, apple, clinton, court, week, donald, go...}}"
            ]
          },
          "execution_count": 47,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "resultados_modelos"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "SoXFoWZmPUYd",
      "metadata": {
        "id": "SoXFoWZmPUYd"
      },
      "source": [
        "### 12.4. Conclusión sobre el uso de n-gramas\n",
        "\n",
        "El uso de n-gramas puede mejorar la interpretación cuando aparecen expresiones frecuentes con significado propio.\n",
        "\n",
        "Por ejemplo, bigramas como `donald trump` o `social media` pueden ser más informativos que analizar cada palabra por separado.\n",
        "\n",
        "Sin embargo, los resultados obtenidos muestran que añadir n-gramas no garantiza automáticamente una mejora clara.\n",
        "\n",
        "Aunque aparecen algunas expresiones útiles, muchos tópicos siguen dominados por palabras generales como `day`, `world`, `best`, `life`, `photos`, `want`, `know`, `week` o `first`.\n",
        "\n",
        "También se observa que algunos tópicos continúan mezclando temas diferentes, como política, tecnología, comida, entretenimiento o deporte.\n",
        "\n",
        "Además, al probar distintos valores de `k`, se mantiene el mismo patrón general:\n",
        "\n",
        "- Con pocos tópicos, varios temas quedan mezclados\n",
        "- Con más tópicos, algunos temas empiezan a separarse\n",
        "- Con demasiados tópicos, ciertos temas se fragmentan o aparecen repetidos en varios tópicos\n",
        "\n",
        "Esto muestra que los n-gramas son una ampliación posible de la representación, pero no sustituyen a una buena selección del vocabulario ni a una revisión crítica de los resultados.\n",
        "\n",
        "Al incluir n-gramas, puede ser necesario ajustar otros parámetros:\n",
        "\n",
        "- `min_df`\n",
        "- `max_df`\n",
        "- `max_features`\n",
        "- `ngram_range`\n",
        "- Lista de stopwords específicas del corpus\n",
        "- Número de tópicos\n",
        "\n",
        "Por tanto, los n-gramas deben evaluarse según si producen tópicos más coherentes e interpretables en el corpus concreto.\n",
        "\n",
        "En esta práctica, la inclusión de n-gramas aporta algunas expresiones más informativas, pero no resuelve por completo los problemas de mezcla de tópicos y términos demasiado generales."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "863987f3",
      "metadata": {
        "id": "863987f3"
      },
      "source": [
        "## 13. Limitaciones observadas\n",
        "\n",
        "Los resultados obtenidos muestran que LDA puede ser muy útil para explorar una colección de documentos, pero también que sus salidas no siempre son limpias o fáciles de interpretar.\n",
        "\n",
        "En las distintas ejecuciones realizadas hemos observado varios aspectos importantes:\n",
        "\n",
        "- Algunos tópicos son relativamente claros, como los relacionados con política, salud o comida\n",
        "- Otros tópicos mezclan términos de varias categorías, como tecnología, entretenimiento, deportes o viajes\n",
        "- Algunas palabras demasiado generales aparecen en varios tópicos y dificultan la interpretación\n",
        "- Al cambiar el número de tópicos, los resultados también cambian: con pocos tópicos se mezclan temas, y con demasiados tópicos algunos temas se fragmentan\n",
        "- Al incluir n-gramas aparecen algunas expresiones útiles, pero no se resuelven automáticamente todos los problemas de interpretación\n",
        "- La comparación con las categorías reales muestra que un tópico no equivale necesariamente a una categoría del dataset\n",
        "\n",
        "Estas limitaciones se deben a que LDA depende de varias decisiones tomadas durante el proceso:\n",
        "\n",
        "- El preprocesamiento aplicado al texto\n",
        "- La lista de stopwords utilizada\n",
        "- El filtrado de términos raros o demasiado frecuentes\n",
        "- El número de tópicos seleccionado\n",
        "- El uso de unigramas o n-gramas\n",
        "- El tamaño y la calidad de los documentos\n",
        "- Las categorías incluidas en el corpus reducido\n",
        "\n",
        "Por eso, LDA debe entenderse como una herramienta exploratoria.\n",
        "\n",
        "El modelo ayuda a descubrir patrones de coocurrencia de palabras en grandes colecciones de texto, pero la interpretación final requiere revisión humana.\n",
        "\n",
        "En la práctica, aplicar LDA suele ser un proceso iterativo: se entrena una primera versión, se revisan los tópicos obtenidos, se ajustan decisiones de preprocesamiento o representación y se comparan de nuevo los resultados."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "c7a97ff0",
      "metadata": {
        "id": "c7a97ff0"
      },
      "source": [
        "## 14. Extensión opcional: prueba con lematización\n",
        "\n",
        "En el flujo principal no hemos aplicado lematización para mantener el notebook sencillo y centrado en LDA.\n",
        "\n",
        "La lematización puede ser útil porque reduce distintas formas de una palabra a una forma base.\n",
        "\n",
        "Por ejemplo:\n",
        "\n",
        "- `companies` → `company`,\n",
        "- `running` → `run`,\n",
        "- `elections` → `election`.\n",
        "\n",
        "Esto puede ayudar a que los tópicos sean más limpios. Sin embargo, también añade dependencias y tiempo de procesamiento."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 48,
      "id": "e35d867b",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "e35d867b",
        "outputId": "d2abe79b-4615-4a29-d8c7-4709842101a3"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Collecting en-core-web-sm==3.8.0\n",
            "  Downloading https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl (12.8 MB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.8/12.8 MB\u001b[0m \u001b[31m51.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m \u001b[36m0:00:01\u001b[0m\n",
            "\u001b[?25h\u001b[38;5;2m✔ Download and installation successful\u001b[0m\n",
            "You can now load the package via spacy.load('en_core_web_sm')\n"
          ]
        }
      ],
      "source": [
        "# Uso de spaCy para lematización.\n",
        "\n",
        "# En Google Colab puede ser necesario descargar el modelo de inglés.\n",
        "# Si el modelo ya está disponible, esta línea no hace falta volver a ejecutarla.\n",
        "!python -m spacy download en_core_web_sm"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 49,
      "id": "mHC8T-K_fdXy",
      "metadata": {
        "id": "mHC8T-K_fdXy"
      },
      "outputs": [],
      "source": [
        "import spacy\n",
        "\n",
        "nlp = spacy.load(\"en_core_web_sm\")\n",
        "\n",
        "def lematizar_texto(texto):\n",
        "    \"\"\"\n",
        "    Aplica lematización sobre un texto usando spaCy.\n",
        "\n",
        "    Pasos:\n",
        "    1. Convierte el texto a minúsculas.\n",
        "    2. Analiza el texto con el modelo de spaCy.\n",
        "    3. Conserva únicamente tokens alfabéticos.\n",
        "    4. Elimina stopwords.\n",
        "    5. Conserva lemas con longitud mínima de 3 caracteres.\n",
        "\n",
        "    Devuelve:\n",
        "    - Una cadena con los lemas separados por espacios.\n",
        "    \"\"\"\n",
        "    documento = nlp(texto.lower())\n",
        "\n",
        "    lemas = []\n",
        "\n",
        "    for token in documento:\n",
        "        if token.is_alpha and not token.is_stop and len(token.lemma_) >= 3:\n",
        "            lemas.append(token.lemma_)\n",
        "\n",
        "    return \" \".join(lemas)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 50,
      "id": "TvHYU8vpfdZ-",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 574
        },
        "id": "TvHYU8vpfdZ-",
        "outputId": "7f4b7c96-60ff-4510-8965-f50334f32a6d"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>text</th>\n",
              "      <th>processed_text</th>\n",
              "      <th>lemmatized_text</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>How to Manage Your Personal Brand. Make no mis...</td>\n",
              "      <td>manage personal brand mistake facebook account...</td>\n",
              "      <td>manage personal brand mistake facebook account...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>It Looks Like Uber's Winning Its War With New ...</td>\n",
              "      <td>looks uber winning war york grab popcorn</td>\n",
              "      <td>look like uber win war new york grab popcorn</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>The Progressive Promise of Today's Technology....</td>\n",
              "      <td>progressive promise today technology digital p...</td>\n",
              "      <td>progressive promise today technology digital p...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Don't Let These 5 Confusing Words Mar Your Ima...</td>\n",
              "      <td>let confusing words mar image tom articulate p...</td>\n",
              "      <td>let confusing word mar image tom articulate ph...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>What You Don't Know About Overnight Success. I...</td>\n",
              "      <td>know overnight success fighting thing overnigh...</td>\n",
              "      <td>know overnight success fight thing year overni...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                text  \\\n",
              "0  How to Manage Your Personal Brand. Make no mis...   \n",
              "1  It Looks Like Uber's Winning Its War With New ...   \n",
              "2  The Progressive Promise of Today's Technology....   \n",
              "3  Don't Let These 5 Confusing Words Mar Your Ima...   \n",
              "4  What You Don't Know About Overnight Success. I...   \n",
              "\n",
              "                                      processed_text  \\\n",
              "0  manage personal brand mistake facebook account...   \n",
              "1           looks uber winning war york grab popcorn   \n",
              "2  progressive promise today technology digital p...   \n",
              "3  let confusing words mar image tom articulate p...   \n",
              "4  know overnight success fighting thing overnigh...   \n",
              "\n",
              "                                     lemmatized_text  \n",
              "0  manage personal brand mistake facebook account...  \n",
              "1       look like uber win war new york grab popcorn  \n",
              "2  progressive promise today technology digital p...  \n",
              "3  let confusing word mar image tom articulate ph...  \n",
              "4  know overnight success fight thing year overni...  "
            ]
          },
          "execution_count": 50,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Aplicamos la lematización al texto original.\n",
        "# Este paso puede tardar un poco, dependiendo del número de documentos.\n",
        "\n",
        "df_reducido[\"lemmatized_text\"] = df_reducido[\"text\"].apply(lematizar_texto)\n",
        "df_reducido[[\"text\", \"processed_text\", \"lemmatized_text\"]].head()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 51,
      "id": "5TlDK6wufdcZ",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5TlDK6wufdcZ",
        "outputId": "d3589b37-ccd2-42bb-ea60-d4ee7aedfdb9"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "====================================================================================================\n",
            "Categoría: BUSINESS\n",
            "\n",
            "Texto original:\n",
            "How to Manage Your Personal Brand. Make no mistake: If you have a Facebook account, an Instagram page, a Twitter profile, you are a brand. Every time you upload a photo, add a link, or post an update, you're putting into the world another idea of yourself and what you stand for.\n",
            "\n",
            "Texto procesado básico:\n",
            "manage personal brand mistake facebook account instagram page twitter profile brand every upload photo add link post update putting world another idea stand\n",
            "\n",
            "Texto lematizado:\n",
            "manage personal brand mistake facebook account instagram page twitter profile brand time upload photo add link post update put world idea stand\n",
            "\n",
            "====================================================================================================\n",
            "Categoría: BUSINESS\n",
            "\n",
            "Texto original:\n",
            "It Looks Like Uber's Winning Its War With New York. Grab the popcorn.\n",
            "\n",
            "Texto procesado básico:\n",
            "looks uber winning war york grab popcorn\n",
            "\n",
            "Texto lematizado:\n",
            "look like uber win war new york grab popcorn\n",
            "\n",
            "====================================================================================================\n",
            "Categoría: BUSINESS\n",
            "\n",
            "Texto original:\n",
            "The Progressive Promise of Today's Technology. A digital policy for the new century, tailored not just to the moment but for the future, is vital if we are to unleash economic growth, shared prosperity, and the full potential of technology for citizens and consumers. But such a policy architecture requires a new consensus -- on privacy, on security, on customer protections, on growth and mobility.\n",
            "\n",
            "Texto procesado básico:\n",
            "progressive promise today technology digital policy century tailored moment future vital unleash economic growth shared prosperity full potential technology citizens consumers policy architecture requires consensus privacy security customer protections growth mobility\n",
            "\n",
            "Texto lematizado:\n",
            "progressive promise today technology digital policy new century tailor moment future vital unleash economic growth share prosperity potential technology citizen consumer policy architecture require new consensus privacy security customer protection growth mobility\n",
            "\n"
          ]
        }
      ],
      "source": [
        "# Es interesante revisar algunas diferencias entre texto preprocesado básico y lematizado\n",
        "for indice in range(3):\n",
        "    print(\"=\" * 100)\n",
        "    print(\"Categoría:\", df_reducido.loc[indice, \"category\"])\n",
        "\n",
        "    print(\"\\nTexto original:\")\n",
        "    print(df_reducido.loc[indice, \"text\"])\n",
        "\n",
        "    print(\"\\nTexto procesado básico:\")\n",
        "    print(df_reducido.loc[indice, \"processed_text\"])\n",
        "\n",
        "    print(\"\\nTexto lematizado:\")\n",
        "    print(df_reducido.loc[indice, \"lemmatized_text\"])\n",
        "    print()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 52,
      "id": "9gukITKTfdfa",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9gukITKTfdfa",
        "outputId": "94b64bb9-c854-41a7-e393-c11087af47e8"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones de la matriz documento-término lematizada:\n",
            "(3924, 2402)\n",
            "\n",
            "Tamaño del vocabulario lematizado: 2402\n",
            "Primeros términos del vocabulario lematizado:\n",
            "['abandon' 'abc' 'ability' 'able' 'abortion' 'absolutely' 'abuse'\n",
            " 'academy' 'accept' 'access' 'accessible' 'accident' 'accord' 'account'\n",
            " 'accusation' 'accuse' 'achieve' 'acknowledge' 'acquire' 'act' 'action'\n",
            " 'active' 'activity' 'actor' 'actress' 'actual' 'actually' 'add' 'addict'\n",
            " 'addition' 'address' 'administration' 'admit' 'adorable' 'adult'\n",
            " 'advance' 'advanced' 'advantage' 'adventure' 'advertising' 'advice'\n",
            " 'adviser' 'affair' 'affect' 'afford' 'affordable' 'afraid' 'africa'\n",
            " 'african' 'aftermath']\n"
          ]
        }
      ],
      "source": [
        "# Construimos una matriz documento-término con conteos usando el texto lematizado.\n",
        "\n",
        "vectorizador_lemas = CountVectorizer(\n",
        "    lowercase=False,\n",
        "    min_df=5,\n",
        "    max_df=0.80,\n",
        "    max_features=3000\n",
        ")\n",
        "\n",
        "matriz_lemas = vectorizador_lemas.fit_transform(df_reducido[\"lemmatized_text\"])\n",
        "\n",
        "vocabulario_lemas = vectorizador_lemas.get_feature_names_out()\n",
        "\n",
        "print(\"Dimensiones de la matriz documento-término lematizada:\")\n",
        "print(matriz_lemas.shape)\n",
        "\n",
        "print(\"\\nTamaño del vocabulario lematizado:\", len(vocabulario_lemas))\n",
        "print(\"Primeros términos del vocabulario lematizado:\")\n",
        "print(vocabulario_lemas[:50])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 53,
      "id": "ROYpDP3Nfdhd",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "ROYpDP3Nfdhd",
        "outputId": "65868f11-18fb-4c39-c681-7cc8a1925fa9"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con lematización y 4 tópicos\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>trump, want, change, way, say, good, know, bre...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>new, year, good, travel, time, day, world, hea...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>day, recipe, photo, video, time, game, olympic...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>new, trump, food, say, people, report, apple, ...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  trump, want, change, way, say, good, know, bre...\n",
              "1      1  new, year, good, travel, time, day, world, hea...\n",
              "2      2  day, recipe, photo, video, time, game, olympic...\n",
              "3      3  new, trump, food, say, people, report, apple, ..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con lematización y 6 tópicos\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>trump, change, donald, life, way, say, want, p...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>new, year, time, good, season, life, look, man...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>day, recipe, apple, week, state, house, video,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>food, new, study, people, like, eat, trump, ca...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>new, photo, travel, good, world, year, know, w...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>facebook, say, company, health, google, day, y...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  trump, change, donald, life, way, say, want, p...\n",
              "1      1  new, year, time, good, season, life, look, man...\n",
              "2      2  day, recipe, apple, week, state, house, video,...\n",
              "3      3  food, new, study, people, like, eat, trump, ca...\n",
              "4      4  new, photo, travel, good, world, year, know, w...\n",
              "5      5  facebook, say, company, health, google, day, y..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con lematización y 8 tópicos\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>want, change, way, time, beer, life, fear, spo...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>job, new, year, video, look, time, watch, week...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>week, stress, day, star, life, player, feel, a...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>food, new, like, study, cancer, win, year, tim...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>photo, new, travel, good, world, year, hotel, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>facebook, say, google, company, apple, social,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>trump, say, state, people, president, donald, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>recipe, day, good, think, health, eat, trump, ...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  want, change, way, time, beer, life, fear, spo...\n",
              "1      1  job, new, year, video, look, time, watch, week...\n",
              "2      2  week, stress, day, star, life, player, feel, a...\n",
              "3      3  food, new, like, study, cancer, win, year, tim...\n",
              "4      4  photo, new, travel, good, world, year, hotel, ...\n",
              "5      5  facebook, say, google, company, apple, social,...\n",
              "6      6  trump, say, state, people, president, donald, ...\n",
              "7      7  recipe, day, good, think, health, eat, trump, ..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "========================================================================================================================\n",
            "Modelo LDA con lematización y 10 tópicos\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>way, time, life, change, need, beer, want, bre...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>year, job, season, life, day, time, good, holi...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>day, week, stress, feel, apple, time, star, li...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>new, like, amazon, food, cancer, share, apple,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>photo, travel, good, new, world, place, hotel,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>google, new, say, want, apple, year, help, wor...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>trump, people, say, donald, state, company, pr...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>recipe, good, food, think, day, olympic, eat, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>8</td>\n",
              "      <td>trump, say, clinton, court, obama, president, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>9</td>\n",
              "      <td>video, new, look, week, game, film, super, wat...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  way, time, life, change, need, beer, want, bre...\n",
              "1      1  year, job, season, life, day, time, good, holi...\n",
              "2      2  day, week, stress, feel, apple, time, star, li...\n",
              "3      3  new, like, amazon, food, cancer, share, apple,...\n",
              "4      4  photo, travel, good, new, world, place, hotel,...\n",
              "5      5  google, new, say, want, apple, year, help, wor...\n",
              "6      6  trump, people, say, donald, state, company, pr...\n",
              "7      7  recipe, good, food, think, day, olympic, eat, ...\n",
              "8      8  trump, say, clinton, court, obama, president, ...\n",
              "9      9  video, new, look, week, game, film, super, wat..."
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "valores_k = [4, 6, 8, 10]\n",
        "\n",
        "resultados_modelos_lemas = {}\n",
        "\n",
        "for k in valores_k:\n",
        "    print(\"=\" * 120)\n",
        "    print(f\"Modelo LDA con lematización y {k} tópicos\")\n",
        "\n",
        "    modelo_k_lemas, tabla_k_lemas = entrenar_y_resumir_lda(\n",
        "        matriz_lemas,\n",
        "        vocabulario_lemas,\n",
        "        numero_topicos=k,\n",
        "        numero_palabras=10\n",
        "    )\n",
        "\n",
        "    resultados_modelos_lemas[k] = {\n",
        "        \"model\": modelo_k_lemas,\n",
        "        \"topics\": tabla_k_lemas\n",
        "    }\n",
        "\n",
        "    display(tabla_k_lemas)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 54,
      "id": "JhS4lUWwg2D9",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "JhS4lUWwg2D9",
        "outputId": "f2cdc926-8099-4ea9-8b6c-0892f3628acc"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "{4: {'model': LatentDirichletAllocation(max_iter=20, n_components=4, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, want, change, way, say, good, know, bre...\n",
              "  1      1  new, year, good, travel, time, day, world, hea...\n",
              "  2      2  day, recipe, photo, video, time, game, olympic...\n",
              "  3      3  new, trump, food, say, people, report, apple, ...},\n",
              " 6: {'model': LatentDirichletAllocation(max_iter=20, n_components=6, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  trump, change, donald, life, way, say, want, p...\n",
              "  1      1  new, year, time, good, season, life, look, man...\n",
              "  2      2  day, recipe, apple, week, state, house, video,...\n",
              "  3      3  food, new, study, people, like, eat, trump, ca...\n",
              "  4      4  new, photo, travel, good, world, year, know, w...\n",
              "  5      5  facebook, say, company, health, google, day, y...},\n",
              " 8: {'model': LatentDirichletAllocation(max_iter=20, n_components=8, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  want, change, way, time, beer, life, fear, spo...\n",
              "  1      1  job, new, year, video, look, time, watch, week...\n",
              "  2      2  week, stress, day, star, life, player, feel, a...\n",
              "  3      3  food, new, like, study, cancer, win, year, tim...\n",
              "  4      4  photo, new, travel, good, world, year, hotel, ...\n",
              "  5      5  facebook, say, google, company, apple, social,...\n",
              "  6      6  trump, say, state, people, president, donald, ...\n",
              "  7      7  recipe, day, good, think, health, eat, trump, ...},\n",
              " 10: {'model': LatentDirichletAllocation(max_iter=20, random_state=42),\n",
              "  'topics':    topic                                          top_words\n",
              "  0      0  way, time, life, change, need, beer, want, bre...\n",
              "  1      1  year, job, season, life, day, time, good, holi...\n",
              "  2      2  day, week, stress, feel, apple, time, star, li...\n",
              "  3      3  new, like, amazon, food, cancer, share, apple,...\n",
              "  4      4  photo, travel, good, new, world, place, hotel,...\n",
              "  5      5  google, new, say, want, apple, year, help, wor...\n",
              "  6      6  trump, people, say, donald, state, company, pr...\n",
              "  7      7  recipe, good, food, think, day, olympic, eat, ...\n",
              "  8      8  trump, say, clinton, court, obama, president, ...\n",
              "  9      9  video, new, look, week, game, film, super, wat...}}"
            ]
          },
          "execution_count": 54,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "resultados_modelos_lemas"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 55,
      "id": "HcZYD_Awfdjo",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 946
        },
        "id": "HcZYD_Awfdjo",
        "outputId": "5acb8a94-4756-43ef-911d-a9e096ed3da9"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>topic</th>\n",
              "      <th>top_words</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>want, change, way, time, beer, life, fear, spo...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1</td>\n",
              "      <td>job, new, year, video, look, time, watch, week...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2</td>\n",
              "      <td>week, stress, day, star, life, player, feel, a...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>3</td>\n",
              "      <td>food, new, like, study, cancer, win, year, tim...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>4</td>\n",
              "      <td>photo, new, travel, good, world, year, hotel, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>5</td>\n",
              "      <td>facebook, say, google, company, apple, social,...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>6</td>\n",
              "      <td>trump, say, state, people, president, donald, ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>7</td>\n",
              "      <td>recipe, day, good, think, health, eat, trump, ...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   topic                                          top_words\n",
              "0      0  want, change, way, time, beer, life, fear, spo...\n",
              "1      1  job, new, year, video, look, time, watch, week...\n",
              "2      2  week, stress, day, star, life, player, feel, a...\n",
              "3      3  food, new, like, study, cancer, win, year, tim...\n",
              "4      4  photo, new, travel, good, world, year, hotel, ...\n",
              "5      5  facebook, say, google, company, apple, social,...\n",
              "6      6  trump, say, state, people, president, donald, ...\n",
              "7      7  recipe, day, good, think, health, eat, trump, ..."
            ]
          },
          "execution_count": 55,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Entrenamos un modelo LDA concreto sobre la versión lematizada para compararlo\n",
        "# con el modelo principal entrenado sobre processed_text.\n",
        "\n",
        "numero_topicos_lemas = 8\n",
        "\n",
        "modelo_lda_lemas = LatentDirichletAllocation(\n",
        "    n_components=numero_topicos_lemas,\n",
        "    random_state=42,\n",
        "    learning_method=\"batch\",\n",
        "    max_iter=20\n",
        ")\n",
        "\n",
        "modelo_lda_lemas.fit(matriz_lemas)\n",
        "\n",
        "tabla_topicos_lemas = obtener_palabras_topico(\n",
        "    modelo_lda_lemas,\n",
        "    vocabulario_lemas,\n",
        "    numero_palabras=12\n",
        ")\n",
        "\n",
        "tabla_topicos_lemas[[\"topic\", \"top_words\"]]"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "d2ba0c5f",
      "metadata": {
        "id": "d2ba0c5f"
      },
      "source": [
        "### Conclusión sobre la lematización\n",
        "\n",
        "Tras aplicar lematización y volver a entrenar LDA, no se observa una mejora clara en la interpretabilidad de los tópicos.\n",
        "\n",
        "Aunque la lematización reduce variantes de una misma palabra, los tópicos obtenidos siguen mostrando varios problemas:\n",
        "\n",
        "- Aparecen palabras demasiado generales en distintos tópicos\n",
        "- Algunos tópicos siguen mezclando temas diferentes\n",
        "- La separación entre categorías no mejora de forma evidente\n",
        "\n",
        "Esto muestra una idea importante: aplicar más preprocesamiento no garantiza automáticamente mejores resultados.\n",
        "\n",
        "La utilidad de una técnica como la lematización debe evaluarse en función del resultado final.\n",
        "\n",
        "En el caso de LDA, lo importante no es solo reducir palabras a su forma base, sino obtener tópicos coherentes, interpretables y útiles para el análisis.\n",
        "\n",
        "Por tanto, en esta práctica mantendremos como flujo principal el modelo entrenado con el preprocesamiento básico, y consideraremos la lematización como una posibilidad más que podría explorarse."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "9aa20267",
      "metadata": {
        "id": "9aa20267"
      },
      "source": [
        "## 15. Extensión: representación con TF-IDF\n",
        "\n",
        "TF-IDF es una representación muy útil en NLP, pero en este notebook no la hemos usado como entrada principal de LDA.\n",
        "\n",
        "La razón es que LDA clásico se interpreta mejor usando conteos de palabras, porque intenta explicar ocurrencias observadas de términos.\n",
        "\n",
        "Aun así, TF-IDF es muy útil para otras tareas:\n",
        "\n",
        "- Identificar términos distintivos de un documento\n",
        "- Comparar documentos\n",
        "- Recuperar documentos similares\n",
        "- Entrenar clasificadores clásicos\n",
        "- Hacer clustering documental\n",
        "\n",
        "En esta extensión construiremos una matriz TF-IDF para compararla con la matriz de conteos."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 56,
      "id": "484267b4",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "484267b4",
        "outputId": "f6f6d329-b3e7-41f9-a88b-f60888e7d408"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dimensiones de la matriz TF-IDF:\n",
            "(3924, 2797)\n"
          ]
        }
      ],
      "source": [
        "from sklearn.feature_extraction.text import TfidfVectorizer\n",
        "\n",
        "vectorizador_tfidf = TfidfVectorizer(\n",
        "    lowercase=False,\n",
        "    min_df=5,\n",
        "    max_df=0.80,\n",
        "    max_features=3000\n",
        ")\n",
        "\n",
        "matriz_tfidf = vectorizador_tfidf.fit_transform(df_reducido[\"processed_text\"])\n",
        "vocabulario_tfidf = vectorizador_tfidf.get_feature_names_out()\n",
        "\n",
        "# Las dimensiones son las mismas que para la matriz documento-término. La diferencia\n",
        "# está en que con TF-IDF cada celda tiene la importancia relativa (peso) de un término\n",
        "# en un documento dentro del corpus\n",
        "print(\"Dimensiones de la matriz TF-IDF:\")\n",
        "print(matriz_tfidf.shape)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "465c58c1",
      "metadata": {
        "id": "465c58c1"
      },
      "source": [
        "### 15.1. Términos con mayor TF-IDF en un documento\n",
        "\n",
        "A continuación observamos qué términos tienen mayor peso TF-IDF en un documento concreto.\n",
        "\n",
        "Esto nos ayuda a identificar palabras distintivas del documento."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 57,
      "id": "f2956863",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 629
        },
        "id": "f2956863",
        "outputId": "31dec511-63c0-477e-e436-49fa8df50d4a"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Categoría real: BUSINESS\n",
            "Texto original:\n",
            "How to Manage Your Personal Brand. Make no mistake: If you have a Facebook account, an Instagram page, a Twitter profile, you are a brand. Every time you upload a photo, add a link, or post an update, you're putting into the world another idea of yourself and what you stand for.\n",
            "\n",
            "Términos con mayor TF-IDF:\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>term</th>\n",
              "      <th>tfidf</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>brand</td>\n",
              "      <td>0.436596</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>link</td>\n",
              "      <td>0.238437</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>mistake</td>\n",
              "      <td>0.234093</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>manage</td>\n",
              "      <td>0.234093</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>profile</td>\n",
              "      <td>0.230261</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>account</td>\n",
              "      <td>0.230261</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>page</td>\n",
              "      <td>0.223733</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>update</td>\n",
              "      <td>0.218298</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>putting</td>\n",
              "      <td>0.213643</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>add</td>\n",
              "      <td>0.207711</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>idea</td>\n",
              "      <td>0.198352</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>stand</td>\n",
              "      <td>0.197024</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>instagram</td>\n",
              "      <td>0.195748</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>post</td>\n",
              "      <td>0.195748</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>personal</td>\n",
              "      <td>0.191093</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "         term     tfidf\n",
              "3       brand  0.436596\n",
              "8        link  0.238437\n",
              "10    mistake  0.234093\n",
              "9      manage  0.234093\n",
              "15    profile  0.230261\n",
              "0     account  0.230261\n",
              "11       page  0.223733\n",
              "19     update  0.218298\n",
              "16    putting  0.213643\n",
              "1         add  0.207711\n",
              "6        idea  0.198352\n",
              "17      stand  0.197024\n",
              "7   instagram  0.195748\n",
              "14       post  0.195748\n",
              "12   personal  0.191093"
            ]
          },
          "execution_count": 57,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "indice_documento = 0\n",
        "\n",
        "vector_tfidf_documento = matriz_tfidf[indice_documento].toarray()[0]\n",
        "\n",
        "terminos_tfidf = []\n",
        "\n",
        "for indice_termino, valor_tfidf in enumerate(vector_tfidf_documento):\n",
        "    if valor_tfidf > 0:\n",
        "        terminos_tfidf.append((vocabulario_tfidf[indice_termino], valor_tfidf))\n",
        "\n",
        "df_tfidf_documento = pd.DataFrame(\n",
        "    terminos_tfidf,\n",
        "    columns=[\"term\", \"tfidf\"]\n",
        ").sort_values(by=\"tfidf\", ascending=False)\n",
        "\n",
        "print(\"Categoría real:\", df_reducido.loc[indice_documento, \"category\"])\n",
        "print(\"Texto original:\")\n",
        "print(df_reducido.loc[indice_documento, \"text\"])\n",
        "print(\"\\nTérminos con mayor TF-IDF:\")\n",
        "df_tfidf_documento.head(15)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "485a69e4",
      "metadata": {
        "id": "485a69e4"
      },
      "source": [
        "### 15.2. Similitud entre documentos usando TF-IDF\n",
        "\n",
        "Como extensión, podemos calcular similitud entre documentos a partir de sus vectores TF-IDF."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 58,
      "id": "32fbece9",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "32fbece9",
        "outputId": "a0e7e404-8d90-4332-871e-aaa8b4d04fe0"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Documento de consulta:\n",
            "Categoría: BUSINESS\n",
            "How to Manage Your Personal Brand. Make no mistake: If you have a Facebook account, an Instagram page, a Twitter profile, you are a brand. Every time you upload a photo, add a link, or post an update, you're putting into the world another idea of yourself and what you stand for.\n",
            "\n",
            "Documentos más similares según TF-IDF:\n",
            "====================================================================================================\n",
            "Similitud: 0.2693665162274382\n",
            "Categoría: TECH\n",
            "Twitter, Instagram Deal Almost Happened For $525 Million: NYT. Relations between Twitter, Instagram and Facebook have soured since Facebook successfully swooped for the photo service. Earlier\n",
            "====================================================================================================\n",
            "Similitud: 0.21638978927152627\n",
            "Categoría: TECH\n",
            "Facebook Announces Animated Profile Pics. Oh boy.\n",
            "====================================================================================================\n",
            "Similitud: 0.19812405766694044\n",
            "Categoría: TECH\n",
            "Brace Yourself For Even More Facebook Notifications. Here's the latest update that Facebook hopes will suck you in.\n",
            "====================================================================================================\n",
            "Similitud: 0.1613125279881371\n",
            "Categoría: TECH\n",
            "How Joining Facebook Is Hurting Instagram. Just months ago Instagram celebrated a billion-dollar buyout. Now it's falling along with Facebook. Read more on The Daily\n",
            "====================================================================================================\n",
            "Similitud: 0.16061489365382442\n",
            "Categoría: POLITICS\n",
            "'Better Late Than Never': Account Reposting Trump Tweets Verbatim Reacts To Twitter Ban. The @SuspendThePres account reposted Trump's words for months to prove that an average citizen would be banned for such rhetoric.\n"
          ]
        }
      ],
      "source": [
        "from sklearn.metrics.pairwise import cosine_similarity\n",
        "\n",
        "indice_consulta = 0\n",
        "\n",
        "similitudes = cosine_similarity(\n",
        "    matriz_tfidf[indice_consulta],\n",
        "    matriz_tfidf\n",
        ").flatten()\n",
        "\n",
        "# Ordenamos documentos por similitud descendente.\n",
        "# Excluimos el propio documento, que tendrá similitud 1 consigo mismo.\n",
        "indices_ordenados = similitudes.argsort()[::-1]\n",
        "\n",
        "documentos_similares = []\n",
        "\n",
        "for indice in indices_ordenados:\n",
        "    if indice != indice_consulta:\n",
        "        documentos_similares.append(indice)\n",
        "    if len(documentos_similares) == 5:\n",
        "        break\n",
        "\n",
        "print(\"Documento de consulta:\")\n",
        "print(\"Categoría:\", df_reducido.loc[indice_consulta, \"category\"])\n",
        "print(df_reducido.loc[indice_consulta, \"text\"])\n",
        "\n",
        "print(\"\\nDocumentos más similares según TF-IDF:\")\n",
        "for indice in documentos_similares:\n",
        "    print(\"=\" * 100)\n",
        "    print(\"Similitud:\", similitudes[indice])\n",
        "    print(\"Categoría:\", df_reducido.loc[indice, \"category\"])\n",
        "    print(df_reducido.loc[indice, \"text\"])"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "9d1473f9",
      "metadata": {
        "id": "9d1473f9"
      },
      "source": [
        "## 16. Conclusiones\n",
        "\n",
        "En este notebook hemos construido un flujo completo de procesamiento y detección de tópicos sobre un corpus de noticias.\n",
        "\n",
        "Los pasos principales han sido:\n",
        "\n",
        "- Cargar el dataset de noticias\n",
        "- Explorar las categorías disponibles\n",
        "- Seleccionar un subconjunto de categorías para la práctica\n",
        "- Construir un texto de trabajo combinando titular y descripción\n",
        "- Aplicar un preprocesamiento básico sobre los textos\n",
        "- Crear una matriz documento-término con conteos\n",
        "- Entrenar un modelo LDA\n",
        "- Interpretar los tópicos aprendidos a partir de sus palabras principales\n",
        "- Analizar documentos representativos de cada tópico\n",
        "- Comparar los tópicos obtenidos con las categorías reales del dataset\n",
        "- Probar distintos números de tópicos\n",
        "- Revisar extensiones con lematización y TF-IDF\n",
        "\n",
        "La idea más importante es que LDA no devuelve etiquetas cerradas.\n",
        "\n",
        "El modelo devuelve distribuciones de palabras para cada tópico y distribuciones de tópicos para cada documento.\n",
        "\n",
        "Por tanto, el análisis de tópicos combina modelado automático e interpretación humana.\n",
        "\n",
        "Además, los resultados dependen de decisiones como el preprocesamiento, el vocabulario, el número de tópicos y los parámetros utilizados.\n",
        "\n",
        "Por eso, LDA debe entenderse como una herramienta exploratoria que ayuda a descubrir patrones temáticos, pero cuyos resultados deben revisarse e interpretarse cuidadosamente."
      ]
    }
  ],
  "metadata": {
    "colab": {
      "collapsed_sections": [
        "c7a97ff0",
        "9aa20267",
        "9d1473f9"
      ],
      "provenance": []
    },
    "kernelspec": {
      "display_name": "AI",
      "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.13.3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}
