Skip to content

Instantly share code, notes, and snippets.

@quicksilver0
Last active July 25, 2024 16:13
Show Gist options
  • Save quicksilver0/65440d85bbdab94cd26e0025f362badd to your computer and use it in GitHub Desktop.
Save quicksilver0/65440d85bbdab94cd26e0025f362badd to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "67d66b31-ff9c-480e-b6d1-e4ea46c0a944",
"metadata": {},
"source": [
"### Cleaning dataset\n",
"Crawled and scraped via https://console.apify.com/\n",
"\n",
"tutorial: https://blog.apify.com/webscraping-ai-data-for-llms/"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ed05ee18-9124-4c45-ab5b-d7913834a81f",
"metadata": {},
"outputs": [],
"source": [
"pip install matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "0a021e2f-4da1-45ba-8136-673eaabe4dea",
"metadata": {},
"outputs": [],
"source": [
"import re"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "92153617-7da1-44ea-9ad9-b56724e518b0",
"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>url</th>\n",
" <th>metadata/description</th>\n",
" <th>metadata/openGraph/3/content</th>\n",
" <th>text</th>\n",
" <th>markdown</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>https://www.hsbc.co.uk/ways-to-bank/</td>\n",
" <td>Take control of your finances with a range of ...</td>\n",
" <td>Take control of your finances with a range of ...</td>\n",
" <td>Top of main content \\nWays to bank \\nTake cont...</td>\n",
" <td>Top of main content\\n\\n ![](/content/dam/hsb...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>https://www.hsbc.co.uk/help/</td>\n",
" <td>Find answers to your questions or search our m...</td>\n",
" <td>Find answers to your questions or search our m...</td>\n",
" <td>Top of main content \\nHelp\\nFind the support y...</td>\n",
" <td>Top of main content\\n\\n# Help\\n\\nFind the supp...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>https://www.hsbc.co.uk/retirement/</td>\n",
" <td>We'll show you how you could achieve your idea...</td>\n",
" <td>We'll show you how you could achieve your idea...</td>\n",
" <td>Top of main content \\nRetirement \\nWe'll help ...</td>\n",
" <td>Top of main content\\n\\n# Retirement\\n\\nWe'll h...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>https://www.hsbc.co.uk/international/</td>\n",
" <td>Whether it's you or your money on the move, ou...</td>\n",
" <td>Whether it's you or your money on the move, ou...</td>\n",
" <td>Top of main content \\nInternational services\\n...</td>\n",
" <td>Top of main content\\n\\n# International service...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>https://www.hsbc.co.uk/investments</td>\n",
" <td>Looking to grow your wealth? We offer accessib...</td>\n",
" <td>Looking to grow your wealth? We offer accessib...</td>\n",
" <td>Top of main content \\nInvesting\\nDiscover ways...</td>\n",
" <td>Top of main content\\n\\n# Investing\\n\\nDiscover...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" url \\\n",
"0 https://www.hsbc.co.uk/ways-to-bank/ \n",
"1 https://www.hsbc.co.uk/help/ \n",
"2 https://www.hsbc.co.uk/retirement/ \n",
"3 https://www.hsbc.co.uk/international/ \n",
"4 https://www.hsbc.co.uk/investments \n",
"\n",
" metadata/description \\\n",
"0 Take control of your finances with a range of ... \n",
"1 Find answers to your questions or search our m... \n",
"2 We'll show you how you could achieve your idea... \n",
"3 Whether it's you or your money on the move, ou... \n",
"4 Looking to grow your wealth? We offer accessib... \n",
"\n",
" metadata/openGraph/3/content \\\n",
"0 Take control of your finances with a range of ... \n",
"1 Find answers to your questions or search our m... \n",
"2 We'll show you how you could achieve your idea... \n",
"3 Whether it's you or your money on the move, ou... \n",
"4 Looking to grow your wealth? We offer accessib... \n",
"\n",
" text \\\n",
"0 Top of main content \\nWays to bank \\nTake cont... \n",
"1 Top of main content \\nHelp\\nFind the support y... \n",
"2 Top of main content \\nRetirement \\nWe'll help ... \n",
"3 Top of main content \\nInternational services\\n... \n",
"4 Top of main content \\nInvesting\\nDiscover ways... \n",
"\n",
" markdown \n",
"0 Top of main content\\n\\n ![](/content/dam/hsb... \n",
"1 Top of main content\\n\\n# Help\\n\\nFind the supp... \n",
"2 Top of main content\\n\\n# Retirement\\n\\nWe'll h... \n",
"3 Top of main content\\n\\n# International service... \n",
"4 Top of main content\\n\\n# Investing\\n\\nDiscover... "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"df = pd.read_csv('hsbc_crawl_data.csv')\n",
"df = df[['url', 'metadata/description', 'metadata/openGraph/3/content', 'text', 'markdown']]\n",
"df.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "c3c9b89c-f96a-4121-b241-ebb4ec3f8e70",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"90th percentile: 12290.0\n"
]
},
{
"data": {
"image/png": "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XTdP13E2e3t7hIeHA3hy5Wr16tV49dVXYWVlhfr16yMiIiLfmG7fvo3GjRuje/fuSElJybNMzisIGo0GP/zwA7p37w4rKytUr14df/zxR777AICUlBSMGzcObm5uMDc3R7Vq1fC///1Pp8yxY8fQuHFjWFlZoXnz5oiKilLWXb58GV27doWzszNsbGzQpEkTbN++PVecn3zyCd5++21otVrlqs+4cePwyiuvwMrKClWrVsV//vOfXOfc+vXr0aRJE1hYWKBChQro3r07gKz3w9WrVzF69GjlNc62f/9++Pv7w9LSEm5ubhg5ciQePHhQYDypqakICwtDxYoVYWFhAXd3d8yYMaPAuiPSoe8/AyIqruDgYOnatWue6/7991/lH3bPnz8vx48fl/bt28urr76qlGndurVotVqZMmWKXLx4UZYsWSIajUb+/PNPEcn6194aNWpI+/btJTIyUvbt2ydNmzYVALJmzRoRETl8+LAAkO3bt8utW7fk7t27SmxarVbeeecdOX/+vKxfv16srKzku+++y/d4Vq9eLaamprJgwQKJioqSzz//XIyNjWXnzp0iIhIfHy8dO3aU3r17y61btyQhISHXNu7fvy+9e/eWjh076vzbbGpqqtSqVUsGDhwop06dknPnzslbb70lNWrUUP6NdsGCBWJnZydXr16V69evS7ly5eSLL74ocLt5+eeff8TBwUF69OghR44ckaioKPnxxx/lwoULha6bp+s4m52dnfKHg9l/XlezZk3ZsGGDREVFSa9evcTd3V3508LFixeLnZ2diGT9CWKNGjUkODhY0tPT830N3N3dZd68eTpxVK5cWZYvXy7R0dEycuRIsbGxUV7nvPTu3Vvc3Nxk9erVcvnyZdm+fbusXLlSRJ78+Zyvr6/s3r1bzp49K/7+/tK8eXPl+ZGRkbJo0SI5ffq0XLx4USZOnCgWFhbKPy1nx6nVamXOnDly6dIl5Q8wP/nkEzlw4IBcuXJF/vjjD3F2dpbPPvtMed6GDRvE2NhYJk2aJOfOnZPIyEiZPn26iGT9qV3lypVl2rRpymsskvUP19bW1jJv3jy5ePGiHDhwQBo2bCghISEFxjN79mxxc3OTvXv3SkxMjOzbt0+WL1+eb70R5cQEhV5aBSUon3zyiXTo0EFn2fXr13X+wbd169bSsmVLnTJNmjSRcePGiYjI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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"from matplotlib import pyplot as plt\n",
"\n",
"chunk_sizes = df['text'].str.len()\n",
"percentile_90th = np.percentile(chunk_sizes, 90)\n",
"print('90th percentile:', percentile_90th)\n",
"plt.hist(chunk_sizes, bins=30)\n",
"plt.title('Distribution of text-chunks length, with 90th percentile')\n",
"plt.xlabel('Length of text-chunk in characters')\n",
"plt.axvline(x = percentile_90th, color = 'red', linestyle = '--', alpha = 0.5)\n",
"plt.gca().spines[['top', 'right',]].set_visible(False)\n",
"plt.show();"
]
},
{
"cell_type": "markdown",
"id": "e745c911-20ab-409a-81cf-cd310ce73107",
"metadata": {},
"source": [
"Drop all pages with 404 error"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "9e9514b7-bf61-4a2d-8580-daa36cd9d089",
"metadata": {},
"outputs": [],
"source": [
"df.drop(df[df['text'].str.contains('Page not found \\(404\\)')].index, inplace=True)"
]
},
{
"cell_type": "markdown",
"id": "7cfbb76f-340f-446e-8569-728c629addb8",
"metadata": {},
"source": [
"Cut off first smallest 70 records"
]
},
{
"cell_type": "code",
"execution_count": 92,
"id": "53558974-d206-40de-853b-8a594f94f7ff",
"metadata": {},
"outputs": [],
"source": [
"df['text_length'] = df['text'].str.len()\n",
"indexes_to_drop = df.sort_values('text_length').iloc[:70].index"
]
},
{
"cell_type": "code",
"execution_count": 93,
"id": "2074d884-c152-4522-b0c6-8047ea80e663",
"metadata": {},
"outputs": [],
"source": [
"df.drop(indexes_to_drop, inplace = True)"
]
},
{
"cell_type": "markdown",
"id": "b1049f1d-767d-4a2a-8904-fb1d11397fe8",
"metadata": {},
"source": [
"Truncate content for large texts longer than 6000 characters"
]
},
{
"cell_type": "code",
"execution_count": 132,
"id": "d8b02f8f-1f13-41e7-94ca-773ac17e4e69",
"metadata": {},
"outputs": [],
"source": [
"df.reset_index(inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 142,
"id": "38bbc730-df6e-4acd-a9ab-e951cfa166c0",
"metadata": {},
"outputs": [],
"source": [
"rows_indexes_to_truncate = df[df['text_length'] > 6000].index"
]
},
{
"cell_type": "code",
"execution_count": 149,
"id": "c3eedaa9-df93-4cbd-9cb1-a4fedf614dee",
"metadata": {},
"outputs": [],
"source": [
"df.loc[rows_indexes_to_truncate, 'text'] = df.loc[rows_indexes_to_truncate, 'text'].str[:6000]"
]
},
{
"cell_type": "code",
"execution_count": 150,
"id": "ab140d9a-25c5-4e2b-8f06-20f3bff8d27c",
"metadata": {},
"outputs": [],
"source": [
"df.loc[rows_indexes_to_truncate, 'markdown'] = df.loc[rows_indexes_to_truncate, 'markdown'].str[:7000]"
]
},
{
"cell_type": "code",
"execution_count": 151,
"id": "444035d1-ca63-44af-83b3-69e4db8b1717",
"metadata": {},
"outputs": [],
"source": [
"df['text_length'] = df['text'].str.len()"
]
},
{
"cell_type": "code",
"execution_count": 153,
"id": "4210cf50-f9dd-46a4-a5a0-a010e50405c3",
"metadata": {},
"outputs": [],
"source": [
"chunk_sizes = df['text_length']"
]
},
{
"cell_type": "code",
"execution_count": 164,
"id": "a7e914f3-f2c2-4add-a555-db1678a661d7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Num of chunks: 564\n",
"50th percentile: 5177.5\n"
]
},
{
"data": {
"image/png": "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PExMgBYtHs2T0WKCQkRE8jAzA/r3N3QUJAGmp0RERCQdXkEhIiJ5CAFkZ+fPm5sDKpVh4yGD4RUUIiKSR3Y2MGdO/qRNVMgoMUEhIiIi6TBBISIiIukwQSEiIiLpMEEhIiIi6TBBISIiIukwQSEiIiLp8DkoREQkDxMToFGjR/NktFRCCGHoIMoqLS0N9vb2SE1NhUajMXQ4REREVMF4BYWIiKia8vrg13K/98q83hUYSdnx+hkRERFJh1dQiIhIHllZ+Y+5B4ApUwC12rDxkMHwCgoRERFJhwkKERERSYcJChEREUmHCQoRERFJhwkKERERSYcJChEREUmHw4yJiEgeJiZA/fqP5sloMUEhIiJ5mJkBwcGGjoIkwPSUiIiIpMMEhYiIiKTDLh4iIpJHVhbw6af58xMm8FH3RowJChERySU729ARkATYxUNERETSYYJCRERE0mGCQkRERNJhgkJERETSYYJCRERE0uEoHiIikodKBXh5PZono8UEhYiI5GFuDoSGGjoKkgC7eIiIiEg6TFCIiIhIOuziISIieWRlAQsX5s+PHctH3RsxJihERCSX+/cNHQFJgF08REREJB0mKERERCQdJihEREQkHSYoREREJB0mKERERCQdjuIhIiJ5qFSAu/ujeTJaTFCIiEge5ubAqFGGjoIkwC4eIiIikg4TFCIiIpIOu3iIiEge2dlARET+fFhYfpcPGSUmKEREJA8hgJSUR/NktNjFQ0RERNJhgkJERETSYYJCRERE0mGCQkRERNJhgkJERETS4SgeIiKSh0oFODk9miejxQSFiIjkYW6e//wTMnrs4iEiIiLpMEEhIiIi6bCLh4iI5JGdDXz1Vf78qFF81L0RY4JCRETyEAK4ffvRPBmtMnXxzJ07F61bt4adnR2cnZ3Rv39/xMbG6pR5+PAhwsLCULNmTdja2mLQoEFISkrSKXPt2jX07t0b1tbWcHZ2xoQJE5CTk/PktSEiIqJqoUwJyv79+xEWFoYjR44gKioK2dnZ6N69O+7du6eUee+99/DLL79g/fr12L9/P27evImBAwcq63Nzc9G7d29kZWXht99+w7fffovIyEhMnz694mpFREREVZpKiPJfQ7t9+zacnZ2xf/9+dOzYEampqXBycsLq1asxePBgAMDFixfRsGFDREdHo23btti2bRv69OmDmzdvwsXF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Xr16CAoKAgA0bNgQPXr0wMiRI7Fs2TJkZ2cjPDwcw4YN4wgeIiJjZ24OvP32o3kyWmW+gnLixAm0bNkSLVu2BACMGzcOLVu2xPTp02FqaoozZ87gxRdfxLPPPosRI0bAz88PBw8ehIWFhbKNVatWoUGDBujatSt69eqFDh064Kuvvqq4WhERUdWkUgHOzvmTSmXoaMiAVEIIYeggyiotLQ329vZITU3l/ShERERF8Prg13K/98q83hUYSdnxxwKJiEgeubnAwYP58wEBgKmpYeMhg2GCQkRE8sjNBfbty59v144JihHjrxkTERGRdJigEBERkXSYoBAREZF0mKAQERGRdJigEBERkXSYoBAREZF0OMyYiIjkYWYGjBz5aJ6MFlufiIjkYWIC1K5t6ChIAuziISIiIunwCgoREckjNxc4ciR/vm1bPknWiDFBISIieeTmAlFR+fOtWzNBMWLs4iEiIiLpMEEhIiIi6TBBISIiIukwQSEiIiLpMEEhIiIi6TBBISIiIulwmDEREcnDzAwIDX00T0aLrU9ERPIwMQG8vAwdBUmAXTxEREQkHV5BISIieeTmAidP5s/7+fFJskaMCQoREckjNxfYujV/vkULJihGjF08REREJB0mKERERCQdJihEREQkHSYoREREJB0mKERERCQdJihEREQkHQ4zJiIieZiZAa+88miejBZbn4iI5GFiAjz7rKGjIAmwi4eIiIikwysoREQkj9xc4OzZ/PmmTfkkWSPGBIWIiOSRmwts2pQ/36gRExQjxi4eIiIikg4TFCIiIpIOExQiIiKSDhMUIiIikg4TFCIiIpIOExQiIiKSDocZExGRPMzMgJdeejRPRoutT0RE8jAxARo3NnQUJAF28RAREZF0eAWFiIjkkZcHXLiQP9+wYf4VFTJKbHkiIpJHTg6wfn3+lJNj6GjIgJigEBERkXSYoBAREZF0mKAQERGRdJigEBERkXSYoBAREZF0mKAQERGRdPgcFCIikoepKdC//6N5MlpMUIiISB6mpkCLFoaOgiTALh4iIiKSDq+gEBGRPPLygPj4/Pl69fioeyPGliciInnk5ACrV+dPfNS9UWOCQkRERNJhgkJERETSYYJCRERE0mGCQkRERNJhgkJERETSYYJCRERE0uFzUIiISB6mpkCvXo/myWiV+QrKgQMH0LdvX7i7u0Ol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0hOUjIwMXL58GW5ubvDz84O5uTl2796trI+NjcW1a9fg7+9f2aEQERFRFVHhXTzjx49H37594enpiZs3b2LGjBkwNTXFyy+/DHt7e4wYMQLjxo2Do6MjNBoN3nnnHfj7+3MEDxERESkqPEH566+/8PLLL+POnTtwcnJChw4dcOTIETg5OQEAFixYABMTEwwaNAiZmZkICgrCkiVLKjoMIiIiqsIqPEFZu3ZtsestLS0RERGBiIiIit41ERERVRN8TB8RERFJp1KeJEtERFQuKhXg5fVonowWExQiIpKHuTkQGmroKEgC7OIhIiIi6TBBISIiIumwi4eIiOSRlQUsXJg/P3YsH3VvxJigEBGRXO7fN3QEJAF28RAREZF0mKAQERGRdJigEBERkXSYoBAREZF0mKAQERGRdDiKh4iI5KFSAe7uj+bJaDFBISIieZibA6NGGToKkgC7eIiIiEg6TFCIiIhIOuziISIieWRnAxER+fNhYfldPmSUmKAQEZE8hABSUh7Nk9FiFw8RERFJhwkKERERSYcJChEREUmHCQoRERFJhwkKERERSYejeIiISB4qFeDk9GiejBYTFCIikoe5ef7zT8josYuHiIiIpMMEhYiIiKTDLh4iIpJHdjbw1Vf586NG8VH3RowJChERyUMI4PbtR/NktNjFQ0RERNJhgkJERETSYYJCRERE0mGCQkRERNJhgkJERETS4SgeIiKSh0oFODg8miejxQSFiIjkYW4OjB1r6ChIAuziISIiIukwQSEiIiLpsIuHiIjkkZ0NrFiRPz98OB91b8SYoBARkTyEAG7efDRPRotdPERERCQdXkEhIul4ffBrud97ZV7vCoyEiAyFV1CIiIhIOkxQiIiISDrs4iGq5thdUno8VkTyYIJCBvMkfwyqIv4BIyola2tDR0ASYIJCRETyUKuBiRMNHQVJgAkKURVgbFebqHpjVxqVBhMU4pcFFYmfDSIyFCYoREQkDbPcHPT/Yx8AYFOjzsgx5Z8pY8WW14P/ayR6cuyWovJQQeCZ1CRlnowXExSip4R/sKky8D9UpcdjVbXwQW1EREQkHV5BqWCGytAN9b9zXhUgIqLKwASFiKoVJuulVxW7PKpi+7J7qHzYxUNERETS4RUUIiKSSrYJ/zQRExSpVMVLxEREFSnb1BwR7YYaOgySALt4iIiISDq8gkJE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3rwZKpUKKpUK+/btAwBcv34dQ4YMgYODAxwdHdGvXz9cuXJFqae1tTVWr16tbGvdunWwsrLCH3/8Uex29Tl//jz69OkDjUYDOzs7BAQE4PLly6U+No8fYy0HBwdERkYCeHTlauPGjXjhhRdgbW2N5s2bIzo6usiYbt++jVatWmHAgAFF/sp0wSsIKpUKX3/9NQYMGABra2vUr18fP//8c5H7AIDMzExMmjQJHh4esLCwQL169fC///1Pp8zJkyfRqlUrWFtbo127djq/Onv58mX069cPLi4usLW1RevWrbFr165CcX700Ud47bXXoNFolKs+kyZNwrPPPgtra2vUrVsXH374YaHP3C+//ILWrVvD0tIStWrVwoABAwDknw9Xr17Fe++9p7Sx1qFDhxAQEAArKyt4eHhgzJgxuHfvXrHxZGVlITw8HG5ubrC0tISnpyfmzp1b7LEj0lEhv+hDZAAhISGiX79+etf9888/yi+MXrhwQZw6dUp069ZNvPDCC0qZTp06CY1GI2bOnCkuXbokvv32W51fWs7JyRG+vr6iW7duIiYmRhw8eFA8//zzAoD46aefhBD5vxgKQOzatUvcunVL3LlzR4lNo9GI0aNHiwsXLohffvlFWFtbF/qxrsdt3LhRmJubi4iICBEbGys+//xzYWpqKvbs2SOEECI5OVn06NFDDBkyRNy6dUukpKQU2kZ6eroYMmSI6NGjh/Ir2ZmZmSIrK0s0bNhQvP766+LMmTPijz/+EK+88orw9fUVmZmZQgghIiIihL29vbh69aq4fv26qFGjhli0aFGx29Xnr7/+Eo6OjmLgwIHi+PHjIjY2VnzzzTfi4sWLpT42jx9jLXt7e+UH1xISEgQA0aBBA7FlyxYRGxsrBg8eLDw9PZUfbVuxYoWwt7cXQuT/CJyvr68ICQkROTk5RbaBp6enWLBggU4czzzzjFi9erWIi4sTY8aMEba2tko76zNkyBDh4eEhNm7cKC5fvix27dol1q5dK4TI/wE5AKJNmzZi37594vz58yIgIEC0a9dOeX9MTIxYtmyZOHv2rLh06ZKYNm2asLS0FFevXtWJU6PRiM8++0zEx8crP3b30UcficOHD4uEhATx888/CxcXF/Hxxx8r79uyZYswNTUV06dPF3/88YeIiYkRc+bMEULk/yjcM888I2bPnq20sRD5v9ps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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"percentile_50th = np.percentile(chunk_sizes, 50)\n",
"print('Num of chunks:', len(chunk_sizes))\n",
"print('50th percentile:', percentile_50th)\n",
"plt.hist(chunk_sizes, bins=30)\n",
"plt.axvline(x = percentile_50th, color = 'red', linestyle = '--', alpha = 0.5)\n",
"plt.title('Distribution of text-chunks length with 50th percentile')\n",
"plt.xlabel('Length of text-chunk in characters')\n",
"plt.gca().spines[['top', 'right',]].set_visible(False)\n",
"plt.show();"
]
},
{
"cell_type": "markdown",
"id": "22598c8e-41c1-40e5-a6f7-f20e38496114",
"metadata": {},
"source": [
"Now distribution of documents look more sane"
]
},
{
"cell_type": "code",
"execution_count": 166,
"id": "198890f6-acc9-4f75-8261-bb7a71d05261",
"metadata": {},
"outputs": [],
"source": [
"df.reset_index(inplace=True)\n",
"df.drop(['level_0', 'index'], axis=1, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 181,
"id": "d26eacb9-b577-4af6-8145-fe6be66b6f18",
"metadata": {},
"outputs": [],
"source": [
"# Writing cleaned texts into txt file with ######## delimeter \n",
"with open('dataset_hsbc.txt', 'w', encoding=\"utf-8\") as out:\n",
" for idx in df.index:\n",
" link = df.loc[idx,'url']\n",
" text = df.loc[idx,'text']\n",
" paragraph_text = text + '\\Details in the link: ' + link\n",
" out.write(paragraph_text + '\\n########')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment