camilin29/github_pull_request_classifier
0
1{2 "cells": [3 {4 "cell_type": "markdown",5 "metadata": {6 "id": "lskWTB7sDICC"7 },8 "source": [9 "# Installs"10 ]11 },12 {13 "cell_type": "code",14 "execution_count": 1,15 "metadata": {16 "colab": {17 "base_uri": "https://localhost:8080/"18 },19 "id": "g8BW8h1hCpPs",20 "outputId": "854874c6-f302-4dc6-adfc-03e988e4d48b"21 },22 "outputs": [],23 "source": [24 "#!pip install transformers"25 ]26 },27 {28 "cell_type": "markdown",29 "metadata": {30 "id": "0FO5e5PBDM-2"31 },32 "source": [33 "# Imports"34 ]35 },36 {37 "cell_type": "code",38 "execution_count": 2,39 "metadata": {40 "id": "Ti3CASUVDSI2"41 },42 "outputs": [43 {44 "name": "stderr",45 "output_type": "stream",46 "text": [47 "/tmp/ipykernel_2909/494893947.py:3: DeprecationWarning: \n",48 "Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),\n",49 "(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)\n",50 "but was not found to be installed on your system.\n",51 "If this would cause problems for you,\n",52 "please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466\n",53 " \n",54 " import pandas as pd\n"55 ]56 }57 ],58 "source": [59 "import torch\n",60 "import torch.nn as nn\n",61 "import pandas as pd\n",62 "import seaborn as sns\n",63 "import numpy as np\n",64 "from sklearn import metrics\n",65 "import shutil\n",66 "import sys\n",67 "\n",68 "\n",69 "\n",70 "import matplotlib.pyplot as plt\n"71 ]72 },73 {74 "cell_type": "markdown",75 "metadata": {76 "id": "gDLXrE6aDZef"77 },78 "source": [79 "# Create Dataframe"80 ]81 },82 {83 "cell_type": "code",84 "execution_count": 3,85 "metadata": {86 "id": "UOBvE7AuDgU1"87 },88 "outputs": [],89 "source": [90 "train_path = \"train_data_total.csv\"\n",91 "#test_path = \"/content/drive/MyDrive/datasets/multi-label/test.csv\"\n"92 ]93 },94 {95 "cell_type": "code",96 "execution_count": 4,97 "metadata": {98 "id": "v3eJD70UEAMd"99 },100 "outputs": [],101 "source": [102 "train_df = pd.read_csv(train_path)\n",103 "#test_df = pd.read_csv(test_path)"104 ]105 },106 {107 "cell_type": "code",108 "execution_count": null,109 "metadata": {},110 "outputs": [],111 "source": []112 },113 {114 "cell_type": "code",115 "execution_count": 5,116 "metadata": {117 "colab": {118 "base_uri": "https://localhost:8080/",119 "height": 206120 },121 "id": "VHAOeTZzEIM5",122 "outputId": "0e4a9c11-2e99-4fbe-f3cd-e69bb3739e00"123 },124 "outputs": [],125 "source": [126 "# train_df.head()coder = OneHotEncoder()\n",127 "transformed = coder.fit_transform(train_df[['label']])\n",128 "train_df = train_df.sample(int(len(train_df)*0.7))"129 ]130 },131 {132 "cell_type": "code",133 "execution_count": 6,134 "metadata": {135 "colab": {136 "base_uri": "https://localhost:8080/"137 },138 "id": "ANiD1MG9EPZY",139 "outputId": "a52cf8f1-f62a-4e5c-8aa4-071821a950fb"140 },141 "outputs": [142 {143 "name": "stdout",144 "output_type": "stream",145 "text": [146 "<class 'pandas.core.frame.DataFrame'>\n",147 "Index: 17684 entries, 15290 to 8458\n",148 "Data columns (total 3 columns):\n",149 " # Column Non-Null Count Dtype \n",150 "--- ------ -------------- ----- \n",151 " 0 title 17684 non-null object\n",152 " 1 body 17684 non-null object\n",153 " 2 label 17684 non-null int64 \n",154 "dtypes: int64(1), object(2)\n",155 "memory usage: 552.6+ KB\n"156 ]157 }158 ],159 "source": [160 "train_df.info()"161 ]162 },163 {164 "cell_type": "code",165 "execution_count": 7,166 "metadata": {167 "id": "NGBnMuizEXVq"168 },169 "outputs": [170 {171 "name": "stderr",172 "output_type": "stream",173 "text": [174 "/tmp/ipykernel_2909/1032168048.py:1: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value 'fix' has dtype incompatible with int64, please explicitly cast to a compatible dtype first.\n",175 " train_df.loc[train_df[\"label\"] == 0, \"label\"] = 'fix'\n"176 ]177 }178 ],179 "source": [180 "train_df.loc[train_df[\"label\"] == 0, \"label\"] = 'fix'\n",181 "train_df.loc[train_df[\"label\"] == 1, \"label\"] = 'features'\n",182 "train_df.loc[train_df[\"label\"] == 2, \"label\"] = 'deprecated'\n",183 "train_df.loc[train_df[\"label\"] == 3, \"label\"] = 'maintenance'"184 ]185 },186 {187 "cell_type": "code",188 "execution_count": 8,189 "metadata": {190 "colab": {191 "base_uri": "https://localhost:8080/",192 "height": 206193 },194 "id": "xILopZe6EkfJ",195 "outputId": "3c16db13-c5c2-476a-e1e4-e4f97efc9921"196 },197 "outputs": [198 {199 "data": {200 "text/html": [201 "<div>\n",202 "<style scoped>\n",203 " .dataframe tbody tr th:only-of-type {\n",204 " vertical-align: middle;\n",205 " }\n",206 "\n",207 " .dataframe tbody tr th {\n",208 " vertical-align: top;\n",209 " }\n",210 "\n",211 " .dataframe thead th {\n",212 " text-align: right;\n",213 " }\n",214 "</style>\n",215 "<table border=\"1\" class=\"dataframe\">\n",216 " <thead>\n",217 " <tr style=\"text-align: right;\">\n",218 " <th></th>\n",219 " <th>title</th>\n",220 " <th>body</th>\n",221 " <th>label</th>\n",222 " </tr>\n",223 " </thead>\n",224 " <tbody>\n",225 " <tr>\n",226 " <th>15290</th>\n",227 " <td>support future updates</td>\n",228 " <td>we need to allow configurable logic such that,...</td>\n",229 " <td>maintenance</td>\n",230 " </tr>\n",231 " <tr>\n",232 " <th>17162</th>\n",233 " <td>restoring persistentvolumeclaim with dynamic s...</td>\n",234 " <td><!-- this form is for bug reports and feature ...</td>\n",235 " <td>maintenance</td>\n",236 " </tr>\n",237 " <tr>\n",238 " <th>19924</th>\n",239 " <td>redmine 4.0 compatibility</td>\n",240 " <td>i've updated my previous pull request 95 with...</td>\n",241 " <td>maintenance</td>\n",242 " </tr>\n",243 " <tr>\n",244 " <th>6034</th>\n",245 " <td>wrong translation: \\ criada por ..., iniciar e...</td>\n",246 " <td>--- author name: felipe cecagno felipe ...</td>\n",247 " <td>fix</td>\n",248 " </tr>\n",249 " <tr>\n",250 " <th>4871</th>\n",251 " <td>attributeerror: 'module' object has no attribu...</td>\n",252 " <td>pythonpath=. python ./scripts/review.py merge ...</td>\n",253 " <td>fix</td>\n",254 " </tr>\n",255 " </tbody>\n",256 "</table>\n",257 "</div>"258 ],259 "text/plain": [260 " title \\\n",261 "15290 support future updates \n",262 "17162 restoring persistentvolumeclaim with dynamic s... \n",263 "19924 redmine 4.0 compatibility \n",264 "6034 wrong translation: \\ criada por ..., iniciar e... \n",265 "4871 attributeerror: 'module' object has no attribu... \n",266 "\n",267 " body label \n",268 "15290 we need to allow configurable logic such that,... maintenance \n",269 "17162 <!-- this form is for bug reports and feature ... maintenance \n",270 "19924 i've updated my previous pull request 95 with... maintenance \n",271 "6034 --- author name: felipe cecagno felipe ... fix \n",272 "4871 pythonpath=. python ./scripts/review.py merge ... fix "273 ]274 },275 "execution_count": 8,276 "metadata": {},277 "output_type": "execute_result"278 }279 ],280 "source": [281 "train_df.head()"282 ]283 },284 {285 "cell_type": "code",286 "execution_count": 9,287 "metadata": {288 "colab": {289 "base_uri": "https://localhost:8080/",290 "height": 467291 },292 "id": "LGjRy9EcEqBl",293 "outputId": "8c2af4de-6f57-494b-fdf4-1adf88da5821"294 },295 "outputs": [296 {297 "data": {298 "text/plain": [299 "Text(0.5, 0, 'label')"300 ]301 },302 "execution_count": 9,303 "metadata": {},304 "output_type": "execute_result"305 },306 {307 "data": {308 "image/png": "iVBORw0KGgoAAAANSUhEUgAAAn8AAAGwCAYAAADYGAMHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtJklEQVR4nO3de1TVdb7/8dcGZINy84KACoIppCbmXZxMKwqt44zVyaYswy5m3iLTyqZSs0THbI61up3pJJqTlJaX8pKOiaWZKQpeUCzSsNJwVETQAYXP7w+X+9dObdCQDX6ej7VYS/b3s7/7vb8787m+m+/GYYwxAgAAgBW8PD0AAAAAqg/xBwAAYBHiDwAAwCLEHwAAgEWIPwAAAIsQfwAAABYh/gAAACzi4+kB4HkVFRX66aefFBgYKIfD4elxAABAJRhjdOzYMTVp0kReXpU/n0f8QT/99JMiIyM9PQYAALgI+/btU7NmzSq9nviDAgMDJZ3+jycoKMjD0wAAgMooKipSZGSk69/xyiL+4HqrNygoiPgDAKCWudAf2eKCDwAAAIsQfwAAABYh/gAAACxC/AEAAFiE+AMAALAI8QcAAGARPuoFLtc+M1feTn9PjwEAwGUlc9ogT4/ghjN/AAAAFiH+AAAALEL8AQAAWIT4AwAAsAjxBwAAYBHiDwAAwCLEHwAAgEWIPwAAAIsQfwAAABYh/gAAACxC/AEAAFiE+AMAALAI8QcAAGAR4g8AAMAixB8AAIBFiD8AAACLEH8AAAAWIf4AAAAsQvwBAABYhPgDAACwCPEHAABgEeIPAADAIsQfAACARYg/AAAAixB/AAAAFiH+AAAALEL8AQAAWIT4AwAAsAjxBwAAYBHiDwAAwCLEHwAAgEWIPwAAAItcdvGXnJys/v37e3oMAACAGsnH0wNUtRkzZsgYc0H3cTgcWrBgAdEIAAAue5dd/AUHB3t6BAAAgBrLo2/79u7dWyNHjlRKSorq16+vsLAw/f3vf1dJSYkGDx6swMBAtWzZUsuWLZMklZeX64EHHlBMTIz8/f0VFxenGTNmuO3z12/79u7dW6NGjdITTzyhBg0aKDw8XBMmTHBtj46OliTdeuutcjgcru8ladGiRerYsaP8/PzUokULTZw4UadOnXJtdzgcevvtt3Xrrbeqbt26atWqlRYvXuzafiHzvvTSS4qIiFDDhg01fPhwnTx50rWmtLRUTz75pCIjI+V0OtWyZUv93//9n2v79u3b1bdvXwUEBCgsLEz33nuv/vWvf533uJeWlqqoqMjtCwAA2MHjP/M3a9YsNWrUSF9//bVGjhypRx55RHfccYd69OihzZs366abbtK9996r48ePq6KiQs2aNdO8efOUk5Oj5557Tk8//bQ++OCD//gY9erV04YNG/TXv/5Vzz//vFauXClJ2rhxoyRp5syZ2r9/v+v7L774QoMGDdKjjz6qnJwcvfXWW0pLS9OLL77otu+JEydqwIAB2rp1q26++WYNHDhQhw8flqRKz7t69Wrl5eVp9erVmjVrltLS0pSWlubaPmjQIM2dO1evvPKKdu7cqbfeeksBAQGSpMLCQl1//fXq0KGDNm3apOXLl+vnn3/WgAEDzns8UlNTFRwc7PqKjIysxCsFAAAuBw5zoT8gV4V69+6t8vJyffHFF5JOnykLDg7WbbfdptmzZ0uSDhw4oIiICK1fv17du3c/ax8jRozQgQMHNH/+fEmnz6QVFhZq4cKF53wMSeratauuv/56TZkyRdK5f+YvMTFRN9xwg8aNG+e6bc6cOXriiSf0008/ue73zDPPaNKkSZKkkpISBQQEaNmyZerTp885n/O55s3IyFBeXp68vb0lSQMGDJCXl5fS09O1e/duxcXFaeXKlUpMTDxrfy+88IK++OILffrpp67bfvjhB0VGRio3N1exsbFn3ae0tFSlpaWu74uKihQZGan2I9+Ut9P/nHMDAICLkzlt0CXZb1FRkYKDg3X06FEFBQVV+n4e/5m/+Ph415+9vb3VsGFDtWvXznVbWFiYJKmgoECS9Nprr+mdd95Rfn6+Tpw4obKyMl199dWVfgxJioiIcO3vfLKzs7Vu3Tq3M33l5eX697//rePHj6tu3bpn7btevXoKCgpy23dl5m3btq0r/M7Mt23bNklSVlaWvL291atXr/POuXr1ateZwF/Ky8s7Z/w5nU45nc7ffP4AAODy5PH4q1Onjtv3DofD7TaHwyHp9Fuo6enpGjNmjKZPn66EhAQFBgZq2rRp2rBhwwU/RkVFxW/ep7i4WBMnTtRtt9121jY/P79K7buy8/7WPvz9f/tMXHFxsfr166epU6eetS0iIuI37wsAAOzj8fi7EOvWrVOPHj00bNgw1215eXm/e7916tRR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t0+PPvqoVq5cKT8/P0+PY6W+ffu6/hwfH69u3bqpefPm+uCDD+Tv7+/Byc7GmT+LNWrUSN7e3mddbfTzzz8rPDzcQ1Ndns4cz9861uHh4SooKHDbfurUKR0+fNhtzbn28cvHsN2IESP0ySefaPXq1WrWrJnr9vDwcJWVlamwsNBt/a9fg/90fM+3JigoqMb9D766+fr6qmXLlurUqZNSU1PVvn17zZgxg2NfDTIzM1VQUKCOHTvKx8dHPj4+WrNmjV555RX5+PgoLCyM16CahYSEKDY2Vt9++22N+ztA/FnM19dXnTp10qpVq1y3VVRUaNWqVUpISPDgZJefmJgYhYeHux3roqIibdiwwXWsExISVFhYqMzMTNeazz77TBUVFerWrZtrzeeff66TJ0+61qxcuVJxcXGqX79+NT2bmskYoxEjRmjBggX67LPPFBMT47a9U6dOqlOnjttrkJubq/z8fLfXYNu2bW4RvnLlSgUFBalNmzauNb/cx5k1/J05W0VFhUpLSzn21eCGG27Qtm3blJWV5frq3LmzBg4c6Pozr0H1Ki4uVl5eniIiImre34ELujwEl5309HTjdDpNWlqaycnJMUOGDDEhISFuVxuhco4dO2a2bNlitmzZYiSZl19+2WzZssV8//33xpjTH/USEhJiFi1aZLZu3Wr+9Kc/nfOjXjp06GA2bNhg1q5da1q1auX2US+FhYUmLCzM3HvvvWb79u0mPT3d1K1bl496McY88sgjJjg42GRkZLh91MLx48dda4YOHWqioqLMZ599ZjZt2mQSEhJMQkKCa/uZj1q46aabTFZWllm+fLkJDQ0950ctjB071uzcudO89tprfNSFMeapp54ya9asMXv27DFbt241Tz31lHE4HGbFihXGGI69J/zyal9jeA0utccff9xkZGSYPXv2mHXr1pnExETTqFEjU1BQYIypWcef+IN59dVXTVRUlPH19TVdu3Y1X331ladHqpVWr15tJJ31dd999xljTn/cy7PPPmvCwsKM0+k0N9xwg8nNzXXbx6FDh8xdd91lAgICTFBQkBk8eLA5duyY25rs7GxzzTXXGKfTaZo2bWqmTJlSXU+xRjvXsZdkZs6c6Vpz4sQJM2zYMFO/fn1Tt25dc+utt5r9+/e77Wfv3r2mb9++xt/f3zRq1Mg8/vjj5uTJk25rVq9eba6++mrj6+trWrRo4fYYtrr//vtN8+bNja+vrwkNDTU33HCDK/yM4dh7wq/jj9fg0rrzzjtNRESE8fX1NU2bNjV33nmn+fbbb13ba9LxdxhjzIWdKwQAAEBtxc/8AQAAWIT4AwAAsAjxBwAAYBHiDwAAwCLEHwAAgEWIPwAAAIsQfwAAABYh/gAAACxC/AFALdC7d2+lpKRUam1GRoYcDsdZv0T+QkVHR+t//ud/ftc+ANQ8xB8AAIBFiD8AAACLEH8AUMu8++676ty5swIDAxUeHq67775bBQUFZ61bt26d4uPj5efnp+7du2v79u1u29euXauePXvK399fkZGRGjVqlEpKSqrraQDwEOIPAGqZkydPatKkScrOztbChQu1d+9eJScnn7Vu7Nixmj59ujZu3KjQ0FD169dPJ0+elCTl5eWpT58+uv3227V161a9//77Wrt2rUaMGFHNzwZAdfPx9AAAgAtz//33u/7cokULvfLKK+rSpYuKi4sVEBDg2jZ+/HjdeOONkqRZs2apWbNmWrBggQYMGKDU1FQNHDjQdRFJq1at9Morr6hXr15644035OfnV63PCUD14cwfANQymZmZ6tevn6KiohQYGKhevXpJkvLz893WJSQkuP7coEEDxcXFaefOnZKk7OxspaWlKSAgwPWVlJSkiooK7dmzp/qeDIBqx5k/AKhFSkpKlJSUpKSkJP3jH/9QaGio8vPzlZSUpLKyskrvp7i4WA8//LBGjRp11raoqKiqHBlADUP8AUAtsmvXLh06dEhTpkxRZGSkJGnTpk3nXPvVV1+5Qu7IkSPavXu3WrduLUnq2LGjcnJy1LJly+oZHECNwdu+AFCLREVFydfXV6+++qq+++47LV68WJMmTTrn2ueff16rVq3S9u3blZycrEaNGql///6SpCeffFJffvmlRowYoaysLH3zzTdatGgRF3wAFiD+AKAWCQ0NVVpamubNm6c2bdpoypQpeumll865dsqUKXr00UfVqVMnHThwQB9//LF8fX0lSfHx8VqzZo12796tnj17qkOHDnruuefUpEmT6nw6ADzAYYwxnh4CAAAA1YMzfwAAABYh/gAAACxC/AEAAFiE+AMAALAI8QcAAGAR4g8AAMAixB8AAIBFiD8AAACLEH8AAAAWIf4AAAAsQvwBAABY5P8Bd+1ZUbp65DMAAAAASUVORK5CYII=",309 "text/plain": [310 "<Figure size 640x480 with 1 Axes>"311 ]312 },313 "metadata": {},314 "output_type": "display_data"315 }316 ],317 "source": [318 "sns.countplot(train_df.label)\n",319 "plt.xlabel('label')"320 ]321 },322 {323 "cell_type": "markdown",324 "metadata": {325 "id": "6XHWhxO7Fdgt"326 },327 "source": [328 "# Pre-processing with one hot encoder"329 ]330 },331 {332 "cell_type": "code",333 "execution_count": 10,334 "metadata": {335 "id": "RQLT5LRgFqzd"336 },337 "outputs": [],338 "source": [339 "from sklearn.preprocessing import OneHotEncoder"340 ]341 },342 {343 "cell_type": "code",344 "execution_count": 11,345 "metadata": {346 "colab": {347 "base_uri": "https://localhost:8080/"348 },349 "id": "mFZuQURmFk72",350 "outputId": "81e995cc-af72-4bd1-c162-5710214caaca"351 },352 "outputs": [353 {354 "data": {355 "text/plain": [356 "array([[0, 0, 0, 1],\n",357 " [0, 0, 0, 1],\n",358 " [0, 0, 0, 1],\n",359 " ...,\n",360 " [0, 1, 0, 0],\n",361 " [0, 1, 0, 0],\n",362 " [0, 1, 0, 0]])"363 ]364 },365 "execution_count": 11,366 "metadata": {},367 "output_type": "execute_result"368 }369 ],370 "source": [371 "coder = OneHotEncoder()\n",372 "transformed = coder.fit_transform(train_df[['label']])\n",373 "transformed.toarray().astype(int)"374 ]375 },376 {377 "cell_type": "code",378 "execution_count": 12,379 "metadata": {380 "colab": {381 "base_uri": "https://localhost:8080/"382 },383 "id": "qodAe57oF1GX",384 "outputId": "2d42714d-24af-4852-81d0-9f45b1854bc5"385 },386 "outputs": [387 {388 "data": {389 "text/plain": [390 "['deprecated', 'features', 'fix', 'maintenance']"391 ]392 },393 "execution_count": 12,394 "metadata": {},395 "output_type": "execute_result"396 }397 ],398 "source": [399 "# list of categories\n",400 "coder.categories_[0].tolist()"401 ]402 },403 {404 "cell_type": "code",405 "execution_count": 13,406 "metadata": {407 "id": "Fb9MdCAhF1zw"408 },409 "outputs": [],410 "source": [411 "train_df[coder.categories_[0].tolist()] = transformed.toarray().astype(int)"412 ]413 },414 {415 "cell_type": "code",416 "execution_count": 14,417 "metadata": {418 "colab": {419 "base_uri": "https://localhost:8080/",420 "height": 293421 },422 "id": "t3DQ8ac9GFC0",423 "outputId": "6910e461-2f91-442f-ec2f-59f8506faf40"424 },425 "outputs": [426 {427 "data": {428 "text/html": [429 "<div>\n",430 "<style scoped>\n",431 " .dataframe tbody tr th:only-of-type {\n",432 " vertical-align: middle;\n",433 " }\n",434 "\n",435 " .dataframe tbody tr th {\n",436 " vertical-align: top;\n",437 " }\n",438 "\n",439 " .dataframe thead th {\n",440 " text-align: right;\n",441 " }\n",442 "</style>\n",443 "<table border=\"1\" class=\"dataframe\">\n",444 " <thead>\n",445 " <tr style=\"text-align: right;\">\n",446 " <th></th>\n",447 " <th>title</th>\n",448 " <th>body</th>\n",449 " <th>label</th>\n",450 " <th>deprecated</th>\n",451 " <th>features</th>\n",452 " <th>fix</th>\n",453 " <th>maintenance</th>\n",454 " </tr>\n",455 " </thead>\n",456 " <tbody>\n",457 " <tr>\n",458 " <th>15290</th>\n",459 " <td>support future updates</td>\n",460 " <td>we need to allow configurable logic such that,...</td>\n",461 " <td>maintenance</td>\n",462 " <td>0</td>\n",463 " <td>0</td>\n",464 " <td>0</td>\n",465 " <td>1</td>\n",466 " </tr>\n",467 " <tr>\n",468 " <th>17162</th>\n",469 " <td>restoring persistentvolumeclaim with dynamic s...</td>\n",470 " <td><!-- this form is for bug reports and feature ...</td>\n",471 " <td>maintenance</td>\n",472 " <td>0</td>\n",473 " <td>0</td>\n",474 " <td>0</td>\n",475 " <td>1</td>\n",476 " </tr>\n",477 " <tr>\n",478 " <th>19924</th>\n",479 " <td>redmine 4.0 compatibility</td>\n",480 " <td>i've updated my previous pull request 95 with...</td>\n",481 " <td>maintenance</td>\n",482 " <td>0</td>\n",483 " <td>0</td>\n",484 " <td>0</td>\n",485 " <td>1</td>\n",486 " </tr>\n",487 " <tr>\n",488 " <th>6034</th>\n",489 " <td>wrong translation: \\ criada por ..., iniciar e...</td>\n",490 " <td>--- author name: felipe cecagno felipe ...</td>\n",491 " <td>fix</td>\n",492 " <td>0</td>\n",493 " <td>0</td>\n",494 " <td>1</td>\n",495 " <td>0</td>\n",496 " </tr>\n",497 " <tr>\n",498 " <th>4871</th>\n",499 " <td>attributeerror: 'module' object has no attribu...</td>\n",500 " <td>pythonpath=. python ./scripts/review.py merge ...</td>\n",501 " <td>fix</td>\n",502 " <td>0</td>\n",503 " <td>0</td>\n",504 " <td>1</td>\n",505 " <td>0</td>\n",506 " </tr>\n",507 " </tbody>\n",508 "</table>\n",509 "</div>"510 ],511 "text/plain": [512 " title \\\n",513 "15290 support future updates \n",514 "17162 restoring persistentvolumeclaim with dynamic s... \n",515 "19924 redmine 4.0 compatibility \n",516 "6034 wrong translation: \\ criada por ..., iniciar e... \n",517 "4871 attributeerror: 'module' object has no attribu... \n",518 "\n",519 " body label \\\n",520 "15290 we need to allow configurable logic such that,... maintenance \n",521 "17162 <!-- this form is for bug reports and feature ... maintenance \n",522 "19924 i've updated my previous pull request 95 with... maintenance \n",523 "6034 --- author name: felipe cecagno felipe ... fix \n",524 "4871 pythonpath=. python ./scripts/review.py merge ... fix \n",525 "\n",526 " deprecated features fix maintenance \n",527 "15290 0 0 0 1 \n",528 "17162 0 0 0 1 \n",529 "19924 0 0 0 1 \n",530 "6034 0 0 1 0 \n",531 "4871 0 0 1 0 "532 ]533 },534 "execution_count": 14,535 "metadata": {},536 "output_type": "execute_result"537 }538 ],539 "source": [540 "train_df.head()"541 ]542 },543 {544 "cell_type": "code",545 "execution_count": 15,546 "metadata": {547 "id": "g5_i7Cg4HBWY"548 },549 "outputs": [],550 "source": [551 "# union between title and body\n",552 "train_df[\"Context\"] = train_df[\"title\"] + \" - \" + train_df[\"body\"]"553 ]554 },555 {556 "cell_type": "code",557 "execution_count": 16,558 "metadata": {559 "colab": {560 "base_uri": "https://localhost:8080/"561 },562 "id": "s9qcuVlSHIp5",563 "outputId": "01832ab3-526d-4a47-fc07-979445d09c67"564 },565 "outputs": [566 {567 "data": {568 "text/plain": [569 "Index(['title', 'body', 'label', 'deprecated', 'features', 'fix',\n",570 " 'maintenance', 'Context'],\n",571 " dtype='object')"572 ]573 },574 "execution_count": 16,575 "metadata": {},576 "output_type": "execute_result"577 }578 ],579 "source": [580 "train_df.columns"581 ]582 },583 {584 "cell_type": "code",585 "execution_count": 17,586 "metadata": {587 "id": "x7x66nOAHWUn"588 },589 "outputs": [],590 "source": [591 "# dropping useless features/columns\n",592 "train_df.drop(labels=['title', 'body', 'label'], axis=1, inplace=True)"593 ]594 },595 {596 "cell_type": "code",597 "execution_count": 18,598 "metadata": {599 "id": "2Vl8EfuPHjDf"600 },601 "outputs": [],602 "source": [603 "# rearranging columns\n",604 "train_df = train_df[['Context', 'deprecated', 'features', 'fix',\n",605 " 'maintenance']]"606 ]607 },608 {609 "cell_type": "code",610 "execution_count": 19,611 "metadata": {612 "colab": {613 "base_uri": "https://localhost:8080/",614 "height": 206615 },616 "id": "FXDes1BBHuqT",617 "outputId": "7f92c2c5-c018-4af2-8a2f-f39e99bcdd3c"618 },619 "outputs": [620 {621 "data": {622 "text/html": [623 "<div>\n",624 "<style scoped>\n",625 " .dataframe tbody tr th:only-of-type {\n",626 " vertical-align: middle;\n",627 " }\n",628 "\n",629 " .dataframe tbody tr th {\n",630 " vertical-align: top;\n",631 " }\n",632 "\n",633 " .dataframe thead th {\n",634 " text-align: right;\n",635 " }\n",636 "</style>\n",637 "<table border=\"1\" class=\"dataframe\">\n",638 " <thead>\n",639 " <tr style=\"text-align: right;\">\n",640 " <th></th>\n",641 " <th>Context</th>\n",642 " <th>deprecated</th>\n",643 " <th>features</th>\n",644 " <th>fix</th>\n",645 " <th>maintenance</th>\n",646 " </tr>\n",647 " </thead>\n",648 " <tbody>\n",649 " <tr>\n",650 " <th>15290</th>\n",651 " <td>support future updates - we need to allow conf...</td>\n",652 " <td>0</td>\n",653 " <td>0</td>\n",654 " <td>0</td>\n",655 " <td>1</td>\n",656 " </tr>\n",657 " <tr>\n",658 " <th>17162</th>\n",659 " <td>restoring persistentvolumeclaim with dynamic s...</td>\n",660 " <td>0</td>\n",661 " <td>0</td>\n",662 " <td>0</td>\n",663 " <td>1</td>\n",664 " </tr>\n",665 " <tr>\n",666 " <th>19924</th>\n",667 " <td>redmine 4.0 compatibility - i've updated my pr...</td>\n",668 " <td>0</td>\n",669 " <td>0</td>\n",670 " <td>0</td>\n",671 " <td>1</td>\n",672 " </tr>\n",673 " <tr>\n",674 " <th>6034</th>\n",675 " <td>wrong translation: \\ criada por ..., iniciar e...</td>\n",676 " <td>0</td>\n",677 " <td>0</td>\n",678 " <td>1</td>\n",679 " <td>0</td>\n",680 " </tr>\n",681 " <tr>\n",682 " <th>4871</th>\n",683 " <td>attributeerror: 'module' object has no attribu...</td>\n",684 " <td>0</td>\n",685 " <td>0</td>\n",686 " <td>1</td>\n",687 " <td>0</td>\n",688 " </tr>\n",689 " </tbody>\n",690 "</table>\n",691 "</div>"692 ],693 "text/plain": [694 " Context deprecated \\\n",695 "15290 support future updates - we need to allow conf... 0 \n",696 "17162 restoring persistentvolumeclaim with dynamic s... 0 \n",697 "19924 redmine 4.0 compatibility - i've updated my pr... 0 \n",698 "6034 wrong translation: \\ criada por ..., iniciar e... 0 \n",699 "4871 attributeerror: 'module' object has no attribu... 0 \n",700 "\n",701 " features fix maintenance \n",702 "15290 0 0 1 \n",703 "17162 0 0 1 \n",704 "19924 0 0 1 \n",705 "6034 0 1 0 \n",706 "4871 0 1 0 "707 ]708 },709 "execution_count": 19,710 "metadata": {},711 "output_type": "execute_result"712 }713 ],714 "source": [715 "train_df.head()"716 ]717 },718 {719 "cell_type": "markdown",720 "metadata": {721 "id": "MHq4XROdIDIz"722 },723 "source": [724 "# Division Data"725 ]726 },727 {728 "cell_type": "markdown",729 "metadata": {},730 "source": [731 "get 15k of df_training \n",732 "get 5k validation\n",733 "get 5k testing\n",734 "\n",735 "suffle"736 ]737 },738 {739 "cell_type": "code",740 "execution_count": 20,741 "metadata": {},742 "outputs": [],743 "source": [744 "\n",745 "from sklearn.model_selection import train_test_split\n",746 "# not need\n",747 "train_size = 0.8\n",748 "df_train, df_val = train_test_split(train_df, train_size=train_size, random_state=200)\n",749 "\n",750 "# Restablecer los índices de los dataframes resultantes\n",751 "df_train.reset_index(drop=True, inplace=True)\n",752 "df_val.reset_index(drop=True, inplace=True)"753 ]754 },755 {756 "cell_type": "code",757 "execution_count": 21,758 "metadata": {},759 "outputs": [760 {761 "data": {762 "text/plain": [763 "'\\ndf_train = train_df.sample(14000)\\ntrain_df = train_df.drop(df_train.index)\\n# Restablecer los índices de los dataframes resultantes\\ndf_train.reset_index(drop=True, inplace=True)\\ndf_train.shape\\ndf_train.head()\\n'"764 ]765 },766 "execution_count": 21,767 "metadata": {},768 "output_type": "execute_result"769 }770 ],771 "source": [772 "\"\"\"\n",773 "df_train = train_df.sample(14000)\n",774 "train_df = train_df.drop(df_train.index)\n",775 "# Restablecer los índices de los dataframes resultantes\n",776 "df_train.reset_index(drop=True, inplace=True)\n",777 "df_train.shape\n",778 "df_train.head()\n",779 "\"\"\""780 ]781 },782 {783 "cell_type": "code",784 "execution_count": 22,785 "metadata": {},786 "outputs": [],787 "source": [788 "#df_train.shape"789 ]790 },791 {792 "cell_type": "code",793 "execution_count": 23,794 "metadata": {},795 "outputs": [796 {797 "data": {798 "text/plain": [799 "'\\ndf_val = train_df.sample(3500)\\ntrain_df = train_df.drop(df_val.index)\\n# Restablecer los índices de los dataframes resultantes\\ndf_val.reset_index(drop=True, inplace=True)\\ndf_val.head()\\n'"800 ]801 },802 "execution_count": 23,803 "metadata": {},804 "output_type": "execute_result"805 }806 ],807 "source": [808 "\"\"\"\n",809 "df_val = train_df.sample(3500)\n",810 "train_df = train_df.drop(df_val.index)\n",811 "# Restablecer los índices de los dataframes resultantes\n",812 "df_val.reset_index(drop=True, inplace=True)\n",813 "df_val.head()\n",814 "\"\"\""815 ]816 },817 {818 "cell_type": "code",819 "execution_count": 24,820 "metadata": {},821 "outputs": [],822 "source": [823 "#df_val.shape"824 ]825 },826 {827 "cell_type": "code",828 "execution_count": 25,829 "metadata": {},830 "outputs": [831 {832 "data": {833 "text/plain": [834 "'\\ndf_test = train_df.sample(int(3000))\\ntrain_df = train_df.drop(df_test.index)\\n# Restablecer los índices de los dataframes resultantes\\ndf_test.reset_index(drop=True, inplace=True)\\ndf_test.head()\\n'"835 ]836 },837 "execution_count": 25,838 "metadata": {},839 "output_type": "execute_result"840 }841 ],842 "source": [843 "\"\"\"\n",844 "df_test = train_df.sample(int(3000))\n",845 "train_df = train_df.drop(df_test.index)\n",846 "# Restablecer los índices de los dataframes resultantes\n",847 "df_test.reset_index(drop=True, inplace=True)\n",848 "df_test.head()\n",849 "\"\"\""850 ]851 },852 {853 "cell_type": "code",854 "execution_count": 26,855 "metadata": {},856 "outputs": [],857 "source": [858 "#df_test.shape"859 ]860 },861 {862 "cell_type": "code",863 "execution_count": 27,864 "metadata": {865 "id": "xmyZCjHFIHcr"866 },867 "outputs": [],868 "source": [869 "#from sklearn.model_selection import train_test_split\n",870 "# not need\n",871 "#train_size = 0.7\n",872 "#df_train, df_val = train_test_split(train_df, train_size=train_size, random_state=200)\n",873 "\n",874 "# Restablecer los índices de los dataframes resultantes\n",875 "#df_train.reset_index(drop=True, inplace=True)\n",876 "#df_val.reset_index(drop=True, inplace=True)"877 ]878 },879 {880 "cell_type": "markdown",881 "metadata": {882 "id": "TtI0SUuVLFSm"883 },884 "source": [885 "# Config cuda"886 ]887 },888 {889 "cell_type": "code",890 "execution_count": 28,891 "metadata": {892 "colab": {893 "base_uri": "https://localhost:8080/",894 "height": 35895 },896 "id": "3xXkZXvWLKPh",897 "outputId": "b8920f7e-878b-403e-c601-ed47e0a2c65d"898 },899 "outputs": [900 {901 "data": {902 "text/plain": [903 "'cuda'"904 ]905 },906 "execution_count": 28,907 "metadata": {},908 "output_type": "execute_result"909 }910 ],911 "source": [912 "device = 'cuda' if torch.cuda.is_available() else 'cpu'\n",913 "device"914 ]915 },916 {917 "cell_type": "markdown",918 "metadata": {919 "id": "80RunzCbNrwP"920 },921 "source": [922 "# Hyperparams"923 ]924 },925 {926 "cell_type": "code",927 "execution_count": 29,928 "metadata": {929 "id": "mHi9JpqjO59s"930 },931 "outputs": [932 {933 "name": "stderr",934 "output_type": "stream",935 "text": [936 "/home/camilo/anaconda3/envs/diplom/lib/python3.10/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",937 " from .autonotebook import tqdm as notebook_tqdm\n"938 ]939 }940 ],941 "source": [942 "import torch\n",943 "from torch.utils.data import Dataset, DataLoader, RandomSampler, SequentialSampler\n",944 "from transformers import BertTokenizer, AutoTokenizer, BertModel, BertConfig, AutoModel, AdamW, AutoConfig\n",945 "import warnings"946 ]947 },948 {949 "cell_type": "code",950 "execution_count": 30,951 "metadata": {952 "colab": {953 "base_uri": "https://localhost:8080/",954 "height": 275,955 "referenced_widgets": [956 "31fd43492b2742b4a5ed66c037a30a36",957 "c2a5b28f8cca4c7095b3144c7cb0ef3a",958 "e46475db72ff4b449dca5988641be72b",959 "f5880873d54344ec84edeb1ddaf4b655",960 "09f484bcedca481696506aa302292017",961 "f836c319bf064054a5427cfbb0bae3ab",962 "1ad8a75785234204a603588fe6fa52eb",963 "beed68c6d9974113b3f897c4f8f97f12",964 "e516cb2f03824cd6a075ba1102cb584c",965 "1306deb9d26542f0a129b86602b20070",966 "c51aa8cb4b3b4281be8fbae971e6cfc0",967 "ccefb3a77bed4934bc8620c9eea96618",968 "ba4118af8bac437398b52f4088618d8a",969 "e611f2c5285e4eb0b3b301ddaca15897",970 "c1358f80acce4a4fb742f3ad88d47c5c",971 "0303994b723742f3ae3e5e4fbf7aac1c",972 "404ce010630b4fd2896e325a6a96da03",973 "6fb27b583b7b4b5a9b45d7380f57e7f3",974 "6d875c5ca1b04a3cbcffe2c85bd4fcc7",975 "f73c874488c84b47bb26f4bf74c19ef5",976 "417ee2ed7d854ba5a07e07308212fc70",977 "d7cb12de535246dfb25bd40a78a100de",978 "8ee059bff2a340fab759b507bce662e6",979 "26dad3c9af5b4a988e2870b33198dd95",980 "45f5eaa8ddcd4a50bc610c50ab8e25d4",981 "8881e621200d4d8daae08b370927b12e",982 "76d7d5e04ce249b9860fac9d7ca69440",983 "e44681b1e0364a4aa6a2ecde80d6f7f1",984 "41fec616acfc4d319f9c0a675538ccdf",985 "3168aa0e3b5f4803a910477920794901",986 "ad1f77ad83a043788ceb4adb171c4281",987 "7865275a314940d29bbd7324c931ccf1",988 "7971284ac34e4d1f939a4005a075f137",989 "dd8a80e85ae24ae9a78b2e12f85d63eb",990 "cad46d5f185a456db3e63f28a619c88c",991 "40296616399d4186b38c63731c808a23",992 "00304309fd3e431e8011c24d5deb3fc2",993 "202d0d9a484241c193367dc5c3bd467b",994 "a0e48c84c5c54a88b0e633a938db3537",995 "bf55bb63fd3f4bf1b4a6e388c201e044",996 "36c3ff80be65462287e1caf920cffbe4",997 "6436348ff9304cb88becfcb7b914f224",998 "7890b9b059ee4b2eab8573bc5c3387c4",999 "d72fd6b031604c968f84df5b47650219"1000 ]1001 },1002 "id": "9oJjAMmfN3g5",1003 "outputId": "1d02126b-0852-4910-fb0e-909ba81241ff"1004 },1005 "outputs": [],1006 "source": [1007 "MAX_LEN = 128\n",1008 "TRAIN_BATCH_SIZE = 40\n",1009 "VALID_BATCH_SIZE = 40\n",1010 "EPOCHS = 8\n",1011 "LEARNING_RATE = 2e-5\n",1012 "tokenizer = AutoTokenizer.from_pretrained('roberta-base')"1013 ]1014 },1015 {1016 "cell_type": "code",1017 "execution_count": 31,1018 "metadata": {1019 "id": "2H0fzTkLPNFG"1020 },1021 "outputs": [],1022 "source": [1023 "target_cols = ['deprecated', 'features', 'fix', 'maintenance']"1024 ]1025 },1026 {1027 "cell_type": "markdown",1028 "metadata": {1029 "id": "bJXkqBg9PaKw"1030 },1031 "source": [1032 "# Bert DAtaset\n"1033 ]1034 },1035 {1036 "cell_type": "code",1037 "execution_count": 32,1038 "metadata": {1039 "id": "gd5sjbowPZJS"1040 },1041 "outputs": [],1042 "source": [1043 "class BERTDataset(Dataset):\n",1044 " def __init__(self, df, tokenizer, max_len):\n",1045 " self.df = df\n",1046 " self.max_len = max_len\n",1047 " self.text = df.Context\n",1048 " self.tokenizer = tokenizer\n",1049 " self.targets = df[target_cols].values\n",1050 "\n",1051 " def __len__(self):\n",1052 " return len(self.df)\n",1053 "\n",1054 " def __getitem__(self, index):\n",1055 " text = self.text[index]\n",1056 " inputs = self.tokenizer.encode_plus(\n",1057 " text,\n",1058 " truncation=True,\n",1059 " add_special_tokens=True,\n",1060 " max_length=self.max_len,\n",1061 " padding='max_length',\n",1062 " return_token_type_ids=True\n",1063 " )\n",1064 " ids = inputs['input_ids']\n",1065 " mask = inputs['attention_mask']\n",1066 " token_type_ids = inputs[\"token_type_ids\"]\n",1067 "\n",1068 " return {\n",1069 " 'ids': torch.tensor(ids, dtype=torch.long),\n",1070 " 'mask': torch.tensor(mask, dtype=torch.long),\n",1071 " 'token_type_ids': torch.tensor(token_type_ids, dtype=torch.long),\n",1072 " 'targets': torch.tensor(self.targets[index], dtype=torch.float)\n",1073 " }"1074 ]1075 },1076 {1077 "cell_type": "code",1078 "execution_count": 33,1079 "metadata": {1080 "id": "B9MMxYbtUGNd"1081 },1082 "outputs": [],1083 "source": [1084 "train_dataset = BERTDataset(df_train, tokenizer, MAX_LEN)\n",1085 "valid_dataset = BERTDataset(df_val, tokenizer, MAX_LEN)\n",1086 "# test_dataset = BERTDataset(df_test, tokenizer, MAX_LEN)"1087 ]1088 },1089 {1090 "cell_type": "code",1091 "execution_count": null,1092 "metadata": {},1093 "outputs": [],1094 "source": []1095 },1096 {1097 "cell_type": "markdown",1098 "metadata": {1099 "id": "YbImuJzMU4Lp"1100 },1101 "source": [1102 "# Data Loaders"1103 ]1104 },1105 {1106 "cell_type": "code",1107 "execution_count": 34,1108 "metadata": {1109 "colab": {1110 "base_uri": "https://localhost:8080/"1111 },1112 "id": "BLE4x0qhVEVr",1113 "outputId": "7d4f966d-7032-4f9b-d750-bba4d23212c4"1114 },1115 "outputs": [],1116 "source": [1117 "train_loader = DataLoader(train_dataset, batch_size=TRAIN_BATCH_SIZE,\n",1118 " num_workers=4, shuffle=True, pin_memory=True)\n",1119 "valid_loader = DataLoader(valid_dataset, batch_size=VALID_BATCH_SIZE,\n",1120 " num_workers=4, shuffle=False, pin_memory=True)"1121 ]1122 },1123 {1124 "cell_type": "markdown",1125 "metadata": {1126 "id": "3aj42a9iVY6O"1127 },1128 "source": [1129 "# Bert Class"1130 ]1131 },1132 {1133 "cell_type": "code",1134 "execution_count": 35,1135 "metadata": {1136 "colab": {1137 "base_uri": "https://localhost:8080/",1138 "height": 106,1139 "referenced_widgets": [1140 "fad70f84f9184908ac2fdd4403e0091b",1141 "0b694a608fb84a36a499c80a52d16cba",1142 "941115a15f0b4ef181b48706c85e8af5",1143 "3a22bb661f954aa1a557ccefc5b13d26",1144 "95c71cfb74db4a1bbe738aa6975609b4",1145 "1bff32d418d04ed88c2ff2095ff866e0",1146 "0f23725d8fb5421ea1d6182c7822bd83",1147 "912a87d594de42f5b3556776636491a8",1148 "7954c499831d46c39145fa196e965bd6",1149 "68d1659870834cc19766a5314ac8d2ae",1150 "4f94efc483964e62949a35eb3b5adf99"1151 ]1152 },1153 "id": "GVNUXnj2VR8n",1154 "outputId": "4e50950d-a87b-4f16-81ae-67815c881ed8"1155 },1156 "outputs": [1157 {1158 "name": "stderr",1159 "output_type": "stream",1160 "text": [1161 "Some weights of RobertaModel were not initialized from the model checkpoint at roberta-base and are newly initialized: ['roberta.pooler.dense.bias', 'roberta.pooler.dense.weight']\n",1162 "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"1163 ]1164 },1165 {1166 "data": {1167 "text/plain": [1168 "BERTClass(\n",1169 " (bert_model): RobertaModel(\n",1170 " (embeddings): RobertaEmbeddings(\n",1171 " (word_embeddings): Embedding(50265, 768, padding_idx=1)\n",1172 " (position_embeddings): Embedding(514, 768, padding_idx=1)\n",1173 " (token_type_embeddings): Embedding(1, 768)\n",1174 " (LayerNorm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)\n",1175 " (dropout): Dropout(p=0.1, inplace=False)\n",1176 " )\n",1177 " (encoder): RobertaEncoder(\n",1178 " (layer): ModuleList(\n",1179 " (0-11): 12 x RobertaLayer(\n",1180 " (attention): RobertaAttention(\n",1181 " (self): RobertaSelfAttention(\n",1182 " (query): Linear(in_features=768, out_features=768, bias=True)\n",1183 " (key): Linear(in_features=768, out_features=768, bias=True)\n",1184 " (value): Linear(in_features=768, out_features=768, bias=True)\n",1185 " (dropout): Dropout(p=0.1, inplace=False)\n",1186 " )\n",1187 " (output): RobertaSelfOutput(\n",1188 " (dense): Linear(in_features=768, out_features=768, bias=True)\n",1189 " (LayerNorm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)\n",1190 " (dropout): Dropout(p=0.1, inplace=False)\n",1191 " )\n",1192 " )\n",1193 " (intermediate): RobertaIntermediate(\n",1194 " (dense): Linear(in_features=768, out_features=3072, bias=True)\n",1195 " (intermediate_act_fn): GELUActivation()\n",1196 " )\n",1197 " (output): RobertaOutput(\n",1198 " (dense): Linear(in_features=3072, out_features=768, bias=True)\n",1199 " (LayerNorm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)\n",1200 " (dropout): Dropout(p=0.1, inplace=False)\n",