ANLP_WS24_CA1/data_explo_reddit.ipynb

308 lines
54 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"cells": [
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import os\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import nltk\n",
"from nltk.corpus import stopwords\n",
"from nltk.tokenize import word_tokenize\n",
"from collections import Counter"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[nltk_data] Downloading package punkt to\n",
"[nltk_data] C:\\Users\\felix\\AppData\\Roaming\\nltk_data...\n",
"[nltk_data] Package punkt is already up-to-date!\n",
"[nltk_data] Downloading package stopwords to\n",
"[nltk_data] C:\\Users\\felix\\AppData\\Roaming\\nltk_data...\n",
"[nltk_data] Package stopwords is already up-to-date!\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# nltk count words\n",
"nltk.download('punkt')\n",
"nltk.download('stopwords')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# dataset reddit jokes"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"# Load the data from the JSON file\n",
"data_path = './data/reddit_jokes.json'\n",
"with open(data_path) as f:\n",
" data = json.load(f)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"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>body</th>\n",
" <th>id</th>\n",
" <th>score</th>\n",
" <th>title</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Now I have to say \"Leroy can you please paint ...</td>\n",
" <td>5tz52q</td>\n",
" <td>1</td>\n",
" <td>I hate how you cant even say black paint anymore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Pizza doesn't scream when you put it in the ov...</td>\n",
" <td>5tz4dd</td>\n",
" <td>0</td>\n",
" <td>What's the difference between a Jew in Nazi Ge...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>...and being there really helped me learn abou...</td>\n",
" <td>5tz319</td>\n",
" <td>0</td>\n",
" <td>I recently went to America....</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>A Sunday school teacher is concerned that his ...</td>\n",
" <td>5tz2wj</td>\n",
" <td>1</td>\n",
" <td>Brian raises his hand and says, “Hes in Heaven.”</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>He got caught trying to sell the two books to ...</td>\n",
" <td>5tz1pc</td>\n",
" <td>0</td>\n",
" <td>You hear about the University book store worke...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" body id score \\\n",
"0 Now I have to say \"Leroy can you please paint ... 5tz52q 1 \n",
"1 Pizza doesn't scream when you put it in the ov... 5tz4dd 0 \n",
"2 ...and being there really helped me learn abou... 5tz319 0 \n",
"3 A Sunday school teacher is concerned that his ... 5tz2wj 1 \n",
"4 He got caught trying to sell the two books to ... 5tz1pc 0 \n",
"\n",
" title \n",
"0 I hate how you cant even say black paint anymore \n",
"1 What's the difference between a Jew in Nazi Ge... \n",
"2 I recently went to America.... \n",
"3 Brian raises his hand and says, “Hes in Heaven.” \n",
"4 You hear about the University book store worke... "
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create pandas dataframe of the data\n",
"df = pd.DataFrame(data)\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(82914, 4)\n",
"The Person has no Internet Connection...;-p\n",
"513ftd\n",
"14\n",
"-----------\n",
"Rubio on rails\n",
"48tsdn\n",
"6\n",
"-----------\n",
"\n",
"3qaqsy\n",
"29\n",
"-----------\n",
"After all, this isn't the first time Atlanta was burned by the north.\n",
"5soa19\n",
"16\n",
"-----------\n",
"I think conspiracy theorists are secretly working together to brainwash us\n",
"5sb13m\n",
"10\n",
"-----------\n"
]
}
],
"source": [
"# get jokes with highest scores min 4.5\n",
"good_jokes = df[df['score'] >= 4.5].values\n",
"# random sample of 5 jokes\n",
"print(np.array(good_jokes).shape)\n",
"# 5 random indices min max\n",
"number_of_jokes = 5\n",
"idx = np.random.randint(0, len(good_jokes), number_of_jokes)\n",
"for i in idx:\n",
" print(good_jokes[i][0])\n",
" print(good_jokes[i][1])\n",
" print(good_jokes[i][2])\n",
" print('-----------')"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmIAAAHHCAYAAAAcbzQmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLKklEQVR4nO3deVhV5d7/8c9W3BscACemRCDn2bQiTmqZHFFpsOFJzUrNIUvLqVJPznnS9GhamXZOJ2k4ZdpT2iNqEk6nJEsUDVNSc6gUtBS2YqLC/fuji/VzBw4QugTer+taV651f9da33Ur8bn2XntthzHGCAAAAFddBbsbAAAAKK8IYgAAADYhiAEAANiEIAYAAGATghgAAIBNCGIAAAA2IYgBAADYhCAGAABgE4IYAACATQhiQBk0adIkORyOq3Ku22+/Xbfffru1vm7dOjkcDn300UdX5fx9+/ZVeHj4VTlXcZ08eVIDBgxQUFCQHA6Hhg8ffkXO43A4NHTo0CtybABXBkEMuMbFxcXJ4XBYi7e3t0JCQhQTE6NXXnlFJ06cKJHzHDp0SJMmTVJKSkqJHK8kXcu9XY4XX3xRcXFxeuKJJ/Tuu+/qkUceuWBteHi47rzzzqvYHQA7edndAIDLM2XKFEVEROjs2bNKT0/XunXrNHz4cM2ePVuffvqpWrZsadWOGzdOY8aMKdLxDx06pMmTJys8PFytW7e+7P1Wr15dpPMUx8V6+9e//qW8vLwr3sOfsWbNGt1yyy2aOHGi3a0AuMYQxIBSomvXrrrxxhut9bFjx2rNmjW68847dffdd2vnzp3y8fGRJHl5ecnL68r+eJ86dUqVK1eW0+m8oue5lEqVKtl6/stx5MgRNW3a1O42yoTs7GxVqVLF7jaAEsNbk0Apdscdd2j8+PE6cOCA3nvvPWt7YfeIJSQkqF27dvL391fVqlXVqFEj/e1vf5P0+31dN910kySpX79+1tugcXFxkn6/D6x58+ZKTk5Whw4dVLlyZWvfP94jli83N1d/+9vfFBQUpCpVqujuu+/Wjz/+6FETHh6uvn37Ftj3/GNeqrfC7hHLzs7WqFGjFBoaKpfLpUaNGukf//iHjDEedfn3VC1dulTNmzeXy+VSs2bNtGrVqsIn/A+OHDmi/v37KzAwUN7e3mrVqpXefvttazz/frl9+/YpPj7e6n3//v2XdfyiXk9hpk6dqgoVKujVV1+1tq1cuVLt27dXlSpVVK1aNcXGxmrHjh2XPNbZs2c1efJkNWjQQN7e3qpZs6batWunhIQEj7pdu3bpwQcfVO3ateXj46NGjRrp+eef96jZunWrunbtKl9fX1WtWlWdOnXSV1995VGT/7b8+vXr9eSTTyogIEB16tQp0nWkp6erX79+qlOnjlwul4KDg3XPPfcU+e8AuFJ4RQwo5R555BH97W9/0+rVqzVw4MBCa3bs2KE777xTLVu21JQpU+RyubRnzx59+eWXkqQmTZpoypQpmjBhggYNGqT27dtLkv7yl79Yx/j111/VtWtX9ezZUw8//LACAwMv2tff//53ORwOjR49WkeOHNGcOXMUHR2tlJQU65W7y3E5vZ3PGKO7775ba9euVf/+/dW6dWt99tlnevbZZ/Xzzz/r5Zdf9qj/4osv9PHHH+vJJ59UtWrV9Morr+j+++/XwYMHVbNmzQv29dtvv+n222/Xnj17NHToUEVERGjJkiXq27evMjMzNWzYMDVp0kTvvvuuRowYoTp16mjUqFGSpNq1a1/29Rf1es43btw4vfjii3rjjTesfxvvvvuu+vTpo5iYGL300ks6deqU5s+fr3bt2mnr1q0X/eDDpEmTNG3aNA0YMEA333yz3G63Nm/erC1btuivf/2rJGn79u1q3769KlWqpEGDBik8PFx79+7V//3f/+nvf/+7pN//PbZv316+vr567rnnVKlSJb3xxhu6/fbbtX79ekVGRnqc98knn1Tt2rU1YcIEZWdnF+k67r//fu3YsUNPPfWUwsPDdeTIESUkJOjgwYPX/Ic8UE4YANe0hQsXGknmm2++uWCNn5+fueGGG6z1iRMnmvN/vF9++WUjyRw9evSCx/jmm2+MJLNw4cICY7fddpuRZBYsWFDo2G233Watr1271kgy1113nXG73db2xYsXG0lm7ty51rawsDDTp0+fSx7zYr316dPHhIWFWetLly41kszUqVM96h544AHjcDjMnj17rG2SjNPp9Ni2bds2I8m8+uqrBc51vjlz5hhJ5r333rO2nTlzxkRFRZmqVat6XHtYWJiJjY296PEuVFvU6xkyZIgxxphRo0aZChUqmLi4OGv8xIkTxt/f3wwcONDjWOnp6cbPz6/A9j9q1arVJa+jQ4cOplq1aubAgQMe2/Py8qw/d+/e3TidTrN3715r26FDh0y1atVMhw4drG35//bbtWtnzp07V+TrOH78uJFkZs6cedGeATvx1iRQBlStWvWin5709/eXJC1btqzYN7a7XC7169fvsusfffRRVatWzVp/4IEHFBwcrBUrVhTr/JdrxYoVqlixop5++mmP7aNGjZIxRitXrvTYHh0drXr16lnrLVu2lK+vr3744YdLnicoKEi9evWytlWqVElPP/20Tp48qfXr15fA1RT9eowxGjp0qObOnav33ntPffr0scYSEhKUmZmpXr166ZdffrGWihUrKjIyUmvXrr1oL/7+/tqxY4d2795d6PjRo0e1YcMGPfbYY6pbt67HWP5b5bm5uVq9erW6d++u66+/3hoPDg7WQw89pC+++EJut9tj34EDB6pixYpFvg4fHx85nU6tW7dOx48fv+i1AXYhiAFlwMmTJz1Czx/16NFDt956qwYMGKDAwED17NlTixcvLlIou+6664p0Y36DBg081h0Oh+rXr3/F7805cOCAQkJCCsxHkyZNrPHz/TEwSFL16tUv+Yv7wIEDatCggSpU8Pzf6IXOU1xFvZ533nlH8+bN06uvvuoREiVZAeqOO+5Q7dq1PZbVq1fryJEjF+1lypQpyszMVMOGDdWiRQs9++yz2r59uzWeH16bN29+wWMcPXpUp06dUqNGjQqMNWnSRHl5eQXuJYyIiCjWdbhcLr300ktauXKlAgMD1aFDB82YMUPp6ekXvU7gauIeMaCU++mnn5SVlaX69etfsMbHx0cbNmzQ2rVrFR8fr1WrVunDDz/UHXfcodWrV3u82nCxY5S0Cz10Njc397J6KgkXOo+5jBvhr0W33nqrUlJS9Nprr+nBBx9UjRo1rLH84P3uu+8qKCiowL6X+qRthw4dtHfvXi1btkyrV6/Wm2++qZdfflkLFizQgAEDSvZCzvPHf3tFuY7hw4frrrvu0tKlS/XZZ59p/PjxmjZtmtasWaMbbrjhivUMXC5eEQNKuXfffVeSFBMTc9G6ChUqqFOnTpo9e7a+++47/f3vf9eaNWust3FK+kn8f3z7yhijPXv2eNwgXb16dWVmZhbY94+v8hSlt7CwMB06dKjAW7W7du2yxktCWFiYdu/eXeBVxStxnqJcT/369bV69WodOnRIXbp08dgv/y3YgIAARUdHF1gK+/TrH9Wo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S7IXD0FBQZKkjIwMBQcHW9szMjLUunVrq+bIkSMe+507d07Hjh2z9g8KClJGRoZHTf76pWrOH79UL4VxuVxyuVyXdb0AAKD8KVYQe+eddy46/uijjxarmfNFREQoKChIiYmJVthxu93atGmTnnjiCUlSVFSUMjMzlZycrLZt20qS1qxZo7y8PEVGRlo1zz//vM6ePWt9J2ZCQoIaNWqk6tWrWzWJiYkaPny4df6EhARFRUVddi8AAABFVawgNmzYMI/1s2fP6tSpU3I6napcufJlB7GTJ09qz5491vq+ffuUkpKiGjVqqG7duho+fLimTp2qBg0aKCIiQuPHj1dISIi6d+8uSWrSpIm6dOmigQMHasGCBTp79qyGDh2qnj17KiQkRJL00EMPafLkyerfv79Gjx6t1NRUzZ07Vy+//LLH9dx2222aNWuWYmNjtWjRIm3evNl6xIXD4bhkLwAAAEVWUh+//P77702nTp3MqlWrLnuftWvXGkkFlj59+hhjfn9sxPjx401gYKBxuVymU6dOJi0tzeMYv/76q+nVq5epWrWq8fX1Nf369TMnTpzwqNm2bZtp166dcblc5rrrrjPTp08v0MvixYtNw4YNjdPpNM2aNTPx8fEe45fTy6Xw+AoAAEqfK/n722GMMSUV6jZv3qyHH35Yu3btKqlDlilut1t+fn7KysqSr69viR47fEx8gW37p8eW6DkAACiPruTv72J/6XdhvLy8dOjQoZI8JAAAQJlVrHvEPv30U491Y4wOHz6s1157TbfeemuJNAYAAFDWFSuI/fEGdYfDodq1a+uOO+7QrFmzSqIvAACAMq9YQSwvL6+k+wAAACh3SvQeMQAAAFy+Yr0idv7X9lzK7Nmzi3MKAACAMq9YQWzr1q3aunWrzp49q0aNGkmSvv/+e1WsWFFt2rSx6hwOR8l0CQAAUAYVK4jdddddqlatmt5++23ra4KOHz+ufv36qX379ho1alSJNgkAAFAWFesesVmzZmnatGlWCJOk6tWra+rUqXxqEgAA4DIVK4i53W4dPXq0wPajR4/qxIkTf7opAACA8qBYQezee+9Vv3799PHHH+unn37STz/9pP/93/9V//79dd9995V0jwAAAGVSse4RW7BggZ555hk99NBDOnv27O8H8vJS//79NXPmzBJtEAAAoKwqVhCrXLmyXn/9dc2cOVN79+6VJNWrV09VqlQp0eYAAADKsj/1QNfDhw/r8OHDatCggapUqSJjTEn1BQAAUOYVK4j9+uuv6tSpkxo2bKhu3brp8OHDkqT+/fvz6AoAAIDLVKwgNmLECFWqVEkHDx5U5cqVre09evTQqlWrSqw5AACAsqxY94itXr1an332merUqeOxvUGDBjpw4ECJNAYAAFDWFesVsezsbI9XwvIdO3ZMLpfrTzcFAABQHhQriLVv317vvPOOte5wOJSXl6cZM2aoY8eOJdYcAABAWVastyZnzJihTp06afPmzTpz5oyee+457dixQ8eOHdOXX35Z0j0CAACUScV6Rax58+b6/vvv1a5dO91zzz3Kzs7Wfffdp61bt6pevXol3SMAAECZVORXxM6ePasuXbpowYIFev75569ETwAAAOVCkV8Rq1SpkrZv334legEAAChXivXW5MMPP6x///vfJd0LAABAuVKsm/XPnTunt956S59//rnatm1b4DsmZ8+eXSLNAQAAlGVFCmI//PCDwsPDlZqaqjZt2kiSvv/+e48ah8NRct0BAACUYUUKYg0aNNDhw4e1du1aSb9/pdErr7yiwMDAK9IcAABAWVake8SMMR7rK1euVHZ2dok2BAAAUF4U62b9fH8MZgAAALh8RQpiDoejwD1g3BMGAABQPEW6R8wYo759+1pf7H369GkNHjy4wKcmP/7445LrEAAAoIwqUhDr06ePx/rDDz9cos0AAACUJ0UKYgsXLrxSfQAAAJQ7f+pmfQAAABQfQQwAAMAm13wQCw8Ptz6tef4yZMgQSdLtt99eYGzw4MEexzh48KBiY2NVuXJlBQQE6Nlnn9W5c+c8atatW6c2bdrI5XKpfv36iouLK9DLvHnzFB4eLm9vb0VGRurrr7++YtcNAADKvms+iH3zzTc6fPiwtSQkJEiS/ud//seqGThwoEfNjBkzrLHc3FzFxsbqzJkz2rhxo95++23FxcVpwoQJVs2+ffsUGxurjh07KiUlRcOHD9eAAQP02WefWTUffvihRo4cqYkTJ2rLli1q1aqVYmJidOTIkaswCwAAoCxymFL2VNbhw4dr+fLl2r17txwOh26//Xa1bt1ac+bMKbR+5cqVuvPOO3Xo0CHrq5gWLFig0aNH6+jRo3I6nRo9erTi4+OVmppq7dezZ09lZmZq1apVkqTIyEjddNNNeu211yRJeXl5Cg0N1VNPPaUxY8ZcVu9ut1t+fn7KysqSr6/vn5iFgsLHxBfYtn96bImeAwCA8uhK/v6+5l8RO9+ZM2f03nvv6bHHHvN4kOx//vMf1apVS82bN9fYsWN16tQpaywpKUktWrTw+D7MmJgYud1u7dixw6qJjo72OFdMTIySkpKs8yYnJ3vUVKhQQdHR0VYNAABAURXp8RV2W7p0qTIzM9W3b19r20MPPaSwsDCFhIRo+/btGj16tNLS0qyHyqanpxf4UvL89fT09IvWuN1u/fbbbzp+/Lhyc3MLrdm1a9cF+83JyVFOTo617na7i37RAACgzCpVQezf//63unbtqpCQEGvboEGDrD+3aNFCwcHB6tSpk/bu3at69erZ0aZl2rRpmjx5sq09AACAa1epeWvywIED+vzzzzVgwICL1kVGRkqS9uzZI0kKCgpSRkaGR03+elBQ0EVrfH195ePjo1q1aqlixYqF1uQfozBjx45VVlaWtfz444+XcaUAAKC8KDVBbOHChQoICFBs7MVvQE9JSZEkBQcHS5KioqL07bffeny6MSEhQb6+vmratKlVk5iY6HGchIQERUVFSZKcTqfatm3rUZOXl6fExESrpjAul0u+vr4eCwAAQL5SEcTy8vK0cOFC9enTR15e///d1L179+qFF15QcnKy9u/fr08//VSPPvqoOnTooJYtW0qSOnfurKZNm+qRRx7Rtm3b9Nlnn2ncuHEaMmSI9eXlgwcP1g8//KDnnntOu3bt0uuvv67FixdrxIgR1rlGjhypf/3rX3r77be1c+dOPfHEE8rOzla/fv2u7mQAAIAyo1TcI/b555/r4MGDeuyxxzy2O51Off7555ozZ46ys7MVGhqq+++/X+PGjbNqKlasqOXLl+uJJ55QVFSUqlSpoj59+mjKlClWTUREhOLj4zVixAjNnTtXderU0ZtvvqmYmBirpkePHjp69KgmTJig9PR0tW7dWqtWrSpwAz8AAMDlKnXPESvNeI4YAAClD88RAwAAKIMIYgAAADYhiAEAANiEIAYAAGATghgAAIBNCGIAAAA2IYgBAADYhCAGAABgE4IYAACATQhiAAAANiGIAQAA2IQgBgAAYBOCGAAAgE0IYgAAADYhiAEAANiEIAYAAGATghgAAIBNCGIAAAA2IYgBAADYhCAGAABgE4IYAACATQhiAAAANiGIAQAA2IQgBgAAYBOCGAAAgE0IYgAAADYhiAEAANiEIAYAAGATghgAAIBNCGIAAAA2IYgBAADYhCAGAABgE4IYAACATQhiAAAANiGIAQAA2IQgBgAAYJNrOohNmjRJDofDY2ncuLE1fvr0aQ0ZMkQ1a9ZU1apVdf/99ysjI8PjGAcPHlRsbKwqV66sgIAAPfvsszp37pxHzbp169SmTRu5XC7Vr19fcXFxBXqZN2+ewsPD5e3trcjISH399ddX5JoBAED5cU0HMUlq1qyZDh8+bC1ffPGFNTZixAj93//9n5YsWaL169fr0KFDuu+++6zx3NxcxcbG6syZM9q4caPefvttxcXFacKECVbNvn37FBsbq44dOyolJUXDhw/XgAED9Nlnn1k1H374oUaOHKmJEydqy5YtatWqlWJiYnTkyJGrMwkAAKBMchhjjN1NXMikSZO0dOlSpaSkFBjLyspS7dq19f777+uBBx6QJO3atUtNmjRRUlKSbrnlFq1cuVJ33nmnDh06pMDAQEnSggULNHr0aB09elROp1OjR49WfHy8UlNTrWP37NlTmZmZWrVqlSQpMjJSN910k1577TVJUl5enkJDQ/XUU09pzJgxl309brdbfn5+ysrKkq+vb3GnpVDhY+ILbNs/PbZEzwEAQHl0JX9/X/OviO3evVshISG6/vrr1bt3bx08eFCSlJycrLNnzyo6Otqqbdy4serWraukpCRJUlJSklq0aGGFMEmKiYmR2+3Wjh07rJrzj5Ffk3+MM2fOKDk52aOmQoUKio6OtmouJCcnR26322MBAADId00HscjISMXFxWnVqlWaP3++9u3bp/bt2+vEiRNKT0+X0+mUv7+/xz6BgYFKT0+XJKWnp3uEsPzx/LGL1bjdbv3222/65ZdflJubW2hN/jEuZNq0afLz87OW0NDQIs8BAAAou7zsbuBiunbtav25ZcuWioyMVFhYmBYvXiwfHx8bO7s8Y8eO1ciRI611t9tNGAMAAJZr+hWxP/L391fDhg21Z88eBQUF6cyZM8rMzPSoycjIUFBQkCQpKCiowKco89cvVePr6ysfHx/VqlVLFStWLLQm/xgX4nK55Ovr67EAAADkK1VB7OTJk9q7d6+Cg4PVtm1bVapUSYmJidZ4WlqaDh48qKioKElSVFSUvv32W49PNyYk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FRAQoGeffVbnzp3zqFm3bp3atGkjl8ul+vXrKy4urkA/5eHnZP78+WrZsqX1YMqoqCitXLnSGme+r7zp06fL4XBo+PDh1jbmvWRNmjRJDofDY2ncuLE1Xurm26BUW7RokXE6neatt94yO3bsMAMHDjT+/v4mIyPD7tauOStWrDDPP/+8+fjjj40k88knn3iMT58+3fj5+ZmlS5eabdu2mbvvvttERESY3377zarp0qWLadWqlfnqq6/Mf//7X1O/fn3Tq1cvazwrK8sEBgaa3r17m9TUVPPBBx8YHx8f88Ybb1g1X375palYsaKZMWOG+e6778y4ceNMpUqVzLfffnvF5+BqiomJMQsXLjSpqakmJSXFdOvWzdStW9ecPHnSqhk8eLAJDQ01iYmJZvPmzeaWW24xf/nLX6zxc+fOmebNm5vo6GizdetWs2LFClOrVi0zduxYq+aHH34wlStXNiNHjjTfffedefXVV03FihXNqlWrrJry8nPy6aefmvj4ePP999+btLQ087e//c1UqlTJpKamGmOY7yvt66+/NuHh4aZly5Zm2LBh1nbmvWRNnDjRNGvWzBw+fNhajh49ao2XtvkmiJVyN998sxkyZIi1npuba0JCQsy0adNs7Ora98cglpeXZ4KCgszMmTOtbZmZmcblcpkPPvjAGGPMd999ZySZb775xqpZuXKlcTgc5ueffzbGGPP666+b6tWrm5ycHKtm9OjRplGjRtb6gw8+aGJjYz36iYyMNI8//niJXuO15siRI0aSWb9+vTHm9/mtVKmSWbJkiVWzc+dOI8kkJSUZY34PzxUqVDDp6elWzfz5842vr681x88995xp1qyZx7l69OhhYmJirPXy/HNSvXp18+abbzLfV9iJEydMgwYNTEJCgrntttusIMa8l7yJEyeaVq1aFTpWGuebtyZLsTNnzig5OVnR0dHWtgoVKig6OlpJSUk2dlb67Nu3T+np6R5z6efnp8jISGsuk5KS5O/vrxtvvNGqiY6OVoUKFbRp0yarpkOHDnI6nVZNTEyM0tLSdPz4cavm/PPk15T1v7OsrCxJUo0aNSRJycnJOnv2rMdcNG7cWHXr1vWY8xYtWnh8e0VMTIzcbrd27Nhh1VxsPsvrz0lubq4WLVqk7OxsRUVFMd9X2JAhQxQbG1tgbpj3K2P37t0KCQnR9ddfr969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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plot the distribution of scores\n",
"scores = df['score']\n",
"plt.hist(scores, bins=100)\n",
"plt.xlabel('score')\n",
"plt.ylabel('Frequency')\n",
"plt.title('Distribution of Joke scores')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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oCC98847at++vSSpd+/eevHFF9WsWTNNmTJF3bt319y5cxUdHa1Lly5JuhJkW7VqpcOHD2vIkCGaNm2aYmNjtX79+muex3PPPafWrVtr+vTpql27tpo1a6ZPPvlE6enp1/xsfmzdulWS1KRJE7v2xo0by9XV1bY9OztbO3bsyNVPku68804dPHjQth4xv/sEJLEGCcXX1S6x5QgICDB33HGH7f2IESPspvQnTZpkJJlTp0797T6udhmrRYsWRpKZMWNGnttatGhhe59zie22224zaWlptvb58+cbSWbKlCm2trCwMNO1a9dr7vNqtXXt2tWEhYXZ3i9cuNBIMqNHj7br16FDB+Pi4mJ++eUXW5sk4+npade2fft2I8lMmzYt17H+avLkyUaSmTNnjq0tMzPTREZGGl9fX7tzL8hlM2vfgp5PziW2QYMGGVdXVxMfH2/bfu7cORMYGGh69uxpt6+kpCQTEBCQq91q165dxsfHx0gyDRs2NP379zcLFy7Mdbn17Nmzxs/Pz0RERORaC5ednW2MuTJWQUFBpm7dunZ9Fi9ebCSZ4cOH29q6du1qJJkhQ4bY7euHH34wkszcuXPt2pcvX27X/s0331zzZ+haUlNTzQcffGAiIiKMJOPr62t69Ohhfvzxx2t+9mqX2OLi4oybm1ue28qVK2c6d+5sjDHm1KlTtrWIVu+9956RZH7++ecC7RMwhktsuMn5+vpe9W62wMBASdKiRYuUnZ3t0DG8vLzUvXv3fPd/6qmn5OfnZ3vfoUMHlS9fXkuXLnXo+Pm1dOlSubm56fnnn7drHzRokIwxWrZsmV17VFSUqlSpYntfv359+fv7/+2dQX89TkhIiLp06WJr8/Dw0PPPP6/09HStXr26EM6m4OdjjFG/fv00ZcoUzZkzR127drVtS0hI0NmzZ9WlSxf9/vvvtpebm5siIiK0atWqq9ZSp04dbdu2TU888YQOHz6sKVOmqF27dgoODtZHH31kd5xz585pyJAh8vb2tttHzqXfTZs2KSUlRX379rXrExMTo5o1a+Z5GahPnz527xcsWKCAgAA9+OCDdufTuHFj+fr62s4n5+//4sWLbbNKBeXv769evXpp/fr12rNnj5599lktXrxYd999t+rUqaP/+7//c2i/Fy5ckKenZ57bvL29bTOuOf/r5eWVZ7+/9snvPgGJS2y4yaWnp9uFEatOnTqpWbNmeuaZZxQcHKzOnTtr/vz5BQpLt91229/+o5uXatWq2b13cXFR1apVC7z+pqCOHDmi0NDQXONRq1Yt2/a/qlSpUq59lCpVKtcalryOU61aNbm62v/z8nfHcVRBz+fTTz/Ve++9p2nTptmFN0k6cOCApCtr18qVK2f3WrFihVJSUq5ZT/Xq1TV79mz9/vvv2rFjh9566y25u7urV69e+t///ifpylolSapbt+5Vz0uSatSokWtbzZo1c52Xu7u7KlSokOt8UlNTFRQUlOt80tPTbefTokULtW/fXm+88YbKli2rRx99VDNnzlRGRsY1zzcvtWrV0ttvv621a9cqMjJSe/bs0bvvvuvQvnx8fJSZmZnntosXL9rWMeX8b141X7x40a5PfvcJSJK7swsArpfjx48rNTVVVatW/ds+Pj4++v7777Vq1SotWbJEy5cv1xdffKEHHnhAK1askJub2zWPcz3+Uf27Z8NkZWXlq6bC8HfHMflYAF0UNWvWTNu2bdO7776rjh07qnTp0rZtOYF49uzZCgkJyfVZd/f8/1Pp5uamevXqqV69eoqMjNT999+vuXPnKioq6p+fRB68vLxyhdHs7GwFBQVp7ty5eX4mZ61XzoNL169fr//85z/673//q6effloTJkzQ+vXr5evrm+86Ll68qK+//lozZ85UYmKivL299cQTT+Sa3cqv8uXLKysrSykpKXYL3TMzM3X69GmFhoZKkkqXLi0vLy+dPHky1z5y2nL65nefgMQMEm5is2fPliRFR0dftZ+rq6tatmypiRMnas+ePXrzzTe1cuVK22WIwn7yds5sRQ5jjH755Re7O85KlSqVazGulHtWpCC1hYWF6cSJE7kuOf7888+27YUhLCxMBw4cyDULdz2OU5DzqVq1qlasWKETJ06odevWdp/LuZQYFBSkqKioXK+87kbMj5zFwDm/qHOOs2vXrquelyTt27cv17Z9+/bla/yqVKmi06dPq1mzZnmeT4MGDez633XXXXrzzTe1adMmzZ07V7t379a8efPydY4//fST+vTpo5CQEMXGxur06dN69913deLECc2ePVt33313vvZj1bBhQ0lXLjn+1aZNm5SdnW3b7urqqnr16uXqJ0kbNmzQ7bffbptlzO8+AYmAhJvUypUrNWrUKIWHh9tue87LmTNn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S0vThg0bbGMaGRmps2fPavPmzbY+K1euVHZ2tiIiImx9vv/+e126dMnWJyEhQTVq1FCpUqVsff56nJw+N/OfnTFG/fr10zfffKOVK1cqPDzcbnvjxo3l4eFhNy779u3T0aNH7cZ/586ddiE1ISFB/v7+ql27tq3P1caWn50rsrOzlZGRwbhfRy1bttTOnTu1bds226tJkyaKjY21/Tdjf2Okp6fr4MGDKl++fPH8O1+gJd0w8+bNM15eXiY+Pt7s2bPH9OrVywQGBtqtuoe9c+fOma1bt5qtW7caSWbixIlm69at5siRI8aYK7f5BwYGmkWLFpkdO3aYRx99NM/b/O+44w6zYcMGs2bNGlOtWjW72/zPnj1rgoODzZNPPml27dpl5s2bZ0qUKJHrNn93d3fzzjvvmL1795oRI0bc9Lf59+nTxwQEBJjvvvvO7tbbP//809bn2WefNZUqVTIrV640mzZtMpGRkSYyMtK2PefW21atWplt27aZ5cuXm3LlyuV56+2LL75o9u7da9577708b729lX52hgwZYlavXm0OHTpkduzYYYYMGWJcXFzMihUrjDGM+43017vYjGHsr5dBgwaZ7777zhw6dMisXbvWREVFmbJly5qUlBRjTPEbdwKSA6ZNm2YqVapkPD09zZ133mnWr1/v7JKKtFWrVhlJuV5du3Y1xly51X/YsGEmODjYeHl5mZYtW5p9+/bZ7eP06dOmS5cuxtfX1/j7+5vu3bubc+fO2fXZvn27ad68ufHy8jK33XabGTt2bK5a5s+fb6pXr248PT1NnTp1zJIlS67beRcFeY27JDNz5kxbnwsXLpi+ffuaUqVKmRIlSpjHHnvMnDx50m4/hw8fNm3atDE+Pj6mbNmyZtCgQebSpUt2fVatWmUaNmxoPD09ze233253jBy30s/O008/bcLCwoynp6cpV66cadmypS0cGcO430jWgMTYXx+dOnUy5cuXN56enua2224znTp1Mr/88otte3EbdxdjjCnYnBMAAMDNjTVIAAAAFgQkAAAACwISAACABQEJAADAgoAEAABgQUACAACwICABAABYEJAAAAAsCEgAiqxTp06pT58+qlSpkry8vBQSEqLo6GitXbvW2aUBuMm5O7sAAPg77du3V2ZmpmbNmqXbb79dycnJSkxM1OnTp6/L8TIzM+Xp6Xld9g2geGEGCUCRdPbsWf3www8aN26c7r//foWFhenOO+/U0KFD9cgjj9j69O7dW8HBwfL29lbdunW1ePFi2z6++uor1alTR15eXqpcubImTJhgd4zKlStr1KhReuqpp+Tv769evXpJktasWaN77rlHPj4+qlixop5//nmdP3/+xp08AKcjIAEoknx9feXr66uFCxcqIyMj1/bs7Gy1adNGa9eu1Zw5c7Rnzx6NHTtWbm5ukqTNmzerY8eO6ty5s3bu3KnXX39dw4YNU3x8vN1+3nnnHTVo0EBbt27VsGHDdPDgQbVu3Vrt27fXjh079MUXX2jNmjXq16/fjThtAEUEX1YLoMj66quv1LNnT124cEGNGjVSixYt1LlzZ9WvX18rVqxQmzZttHfvXlWvXj3XZ2NjY3Xq1CmtWLHC1vbSSy9pyZIl2r17t6QrM0h33HGHvvnmG1ufZ555Rm5ubvrggw9sbWvWrFGLFi10/vx5eXt7X8czBlBUMIMEoMhq3769Tpw4oW+//VatW7fWd999p0aNGik+Pl7btm1ThQoV8gxHkrR37141a9bMrq1Zs2Y6cOCAsrKybG1NmjSx67N9+3bFx8fbZrB8fX0VHR2t7OxsHTp0qPBPEkCRxCJtAEWat7e3HnzwQT344IMaNmyYnnnmGY0YMUKDBw8ulP2XLFnS7n16erp69+6t559/PlffSpUqFcoxARR9BCQAxUrt2rW1cOFC1a9fX8ePH9f+/fvznEWqVatWrscBrF27VtWrV7etU8pLo0aNtGfPHlWtWrXQawdQfHCJDUCRdPr0aT3wwAOaM2eOduzYoUOHDmnBggUaP368Hn30UbVo0UL33nuv2rdvr4SEBB06dEjLli3T8uXLJUmDBg1SYmKiRo0apf3792vWrFl69913rznz9PLLL+vHH39Uv379tG3bNh04cECLFi1ikTZwi2EGCUCR5Ovrq4iICE2aNEkHDx7UpUuXVLFiRfXs2VOvvPKKpCuLuAcPHqwuXbro/Pnzqlq1qsaOHSvpykzQ/PnzNXz4cI0aNUrly5fXyJEj1a1bt6set379+lq9erVeffVV3XPPPTLGqEqVKurUqdP1PmUARQh3sQEAAFhwiQ0AAMCCgAQAAGBBQAIAALAgIAEAAFgQkAAAACwISAAAABYEJAAAAAsCEgAAgAUBCQAAwIKABAAAYEFAAgAAsCAgAQAAWPw/rymin1R9XecAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of jokes with score > 1000: 3699\n"
]
}
],
"source": [
"min_score = 1000\n",
"\n",
"# plot the distribution of scores\n",
"scores = df[df['score'] > min_score]['score']\n",
"plt.hist(scores, bins=100)\n",
"plt.xlabel('Score')\n",
"plt.ylabel('Frequency')\n",
"plt.title(f'Distribution of Joke Scores >{min_score}')\n",
"plt.show()\n",
"\n",
"# print number of jokes with score > 1000\n",
"num_jokes = len(scores)\n",
"print(f'Number of jokes with score > {min_score}:', num_jokes)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}