{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: transformers in ./.venv/lib/python3.8/site-packages (4.28.1)\n", "Requirement already satisfied: datasets in ./.venv/lib/python3.8/site-packages (2.11.0)\n", "Requirement already satisfied: gradio in ./.venv/lib/python3.8/site-packages (3.27.0)\n", "Requirement already satisfied: torch in ./.venv/lib/python3.8/site-packages (2.0.0)\n", "Requirement already satisfied: scikit-learn in ./.venv/lib/python3.8/site-packages (1.2.2)\n", "Requirement already satisfied: nltk in ./.venv/lib/python3.8/site-packages (3.8.1)\n", "\u001b[31mERROR: Could not find a version that satisfies the requirement ipython-widgets (from versions: none)\u001b[0m\u001b[31m\n", "\u001b[0m\u001b[31mERROR: No matching distribution found for ipython-widgets\u001b[0m\u001b[31m\n", "\u001b[0m" ] } ], "source": [ "! pip install transformers datasets gradio torch scikit-learn nltk ipython-widgets" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/alex/Documents/HW4/.venv/lib/python3.8/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n", "Found cached dataset csv (/home/alex/.cache/huggingface/datasets/aadityaubhat___csv/aadityaubhat--GPT-wiki-intro-10ad8b711a5f3880/0.0.0/6954658bab30a358235fa864b05cf819af0e179325c740e4bc853bcc7ec513e1)\n", "100%|██████████| 1/1 [00:00<00:00, 277.00it/s]\n", "Loading cached processed dataset at /home/alex/.cache/huggingface/datasets/aadityaubhat___csv/aadityaubhat--GPT-wiki-intro-10ad8b711a5f3880/0.0.0/6954658bab30a358235fa864b05cf819af0e179325c740e4bc853bcc7ec513e1/cache-cd82afa94125ed53.arrow\n" ] } ], "source": [ "from datasets import load_dataset\n", "dataset = load_dataset(\"aadityaubhat/GPT-wiki-intro\")['train']\n", "# extract wiki_into and generated_intro columns\n", "dataset = dataset.map(lambda x: {'human': x['wiki_intro'], 'gpt': x['generated_intro']}, remove_columns=dataset.column_names)\n", "# get first 1000 rows\n", "train_ds = dataset.select(range(10000))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from transformers import GPT2LMHeadModel, GPT2TokenizerFast\n", "\n", "model = GPT2LMHeadModel.from_pretrained('gpt2-large').to('cuda')\n", "tokenizer: GPT2TokenizerFast = GPT2TokenizerFast.from_pretrained('gpt2-large')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 38%|███▊ | 3793/10000 [04:18<07:02, 14.69it/s]/home/alex/Documents/HW4/.venv/lib/python3.8/site-packages/scipy/stats/_morestats.py:1813: UserWarning: Input data for shapiro has range zero. The results may not be accurate.\n", " warnings.warn(\"Input data for shapiro has range zero. The results \"\n", "100%|██████████| 10000/10000 [11:27<00:00, 14.55it/s]\n" ] } ], "source": [ "from tqdm import tqdm\n", "from nltk import sent_tokenize, word_tokenize\n", "import numpy as np\n", "import torch\n", "from scipy.stats import shapiro\n", "\n", "data = []\n", "for batch in tqdm(train_ds):\n", " for label in ['human', 'gpt']: \n", " tokens = tokenizer(batch[label], return_tensors='pt', truncation=True).input_ids.to('cuda')\n", " labels = tokens.clone()\n", " with torch.no_grad():\n", " outputs = model(tokens, labels=labels)\n", " nll = outputs.loss\n", " lengths = []\n", " for sentence in sent_tokenize(batch[label]):\n", " lengths.append(len(word_tokenize(sentence)))\n", " data.append((nll.item(), np.mean(lengths), np.std(lengths), shapiro(lengths).pvalue if len(lengths) > 2 else 0.5, 0 if label == 'human' else 1))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGdCAYAAAAMm0nCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAhiUlEQVR4nO3de1TUdf7H8ReCIBozhMYMc0Sl2lK8X1qcLLdWDmjkrif3Ypm6ZXrqQBtipnQhywqjtYtlum4XOifdtHPSCk4mYkoaXmKXvJSUhgdbG3QzZ4QSL8zvj47fX7NqigHDZ3o+zvme48z3MzPvmXM2nvud78yE+f1+vwAAAAzSLtgDAAAANBUBAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4EcEeoKU0NjZq//79iomJUVhYWLDHAQAA58Hv9+vIkSNyuVxq1+7sx1lCNmD279+vxMTEYI8BAAAuwL59+9S1a9ez7g/ZgImJiZH0wwtgs9mCPA0AADgfPp9PiYmJ1t/xswnZgDn1tpHNZiNgAAAwzLlO/+AkXgAAYBwCBgAAGIeAAQAAxiFgAACAcQgYAABgHAIGAAAYh4ABAADGIWAAAIBxCBgAAGAcAgYAABiHgAEAAMYhYAAAgHEIGAAAYBwCBgAAGKdJAZOfn6+rrrpKMTExio+P15gxY1RVVRWw5rrrrlNYWFjAdueddwasqampUUZGhjp27Kj4+HjNmDFDJ06cCFizbt06DRo0SFFRUbr88stVWFh4Yc8QkqQes4rPawMAwARNCpj169crMzNTmzZtUklJiY4fP660tDTV19cHrJsyZYq+/vpraysoKLD2nTx5UhkZGTp27Jg++ugjvfbaayosLFReXp61prq6WhkZGbr++utVWVmp7Oxs3XHHHXr//fd/5tMFAAChIKIpi1etWhVwubCwUPHx8aqoqNDw4cOt6zt27Cin03nG+1i9erU+/fRTrVmzRg6HQwMGDNCcOXM0c+ZMzZ49W5GRkVq0aJGSkpI0b948SVKvXr20YcMGPfPMM0pPT2/qcwQAACHmZ50D4/V6JUlxcXEB1y9ZskRdunRRnz59lJubq++++87aV15err59+8rhcFjXpaeny+fzaefOndaa1NTUgPtMT09XeXn5WWdpaGiQz+cL2AAAQGhq0hGYH2tsbFR2draGDRumPn36WNffcsst6t69u1wul7Zt26aZM2eqqqpKb731liTJ4/EExIsk67LH4/nJNT6fT99//72io6NPmyc/P1+PPPLIhT4dAABgkAsOmMzMTO3YsUMbNmwIuH7q1KnWv/v27auEhASNGDFCe/bs0WWXXXbhk55Dbm6ucnJyrMs+n0+JiYkt9ngAACB4LugtpKysLBUVFemDDz5Q165df3JtSkqKJGn37t2SJKfTqdra2oA1py6fOm/mbGtsNtsZj75IUlRUlGw2W8AGAABCU5MCxu/3KysrSytWrNDatWuVlJR0zttUVlZKkhISEiRJbrdb27dv14EDB6w1JSUlstlsSk5OttaUlpYG3E9JSYncbndTxgUAACGqSQGTmZmp119/XUuXLlVMTIw8Ho88Ho++//57SdKePXs0Z84cVVRUaO/evXrnnXc0ceJEDR8+XP369ZMkpaWlKTk5WRMmTNAnn3yi999/Xw8++KAyMzMVFRUlSbrzzjv15Zdf6r777tOuXbv04osvavny5Zo2bVozP30AAGCiJgXMwoUL5fV6dd111ykhIcHali1bJkmKjIzUmjVrlJaWpp49e2r69OkaO3as3n33Xes+wsPDVVRUpPDwcLndbt16662aOHGiHn30UWtNUlKSiouLVVJSov79+2vevHl66aWX+Ag1AACQJIX5/X5/sIdoCT6fT3a7XV6vl/NhpPP+lt29czNaeBIAAM7ufP9+81tIAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjBMR7AGAn9JjVvE51+ydm9EKkwAA2hKOwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIwTEewB0Lb0mFV8zjV752a0wiQAAJwdARMCzic6AAAIJbyFBAAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIzTpIDJz8/XVVddpZiYGMXHx2vMmDGqqqoKWHP06FFlZmaqc+fOuuiiizR27FjV1tYGrKmpqVFGRoY6duyo+Ph4zZgxQydOnAhYs27dOg0aNEhRUVG6/PLLVVhYeGHPEAAAhJwmBcz69euVmZmpTZs2qaSkRMePH1daWprq6+utNdOmTdO7776rN998U+vXr9f+/ft10003WftPnjypjIwMHTt2TB999JFee+01FRYWKi8vz1pTXV2tjIwMXX/99aqsrFR2drbuuOMOvf/++83wlAEAgOnC/H6//0JvfPDgQcXHx2v9+vUaPny4vF6vLrnkEi1dulR/+MMfJEm7du1Sr169VF5erqFDh+q9997TjTfeqP3798vhcEiSFi1apJkzZ+rgwYOKjIzUzJkzVVxcrB07dliPNW7cOB0+fFirVq06r9l8Pp/sdru8Xq9sNtuFPkUjtPZvIbXmjzny45IA8Mtyvn+/f9aPOXq9XklSXFycJKmiokLHjx9XamqqtaZnz57q1q2bFTDl5eXq27evFS+SlJ6errvuuks7d+7UwIEDVV5eHnAfp9ZkZ2efdZaGhgY1NDRYl30+3895amgF/AglAOBCXfBJvI2NjcrOztawYcPUp08fSZLH41FkZKRiY2MD1jocDnk8HmvNj+Pl1P5T+35qjc/n0/fff3/GefLz82W3260tMTHxQp8aAABo4y44YDIzM7Vjxw698cYbzTnPBcvNzZXX67W2ffv2BXskAADQQi7oLaSsrCwVFRWprKxMXbt2ta53Op06duyYDh8+HHAUpra2Vk6n01qzZcuWgPs79SmlH6/5308u1dbWymazKTo6+owzRUVFKSoq6kKeDgzHeTIA8MvTpCMwfr9fWVlZWrFihdauXaukpKSA/YMHD1b79u1VWlpqXVdVVaWamhq53W5Jktvt1vbt23XgwAFrTUlJiWw2m5KTk601P76PU2tO3QcAAPhla9IRmMzMTC1dulRvv/22YmJirHNW7Ha7oqOjZbfbNXnyZOXk5CguLk42m01333233G63hg4dKklKS0tTcnKyJkyYoIKCAnk8Hj344IPKzMy0jqDceeedeuGFF3Tffffp9ttv19q1a7V8+XIVF3PSJwAAaOIRmIULF8rr9eq6665TQkKCtS1btsxa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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAGdCAYAAADwjmIIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAs3ElEQVR4nO3dfXBUVZ7/8U9CyINAd3gwaVoDZFeHB0FU0NA+MOOSIkh0NjO4I5BRSjOgTuKAIBJGRXCcCYZFB5SBZZwVqwaXhy1hFDSaTZQohACBCIkQcRcExU6cCekGlBDI+f3hL7doQXmwQ8jx/aq6VfQ933vuOYdU9adu7r2JMMYYAQAAWCaytQcAAADQEgg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArRbX2AFpTU1OTDhw4oE6dOikiIqK1hwMAAM6CMUaHDh2S1+tVZOS3X6/5QYecAwcOKCkpqbWHAQAAzsP+/ft1+eWXf2v7DzrkdOrUSdLXi+RyuVp5NAAA4GwEg0ElJSU53+PfypyjdevWmdtvv910797dSDKrVq361tr777/fSDLPPfdcyP5//OMfZuzYsaZTp07G7Xab++67zxw6dCik5oMPPjA333yziYmJMZdffrl55plnTul/xYoVpnfv3iYmJsb079/frF279pzmEggEjCQTCATO6TgAANB6zvb7+5xvPD5y5IgGDhyoBQsWfGfdqlWrtHHjRnm93lPaMjMzVVVVpcLCQq1Zs0YlJSWaMGFCSEIbPny4evbsqfLycs2ZM0czZ87U4sWLnZoNGzZozJgxysrK0rZt25SRkaGMjAxVVlae65QAAICNvk+S0rdcyfn000/NZZddZiorK03Pnj1DruR8+OGHRpLZvHmzs+/NN980ERER5rPPPjPGGPOnP/3JdO7c2TQ0NDg106ZNM71793Y+/+IXvzDp6ekh501JSTH333//WY+fKzkAALQ9LXYl50yampp09913a+rUqbrqqqtOaS8tLVV8fLwGDx7s7EtNTVVkZKTKysqcmqFDhyo6OtqpSUtLU3V1tQ4ePOjUpKamhvSdlpam0tLSbx1bQ0ODgsFgyAYAAOwU9pDzzDPPKCoqSr/5zW9O2+73+5WQkBCyLyoqSl26dJHf73dqEhMTQ2qaP5+pprn9dPLy8uR2u52NJ6sAALBXWENOeXm55s2bpyVLllyU752ZPn26AoGAs+3fv7+1hwQAAFpIWEPOe++9p9raWvXo0UNRUVGKiorSJ598oilTpqhXr16SJI/Ho9ra2pDjjh8/rrq6Onk8HqempqYmpKb585lqmttPJyYmRi6XK2QDAAB2CmvIufvuu7V9+3ZVVFQ4m9fr1dSpU/XWW29Jknw+n+rr61VeXu4cV1xcrKamJqWkpDg1JSUlamxsdGoKCwvVu3dvde7c2akpKioKOX9hYaF8Pl84pwQAANqoc34Z4OHDh/Xxxx87n/fs2aOKigp16dJFPXr0UNeuXUPq27dvL4/Ho969e0uS+vbtqxEjRmj8+PFatGiRGhsblZOTo9GjRzuPm48dO1azZs1SVlaWpk2bpsrKSs2bN0/PPfec0+/EiRP14x//WHPnzlV6erqWLVumLVu2hDxmDgAAfsDO9bGtd955x0g6ZRs3btxp67/5CLkxX78McMyYMaZjx47G5XKZe++99ztfBnjZZZeZ2bNnn9L3ihUrzI9+9CMTHR1trrrqKl4GCADAD8DZfn9HGGNMK2asVhUMBuV2uxUIBLg/BwCANuJsv7/D/gg5AADAxYCQAwAArETIAQAAViLkAAAAK53zI+QIn165a89Ys3d2+gUYCQAA9uFKDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWOueQU1JSojvuuENer1cRERFavXq109bY2Khp06ZpwIAB6tChg7xer+655x4dOHAgpI+6ujplZmbK5XIpPj5eWVlZOnz4cEjN9u3bdcsttyg2NlZJSUnKz88/ZSwrV65Unz59FBsbqwEDBuiNN9441+kAAABLnXPIOXLkiAYOHKgFCxac0vbll19q69ateuKJJ7R161a9+uqrqq6u1k9/+tOQuszMTFVVVamwsFBr1qxRSUmJJkyY4LQHg0ENHz5cPXv2VHl5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adIkPf3003rttde0Y8cO3XPPPfJ6vc4TWH379tWIESM0fvx4bdq0SevXr1dOTo5Gjx4tr9crSRo7dqyio6OVlZWlqqoqLV++XPPmzdPkyZOdcUycOFEFBQWaO3eudu3apZkzZ2rLli3Kycn5/qsCAADavKhzPWDLli269dZbnc/NwWPcuHFasmSJHn30UR05ckQTJkxQfX29br75ZhUUFCg2NtY5ZunSpcrJydGwYcMUGRmpUaNGaf78+U672+3W22+/rezsbA0aNEjdunXTjBkzQt6lc+ONN+qVV17R448/rt/+9re68sortXr1avXv3/+8FgIAANjle70np63jPTkAALQ9rfKeHAAAgIsFIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgpbCHnBMnTuiJJ55QcnKy4uLi9M///M/63e9+J2OMU2OM0YwZM9S9e3fFxcUpNTVVu3fvDumnrq5OmZmZcrlcio+PV1ZWlg4fPhxSs337dt1yyy2KjY1VUlKS8vPzwz0dAADQRoU95DzzzDNauHChXnjhBe3cuVPPPPOM8vPz9fzzzzs1+fn5mj9/vhYtWqSysjJ16NBBaWlpOnr0qFOTmZmpqqoqFRYWas2aNSopKdGECROc9mAwqOHDh6tnz54qLy/XnDlzNHPmTC1evDjcUwIAAG1QhDn5EksY3H777UpMTNRf/vIXZ9+oUaMUFxenv/71rzLGyOv1asqUKXrkkUckSYFAQImJiVqyZIlGjx6tnTt3ql+/ftq8ebMGDx4sSSooKNDIkSP16aefyuv1auHChXrsscfk9/sVHR0tScrNzdXq1au1a9eusxprMBiU2+1WIBCQy+UK5zKclV65a89Ys3d2+gUYCQAAbcfZfn+H/UrOjTfeqKKiIn300UeSpA8++EDvv/++brvtNknSnj17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mZnp1Dz66KM6cuSIJkyYoPr6et18880qKChQbGysU7N06VLl5ORo2LBhioyM1KhRozR//nyn3e126+2331Z2drYGDRqkbt26acaMGSHv0gEAAD9cYX9PTlvCe3IAAGh7Wu09OQAAABcDQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKwU1doDwHfrlbv2jDV7Z6dfgJEAANC2cCUHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACu1eMiZPXu2IiIiNGnSJGff0aNHlZ2dra5du6pjx44aNWqUampqQo7bt2+f0tPTdckllyghIUFTp07V8ePHQ2reffddXXfddYqJidEVV1yhJUuWtPR0AABAG9GiIWfz5s36j//4D1199dUh+x9++GG9/vrrWrlypdatW6cDBw7o5z//udN+4sQJpaen69ixY9qwYYNefvllLVmyRDNmzHBq9uzZo/T0dN16662qqKjQpEmT9Ktf/UpvvfVWS04JAAC0ES0Wcg4fPqzMzEz9+c9/VufOnZ39gUBAf/nLX/Tss8/qX/7lXzRo0CC99NJL2rBhgzZu3ChJevvtt/Xhhx/qr3/9q6655hrddttt+t3vfqcFCxbo2LFjkqRFixYpOTlZc+fOVd++fZWTk6M777xTzz33XEtNCQAAtCEtFnKys7OVnp6u1NTUkP3l5eVqbGwM2d+nTx/16NFDpaWlkqTS0lINGDBAiYmJTk1aWpqCwaCqqqqcmm/2nZaW5vRxOg0NDQoGgyEbAACwU1RLdLps2TJt3bpVmzdvPqXN7/crOjpa8fHxIfsTExPl9/udmpMDTnN7c9t31QSDQX311VeKi4s75dx5eXmaNWvWec8LAAC0HWG/krN//35NnDhRS5cuVWxsbLi7/16mT5+uQCDgbPv372/tIQEAgBYS9pBTXl6u2tpaXXfddYqKilJUVJTWrVun+fPnKyoqSomJiTp27Jjq6+tDjqupqZHH45EkeTyeU562av58phqXy3XaqziSFBMTI5fLFbIBAAA7hT3kDBs2TDt27FBFRYWzDR48WJmZmc6/27dvr6KiIueY6upq7du3Tz6fT5Lk8/m0Y8cO1dbWOjWFhYVyuVzq16+fU3NyH801zX0AAIAftrDfk9OpUyf1798/ZF+HDh3UtWtXZ39WVpYmT56sLl26yOVy6aGHHpLP59OQIUMkScOHD1e/fv109913Kz8/X36/X48//riys7MVExMjSXrggQf0wgsv6NFHH9V9992n4uJirVixQmvXrg33lAAAQBvUIjcen8lzzz2nyMhIjRo1Sg0NDUpLS9Of/vQnp71du3Zas2aNHnzwQfl8PnXo0EHjxo3TU0895dQkJydr7dq1evjhhzVv3jxdfvnlevHFF5WWltYaUwIAABeZCGOMae1BtJZgMCi3261AINAq9+f0yg3PVae9s9PD0g8AAG3B2X5/87erAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJXCHnLy8vJ0/fXXq1OnTkpISFBGRoaqq6tDao4ePars7Gx17dpVHTt21KhRo1RTUxNSs2/fPqWnp+uSSy5RQkKCpk6dquPHj4fUvPvuu7ruuusUExOjK664QkuWLAn3dAAAQBsV9pCzbt06ZWdna+PGjSosLFRjY6OGDx+uI0eOODUPP/ywXn/9da1cuVLr1q3TgQMH9POf/9xpP3HihNLT03Xs2DFt2LBBL7/8spYsWaIZM2Y4NXv27FF6erpuvfVWVVRUaNKkSfrVr36lt956K9xTAgAAbVCEMca05Am++OILJSQkaN26dRo6dKgCgYAuvfRSvfLKK7rzzjslSbt27VLfvn1VWlqqIUOG6M0339Ttt9+uAwcOKDExUZK0aNEiTZs2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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAGdCAYAAADwjmIIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAnFUlEQVR4nO3dfXTU1YH/8U8CJISHmfBgZjJLwPiwQBZEAY1Tla0lh4DRI5XuEU0rqymsNunKgyCpGtHahoZVC8rCWrsN5xQqsqegQo1kQ0lWCAGiWSBCCm5ssDiJFTMDUcJD7u+Pnnx/jARBnSTk5v06Z84h33vnO/d7z8S8HSZDlDHGCAAAwDLRnb0AAACA9kDkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALBSz85eQGdqaWnRkSNH1L9/f0VFRXX2cgAAwEUwxujYsWPy+XyKjj7/6zXdOnKOHDmipKSkzl4GAAD4Gg4fPqwhQ4acd7xbR07//v0l/W2TXC5XJ68GAABcjFAopKSkJOfn+Pl068hp/Ssql8tF5AAA0MVc6K0mvPEYAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABW6tnZC+jOLl+46YJzPlic0QErAQDAPrySAwAArETkAAAAK33lyCkrK9Mdd9whn8+nqKgobdiwIWzcGKO8vDwlJiYqLi5OaWlpOnjwYNico0ePKjMzUy6XS/Hx8crKytLx48fD5uzZs0e33HKLevfuraSkJBUUFJyzlnXr1mnEiBHq3bu3Ro8erT/84Q9f9XIAAIClvnLkNDU1acyYMVq+fHmb4wUFBVq2bJlWrlypiooK9e3bV+np6Tpx4oQzJzMzU9XV1SouLtbGjRtVVlamWbNmOeOhUEiTJk3SsGHDVFlZqSVLlmjRokV66aWXnDnbt2/XPffco6ysLL377ruaOnWqpk6dqn379n3VSwIAABaKMsaYr33nqCitX79eU6dOlfS3V3F8Pp/mzZunRx55RJIUDAbl8XhUWFio6dOna//+/UpJSdGuXbs0fvx4SVJRUZFuu+02ffjhh/L5fFqxYoUee+wxBQIBxcTESJIWLlyoDRs26MCBA5Kku+++W01NTdq4caOznhtvvFHXXnutVq5ceVHrD4VCcrvdCgaDcrlcX3cbvjbeeAwAwFd3sT+/I/qenNraWgUCAaWlpTnH3G63UlNTVV5eLkkqLy9XfHy8EziSlJaWpujoaFVUVDhzJkyY4ASOJKWnp6umpkaffvqpM+fsx2md0/o4bWlublYoFAq7AQAAO0U0cgKBgCTJ4/GEHfd4PM5YIBBQQkJC2HjPnj01cODAsDltnePsxzjfnNbxtuTn58vtdju3pKSkr3qJAACgi+hWv12Vm5urYDDo3A4fPtzZSwIAAO0kopHj9XolSfX19WHH6+vrnTGv16uGhoaw8dOnT+vo0aNhc9o6x9mPcb45reNtiY2NlcvlCrsBAAA7RTRykpOT5fV6VVJS4hwLhUKqqKiQ3++XJPn9fjU2NqqystKZs2XLFrW0tCg1NdWZU1ZWplOnTjlziouLNXz4cA0YMMCZc/bjtM5pfRwAANC9feXIOX78uKqqqlRVVSXpb282rqqqUl1dnaKiojR79mw988wzev3117V3717dd9998vl8zm9gjRw5UpMnT9bMmTO1c+dObdu2TTk5OZo+fbp8Pp8k6d5771VMTIyysrJUXV2ttWvXaunSpZo7d66zjocfflhFRUV69tlndeDAAS1atEi7d+9WTk7ON98VAADQ5X3lf7tq9+7duvXWW52vW8NjxowZKiws1IIFC9TU1KRZs2apsbFRN998s4qKitS7d2/nPqtXr1ZOTo4mTpyo6OhoTZs2TcuWLXPG3W63Nm/erOzsbI0bN06DBw9WXl5e2GfpfOtb39KaNWv0+OOP6yc/+YmuvvpqbdiwQaNGjfpaGwEAAOzyjT4np6vjc3IAAOh6OuVzcgAAAC4VRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwUsQj58yZM3riiSeUnJysuLg4XXnllfrpT38qY4wzxxijvLw8JSYmKi4uTmlpaTp48GDYeY4eParMzEy5XC7Fx8crKytLx48fD5uzZ88e3XLLLerdu7eSkpJUUFAQ6csBAABdVMQj5xe/+IVWrFihF198Ufv379cvfvELFRQU6IUXXnDmFBQUaNmyZVq5cqUqKirUt29fpaen68SJE86czMxMVVdXq7i4WBs3blRZWZlmzZrljIdCIU2aNEnDhg1TZWWllixZokWLFumll16K9CUBAIAuKMqc/RJLBNx+++3yeDz69a9/7RybNm2a4uLi9Nvf/lbGGPl8Ps2bN0+PPPKIJCkYDMrj8aiwsFDTp0/X/v37lZKSol27dmn8+PGSpKKiIt1222368MMP5fP5tGLFCj322GMKBAKKiYmRJC1cuFAbNmzQgQMHLmqtoVBIbrdbwWBQLpcrkttwUS5fuOmCcz5YnNEBKwEAoOu42J/fEX8l51vf+pZKSkr0pz/9SZL0v//7v3r77bc1ZcoUSVJtba0CgYDS0tKc+7jdbqWmpqq8vFySVF5ervj4eCdwJCktLU3R0dGqqKhw5kyYMMEJHElKT09XTU2NPv300zbX1tzcrFAoFHYDAAB26hnpEy5cuFChUEgjRoxQjx49dObMGf3sZz9TZmamJCkQCEiSPB5P2P08Ho8zFggElJCQEL7Qnj01cODAsDnJycnnnKN1bMCAAeesLT8/X0899VQErhIAAFzqIv5KzquvvqrVq1drzZo1euedd7Rq1Sr927/9m1atWhXph/rKcnNzFQwGndvhw4c7e0kAAKCdRPyVnPnz52vhwoWaPn26JGn06NH685//rPz8fM2YMUNer1eSVF9fr8TEROd+9fX1uvbaayVJXq9XDQ0NYec9ffq0jh496tzf6/Wqvr4+bE7r161zvig2NlaxsbHf/CIBAMAlL+Kv5Hz22WeKjg4/bY8ePdTS0iJJSk5OltfrVUlJiTMeCoVUUVEhv98vSfL7/WpsbFRlZaUzZ8uWLWppaVFqaqozp6ysTKdOnXLmFBcXa/jw4W3+VRUAAOheIh45d9xxh372s59p06ZN+uCDD7R+/Xo999xz+u53vytJioqK0uzZs/XMM8/o9ddf1969e3XffffJ5/Np6tSpkqSRI0dq8uTJmjlzpnbu3Klt27YpJydH06dPl8/nkyTde++9iomJUVZWlqqrq7V27VotXbpUc+fOjfQlAQCALijif131wgsv6IknntCPfvQjNTQ0yOfz6V/+5V+Ul5fnzFmwYIGampo0a9YsNTY26uabb1ZRUZF69+7tzFm9erVycnI0ceJERUdHa9q0aVq2bJkz7na7tXnzZmVnZ2vcuHEaPHiw8vLywj5LBwAAdF8R/5ycroTPyQEAoOvptM/JAQAAuBQQOQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACs1LOzF2Cryxdu6uwlAADQrfFKDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsFK7RM5f/vIXff/739egQYMUFxen0aNHa/fu3c64MUZ5eXlKTExUXFyc0tLSdPDgwbBzHD16VJmZmXK5XIqPj1dWVpaOHz8eNmfPnj265ZZb1Lt3byUlJamgoKA9LgcAAHRBEY+cTz/9VDfddJN69eqlN998U++9956effZZDRgwwJlTUFCgZcuWaeXKlaqoqFDfvn2Vnp6uEydOOHMyMzNVXV2t4uJibdy4UWVlZZo1a5YzHgqFNGnSJA0bNkyVlZVasmSJFi1apJdeeinSlwQAALqgKGOMieQJFy5cqG3btul//ud/2hw3xsjn82nevHl65JFHJEnBYFAej0eFhYWaPn269u/fr5SUFO3atUvjx4+XJBUVFem2227Thx9+KJ/PpxUrVuixxx5TIBBQTEyM89gbNmzQgQMHLmqtoVBIbrdbwWBQLpcrAlf//12+cFNEzvPB4oyInAcAAFtc7M/viL+S8/rrr2v8+PH6p3/6JyUkJOi6667Tr371K2e8trZWgUBAaWlpzjG3263U1FSVl5dLksrLyxUfH+8EjiSlpaUpOjpaFRUVzpwJEyY4gSNJ6enpqqmp0aefftrm2pqbmxUKhcJuAADAThGPnP/7v//TihUrdPXVV+utt97SQw89pH/913/VqlWrJEmBQECS5PF4wu7n8XicsUAgoISEhLDxnj17auDAgWFz2jrH2Y/xRfn5+XK73c4tKSnpG14tAAC4VEU8clpaWjR27Fj9/Oc/13XXXadZs2Zp5syZWrlyZaQf6ivLzc1VMBh0bocPH+7sJQEAgHYS8chJTExUSkpK2LGRI0eqrq5OkuT1eiVJ9fX1YXPq6+udMa/Xq4aGhrDx06dP6+jRo2Fz2jrH2Y/xRbGxsXK5XGE3AABgp4hHzk033aSampqwY3/60580bNgwSVJycrK8Xq9KSkqc8VAopIqKCvn9fkmS3+9XY2OjKisrnTlbtmxRS0uLUlNTnTllZWU6deqUM6e4uFjDhw8P+00uAADQPUU8cubMmaMdO3bo5z//uQ4dOqQ1a9bopZdeUnZ2tiQpKipKs2fP1jPPPKPXX39de/fu1X333Sefz6epU6dK+tsrP5MnT9bMmTO1c+dObdu2TTk5OZo+fbp8Pp8k6d5771VMTIyysrJUXV2ttWvXaunSpZo7d26kLwkAAHRBPSN9wuuvv17r169Xbm6unn76aSUnJ+uXv/ylMjMznTkLFixQU1OTZs2apcbGRt18880qKipS7969nTmrV69WTk6OJk6cqOjoaE2bNk3Lli1zxt1utzZv3qzs7GyNGzdOgwcPVl5eXthn6QAAgO4r4p+T05XwOTkAAHQ9nfY5OQAAAJcCIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYqd0jZ/HixYqKitLs2bOdYydOnFB2drYGDRqkfv36adq0aaqvrw+7X11dnTIyMtSnTx8lJCRo/vz5On36dNicrVu3auzYsYqNjdVVV12lwsLC9r4cAADQRbRr5OzatUv/8R//oWuuuSbs+Jw5c/TGG29o3bp1Ki0t1ZEjR3TXXXc542fOnFFGRoZOnjyp7du3a9WqVSosLFReXp4zp7a2VhkZGbr11ltVVVWl2bNn64c//KHeeuut9rwkAADQRbRb5Bw/flyZmZn61a9+pQEDBjjHg8Ggfv3rX+u5557Td77zHY0bN06/+c1vtH37du3YsUOStHnzZr333nv67W9/q2uvvVZTpkzRT3/6Uy1fvlwnT56UJK1cuVLJycl69tlnNXLkSOXk5Oh73/uenn/++fa6JAAA0IW0W+RkZ2crIyNDaWlpYccrKyt16tSpsOMjRozQ0KFDVV5eLkkqLy/X6NGj5fF4nDnp6ekKhUKqrq525nzx3Onp6c452tLc3KxQKBR2AwAAdurZHid95ZVX9M4772jXrl3njAUCAcXExCg+Pj7suMfjUSAQcOacHTit461jXzYnFArp888/V1xc3DmPnZ+fr6eeeuprXxcAAOg6Iv5KzuHDh/Xwww9r9erV6t27d6RP/43k5uYqGAw6t8OHD3f2kgAAQDuJeORUVlaqoaFBY8eOVc+ePdWzZ0+VlpZq2bJl6tmzpzwej06ePKnGxsaw+9XX18vr9UqSvF7vOb9t1fr1hea4XK42X8WRpNjYWLlcrrAbAACwU8QjZ+LEidq7d6+qqqqc2/jx45WZmen8uVevXiopKXHuU1NTo7q6Ovn9fkmS3+/X3r171dDQ4MwpLi6Wy+VSSkqKM+fsc7TOaT0HAADo3iL+npz+/ftr1KhRYcf69u2rQYMGOcezsrI0d+5cDRw4UC6XSz/+8Y/l9/t14403SpImTZqklJQU/eAHP1BBQYECgYAef/xxZWdnKzY2VpL04IMP6sUXX9SCBQv0wAMPaMuWLXr11Ve1adOmSF8SAADogtrljccX8vzzzys6OlrTpk1Tc3Oz0tPT9e///u/OeI8ePbRx40Y99NBD8vv96tu3r2bMmKGnn37amZOcnKxNmzZpzpw5Wrp0qYYMGaKXX35Z6enpnXFJAADgEhNljDGdvYjOEgqF5Ha7FQwGI/7+nMsXRuYVpQ8WZ0TkPAAA2OJif37zb1cBAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADASkQOAACwEpEDAACsROQAAAArETkAAMBKRA4AALASkQMAAKxE5AAAACsROQAAwEpEDgAAsBKRAwAArETkAAAAKxE5AADAShGPnPz8fF1//fXq37+/EhISNHXqVNXU1ITNOXHihLKzszVo0CD169dP06ZNU319fdicuro6ZWRkqE+fPkpISND8+fN1+vTpsDlbt27V2LFjFRsbq6uuukqFhYWRvpxOd/nCTRe8AQCAc0U8ckpLS5Wdna0dO3aouLhYp06d0qRJk9TU1OTMmTNnjt544w2tW7dOpaWlOnLkiO666y5n/MyZM8rIyNDJkye1fft2rVq1SoWFhcrLy3Pm1NbWKiMjQ7feequqqqo0e/Zs/fCHP9Rbb70V6UsCAABdUJQxxrTnA3z88cdKSEhQaWmpJkyYoGAwqMsuu0xr1qzR9773PUnSgQMHNHLkSJWXl+vGG2/Um2++qdtvv11HjhyRx+ORJK1cuVKPPvqoPv74Y8XExOjRRx/Vpk2btG/fPuexpk+frsbGRhUVFV3U2kKhkNxut4LBoFwuV0SvuyNfYflgcUaHPRYAAJ3tYn9+t/t7coLBoCRp4MCBkqTKykqdOnVKaWlpzpwRI0Zo6NChKi8vlySVl5dr9OjRTuBIUnp6ukKhkKqrq505Z5+jdU7rOdrS3NysUCgUdgMAAHZq18hpaWnR7NmzddNNN2nUqFGSpEAgoJiYGMXHx4fN9Xg8CgQCzpyzA6d1vHXsy+aEQiF9/vnnba4nPz9fbrfbuSUlJX3jawQAAJemdo2c7Oxs7du3T6+88kp7PsxFy83NVTAYdG6HDx/u7CUBAIB20rO9TpyTk6ONGzeqrKxMQ4YMcY57vV6dPHlSjY2NYa/m1NfXy+v1OnN27twZdr7W3746e84XfyOrvr5eLpdLcXFxba4pNjZWsbGx3/jaAADApS/ir+QYY5STk6P169dry5YtSk5ODhsfN26cevXqpZKSEudYTU2N6urq5Pf7JUl+v1979+5VQ0ODM6e4uFgul0spKSnOnLPP0Tqn9RwAAKB7i/grOdnZ2VqzZo1ee+019e/f33kPjdvtVlxcnNxut7KysjR37lwNHDhQLpdLP/7xj+X3+3XjjTdKkiZNmqSUlBT94Ac/UEFBgQKBgB5//HFlZ2c7r8Q8+OCDevHFF7VgwQI98MAD2rJli1599VVt2sTnxgAAgHZ4JWfFihUKBoP69re/rcTEROe2du1aZ87zzz+v22+/XdOmTdOECRPk9Xr1+9//3hnv0aOHNm7cqB49esjv9+v73/++7rvvPj399NPOnOTkZG3atEnFxcUaM2aMnn32Wb388stKT0+P9CUBAIAuqN0/J+dSxufkAADQ9Vwyn5MDAADQGYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAVurZ2QvAN3f5wk0XnPPB4owOWAkAAJcOXskBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJWIHAAAYCUiBwAAWInIAQAAVuryn3i8fPlyLVmyRIFAQGPGjNELL7ygG264obOXdcnhU5EBAN1Nl34lZ+3atZo7d66efPJJvfPOOxozZozS09PV0NDQ2UsDAACdrEtHznPPPaeZM2fq/vvvV0pKilauXKk+ffroP//zPzt7aQAAoJN12b+uOnnypCorK5Wbm+sci46OVlpamsrLy9u8T3Nzs5qbm52vg8GgJCkUCkV8fS3Nn0X8nO1t6Jx1HfZY+55K77DHAgDYpfXntjHmS+d12cj561//qjNnzsjj8YQd93g8OnDgQJv3yc/P11NPPXXO8aSkpHZZI87P/cvOXgEAoKs7duyY3G73ece7bOR8Hbm5uZo7d67zdUtLi44ePapBgwYpKioqYo8TCoWUlJSkw4cPy+VyRey8XR370jb25VzsSdvYl7axL+eyfU+MMTp27Jh8Pt+XzuuykTN48GD16NFD9fX1Ycfr6+vl9XrbvE9sbKxiY2PDjsXHx7fXEuVyuax8cn1T7Evb2JdzsSdtY1/axr6cy+Y9+bJXcFp12Tcex8TEaNy4cSopKXGOtbS0qKSkRH6/vxNXBgAALgVd9pUcSZo7d65mzJih8ePH64YbbtAvf/lLNTU16f777+/spQEAgE7WpSPn7rvv1scff6y8vDwFAgFde+21KioqOufNyB0tNjZWTz755Dl/NdbdsS9tY1/OxZ60jX1pG/tyLvbkb6LMhX7/CgAAoAvqsu/JAQAA+DJEDgAAsBKRAwAArETkAAAAKxE57WD58uW6/PLL1bt3b6Wmpmrnzp2dvaQOs2jRIkVFRYXdRowY4YyfOHFC2dnZGjRokPr166dp06ad84GONigrK9Mdd9whn8+nqKgobdiwIWzcGKO8vDwlJiYqLi5OaWlpOnjwYNico0ePKjMzUy6XS/Hx8crKytLx48c78Coi70L78s///M/nPH8mT54cNse2fcnPz9f111+v/v37KyEhQVOnTlVNTU3YnIv5vqmrq1NGRob69OmjhIQEzZ8/X6dPn+7IS4mYi9mTb3/72+c8Vx588MGwOTbtiSStWLFC11xzjfMBf36/X2+++aYz3t2eJxeDyImwtWvXau7cuXryySf1zjvvaMyYMUpPT1dDQ0NnL63D/MM//IM++ugj5/b22287Y3PmzNEbb7yhdevWqbS0VEeOHNFdd93ViattH01NTRozZoyWL1/e5nhBQYGWLVumlStXqqKiQn379lV6erpOnDjhzMnMzFR1dbWKi4u1ceNGlZWVadasWR11Ce3iQvsiSZMnTw57/vzud78LG7dtX0pLS5Wdna0dO3aouLhYp06d0qRJk9TU1OTMudD3zZkzZ5SRkaGTJ09q+/btWrVqlQoLC5WXl9cZl/SNXcyeSNLMmTPDnisFBQXOmG17IklDhgzR4sWLVVlZqd27d+s73/mO7rzzTlVXV0vqfs+Ti2IQUTfccIPJzs52vj5z5ozx+XwmPz+/E1fVcZ588kkzZsyYNscaGxtNr169zLp165xj+/fvN5JMeXl5B62w40ky69evd75uaWkxXq/XLFmyxDnW2NhoYmNjze9+9ztjjDHvvfeekWR27drlzHnzzTdNVFSU+ctf/tJha29PX9wXY4yZMWOGufPOO897n+6wLw0NDUaSKS0tNcZc3PfNH/7wBxMdHW0CgYAzZ8WKFcblcpnm5uaOvYB28MU9McaYf/zHfzQPP/zwee9j+560GjBggHn55Zd5npwHr+RE0MmTJ1VZWam0tDTnWHR0tNLS0lReXt6JK+tYBw8elM/n0xVXXKHMzEzV1dVJkiorK3Xq1Kmw/RkxYoSGDh3arfantrZWgUAgbB/cbrdSU1OdfSgvL1d8fLzGjx/vzElLS1N0dLQqKio6fM0daevWrUpISNDw4cP10EMP6ZNPPnHGusO+BINBSdLAgQMlXdz3TXl5uUaPHh32Qajp6ekKhULO/+V3ZV/ck1arV6/W4MGDNWrUKOXm5uqzzz5zxmzfkzNnzuiVV15RU1OT/H4/z5Pz6NKfeHyp+etf/6ozZ86c84nLHo9HBw4c6KRVdazU1FQVFhZq+PDh+uijj/TUU0/plltu0b59+xQIBBQTE3POP4rq8XgUCAQ6Z8GdoPVa23qetI4FAgElJCSEjffs2VMDBw60eq8mT56su+66S8nJyXr//ff1k5/8RFOmTFF5ebl69Ohh/b60tLRo9uzZuummmzRq1ChJuqjvm0Ag0ObzqXWsK2trTyTp3nvv1bBhw+Tz+bRnzx49+uijqqmp0e9//3tJ9u7J3r175ff7deLECfXr10/r169XSkqKqqqquvXz5HyIHETUlClTnD9fc801Sk1N1bBhw/Tqq68qLi6uE1eGrmD69OnOn0ePHq1rrrlGV155pbZu3aqJEyd24so6RnZ2tvbt2xf2Prbu7nx7cvb7sEaPHq3ExERNnDhR77//vq688sqOXmaHGT58uKqqqhQMBvVf//VfmjFjhkpLSzt7WZcs/roqggYPHqwePXqc8272+vp6eb3eTlpV54qPj9ff//3f69ChQ/J6vTp58qQaGxvD5nS3/Wm91i97nni93nPerH769GkdPXq0W+3VFVdcocGDB+vQoUOS7N6XnJwcbdy4UX/84x81ZMgQ5/jFfN94vd42n0+tY13V+fakLampqZIU9lyxcU9iYmJ01VVXady4ccrPz9eYMWO0dOnSbv08+TJETgTFxMRo3LhxKikpcY61tLSopKREfr+/E1fWeY4fP673339fiYmJGjdunHr16hW2PzU1Naqrq+tW+5OcnCyv1xu2D6FQSBUVFc4++P1+NTY2qrKy0pmzZcsWtbS0OP8x7w4+/PBDffLJJ0pMTJRk574YY5STk6P169dry5YtSk5ODhu/mO8bv9+vvXv3hgVgcXGxXC6XUlJSOuZCIuhCe9KWqqoqSQp7rti0J+fT0tKi5ubmbvk8uSid/c5n27zyyismNjbWFBYWmvfee8/MmjXLxMfHh72b3Wbz5s0zW7duNbW1tWbbtm0mLS3NDB482DQ0NBhjjHnwwQfN0KFDzZYtW8zu3buN3+83fr+/k1cdeceOHTPvvvuueffdd40k89xzz5l3333X/PnPfzbGGLN48WITHx9vXnvtNbNnzx5z5513muTkZPP5558755g8ebK57rrrTEVFhXn77bfN1Vdfbe65557OuqSI+LJ9OXbsmHnkkUdMeXm5qa2tNf/93/9txo4da66++mpz4sQJ5xy27ctDDz1k3G632bp1q/noo4+c22effebMudD3zenTp82oUaPMpEmTTFVVlSkqKjKXXXaZyc3N7YxL+sYutCeHDh0yTz/9tNm9e7epra01r732mrniiivMhAkTnHPYtifGGLNw4UJTWlpqamtrzZ49e8zChQtNVFSU2bx5szGm+z1PLgaR0w5eeOEFM3ToUBMTE2NuuOEGs2PHjs5eUoe5++67TWJioomJiTF/93d/Z+6++25z6NAhZ/zzzz83P/rRj8yAAQNMnz59zHe/+13z0UcfdeKK28cf//hHI+mc24wZM4wxf/s18ieeeMJ4PB4TGxtrJk6caGpqasLO8cknn5h77rnH9OvXz7hcLnP//febY8eOdcLVRM6X7ctnn31mJk2aZC677DLTq1cvM2zYMDNz5sxz/gfBtn1paz8kmd/85jfOnIv5vvnggw/MlClTTFxcnBk8eLCZN2+eOXXqVAdfTWRcaE/q6urMhAkTzMCBA01sbKy56qqrzPz5800wGAw7j017YowxDzzwgBk2bJiJiYkxl112mZk4caITOMZ0v+fJxYgyxpiOe90IAACgY/CeHAAAYCUiBwAAWInIAQAAViJyAACAlYgcAABgJSIHAABYicgBAABWInIAAICViBwAAGAlIgcAAFiJyAEAAFYicgAAgJX+H+iTV/4mZ5OZAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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fD7Lsixr1qxZ1oIFC+z6t956y4qKirJWrlxpHTx40FqyZAmPUZ+lrs71ihUrrOjoaOvf//3frf/5n/+xt6NHj/bUJRihq/N8Ip5COjtdneeamhpr0KBBVk5OjlVdXW1t27bNSkhIsB566KGeugQjdHWelyxZYg0aNMj6wx/+YH388cfW66+/bl188cXW7bff3lOXYISjR49a7777rvXuu+9akqzHH3/cevfdd61PP/3UsizLWrBggTVr1iy7vvMx6nnz5lkHDx601q5dy2PUPWHNmjXW8OHDrejoaOvqq6+23n77bXvshhtusDIzM4Pq//jHP1qXXnqpFR0dbV122WXW9u3bu7ljc3VlrkeMGGFJOmlbsmRJ9zdumK7+m/4mAszZ6+o8796920pOTrZiYmKsiy66yHr44Yettra2bu7aPF2Z59bWVmvp0qXWxRdfbMXGxlqJiYnW3XffbX355Zfd37hB/vSnP53yf2875zYzM9O64YYbTjrmyiuvtKKjo62LLrrIevbZZ8PaY4RlsYYGAADMwj0wAADAOAQYAABgHAIMAAAwDgEGAAAYhwADAACMQ4ABAADGIcAAAADjEGAAAIBxCDAAAMA4BBgAAGAcAgwAADAOAQYAABjn/wPB3uE/OyPLkwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import classification_report\n", "\n", "data = np.array(data)\n", "# plot histograms for first 4 columns of data\n", "import matplotlib.pyplot as plt\n", "for i in range(4):\n", " plt.hist(data[:, i], bins=50)\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# clip based on histograms\n", "data[:, 0] = np.clip(data[:, 0], 0, 5)\n", "data[:, 1] = np.clip(data[:, 1], 0, 100)\n", "data[:, 2] = np.clip(data[:, 2], 0, 50)\n", "X = data[:8000, :-1]\n", "Y = data[:8000, -1]\n", "\n", "X_test = data[8000:, :-1]\n", "Y_test = data[8000:, -1]\n", "\n", "lr_model = LogisticRegression()\n", "lr_model.fit(X, Y)\n", "\n", "Y_pred = lr_model.predict(X_test)\n", "print(classification_report(Y_test, Y_pred))\n" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_275091/678164099.py:22: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", " X = torch.tensor(X, dtype=torch.float32)\n", "/tmp/ipykernel_275091/678164099.py:23: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", " Y = torch.tensor(Y, dtype=torch.long)\n", "/tmp/ipykernel_275091/678164099.py:25: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", " X_test = torch.tensor(X_test, dtype=torch.float32)\n", "/tmp/ipykernel_275091/678164099.py:26: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", " Y_test = torch.tensor(Y_test, dtype=torch.long)\n", "100%|██████████| 10000/10000 [00:09<00:00, 1035.53it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Finished Training\n", " precision recall f1-score support\n", "\n", " 0 0.94 0.94 0.94 6000\n", " 1 0.94 0.94 0.94 6000\n", "\n", " accuracy 0.94 12000\n", " macro avg 0.94 0.94 0.94 12000\n", "weighted avg 0.94 0.94 0.94 12000\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# classify again using a simple 2 layer neural network\n", "# Used copilot for this\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import torch.optim as optim\n", "\n", "class Net(nn.Module):\n", " def __init__(self):\n", " super(Net, self).__init__()\n", " self.fc1 = nn.Linear(4, 10)\n", " self.fc2 = nn.Linear(10, 2)\n", "\n", " def forward(self, x):\n", " x = F.sigmoid(self.fc1(x))\n", " x = self.fc2(x)\n", " return x\n", " \n", "net = Net()\n", "criterion = nn.CrossEntropyLoss()\n", "optimizer = optim.Adam(net.parameters(), lr=0.001)\n", "\n", "X = torch.tensor(X, dtype=torch.float32)\n", "Y = torch.tensor(Y, dtype=torch.long)\n", "\n", "X_test = torch.tensor(X_test, dtype=torch.float32)\n", "Y_test = torch.tensor(Y_test, dtype=torch.long)\n", "\n", "for epoch in tqdm(range(10000)): # loop over the dataset multiple times\n", "\n", " # zero the parameter gradients\n", " optimizer.zero_grad()\n", "\n", " # forward + backward + optimize\n", " outputs = net(X)\n", " loss = criterion(outputs, Y)\n", " loss.backward()\n", " optimizer.step()\n", "\n", " # print statistics\n", "\n", "print('Finished Training')\n", "\n", "with torch.no_grad():\n", " outputs = net(X_test)\n", " _, predicted = torch.max(outputs.data, 1)\n", " print(classification_report(Y_test, predicted))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "with open('model.pkl', 'wb') as f:\n", " pickle.dump(lr_model, f)\n", "with open('data.pkl', 'wb') as f:\n", " pickle.dump(data, f)\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "with open('model.pkl', 'rb') as f:\n", " lr_model = pickle.load(f)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "with open('data.pkl', 'rb') as f:\n", " data = pickle.load(f)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-5.93219721 -0.12777083 -0.22496752 -0.02356617]]\n" ] } ], "source": [ "print(lr_model.coef_)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import numpy as np\n", "from nltk import word_tokenize, sent_tokenize\n", "from scipy.stats import shapiro\n", "from transformers import GPT2LMHeadModel, GPT2TokenizerFast\n", "\n", "model = GPT2LMHeadModel.from_pretrained('gpt2-large').to('cuda')\n", "tokenizer: GPT2TokenizerFast = GPT2TokenizerFast.from_pretrained('gpt2-large')\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "\n", "def perplexity(text: str):\n", " tokens = tokenizer(text, return_tensors='pt', truncation=True, return_offsets_mapping=True)\n", " inputs = tokens.input_ids.to('cuda')\n", " targets = inputs.clone()\n", " with torch.no_grad():\n", " outputs = model(inputs, labels=targets)\n", " labels = targets.to(outputs.logits.device)\n", " # Shift so that tokens < n predict n\n", " shift_logits = outputs.logits[..., :-1, :].contiguous()\n", " shift_labels = labels[..., 1:].contiguous()\n", " perplexities = torch.nn.functional.cross_entropy(shift_logits.view(-1, shift_logits.size(-1)), shift_labels.view(-1), reduce=False)\n", " output = []\n", " targets = targets.to('cpu')[0].tolist()\n", " # tokens = tokenizer.convert_ids_to_tokens(targets)\n", " offsets = tokens.offset_mapping[0].tolist()\n", " print(perplexities.to('cpu').tolist())\n", " perplexities = perplexities.to('cpu').numpy()\n", " perplexities = perplexities / np.max(perplexities)\n", " perplexities = perplexities.tolist()\n", " print(perplexities)\n", " # output.append((text[:offsets[0][1]], 0))\n", " # for offset, p in zip(offsets[1:], perplexities):\n", " # output.append((text[offset[0]:offset[1]], p))\n", " # print(type(p))\n", " output.append((text[:tokens.word_to_chars(0)[1]], 0))\n", " for word_id, p in zip(tokens.word_ids()[1:], perplexities):\n", " if word_id == len(output):\n", " span = tokens.word_to_chars(word_id)\n", " output.append((text[span[0]:span[1]], p))\n", " return output\n", "\n", "\n", "\n", "def test_text(text):\n", " tokens = tokenizer(text, return_tensors='pt', truncation=True).input_ids.to('cuda')\n", " targets = tokens.clone()\n", " with torch.no_grad():\n", " outputs = model(tokens, labels=targets)\n", " nll = outputs.loss\n", " lengths = []\n", " for sentence in sent_tokenize(text):\n", " lengths.append(len(word_tokenize(sentence)))\n", " print([nll.item(), np.mean(lengths), np.std(lengths)])\n", " return lr_model.predict_proba([[nll.item(), np.mean(lengths), np.std(lengths), shapiro(lengths).pvalue if len(lengths) > 2 else 0.5]])[0]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[3.2869603633880615, 19.0, 5.354126134736337]\n", "[0.98511063 0.01488937]\n", "[9.626564025878906, 10.458065032958984, 0.9473797082901001, 7.013673305511475, 1.1930911540985107, 7.4642791748046875, 3.274026870727539, 0.812697172164917, 4.070406913757324, 0.0060477592051029205, 6.279149055480957, 0.07301952689886093, 3.441023826599121, 0.43232086300849915, 2.4097390174865723, 2.0317587852478027, 4.967353820800781, 0.9414551258087158, 3.145803213119507, 5.0301594734191895, 1.9172234535217285, 5.812107563018799, 0.37234604358673096, 7.768512725830078, 1.9835110902786255, 16.115070343017578, 10.270663261413574, 0.004315587691962719, 0.8863922357559204, 0.001679201959632337, 1.5720856189727783, 4.098275184631348, 0.09379520267248154, 0.01742401160299778, 1.9080654382705688, 2.9366698265075684, 2.703294038772583, 5.661197185516357, 7.182082653045654, 6.365976333618164, 5.099065780639648, 0.21147948503494263, 2.1655678749084473, 2.677046775817871, 2.3723464012145996, 0.7552525997161865, 1.8802437782287598, 1.26412034034729, 2.6361918449401855, 3.4664087295532227, 0.5376521348953247, 0.7687920331954956, 2.3741424083709717, 0.8294171094894409, 6.6993021965026855, 1.999420166015625, 4.882635116577148, 0.18941240012645721, 4.529433727264404, 0.5909615755081177]\n", "[0.597364068031311, 0.6489617824554443, 0.05878842994570732, 0.4352245032787323, 0.07403574138879776, 0.46318626403808594, 0.20316553115844727, 0.05043087899684906, 0.2525838613510132, 0.00037528591929003596, 0.3896445333957672, 0.004531132988631725, 0.2135283201932907, 0.026827115565538406, 0.1495332568883896, 0.12607818841934204, 0.3082427680492401, 0.05842078849673271, 0.19520877301692963, 0.3121400773525238, 0.1189708411693573, 0.36066287755966187, 0.023105455562472343, 0.4820650815963745, 0.12308423221111298, 1.0, 0.6373327970504761, 0.0002677982556633651, 0.05500393360853195, 0.00010420072067063302, 0.09755375236272812, 0.254313200712204, 0.005820340942591429, 0.0010812246473506093, 0.11840254813432693, 0.18223127722740173, 0.16774943470954895, 0.35129833221435547, 0.44567492604255676, 0.39503249526023865, 0.3164159655570984, 0.013123087584972382, 0.13438153266906738, 0.166120707988739, 0.1472129076719284, 0.04686623066663742, 0.11667611449956894, 0.07844336330890656, 0.16358549892902374, 0.21510353684425354, 0.03336331248283386, 0.04770640283823013, 0.1473243534564972, 0.051468413323163986, 0.41571658849716187, 0.12407144904136658, 0.30298566818237305, 0.011753743514418602, 0.28106820583343506, 0.036671362817287445]\n", "[('\\n', 0), ('Miss', 0.597364068031311), (' Bartlett', 0.6489617824554443), (' looked', 0.4352245032787323), (' at', 0.07403574138879776), (' Lucy', 0.46318626403808594), (' with', 0.20316553115844727), (' a', 0.05043087899684906), (' mixture', 0.2525838613510132), (' of', 0.00037528591929003596), (' disapproval', 0.3896445333957672), (' and', 0.004531132988631725), (' concern', 0.2135283201932907), ('.', 0.026827115565538406), (' She', 0.1495332568883896), (' had', 0.12607818841934204), (' hoped', 0.3082427680492401), (' that', 0.05842078849673271), (' this', 0.19520877301692963), (' trip', 0.3121400773525238), (' to', 0.1189708411693573), (' Italy', 0.36066287755966187), (' would', 0.023105455562472343), (' broaden', 0.4820650815963745), (' Lucy', 0.12308423221111298), ('’', 1.0), ('s', 0.0002677982556633651), (' horizons', 0.05500393360853195), (' and', 0.09755375236272812), (' introduce', 0.254313200712204), (' her', 0.005820340942591429), (' to', 0.0010812246473506093), (' a', 0.11840254813432693), (' world', 0.18223127722740173), (' beyond', 0.16774943470954895), (' their', 0.35129833221435547), (' sheltered', 0.44567492604255676), (' English', 0.39503249526023865), (' existence', 0.3164159655570984), ('.', 0.013123087584972382), (' But', 0.13438153266906738), (' it', 0.166120707988739), (' seemed', 0.1472129076719284), (' that', 0.04686623066663742), (' Lucy', 0.11667611449956894), (' was', 0.07844336330890656), (' not', 0.16358549892902374), (' quite', 0.21510353684425354), (' ready', 0.03336331248283386), (' to', 0.04770640283823013), (' embrace', 0.1473243534564972), (' the', 0.051468413323163986), (' differences', 0.41571658849716187), (' that', 0.12407144904136658), (' came', 0.30298566818237305), (' with', 0.011753743514418602), (' travel', 0.28106820583343506), ('.', 0.036671362817287445)]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/alex/Documents/HW4/.venv/lib/python3.8/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.\n", " warnings.warn(warning.format(ret))\n" ] } ], "source": [ "chatgpt_sample = \"\"\"\n", "Miss Bartlett looked at Lucy with a mixture of disapproval and concern. She had hoped that this trip to Italy would broaden Lucy’s horizons and introduce her to a world beyond their sheltered English existence. But it seemed that Lucy was not quite ready to embrace the differences that came with travel.\"\"\"\n", "print(test_text(chatgpt_sample))\n", "print(perplexity(chatgpt_sample))" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2.2665181159973145, 24.7, 13.616534067081828]\n", "[[0.6464703 0.3535297]]\n" ] } ], "source": [ "human_sample = \"\"\"\n", "Saturn V is a retired American super heavy-lift launch vehicle developed by NASA under the Apollo program for human exploration of the Moon. \n", "The rocket was human-rated, with three stages, and powered with liquid fuel. It was flown from 1967 to 1973. \n", "It was used for nine crewed flights to the Moon, and to launch Skylab, the first American space station.\n", "As of 2023, the Saturn V remains the only launch vehicle to carry humans beyond low Earth orbit (LEO). \n", "Saturn V holds records for the heaviest payload launched and largest payload capacity to low Earth orbit: 310,000 lb (140,000 kg), which included the third stage and unburned propellant needed to send the Apollo command and service module and Lunar Module to the Moon.\n", "The largest production model of the Saturn family of rockets, the Saturn V was designed under the direction of Wernher von Braun at the Marshall Space Flight Center in Huntsville, Alabama; the lead contractors were Boeing, North American Aviation, Douglas Aircraft Company, and IBM. \n", "A total of 15 flight-capable vehicles were built, plus three for ground testing. \n", "Thirteen were launched from Kennedy Space Center with no loss of crew or payload. \n", "A total of 24 astronauts were launched to the Moon from Apollo 8 (December 1968) to Apollo 17 (December 1972).\n", "\"\"\"\n", "print(test_text(human_sample))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2.3605117797851562, 40.666666666666664, 16.858891488535722]\n", "[0.96855945 0.03144055]\n" ] } ], "source": [ "human_sample = \"\"\"\n", "Elon Reeve Musk (born June 28, 1971) is a business magnate and investor. He is the founder, CEO and chief engineer of SpaceX; angel investor, CEO and product architect of Tesla, Inc.; owner and CEO of Twitter; founder of the Boring Company; co-founder of Neuralink and OpenAI; and president of the philanthropic Musk Foundation. With an estimated net worth of around $192 billion as of March 27, 2023, primarily from his ownership stakes in Tesla and SpaceX,[4][5] Musk is the second-wealthiest person in the world, according to both the Bloomberg Billionaires Index and Forbes's real-time billionaires list\"\"\"\n", "print(test_text(human_sample))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on local URL: http://127.0.0.1:7860\n", "\n", "To create a public link, set `share=True` in `launch()`.\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1.6267235279083252, 25.4, 3.1368774282716245]\n", "[3.1928133964538574, 11.090872764587402, 1.2401660680770874, 2.9397456645965576, 1.5989651679992676, 6.144593238830566, 0.05921376124024391, 0.6071777939796448, 1.2966952323913574, 1.77269446849823, 1.418119192123413, 0.8948221802711487, 1.4052410125732422, 1.362561583518982, 0.2293579876422882, 0.9151676893234253, 0.19395671784877777, 1.9493482112884521, 3.705836534500122, 0.6635450720787048, 0.9213794469833374, 0.8167247772216797, 2.1745786666870117, 1.3509793281555176, 3.217881679534912, 0.13503828644752502, 1.0101912021636963, 1.5108182430267334, 0.009972392581403255, 0.040616169571876526, 1.3157780170440674, 0.5955593585968018, 8.878231048583984, 6.160762310028076, 4.153482437133789, 5.512568473815918, 0.6207113265991211, 1.8213298320770264, 0.2258196920156479, 0.32941514253616333, 0.9138765335083008, 0.7371490597724915, 1.1995980739593506, 1.3340378999710083, 3.4415011405944824, 5.881114959716797, 6.742539882659912, 0.11513563245534897, 0.02005128189921379, 0.05605721473693848, 4.996840476989746, 1.7579615116119385, 0.39984428882598877, 3.6755969524383545, 1.6284435987472534, 0.9194611310958862, 0.12320952862501144, 0.08166418224573135, 0.09180690348148346, 0.021098461002111435, 1.4409698247909546, 0.8157663345336914, 0.00022206225548870862, 2.109982233378105e-05, 0.6072937250137329, 0.7115561962127686, 0.42924728989601135, 1.1333709955215454, 0.8692479133605957, 0.03447418287396431, 1.3837268352508545, 2.6240711212158203, 2.2277090549468994, 3.78879714012146, 1.406568169593811, 0.6069567203521729, 0.37971168756484985, 0.32997074723243713, 2.513673782348633, 0.06074387952685356, 0.10196061432361603, 0.6476960778236389, 2.6239676475524902, 0.018546734005212784, 0.004600179847329855, 0.9186551570892334, 5.095998764038086, 0.053109098225831985, 0.3212951123714447, 3.572187900543213, 0.0006406639004126191, 1.0427137613296509, 0.05452926829457283, 1.0716133117675781, 0.32698580622673035, 0.2355416715145111, 5.255245685577393, 1.0952537059783936, 3.15411376953125, 2.3244972229003906, 0.07329752296209335, 0.4302949607372284, 0.12929297983646393, 0.010957074351608753, 0.7797628045082092, 3.995819091796875, 2.18916916847229, 0.8911515474319458, 1.3505802154541016, 3.2369117736816406, 0.9674966931343079, 1.2861378192901611, 0.046985819935798645, 2.034029483795166, 0.9311453104019165, 1.10415518283844, 0.5445302128791809, 2.931535243988037, 0.2444969266653061, 0.20252281427383423, 0.20444877445697784, 6.833767414093018, 0.015393730252981186, 1.6097276210784912, 1.442081093788147, 1.2687007188796997, 5.179072856903076, 4.7547760009765625, 0.75089430809021, 1.0400415658950806, 0.2555221915245056, 0.0025764862075448036, 1.1272435188293457, 0.7858774065971375, 2.372830867767334, 2.7793166637420654, 2.2854485511779785, 0.06959936767816544, 3.9795563220977783, 1.4826732873916626, 1.3623911142349243, 2.5175373554229736, 0.21872323751449585]\n", "[0.28787755966186523, 1.0, 0.11181861907243729, 0.2650599181652069, 0.14416946470737457, 0.554022490978241, 0.005338963121175766, 0.05474571883678436, 0.11691552400588989, 0.159833624958992, 0.12786363065242767, 0.0806809514760971, 0.1267024725675583, 0.1228543147444725, 0.020679885521531105, 0.08251538872718811, 0.017487958073616028, 0.17576147615909576, 0.33413389325141907, 0.059828031808137894, 0.08307547122240067, 0.07363936305046082, 0.19606921076774597, 0.12181001156568527, 0.2901378273963928, 0.012175623327493668, 0.0910831093788147, 0.1362217664718628, 0.0008991531212814152, 0.0036621256731450558, 0.1186361089348793, 0.05369815230369568, 0.8004988431930542, 0.5554803609848022, 0.3744955360889435, 0.49703648686408997, 0.055965960025787354, 0.16421879827976227, 0.020360859110951424, 0.029701462015509605, 0.08239897340536118, 0.06646447628736496, 0.1081608384847641, 0.12028250098228455, 0.3103002905845642, 0.5302662253379822, 0.607935905456543, 0.010381115600466728, 0.0018079084111377597, 0.005054355598986149, 0.4505362808704376, 0.15850524604320526, 0.03605165332555771, 0.331407368183136, 0.14682736992835999, 0.08290250599384308, 0.011109092272818089, 0.0073631880804896355, 0.008277698419988155, 0.001902326475828886, 0.12992393970489502, 0.0735529437661171, 2.0022072931169532e-05, 1.9024491848540492e-06, 0.05475617200136185, 0.0641569197177887, 0.03870275244116783, 0.10218952596187592, 0.07837507128715515, 0.0031083382200449705, 0.12476266175508499, 0.23659734427928925, 0.2008596658706665, 0.3416139781475067, 0.12682212889194489, 0.05472578480839729, 0.03423641249537468, 0.029751557856798172, 0.22664345800876617, 0.005476925056427717, 0.00919320061802864, 0.0583990179002285, 0.2365880161523819, 0.001672251964919269, 0.0004147716681472957, 0.08282983303070068, 0.4594767987728119, 0.00478854076936841, 0.028969326987862587, 0.32208356261253357, 5.776496618636884e-05, 0.09401548653841019, 0.004916589241474867, 0.09662118554115295, 0.02948242425918579, 0.021237432956695557, 0.47383517026901245, 0.0987527072429657, 0.2843882441520691, 0.209586501121521, 0.006608814932405949, 0.03879721462726593, 0.011657602153718472, 0.0009879361605271697, 0.07030671089887619, 0.36027994751930237, 0.19738474488258362, 0.08034998923540115, 0.12177402526140213, 0.291853666305542, 0.08723359555006027, 0.11596362292766571, 0.004236440174281597, 0.18339669704437256, 0.08395600318908691, 0.09955529868602753, 0.04909714683890343, 0.26431962847709656, 0.022044876590371132, 0.01826031319797039, 0.018433965742588043, 0.6161613464355469, 0.001387963886372745, 0.14513985812664032, 0.13002413511276245, 0.11439142376184464, 0.4669671058654785, 0.4287107288837433, 0.06770380586385727, 0.09377454966306686, 0.023038960993289948, 0.00023230689112097025, 0.10163704305887222, 0.07085803151130676, 0.2139444649219513, 0.25059494376182556, 0.20606571435928345, 0.006275373511016369, 0.35881364345550537, 0.13368409872055054, 0.12283894419670105, 0.22699181735515594, 0.01972101256251335]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/alex/Documents/HW4/.venv/lib/python3.8/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.\n", " warnings.warn(warning.format(ret))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[3.0439934730529785, 22.6, 7.1442284397967]\n", "[11.864895820617676, 2.0514791011810303, 9.000249862670898, 1.2321361303329468, 8.075322151184082, 3.7822072505950928, 0.8100712299346924, 4.215737342834473, 0.006572297774255276, 6.480944633483887, 0.07386036962270737, 3.5978341102600098, 0.4204569458961487, 2.3516340255737305, 1.9957952499389648, 5.545820236206055, 0.933158278465271, 3.2035279273986816, 4.9862961769104, 1.9091668128967285, 5.756060600280762, 0.3990957736968994, 7.882543563842773, 2.6852173805236816, 16.25119400024414, 10.432367324829102, 0.0038006706163287163, 1.0080170631408691, 0.001500910148024559, 1.5330770015716553, 4.130419731140137, 0.09100932627916336, 0.01775338314473629, 1.8900879621505737, 2.918238639831543, 2.757880687713623, 5.580265998840332, 7.124682903289795, 6.46763801574707, 5.205038070678711, 0.23242546617984772, 2.1020004749298096, 2.5994062423706055, 2.4229860305786133, 0.7960079908370972, 2.1522598266601562, 1.2922276258468628, 2.6557605266571045, 3.5815792083740234, 0.5466822385787964, 0.7603335976600647, 2.3602635860443115, 0.835026204586029, 6.669407367706299, 1.9866368770599365, 4.803174018859863, 0.18777325749397278, 4.582459449768066, 0.6017156839370728, 0.9921320080757141, 0.006107832305133343, 2.07625150680542, 8.118677139282227, 9.745126724243164, 1.884968876838684, 0.18508204817771912, 0.19274930655956268, 2.9621834754943848, 5.581396579742432, 0.9279810190200806, 4.2345805168151855, 1.806076169013977, 0.513871431350708, 8.04288101196289, 7.470847129821777, 0.25049546360969543, 0.0028451699763536453, 0.9116137623786926, 1.8216975927352905, 1.4852879047393799, 0.12393318861722946, 5.749676704406738, 1.6977530717849731, 3.811319351196289, 2.33888840675354, 4.128227233886719, 6.7950286865234375, 3.570361614227295, 7.665349960327148, 6.695107936859131, 2.867828845977783, 1.1098644733428955, 0.8828275203704834, 6.231601238250732, 1.8418915271759033, 2.2433323860168457, 8.241106033325195, 2.1300814151763916, 0.008132321760058403, 0.4704584777355194, 2.25246000289917, 0.3259035050868988, 3.8138914108276367, 4.867907524108887, 4.711456298828125, 0.44385451078414917, 2.4231388568878174, 1.299429178237915, 2.3743391036987305, 2.055126190185547, 0.9056820869445801, 2.9879298210144043, 5.782326698303223, 0.03206677734851837, 4.157115936279297, 3.2374379634857178, 2.2042324542999268, 0.6346985101699829, 1.9344696998596191, 0.2054922878742218, 0.013216039165854454, 0.5428219437599182, 0.6054160594940186, 5.988008499145508]\n", "[0.730093777179718, 0.12623558938503265, 0.5538208484649658, 0.07581818848848343, 0.4969063997268677, 0.23273411393165588, 0.04984687641263008, 0.25941091775894165, 0.0004044193774461746, 0.39879804849624634, 0.004544919356703758, 0.22138890624046326, 0.025872372090816498, 0.14470531046390533, 0.12280914187431335, 0.34125617146492004, 0.05742090567946434, 0.19712570309638977, 0.3068264424800873, 0.11747855693101883, 0.3541930913925171, 0.02455793507397175, 0.4850439727306366, 0.16523200273513794, 1.0, 0.6419446468353271, 0.00023387023247778416, 0.06202726066112518, 9.235691686626524e-05, 0.09433627128601074, 0.25416100025177, 0.00560016231611371, 0.001092435559257865, 0.11630456149578094, 0.17957071959972382, 0.16970326006412506, 0.3433757424354553, 0.43840980529785156, 0.3979792594909668, 0.32028651237487793, 0.014302054420113564, 0.1293443739414215, 0.15995170176029205, 0.14909587800502777, 0.04898150637745857, 0.13243702054023743, 0.07951585948467255, 0.16341941058635712, 0.22038868069648743, 0.033639512956142426, 0.04678632318973541, 0.1452363133430481, 0.05138245224952698, 0.41039490699768066, 0.12224559485912323, 0.29555821418762207, 0.01155442837625742, 0.2819767892360687, 0.03702593594789505, 0.06104979291558266, 0.0003758389793802053, 0.1277599334716797, 0.4995741844177246, 0.5996560454368591, 0.1159895658493042, 0.011388828046619892, 0.011860623955726624, 0.18227481842041016, 0.3434453308582306, 0.05710233002901077, 0.2605704367160797, 0.11113498359918594, 0.031620532274246216, 0.4949101507663727, 0.45971065759658813, 0.015413972549140453, 0.00017507451411802322, 0.0560951866209507, 0.11209622770547867, 0.09139561653137207, 0.007626097649335861, 0.3538002669811249, 0.104469433426857, 0.23452550172805786, 0.14392101764678955, 0.2540260851383209, 0.41812488436698914, 0.21969841420650482, 0.4716791808605194, 0.4119763672351837, 0.17646880447864532, 0.06829433143138885, 0.05432385578751564, 0.38345497846603394, 0.11333884298801422, 0.13804107904434204, 0.5071077346801758, 0.1310722976922989, 0.0005004138220101595, 0.028949163854122162, 0.13860273361206055, 0.020054126158356667, 0.23468376696109772, 0.29954153299331665, 0.28991445899009705, 0.02731211669743061, 0.1491052806377411, 0.07995899766683578, 0.1461024433374405, 0.1264600157737732, 0.0557301864027977, 0.18385909497737885, 0.3558093309402466, 0.001973195234313607, 0.2558037340641022, 0.19921231269836426, 0.135635107755661, 0.03905550017952919, 0.11903554201126099, 0.012644750066101551, 0.0008132349466904998, 0.0334019735455513, 0.03725363686680794, 0.36846575140953064]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/alex/Documents/HW4/.venv/lib/python3.8/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.\n", " warnings.warn(warning.format(ret))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[2.4483039379119873, 19.0, 8.977095036486896]\n", "[11.86489486694336, 2.0514755249023438, 9.000250816345215, 1.2321313619613647, 8.075323104858398, 3.7822017669677734, 0.8100698590278625, 4.215735912322998, 0.006572416052222252, 6.4809465408325195, 0.0738598182797432, 3.597837209701538, 0.4204564690589905, 2.351639747619629, 1.9957947731018066, 5.5458173751831055, 0.9331667423248291, 3.203524112701416, 4.98629093170166, 1.9091691970825195, 5.756062984466553, 0.3990977108478546, 7.882537364959717, 2.6852290630340576, 16.251188278198242, 10.432356834411621, 0.0038006706163287163, 1.0080193281173706, 0.0015010291244834661, 1.5330843925476074, 4.130419731140137, 0.09100997447967529, 0.017753617838025093, 1.8900837898254395, 2.9182400703430176, 2.7578728199005127, 5.580273628234863, 7.124689102172852, 6.467639923095703, 5.205037593841553, 0.23242877423763275, 2.102001905441284, 2.599396228790283, 2.4229817390441895, 0.7960082292556763, 2.1522603034973145, 1.2922170162200928, 2.6557509899139404, 3.581577777862549, 0.5466840267181396, 0.7603421807289124, 2.360273838043213, 0.8350260853767395, 6.669408798217773, 1.9866364002227783, 4.8031744956970215, 0.1877749264240265, 4.58245325088501, 0.6017178297042847, 0.9921338558197021, 0.006107832305133343, 2.0762646198272705, 8.118680953979492, 9.745122909545898, 1.884958267211914, 0.18507987260818481, 0.1927490234375, 2.9621832370758057, 5.58139705657959, 0.9279758334159851, 4.234593391418457, 1.8060717582702637, 0.5138688087463379, 8.042890548706055, 7.4708476066589355, 0.25049397349357605, 0.002845050999894738, 0.911608099937439, 1.821701169013977, 1.485280990600586, 0.12393435090780258, 5.749685287475586, 1.6977499723434448, 3.811312198638916, 2.338888168334961, 4.1282196044921875, 6.795027256011963, 3.5703577995300293, 7.665347099304199, 6.6951069831848145, 2.867831230163574, 1.1098626852035522, 0.8828290104866028, 6.231605529785156, 1.8418923616409302, 2.243330717086792, 8.241106986999512, 2.1300926208496094, 0.008132203482091427, 0.4704577326774597, 2.2524571418762207, 0.32590246200561523, 3.8138954639434814, 4.867913246154785, 4.711453914642334, 0.44385451078414917, 2.4231321811676025, 1.2994318008422852, 2.3743395805358887, 2.0551257133483887, 0.9056766629219055, 2.987928867340088, 5.782322883605957, 0.03206666186451912, 4.1571221351623535, 3.23745059967041, 2.2042226791381836, 0.634701132774353, 1.9344743490219116, 0.2054917961359024, 0.013215920887887478, 0.542826235294342, 0.6054112315177917, 5.988028526306152, 0.35177552700042725, 0.00012587709352374077, 1.2386629581451416, 3.0874729418428615e-05, 3.8488805294036865, 1.4370168447494507, 2.3756494522094727, 2.761570453643799, 2.8405041694641113, 0.030497077852487564, 0.07818608731031418, 0.6777079701423645, 6.244894027709961, 0.04737279564142227, 0.0032673091627657413, 1.7022007703781128, 0.2841640114784241, 1.7243561744689941, 1.8908313512802124, 0.0010422994382679462, 3.28440523147583, 1.7723737955093384, 3.5036306381225586, 1.3177518844604492, 2.5446724891662598, 1.0631287097930908, 1.476301908493042, 1.1570043563842773, 5.926141738891602, 4.021679401397705, 3.064785957336426, 1.6751307249069214, 2.8754684925079346, 0.6801861524581909, 1.4594186544418335, 0.3075723648071289, 0.1185038611292839, 3.7816598415374756, 3.01223087310791, 2.1070966720581055, 0.40259161591529846, 0.9723153114318848, 2.152977705001831, 14.267191886901855, 1.5613642930984497, 6.306459426879883, 0.4018263518810272, 0.19659733772277832, 12.085725784301758, 1.5580015182495117, 5.862946033477783, 1.7713619470596313, 0.6976507902145386, 4.7801782784517854e-05, 0.008519613184034824, 2.1145403385162354, 6.822091102600098, 2.056278705596924, 0.4853503108024597, 2.3478474617004395, 3.7046828269958496, 2.029587984085083, 0.018038392066955566, 1.4424220353248529e-05, 0.5523988008499146, 2.700033664703369, 3.4619483947753906, 0.5579860806465149, 0.8942171335220337, 0.00018880968855228275, 7.627893447875977, 2.261261463165283, 0.35170257091522217, 1.1841754913330078, 7.673523902893066, 3.1416940689086914, 0.8413306474685669, 4.5051069259643555, 2.66987681388855, 1.2710051536560059, 0.1155451238155365, 2.4535253047943115, 0.1816488355398178, 1.9548695087432861, 3.3908817768096924, 1.2870378494262695, 7.650536060333252, 3.12673020362854, 1.435957908630371, 0.2925812900066376, 3.6070261001586914, 1.3729798793792725, 0.3003816604614258, 1.690340518951416, 0.7321028113365173, 3.818577527999878, 0.696575939655304, 1.1193474531173706, 0.26996201276779175, 0.9881179332733154, 2.216623067855835, 0.7970690727233887, 0.5444378852844238, 5.430522441864014, 1.7425004243850708, 0.3515721559524536, 1.9346091747283936, 3.9177751541137695, 0.9991898536682129, 4.889507293701172, 0.9640868902206421, 2.2833592891693115, 0.07769042253494263, 1.4699206352233887, 1.4093313217163086, 1.623293399810791, 1.917360544204712, 5.623849868774414, 0.015244401060044765, 0.41090333461761475, 1.4429891109466553, 0.00024244230007752776, 0.8527894020080566, 0.3785315155982971, 8.952893257141113, 4.171652317047119, 0.005660338792949915, 0.00020096666412428021, 0.7744541168212891, 0.13336066901683807, 6.0502095222473145, 2.003304958343506, 0.2773618996143341, 0.663383424282074, 0.9684911966323853, 0.0004530118894763291, 4.477196216583252, 0.391497939825058, 0.059031952172517776, 5.843511581420898, 9.107297897338867, 1.2621660232543945, 1.3532733917236328, 8.923314094543457, 0.289625883102417, 0.013602307997643948, 2.610649426060263e-05, 1.559753179550171, 0.6169445514678955, 0.19469711184501648, 1.381270408630371, 0.40061721205711365, 2.285393714904785, 8.02660846710205, 2.160170078277588, 1.9246426820755005, 8.933745384216309, 1.0249544382095337, 5.0116400718688965, 0.6178148984909058, 1.6213631629943848, 0.07403374463319778, 1.2171928882598877, 0.2539442479610443, 1.9857828617095947, 0.8524101376533508, 1.696704387664795, 7.7995758056640625, 2.8287129402160645, 0.763812780380249, 1.6438418626785278, 5.652869701385498, 3.4285025596618652, 1.5095525979995728, 0.7258647680282593, 1.9078199863433838, 3.0401313304901123, 10.42232894897461, 14.29860782623291, 1.2098824977874756, 0.9202530980110168, 1.6555331945419312, 0.9570112228393555, 0.027911752462387085, 2.7636523246765137, 1.3066062927246094, 0.8005398511886597, 0.023741602897644043, 2.7593061923980713, 3.634612560272217, 8.612325668334961, 3.3132264614105225, 0.47511062026023865, 0.4183310568332672, 0.6921364068984985, 0.07294738292694092, 0.00017641419253777713, 4.211230278015137, 0.015626367181539536, 0.0011731653939932585, 2.2952985763549805, 1.01460862159729, 1.9208195209503174, 3.9384026527404785, 3.981510963058099e-05, 1.3149287700653076, 0.8196289539337158, 3.859109401702881, 2.142727851867676, 3.7072720527648926, 0.733043909072876, 1.5474148988723755, 1.592093825340271, 1.3692145347595215, 2.389615535736084, 4.051145076751709, 0.9339768290519714, 5.636523246765137, 1.0913093090057373, 1.8371548652648926, 3.3835291862487793, 0.4634363651275635, 7.193118095397949, 2.090705633163452, 0.07395226508378983, 0.3165540397167206, 6.747872352600098, 0.00034457468427717686, 0.22844895720481873, 0.2939644455909729, 0.1051144152879715, 0.0004970983718521893, 3.6986336708068848, 0.3672648072242737, 2.593118667602539, 1.2192347049713135, 5.659111022949219, 0.5599800944328308, 0.0849599540233612, 2.0665950775146484, 0.25682908296585083, 0.16912274062633514, 0.15010936558246613, 0.16494859755039215]\n", "[0.7300940155982971, 0.12623541057109833, 0.5538210868835449, 0.07581792771816254, 0.4969066381454468, 0.2327338606119156, 0.04984680935740471, 0.25941094756126404, 0.0004044267989229411, 0.3987983167171478, 0.004544887226074934, 0.22138917446136475, 0.025872351601719856, 0.14470571279525757, 0.12280915677547455, 0.34125611186027527, 0.05742144584655762, 0.19712552428245544, 0.30682623386383057, 0.11747874319553375, 0.3541933596134186, 0.024558063596487045, 0.4850437641143799, 0.16523277759552002, 1.0, 0.6419442296028137, 0.00023387031978927553, 0.062027424573898315, 9.236426558345556e-05, 0.09433675557374954, 0.2541610896587372, 0.005600204225629568, 0.0010924504604190588, 0.11630434542894363, 0.17957086861133575, 0.16970284283161163, 0.3433763384819031, 0.43841034173965454, 0.3979794979095459, 0.3202865719795227, 0.014302263036370277, 0.12934450805187225, 0.15995115041732788, 0.14909566938877106, 0.04898153990507126, 0.1324371099472046, 0.0795152336359024, 0.16341887414455414, 0.22038866579532623, 0.033639635890722275, 0.04678686708211899, 0.145236998796463, 0.05138246342539787, 0.41039514541625977, 0.12224560976028442, 0.295558363199234, 0.0115545354783535, 0.28197649121284485, 0.03702608123421669, 0.0610499270260334, 0.00037583912489935756, 0.12776078283786774, 0.49957460165023804, 0.5996560454368591, 0.11598894745111465, 0.011388697661459446, 0.011860610917210579, 0.18227486312389374, 0.34344547986984253, 0.0571020282804966, 0.26057130098342896, 0.11113475263118744, 0.03162038326263428, 0.49491092562675476, 0.45971086621284485, 0.015413886867463589, 0.00017506725271232426, 0.056094858795404434, 0.11209648847579956, 0.09139522165060043, 0.007626171689480543, 0.3538009226322174, 0.10446928441524506, 0.2345251441001892, 0.14392106235027313, 0.2540256977081299, 0.4181249439716339, 0.21969826519489288, 0.4716791808605194, 0.4119764566421509, 0.17646901309490204, 0.06829424947500229, 0.054323967546224594, 0.383455365896225, 0.11333893239498138, 0.13804101943969727, 0.5071079730987549, 0.13107304275035858, 0.000500406720675528, 0.028949128463864326, 0.138602614402771, 0.02005407027900219, 0.23468409478664398, 0.29954198002815247, 0.28991442918777466, 0.027312126010656357, 0.14910492300987244, 0.07995918393135071, 0.14610251784324646, 0.1264600306749344, 0.05572987347841263, 0.18385909497737885, 0.3558092415332794, 0.001973188715055585, 0.255804181098938, 0.1992131620645523, 0.13563455641269684, 0.03905567526817322, 0.11903586983680725, 0.012644723989069462, 0.0008132279617711902, 0.033402249217033386, 0.037253350019454956, 0.3684671223163605, 0.02164614200592041, 7.745716175122652e-06, 0.076219841837883, 1.8998443920281716e-06, 0.23683686554431915, 0.08842533826828003, 0.14618311822414398, 0.1699303686618805, 0.1747874766588211, 0.0018766060238704085, 0.0048110997304320335, 0.04170205816626549, 0.38427308201789856, 0.0029150357004255056, 0.0002010504831559956, 0.10474316030740738, 0.017485737800598145, 0.1061064675450325, 0.11635034531354904, 6.413681694539264e-05, 0.20210246741771698, 0.10906118154525757, 0.21559228003025055, 0.08108649402856827, 0.1565837860107422, 0.06541851907968521, 0.09084270894527435, 0.07119505852460861, 0.36465898156166077, 0.24746987223625183, 0.18858842551708221, 0.10307742655277252, 0.1769389659166336, 0.04185454919934273, 0.08980381488800049, 0.018926145508885384, 0.007292012218385935, 0.23270051181316376, 0.18535450100898743, 0.12965801358222961, 0.02477305755019188, 0.05983041226863861, 0.13248124718666077, 0.8779168128967285, 0.09607692807912827, 0.38806143403053284, 0.02472596801817417, 0.012097412720322609, 0.7436825633049011, 0.0958700031042099, 0.3607702851295471, 0.10899891704320908, 0.04292921721935272, 2.9414329674182227e-06, 0.0005242455517873168, 0.1301160454750061, 0.4197902977466583, 0.1265309751033783, 0.029865527525544167, 0.14447236061096191, 0.22796380519866943, 0.1248885914683342, 0.0011099737603217363, 8.8757940375217e-07, 0.033991288393735886, 0.1661437749862671, 0.21302740275859833, 0.034335095435380936, 0.05502472445368767, 1.1618208191066515e-05, 0.46937450766563416, 0.13914437592029572, 0.021641653031110764, 0.0728670060634613, 0.47218233346939087, 0.1933208853006363, 0.0517704077064991, 0.2772170901298523, 0.16428810358047485, 0.07820998132228851, 0.007109949365258217, 0.15097513794898987, 0.011177572421729565, 0.12029086798429489, 0.20865438878536224, 0.07919653505086899, 0.4707677960395813, 0.19240009784698486, 0.08836017549037933, 0.018003685399889946, 0.2219546139240265, 0.08448489010334015, 0.01848367415368557, 0.1040133461356163, 0.045049186795949936, 0.23497220873832703, 0.04286307841539383, 0.06887788325548172, 0.01661183312535286, 0.06080280989408493, 0.1363976001739502, 0.04904681816697121, 0.03350142017006874, 0.33416154980659485, 0.10722295194864273, 0.021633626893162727, 0.11904416978359222, 0.24107623100280762, 0.06148410961031914, 0.30087074637413025, 0.05932408571243286, 0.1405041366815567, 0.004780599381774664, 0.09045004099607468, 0.0867217406630516, 0.0998876765370369, 0.11798278987407684, 0.3460577726364136, 0.0009380484116263688, 0.025284510105848312, 0.0887928381562233, 1.491843522671843e-05, 0.05247551202774048, 0.0232925433665514, 0.5509070158004761, 0.25669828057289124, 0.0003483030595816672, 1.2366274859232362e-05, 0.04765522852540016, 0.008206210099160671, 0.3722933530807495, 0.12327129393815994, 0.01706717722117901, 0.04082060977816582, 0.059595100581645966, 2.7875616069650277e-05, 0.2754996120929718, 0.024090418592095375, 0.0036324698012322187, 0.35957440733909607, 0.5604081153869629, 0.07766607403755188, 0.08327227085828781, 0.54908686876297, 0.01782182790338993, 0.0008370039286091924, 1.606436057954852e-06, 0.0959777906537056, 0.03796304389834404, 0.011980484239757061, 0.08499503880739212, 0.02465156465768814, 0.1406293362379074, 0.4939090311527252, 0.13292382657527924, 0.11843089014291763, 0.5497287511825562, 0.06306950747966766, 0.30838605761528015, 0.03801659867167473, 0.09976889938116074, 0.004555589519441128, 0.07489869743585587, 0.015626195818185806, 0.12219309061765671, 0.052452173084020615, 0.10440494120121002, 0.479938805103302, 0.17406190931797028, 0.047000426799058914, 0.10115209966897964, 0.3478434681892395, 0.21096934378147125, 0.09288875013589859, 0.04466533660888672, 0.11739572137594223, 0.1870713233947754, 0.6413272023200989, 0.8798499703407288, 0.07444886118173599, 0.0566268190741539, 0.10187151283025742, 0.058888692408800125, 0.0017175207613036036, 0.170058473944664, 0.08040066063404083, 0.04926038905978203, 0.0014609148493036628, 0.16979104280471802, 0.22365210950374603, 0.5299504995346069, 0.20387594401836395, 0.029235439375042915, 0.025741567835211754, 0.04258989542722702, 0.004488741513341665, 1.0855464097403456e-05, 0.2591336965560913, 0.0009615522576496005, 7.21895121387206e-05, 0.14123880863189697, 0.06243288889527321, 0.11819563806056976, 0.24234551191329956, 2.449981366225984e-06, 0.08091277629137039, 0.05043501779437065, 0.23746629059314728, 0.13185054063796997, 0.22812314331531525, 0.045107096433639526, 0.09521856904029846, 0.09796784073114395, 0.08425319194793701, 0.14704251289367676, 0.24928300082683563, 0.057471293956041336, 0.3468376100063324, 0.06715258210897446, 0.11304742097854614, 0.20820195972919464, 0.02851707488298416, 0.44262105226516724, 0.12864939868450165, 0.004550575744360685, 0.019478823989629745, 0.4152233302593231, 2.120304634445347e-05, 0.014057368971407413, 0.018088797107338905, 0.006468106526881456, 3.058843140024692e-05, 0.2275915890932083, 0.02259925939142704, 0.15956486761569977, 0.07502434402704239, 0.34822753071784973, 0.034457795321941376, 0.005227922461926937, 0.1271657794713974, 0.015803711488842964, 0.010406792163848877, 0.00923682376742363, 0.010149940848350525]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/alex/Documents/HW4/.venv/lib/python3.8/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.\n", " warnings.warn(warning.format(ret))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[2.536940574645996, 18.25, 5.643949562732349]\n", "[11.864896774291992, 2.0514750480651855, 9.000249862670898, 1.232132077217102, 8.075324058532715, 3.7822036743164062, 0.8100694417953491, 4.215736389160156, 0.006572297774255276, 6.480947494506836, 0.07385948300361633, 3.5978333950042725, 0.4204567074775696, 2.351642608642578, 1.9957947731018066, 5.545816898345947, 0.9331674575805664, 3.2035255432128906, 4.986289978027344, 1.909164309501648, 5.7560601234436035, 0.39909785985946655, 7.882538318634033, 2.685230016708374, 16.251190185546875, 10.432355880737305, 0.0038006706163287163, 1.0080164670944214, 0.0015010291244834661, 1.5330841541290283, 4.130419731140137, 0.0910101905465126, 0.017753617838025093, 1.890081524848938, 2.9182398319244385, 2.757871389389038, 5.58027458190918, 7.1246843338012695, 6.4676384925842285, 5.205041885375977, 0.2324291467666626, 2.102004051208496, 2.599396228790283, 2.4229788780212402, 0.7960048913955688, 2.1522607803344727, 1.2922197580337524, 2.6557505130767822, 3.581575632095337, 0.5466833114624023, 0.760342001914978, 2.360269546508789, 0.8350253701210022, 6.669409275054932, 1.9866389036178589, 4.8031768798828125, 0.18777404725551605, 4.582452297210693, 0.6017143726348877, 0.9921358823776245, 0.006107832305133343, 2.076266288757324, 8.118682861328125, 9.745123863220215, 1.8849601745605469, 0.18508055806159973, 0.1927506923675537, 2.962184190750122, 5.581398010253906, 0.9279764294624329, 4.234593868255615, 1.8060694932937622, 0.5138664841651917, 8.042898178100586, 7.47084379196167, 0.2504948079586029, 0.0028451699763536453, 0.9116055965423584, 1.821699619293213, 1.485283613204956, 0.12393572181463242, 5.7496819496154785, 1.6977509260177612, 3.811309337615967, 2.33889102935791, 4.128223419189453, 6.795028209686279, 3.570361614227295, 7.665348529815674, 6.695112705230713, 2.8678276538848877, 1.1098650693893433, 0.8828299045562744, 6.231607437133789, 1.8418924808502197, 2.2433300018310547, 8.241108894348145, 2.1300954818725586, 0.008132203482091427, 0.47045668959617615, 2.25246000289917, 0.32590264081954956, 3.813896656036377, 0.7905508875846863, 5.377913475036621, 0.4838023781776428, 2.6501502990722656, 0.9483071565628052, 2.140505313873291, 1.9789433479309082, 0.9242621064186096, 2.9062905311584473, 5.494460582733154, 0.035877346992492676, 4.0795578956604, 3.087693929672241, 2.164801597595215, 0.6713725328445435, 1.924652338027954, 0.1940421462059021, 0.011843012645840645, 0.6128866672515869, 0.6709858179092407, 6.143017292022705, 0.3089238107204437, 0.00013302871957421303, 1.2507109642028809, 3.0517112463712692e-05, 3.8306076526641846, 1.4180762767791748, 2.368377447128296, 2.838632106781006, 2.8732032775878906, 0.030157187953591347, 0.08022671192884445, 0.6393329501152039, 6.149024963378906, 0.04646351560950279, 0.0032380789052695036, 1.7164256572723389, 0.28099656105041504, 1.6939997673034668, 2.035038948059082, 0.0012704405235126615, 0.5127795934677124, 1.8755959272384644, 3.4350781440734863, 1.200615406036377, 2.444218158721924, 0.7770947217941284, 1.4328769445419312, 1.2491240501403809, 5.484811305999756, 4.138055801391602, 3.0363645553588867, 1.7565869092941284, 2.9262735843658447, 0.6307584643363953, 1.3539741039276123, 0.32519879937171936, 0.11426851153373718, 3.8145642280578613, 3.0641040802001953, 2.0406951904296875, 0.4071059823036194, 1.1714061498641968, 2.0736746788024902, 14.284854888916016, 1.6164124011993408, 6.4128007888793945, 0.3309837579727173, 0.1847003698348999, 12.236198425292969, 1.6444261074066162, 5.87805700302124, 1.820534586906433, 0.6991183757781982, 5.2689116273541003e-05, 0.008599157445132732, 2.162139892578125, 6.791529178619385, 2.232372999191284, 0.4913853108882904, 2.3761074542999268, 3.6713509559631348, 1.8913742303848267, 0.020604494959115982, 1.3351351299206726e-05, 0.5453189611434937, 2.954258441925049, 3.3524622917175293, 0.5098230838775635, 0.8159632086753845, 0.00018559163436293602, 7.5799431800842285, 2.5055224895477295, 0.3452908992767334, 1.1547777652740479, 3.18401837348938, 1.321974754333496, 1.967874526977539, 1.5457278490066528, 0.09521515667438507, 2.6156721115112305, 0.22230559587478638, 1.8452811241149902, 3.687008857727051, 1.1698474884033203, 7.939401626586914, 3.017322540283203, 1.7514595985412598, 0.2584835886955261, 3.0144810676574707, 0.9664357304573059, 0.25204774737358093, 1.524692177772522, 0.8238589763641357, 2.998807430267334, 0.6687654852867126, 1.7796883583068848, 0.2760511040687561, 1.0046110153198242, 2.0659854412078857, 0.7816365361213684, 0.5223138928413391, 6.339565277099609, 1.7836015224456787, 0.21356874704360962, 2.0275936126708984, 3.9611709117889404, 0.9848953485488892, 4.954445838928223, 1.1544597148895264, 2.1333773136138916, 0.08254564553499222, 1.4444745779037476, 1.3365768194198608, 1.710434913635254, 1.885267972946167, 5.624143123626709, 0.013159450143575668, 0.3010963797569275]\n", "[0.7300940155982971, 0.12623536586761475, 0.5538209676742554, 0.07581795752048492, 0.4969066381454468, 0.23273395001888275, 0.04984677582979202, 0.25941091775894165, 0.000404419464757666, 0.3987983167171478, 0.004544866271317005, 0.22138892114162445, 0.0258723646402359, 0.1447058767080307, 0.12280914187431335, 0.3412560522556305, 0.0574214830994606, 0.1971255987882614, 0.3068261444568634, 0.11747843027114868, 0.35419315099716187, 0.024558069184422493, 0.4850437641143799, 0.1652328222990036, 1.0, 0.6419441103935242, 0.00023387029068544507, 0.06202723830938339, 9.236425830749795e-05, 0.09433673322200775, 0.2541610598564148, 0.005600216798484325, 0.001092450344003737, 0.1163041889667511, 0.17957083880901337, 0.16970273852348328, 0.34337636828422546, 0.4384100139141083, 0.39797937870025635, 0.3202868103981018, 0.014302284456789494, 0.1293446272611618, 0.1599511355161667, 0.14909547567367554, 0.048981327563524246, 0.1324371099472046, 0.07951539009809494, 0.16341882944107056, 0.2203885167837143, 0.033639587461948395, 0.046786848455667496, 0.14523671567440033, 0.05138241499662399, 0.4103951156139374, 0.12224575132131577, 0.29555848240852356, 0.011554479598999023, 0.2819764018058777, 0.03702586516737938, 0.06105004623532295, 0.00037583906669169664, 0.1277608722448349, 0.4995746612548828, 0.5996559858322144, 0.11598905175924301, 0.011388738639652729, 0.011860712431371212, 0.18227490782737732, 0.34344547986984253, 0.057102058082818985, 0.26057130098342896, 0.1111345961689949, 0.03162023797631264, 0.4949113428592682, 0.45971056818962097, 0.015413936227560043, 0.0001750745577737689, 0.0560946986079216, 0.1120963841676712, 0.09139537811279297, 0.007626255042850971, 0.3538006544113159, 0.10446932911872864, 0.2345249354839325, 0.14392121136188507, 0.2540259063243866, 0.4181249439716339, 0.2196984738111496, 0.4716792106628418, 0.41197675466537476, 0.17646877467632294, 0.06829438358545303, 0.054324015974998474, 0.38345545530319214, 0.11333892494440079, 0.1380409598350525, 0.5071080327033997, 0.13107319176197052, 0.0005004066624678671, 0.028949061408638954, 0.13860277831554413, 0.020054077729582787, 0.23468413949012756, 0.04864572361111641, 0.33092427253723145, 0.029770273715257645, 0.16307422518730164, 0.05835308879613876, 0.13171376287937164, 0.12177220731973648, 0.05687350407242775, 0.17883555591106415, 0.33809587359428406, 0.002207675017416477, 0.2510313391685486, 0.18999801576137543, 0.13320879638195038, 0.04131220653653145, 0.1184314712882042, 0.011940180324018002, 0.0007287473999895155, 0.037713341414928436, 0.041288409382104874, 0.37800413370132446, 0.0190093033015728, 8.1857833720278e-06, 0.07696118950843811, 1.877838599284587e-06, 0.2357124388217926, 0.08725984394550323, 0.14573563635349274, 0.17467226088047028, 0.17679956555366516, 0.001855691079981625, 0.004936666693538427, 0.03934068605303764, 0.3783738315105438, 0.0028590839356184006, 0.00019925179367419332, 0.10561846196651459, 0.017290828749537468, 0.10423850268125534, 0.12522399425506592, 7.81752314651385e-05, 0.03155335783958435, 0.11541283130645752, 0.2113739401102066, 0.07387861609458923, 0.15040241181850433, 0.04781771078705788, 0.08817058801651001, 0.07686354219913483, 0.337502121925354, 0.2546309232711792, 0.1868395209312439, 0.10808973759412766, 0.18006518483161926, 0.03881306201219559, 0.08331537991762161, 0.02001076750457287, 0.007031393237411976, 0.234725221991539, 0.18854644894599915, 0.12557204067707062, 0.02505084127187729, 0.07208125293254852, 0.12760140001773834, 0.8790035843849182, 0.09946424514055252, 0.39460498094558716, 0.020366739481687546, 0.011365343816578388, 0.7529416680335999, 0.1011880412697792, 0.3617000877857208, 0.1120246946811676, 0.04301951825618744, 3.2421696687379153e-06, 0.0005291401757858694, 0.1330450177192688, 0.4179096519947052, 0.13736674189567566, 0.030236881226301193, 0.14621128141880035, 0.22591274976730347, 0.11638373881578445, 0.001267876010388136, 8.215614570872276e-07, 0.03355563059449196, 0.18178720772266388, 0.20629025995731354, 0.031371429562568665, 0.050209444016218185, 1.1420187547628302e-05, 0.4664238691329956, 0.15417470037937164, 0.02124711498618126, 0.07105804234743118, 0.19592523574829102, 0.08134633302688599, 0.12109110504388809, 0.09511474519968033, 0.005858965218067169, 0.1609526425600052, 0.013679342344403267, 0.1135474443435669, 0.22687622904777527, 0.07198534160852432, 0.488542765378952, 0.18566778302192688, 0.10777423530817032, 0.01590551808476448, 0.18549294769763947, 0.05946861207485199, 0.015509494580328465, 0.09382034093141556, 0.05069530010223389, 0.18452848494052887, 0.04115178436040878, 0.10951126366853714, 0.016986515372991562, 0.06181768700480461, 0.1271282583475113, 0.04809718579053879, 0.032140038907527924, 0.390098512172699, 0.10975205153226852, 0.01314172986894846, 0.12476585060358047, 0.24374650418758392, 0.060604505240917206, 0.30486664175987244, 0.07103846967220306, 0.13127514719963074, 0.0050793602131307125, 0.08888423442840576, 0.0822448581457138, 0.10524982213973999, 0.11600799113512039, 0.34607577323913574, 0.0008097530226223171, 0.018527651205658913]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/alex/Documents/HW4/.venv/lib/python3.8/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.\n", " warnings.warn(warning.format(ret))\n" ] } ], "source": [ "import gradio as gr\n", "\n", "def score_text(text):\n", " scores = test_text(text)\n", " return {'Human': scores[0], 'AI': scores[1]}, perplexity(text)\n", "\n", "sample_text = \"\"\"\n", "The Saturn V is a type of rocket that was developed by NASA in the 1960s to support the Apollo program, which aimed to land humans on the Moon. \n", "It remains the most powerful rocket ever built, and its five F-1 engines generated more than 7.5 million pounds of thrust at liftoff. \n", "The Saturn V was used for all of the Apollo missions to the Moon, as well as the launch of the Skylab space station. \n", "Despite its impressive capabilities, the Saturn V was only used for a brief period of time before being retired in 1973. \n", "Nevertheless, it remains a landmark achievement in the history of space exploration and a symbol of human ingenuity and determination.\"\"\"\n", "\n", "demo = gr.Interface(fn=score_text, inputs=[gr.Textbox(label=\"Text to score\", lines=5, value=sample_text)], outputs=[gr.Label(), gr.HighlightedText()] )\n", "\n", "demo.launch(debug=True) " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Saturn V is a retired American super heavy-lift launch vehicle developed by NASA under the Apollo program for human exploration of the Moon.', 'The rocket was human-rated, with three stages, and powered with liquid fuel.', 'It was flown from 1967 to 1973.', 'It was used for nine crewed flights to the Moon, and to launch Skylab, the first American space station.', 'As of 2023, the Saturn V remains the only launch vehicle to carry humans beyond low Earth orbit (LEO).', 'Saturn V holds records for the heaviest payload launched and largest payload capacity to low Earth orbit: 310,000 lb (140,000 kg), which included the third stage and unburned propellant needed to send the Apollo command and service module and Lunar Module to the Moon.', 'The largest production model of the Saturn family of rockets, the Saturn V was designed under the direction of Wernher von Braun at the Marshall Space Flight Center in Huntsville, Alabama; the lead contractors were Boeing, North American Aviation, Douglas Aircraft Company, and IBM.', 'A total of 15 flight-capable vehicles were built, plus three for ground testing.', 'Thirteen were launched from Kennedy Space Center with no loss of crew or payload.', 'A total of 24 astronauts were launched to the Moon from Apollo 8 (December 1968) to Apollo 17 (December 1972).']\n" ] } ], "source": [ "from nltk import sent_tokenize\n", "string = \"\"\"Saturn V is a retired American super heavy-lift launch vehicle developed by NASA under the Apollo program for human exploration of the Moon. The rocket was human-rated, with three stages, and powered with liquid fuel. It was flown from 1967 to 1973. It was used for nine crewed flights to the Moon, and to launch Skylab, the first American space station.\n", "\n", "As of 2023, the Saturn V remains the only launch vehicle to carry humans beyond low Earth orbit (LEO). Saturn V holds records for the heaviest payload launched and largest payload capacity to low Earth orbit: 310,000 lb (140,000 kg), which included the third stage and unburned propellant needed to send the Apollo command and service module and Lunar Module to the Moon.\n", "\n", "The largest production model of the Saturn family of rockets, the Saturn V was designed under the direction of Wernher von Braun at the Marshall Space Flight Center in Huntsville, Alabama; the lead contractors were Boeing, North American Aviation, Douglas Aircraft Company, and IBM. A total of 15 flight-capable vehicles were built, plus three for ground testing. Thirteen were launched from Kennedy Space Center with no loss of crew or payload. A total of 24 astronauts were launched to the Moon from Apollo 8 (December 1968) to Apollo 17 (December 1972).\"\"\"\n", "\n", "print(sent_tokenize(string))" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "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.8.10" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }