Spaces:
Sleeping
Sleeping
File size: 43,365 Bytes
022acf4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setup"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"# Imports\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import ipywidgets as widgets\n",
"from wordcloud import WordCloud, STOPWORDS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Data"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Title</th>\n",
" <th>Publisher</th>\n",
" <th>DateTime</th>\n",
" <th>Link</th>\n",
" <th>Category</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Chainlink (LINK) Falters, Hedera (HBAR) Wobble...</td>\n",
" <td>Analytics Insight</td>\n",
" <td>2023-08-30T06:54:49Z</td>\n",
" <td>https://news.google.com/articles/CBMibGh0dHBzO...</td>\n",
" <td>Business</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Funds punished for owning too few Nvidia share...</td>\n",
" <td>ZAWYA</td>\n",
" <td>2023-08-30T07:15:59Z</td>\n",
" <td>https://news.google.com/articles/CBMigwFodHRwc...</td>\n",
" <td>Business</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Crude oil prices stalled as hedge funds sold: ...</td>\n",
" <td>ZAWYA</td>\n",
" <td>2023-08-30T07:31:31Z</td>\n",
" <td>https://news.google.com/articles/CBMibGh0dHBzO...</td>\n",
" <td>Business</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Grayscale's Bitcoin Win Is Still Only Half the...</td>\n",
" <td>Bloomberg</td>\n",
" <td>2023-08-30T10:38:40Z</td>\n",
" <td>https://news.google.com/articles/CBMib2h0dHBzO...</td>\n",
" <td>Business</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>I'm a Home Shopping Editor, and These Are the ...</td>\n",
" <td>Better Homes & Gardens</td>\n",
" <td>2023-08-30T11:00:00Z</td>\n",
" <td>https://news.google.com/articles/CBMiPWh0dHBzO...</td>\n",
" <td>Business</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Title Publisher \\\n",
"0 Chainlink (LINK) Falters, Hedera (HBAR) Wobble... Analytics Insight \n",
"1 Funds punished for owning too few Nvidia share... ZAWYA \n",
"2 Crude oil prices stalled as hedge funds sold: ... ZAWYA \n",
"3 Grayscale's Bitcoin Win Is Still Only Half the... Bloomberg \n",
"4 I'm a Home Shopping Editor, and These Are the ... Better Homes & Gardens \n",
"\n",
" DateTime Link \\\n",
"0 2023-08-30T06:54:49Z https://news.google.com/articles/CBMibGh0dHBzO... \n",
"1 2023-08-30T07:15:59Z https://news.google.com/articles/CBMigwFodHRwc... \n",
"2 2023-08-30T07:31:31Z https://news.google.com/articles/CBMibGh0dHBzO... \n",
"3 2023-08-30T10:38:40Z https://news.google.com/articles/CBMib2h0dHBzO... \n",
"4 2023-08-30T11:00:00Z https://news.google.com/articles/CBMiPWh0dHBzO... \n",
"\n",
" Category \n",
"0 Business \n",
"1 Business \n",
"2 Business \n",
"3 Business \n",
"4 Business "
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Data Ingestion\n",
"df = pd.read_csv(\"../dataset/news_dataset.csv\")\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Category Distribution')"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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pm3fvt1IMu+8806udQFAUcZlhABwC0lPT5ck+fj45HuZS894pKWl6c8//1STJk3066+/Ki0t7ZrLz58/X40bN1bJkiX1559/Wo8WLVooKytL69atkyQtXbpUbm5udmeCXFxcrLNnOY4ePaqkpCT16NFDAQEB1vTIyEi1bNlSS5YsyVVDv379ck3r1q2bjhw5ojVr1ljT5s6dKy8vL3Xs2PGa23UtJUqUuOqohP7+/pKk//73v9c9mISHh4d69uyZ7/bdunWzO/b//ve/FRwcnOc+K0hLliyRq6urBg0aZDf9ueeekzFG3333nd30Fi1aqEqVKtbzyMhI+fr66tdff3VqnQBwoxG2AOAW4uvrK0kODU2+ceNGtWjRwro3qkyZMta9QfkJW7/88ouWLl2qMmXK2D1atGghSTp27Jgk6dChQwoODlbx4sXtlg8PD7d7fujQIUlStWrVcq0rIiJCf/75p86cOWM3PSwsLFfbli1bKjg4WHPnzpX092WMn376qdq3b+9QGL2S06dPX7Wfxx57TA0bNlSfPn0UGBiozp0764svvnAoeJUrV86hwTDuuOMOu+c2m03h4eH67bff8t3H9Th06JBCQkJy7Y+IiAhr/qUqVqyYq4+SJUvqxIkTzisSAAoB92wBwC3E19dXISEh+vnnn/PV/sCBA2revLmqV6+uSZMmqUKFCnJ3d9eSJUs0efLkfAWD7OxstWzZUsOHD89zftWqVR3ahuuR1/1Irq6ueuKJJzRr1iy999572rhxo44cOaInn3zyH6/v999/V1paWq6geHlN69at05o1a7R48WItXbpUn3/+ue6//34tX75crq6u11yPI/dZ5deVfng5KysrXzUVhCutx1w2mAYAFHWELQC4xbRt21YzZ85UQkKCoqKirtp24cKFysjI0IIFC+zONlx66V2OK31Jr1Klik6fPm2dybqS0NBQrVmzxhq+PMf+/ftztZOkvXv35upjz549Kl26dL6Hdu/WrZsmTpyohQsX6rvvvlOZMmUUHR2dr2Wv5uOPP5aka/bl4uKi5s2bq3nz5po0aZJee+01vfjii1qzZo1atGhxxX16vX755Re758YY7d+/3+73wEqWLKmTJ0/mWvbQoUOqXLmy9dyR2kJDQ7Vy5UqdOnXK7uzWnj17rPkAcDviMkIAuMUMHz5c3t7e6tOnj1JTU3PN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8ojZsWOHWbVqlQkLCzPdu3e3+ujevbspUaKE6dq1q/n555/Nzz//bI4fP27Kly9vxo4da44ePWqOHj1qjDGmTZs2pmXLluann34yBw4cMAsXLjRr1651+r4oSN27dzft27fPNX3NmjVGkjlx4oTZv3+/8fb2NpMnTzb79u0zGzduNHfffbfp0aOH1f6DDz4wS5YsMQcOHDAJCQkmKirKtG7d2pqfnJxsPDw8zNChQ82ePXvMJ598YgIDA611GGPM7NmzjZ+fn7XM6NGjzV133WVXq6+vr+nXr5/ZvXu3WbhwoSlevLiZOXOm1aZPnz7m3nvvNevWrTP79+83b775pvHw8DD79u0zxjjnmF1pH+aQZMqXL2/mzZtnfvnlFzNo0CBTokQJc/z4cXPx4kXz1VdfGUlm79695ujRo+bkyZPGGGNeffVVU716dbN06VJz4MABM3v2bOPh4WHi4+ONMf/vGEVGRprly5eb/fv3m99//90899xzpmbNmtZr9ezZs8YYYyZPnmxWr15tDh48aFatWmWqVatm+vfvb9WZ1/4vUaKE9X5Zt26dCQoKMv/5z3+sNk2aNDE+Pj7mlVdeMfv27TOvvPKKcXV1Na1btzYzZ840+/btM/379zelSpUyZ86cMcYYc+LECVOmTBkTGxtrdu/ebX744QfTsmVL06xZM7t+fX19zZgxY8y+ffvMnDlzjM1mM8uXLzfGGHPs2DEjycyePdscPXrUHDt2zOHjdvn2fvLJJyY4ONh89dVX5tdffzVfffWVCQgIMHFxccYYY06dOmUqV65sGjdubNavX29++eUX8/nnn5tNmzY5tL+utl1ZWVmmdu3aplGjRub77783mzdvNnXr1jVNmjSxOy6Xvi8mTZpkfH19zaeffmr27Nljhg8fbtzc3KzXfFpamgkICDBPPvmk2blzp1myZImpWrWqkWR+/PFHY4wx48aNMzVq1LDbP4MGDTL33Xefw/u1IFz+njp16pR5+umnTXh4uMnKyrL7fMrx448/Gknm4MGDxpirv9cvX3727NnGzc3NtGjRwmzbts0kJiaaiIgI88QTT1j9X+v18eabb5oKFSqYdevWmd9++82sX7/ezJs3zxhjzPz5842vr69ZsmSJOXTokNmyZYvd51ZheuKJJ0yrVq2s5//617/M/PnzTb9+/cyoUaOMMcacPXvWeHh4mLi4ODNo0CATEhJilixZYnbu3Gm6d+9uSpYsaY4fP26Myftz6fjx47let2+88YYpWbKk+eqrr8yuXbtM7969jY+Pj3XcT548aVxcXMy2bduMMcZMmTLFlC5d2tSvX9/qIzw83MyaNcsYk/v9/PnnnxsPDw/z/vvvmz179pgXX3zR+Pj42NVwrWN6s7tRf78v7S8jI8NMmTLF+Pr6Wn9jTp06ZYwxJjQ01AQEBJhp06aZX375xYwfP964uLiYPXv2OH1f3AjX+h6alZVlGjRoYGrWrGmWL19ufe4sWbLEGJP7Nbpu3Trj6+tr4uLizIEDB8zy5ctNpUqVzJgxY6w2V/v+YIwxv//+uwkICDCPPPKI2bZtm9m7d6/58MMPrX1+M7/GCVs3qS+//NKULFnSeHp6mnvvvdfExsaa7du3W/MlmX79+tktU79+fesL5cyZM03JkiXN6dOnrfmLFy82Li4uJiUlxRjz94dXYGCgycjIsOsnNDTUTJ482W5arVq17N4URVH37t2Nq6ur8fb2tnt4enpaH669e/c2Tz31lN1y69evNy4uLubcuXN59rtt2zYjyfoQjo2NzfVl7oUXXnA4bIWGhpqLFy9a0zp16mQee+wxY4wxhw4dMq6uruZ///uf3XqaN29uYmNjjTHOOWZX2ofjxo0zxvz9uhw5cqTV/vTp00aS+e6774wxub/4GWPM+fPnTfHixa0v8jl69+5tHn/8cbvlvv32W7s2l++3K5k/f74pVaqU9Tyv/V+8eHGTnp5uTRs2bJjdl50mTZqYRo0aWc8vXrxovL29TdeuXa1pR48eNZJMQkKCMcaYV155xe7LnTHGHD582AqcefVrzN9fAl944QXruSTzzTffXHM7r+Ty7a1SpYr15TjHK6+8YqKioowxxvzf//2f8fHxsf7IXe569pcx9tu1fPly4+rqapKTk635O3fuNJLM1q1brfVcenxDQkKs19qlfT7zzDPGGGOmT59uSpUqZfdenTVrll3Y+t///mdcXV3Nli1bjDHGZGZmmtKlSxfaH+TL31OSTHBwsElMTDTG5P2euTxsXe29nlfYkmT2799vtZk2bZoJDAy0nl/r9TFw4EBz//33m+zs7FzrmzhxoqlatarJzMx0eF8426xZs4y3t7e5cOGCSU9PN8WKFTPHjh0z8+bNs8L2qlWrjCTz22+/GTc3NzN37lxr+czMTBMSEmImTJhgjMn/51JwcLC1jDF/f5EtX768XXioU6eOefPNN40xxnTo0MGMGzfOuLu7m1OnTpnff//dSLL+U+Hy93NUVJT1HshRv359uxqudUxvdjfq73de75dL93WO0NBQ8+STT1rPs7OzTdmyZc306dMLZoNvAlf7Hrps2TLj4uJi/R273OX7rXnz5ua1116za/Pxxx+b4OBg6/m1vj/ExsaasLCwK3623MyvcS4jvEl17NhRR44c0YIFC/TAAw8oPj5ederUsS6TkqSoqCi7ZaKiorR7925J0u7du3XXXXfJ29vbmt+wYUNlZ2fb3bdRq1atfN2nNWjQIL366qtq2LChRo8eXWA3b99ozZo1U1JSkt3j/ffft+Zv375dcXFx1j1UJUqUUHR0tLKzs3Xw4EFJUmJiotq1a6eKFSvKx8dHTZo0kSTr/ordu3erfv36duu9/FjlR82aNeXq6mo9Dw4Oti532LFjh7KyslS1alW7WteuXWudUnfWMctrH/br18+aHxkZaf3b29tbvr6+V7xMQ5L279+vs2fPqmXLlnbb8tFHH+W6Qb1evXr5qnHlypVq3ry5ypUrJx8fH3Xt2lXHjx/X2bNnr7hMpUqV5OPjYz2/dH/ntW2urq4qVaqUatWqZU0LDAyUJGu57du3a82aNXbbVb16dUmy27ZL+73SugvKmTNndODAAfXu3duurldffdWqKSkpSXfffbcCAgKu2I+j++vyNrt371aFChVUoUIFa36NGjXk7+9vfY5dKj09XUeOHFHDhg3tpjds2NBqv3fvXkVGRlr33kjSPffcY9c+JCREbdq00YcffihJWrhwoTIyMtSpU6crbquzXfqe2rp1q6Kjo9W6dWsdOnQoX8s7+l4vXry43f1Ilx6X/Lw+evTooaSkJFWrVk2DBg3S8uXLrb46deqkc+fOqXLlyurbt6+++eYbu0uFClPTpk115swZbdu2TevXr1fVqlVVpkwZNWnSxLpvKz4+XpUrV1ZaWpouXLhg93pzc3PTPffck+v1ebXPpbS0NB09etTub0KxYsVyLdOkSRPFx8fLGKP169frkUceUUREhDZs2KC1a9cqJCREd9xxR57ruNbfnPwc06LgRvz9dsSln285l2k763O7MFzte2hSUpLKly+vqlWr5quv7du3a+zYsXbHpm/fvjp69Kjd3+WrfX9ISkpS48aN5ebmlqv/m/01zgAZNzFPT0+1bNlSLVu21EsvvaQ+ffpo9OjR1n0uBeHSMHY1ffr0UXR0tBYvXqzly5dr/PjxmjhxogYOHFhgtdwI3t7eCg8Pt5v2+++/W/8+ffq0nn766TzvMahYsaLOnDmj6OhoRUdHa+7cuSpTpoySk5MVHR2tzMzMAq318g8Um82m7Oxsq05XV1clJibaBTLp/w184Kxjltc+zG/decm5l2rx4sUqV66c3bzLB97Iz+v1t99+U9u2bdW/f3+NGzdOAQEB2rBhg3r37q3MzEwVL178uuvOq82l03Lucbz0OLVr105vvPFGrvUFBwc7tO6CkrO/Z82alesLWs5rKT83Nl/v/nLWdjmiT58+6tq1qyZPnqzZs2frscceu+Lr4ka4/D31/vvvy8/PT7NmzVKrVq0kye4en0vv3ZQcf6/ndVxy+s/P66NOnTo6ePCgvvvuO61cuVKPPvqoWrRooS+//FIVKlTQ3r17tXLlSq1YsULPPPOM3nzzTa1duzbPL0k3Unh4uMqXL681a9boxIkT1hftkJAQVahQQZs2bdKaNWt0//33O9Rvfv+OXk3Tpk314Ycfavv27XJzc1P16tXVtGlTxcfH29V6PfJzTIuCm+3v9836+VaQrvQ99Pnnn3eon9OnT+vll1/WI488kuc6clxtn17t79LN/hrnzFYRUqNGDbsbPS+9oTfneUREhCQpIiJC27dvt2u/ceNGubi4qFq1alddj7u7e54jKlWoUEH9+vXT119/reeee06zZs36J5tzU6pTp4527dql8PDwXA93d3ft2bNHx48f1+uvv67GjRurevXquf4nKyIiQlu3brWbdvmx+qfuvvtuZWVl6dixY7nqvHTksZvtmOWcRb309VWjRg15eHgoOTk517ZcetbjSv1d/lpNTExUdna2Jk6cqAYNGqhq1ao6cuRIwW9MPtSpU0c7d+5UpUqVcm2bI1/Q3NzcCmyUs8DAQIWEhOjXX3/NVVNYWJikv/93MSkpSX/99VeBrDMvEREROnz4sA4fPmxN27Vrl06ePKkaNWrkau/r66uQkJBcww5v3LjRal+tWjXt2LFDGRkZ1vxLBzTI8eCDD8rb21vTp0/X0qVL1atXr4LarAJhs9nk4uKic+fOqUyZMpLsR5dMSkrKtUxBvdfz8/qQ/j4ejz32mGbNmqXPP/9cX331lfV68fLyUrt27TR16lTFx8crISFBO3bsuK56ClqzZs0UHx+v+Ph4uyHf77vvPn333XfaunWrmjVrpipVqsjd3d3u9XbhwgVt27Ytz9fnlfj5+Sk4ONhucJmLFy8qMTHRrl3jxo116tQpTZ482QpWOWHr8lovFxERkWvwmkv/5uT3mBZ1BfH3+3JX+j50u8r5HhoZGanff/8938O716lTR3v37s3z2Li45C+KREZGav369bn+s0m6+V/jnNm6CR0/flydOnVSr169FBkZKR8fH33//feaMGGC2rdvb7WbP3++6tWrp0aNGmnu3LnaunWrPvjgA0lSly5dNHr0aHXv3l1jxozRH3/8oYEDB6pr167WpU5XUqlSJa1bt06dO3eWh4eHSpcurcGDB6t169aqWrWqTpw4oTVr1ljB7lbywgsvqEGDBhowYID69Okjb29v7dq1SytWrNC7776rihUryt3dXe+884769eunn3/+Wa+88opdH/369dPEiRM1bNgw9enTR4mJiXaXfxaEqlWrqkuXLurWrZsmTpyou+++W3/88YdWrVqlyMhItWnTxmnHLCMjQykpKXbTihUrptKlS19z2dDQUNlsNi1atEgPPvigvLy85OPjo+eff15DhgxRdna2GjVqpLS0NG3cuFG+vr7q3r37FfurVKmSDh48aF3SkDMi4IULF/TOO++oXbt22rhxo2bMmPGPt/t6xMTEaNasWXr88cetUfn279+vzz77TO+//36+/8etUqVKWrVqlRo2bCgPDw9r9Mfr9fLLL2vQoEHy8/PTAw88oIyMDH3//fc6ceKEhg4dqscff1yvvfaaOnTooPHjxys4OFg//vijQkJCruuS2Ly0aNFCtWrVUpcuXTRlyhRdvHhRzzzzjJo0aXLFy7KGDRum0aNHq0qVKqpdu7Zmz56tpKQkzZ07V5L0xBNP6MUXX9RTTz2lESNGKDk52Rp5MOeso/T3/3T26NFDsbGxuuOOOwpsm67Xpe+pEydO6N1337XOiub8p8OYMWM0btw47du3TxMnTrRbvqDf69d6fUyaNEnBwcG6++675eLiovnz5ysoKEj+/v6Ki4tTVlaW6tevr+LFi+uTTz6Rl5eXQkND/9E+KijNmjWzRna99GxRkyZNNGDAAGVmZqpZs2by9vZW//79NWzY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",
"text/plain": [
"<Figure size 1000x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Distribution Bar plot (Count plot)\n",
"plt.figure(figsize=(10, 5))\n",
"sns.barplot(x=df[\"Category\"].value_counts().index, y=df[\"Category\"].value_counts())\n",
"plt.ylabel(\"Number of News\")\n",
"plt.title(\"Category Distribution\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**There's no extreme data imbalance except \"Health\" and \"Science\" news are almost half the \"Sports\" (majority) news.**"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8368a3df9eea413b99d2d0c5876fbcf6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='category', options=('Business', 'Entertainment', 'Headlines', 'Hea…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Word cloud\n",
"categories = df[\"Category\"].unique().tolist()\n",
"\n",
"\n",
"@widgets.interact(category=categories)\n",
"def display_categotical_plots(category=categories[0]):\n",
" subset = df[df[\"Category\"] == category].sample(n=100, random_state=42)\n",
" text = subset[\"Title\"].values\n",
" cloud = WordCloud(stopwords=STOPWORDS, background_color=\"black\", collocations=False, width=600, height=400).generate(\" \".join(text))\n",
" plt.axis(\"off\")\n",
" plt.imshow(cloud)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**From the word cloud we can immediately draw one insight about the redundant key words like \"New\" which is coming a lot in different categories.**</br>\n",
"We can also see some action verbs, adjectives, adverbs which need to be removed to some extent before training the model.**</br>\n",
"Other than that the word cloud seems very intuitive to what the respective categorical tag/name is.</br></br>\n",
"We can also see the \"Headlines\" category contains mixed words (will be mixed as it can be a ground breaking news of any category), so we'll hold out those data instances as a test set without targets just to analyze the number of headlines with different categories."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "news_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.10.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
|