diff --git a/wyk/02_Jezyki.ipynb b/wyk/02_Jezyki.ipynb new file mode 100644 index 0000000..3f16767 --- /dev/null +++ b/wyk/02_Jezyki.ipynb @@ -0,0 +1,1780 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Modelowanie języka

\n", + "

2. Języki [wykład]

\n", + "

Filip Graliński (2022)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Języki i ich prawa\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jakim rozkładom statystycznym podlegają języki?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Język naturalny albo „Pan Tadeusz” w liczbach\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Przygotujmy najpierw „infrastrukturę” do *segmentacji* tekstu na różnego rodzaju jednostki.\n", + "Używać będziemy generatorów.\n", + "\n", + "**Pytanie** Dlaczego generatory zamiast list?\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Księga pierwsza\\r\\n\\r\\n\\r\\n\\r\\nGospodarstwo\\r\\n\\r\\nPowrót pani'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import requests\n", + "\n", + "url = 'https://wolnelektury.pl/media/book/txt/pan-tadeusz.txt'\n", + "pan_tadeusz = requests.get(url).content.decode('utf-8')\n", + "\n", + "pan_tadeusz[100:150]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Znaki\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['K',\n", + " 's',\n", + " 'i',\n", + " 'ę',\n", + " 'g',\n", + " 'a',\n", + " ' ',\n", + " 'p',\n", + " 'i',\n", + " 'e',\n", + " 'r',\n", + " 'w',\n", + " 's',\n", + " 'z',\n", + " 'a',\n", + " '\\r',\n", + " '\\n',\n", + " '\\r',\n", + " '\\n',\n", + " '\\r',\n", + " '\\n',\n", + " '\\r',\n", + " '\\n',\n", + " 'G',\n", + " 'o',\n", + " 's',\n", + " 'p',\n", + " 'o',\n", + " 'd',\n", + " 'a',\n", + " 'r',\n", + " 's',\n", + " 't',\n", + " 'w',\n", + " 'o',\n", + " '\\r',\n", + " '\\n',\n", + " '\\r',\n", + " '\\n',\n", + " 'P',\n", + " 'o',\n", + " 'w',\n", + " 'r',\n", + " 'ó',\n", + " 't',\n", + " ' ',\n", + " 'p',\n", + " 'a',\n", + " 'n',\n", + " 'i']" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from itertools import islice\n", + "\n", + "def get_characters(t):\n", + " yield from t\n", + "\n", + "list(islice(get_characters(pan_tadeusz), 100, 150))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({'A': 698,\n", + " 'd': 11465,\n", + " 'a': 30979,\n", + " 'm': 10269,\n", + " ' ': 63444,\n", + " 'M': 585,\n", + " 'i': 29353,\n", + " 'c': 14153,\n", + " 'k': 12362,\n", + " 'e': 25343,\n", + " 'w': 14625,\n", + " 'z': 22741,\n", + " '\\r': 10851,\n", + " '\\n': 10851,\n", + " 'P': 1265,\n", + " 'n': 15505,\n", + " 'T': 971,\n", + " 'u': 7699,\n", + " 's': 15255,\n", + " 'y': 13732,\n", + " 'l': 6677,\n", + " 'o': 23050,\n", + " 't': 10757,\n", + " 'j': 6586,\n", + " 'L': 316,\n", + " 'I': 795,\n", + " 'S': 1045,\n", + " 'B': 567,\n", + " 'N': 793,\n", + " '9': 8,\n", + " '7': 2,\n", + " '8': 10,\n", + " '-': 33,\n", + " '3': 3,\n", + " '2': 6,\n", + " '4': 2,\n", + " '5': 2,\n", + " 'K': 683,\n", + " 'ę': 5534,\n", + " 'g': 4775,\n", + " 'p': 8031,\n", + " 'r': 15328,\n", + " 'G': 358,\n", + " 'ó': 3097,\n", + " '—': 720,\n", + " ',': 9130,\n", + " 'ł': 10059,\n", + " 'W': 1258,\n", + " 'ż': 3334,\n", + " 'ś': 2524,\n", + " 'ą': 4794,\n", + " 'Ż': 219,\n", + " 'O': 567,\n", + " 'ź': 414,\n", + " 'b': 5753,\n", + " 'R': 489,\n", + " 'E': 23,\n", + " '!': 1083,\n", + " ':': 1152,\n", + " 'ć': 1956,\n", + " '.': 2380,\n", + " 'D': 552,\n", + " 'J': 729,\n", + " 'C': 556,\n", + " 'h': 3915,\n", + " '(': 76,\n", + " 'f': 386,\n", + " ';': 1445,\n", + " 'ń': 651,\n", + " ')': 76,\n", + " 'Z': 785,\n", + " 'Ś': 71,\n", + " 'U': 184,\n", + " 'F': 47,\n", + " 'é': 43,\n", + " '?': 441,\n", + " '…': 157,\n", + " '«': 540,\n", + " 'H': 309,\n", + " '»': 538,\n", + " 'Ó': 13,\n", + " 'Ł': 24,\n", + " 'x': 3,\n", + " 'v': 5,\n", + " '*': 150,\n", + " 'à': 1,\n", + " 'Ź': 4,\n", + " 'V': 3,\n", + " '/': 19,\n", + " 'Ć': 1,\n", + " 'q': 2,\n", + " '1': 4,\n", + " 'æ': 2,\n", + " '6': 1,\n", + " '0': 1})" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from collections import Counter\n", + "\n", + "c = Counter(get_characters(pan_tadeusz))\n", + "\n", + "c" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Napiszmy pomocniczą funkcję, która zwraca **listę frekwencyjną**.\n", + "\n", + "Counter({' ': 63444, 'a': 30979, 'i': 29353, 'e': 25343, 'o': 23050, 'z': 22741, 'n': 15505, 'r': 15328, 's': 15255, 'w': 14625, 'c': 14153, 'y': 13732, 'k': 12362, 'd': 11465, '\\r': 10851, '\\n': 10851, 't': 10757, 'm': 10269, 'ł': 10059, ',': 9130, 'p': 8031, 'u': 7699, 'l': 6677, 'j': 6586, 'b': 5753, 'ę': 5534, 'ą': 4794, 'g': 4775, 'h': 3915, 'ż': 3334, 'ó': 3097, 'ś': 2524, '.': 2380, 'ć': 1956, ';': 1445, 'P': 1265, 'W': 1258, ':': 1152, '!': 1083, 'S': 1045, 'T': 971, 'I': 795, 'N': 793, 'Z': 785, 'J': 729, '—': 720, 'A': 698, 'K': 683, 'ń': 651, 'M': 585, 'B': 567, 'O': 567, 'C': 556, 'D': 552, '«': 540, '»': 538, 'R': 489, '?': 441, 'ź': 414, 'f': 386, 'G': 358, 'L': 316, 'H': 309, 'Ż': 219, 'U': 184, '…': 157, '\\*': 150, '(': 76, ')': 76, 'Ś': 71, 'F': 47, 'é': 43, '-': 33, 'Ł': 24, 'E': 23, '/': 19, 'Ó': 13, '8': 10, '9': 8, '2': 6, 'v': 5, 'Ź': 4, '1': 4, '3': 3, 'x': 3, 'V': 3, '7': 2, '4': 2, '5': 2, 'q': 2, 'æ': 2, 'à': 1, 'Ć': 1, '6': 1, '0': 1})\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "OrderedDict([(' ', 63444),\n", + " ('a', 30979),\n", + " ('i', 29353),\n", + " ('e', 25343),\n", + " ('o', 23050),\n", + " ('z', 22741),\n", + " ('n', 15505),\n", + " ('r', 15328)])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from collections import Counter\n", + "from collections import OrderedDict\n", + "\n", + "def freq_list(g, top=None):\n", + " c = Counter(g)\n", + "\n", + " if top is None:\n", + " items = c.items()\n", + " else:\n", + " items = c.most_common(top)\n", + "\n", + " return OrderedDict(sorted(items, key=lambda t: -t[1]))\n", + "\n", + "freq_list(get_characters(pan_tadeusz), top=8)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_6969/6903746.py:14: UserWarning: Glyph 13 (\r", + ") missing from current font.\n", + " plt.savefig(fname)\n" + ] + }, + { + "data": { + "text/plain": [ + "'02_Jezyki/pt-chars.png'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/lib/python3.10/site-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 13 (\r", + ") missing from current font.\n", + " fig.canvas.print_figure(bytes_io, **kw)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuEAAADCCAYAAADn5xwjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAsGElEQVR4nO3de/wVVb3/8ddbQMULXhBNQf1q0kU9pUJm2U2pI5WFdjSxY2JRpFnasX6G1TnZhdLudtEyMdG8cSiTY2oZaFqRiooB4oUUlTTBO2qo4Of3x1pbhs3s/d3fL9+9v7f38/HYjz2zZtbMmtlrz17z2WtmFBGYmZmZmVnrbNDdBTAzMzMz62/cCDczMzMzazE3ws3MzMzMWsyNcDMzMzOzFnMj3MzMzMysxdwINzMzMzNrsYHdXYDusM0220RbW1t3F8PMzMzM+rBbbrnl0YgYVjatXzbC29ramDt3bncXw8zMzMz6MEn315rm7ihmZmZmZi3mRriZmZmZWYu5EW5mZmZm1mJuhJuZmZmZtZgb4WZmZmZmLdYv747SXdom/3adtCWnvbcbSmJmZmZm3cmRcDMzMzOzFnMj3MzMzMysxdwINzMzMzNrMTfCzczMzMxarKmNcElbSpoh6U5JiyS9SdLWkq6RdE9+36ow/ymSFku6S9JBhfRRkubnaT+UpJy+kaRLc/qNktqauT1mZmZmZl2h2ZHwM4CrI+I1wOuBRcBkYFZEjARm5XEk7Q6MB/YAxgJnShqQl3MWMAkYmV9jc/pE4ImI2A34PnB6k7fHzMzMzGy9Na0RLmkI8DZgKkBEvBARTwLjgGl5tmnAIXl4HHBJRDwfEfcBi4F9JW0PDImIORERwPlVeSrLmgGMqUTJzczMzMx6qmZGwncFlgO/kHSbpHMkbQpsFxEPA+T3bfP8w4EHC/mX5rThebg6fa08EbEKeAoY2pzNMTMzMzPrGs1shA8E9gHOioi9gWfJXU9qKItgR530ennWXbg0SdJcSXOXL19epxhmZmZmZs3VzEb4UmBpRNyYx2eQGuWP5C4m5Pdlhfl3LOQfATyU00eUpK+VR9JAYAvg8bLCRMTZETE6IkYPGzZsPTfNzMzMzKzzmtYIj4h/Ag9KenVOGgPcAcwEJuS0CcDleXgmMD7f8WQX0gWYN+UuKysk7Zf7ex9dlaeyrMOA2bnfuJmZmZlZjzWwycv/NHChpA2Be4GPkBr+0yVNBB4ADgeIiIWSppMa6quA4yNidV7OccB5wGDgqvyCdNHnBZIWkyLg45u8PWZmZmZm662pjfCImAeMLpk0psb8U4ApJelzgT1L0leSG/FmZmZmZr2Fn5hpZmZmZtZiboSbmZmZmbWYG+FmZmZmZi3mRriZmZmZWYu5EW5mZmZm1mJuhJuZmZmZtZgb4WZmZmZmLeZGuJmZmZlZi7kRbmZmZmbWYm6Em5mZmZm1mBvhZmZmZmYt5ka4mZmZmVmLuRFuZmZmZtZiboSbmZmZmbWYG+FmZmZmZi3mRriZmZmZWYs1vREuaYmk+ZLmSZqb07aWdI2ke/L7VoX5T5G0WNJdkg4qpI/Ky1ks6YeSlNM3knRpTr9RUluzt8nMzMzMbH20KhJ+QETsFRGj8/hkYFZEjARm5XEk7Q6MB/YAxgJnShqQ85wFTAJG5tfYnD4ReCIidgO+D5zegu0xMzMzM+u07uqOMg6YloenAYcU0i+JiOcj4j5gMbCvpO2BIRExJyICOL8qT2VZM4AxlSi5mZmZmVlP1IpGeAC/l3SLpEk5bbuIeBggv2+b04cDDxbyLs1pw/NwdfpaeSJiFfAUMLS6EJImSZorae7y5cu7ZMPMzMzMzDpjYAvWsX9EPCRpW+AaSXfWmbcsgh110uvlWTsh4mzgbIDRo0evM93MzMzMrFUaioRL2j9fQHm3pHsl3Sfp3kbyRsRD+X0ZcBmwL/BI7mJCfl+WZ18K7FjIPgJ4KKePKElfK4+kgcAWwOONlM3MzMzMrDvUbIRLOlhSpcvHVOB7wFuANwCj83tdkjaVtHllGPh3YAEwE5iQZ5sAXJ6HZwLj8x1PdiFdgHlT7rKyQtJ+ub/30VV5Kss6DJid+42bmZmZmfVI9bqj3A38TNLXgKci4qpOLH874LJ8neRA4KKIuFrSzcB0SROBB4DDASJioaTpwB3AKuD4iFidl3UccB4wGLgqvyCdIFwgaTEpAj6+E+U0MzMzM2uZmo3wiLhb0jhgN+BaSd8Gfg08X5jn1noLj4h7gdeXpD8GjKmRZwowpSR9LrBnSfpKciPezMzMzKw3qHthZo5C3yXpjTlpdHEycGCzCmZmZmZm1lc1dHeUiDig2QUxMzMzM+svGr07ynaSpkq6Ko/vnvtzm5mZmZlZBzX6sJ7zgN8BO+Txu4HPNKE8ZmZmZmZ9XqON8G0iYjrwErz8ZMrV9bOYmZmZmVmZRhvhz0oaSn4SpaT9SI+HNzMzMzOzDmr0sfUnkR6K80pJfwaGkR6MY2ZmZmZmHdTo3VFulfR24NWAgLsi4sWmlszMzMzMrI+q2wiXdGBEzJb0gapJr5JERPy6iWUzMzMzM+uT2ouEvx2YDbyvZFqQnqBpZmZmZmYd0N4TM7+c3z/SmuKYmZmZmfV9jT6sZ6ikH0q6VdItks7Id0sxMzMzM7MOavQWhZcAy4H/IN0VZTlwabMKZWZmZmbWlzV6i8KtI+JrhfGvSzqkCeUxMzMzM+vzGo2EXytpvKQN8uuDwG+bWTAzMzMzs76q0Ub4J4CLgBfy6xLgJEkrJD1dL6OkAZJuk3RFHt9a0jWS7snvWxXmPUXSYkl3STqokD5K0vw87YeSlNM3knRpTr9RUluHtt7MzMzMrBs01AiPiM0jYoOIGJhfG+S0zSNiSDvZTwQWFcYnA7MiYiQwK48jaXdgPLAHMBY4U9KAnOcsYBIwMr/G5vSJwBMRsRvwfeD0RrbHzMzMzKw7NRoJR9JWkvaV9LbKK6d/sk6eEcB7gXMKyeOAaXl4GnBIIf2SiHg+Iu4DFgP7StoeGBIRcyIigPOr8lSWNQMYU4mSm5mZmZn1VA1dmCnpY6SI9ghgHrAfMEfSHcBo4MwaWX8AnAxsXkjbLiIeBoiIhyVtm9OHA38tzLc0p72Yh6vTK3kezMtaJekpYCjwaCPbZWZmZmbWHRqNhJ8IvAG4PyIOAPYm3abwC6yJSq9F0sHAsoi4pcF1lEWwo056vTxl5Zkkaa6kucuXL2+wSGZmZmZmXa/RRvjKiFgJ6WLIiLgTeHVEPB0R/6yRZ3/g/ZKWkC7kPFDSL4FHchcT8vuyPP9SYMdC/hHAQzl9REn6WnkkDQS2AB4vK0xEnB0RoyNi9LBhwxrcbDMzMzOzrtdoI3yppC2B3wDXSLqcNQ3hUhFxSkSMiIg20gWXsyPiKGAmMCHPNgG4PA/PBMbnO57sQroA86bcdWWFpP1yf++jq/JUlnVYXkdpJNzMzMzMrKdoqE94RByaB0+VdC0p4nxVJ9d5GjBd0kTgAeDwvI6FkqYDdwCrgOMjYnXOcxxwHjA4r7ey7qnABZIWkyLg4ztZJjMzMzOzlmn0wswLIuLDABHxx0oa8OFG8kfEdcB1efgxYEyN+aYAU0rS5wJ7lqSvJDfizczMzMx6i0a7o+xRHMn37x7V9cUxMzMzM+v76jbC8xMsVwCvk/R0fq0gXUx5eb28ZmZmZmZWrm4jPCK+GRGbA9+OiCH5tXlEDI2IU1pURjMzMzOzPqXR7ihXSNoUQNJRkr4naecmlsvMzMzMrM9qtBF+FvCcpNeTnoB5P+nx8WZmZmZm1kGNNsJX5ftvjwPOiIgzWPtR9GZmZmZm1qCGblFIeljOKcBRwNvy3VEGNa9YZmZmZmZ9V6OR8COA54GJ+TH1w4FvN61UZmZmZmZ9WKOR8MOAX0TEEwAR8QDuE25mZmZm1imNRsJfAdwsabqksZLUzEKZmZmZmfVlDTXCI+JLwEhgKnAMcI+kb0h6ZRPLZmZmZmbWJzUaCSffHeWf+bUK2AqYIelbTSqbmZmZmVmf1FCfcEknABOAR4FzgP8XES9K2gC4h3TvcDMzMzMza0CjF2ZuA3wgIu4vJkbES5IO7vpimZmZmZn1XY12RxHwqsqj64siYlHXFsnMzMzMrG9rtBF+H3AkMFfSTZK+K2lcE8tlZmZmZtZnNXp3lHMj4qPAAcAvgcPze02SNs4N9tslLZT0lZy+taRrJN2T37cq5DlF0mJJd0k6qJA+StL8PO2HlVskStpI0qU5/UZJbR3eA2ZmZmZmLdbohZnnALsDjwA3kB7ec2s72Z4HDoyIZyQNAv4k6SrgA8CsiDhN0mRgMvB5SbsD44E9gB2AP0h6VUSsBs4CJgF/Ba4ExgJXAROBJyJiN0njgdNJT/fsVdom/7Y0fclp721xSczMzMysFRrtjjIUGAA8CTwOPBoRq+pliOSZPDoovwIYB0zL6dOAQ/LwOOCSiHg+Iu4DFgP7StoeGBIRc/JtEs+vylNZ1gxgjB8kZGZmZmY9XaPdUQ6NiDcC3wK2BK6VtLS9fJIGSJoHLAOuiYgbge0i4uG83IeBbfPsw4EHC9mX5rThebg6fa08+aTgKdIJQ1lZJkmaK2nu8uXL291mMzMzM7NmabQ7ysHAW4G3kR7SM5vULaWu3JVkL0lbApdJ2rPeasoWUSe9Xp6yspwNnA0wevTo0nnMzMzMzFqh0fuEvxu4HjgjIh7q6Eoi4klJ15H6cj8iafuIeDh3NVmWZ1sK7FjINgJ4KKePKEkv5lkqaSCwBam7TJ9R1l/cfcXNzMzMerdGu6McHxGXdqQBLmlYjoAjaTDwTuBOYCbp6Zvk98vz8ExgfL7jyS7ASOCm3GVlhaT9cn/vo6vyVJZ1GDA79xs3MzMzM+uxGo2Ed8b2wDRJA0iN/ekRcYWkOcB0SROBB0i3OyQiFkqaDtwBrAKOz91ZAI4DzgMGk+6KclVOnwpcIGkxKQI+vonbY2ZmZmbWJZrWCI+IvwF7l6Q/BoypkWcKMKUkfS6wTn/yiFhJbsSbmZmZmfUWjd6i0MzMzMzMukijd0cZCXyT9MCejSvpEbFrk8plZmZmZtZnNRoJ/wXpqZWrSI+uPx+4oFmFMjMzMzPryxpthA+OiFmAIuL+iDgVOLB5xTIzMzMz67savTBzpaQNgHskfQr4B2uedGlmZmZmZh3QaCT8M8AmwAnAKODDrLk/t5mZmZmZdUBDkfCIuBkgR8NPiIgVTS2VtctP0jQzMzPrvRqKhEsaLWk+8DdgvqTbJY1qbtHMzMzMzPqmRvuEnwt8MiJuAJD0FtIdU17XrIKZmZmZmfVVjfYJX1FpgANExJ8Ad0kxMzMzM+uEupFwSfvkwZsk/Qy4GAjgCOC65hbNzMzMzKxvaq87ynerxr9cGI4uLot1EV+0aWZmZtaz1W2ER8QBrSqINZ8b52ZmZmY9Q6N3R1kt6TRJKqTd2rximZmZmZn1XY1emLkwz/t7SVvnNNWZ38zMzMzMami0Eb4qIk4Gfg7ckO8RXrdPuKQdJV0raZGkhZJOzOlbS7pG0j35fatCnlMkLZZ0l6SDCumjJM3P035YichL2kjSpTn9RkltHdx+MzMzM7OWa7QRLoCImA58kHSP8F3bybMK+GxEvBbYDzhe0u7AZGBWRIwEZuVx8rTxwB7AWOBMSQPyss4CJgEj82tsTp8IPBERuwHfB05vcHvMzMzMzLpNo43wj1UGImIh8BbghHoZIuLhiLg1D68AFgHDgXHAtDzbNOCQPDwOuCQino+I+4DFwL6StgeGRMSciAjg/Ko8lWXNAMYU+62bmZmZmfVEjTbC95O0ZWF8ALBZoyvJ3UT2Bm4EtouIhyE11IFt82zDgQcL2ZbmtOF5uDp9rTwRsQp4ChjaaLnMzMzMzLpDo43wj0fEk5WRiHgC+HgjGSVtBvwK+ExEPF1v1pK0qJNeL09ZOSZJmitp7vLly+sV2czMzMysqRpthG9QdXvCAcCG7WWSNIjUAL8wIn6dkx/JXUzI78ty+lJgx0L2EcBDOX1ESfpaeSQNBLYAHi8rS0ScHRGjI2L0sGHD2iu6mZmZmVnTNNoI/x0wXdIYSQeSHl9/db0MudE+FVgUEd8rTJoJTMjDE4DLC+nj8x1PdiFdgHlT7rKyQtJ+eZlHV+WpLOswYHbuN25mZmZm1mO199j6is8DnwCOI3UB+T1wTjt59gc+DMyXNC+nfQE4jdSgnwg8ABwO6YJPSdOBO0h3Vjk+IlbnfMcB5wGDgavyC1Ij/wJJi0kR8PENbo+ZmZmZWbdpqBEeES+RbhN4VqMLjog/UfuBPmNq5JkCTClJnwvsWZK+ktyINzMzMzPrLeo2wiVNj4gPSppPyQWPEfG6ppXMzMzMzKyPai8SfmJ+P7jZBTEzMzMz6y/qNsIL9/O+vzXFMTMzMzPr+9rrjrKC8vtuC4iIGNKUUpmZmZmZ9WHtRcI3b1VBzMzMzMz6i0bvE25mZmZmZl2k0fuEWx/XNvm366QtOe29HUqvTDMzMzOz+hwJNzMzMzNrMUfCrcvVip6bmZmZWeJGuLWMG+dmZmZmiRvh1iO4gW5mZmb9ifuEm5mZmZm1mBvhZmZmZmYt5ka4mZmZmVmLuU+49WjuK25mZmZ9kSPhZmZmZmYt1tRIuKRzgYOBZRGxZ07bGrgUaAOWAB+MiCfytFOAicBq4ISI+F1OHwWcBwwGrgROjIiQtBFwPjAKeAw4IiKWNHObrGfwEzvNzMysN2t2d5TzgB+TGsoVk4FZEXGapMl5/POSdgfGA3sAOwB/kPSqiFgNnAVMAv5KaoSPBa4iNdifiIjdJI0HTgeOaPI2WQ9XqwtLva4t7vZiZmZmrdTU7igRcT3weFXyOGBaHp4GHFJIvyQino+I+4DFwL6StgeGRMSciAhSg/6QkmXNAMZIUjO2xczMzMysq3THhZnbRcTDABHxsKRtc/pwUqS7YmlOezEPV6dX8jyYl7VK0lPAUODR6pVKmkSKprPTTjt12cZY3+bouZmZmTVDT7owsyyCHXXS6+VZNzHi7IgYHRGjhw0b1skimpmZmZmtv+6IhD8iafscBd8eWJbTlwI7FuYbATyU00eUpBfzLJU0ENiCdbu/mLWUI+RmZmbWnu6IhM8EJuThCcDlhfTxkjaStAswErgpd11ZIWm/3N/76Ko8lWUdBszO/cbNzMzMzHqsZt+i8GLgHcA2kpYCXwZOA6ZLmgg8ABwOEBELJU0H7gBWAcfnO6MAHMeaWxRelV8AU4ELJC0mRcDHN3N7zMzMzMy6QlMb4RFxZI1JY2rMPwWYUpI+F9izJH0luRFv1tP53uZmZmZW4cfWm/UA7kduZmbWv/Sku6OYmZmZmfULjoSb9WCOkJuZmfVNboSb9VJuoJuZmfVe7o5iZmZmZtZijoSb9TH1IuSOnpuZmfUMjoSbmZmZmbWYI+FmVjNC7nubm5mZNYcj4WZmZmZmLeZIuJl1ivuXm5mZdZ4j4WZmZmZmLeZIuJl1Kd+dxczMrH2OhJuZmZmZtZgj4WbW7Xx3FjMz62/cCDezXsldW8zMrDfrE41wSWOBM4ABwDkRcVo3F8nMuokb52Zm1hv0+ka4pAHAT4B3AUuBmyXNjIg7urdkZtbTdKTbS3sXk3amC41PEMzMrKLXN8KBfYHFEXEvgKRLgHGAG+Fm1it05UlAZ/J05sShL63fzKw79IVG+HDgwcL4UuCN3VQWMzPrhXrjiYP/pTHr3RQR3V2G9SLpcOCgiPhYHv8wsG9EfLpqvknApDz6auCulhZ0XdsAj3ZBek/O09/X35k83b3+zuTp7+vvTJ7uXn9n8vT39XcmT3evvzN5+vv6O5Onu9ffmTz9ff2ttHNEDCudEhG9+gW8CfhdYfwU4JTuLlcD5Z7bFek9OU9/X7/L3D/W7zL3j/W7zP1j/S5z/1h/T3n1hYf13AyMlLSLpA2B8cDMbi6TmZmZmVlNvb5PeESskvQp4HekWxSeGxELu7lYZmZmZmY19fpGOEBEXAlc2d3l6KCzuyi9J+fp7+vvTJ7uXn9n8vT39XcmT3evvzN5+vv6O5Onu9ffmTz9ff2dydPd6+9Mnv6+/h6h11+YaWZm1p9J+ktEvLm7y1FN0kbA1cD4iHiku8vTCEmvB/4HOCy6oYEkaQPgt8BxEbGk1evvyfJn86WIOLy7y9JV+kKfcDPrhSQdJGmvkvSBkq6V9OoOLOuNkt7epQW0hkk6QtJO3V2O7iTpaEk7dMe6e2IDPHsVMLmjDXBJ+0t6a5PK1J5XAhO7owGe7Qx8qz82wCUdIOkNdWbZjTV3uesT3AjvJST9pbvL0F0ktUla0M48p0r63HquZ0tJn+xEvmfWZ71dsY5i/Whkf3VRmRr5XK6UtGVJ+oHAQcDtJdlOAX4QEQ3dRlTS60gH5jkNzLta0jxJCyT9r6QfSfpMYfrvJJ1TGP+upJPaWWZp3ZP0RUkLJf0tr/Nd+X2epH9K+kdhfMOcZ53PWVJI+m5h/HN5nYcW8ldeL0l6d2HeDtXNvMyQ9JqyZUh6j6R7ig1uSaOBgyPigUJ5LyhMHyhpuaQrCvv/dkm3SnpzYb4Rki7Py/+7pDMK++UVki7J6XfkelVZ1sK8vJNyFLFTqurG/xXrraTXSPqLpPmS/ihpm6q87wD2j4iHqtJPkLRI0oV5fDtJF0m6V9ItkuZIOrRsX9dKk3SMpB/X+PxXSzqy7LvZ3jFSkirzFcc7S9IXgUuAn+eyvTGnr64qc1tVvr2BjwB/bXA9pXW8ZD2Tq6b/TNL+hfERki4HTgduqap//5Xr2QJJF0vauJDvxJy+UPlYImlHpUDCopx+YgPbcaikecBlwPeL32dJ50paVvKZbizpplz/F0r6SjvruE7SQVVpn5F0pqRXV+2vp7X2sXGApNskXVGVf0n+XsyTNLe97WzHbcAUSZtWreMVSg9i/Bbw5/z9f1WetqWkGZLuzPv7TYV8YyXdJWlx9effY3T37Vn86l0vQMAGLV5nG7CgnXlOBT7X7PXUyPdMC/ZBw+vo7Ha0an9156u4H4ELgWnA9Dy+AXALMKcwzxzgje0sc526R7p16hxgozy+DbBDvTy1PmdgJXAfsE0e/xxwasl8k4A/Fr+fHa2bwHTghuLyK8sAxgB/B15ZleeDwKbF+Uk/poPz+LuBecAVVfv/IOCPeVjATcBH8vgAYCrw7TxtDnBsIe9ewHOF8W2BPwBf6aK6MQ34YmH8NcCuefibpL/Ei3k/VPmsq9LvBHYpbGP1duwMfLqdz/+ZqvFjgB+XzPfRXH83LPtu1qpzhelHAScDp+X3o0rmGZzr2IBC2obA9cDARup/R+tkRz63RtIL0+dVtqOd+jec9P2r1OfpwDF5eE9gAbAJ6Rq7PwAjge2BffI8mwN3A7t3cLte/j4DbwP2KflMBWyWhwcBNwL71VnmJ4BfVKX9FXhrVdoA4J+k+1tX0k4CLgKuqJp3CfnY1EWf5x7A6KptLPv+vzUPTwM+VqiLWxa24e/Arjn99o5+Bq14ORLeg0j6TY6OLFR6uFBxWlmE5Kh8Fjwvn9UPKEw7KZ+dLyicnR9bOMu9T9K1hfnb8lnkz/P6fy9pcNW0M4FbgR1z+qaSfpvPwhco/SV9sqQT8vTvS5qdh8dI+mUePlopOni7csRM0teK0QJJUyrLqdrmXfPZ+BuUIo13SfoD6QFMlXlOlXS1UuTtijx8agMfwWnAK/P++Xbe7jslnZO370JJ75T0Z6Vo3b6Fdb6ygeVTWOa0vA9mSNpEVZEr5WhnI8vM81fXj4HV6yjMW1pvatU/Sf+dy3yNUhSoGE0bUKPOFOvaYkm3FZa3Tt3M6evUpwa2e526VDX9StXuInADEEAlGrsH6Qd1haStlPqzvpbUoOyo7YFHI+J5gIh4NKqipB2winRx0X/VmkEpKvQ/wIcj4qXOrETSZsD+wETSrV6L094K/Bx4b0T8Pae1SVoEvAu4qfj5A1cBlcctHglcXLLKIcATefhAYGVE/AIgIlaTtvejwFjgxYj4aSVjRMwDXiqMLyM1Wj4lrV8EN5tDanxVln9nRNybRzcmnRi9XM9JjdY7q46pPyU1AGZK+q+8jS9Ubcf9EfGj9S2spJHAN4AjI+KFziwjIn5Jevr0ycADebzaR4Ff58+nku8FYBZQ/L52qv7XOjY1kO81kr7cyLx5/tcCdxe2o17925jUwB4saSCpwV3ZltcCf42I5yJiFanRfGhEPBwRt+ZlrQAWkeuTpNNV+Mc1/159tqp8a32fI+J64PHq7YikcuwflF+Rfx//phQp3zQfn/cEZgAH52MbSv9C7AD8qWrRY4C/R8T9eb4RpO/zOTSo+Ptc+d0o/MbMzb8DX5N0Yz5+f0LSb4DzgWmF36ADKPn+R8QNkoaQTlCm5vQXIuLJPNu+wOKIuDfX0UuAcY2Wv2W6+yzArzUvYOv8PpjUGBhamFYdDXkt8H/AoDx+JnB0Hh4FzAc2BTYDFgJ7F/IOIjVA3ldIayP92O+Vx6eTIyF52ktUnWED/wH8vDC+BbAf8L95/AZSdGEQ8GXSWfgepKeVblO1zW3ArXl4A9IZ7NDCtAWkhvZtpLPgyjZuQvoxX0yO8pAiPlsWyrUlJZHDkv3fRiHSUNgn/8aaKOm5pDPzccBv8me1mtTvsZHPuI3U8Ns/j59LimxWr3utaGf151+y3GfaW0cD9Wad+geMJkWMBpMiOvcUllWzzhTKMoB0+9APtVc3KalP7WxzaV1qZD+RflQvB44jRXJ2ItXPY4GvAe8hNUivL+S9kkI0u5B+KutGwjfL++3uvI/f3l6eWp8zKbI8JJdzi5K6MQiYS7r4rd3l1dk3RwFT8/BfWBPJe5HUAHhdSV1e5/PP5X0d6Qd/47wf3kGKhK/O43cCTwGjct4TgO+XlOk20slx2bSyffUEsF1VGTcGtgaG5bTXFN9L6sYA4H+BsSXLP4jUoNqyKn2dY2pOX1Kon6Xb2MA2VfZZ5fUAhUg4qS7fBHy0ars7Ggn/EGtHwj9UMs9fgLaS9NcDVzZS/6u257JCes1jUzv7bBXppG94O/vtiMK0k6r2V7369zrgRFK9Xg5cWFXmu0nHyk1IJ28/KvmePAAMyeN7k/8ByuN3ADu1930u+0wL9XVeLt/phfSvA98BfkLhAYakiz7H5eHJwLdLlnku8KnC+AzSsfsdrBsJv48UnLsFmJTTSn+fWfMbM4j0jJcpeXzDPF45lhR/g2p+b0htgZuA8/JndQ75XzngMOCcwrwfpuQfpO5+ORLes5wg6XbS30M7kv7WqmUMqaLfnCMxY0hRF4C3kA5uz0Y6S/41ULzI5QxgdkT8X9Uy74sUYYL0hWorTLs/Iqr76M0H3pnP7N8aEU/lfKMkbQ48Tzoojc7rv4EUcZgREY8CRMTj+X0J8JhSf8B/B26LiMcK6xpGajQdlcv41ryNz0XE0zTvAU33RcT8SNHFhcCsSN/o+aT9cwbwr4g4rQPLfDAi/pyHf0n6vLparXXUqzdl9e8twOUR8a9IEZ2O1BlI/SsXRMRFebxe3SyrT/WU1qV2DM7bPZf0wzgV+DMpGv5mUn2dUxh/ua99RLwnGoxm520bRYrOLgculXRMI3lrLO9pUoRonX+HSCcNCyPiks4uPzuSFC0ivx+Zh18k7YeJJXlKP/+I+FsePpK1bx/7r4jYKyJeQ4pwn58j1yKdOFarlV7Ly1FwpQt7LwBeQepnOyhPOlvpguCvS3pXIW+lbjxGarRfs9aCU3/zqcD7Y020raLWMbV2QaWf5Ajgze3MWtlne0XEXqQIadFXgSURcW4hrdY+q7cvL46Ib5Eiwt+i6t8Lpf7Ru0b5BYMLgJcvqGun/he359DCMuodm9YhaQNJ3wBeIJ38/KNqlrX2W0RcWph2EOmuLS8vjtr1b3NS0GUXUtR4U0lH5e1cRDrGXZOXdzvppKBSxs2AXwGfyd9hIuI2YFtJOyjd7eOJyNdTZB36PkfE6lwvRgD75og3pHrxLtLv77cKWS5mzT9d4yn/nN9POhFF0sHAsoi4pUYR9o+IfUjdzo6X9DZq/z5/Mn+2t5AugD0ij99E6rL02Q60gSCdgO4DnBURewPPkk4soHAsKOjIsaQl+sR9wvsCpQt73gm8KSKek3QdKYJTMwswLSJOqTGt1nqOIfVD/FTJ5OcLw6tJZ6MVz1bPHBF3SxpFihp+U9LvI+KrkpaQLqz5C/A30t9JryRFkN5J7S/COaT+jq8gnYkXPUX6q3R/UmOYOsvpSsV98lJh/CVSH8hJkj7UwWVWlztIB+7iSXG9z76z64Aa9aZO/Wvvr/2adSbvl71IP3gvJ9cscI36VGfdHW2gQf5hXmsh6aLWN5P+8VhAqmefBZ5m3XpYVu5Ta6SvBq4DrpM0H5hAith01g9IEadfFMr+DtI/CPvUyyjpeODjdWYZQPqnaU9JkcdD0smkuv5B4A+SvhAR3yjkq3fMmEmKxL2DFNFaS0TMUbrAcRjpO/0fVWUeQvohvoE1P6z1tnHXXIZlSheOnkfqTjCd1Ge0cgJ1GOlfrE+TLgJ7ISL+SK4bkrYgRe2PB35YWMUOwFMRcU/Veo+h9jG1aK1tjIjj8/Z3+mI2pTsCHUmKrhY9BmxVlbY1KWpZKgcXXq7PlfGCbYAna+RdLekFSZvnk/XO1P96v2nVdfg9EfGQpFnACZG6gjREqWvellUn1PXqXxvpZHN5Tv816Xjxy7ydU8ndIfJJwdI8PIjUAL8wIn5dVYwZpHr4Ctac+Db8fS4TEU/m4/ZY0nFsa9I/EoNIx/LKb/hvgO9J2ofUz/3WqkW9m/SvdOWONvsD75f0nrycIZJ+GRGVE5GH8vsySZeRuoGsYt1j866kfxXenH9jfgVcFBG/Kmz711n3N2ghaV+VWQosjYgb8/gM1hwrlpK7zmYjWNONqMdwJLzn2IJ0Rvyc0p0J9mtn/lnAYZK2BZC0taSd87TrgUOU+hpvChwK3JAbOJ8jRZM71W+0SKmv7XOR+g5+hzUHjuvzeq4n/YAeC8zLB/VZwAclDa2Uu7DIy0gHkDeQujAUvQAcAhydG3fXA4dKGpyj7u9b3+0BVpCiHl1G0ixJw6uSd9KaK7iPJPXHe4QUHRma++sdvJ6rLlsH1K43terfn4D3KfUt3Iw1/Xzrygf4L5H+Ul1dmFRaN3OeWvWplnp1qVKOsv1f7c+k/f14jio9TurCVLm4rMOU7jRQjOLsBdzfmWVV5HJNJ0ekJW1FapAfXWn41Mn7k6qo4Fov4MekC7Z2joi2iNiR1GB7S87/HGkf/aeksoh4mXOBr0bE/LKJuZ4NIDUYZwGbSDo6TxsAfJfUaLsK2EjSxwt530Dh90vSMOCnpL+bg9R95klSJG0x8MbCql9L6tO9Calb1JKqffUU6R+Hz+WGVMUTpJOz4jZ05Jg6G9hY0nGFtE1qzdye/PmfR/r8nyxOy5HohyWNyfNuTTq2Vvf97Yh/UT84sBFr+sp3pv7X+02rrsOVht+sjm8GBwDXlqy7Vv1bDOyXj1kiRegXVTIWyrsT8AHg4jzfVGBRRHyvpAyXkKLQh5Eajh36PhfWPUz5Lj5K12O8k9TVC9J1JP9NugD99EqeXDeuI30/y67VWOsajog4JSJGRERbLvPsSgNcqb/55pVh0r/YCyj/fR5MOol9Ln+u+wCfyL93kL6XT5f8Bs2m5Psv6e0R8U/gQa25ne0YUvceSN1bRkraRSm6P57m/WPeaY6E9xxXA8dK+hupn2vd2zNFxB2SvgT8Xulv0hdJkZv7I+JWSeeR/uKB1C/qNkm/IJ0dX5uOEcyNiI+tR5n/Dfi2pJfy+is/LjcAXyTdZeJZSStzGhGxUNIU4I+SVpP6cR2Tp72gdGHTk1UNt8o2P6v019g1pDPmS0l94e6vLH99RMRjShddLiD98P9kfZaXP5fdWPeCmkXABEk/I/WxPisiXpT0VdLV7fex5kDacPHbWwesU282JvXF+xA16l9E3CxpJulv1vtJUbv2uolAijJuRYqeAtwVEUfUqpt5uFZ9AtJFlhQimvXqUp6/1v6vNp8U5buoKm2zyF1dytZfSD+WdPJwfiF5M+BH+QdyFemHvCvub/td1kRcjyXdFeQsrX0t4jcj4lKli8iepzFHkvoCF/2KVDeAdBIgaSxwvaRHKb+9JIX5l5K6aRRVunxAinxOqHzXlW7Vd6ak/yY1sK8EvhARkaf9QOk2YytJDeeN8rIGkfbxBcD38rqfkfQBUmNiAvAdSddHuu3lZFL3gnNJ/YTXiY7l4+XtpB/uygW/WwAfY+1uDJ+iwWNq3o5DSLefO5nUTeNZ4POF2TaRtLQwXtaAqzgW2I5Uz4rpP46Ic4CjgZ9oze0tnyM1pCt1loj4aT75PSci3lNnXUTEE0q3qds4IlYWp+UT4eUR8WJO6nD9r/ebVi8fJfssN3yLdQ3g6oiYTIr0zqhad9Spf89LmkH6F2oV6ThTfArjr/L2vwgcn/fTW0h9kOcXyvCFSE/3rhy7Ngf+EREP5+k1v8+kANQ7gG3ytn45R+C3J13EOCCXeXpEXJFPJlZFxEV52l8kHRgRs/MyLyZ1Bay+AHsTUheWT5Tt6BLbAZfl8g4kRbavzsuq/n2+CxiqdDH3clKD/T/zPnoBeBR4seQ3qNb3/zO5DJ8GLswN7XtJ/8ITEaskfYoU0BsAnBsRlX/Reww/MdN6jHzgvRU4PKr+8u3gck4l3Wf6yTy+JalP3qnrX8oOlWNP0sU/JxXS2kgXtuxZM2PH1zOU9Pfhzu3OvHa+k4GZEXFnVfoWwDci4vg8vllu1GxCinBMinX/wuxxyvZ/f6LU3/TnEbFvuzP3UUqR7Jfya6OIWClpcET8q/LezUXsVSRNJfUd/0NV+mGkbgSfLc/Zc0i6lXTb0Rfbndm6RP5NfiYivtPdZelp3B3FegRJu5OiJbPWpwHek0TEgmY3AHMUaw6p+0ZHvUCKEL6qKn0T4A05igDpQrZ5pBOkX/WGBji0Zv/3VDnSeTGpS1C/FREvRupiFJXobaXh7QZ4p/yY9M9CtQ+xdnS4x4qIfdwAt57CkXDrc5TuwTqWNfcR3oD0V+SZ3VcqM7PeT9JHSRdQVroRbUi69uP8+jnNrJob4WZmZmZmLebuKGZmZmZmLeZGuJmZmZlZi7kRbmZmZmbWYm6Em5mZmZm1mBvhZmZmZmYt9v8BTMoyJdreKYQAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from collections import OrderedDict\n", + "\n", + "def rang_freq_with_labels(name, g, top=None):\n", + " freq = freq_list(g, top)\n", + "\n", + " plt.figure(figsize=(12, 3))\n", + " plt.ylabel('liczba wystąpień')\n", + "\n", + " plt.bar(freq.keys(), freq.values())\n", + "\n", + " fname = f'02_Jezyki/{name}.png'\n", + "\n", + " plt.savefig(fname)\n", + "\n", + " return fname\n", + "\n", + "rang_freq_with_labels('pt-chars', get_characters(pan_tadeusz))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Słowa\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Co rozumiemy pod pojęciem słowa czy wyrazu, nie jest oczywiste. W praktyce zależy to od wyboru **tokenizatora**.\n", + "\n", + "Załóżmy, że przez wyraz rozumieć będziemy nieprzerwany ciąg liter bądź cyfr (oraz gwiazdek\n", + "— to za chwilę ułatwi nam analizę pewnego tekstu…).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Ty',\n", + " 'co',\n", + " 'gród',\n", + " 'zamkowy',\n", + " 'Nowogródzki',\n", + " 'ochraniasz',\n", + " 'z',\n", + " 'jego',\n", + " 'wiernym',\n", + " 'ludem',\n", + " 'Jak',\n", + " 'mnie',\n", + " 'dziecko',\n", + " 'do',\n", + " 'zdrowia',\n", + " 'powróciłaś',\n", + " 'cudem',\n", + " 'Gdy',\n", + " 'od',\n", + " 'płaczącej',\n", + " 'matki',\n", + " 'pod',\n", + " 'Twoją',\n", + " 'opiekę',\n", + " 'Ofiarowany',\n", + " 'martwą',\n", + " 'podniosłem',\n", + " 'powiekę',\n", + " 'I',\n", + " 'zaraz']" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from itertools import islice\n", + "import regex as re\n", + "\n", + "def get_words(t):\n", + " for m in re.finditer(r'[\\p{L}0-9\\*]+', t):\n", + " yield m.group(0)\n", + "\n", + "list(islice(get_words(pan_tadeusz), 100, 130))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zobaczmy 20 najczęstszych wyrazów.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ODhYTZo00YEDByo9r/RL5gEDBuiGG25QzZo11aBBA0kqs/5R//79lZ+fr/Xr17vMwsgHDhxQ+/btHda56dixo/Lz83Xy5EkLk/1iyJAhOnv2rJYvX65q1aopPT1dycnJ5ufI399f3bt3V2lpqY4ePWpp1oMHD2rnzp36+9//Lkny9PTU/fffr//85z+W5rrUpcf7kpISzZo1Sy1atFBwcLD8/f21fv16S9fvateuncP3ZPv27fXll19q//79Lvf5v9iRI0dUXFysjh07mmNeXl667bbbXCLfb5GXl6eYmBjFxMRowoQJlma52mOsVV5++WXdcsstuvbaa+Xv769FixaVybZjxw797W9/05IlSyxZ9uLAgQMqLCxU586dy93XsmVL1ahRwxzr2LGjSktLdfDgwcqMaerUqZPOnj2rXbt2aevWrWrcuLFq166tqKgo7dq1S2fPntWWLVtUt25d3XDDDZZkBP4IT6sDAK7Mw8NDGzZsUFpamtavX6+kpCRNmzatzOkBF6Zi33rrrQ7jRUVFioyMrLS8l4qOjtbixYu1b98+VatWTc2aNVNUVJRSUlKUm5vL6YN/0MyZM7Vu3Trt3LnTpRad9/Lycti22WwqLS3V119/rZ49e+rhhx/W008/raCgIKWmpmrIkCGVfgrJ5TJeqrS0VG3atNHy5cvL7Lv22mudls8dGb9yutXl9huGYdliw3fffbfCw8O1aNEihYWFqbS0VBEREWVOD+3Zs6eWLVum7du36y9/+YslWS9V3vt24T22evHmmTNnav369Q7HptLSUg0fPlyjR48uU1+3bt3Kjuhg8eLFOn/+vK6//npzzDAMeXl5KTc3V4GBgRam+0V5x/t58+YpISFBiYmJ5tqCcXFxbnV6s5Wf/0tzSGU/O66ST/rlFPxLj6OX/uwsKSkx12x85ZVXKjNeua72GGuFVatWaezYsZo3b57at2+vgIAAPffcc2V+x77xxhsVHBys//znP+rVq5e8vb0rNaefn99l913p+9Oq79uGDRuqTp062rx5s8Pv+qGhoWrQoIH+97//afPmzS7zsxT4rVxjugDgwmw2mzp27Kjp06dr79698vb21tq1ax1qmjVrJh8fH61Zs0YZGRnmbf/+/Q6LUVe2C+tgJSYmKioqSjabTVFRUdqyZQvrX/1Bb775pmbMmKFVq1bpxhtvtDrO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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rang_freq_with_labels('pt-words-20', get_words(pan_tadeusz), top=20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zobaczmy pełny obraz, już bez etykiet.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from math import log\n", + "\n", + "def rang_freq(name, g):\n", + " freq = freq_list(g)\n", + "\n", + " plt.figure().clear()\n", + " plt.plot(range(1, len(freq.values())+1), freq.values())\n", + "\n", + " fname = f'02_Jezyki/{name}.png'\n", + "\n", + " plt.savefig(fname)\n", + "\n", + " return fname\n", + "\n", + "rang_freq('pt-words', get_words(pan_tadeusz))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Widać, jak różne skale obejmuje ten wykres. Zastosujemy logartm,\n", + "najpierw tylko do współrzędnej y.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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I2ttbc0WLVpUvebll1/OmpqasrvvvjvLsix75plnsojIli5dWr3mkUceySIi++Uvf1mH72pkiYjs9ttvrz4fznG56667sqampuzll1+uXnPLLbdk5XI56+7ursv328h+d6yyLMvmzZuXfeYzn9nje4xVPtavX59FRLZkyZIsy/xepUYHsEC2b98eTzzxRMyePXvI67Nnz46HH344p6rSsHLlyujs7Ixp06bFl770pXjhhRciIuLFF1+MdevWDRmTcrkcH//4x6tj8sQTT8SOHTuGXNPZ2RnTp0+vXvPII49ER0dHnHDCCdVrTjzxxOjo6DC278FwjssjjzwS06dPj87Ozuo1n/zkJ6NSqcQTTzxR1+9zJLn//vtjwoQJcfjhh8ef/umfxvr166ufM1b56O7ujoiIcePGRYTfq9QIgAXy+uuvR19fX0ycOHHI6xMnTox169blVNXId8IJJ8TNN98cP/3pT+P666+PdevWxUknnRQbNmyo/r3vbUzWrVsXo0aNigMPPHCv10yYMGG3rz1hwgRj+x4M57isW7dut69z4IEHxqhRo4zdOzRnzpz493//97j33nvjH//xH+Oxxx6L0047LSqVSkQYqzxkWRYXX3xxfPSjH43p06dHhN+r1LTkXQC7K5VKQ55nWbbba9TOnDlzqh/PmDEjZs2aFYcddljcdNNN1RvV38uY/O41b3e9sd03wzUuxm7fnHvuudWPp0+fHscdd1xMnTo1fvzjH8fnPve5Pb7PWNXPggUL4he/+EU89NBDu33O71UadAALZPz48dHc3Lzb//2sX79+t/9Ton7a2tpixowZsXLlyupq4L2NyaRJk2L79u2xcePGvV7z6quv7va1XnvtNWP7HgznuEyaNGm3r7Nx48bYsWOHsXuPJk+eHFOnTo2VK1dGhLEabhdeeGHceeedcd9998WUKVOqr/u9SosAWCCjRo2KmTNnxuLFi4e8vnjx4jjppJNyqio9lUolnn322Zg8eXJMmzYtJk2aNGRMtm/fHkuWLKmOycyZM6O1tXXINWvXro2nn366es2sWbOiu7s7fv7zn1evefTRR6O7u9vYvgfDOS6zZs2Kp59+OtauXVu95mc/+1mUy+WYOXNmXb/PkWrDhg2xZs2amDx5ckQYq+GSZVksWLAgbrvttrj33ntj2rRpQz7v9yoxw77shL1atGhR1tramt1www3ZM888k1100UVZW1tb9pvf/Cbv0kasSy65JLv//vuzF154IVu6dGk2d+7crL29vfp3fuWVV2YdHR3Zbbfdli1fvjz78pe/nE2ePDnr6emp/hkXXHBBNmXKlOyee+7Jnnzyyey0007LjjnmmKy3t7d6zVlnnZUdffTR2SOPPJI98sgj2YwZM7K5c+cO+/fbKDZt2pQtW7YsW7ZsWRYR2VVXXZUtW7YsW7VqVZZlwzcuvb292fTp07PTTz89e/LJJ7N77rknmzJlSrZgwYLh+8souL2N1aZNm7JLLrkke/jhh7MXX3wxu++++7JZs2Zl73vf+4zVMPvWt76VdXR0ZPfff3+2du3a6mPr1q3Va/xepUMALKB/+qd/yqZOnZqNGjUq+4M/+IPqEn3q49xzz80mT56ctba2Zp2dndnnPve5bMWKFdXP9/f3Z5dddlk2adKkrFwuZx/72Mey5cuXD/kz3nzzzWzBggXZuHHjsjFjxmRz587NVq9ePeSaDRs2ZOedd17W3t6etbe3Z+edd162cePG4fgWG9J9992XRcRuj3nz5mVZNrzjsmrVquzss8/OxowZk40bNy5bsGBBtm3btnp++w1lb2O1devWbPbs2dnBBx+ctba2Zoccckg2b9683cbBWNXf241RRGQ33nhj9Rq/V+koZVmWDXfXEQCA/LgHEAAgMQIgAEBiBEAAgMQIgAAAiREAAQASIwACACRGAAQASIwACACQGAEQACAxAiAAQGIEQACAxAiAAACJEQABABIjAAIAJEYABABIjAAIAJAYARAAIDECIABAYgRAAIDECIAAAIkRAAEAEiMAAgAkRgAEAEiMAAgAkBgBEAAgMQIgAEBiBEAAgMQIgAAAiREAAQASIwACACRGAAQASMz/DxrYP4SYQx7KAAAAAElFTkSuQmCC", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from math import log\n", + "\n", + "def rang_log_freq(name, g):\n", + " freq = freq_list(g)\n", + "\n", + " plt.figure().clear()\n", + " plt.plot(range(1, len(freq.values())+1), [log(y) for y in freq.values()])\n", + "\n", + " fname = f'02_Jezyki/{name}.png'\n", + "\n", + " plt.savefig(fname)\n", + "\n", + " return fname\n", + "\n", + "rang_log_freq('pt-words-log', get_words(pan_tadeusz))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "****Pytanie**** Dlaczego widzimy coraz dłuższe „schodki”?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Hapax legomena\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Z poprzedniego wykresu możemy odczytać, że ok. 2/3 wyrazów wystąpiło\n", + "dokładnie 1 raz. Słowa występujące jeden raz w danym korpusie noszą\n", + "nazwę *hapax legomena* (w liczbie pojedynczej *hapax legomenon*, ἅπαξ\n", + "λεγόμενον, „raz powiedziane”, żargonowo: „hapaks”).\n", + "\n", + "„Prawdziwe” hapax legomena, słowa, które wystąpiły tylko raz w *całym*\n", + "korpusie tekstów danego języka (np. starożytnego) rzecz jasna\n", + "sprawiają olbrzymie trudności w tłumaczeniu. Przykładem jest greckie\n", + "słowo ἐπιούσιος, przydawka odnosząca się do chleba w modlitwie „Ojcze\n", + "nasz”. Jest to jedyne poświadczenie tego słowa w całym znanym korpusie\n", + "greki (nie tylko z Pisma Świętego). W języku polskim tłumaczymy je na\n", + "„powszedni”, ale na przykład w rosyjskim przyjął się odpowiednik\n", + "„насущный” — o przeciwstawnym do polskiego znaczeniu!\n", + "\n", + "W sumie podobne problemy hapaksy mogą sprawiać metodom statystycznym\n", + "przy przetwarzaniu jakiekolwiek korpusu.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Wykres log-log\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jeśli wspomniany wcześniej wykres narysujemy używając skali\n", + "logarytmicznej dla ****obu**** osi, otrzymamy kształt zbliżony do linii prostej.\n", + "\n", + "Tę własność tekstów nazywamy ****prawem Zipfa****.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from math import log\n", + "\n", + "def log_rang_log_freq(name, g):\n", + " freq = freq_list(g)\n", + "\n", + " plt.figure().clear()\n", + " plt.plot([log(x) for x in range(1, len(freq.values())+1)], [log(y) for y in freq.values()])\n", + "\n", + " fname = f'02_Jezyki/{name}.png'\n", + "\n", + " plt.savefig(fname)\n", + "\n", + " return fname\n", + "\n", + "log_rang_log_freq('pt-words-log-log', get_words(pan_tadeusz))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Związek między frekwencją a długością\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Powiązane z prawem Zipfa prawo językowe opisuje zależność między\n", + "częstością użycia słowa a jego długością. Generalnie im krótsze słowo, tym częstsze.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def freq_vs_length(name, g, top=None):\n", + " freq = freq_list(g)\n", + "\n", + " plt.figure().clear()\n", + " plt.scatter([len(x) for x in freq.keys()], [log(y) for y in freq.values()],\n", + " facecolors='none', edgecolors='r')\n", + "\n", + " fname = f'02_Jezyki/{name}.png'\n", + "\n", + " plt.savefig(fname)\n", + "\n", + " return fname\n", + "\n", + "freq_vs_length('pt-lengths', get_words(pan_tadeusz))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### N-gramy\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "W modelowaniu języka często rozpatruje się n-gramy, czyli podciągi o\n", + "rozmiarze $n$.\n", + "\n", + "Na przykład *digramy* (*bigramy*) to zbitki dwóch jednostek, np. liter albo wyrazów.\n", + "\n", + "| $n$|$n$-gram|nazwa|\n", + "|---|---|---|\n", + "| 1|1-gram|unigram|\n", + "| 2|2-gram|digram/bigram|\n", + "| 3|3-gram|trigram|\n", + "| 4|4-gram|tetragram|\n", + "| 5|5-gram|pentagram|\n", + "\n", + "**Pytanie:** Jak nazywa się 6-gram?\n", + "\n", + "Jak widać, dla symetrii mówimy czasami o unigramach, jeśli operujemy\n", + "po prostu na jednostkach, nie na ich podciągach.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### N-gramy z Pana Tadeusza\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Statystyki, które policzyliśmy dla pojedynczych liter czy wyrazów możemy powtórzyć dla n-gramów.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('k', 'o', 't'), ('o', 't', 'e'), ('t', 'e', 'k')]" + ] + } + ], + "source": [ + "def ngrams(iter, size):\n", + " ngram = []\n", + " for item in iter:\n", + " ngram.append(item)\n", + " if len(ngram) == size:\n", + " yield tuple(ngram)\n", + " ngram = ngram[1:]\n", + "\n", + "list(ngrams(\"kotek\", 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zauważmy, że policzyliśmy wszystkie n-gramy, również częściowo pokrywające się.\n", + "\n", + "Zawsze powinniśmy się upewnić, czy jest jasne, czy chodzi o n-gramy znakowe czy wyrazowe\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3-gramy znakowe\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7x0lEQVR4nO3deXhU5eH28XsySSb7kBUICSFsssmOyCoIoqhULdVqEXFtrbjQtFZwK6gYtWrtqwVFrba40VbFpehPXNj3VWTfE9YQlkxIyCSZmfePwCAFZMnyzMz5fq5rLjgnM/Q212meO895zjk2n8/nEwAAACwjzHQAAAAA1C0KIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFhNuOkAw83q92rVrl+Lj42Wz2UzHAQAAZ8Hn86m4uFjp6ekKC7PmXBgFsBp27dqlzMxM0zEAAMB5yM/PV0ZGhukYRlAAqyE+Pl5S1QGUkJBgOA0AADgbLpdLmZmZ/nHciiiA1XDstG9CQgIFEACAIGPl5VvWPPENAABgYRRAAAAAi6EAAgAAWAwFEAAAwGIogAAAABZDAQQAALAYCiAAAIDFUAABAAAshgIIAABgMRRAAAAAi6EAAgAAWAwFEAAAwGLCTQfAyb5es1cfr9ip7ORYNUmJVfbRV2JMhKUfXA0AAGoGBTAALc07qP9+v/uk/c7oiKpCmByj7JQ4NUmJUdOjf8ZHRRhICgAAghEFMAANbtdAybGR2lJYom2FJdpaWKLdRWUqOlKhlfmHtDL/0EmfSYlzKDslRk2SY5WdGqvso382SY5VVIS97v8jAABAwLL5fD6f6RDByuVyyel0qqioSAkJCbX6v3Wk3KPtB0q0dV+Jtu6v+nPb/hJtLSxV4WH3T3423RmlJilVp5ObpsT6S2JmYowiw1kGCgCwlrocvwOVZQtgZWWlxo4dq3fffVd79uxRw4YNdeutt+rRRx9VWNjZlaJAOYCKyyq0rbBUWwoPa1thqbbtL9GWwhJt3XdYrrLK034uzCZlJMb41xhm/6gkpteLlj2M9YYAgNATKOO3SZY9Bfzss8/q1Vdf1T/+8Q+1bdtWS5Ys0W233San06kHHnjAdLxzEh8VoQsznLoww3nCfp/Pp4OlFdr6o1PJP549LC33KO9AqfIOlGrmhn0nfDbSHqbGyTHq3Lie+rRIVa/mKUqKjazL/ywAAFBLLDsDePXVV6t+/fp68803/fuGDh2qmJgYTZ48+az+jWD+DcLn82lfsfuEdYZbC6uK4bb9pSqv9J7wfptNapfuVJ8WKerdIkVdshLlCGdtIQAg+ATz+F1TLDsD2Lt3b7366qvasGGDWrZsqZUrV2rOnDl66aWXTEerEzabTWkJUUpLiNLFTZNP+JrH69PuoiPauPew5m0u1OyNhVq3p1irdhZp1c4iTZixWdERdnVvmqQ+LVLVt0WKmqfFcYsaAACChGUL4EMPPaSioiK1atVKdrtdHo9H48eP10033XTaz7jdbrndxy+4cLlcdRG1ztnDbMpIjFFGYoz6t0qTJBW4yjRnU1UZnL2xUIWH3Zqxfp9mrK86dVw/waE+LVLVp0WKejVPUUqcw+R/AgAA+AmWPQX8wQcf6MEHH9Sf//xntW3bVitWrNCoUaP04osvasSIEaf8zNixYzVu3LiT9lttCtnn82ndnmLN3rhPszcWatHWA3L/zynjtukJ6t0iRX1bpKpLViK3ogEABAxOAVu4AGZmZmr06NEaOXKkf99TTz2ld955R+vWrTvlZ041A5iZmWnpA0iSyio8WrLtoGZv3KdZGwu1dveJM6NREWG6KDtZrRvGyxFulyM8TJH2MEWGh1X9/djLv8/u/1pUhF1NU2IVxhXJAIAaQgG08Cng0tLSk273Yrfb5fV6T/MJyeFwyOHg1Ob/ioqwq/fRi0PGSNpX7NZc/+nifSoodmvWhn2a9T9XGp+trlmJevPWbnJG87QTAABqgmUL4JAhQzR+/Hg1btxYbdu21fLly/Xiiy/q9ttvNx0t6KXGO3Rtp0a6tlMj+Xw+bSw4rNkbC7Xr0BGVV3qrXh6v3JUelVd65f7xvoqqP4+970BpuZZsP6hfvb5Ak+/ozq1oAACoAZY9BVxcXKzHHntMH3/8sQoKCpSenq6bbrpJjz/+uCIjz65kMIVc+9budmn4mwtVeLhcLevH6Z07uistIcp0LABAEGP8tnABrAkcQHVjU8FhDXtjgfa63MpOidW7d3ZXer1o07EAAEGK8VviQbAIeM3T4vTv3/RURmK0thaW6PpX5ytvf6npWAAABC0KIIJC4+QY/es3PZSdEqudh47o+tfmaVPBYdOxAAAIShRABI30etGa8puL1bJ+nPa63Lpx0vyTbjkDAADOjAKIoJIWH6UPft1DbdMTVHi4XDdOWqDvdxwyHQsAgKBCAUTQSYqN1Ht3XaxOjeup6EiFhr2+UEu2HTAdCwCAoEEBRFByRkdo8h3d1T07ScXuSg1/c5HmbSo0HQsAgKDAbWCqgcvIzTtS7tGvJy/R7I2FirSHqXeLFHXJSlTXrER1yKzHM4gBACdh/KYAVgsHUGBwV3p033vL9dWavSfsj7Db1Dbdqa5ZieraJFFdspKUGs+j/ADA6hi/KYDVwgEUOHw+n77fUaTF2w5o6faDWrL9oPYVu096X/0Eh9Lio5Qa71BqnKPqz6OvpNhIRdhtkmwKs0lhNptsR/9snhbHbCIAhAjGbwpgtXAABS6fz6cdB49oyfYDWrLtoJZuP6j1e4t1vkd7ujNK/++mTuraJKlmgwIA6hzjNwWwWjiAgkvRkQpt31+ifcXu46/Dx/9+oLRcXq9PXp/k9fnk81UVyeKyShW7K2UPs+l3A1vot/2ayx5mM/2fAwA4T4zfUrjpAEBdcUZHqH1GvXP+3GF3pR79eJWmrtil57/aoPlb9usvN3RUWkJUzYcEAKAOcBsY4AziHOH6yy876vnrOyg6wq65m/Zr8F9n67t1BSotr1R5pVdMpAMAggmngKuBKWTr2VRwWPe+t0zr9hSf9LUwmxQdYVfnrERd0jJVfVumqkVanGw2ThcDQCBh/KYAVgsHkDWVVXiUO22t3l2Yp0rvT//fp6EzSle0a6D7Lm2hpNjIOkoIAPgpjN8UwGrhALK2Co9X5ZVeVXp8qvR6Ven16UBJueZuKtSsjYVauGW/3JVeSVXrD38/qKV+dVFjhdtZeQEAJjF+UwCrhQMIP6WswqM5Gwv1/Ffr/aeMWzWI19iftdXFTZMNpwMA62L8pgBWCwcQzkalx6v3F+Xp+a82qOhIhSRpSId0jRncSun1og2nAwDrYfymAFYLBxDOxcGScj3/1Xq9tyhPPl/VBSMj+zfTnX2a8pQRAKhDjN8UwGrhAML5+GFnkcZ9tlqLtx2UJGUkRuuBAS10XadGrA8EgDrA+E0BrBYOIJwvn8+nT1fuUu60ddrjKpMkNU2J1f0DWqhl/XiFhUl2m02ZSTHMDgJADWP8pgBWCwcQqutIuUeTF2zTxBmbdbC04qSvJ8ZE6Nae2RrRM0v1YriNDADUBMZvCmC1cAChphx2V+qtOVv1n2U7VFrukc/nU1mFV4fdlZKk2Ei7rm6fru5Nk9StSZIa1YtWGM8jBoDzwvhNAawWDiDUpkqPV9N+2KOJMzZr7W7XSV8Ps0mOcLsaOqPUODlGLdLi1CUrSd2aJCo5zmEgMQAEB8ZvCmC1cAChLvh8Ps3dtF+zNu7T4m0HtGpH0U8+gSTMJj3z8/a6oVtmHaYEgODB+C2Fmw4A4KfZbDb1bpGi3i1SJEnuSo9K3B5VerwqLfdo16Ej2n6gVKt3FWn+5v3avK9E46et1eALGyg+KsJwegBAIKIAAkHGEW6XI/z4lcFNUmLV8+jfPV6fLvvLTG3ZV6J/zt+ukf2bmwkJAAho3HQMCCH2MJvuu7Sq9L0+e4v/IhIAAH6MAgiEmCHt05WdEqtDpRWaPH+76TgAgABEAQRCTLg9zH/q95VvN2rxtgOGEwEAAo2lC2CTJk1ks9lOeo0cOdJ0NKBaru2Yrp7NklVS7tEtby7S7I37xAX/AIBjLH0bmH379snj8fi3f/jhB1122WX67rvv1K9fvzN+nsvIEciOlHv068lLNHtjoSQpNd6hi7KT9Os+TdUhs57ZcABgEOO3xQvg/xo1apQ+//xzbdy4UTbbmZ+ywAGEQFdW4dGYj1bps5W7Trh3YN+WqeqalaiLspN0cdNkgwkBoO4xflMA/crLy5Wenq6cnBw9/PDDZ/UZDiAEiyPlHv2wq0gfLMrXx8t36Mf3kR73s7Ya0bOJsWwAUNcYv7kPoN/UqVN16NAh3Xrrrad9j9vtltvt9m+7XCc/ngsIRNGRdnVrUvUc4Xv6N9P0NXu1bPtBfbVmr574fI2apsaqT4tU0zEBAHWEGcCjLr/8ckVGRuqzzz477XvGjh2rcePGnbTfyr9BIHj5fD79/t8r9dGynYqKCNMNXTM1tHOG2qQnKMJu6evDAIQ4ZgApgJKk7du3q2nTpvroo490zTXXnPZ9p5oBzMzMtPQBhODmrvTojreXaM6mQv++6Ai7ejVP1lXtG+qaDo0UFnbm9bAAEEwogJwCliS99dZbSktL01VXXfWT73M4HHI4HHWUCqh9jnC7Jt9xkeZt3q/J87dr3uZCucoq9fXaAn29tkCbC0r0h8svMB0TAFDDLF8AvV6v3nrrLY0YMULh4Zb/dsCCbDabejVPUa/mKfJ6fVq3p1ifrNyp12Zu0SvfbVKnxvU0oHV90zEBADXI8o3n66+/Vl5enm6//XbTUQDjwsJsapOeoDbpCTpS7tE/52/XXf9cosva1Fd2SpwaOqPUo1myWqTFndWtkgAAgYk1gNXAGgKEMnelRzlTVuq/q3af9LWUuEj1bJaiAa3TdHnbBoqKsBtICADnh/GbAlgtHECwgnV7XJq2ao8Ol1VqY0GxFm87oLIKr//rSbGRuqdfM93as4nCuXoYQBBg/KYAVgsHEKzIXenRirxDmrFhnz5ZvlO7isokVT1qrnlqnGIddsVEhmt4jyx1a5JkOC0AnIzxmwJYLRxAsLpKj1f/XrpDz3yxTkVHKk74Wmq8Q1/nXCJndIShdABwaozfFMBq4QACqhwp92jN7iLlHziisgqPJs3aoi2FJRrUpr7uH9BCzVLjFB3JOkEAgYHxmwJYLRxAwKnN37xfv3pjgY79dEmLd2jKb3ooOyXWbDAAEOO3JLFiG0CN69EsWe/e2V19WqRIkgqK3frdlBWq9HjP8EkAQF2gAAKoFT2bpWjyHd01d/Slio8K14r8Q5owY7PpWAAAcQq4WphCBs7O1OU7NWrKCklS16xExUeFq1XDBN3dt5mcMVwkAqBuMX7zJBAAdeCajumat7lQ/1qyQ0u2H5Qkfbd+n75avUd39Wmqns1SVN/pkCOcC0UAoC4wA1gN/AYBnD2fz6f1e4u1fk+x9h8u11+/2XjCrWNS4iL191u7qX1GPXMhAVgC4zcFsFo4gIDzt6ngsN5duF3L8g5pZf4hSVVPFbmzT7Z+1iFdGYkxZgMCCFmM3xTAauEAAmpGcVmFfjFxvtbvLZYkJUSF6+ORvdQsNc5wMgChiPGbq4ABBID4qAhNHdlLj1/dRokxEXKVVWrACzM1/M2FmrOx0HQ8AAg5FEAAASE60q7be2frw9/2VIu0qpm/2RsLdfObC/Xn/1snTlYAQM3hFHA1MIUM1J68/aWaNHuz3lmQJ0n6WYf0o4+Vi5XNZjOcDkAwY/ymAFYLBxBQ+z5YlKdHpv4gj7fqR1X9BIe6ZCWqbbpTFzZyKjMpRhmJ0Yqwc0IDwNlh/KYAVgsHEFA3Fm7Zrz//33p9v6NI5ad4nFy8I1ytGsYrMSZSl1yQqr4tUpWZxFXEAE6N8ZsCWC0cQEDdKi6r0OpdLs3csE95B0q1YU+x8g+Wqqzi5FLYqXE9/bxzhi5vU18pcQ6FhXHaGEAVxm8KYLVwAAHmeb0+Lc8/qL0utzbsLdZ36wq0ameRvD/6ydYiLU5vjuimxsnMCgJg/JYogNXCAQQEpi37Duutudv0xQ+7VXi43L+/c+N6uqJdA7VNd6pFWpzSEqIMpgRgCuM3BbBaOICAwLduj0t3T16qbftLT9hvs0kjejTRgNZpauiMVgNnlOIcPB4dsALGbwpgtXAAAcHB5/Mp70Cppq3ao+V5B7V2j0v5B46c8B57mE3XdEzX0M4Z6tU8xVBSAHWB8ZsCWC0cQEDw+u/3u/WfpfnacfCIdheV6bC70v+1Y0Wwe9MkOcLtBlMCqA2M3xTAauEAAkLHkm0H9OGyHfpgcb6O/VRsmhKrt27rpqzkWLPhANQoxm8KYLVwAAGhZ/G2A/r3knx9sWqPit2VSogK1609m2holwyKIBAiGL8pgNXCAQSErgJXme765xKt3FEkSYq0h+nByy/QXX2bGk4GoLoYvymA1cIBBIQ2j9enj5fv1OQF27Uy/5CkqhtM39gtU7/s1thsOADnjfFb4uGZAHAa9jCbftElQ1Pv6anfX9ZS9jCblucd0kMfrtI3a/eajgcA540CCABnYLPZdN+AFpr1x/4a2DpNknT/+8v19LS1WrBlvziRAiDYcAq4GphCBqznQEm5Bv1llgoPu/37WqTFaeLNndU8Ld5gMgBni/Hb4jOAO3fu1M0336zk5GTFxMSoY8eOWrp0qelYAAJYUmykvnigj54b2l59W6ZKkjYWHNbAF2fpha/Wy+Pld2oAgc+yM4AHDx5Up06d1L9/f/32t79VWlqaNm/erCZNmqhZs2Zn9W/wGwSAvP2lyvnXCi3ZflCS1Cw1Vj/vnKG7+jRVZLilf8cGAhbjt4UL4OjRozV37lzNnj37vP8NDiAAUtWj5v6zdIce/2S1jlR4JEmO8DC1z3Dqhq6Zur5rpuGEAH6M8dvCBbBNmza6/PLLtWPHDs2cOVONGjXSPffco7vuuuus/w0OIAA/dqi0XFMW5+u1WVt0oKTcv79NwwSNHtzKf8oYgFmM3xYugFFRUZKknJwcXX/99Vq0aJFGjRql1157TbfccsspP+N2u+V2H1/47XK5lJmZaekDCMDJvF6f1ux26ZGpP/jvHyhJl7Wpr7/e2FExkeHmwgGgAMrCBTAyMlJdu3bVvHnz/Pvuv/9+LV68WPPnzz/lZ8aOHatx48adtN/KBxCAn7anqExPfr5G/121W5KUHBup6zo1UpesRA1sU18RdtYJAnWNAmjhq4AbNmyoNm3anLCvdevWysvLO+1nxowZo6KiIv8rPz+/tmMCCHINnFH627DOevKatrKH2bS/pFxvzNmq3767TANemKmV+Ye4jyCAOmfZ8xC9evXS+vXrT9i3YcMGZWVlnfYzDodDDoejtqMBCEHDezTRtZ0a6dt1BVq87YD+s3SH8g6U6pq/zVW6M0pXtGuonEEtFeew7I9lAHXIsqeAFy9erJ49e2rcuHG64YYbtGjRIt11112aNGmShg0bdlb/BlPIAM7X6l1FeujD77Vml0vHbh3ojI5QVnKMHrmytbo3TTYbEAhhjN8WLoCS9Pnnn2vMmDHauHGjsrOzlZOTw1XAAOpUWYVH360r0Phpa7Xj4BH//u7ZSXpmaHtlp8QaTAeEJsZvixfA6uIAAlBTKjxe/WPeNn20bKfW7HZJkmw2qWezZD12dRu1asDPGKCmMH5TAKuFAwhAbdhUUKzx/12r79bv8+975MrWurNPtmw2m8FkQGhg/LbwVcAAEKiap8Xrrdsu0pej+ijdWXXP0vHT1ur3/1qp/YfdZ/g0AJwZM4DVwG8QAGqbu9KjZ75Yp7fmbvPvu6hJkm7ukaWfdUg3FwwIYozfzAACQEBzhNv1pyFt9c/bL1KjetGSpEXbDuj+95drzS6X4XQAghUFEACCQN+WqZrzUH99dE9PJURV3SvwxknztXT7AcPJAAQjCiAABAmbzabOjRP12X29le6MkqusUr98bYFyp61VUWmF6XgAgghrAKuBNQQATCkqrdBDH36vL1fvkSSF2aR+F6TpD4MuUJt0fh4BP4XxmxlAAAhKzpgITRjWWb/q3lgpcQ55fdK36wp05f+brbmbCk3HAxDgmAGsBn6DABAolucd1I2TFshd6ZUkjeiRpTv7NFVmUozhZEDgYfxmBhAAQkKnxon6clRfNUutenTcP+ZvV5/nvtMdby/W9v0lhtMBCDQUQAAIEdkpsfrm9/00cVhntWtUNavxzboCDZ04T9+tLxAnfAAcwyngamAKGUAgW5F/SL+bskJbC6tmAC9qkqQXf9lBGYmcFoa1MX4zAwgAIatjZj1NHdlL9RMckqpuIN3nue/0zoLthpMBMI0CCAAhzBkdoTkPXarx17VTYkyEfD7p0ak/6JevzefegYCFUQABIMRF2MM0rHuWFj0yUMO6N5YkLdx6QMPeXKCDJeWG0wEwgQIIABYRYQ/T+Osu1Ae/vlhxjnD9sNOlTk9O13frCkxHA1DHKIAAYDEXN03Wu3d292/f9vZiPfn5GoOJANQ1CiAAWFCHzHr66nfH7xv45pyt+uVr87Uy/5DZYADqBAUQACyqZf14fXJvb13aKk1S1brAa/42Vze8Nl9frd7DfQOBEMZ9AKuB+wgBCBXf7zikp/67Vou2HvDvy06J1as3d9EFDeINJgNqHuM3BbBaOIAAhJqV+Yf02qzNmrZqj3/fh7/toS5ZSQZTATWL8ZtTwACAH+mQWU8ThnXR7D/2V7ozSpI0dOJ8fbtur+FkAGoSBRAAcJLMpBh9fn8fRUfYJUm3v71E1/xtrrYdfawcgOBGAQQAnFJSbKRmP9RfkfaqoWJl/iH1e36GpizO4wIRIMixBrAaWEMAwAq8Xp++XL1H97y7zL/PER6mZ4e217WdGhlMBpwfxm9mAAEAZxAWZtOVFzbUgjEDNKRDuiTJXenVqCkrdOVfZ2vnoSOGEwI4VxRAAMBZaeCM0ss3ddLyxy5ThwynJGnNbpd6PfOtpq/hIhEgmFAAAQDnJDE2Up/c21tPXtvOv++ufy7RBY9+oR92FhlMBuBsUQABAOdl+MVZmjv6Ul3ctOoege5Kr65+eY7+OX+b2WAAzoiLQKqBRaQAUGXepkL96o2F/u2oiDB9+/t+Sq8XbTAVcGqM3xaeARw7dqxsNtsJrwYNGpiOBQBBqWfzFM3+Y3+lxDkkSWUVXvV85ltdN2Gu9hSVGU4H4H9ZtgBKUtu2bbV7927/a9WqVaYjAUDQykyK0ZJHB2r8dcfXBi7PO6SLc7/RE5+t4d6BQACxdAEMDw9XgwYN/K/U1FTTkQAg6A3rnqUfxl2uW3pk+ff9fe5WXfO3uQZTAfgxSxfAjRs3Kj09XdnZ2brxxhu1ZcsW05EAICTEOcL1xDXttPDhAYqKqBpqvt9RpCaj/6u/fbdJZRUewwkBa7PsRSBffPGFSktL1bJlS+3du1dPPfWU1q1bp9WrVys5OfmUn3G73XK73f5tl8ulzMxMSy8iBYCz8bNX5uj7HSfeIub56zvoF10yDCWClXERiIUL4P8qKSlRs2bN9Mc//lE5OTmnfM/YsWM1bty4k/Zb+QACgLPh8/n06cpdeuGrDco7UOrff0nLVP3j9osMJoMVUQApgCe47LLL1Lx5c02cOPGUX2cGEACqb80ul678f7NP2Pf5fb3VrpHTUCJYDQXQ4msAf8ztdmvt2rVq2LDhad/jcDiUkJBwwgsAcG7apCdo3ZNXKDzM5t939ctz9OnKXQZTAdZi2QL4hz/8QTNnztTWrVu1cOFC/eIXv5DL5dKIESNMRwOAkBcVYdemp6/Ug5df4N93//vL9cmKnQZTAdZh2QK4Y8cO3XTTTbrgggv085//XJGRkVqwYIGysrLO/GEAQI0Y2b+5Pr23l3/7gQ9WqNVjX6joSIXBVEDoYw1gNbCGAABqxvK8g7puwrwT9v3mkqYafUUr2Wy203wKOD+M3xaeAQQABI5OjRO1NfdKDWpT37/vtZlb1G38N/J4macAahoFEAAQEGw2mybd0lWf3dvbv6/wsFvNHp6mlfmHzAUDQhAFEAAQUC7McGpr7pW6qEmSf981f5urD5fuMJgKCC0UQABAwLHZbPrX3T307NAL/ft+/++VevjjVar0eA0mA0IDBRAAELB+2a2xZj7Yz7/93sI8XfrCTHOBgBBBAQQABLSs5FgteniA4h3hkqS8A6Vq/vA05f/okXIAzg0FEAAQ8NISorRq3OWqn+CQJFV6ferz3Hf61+J8w8mA4EQBBAAEjVl/7K87emf7t//44fe6e/JSg4mA4EQBBAAEDUe4XY9d3Uaf33f8VjFfrt6jJqP/q52HjhhMBgQXCiAAIOi0a+TUuievOGFfr2e+1Q87iwwlAoILBRAAEJSiIuzamnulhnVv7N939ctzNGvDPoOpgOBAAQQABC2bzabx112oF67v4N93y98X6bkv1xlMBQQ+CiAAIOgN7ZKhN27p6t+eMGOzOj85nZtGA6dBAQQAhISBbepr2WOX+bcPlJSr+SNfyOv1GUwFBCYKIAAgZCTFRmrT+MHKSIz272v68DRKIPA/KIAAgJASbg/TzAf7q6Ezyr+v2/ivDSYCAg8FEAAQcuxhNs0fM0D1YiIkSftLynXpCzNUwZpAQBIFEAAQwpb/aE3gln0laven/+PCEEAUQABACLPZbFr35BVKiat6hrC70qvmj3whV1mF4WSAWRRAAEBIi4qwa8mjA9U0Jda/r/3Yr7R532GDqQCzKIAAAEv45veXaHC7Bv7tAS/M1I6DpQYTAeZQAAEAlmCz2TTx5i56+roL/ft6P/udFmzZbzAVYAYFEABgKb/q3liPXtXav33jpAXaeeiIwURA3aMAAgAs584+TfXend39272e+VYFxWUGEwF1iwIIALCkns1TNGpgC//2ReO/kc/HE0NgDRRAAIBljRrYUtd3yfBvZ4+ZprIKj8FEQN2gAAIALO3P13dQk+QY/3arx77k2cEIeRRAAIDlzXiwvzo1ruffHvjiTHNhgDpAAQQAQNJHv+2p+KhwSdKWwhI1Gf1fnhiCkEUBBABAVfcJXPzIQEWGHx8a24/9SlsLSwymAmoHBfCo3Nxc2Ww2jRo1ynQUAIAhURF2rXviCvW7INW/r//zM7SFx8YhxFAAJS1evFiTJk1S+/btTUcBABgWFmbT27ddpN9c0tS/79IXZqrwsNtgKqBmWb4AHj58WMOGDdPrr7+uxMRE03EAAAFizODWeuzqNv7trk99rQIXN4tGaLB8ARw5cqSuuuoqDRw40HQUAECAuaN3tn7euZF/+6Knv1F5pddgIqBmhJsOYNIHH3ygZcuWafHixWf1frfbLbf7+CkAl8tVW9EAAAHihes7KDXOoddmbZEk9X72Wy0YM0BhYTbDyYDzZ9kZwPz8fD3wwAN65513FBUVdVafyc3NldPp9L8yMzNrOSUAwDSbzaYxV7ZWh8x6kqSCYrce//QHs6GAarL5LPrgw6lTp+q6666T3W737/N4PLLZbAoLC5Pb7T7ha9KpZwAzMzNVVFSkhISEOssOAKh7ZRUetXrsS//2+3ddrB7Nkg0mwvlyuVxyOp2WHr8tWwCLi4u1ffv2E/bddtttatWqlR566CG1a9fujP8GBxAAWMu+Yre6jf/av/2fu3uoa5Mkg4lwPhi/LXwKOD4+Xu3atTvhFRsbq+Tk5LMqfwAA60mNd+ift1/k3/7Fq/O1qaDYYCLg/Fi2AAIAcD76tkzVxGGd/dsDX5yl+Zv3G0wEnDvLngKuCUwhA4B1TZixSc99ud6//e6d3dWreYrBRDhbjN/MAAIAcF7u6ddcz/3i+BOkhr2xUFOX7zSYCDh7FEAAAM7TDV0z9cYtXf3bo6as0Lfr9hpMBJwdCiAAANUwsE19fXRPT//27W8v0dLtBw0mAs6MAggAQDV1bpyoyXccvzp46MR5Ki2vNJgI+GkUQAAAakCfFqn6640d/dtDXp5jLgxwBhRAAABqyDUdG6l7dtWNoTfvK2E9IAIWBRAAgBr07p3d/X+//e0lKqvwGEwDnBoFEACAGhRuD9Nbt3bzb/d+9lsdKacEIrBQAAEAqGH9W6VpQKs0SVLh4XL1eOYblVd6DacCjqMAAgBQC14b3kV9WlQ9GeRQaYV++85Sw4mA4yiAAADUgnB7mCbf0V2dG9eTJH2zrkBvztlqNhRwFAUQAIBa9M6PLgp58vM1WrztgME0QBUKIAAAtSgmMlxf51zi377+1fkqLqswmAigAAIAUOuap8Xp4Stb+bcf/2S1wTQABRAAgDpxR++mSogKlyR9vHyn1u1xGU4EK6MAAgBQB+xhNk0d2cu/fcVLs7W76IjBRLAyCiAAAHWkaWqcHrmytX+7R+632nGw1GAiWBUFEACAOnRX36a66aLG/u073l6iCg83iUbdogACAFDH/jSkjTpkOCVJ6/cWa9qq3YYTwWoogAAA1LGoCLteHd7Fv/3AByu0dPtBg4lgNRRAAAAMaOiM1iu/6uTfHjpxnjbuLTaYCFZCAQQAwJCr26fr/kub+7cf+vB7eb0+g4lgFRRAAAAMurNvU3VrkihJWpZ3SMP/vtBwIlgBBRAAAIMSoiL0t2GdFRNplyTN3bRfn67cZTgVQh0FEAAAw9Lio7Ti8UGKiqgalu9/f7mKSnleMGoPBRAAgAAQGR6m14Z39W8P/usseVgPiFpCAQQAIEBc0jJVA1qlSZJ2FZXpm7V7DSdCqKIAAgAQQF6/5fgs4K8nL9W6PS6DaRCqKIAAAASQsDCbnr7uQv/2A++v0L5it8FECEUUQAAAAsyvujfWkA7pkqoeFTdp1mbDiRBqKIAAAASgnMtaKtJeNUy/Pnur1u7mVDBqjmUL4MSJE9W+fXslJCQoISFBPXr00BdffGE6FgAAkqTslFj9bVhn//abc7YaTINQY9kCmJGRoWeeeUZLlizRkiVLdOmll+qaa67R6tWrTUcDAECSdGmrNA1sXV+S9J+lO/TtOq4KRs2wbAEcMmSIrrzySrVs2VItW7bU+PHjFRcXpwULFpiOBgCAJMkeZtNvLmnq335jNrOAqBmWLYA/5vF49MEHH6ikpEQ9evQ47fvcbrdcLtcJLwAAalPXrETlXNZSkrQi/5DueXepSssrDadCsLN0AVy1apXi4uLkcDh099136+OPP1abNm1O+/7c3Fw5nU7/KzMzsw7TAgCsyGaz6ZqOVVcEl5Z7NG3VHs3btN9wKgQ7m8/ns+xzZsrLy5WXl6dDhw7pww8/1BtvvKGZM2eetgS63W653cfvxeRyuZSZmamioiIlJCTUVWwAgAWt2+PSH/69Uj/sdMlmk6b/rq+ap8WbjhWUXC6XnE6npcdvS88ARkZGqnnz5uratatyc3PVoUMH/fWvfz3t+x0Oh/+q4WMvAADqQqsGCbqwkVOS5PNJf5+7zWwgBDVLF8D/5fP5TpjhAwAgkPzx8lZq07Bq8uG9hXmav5lTwTg/li2ADz/8sGbPnq1t27Zp1apVeuSRRzRjxgwNGzbMdDQAAE4pMTZSd/dr5t++5e8LVXSkwmAiBCvLFsC9e/dq+PDhuuCCCzRgwAAtXLhQX375pS677DLT0QAAOK2BrdN0V59sSVKFx6ethSWGEyEYWfoikOpiESkAwJSLn/5Ge1xlkqRXftVJV7dPN5woeDB+W3gGEACAYHZ1+4b+vy/ZdtBgEgQjCiAAAEHo0avb6MHLL5Akzdq4T5PnbzMbCEGFAggAQJCqnxAlSdqyr0SPfbJauw4dMZwIwYICCABAkLq6fUONv66d4hzhkqRDpVwRjLNDAQQAIEhFRdg1rHuWkuMiJUnXvzpPf5+z1XAqBAMKIAAAQa5L40RJUkm5R5+u3GU4DYIBBRAAgCD3wg0d9NcbO0qSissqVFBcZjYQAh4FEACAIGez2ZSRGC1J2ryvRBeN/0Yvf7PRcCoEMgogAAAhoHXDBLVqEK/wMJskaWke9wbE6VEAAQAIATGR4fpyVF+9dPRU8OGySh12V5oNhYBFAQQAIIREhdslSUu2H9SFY/9P7y7cbjgRAhEFEACAENIhs54aHL1BtM8nLdhywHAiBCIKIAAAISQ13qH5Yy7VU9e2kySVVXgMJ0IgogACABBibDaboiOqTgUv2LJfv3p9gX7YWWQ4FQIJBRAAgBCUlRwjSSouq9S8zfv1n6U7DCdCIKEAAgAQgrpkJerTe3vp550bSZJKy7kiGMdRAAEACEE2m03tM+qpTcMESdIel1ubCg7L5/MZToZAQAEEACCERR1dCzhrwz4NfHGm3l2YZzgRAgEFEACAEHZJy1Rd2MipeEe4JGnj3mLDiRAIKIAAAISwzKQYfXZfb/3mkqaSJHel13AiBAIKIAAAFhAZXjXk5x0o1dxNhXJXcn9AK6MAAgBgAcfuCzhv834Ne2OhcqetM5wIJlEAAQCwgIFt6qtvy1Q1qhctSco/UGo4EUyiAAIAYAENndH65+0X6Q+Xt5QklXtYC2hlFEAAACwk0l51KpiLQayNAggAgIUcuxhk8bYDav3Yl3ps6g+GE8EECiAAABbSqkG8oiLC5PNJRyo8mrp8p+lIMIACCACAhWQmxWjxIwP177t7SJIqvJwKtiIKIAAAFhMfFaGspBhJUoWHZwNbEQUQAAALirBXVQCP16cdB0vlKqswnAh1ybIFMDc3V926dVN8fLzS0tJ07bXXav369aZjAQBQJyLCj1eA3s9+py5PTteyvIMGE6EuWbYAzpw5UyNHjtSCBQs0ffp0VVZWatCgQSopKTEdDQCAWhcbadfA1mmKDA+TzVZ1Knj1ziLTsVBHwk0HMOXLL788Yfutt95SWlqali5dqr59+xpKBQBA3bDZbHpjRDdJ0n3vL9dnK3exHtBCLFsA/1dRUdVvPUlJSad9j9vtltvt9m+7XK5azwUAQG2LCLNJkip4OohlWPYU8I/5fD7l5OSod+/eateu3Wnfl5ubK6fT6X9lZmbWYUoAAGrHsQtCKr3MAFoFBVDSvffeq++//17vv//+T75vzJgxKioq8r/y8/PrKCEAALUn3F41A/j597v1+3+t1MfLdxhOhNpm+VPA9913nz799FPNmjVLGRkZP/leh8Mhh8NRR8kAAKgbyXFVY9va3S6t3e3SZyt3aUj7dIXbmScKVZYtgD6fT/fdd58+/vhjzZgxQ9nZ2aYjAQBgxB29s5UaF6miIxV6/qsNKvd4Ven1KdxuOhlqi2UL4MiRI/Xee+/pk08+UXx8vPbs2SNJcjqdio6ONpwOAIC644yO0PAeTVRW4dHzX22QVHVBSFQEDTBUWXZud+LEiSoqKlK/fv3UsGFD/2vKlCmmowEAYETEj075erggJKRZdgbQ5+PABgDgx47eDUYSzwgOdZYtgAAA4EQ2m00RdpsqPD7N2rBPSbGRapwco2apcaajoYZRAAEAgJ8j3K4KT6V+/++VkqpmBeeOvlQNnayPDyWWXQMIAABOdv+A5mqf4VT7DKci7WHy+qTdRWWmY6GGMQMIAAD8ft23mX7dt5kkqf/zM7S1sIQLQkIQM4AAAOCU7EevCqnkgpCQQwEEAACnFH60ADIDGHoogAAA4JT8M4Ber+EkqGkUQAAAcErMAIYuCiAAADilYzOAT3y+RkNenqMRf1+kvS6uCA4FFEAAAHBKmUkxkqTt+0u1ameRZm7Yp2/XFRhOhZrAbWAAAMApPfPz9hraOUMer08TZmzS4m0HVeFhPWAooAACAIBTio60q2/LVEnSh8t2SGI9YKjgFDAAADgjOxeEhBQKIAAAOCO7jQIYSiiAAADgjPwzgD4KYCigAAIAgDM6VgC9zACGBAogAAA4ozD/GkDDQVAjuAoYAACc0bE1gF+u3qO8A6WSpDiHXb/t11wNnFEmo+E8UAABAMAZJcVGSpLW7nZp7W6Xf78zJlI5l7U0FQvniQIIAADO6Pbe2UqJi1RJuUeS9O26Ai3aekBlFR7DyXA+KIAAAOCMnNERGt6jiX/7UGmFFm09wG1hghQXgQAAgHN29JoQebktTFCiAAIAgHPGbWGCGwUQAACcM9vRq4Lpf8GJAggAAM4Zp4CDGwUQAACcM7t/BpACGIwogAAA4JyF+dcAGg6C80IBBAAA5yzs6AyghxnAoEQBBAAA54w1gMGNG0EDAIBzdmwG8Ju1Bbr65dn+/c7oCD193YXKSo41FQ1nwdIzgLNmzdKQIUOUnp4um82mqVOnmo4EAEBQyEyKliQVHanQDztd/tfcTfv15Q97DKfDmVh6BrCkpEQdOnTQbbfdpqFDh5qOAwBA0Li8bQNNHdlLB0vL/fv+PmerZm8sVCU3Bwx4li6AgwcP1uDBg03HAAAg6NhsNnXMrHfCvi9XVc38+VgXGPAsXQDPldvtltvt9m+7XC6DaQAACCxhRxeW0f8Cn6XXAJ6r3NxcOZ1O/yszM9N0JAAAAgaPhwseFMBzMGbMGBUVFflf+fn5piMBABAwuDVM8OAU8DlwOBxyOBymYwAAEJBsqmqA1L/AxwwgAACoEcdmALkIJPBZegbw8OHD2rRpk39769atWrFihZKSktS4cWODyQAACD7H1wBSAAOdpQvgkiVL1L9/f/92Tk6OJGnEiBF6++23DaUCACA4hXERSNCwdAHs168f09QAANQQm/8UsNkcODPWAAIAgBrBGsDgQQEEAAA1Iow1gEGDAggAAGqG/z6AZmPgzCiAAACgRhybAWQCMPBZ+iIQAABQc46tASw6UqG8/aUnfT3cblN6veg6ToVToQACAIAacWwG8MNlO/Thsh2nfM/I/s304OWt6jIWToFTwAAAoEZc0jJVDRKiFBtpP+kVGV5VOb7fUWQ4JSRmAAEAQA3p2iRJCx4ecMqvfbRsh3L+tbKOE+F0mAEEAAC1jptEBxYKIAAAqHW2o/eI8YkGGAgogAAAoNYxAxhYKIAAAKDOUAADAwUQAADUOpuNU8CBhAIIAABq3dEzwMwABggKIAAAqHX+NYBmY+AoCiAAAKh1x64CpgEGBgogAACodcdnAGmAgYACCAAAah1rAAMLBRAAANQ61gAGFgogAACoA0dvA8MUYECgAAIAgFrHDGBgoQACAIBaxxrAwEIBBAAAte74k0AQCCiAAACg1oUxBRhQKIAAAKDWsQYwsFAAAQBArbP5rwI2HASSKIAAAKAu8CSQgEIBBAAAtY4lgIGFAggAAGqd/ypgCmBAoAACAIBa558BNJoCx1i+AE6YMEHZ2dmKiopSly5dNHv2bNORAAAIOf6rgJkCDAiWLoBTpkzRqFGj9Mgjj2j58uXq06ePBg8erLy8PNPRAAAIKTb/HCACgaUL4Isvvqg77rhDd955p1q3bq2XXnpJmZmZmjhxouloAACElOMzgGZzoEq46QCmlJeXa+nSpRo9evQJ+wcNGqR58+ad8jNut1tut9u/7XK5ajUjAACh4tj8365DRzTqg+Vn/bkr2jXQFe0a1k4oC7NsASwsLJTH41H9+vVP2F+/fn3t2bPnlJ/Jzc3VuHHj6iIeAAAhJTE2UpJU7K7U1BW7zvpzTVJiKYC1wLIF8Jhjl6Uf4/P5Ttp3zJgxY5STk+PfdrlcyszMrNV8AACEglYN4vXa8C7KP1B6Tp/r1DixlhJZm2ULYEpKiux2+0mzfQUFBSfNCh7jcDjkcDjqIh4AACHFZrPp8rYNTMfAUZa9CCQyMlJdunTR9OnTT9g/ffp09ezZ01AqAACA2mfZGUBJysnJ0fDhw9W1a1f16NFDkyZNUl5enu6++27T0QAAAGqNpQvgL3/5S+3fv19PPPGEdu/erXbt2mnatGnKysoyHQ0AAKDW2Hzckvu8uVwuOZ1OFRUVKSEhwXQcAABwFhi/LbwGEAAAwKoogAAAABZDAQQAALAYCiAAAIDFUAABAAAshgIIAABgMRRAAAAAi6EAAgAAWAwFEAAAwGIs/Si46jr2EBWXy2U4CQAAOFvHxm0rPwyNAlgNxcXFkqTMzEzDSQAAwLkqLi6W0+k0HcMIngVcDV6vV7t27VJ8fLxsNluN/tsul0uZmZnKz8+37HMKTeF7bxbff3P43pvF97/u+Hw+FRcXKz09XWFh1lwNxwxgNYSFhSkjI6NW/zcSEhL4QWAI33uz+P6bw/feLL7/dcOqM3/HWLP2AgAAWBgFEAAAwGIogAHK4XDoT3/6kxwOh+kolsP33iy+/+bwvTeL7z/qEheBAAAAWAwzgAAAABZDAQQAALAYCiAAAIDFUAABAAAshgIYgCZMmKDs7GxFRUWpS5cumj17tulIlpCbm6tu3bopPj5eaWlpuvbaa7V+/XrTsSwpNzdXNptNo0aNMh3FMnbu3Kmbb75ZycnJiomJUceOHbV06VLTsUJeZWWlHn30UWVnZys6OlpNmzbVE088Ia/XazoaQhwFMMBMmTJFo0aN0iOPPKLly5erT58+Gjx4sPLy8kxHC3kzZ87UyJEjtWDBAk2fPl2VlZUaNGiQSkpKTEezlMWLF2vSpElq37696SiWcfDgQfXq1UsRERH64osvtGbNGr3wwguqV6+e6Wgh79lnn9Wrr76qV155RWvXrtVzzz2nP//5z3r55ZdNR0OI4zYwAaZ79+7q3LmzJk6c6N/XunVrXXvttcrNzTWYzHr27duntLQ0zZw5U3379jUdxxIOHz6szp07a8KECXrqqafUsWNHvfTSS6ZjhbzRo0dr7ty5nG0w4Oqrr1b9+vX15ptv+vcNHTpUMTExmjx5ssFkCHXMAAaQ8vJyLV26VIMGDTph/6BBgzRv3jxDqayrqKhIkpSUlGQ4iXWMHDlSV111lQYOHGg6iqV8+umn6tq1q66//nqlpaWpU6dOev31103HsoTevXvrm2++0YYNGyRJK1eu1Jw5c3TllVcaToZQF246AI4rLCyUx+NR/fr1T9hfv3597dmzx1Aqa/L5fMrJyVHv3r3Vrl0703Es4YMPPtCyZcu0ePFi01EsZ8uWLZo4caJycnL08MMPa9GiRbr//vvlcDh0yy23mI4X0h566CEVFRWpVatWstvt8ng8Gj9+vG666SbT0RDiKIAByGaznbDt8/lO2ofade+99+r777/XnDlzTEexhPz8fD3wwAP66quvFBUVZTqO5Xi9XnXt2lVPP/20JKlTp05avXq1Jk6cSAGsZVOmTNE777yj9957T23bttWKFSs0atQopaena8SIEabjIYRRAANISkqK7Hb7SbN9BQUFJ80Kovbcd999+vTTTzVr1ixlZGSYjmMJS5cuVUFBgbp06eLf5/F4NGvWLL3yyityu92y2+0GE4a2hg0bqk2bNifsa926tT788ENDiazjwQcf1OjRo3XjjTdKki688EJt375dubm5FEDUKtYABpDIyEh16dJF06dPP2H/9OnT1bNnT0OprMPn8+nee+/VRx99pG+//VbZ2dmmI1nGgAEDtGrVKq1YscL/6tq1q4YNG6YVK1ZQ/mpZr169Trrl0YYNG5SVlWUokXWUlpYqLOzEodhut3MbGNQ6ZgADTE5OjoYPH66uXbuqR48emjRpkvLy8nT33XebjhbyRo4cqffee0+ffPKJ4uPj/TOxTqdT0dHRhtOFtvj4+JPWWsbGxio5OZk1mHXgd7/7nXr27Kmnn35aN9xwgxYtWqRJkyZp0qRJpqOFvCFDhmj8+PFq3Lix2rZtq+XLl+vFF1/U7bffbjoaQhy3gQlAEyZM0HPPPafdu3erXbt2+stf/sJtSOrA6dZZvvXWW7r11lvrNgzUr18/bgNThz7//HONGTNGGzduVHZ2tnJycnTXXXeZjhXyiouL9dhjj+njjz9WQUGB0tPTddNNN+nxxx9XZGSk6XgIYRRAAAAAi2ENIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFkMBBAAAsBgKIAAAgMVQAAEAACyGAggAAGAxFEAAAACLoQACAABYDAUQAADAYiiAAAAAFvP/AU6rJ+cTWKTaAAAAAElFTkSuQmCC", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "log_rang_log_freq('pt-3-char-ngrams-log-log', ngrams(get_characters(pan_tadeusz), 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2-gramy wyrazowe\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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kCJ5+4CBAhCAAAAZIwABUsAuYKCQBCBAitgFDBSCAAQAyBgBCJACOfuAgQISgAAp4gowUAgCEAAgYwQgQArYBQwUkgAESBPbgIECEIAAABkjAAFSoO8KsPU/oBAEIABAxghAgBTI2QUCFJAABEgRe0CAQhCAAAAZIwABADJGAAKkSN4+YKAABCAAQMYIQIAUsAkYKCQBCJAidgEDhSAAAQAyRgACpEAuXAMGCkcAAqSIK8BAIQhAAICMEYAAKWAXMFBIAhAgRewCBgpBAAIAZIwABEiBvivAbgUHFIIABADIGAEIAJAxAhAgBXKHrwEDDDsBCACQMQIQIAVyDgIECkgAAqSIK8BAIQhAAICMEYAAKeACMFBIJRWA9957bzQ1NUVVVVU0NzfH008/fdTnr127Npqbm6OqqiomT54cK1asKNCkAIPLuxccUAAlE4APP/xwLF68OG699dZoa2uLuXPnxvz582Pr1q2DPn/z5s2xYMGCmDt3brS1tcUtt9wS1113XaxatarAkwMAFFbJBOCdd94ZX/rSl+Lqq6+OqVOnxrJly6KxsTGWL18+6PNXrFgRkyZNimXLlsXUqVPj6quvji9+8Ytxxx13FHhygHANGCioiqQHGArd3d2xfv36uPnmmwc83tLSEs8888ygr3n22WejpaVlwGOXXnpp3HfffXHgwIEYMWLEEa/p6uqKrq6u/u87OzuHYHqAw37w6q7Yvbfro58IGfFb0+vit6bXJz1GySmJANyzZ08cPHgwamtrBzxeW1sb7e3tg76mvb190Of39PTEnj17or7+yH/Yli5dGl/96leHbnCA9508emRERPx89/74+e79CU8D6XH6+BME4DAoiQDs8+sHqebz+aMerjrY8wd7vM+SJUuitbW1//vOzs5obGz8pOMC9PvCeafFyaNHxN73epIeBVJl5qSTkx6hJJVEAI4fPz7Ky8uPWO3btWvXEat8ferq6gZ9fkVFRYwbN27Q11RWVkZlZeXQDA3wASdUVsQV505KegwgI0piE8jIkSOjubk51qxZM+DxNWvWxPnnnz/oa+bMmXPE85944omYPXv2oJ//AwAoFSURgBERra2t8U//9E9x//33x8aNG+OGG26IrVu3xqJFiyLi0OXbK6+8sv/5ixYtii1btkRra2ts3Lgx7r///rjvvvvixhtvTOpHAAAoiJK4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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "log_rang_log_freq('pt-2-word-ngrams-log-log', ngrams(get_words(pan_tadeusz), 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tajemniczy język Manuskryptu Wojnicza\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[Manuskrypt Wojnicza](https://pl.wikipedia.org/wiki/Manuskrypt_Wojnicza) to powstały w XV w. manuskrypt spisany w\n", + "tajemniczym alfabecie, do dzisiaj nieodszyfrowanym. Rękopis stanowi\n", + "jedną z największych zagadek historii (i lingwistyki).\n", + "\n", + "[Źródło: https://commons.wikimedia.org/wiki/File:VoynichManuscript(135).jpg](./02_Jezyki/voynich135.jpg)\n", + "\n", + "Sami zbadajmy statystyczne własności tekstu manuskryptu. Użyjmy\n", + "transkrypcji Vnow, gdzie poszczególne znaki tajemniczego alfabetu\n", + "zamienione na litery alfabetu łacińskiego, cyfry i gwiazdkę. Jak\n", + "transkrybować manuskrypt, pozostaje sprawą dyskusyjną, natomiast wybór\n", + "takiego czy innego systemu transkrypcji nie powinien wpływać\n", + "dramatycznie na analizę statystyczną.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9 OR 9FAM ZO8 QOAR9 Q*R 8ARAM 29 [O82*]OM OPCC9 OP" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "voynich_url = 'http://www.voynich.net/reeds/gillogly/voynich.now'\n", + "voynich = requests.get(voynich_url).content.decode('utf-8')\n", + "\n", + "voynich = re.sub(r'\\{[^\\}]+\\}|^<[^>]+>|[-# ]+', '', voynich, flags=re.MULTILINE)\n", + "\n", + "voynich = voynich.replace('\\n\\n', '#')\n", + "voynich = voynich.replace('\\n', ' ')\n", + "voynich = voynich.replace('#', '\\n')\n", + "\n", + "voynich = voynich.replace('.', ' ')\n", + "\n", + "voynich[100:150]" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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AAAAUDqxB5aDzGazjh8/rho1ali1Hzt2TOXKlXNOUoCLqTFmnV39k6d0LqFMAAAAAAA3M2ZgOahbt26Kjo7Wzz//bGk7duyYRo4cqW7dujkxMwAAAAAAgNKFApaDpk+frnLlyqlOnTqqWbOmatasqbp166pChQqaMWOGs9MDAAAAAAAoNVhC6CCz2awdO3Zo48aN+v777+Xt7a1GjRrpP//5j7NTAwAAAAAAKFUoYF0Hk8mkiIgIRUREODsVAAAAAACAUosClh1mz56tAQMGqEyZMpo9e3ahfYcNG3aDsgIAAAAAACjdKGDZYdasWerZs6fKlCmjWbNmXbOfyWSigAUAAAAAAFBMKGDZISkpqcB/AwAAAAAAoORwFUIAAAAAAAC4NGZg2WHEiBE29505c2YJZgKUfjXGrLO5b/KUziWYCQAAAADA2Shg2eG7776zqZ/JZCrhTAAAAAAAAP49KGDZYfPmzc5OAUAR7Jm5JTF7CwAAAABuBuyBdZOYMGGCTCaT1S0oKMhy3DAMTZgwQcHBwfL29labNm30448/Wj1Gdna2hg4dqooVK6pcuXLq1q2bfv31V6s+6enpioqKktlsltlsVlRUlM6ePXsjThEAAAAAAKBAFLBuIvXr11dKSorlduDAAcuxadOmaebMmZozZ4727NmjoKAgdejQQefOnbP0iY6O1po1a7RixQpt375dWVlZ6tKli3Jzcy19evToof379ys2NlaxsbHav3+/oqKibuh5AgAAAAAAXIklhDcRd3d3q1lXlxmGobfeektjx47Vww8/LEmKiYlRYGCgli9frmeffVYZGRlasGCBlixZovbt20uSli5dqpCQEH311VeKjIxUYmKiYmNjFR8frxYtWkiS5s+fr7CwMB0+fFihoaE37mQBAAAAAAD+f8zAuokcPXpUwcHBqlmzpp544gkdP35ckpSUlKTU1FRFRERY+np5eSk8PFw7duyQJCUkJOjixYtWfYKDg9WgQQNLn507d8psNluKV5LUsmVLmc1mS5+CZGdnKzMz0+oGAAAAAABQXChg3SRatGihjz76SBs2bND8+fOVmpqqVq1a6c8//1RqaqokKTAw0ComMDDQciw1NVWenp7y8/MrtE9AQEC+sQMCAix9CjJ58mTLnllms1khISHXda4AAAAAAABXooB1k+jUqZMeeeQRNWzYUO3b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5igxMVHTpk3T9OnT9c4779h8zgsXLtTQoUO1ffv2Qr8UXOmRRx7R999/r5iYGB05ckRr165VmzZtCv35XKljx45KSUmxun388ccOx9asWdOmmOTkZH344Yf6/PPPNWjQIJvGuzL++PHjev311zV37lyNGjXKptg9e/bogw8+UKNGjWzq36pVq3znl5KSovfff18mk6nQvENCQrRixQpduHDB0vb333/r448/VrVq1a4Zt3XrVg0ePFjx8fHauHGjLl26pIiICJuLdGXKlNHUqVNtLgpe6cr/z02bNsnd3V1dunQpNOZ6XqeOcnNzU0xMjGJjY7Vs2TJL+9ChQ+Xv769x48YV+5iS9O233+qrr76yavvqq6/07bfflsh4ffv21ddff61ffvkl37GFCxeqSZMmatq0aYGxVz5f33rrLfn6+lq1vf3221b927Ztq6ysLO3du9fStm3bNgUFBWnPnj1WX/q3bNmi4OBg3XHHHcV0pv+48r1h/fr1atu2rYYPH64uXbpYFdauVrVqVU2ZMkV79+7V3r17dd999+mBBx7Qjz/+WKz5XS09PV2tW7eWh4eH1q9fr0OHDunNN9/UrbfeavNjlC1bVkFBQXJ3d7drbLPZbNcXzMzMTD344IPav3+/1e3TTz8tdCaLyWTSokWLtGvXLr3//vuW9qSkJL344ot6++23C30/27Nnj9XzbuPGjZKkxx57rMict23bplmzZungwYN66qmn9PTTT+v48eNFxh0/flx33nmn4uLiNGnSJH333Xf66quv9Pzzz+vzzz/P9xq+0sqVKxUdHa2xY8fqu+++07333qtOnTrZ/Hks/fMFd/HixTb3v9qHH36onj17as6cORo9erTDj1MaXbhwQQsWLFC/fv3simvUqJFq1Khh9XkBa/Xr17d6rR44cKBEx0tISNBDDz2kmTNn6tVXX9WGDRvk7++vbt266e+//y7RsQFcgwHgunTs2NGoWrWq8ddff1m1p6SkGGXLljUGDhx4zdhOnToZVapUMbKysvIdS09Pv2bcX3/9Zbi5uRlffPGFVXvjxo2NsWPHFppv586djT59+li1Pfzww8ZTTz1VaNxlWVlZho+Pj/HTTz8Z3bt3NyZOnFhkTHp6uiHJ2LJli01jXK1Xr17GAw88cMNiC4oZMWKE4e/v73B8v379jKCgoCJjz507Z9SuXdvYuHGjER4ebgwfPtzGrK0dOnTI8PX1LfT5cDnPhg0bGkuXLrW0L1u2zGjYsKHxwAMPGL169bJpvLS0NEOSsXXr1iL79urVy+jSpYtRp04d44UXXrC0r1mzxijqY6mgn+0333xjSDLS0tKuGXc9r9Pr9fbbbxt+fn7GqVOnjE8//dTw8PAwvvvuO5vj7X0Onzhxwnj00UeN5557zmjatKnx3HPPGd27dzd+/fXXEhnz4sWLRmBgoDFhwgSr9vPnzxs+Pj7GO++8Y9PjLFq0yDCbzUX2Cw4ONiZPnmy5P3r0aGPw4MFGvXr1jI0bN1ra77vvPqNnz542jW2ra/1cNm3aZEgy5s+fb9fj+fn5GR9++GGhfa71PmDL68UwDOPFF1807rnnHrvysmV8e0gy1qxZU2S/9evXG+PHj8/XnpSUZHTv3r3I+MWLFxvly5c3jh8/buTl5Rlt27Z16LNj+PDhxu23327k5eXZFffnn38akoxt27YV2TcyMtKoWrVqgZ//hmEUOvbdd9+d7z2rTp06xpgxY2zONTw83Fi0aJHN/a987k+dOtXw8vIyPvnkE5vjDcMwNm/ebFSvXt2hMa9+HEmF/p5UWHxRwsPDjaFDhxovvPCC4efnZwQGBhb4vLyW1atXGxUrVrR7XMMwjAkTJhj33nuvXTF///23MXToUKNSpUqGl5eX0bp1a2P37t1FxlWvXt2YNWuWVVvjxo1tOtesrCwjKirKKFeunBEUFGTMmDHDpveK8PBwY/DgwcbgwYMNs9ls+Pv7G2PHjrXptTZ+/HijcePGRfa7ltzcXGPKlCnG7bffbnh6ehohISHG66+/fs3+P/30kxEUFGTExMRYtf/9999G165djW7duhkXL14sMDYtLc0IDAw03njjDUtbfHy84eHhYWzYsKHQPGNiYgx/f3/j77//tmp/+OGHjaioqKJO0+jVq5chyeqWlJRUZNz69euN1q1bW/5fOnfubBw7dqzIOOBGYwYWcB3OnDmjDRs2aNCgQfL29rY6FhQUpJ49e2rlypUyDKPA2NjYWA0ePFjlypXLd7ywv45funRJubm5KlOmjFW7t7e3tm/fXmjO99xzjzZt2mRZVvP9999r+/btuv/++wuNu2zlypUKDQ1VaGionnrqKS1atKjA87tS+fLlVb58eX366afKzs62aRxXcvz4ccXGxsrDw8Phx/D29tbFixeL7Dd48GB17tz5mkuybHH27Fk9+OCDCg8P13//+98i+z/zzDNatGiR5f7ChQvVp08fu8bMyMiQJPn7+9vU383NTZMmTdI777yjX3/91a6xrpSVlaVly5apVq1aqlChQoF9rud1WhyGDh2qxo0b6+mnn9aAAQM0btw4NWnSpETGkv6ZVbdq1SqZzWbt27dPt956q1asWKEqVaqUyHju7u56+umntXjxYquf4apVq5STk6OePXsW63ht2rTR5s2bLfc3b96sNm3aKDw83NKek5OjnTt3XnP5bHG777771LhxY/3vf/+zqX9ubq5WrFih8+fPKywsrERzW7t2rZo3b67HHntMAQEBuvPOOzV//vwSHdNZevXqpXbt2umZZ57RnDlzdPDgQX3wwQd2PUZOTo6WLl2qPn362LxEU/pnGePIkSPVoEED3X333YX2/fPPPxUXF3fNz39J1xw7JydHCQkJioiIsGqPiIjQjh07bM7XUWPGjNF///tfffHFF/mWR5cmMTExKleunHbt2qVp06bptddes8zMK8o333yj5s2bOzTu3Xffrd27d9v1u9Lo0aO1evVqxcTEaN++fapVq5YiIyNLZGbxZS+88II2b96sNWvWKC4uTlu2bLF5WXJMTIzc3d21a9cuzZ49W7NmzdKHH35oU+zRo0cVHBysmjVr6oknnrBptuNlL730kqZOnapXX31Vhw4d0vLlyxUYGHjN/qGhoUpJSdHTTz9t1e7l5aW1a9fqs88+u+as1EqVKmnhwoWaMGGC9u7dq6ysLD311FMaNGhQvtfu1R577DHl5uZq7dq1lrY//vhDX3zxhZ555pkiz/Ptt99WWFiYZel3SkqKQkJCiow7f/68RowYoT179mjTpk265ZZb9NBDD9m1xQhwI1DAAq7D0aNHZRiG6tatW+DxunXrKj09Xb///nu+Y8eOHZNhGKpTp47d4/r4+CgsLEz//e9/dfr0aeXm5mrp0qXatWtXkfuNvPjii3ryySdVp04deXh46M4771R0dLSefPJJm8ZesGCBnnrqKUn/LKXJysoqcr8ud3d3LV68WDExMbr11lvVunVrvfzyyzbtW3TZF198YSmEXb7ZUpwpKNaWZSGXY7y9vXX77bfr0KFDevHFF23O90q7d+/W8uXL1a5du0L7rVixQvv27dPkyZMdGkeS8vLy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PT09Lc/d5s2ba8+ePXr77betNh6/mq+vr2WJ7pXOnj1rU5G6cuXK+WZ51a1bV6tXry4y9mbl7u5u94bzkvTLL7/oq6++snkp6GVJSUmSZPMX+MvvST/99JNV++WC69VLna9UsWJFubm55Zuhk5aWVuhyqIEDB+rxxx+33O/Zs6dlxsVlRRXfqlSpotWrV6tt27bq2LGjYmNj5ePjU2jM9Sro87uk/wggKd9ntslksnkpVcWKFR26QIkky7K/SpUq2dT/Wn8MtaWgfsstt+RbOm/LVgcltdzeXuXKlVPDhg119OjRIvsW9poqScePH9fp06eVl5enX375xeaL89x5551q3LixPvroI0VGRurAgQP6/PPPSzTXrl27KiQkRPPnz1dwcLDy8vLUoEED5eTklOi4gL2YgQVchwoVKqhDhw6aO3eu1VXcpH8uj71s2TJ17969wF8i/P39FRkZqXfffbfAK7cVdXnoy8qVK6fKlSsrPT1dGzZs0AMPPFBo/7/++ivfUis3N7cifzG7dOmSPvroI7355ptWfwn9/vvvVb16dYeumlOvXj2br1rnbOPHj9eMGTN0+vRpm/pf/qW7evXqNu2d1a5dOx04cMDqZ9u8eXP17NlT+/fvL7J4tX//fvXp00dTpkwp8FLyRenYsaNycnKUk5NjU7xhGBoyZIj+97//6euvvy7yi3thpkyZos8//9zh/VtMJpNuueWWfK/By2x5ndq7XMhWFy5cUK9evfTss8+qffv2+vDDD7Vnz55CCxbF6colfSXt8ccfl5ubm5YvX66YmBg988wzJVaka9u2rbZs2aItW7ZYLakIDw/Xhg0bFB8ff0OXD3799dc6cOCA3XsCGYZR5EybOnXqWF118bI9e/bYVDBp3bq1Dh8+bNV25MgRVa9e3a5c/w0WLVqkgIAAde7c2a64y7P/bHX5PWnOnDl2fwZ6enqqWbNm+fZj2rhxo1q1anXNOH9/f9WqVcty8/b2VkBAQL62olSrVk1bt25VWlqaIiIilJmZaVf+/wZ33nmnwzMrDx48qKpVq9o8C7pWrVry9PS02v/04sWL2rt37zWXzV9WqVIlq20nMjMzLcXYosb08PBQfHy8pS09Pd2yt2pRroy7fL927do2LXO7UnZ2thITE1W5cuUi+9auXVve3t42LwMtDpf3gOzevbtef/119e3bV7/99pvN8f369dOiRYu0cOFCtW/f3qZ9rC7z9PS0eUmn9M++fImJiXrllVfUrl07y9YKgCuigAVcp8uzYyIjI/XNN9/o5MmTio2NVYcOHVSlShW98cYb14ydO3eucnNzdffdd2v16tU6evSoEhMTNXv27CI39t2wYYNiY2OVlJSkjRs3qm3btgoNDS1yg8euXbvqjTfe0Lp165ScnKw1a9Zo5syZRS61+OKLL5Senq6+ffuqQYMGVrdHH3200L0W/vzzT913331aunSpfvjhByUlJWnVqlWaNm1akQW3yy7vCXHl7Y8//rAptji0adNG9evX16RJk0rk8X18fPL9XMuVK6cKFSoUua/UH3/8oQcffFBt2rTRU089le/nZMveTm5ubkpMTFRiYqJNv0QOHjzYshTVx8fHMta1ikiFadiwoXr27FnoEssrXflcSExM1NChQ5WVlaWuXbteM6aw1+kdd9yhcePG2Z23LcaMGaO8vDxNnTpV0j9f/t5880298MILJbqkzxnKly+v7t276+WXX9bp06dLrCgo/VPA2r59u/bv32+ZgSX9U0iYP3++/v777xIrYF1+/p06dUr79u3TpEmT9MADD6hLly75Nvu90ssvv6xt27YpOTlZBw4c0NixY7Vly5YiN7kfNGiQfv75Zw0ePFjff/+9jhw5onfffVcLFizQCy+8UGS+zz//vOLj4zVp0iQdO3ZMy5cv1wcffGDzEux/i7y8PC1atEi9evWye/bW5s2b7do3UPrn8//SpUtq3ry5Vq5cqcTERB0+fFhLly7VTz/9VOj78IgRI/Thhx9q4cKFSkxM1PPPP68TJ05o4MCBduXgqKpVq2rLli36888/FRERUeAMQVeRkZGRbwliSS+JioyM1I8//uhQAWDbtm1FbvJ9pXLlyum5557TCy+8oNjYWB06dEj9+/fXX3/9pb59+xYae99992nJkiXatm2bDh48qF69etn0+V++fHn17dtXL7zwgjZt2qSDBw+qd+/e19yH8monT57UiBEjdPjwYX388cd65513NHz48CLjRo0apa1btyopKUm7du3So48+qszMzCJXD0j/rAB48cUXNXr0aH300Uf6+eefFR8fX2L7hEnS2LFjlZGRodmzZ2v06NGqW7dukf8nV+rZs6dOnTql+fPn270cv0aNGtq1a5eSk5P1xx9/FPlHaj8/P1WoUEEffPCBjh07pq+//lojRoywa0zghrmBVzwESq3k5GSjd+/eRlBQkOHh4WGEhIQYQ4cONf74448iY0+fPm0MHjzYqF69uuHp6WlUqVLF6Natm7F58+ZC41auXGncdttthqenpxEUFGQMHjzYOHv2bJHjZWZmGsOHDzeqVatmlClTxrjtttuMsWPHGtnZ2YXGdenSxbj//vsLPJaQkGBIMhISEgo8/vfffxtjxowxmjZtapjNZqNs2bJGaGio8corrxh//fVXkTkXdElgSUZoaKhNsfZeRvtaMcuWLTM8PT2NEydOFPuYBbH18vWLFy8u8Odz+Xaty5YXlecDDzxg9OrVq8Bj1xrLlsuyFzRucnKy4eXlZRT1sXT1c8HHx8e46667bLqce1JSktGrVy8jMDDQMJlMhiTj4YcfNs6fP19krCO2bNliuLm5Gdu2bct3LCIiwrjvvvtsunR4VFSU8cgjj5REitfk6HN4x44dhiQjIiLC7thFixYZZrPZpr5JSUmGJKNOnTpW7SdPnjQkGbfffrvNY9rzq9CVzz93d3ejUqVKRvv27Y2FCxcaubm5hcb26dPH8j5fqVIlo127dkZcXJxN4+7du9eIjIw0AgICDF9fX6N58+bGxx9/bHPen3/+udGgQQPDy8vLqFOnjvHBBx/YHGvr+1BhJBlr1qwpst/69euN8ePH52tPSkoyunfvbvN448ePNxo3bmx7goZhbNiwwZBkHD582K44w7D/eXTZ6dOnjSFDhhg1a9Y0PDw8jPLlyxt33323MX369CLfl959913L86lp06bG1q1b7Ro7PDzcpvfrywp6Tzh9+rQRGhpq3HXXXUZ6enqRj7F58+Zrfh7ZOublx5FU5JjX+t3hWp9rlxX0nC/s87AgLVu2NN577z2b+xuGYVy4cMHw9fU1du7caXfc0KFDjYoVKxpeXl5G69atjd27dxcZl5GRYTz++OOGr6+vERISYixevNho3Lhxga/Bq507d8546qmnjLJlyxqBgYHGtGnTbHqvCA8PNwYNGmQMHDjQ8PX1Nfz8/IwxY8bY9FnYvXt3o3LlyoaHh4cRHBxsPPzww8aPP/5YZNxlubm5xuuvv25Ur17d8PDwMKpVq2ZMmjTJ5nh7bN682XB3d7f6/P/ll18Ms9lszJ071+bHiYqKMvz9/Y2///7brvEPHz5stGzZ0vD29jYkGUlJSUXGbNy40ahbt67h5eVlNGrUyNiyZYvN793AjWQyDBdZyAwAwA00fvx4zZw5U3FxcUXOeHSmjh07qlatWpozZ46zUyl1JkyYYFmKiIK1adNGTZo00VtvveXwY5hMJq1Zs6bI/R5jY2MVHx+vCRMmWLUnJydrzJgxWrFihcM5wPm2bNmi3r17l7rZpwX58ssvNWrUKB08eNDmmUnvvvuuPvvsM8XFxZVwdiXDlveK4ng/+Tfp0KGD6tata9PFh4B/C5YQAgD+lSZOnKjZs2dr165dNm/OeyOlp6dr3bp12rJlyw27ZP2/zYYNGzRt2jRnp+Hy5s6dq/Lly+vAgQN2xV2+yh3wb3P//ffr2WeftVxFzhYeHh42L6VH6XbmzBmtWLFCX3/9Ncu9gatwFUIAwL9WUXvGOVOfPn20Z88ejRw50ua94mCfnTt3OjsFl7ds2TLL3nbVqlWzK/a1117TqFGjJMmmjZbNZrO++OILffHFF/mOOXJxCsCZbNnX6UoDBgwooUxws2natKnS09M1depUm69uCvxbsIQQAAAAQIlKTk7Wp59+qujoaGenAgC4SVHAAgAAAAAAgEtjDywAAAAAAAC4NApYAAAAAAAAcGkUsAAAAAAAAODSKGABAAAAAADApVHAAgAAAAAAgEujgAUAAAAAAACXRgELAAAAAAAALu3/A59jPaRVZ1iIAAAAAElFTkSuQmCC", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rang_freq_with_labels('voy-chars', get_characters(voynich))" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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yszMNB0Jxxg9erTWrl2rVatWNbyGDBmi66+/XqtWraL8BYERI0Yct3XSpk2b1K1bN0OJcKyKigo5HI2rgdPpZBuYDogRwCCTk5OjG2+8UUOGDNGwYcM0ffp05efna9KkSaajQXWLC2bOnKl3331XsbGxDaO1brdbUVFRhtMhNjb2uPmYMTEx6ty5M/M0g8Tdd9+t4cOH65FHHtG1116rpUuXavr06Zo+fbrpaJB0xRVX6OGHH1ZGRob69u2rlStX6oknntBPf/pT09HQytgGJgg9++yzevTRR1VYWKh+/frpySefZIuRIHGyuZgvvviifvKTn7RvGDTJqFGj2AYmyLz33nuaOnWqNm/erMzMTOXk5OjWW281HQuSSktL9Zvf/EazZ89WUVGR0tLSNGHCBP32t79VRESE6XhoRRRAAAAAm2EOIAAAgM1QAAEAAGyGAggAAGAzFEAAAACboQACAADYDAUQAADAZiiAAAAANkMBBAAAsBkKIAAAgM1QAAEAAGyGAggAAGAzFEAAAACboQACAADYDAUQAADAZiiAAAAANkMBBAAAsBkKIAAAgM1QAAEAAGyGAggAAGAzFEAAAACboQACAADYDAUQAADAZiiAAAAANkMBBAAAsBkKIAAAgM1QAAEAAGyGAggAAGAzFEAAAACboQACAADYDAUQAADAZiiAAAAANvP/AaFiaqrJfHMyAAAAAElFTkSuQmCC", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "log_rang_log_freq('voy-log-log', get_words(voynich))" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABLAAAAEsCAYAAADTvUpQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABCNklEQVR4nO3de5xO9d7/8fdlzjPG1RyYMRmHMhGGdrRJdrQxklNpxy4d2aXkMCGRasve0e5gdLj1a5fbSCGUUqnQjkgip3JIYuTQTBTNODXDzOf3R3uu22UGY8zMWng9H4/14Frre631Weu6rrWueV/ftZbHzEwAAAAAAACAS1VyugAAAAAAAADgZAiwAAAAAAAA4GoEWAAAAAAAAHA1AiwAAAAAAAC4GgEWAAAAAAAAXI0ACwAAAAAAAK5GgAUAAAAAAABXI8ACAAAAAACAqxFgAQAAAAAAwNUIsAAAAAAAAOBqBFgAAAAAAABwNQIsAAAAAAAAuBoBFgAAAAAAAFyNAAsAAAAAAACuRoAFAAAAAAAAVyPAAgAAAAAAgKsRYAEAAAAAAMDVCLAAAAAAAADgagRYAAAAAAAAcDUCLAAAAAAAALgaARYAAAAAAABcjQALAAAAAAAArkaABQAAAAAAAFcjwAIAAAAAAICrEWABAAAAAADA1QiwAAAAAAAA4GoEWAAAAAAAAHA1AiwAAAAAAAC4GgEWAAAAAAAAXI0ACwAAAAAAAK5GgAUAAAAAAABXI8ACAAAAAACAqxFgAQAAAAAAwNUIsAAAAAAAAOBqgU4XgHNPQUGBfvzxR0VGRsrj8ThdDgAAAADgHGdm2r9/vxISElSpEn11zkUEWChzP/74oxITE50uAwAAAABwntmxY4dq1KjhdBkoBwRYKHORkZGSft9xVKlSxeFqAAAAAADnupycHCUmJvr+HsW5hwALZa7wtMEqVaoQYAEAAAAAKgyXsTl3cWIoAAAAAAAAXI0ACwAAAAAAAK5GgAUAAAAAAABXI8ACAAAAAACAqxFgAQAAAAAAwNUIsAAAAAAAAOBqBFgAAAAAAABwNQIsAAAAAAAAuFqg0wUATqo9/AOnS5AkbXuyk9MlAAAAAADgWvTAAgAAAAAAgKsRYAEAAAAAAMDVCLAAAAAAAADgagRYAAAAAAAAcDUCLAAAAAAAALgaARYAAAAAAABcjQALAAAAAAAArkaABQAAAAAAAFcjwAIAAAAAAICrEWABAAAAAADA1QiwAAAAAAAA4GoEWAAAAAAAAHA1AiwAAAAAAAC4GgEWAAAAAAAAXI0ACwAAAAAAAK5GgAUAAAAAAABXI8A6h4waNUoej8dviI+P9003M40aNUoJCQkKCwtTmzZttH79er955ObmasCAAYqNjVVERIS6du2qnTt3VvSqAAAAAAAA+BBgnWMaNmyozMxM3/DNN9/4pj311FMaN26cXnzxRa1YsULx8fFq37699u/f72uTmpqq2bNna/r06VqyZIkOHDigzp07Kz8/34nVAQAAAAAAUKDTBaBsBQYG+vW6KmRmGj9+vEaOHKnu3btLkiZPnqy4uDhNnTpVffv2VXZ2tiZOnKgpU6aoXbt2kqTXX39diYmJWrBggTp06FCh6wIAAAAAACDRA+ucs3nzZiUkJKhOnTr661//qq1bt0qSMjIylJWVpZSUFF/bkJAQtW7dWkuXLpUkrVy5UkeOHPFrk5CQoEaNGvnaFCc3N1c5OTl+AwAAAAAAQFkhwDqHNG/eXK+99po+/vhjvfLKK8rKylLLli31yy+/KCsrS5IUFxfn95y4uDjftKysLAUHBysqKuqEbYozduxYeb1e35CYmFjGawYAAAAAAM5nBFjnkI4dO+rGG29UcnKy2rVrpw8++EDS76cKFvJ4PH7PMbMi4453qjYjRoxQdna2b9ixY8cZrAUAAAAAAIA/AqxzWEREhJKTk7V582bfdbGO70m1e/duX6+s+Ph45eXlad++fSdsU5yQkBBVqVLFbwAAAAAAACgrBFjnsNzcXG3cuFHVq1dXnTp1FB8fr/nz5/um5+XladGiRWrZsqUkqWnTpgoKCvJrk5mZqXXr1vnaAAAAAAAAVDTuQngOGTp0qLp06aKaNWtq9+7d+uc//6mcnBzdcccd8ng8Sk1N1ZgxY5SUlKSkpCSNGTNG4eHhuuWWWyRJXq9Xffr00ZAhQxQTE6Po6GgNHTrUd0oiAAAAAACAEwiwziE7d+7UzTffrJ9//llVq1ZVixYttGzZMtWqVUuSNGzYMB0+fFj9+vXTvn371Lx5c82bN0+RkZG+eaSlpSkwMFA9evTQ4cOH1bZtW6WnpysgIMCp1QIAAAAAAOc5j5mZ00Xg3JKTkyOv16vs7GzXXw+r9vAPnC5BkrTtyU5OlwAAAAAAZ62z6e9QlA7XwAIAAAAAAICrEWABAAAAAADA1QiwAAAAAAAA4GoEWAAAAAAAAHA1AiwAAAAAAAC4GgEWAAAAAAAAXI0ACwAAAAAAAK5GgAUAAAAAAABXI8ACAAAAAACAqxFgAQAAAAAAwNUIsAAAAAAAAOBqBFgAAAAAAABwNQIsAAAAAAAAuBoBFgAAAAAAAFyNAAsAAAAAAACuRoAFAAAAAAAAVyPAAgAAAAAAgKsRYAEAAAAAAMDVCLAAAAAAAADgagRYAAAAAAAAcLVApwuA9Ouvv2r58uXavXu3CgoK/KbdfvvtDlUFAAAAAADgDgRYDnvvvffUq1cvHTx4UJGRkfJ4PL5pHo+HAAsAAAAAAJz3OIWwgs2YMUM//PCD7/GQIUPUu3dv7d+/X7/++qv27dvnG/bu3etgpQAAAAAAAO5AgFXBKleurGuuuUZfffWVJGnXrl0aOHCgwsPDHa4MAAAAAADAnQiwKth1112nd999V/fdd58kqUOHDr4wCwAAAAAAAEVxDSwHJCcn67PPPpMkderUSQ8++KA2bNig5ORkBQUF+bXt2rWrEyUCAAAAAAC4BgGWQ8LCwiRJd999tyRp9OjRRdp4PB7l5+dXaF0AAAAAAABuQ4DlsIKCAqdLAAAAAAAAcDWugeUiv/32W5nNa+zYsfJ4PEpNTfWNMzONGjVKCQkJCgsLU5s2bbR+/Xq/5+Xm5mrAgAGKjY1VRESEunbtqp07d5ZZXQAAAAAAAKeLAMth+fn5+sc//qELL7xQlStX1tatWyVJjz76qCZOnFiqea5YsUL//ve/1bhxY7/xTz31lMaNG6cXX3xRK1asUHx8vNq3b6/9+/f72qSmpmr27NmaPn26lixZogMHDqhz586cyggAAAAAABxDgOWwJ554Qunp6XrqqacUHBzsG5+cnKxXX331tOd34MAB9erVS6+88oqioqJ8481M48eP18iRI9W9e3c1atRIkydP1qFDhzR16lRJUnZ2tiZOnKhnn31W7dq10x/+8Ae9/vrr+uabb7RgwYIzX1kAAAAAAIBSIMBy2GuvvaZ///vf6tWrlwICAnzjGzdurG+//fa053f//ferU6dOateund/4jIwMZWVlKSUlxTcuJCRErVu31tKlSyVJK1eu1JEjR/zaJCQkqFGjRr42AAAAAAAAFY2LuDts165dqlu3bpHxBQUFOnLkyGnNa/r06Vq1apVWrFhRZFpWVpYkKS4uzm98XFycfvjhB1+b4OBgv55bhW0Kn1+c3Nxc5ebm+h7n5OScVt0AAAAAAAAnQw8shzVs2FCLFy8uMn7mzJn6wx/+UOL57NixQ4MGDdLrr7+u0NDQE7bzeDx+j82syLjjnarN2LFj5fV6fUNiYmKJ6wYAAAAAADgVemA57O9//7tuu+027dq1SwUFBXr77be1adMmvfbaa3r//fdLPJ+VK1dq9+7datq0qW9cfn6+PvvsM7344ovatGmTpN97WVWvXt3XZvfu3b5eWfHx8crLy9O+ffv8emHt3r1bLVu2POGyR4wYocGDB/se5+TkEGIBAAAAAIAyQw8sh3Xp0kVvvvmm5s6dK4/Ho8cee0wbN27Ue++9p/bt25d4Pm3bttU333yjNWvW+IZmzZqpV69eWrNmjS666CLFx8dr/vz5vufk5eVp0aJFvnCqadOmCgoK8muTmZmpdevWnTTACgkJUZUqVfwGAAAAAACAskIPLBfo0KGDOnTocEbziIyMVKNGjfzGRUREKCYmxjc+NTVVY8aMUVJSkpKSkjRmzBiFh4frlltukSR5vV716dNHQ4YMUUxMjKKjozV06FAlJycXuSg8AAAAAABARSHAOo8MGzZMhw8fVr9+/bRv3z41b95c8+bNU2RkpK9NWlqaAgMD1aNHDx0+fFht27ZVenq63x0SAQAAAAAAKpLHzMzpIs430dHR+u677xQbG6uoqKiTXiB97969FVhZ2cjJyZHX61V2drbrTyesPfwDp0uQJG17spPTJQAAAADAWets+jsUpUMPLAekpaX5ej2NHz/e2WIAAAAAAABcjgDLAXfccUex/wcAAAAAAEBRBFgukJ+fr9mzZ2vjxo3yeDy69NJL1a1bNwUG8vIAAAAAAACQkDhs3bp16tatm7KyslSvXj1J0nfffaeqVatqzpw5Sk5OdrhCAAAAAAAAZ1VyuoDz3d/+9jc1bNhQO3fu1KpVq7Rq1Srt2LFDjRs31j333ON0eQAAAAAAAI6jB5bD1q5dq6+++kpRUVG+cVFRUXriiSd0xRVXOFgZAAAAAACAO9ADy2H16tXTTz/9VGT87t27VbduXQcqAgAAAAAAcBcCLIeNGTNGAwcO1KxZs7Rz507t3LlTs2bNUmpqqv71r38pJyfHNwAAAAAAAJyPOIXQYZ07d5Yk9ejRQx6PR5JkZpKkLl26+B57PB7l5+c7UyQAAAAAAICDCLAc9umnnzpdAgAAAAAAgKsRYDmsdevWTpcAAAAAAADgagRYLnHo0CFt375deXl5fuMbN24sM1OvXr00depUh6oDAAAAAABwDgGWw/bs2aO77rpLH374YbHTx44dq3bt2umTTz6p4MoAAAAAAADcgbsQOiw1NVX79u3TsmXLFBYWpo8++kiTJ09WUlKS5syZo7CwMPXp00f33nuv06UCAAAAAAA4gh5YDvvPf/6jd999V1dccYUqVaqkWrVqqX379qpSpYrGjh2rJUuWaMCAAU6XCQAAAAAA4Bh6YDns4MGDqlatmiQpOjpae/bskSQlJydr1apVTpYGAAAAAADgCgRYDqtXr542bdokSbrsssv08ssva9euXfp//+//qXr16g5XBwAAAAAA4DxOIXRYamqqMjMzJUl///vf1aFDB73xxhsKDg5Wenq6s8UBAAAAAAC4AAGWw3r16uX7/x/+8Adt27ZN3377rWrWrKnY2FgHKwMAAAAAAHAHTiF02OjRo3Xo0CHf4/DwcF1++eWKiIjQ6NGjHawMAAAAAADAHQiwHPb444/rwIEDRcYfOnRIjz/+uAMVAQAAAAAAuAsBlsPMTB6Pp8j4tWvXKjo62oGKAAAAAAAA3IVrYDkkKipKHo9HHo9Hl1xyiV+IlZ+frwMHDujee+91sEIAAAAAAAB3IMByyPjx42Vm6t27tx5//HF5vV7ftODgYNWuXVtXXnmlgxUCAAAAAAC4AwGWQ+644w5JUp06dXTVVVcpMJCXAgAAAAAAoDhcA8thkZGR2rhxo+/xu+++q+uvv14PP/yw8vLyHKwMAAAAAADAHej247C+fftq+PDhSk5O1tatW9WzZ091795dM2fO1KFDhzR+/HinS4RL1B7+gdMlSJK2PdnJ6RIAAAAAAOcZemA57LvvvtNll10mSZo5c6Zat26tqVOnKj09XW+99ZazxQEAAAAAALgAAZbDzEwFBQWSpAULFui6666TJCUmJurnn392sjQAAAAAAABXIMByWLNmzfTPf/5TU6ZM0aJFi9Sp0++nZ2VkZCguLu605vXSSy+pcePGqlKliqpUqaIrr7xSH374oW+6mWnUqFFKSEhQWFiY2rRpo/Xr1/vNIzc3VwMGDFBsbKwiIiLUtWtX7dy588xXFAAAAAAAoJQIsByWlpamlStXqn///ho5cqTq1q0rSZo1a5Zatmx5WvOqUaOGnnzySX311Vf66quv9Oc//1ndunXzhVRPPfWUxo0bpxdffFErVqxQfHy82rdvr/379/vmkZqaqtmzZ2v69OlasmSJDhw4oM6dOys/P7/sVhoAAAAAAOA0eMzMnC4CRf32228KCAhQUFDQGc0nOjpaTz/9tHr37q2EhASlpqbqoYcekvR7b6u4uDj961//Ut++fZWdna2qVatqypQp6tmzpyTpxx9/VGJioubOnasOHTqUaJk5OTnyer3Kzs5WlSpVzqj+8nY2XRj9bKoVAAAAACrS2fR3KEqHHlgOu/POO/XZZ58VGR8aGnpG4VV+fr6mT5+ugwcP6sorr1RGRoaysrKUkpLiaxMSEqLWrVtr6dKlkqSVK1fqyJEjfm0SEhLUqFEjXxsAAAAAAICKRoDlsP379yslJUVJSUkaM2aMdu3adUbz++abb1S5cmWFhITo3nvv1ezZs9WgQQNlZWVJUpHrasXFxfmmZWVlKTg4WFFRUSdsU5zc3Fzl5OT4DQAAAAAAAGWFAMthb731lnbt2qX+/ftr5syZql27tjp27KiZM2fqyJEjpz2/evXqac2aNVq2bJnuu+8+3XHHHdqwYYNvusfj8WtvZkXGHe9UbcaOHSuv1+sbEhMTT7tuAAAAAACAEyHAcoGYmBgNGjRIq1ev1vLly1W3bl3dfvvtSkhI0AMPPKDNmzeXeF7BwcGqW7eumjVrprFjx6pJkyZ67rnnFB8fL0lFelLt3r3b1ysrPj5eeXl52rdv3wnbFGfEiBHKzs72DTt27ChxvQAAAAAAAKdCgOUimZmZmjdvnubNm6eAgABdd911Wr9+vRo0aKC0tLRSzdPMlJubqzp16ig+Pl7z58/3TcvLy9OiRYt8dzts2rSpgoKC/NpkZmZq3bp1J70jYkhIiKpUqeI3AAAAAAAAlJVApws43x05ckRz5szRpEmTNG/ePDVu3FgPPPCAevXqpcjISEnS9OnTdd999+mBBx446bwefvhhdezYUYmJidq/f7+mT5+uhQsX6qOPPpLH41FqaqrGjBmjpKQk3zW3wsPDdcstt0iSvF6v+vTpoyFDhigmJkbR0dEaOnSokpOT1a5du3LfFgAAAAAAAMUhwHJY9erVVVBQoJtvvlnLly/XZZddVqRNhw4ddMEFF5xyXj/99JNuu+02ZWZmyuv1qnHjxvroo4/Uvn17SdKwYcN0+PBh9evXT/v27VPz5s01b948X1AmSWlpaQoMDFSPHj10+PBhtW3bVunp6QoICCirVQYAAAAAADgtHjMzp4s4n02ZMkU33XSTQkNDnS6lzOTk5Mjr9So7O9v1pxPWHv6B0yVIkrY92emUbc6mWgEAAACgIp1Nf4eidOiB5bD4+HiRIeJcQ9gGAAAAAChLBFgOu/HGG5Wbm6umTZuqdevWatOmja666ipVrlzZ6dIAAAAAAABcgbsQOmzfvn1auHChunbtqtWrV+umm25SdHS0WrRooeHDhztdHgAAAAAAgOMIsBwWEBCgK6+8UsOHD9dHH32kpUuX6pZbbtHKlSv19NNPO10eAAAAAACA4ziF0GEbN27UokWLtHDhQi1atEj5+flq1aqVnn32WbVu3drp8oBzmluu1SVxvS4AAAAAOBkCLIc1bNhQVatWVWpqqh599FE1bNjQ6ZIAAAAAAABchVMIHTZw4EBdeOGFGjVqlHr37q2HHnpIH374oQ4cOOB0aQAAAAAAAK5AgOWw8ePHa9WqVfrpp5/0yCOPKD8/X4899phiY2PVokULp8sDAAAAAABwHAGWSxQUFOjo0aPKy8tTbm6ujhw5om3btjldFgAAAAAAgOO4BpbDBg0apIULF2r9+vWKjo7W1VdfrXvuuUdt2rRRo0aNnC4PgEu45YLzXGweAAAAgBMIsBy2a9cu3X333QRWAAAAAAAAJ0CA5bBZs2Y5XQIAAAAAAICrcQ0sAAAAAAAAuBoBFgAAAAAAAFyNAAsAAAAAAACuRoAFAAAAAAAAVyPAAgAAAAAAgKtxF0KH5efnKy0tTTNmzND27duVl5fnN33v3r0OVQYAAAAAAOAO9MBy2OOPP65x48apR48eys7O1uDBg9W9e3dVqlRJo0aNcro8AAAAAAAAxxFgOeyNN97QK6+8oqFDhyowMFA333yzXn31VT322GNatmyZ0+UBAAAAAAA4jgDLYVlZWUpOTpYkVa5cWdnZ2ZKkzp0764MPPnCyNAAAAAAAAFcgwHJYjRo1lJmZKUmqW7eu5s2bJ0lasWKFQkJCnCwNAAAAAADAFQiwHHbDDTfok08+kSQNGjRIjz76qJKSknT77berd+/eDlcHAAAAAADgPO5C6LAnn3zS9/+//OUvqlGjhpYuXaq6deuqa9euDlYGAAAAAADgDgRYLtOiRQu1aNHC6TIAAAAAAABcgwDLBTZt2qQXXnhBGzdulMfjUf369TVgwADVq1fP6dIAAAAAAAAcxzWwHDZr1iw1atRIK1euVJMmTdS4cWOtWrVKjRo10syZM50uDwAAAAAAwHH0wHLYsGHDNGLECI0ePdpv/N///nc99NBDuummmxyqDAAAAAAAwB3ogeWwrKws3X777UXG33rrrcrKynKgIgAAAAAAAHchwHJYmzZttHjx4iLjlyxZoj/96U+nNa+xY8fqiiuuUGRkpKpVq6brr79emzZt8mtjZho1apQSEhIUFhamNm3aaP369X5tcnNzNWDAAMXGxioiIkJdu3bVzp07T3/lAAAAAAAAygCnEDpgzpw5vv937dpVDz30kFauXOm7++CyZcs0c+ZMPf7446c130WLFun+++/XFVdcoaNHj2rkyJFKSUnRhg0bFBERIUl66qmnNG7cOKWnp+uSSy7RP//5T7Vv316bNm1SZGSkJCk1NVXvvfeepk+frpiYGA0ZMkSdO3fWypUrFRAQUEZbAQAAAAAAoGQIsBxw/fXXFxk3YcIETZgwwW/c/fffr3vvvbfE8/3oo4/8Hk+aNEnVqlXTypUrdfXVV8vMNH78eI0cOVLdu3eXJE2ePFlxcXGaOnWq+vbtq+zsbE2cOFFTpkxRu3btJEmvv/66EhMTtWDBAnXo0OE01xYAAAAAAODMEGA5oKCgoEKWk52dLUmKjo6WJGVkZCgrK0spKSm+NiEhIWrdurWWLl2qvn37auXKlTpy5Ihfm4SEBDVq1EhLly4tNsDKzc1Vbm6u73FOTk55rRKAs0Dt4R84XYIkaduTnZwuAQAAAEAZ4RpYDtu+fbtf+FPIzLR9+/ZSz9fMNHjwYLVq1UqNGjWSJN9F4ePi4vzaxsXF+aZlZWUpODhYUVFRJ2xzvLFjx8rr9fqGxMTEUtcNAAAAAABwPAIsh9WuXVuXX365tmzZ4jd+9+7dqlOnTqnn279/f3399deaNm1akWkej8fvsZkVGXe8k7UZMWKEsrOzfcOOHTtKXTcAAAAAAMDxCLBc4NJLL9Uf//hHffLJJ37jzaxU8xswYIDmzJmjTz/9VDVq1PCNj4+Pl6QiPal2797t65UVHx+vvLw87du374RtjhcSEqIqVar4DQAAAAAAAGWFAMthHo9HEyZM0COPPKJOnTrp+eef95t2OsxM/fv319tvv63//Oc/RXpw1alTR/Hx8Zo/f75vXF5enhYtWqSWLVtKkpo2baqgoCC/NpmZmVq3bp2vDQAAAAAAQEXiIu4OK+xl9cADD6h+/fq6+eab9fXXX+uxxx477Xndf//9mjp1qt59911FRkb6elp5vV6FhYXJ4/EoNTVVY8aMUVJSkpKSkjRmzBiFh4frlltu8bXt06ePhgwZopiYGEVHR2vo0KFKTk723ZUQAM4FbrnYvHTqC867pVYujA8AAACnEGC5SMeOHbV06VJ17dpVy5cvP+3nv/TSS5KkNm3a+I2fNGmS7rzzTknSsGHDdPjwYfXr10/79u1T8+bNNW/ePEVGRvrap6WlKTAwUD169NDhw4fVtm1bpaenKyAgoNTrBgA4P5xNYdvZVCsAAMD5jgDLYa1bt1ZwcLDvcYMGDbR8+XLdcMMNp30NrJK093g8GjVqlEaNGnXCNqGhoXrhhRf0wgsvnNbyAQAAAAAAygMBlsM+/fTTIuOio6O1aNEiB6oBAAAAAABwHwIsh82dO1cBAQHq0KGD3/h58+YpPz9fHTt2dKgyAADgBmfTqY5nU60AAODsQoDlsOHDh+vJJ58sMr6goEDDhw8nwAIAACgHhG0AAJxdKjldwPlu8+bNatCgQZHx9evX1/fff+9ARQAAAAAAAO5CgOUwr9errVu3Fhn//fffKyIiwoGKAAAAAAAA3IUAy2Fdu3ZVamqqtmzZ4hv3/fffa8iQIeratauDlQEAAAAAALgDAZbDnn76aUVERKh+/fqqU6eO6tSpo0svvVQxMTF65plnnC4PAAAAAADAcVzE3WFer1dLly7V/PnztXbtWoWFhalx48a6+uqrnS4NAAAADnPLxeYlLjgPAHAWAZYLeDwepaSkKCUlxelSAAAAAAAAXIcAywHPP/+87rnnHoWGhur5558/aduBAwdWUFUAAAAAAADuRIDlgLS0NPXq1UuhoaFKS0s7YTuPx0OABQAAAAAAznsEWA7IyMgo9v8AAAAAAAAoigALAAAAwBlzywXnudg8AJybCLAcMHjw4BK3HTduXDlWAgAAAAAA4H4EWA5YvXp1idp5PJ5yrgQAAAAAAMD9CLAc8OmnnzpdAgAAAAAAwFmjktMFAAAAAAAAACdDDywAAAAA5xUuOA8AZx8CLAAAAABwIbcEbdKpwza31EooCJy7OIUQAAAAAAAArkYPLAAAAADAeYPeYsDZiQALAAAAAAAXImwD/g+nEAIAAAAAAMDVCLAAAAAAAADgagRYAAAAAAAAcDUCLAAAAAAAALgaARYAAAAAAABcjQALAAAAAAAArkaABQAAAAAAAFcjwDqHfPbZZ+rSpYsSEhLk8Xj0zjvv+E03M40aNUoJCQkKCwtTmzZttH79er82ubm5GjBggGJjYxUREaGuXbtq586dFbgWAAAAAAAA/giwziEHDx5UkyZN9OKLLxY7/amnntK4ceP04osvasWKFYqPj1f79u21f/9+X5vU1FTNnj1b06dP15IlS3TgwAF17txZ+fn5FbUaAAAAAAAAfgKdLgBlp2PHjurYsWOx08xM48eP18iRI9W9e3dJ0uTJkxUXF6epU6eqb9++ys7O1sSJEzVlyhS1a9dOkvT6668rMTFRCxYsUIcOHSpsXQAAAAAAAArRA+s8kZGRoaysLKWkpPjGhYSEqHXr1lq6dKkkaeXKlTpy5Ihfm4SEBDVq1MjXpji5ubnKycnxGwAAAAAAAMoKAdZ5IisrS5IUFxfnNz4uLs43LSsrS8HBwYqKijphm+KMHTtWXq/XNyQmJpZx9QAAAAAA4HxGgHWe8Xg8fo/NrMi4452qzYgRI5Sdne0bduzYUSa1AgAAAAAASARY5434+HhJKtKTavfu3b5eWfHx8crLy9O+fftO2KY4ISEhqlKlit8AAAAAAABQVgiwzhN16tRRfHy85s+f7xuXl5enRYsWqWXLlpKkpk2bKigoyK9NZmam1q1b52sDAAAAAABQ0bgL4TnkwIED+v77732PMzIytGbNGkVHR6tmzZpKTU3VmDFjlJSUpKSkJI0ZM0bh4eG65ZZbJEler1d9+vTRkCFDFBMTo+joaA0dOlTJycm+uxICAAAAAABUNAKsc8hXX32la665xvd48ODBkqQ77rhD6enpGjZsmA4fPqx+/fpp3759at68uebNm6fIyEjfc9LS0hQYGKgePXro8OHDatu2rdLT0xUQEFDh6wMAAAAAACARYJ1T2rRpIzM74XSPx6NRo0Zp1KhRJ2wTGhqqF154QS+88EI5VAgAAAAAAHD6uAYWAAAAAAAAXI0ACwAAAAAAAK5GgAUAAAAAAABXI8ACAAAAAACAqxFgAQAAAAAAwNUIsAAAAAAAAOBqBFgAAAAAAABwNQIsAAAAAAAAuBoBFgAAAAAAAFyNAAsAAAAAAACuRoAFAAAAAAAAVyPAAgAAAAAAgKsRYAEAAAAAAMDVCLAAAAAAAADgagRYAAAAAAAAcDUCLAAAAAAAALgaARYAAAAAAABcjQALAAAAAAAArkaABQAAAAAAAFcjwAIAAAAAAICrEWABAAAAAADA1QiwAAAAAAAA4GoEWAAAAAAAAHA1AiwAAAAAAAC4GgEWAAAAAAAAXI0ACwAAAAAAAK5GgAUAAAAAAABXI8ACAAAAAACAqxFgoVgTJkxQnTp1FBoaqqZNm2rx4sVOlwQAAAAAAM5TBFgo4s0331RqaqpGjhyp1atX609/+pM6duyo7du3O10aAAAAAAA4DxFgoYhx48apT58++tvf/qZLL71U48ePV2Jiol566SWnSwMAAAAAAOchAiz4ycvL08qVK5WSkuI3PiUlRUuXLnWoKgAAAAAAcD4LdLoAuMvPP/+s/Px8xcXF+Y2Pi4tTVlZWsc/Jzc1Vbm6u73F2drYkKScnp/wKLSMFuYecLkFSybYVtZ6+U9Xqljqls6dWXv/ycbbUei69/tLZU+vZUqdEraVxtrz+0tlTK69/+Thbaj2XXn/p7KrVaYU1mpnDlaC8eIxXF8f48ccfdeGFF2rp0qW68sorfeOfeOIJTZkyRd9++22R54waNUqPP/54RZYJAAAAAEARO3bsUI0aNZwuA+WAHljwExsbq4CAgCK9rXbv3l2kV1ahESNGaPDgwb7HBQUF2rt3r2JiYuTxeMq1Xqfl5OQoMTFRO3bsUJUqVZwu56SoteydLXVK1FpezpZaz5Y6JWotD2dLnRK1loezpU6JWsvL2VLr2VKnRK1uZWbav3+/EhISnC4F5YQAC36Cg4PVtGlTzZ8/XzfccINv/Pz589WtW7dinxMSEqKQkBC/cRdccEF5luk6VapUOWsOCNRa9s6WOiVqLS9nS61nS50StZaHs6VOiVrLw9lSp0St5eVsqfVsqVOiVjfyer1Ol4ByRICFIgYPHqzbbrtNzZo105VXXql///vf2r59u+69916nSwMAAAAAAOchAiwU0bNnT/3yyy8aPXq0MjMz1ahRI82dO1e1atVyujQAAAAAAHAeIsBCsfr166d+/fo5XYbrhYSE6O9//3uRUyjdiFrL3tlSp0St5eVsqfVsqVOi1vJwttQpUWt5OFvqlKi1vJwttZ4tdUrUCjiFuxACAAAAAADA1So5XQAAAAAAAABwMgRYAAAAAAAAcDUCLAAAAAAAALgaARYAAAAAAABcjQAL+K+jR4/qkUceUZ06dRQWFqaLLrpIo0ePVkFBQZG2U6dOVUBAgO69994i0xYuXCiPx6OoqCj99ttvftOWL18uj8cjj8dTqhp3796tvn37qmbNmgoJCVF8fLw6dOigL774wtdm9erVuummmxQXF6fQ0FBdcskluvvuu/Xdd9/52qxYsUJt27bVBRdcoKioKKWkpGjNmjV+y5oxY4Yuu+wyhYeHq1atWnr66adLVfPJ7NixQ3369FFCQoKCg4NVq1YtDRo0SL/88ouvTZs2bXzb7NihuG1/ugpfqxMN11xzja/tW2+9pTZt2sjr9apy5cpq3LixRo8erb179/ravPHGG2rSpInCw8NVvXp13XXXXX7rcuTIEY0ePVoXX3yxQkND1aRJE3300Uelrr8k74elS5fquuuuU1RUlEJDQ5WcnKxnn31W+fn5fvM60TaYPn36CZc/duxYeTwepaam+o1fv369evTooapVqyokJERJSUl69NFHdejQIb92tWvXLrK8GjVq+LVxw/u5JPuGn376SXfeeacSEhIUHh6ua6+9Vps3by7xMk6mIrZzSkqKAgICtGzZsiLLv/POO33PO7aGd955Rx6Pp0Jfa6l8P4tlfRwoHGJiYvTnP/9Zn3/+eZG2ZWnp0qUKCAjQtdde6zd+27Zt8ng8CgwM1K5du/ymZWZmKjAwUB6PR9u2bSuXusrq2PXJJ5+oZcuWioyMVPXq1fXQQw/p6NGj5VJzodM9TgUHB+viiy/WiBEjlJubW251ldf+v3LlymrSpInS09NPqx637KeK+zz269dPHo9Hd95552mtU6FTfa4KB6/XqxYtWui9994r1XJKqqy/u/zP//yPLr30UoWFhalevXp67bXXTlmDW47/ZbWOp7NNJ0+erD/+8Y+KiIhQZGSkrr76ar3//vslnl9WVtYpt29ZGDt2rK644gpFRkaqWrVquv7667Vp06YKWTZQrgyAmZn985//tJiYGHv//fctIyPDZs6caZUrV7bx48cXadu2bVsbPny4eb1eO3jwoN+0Tz/91CRZYmKiTZ061W9a3759rWbNmlbaj16rVq2sefPm9p///Me2bdtmX375pY0ZM8bef/99MzN77733LDg42Lp06WLz58+3rVu32rJly2zIkCHWo0cPMzPLycmxqKgou/POO+3bb7+1devW2Y033mjVqlWzvLw8MzObO3euBQYG2ksvvWRbtmyx999/3+Lj4+2FF14oVd3F2bJli1WrVs1atWplCxcutB9++MHmzp1rDRs2tKSkJPvll1/MzKx169Z29913W2Zmpt+QnZ19xjXk5uYWmW9mZqa9/PLL5vF4bMaMGWZm9vDDD1tAQIANHTrUPv/8c8vIyLB58+ZZ9+7dfe+PxYsXW6VKley5556zrVu32uLFi61hw4Z2/fXX+5Y3bNgwS0hIsA8++MC2bNliEyZMsNDQUFu1alWp6j/V++Htt9+2wMBAu/vuu2316tWWkZFhr7zyikVFRdlf/vIXKygo8M1Lkk2aNKnItjh8+HCxy16+fLnVrl3bGjdubIMGDfKN/+KLLywiIsK6detmX375pW3bts1mzJhhiYmJ1rJlS8vNzfW1rVWrlo0ePdpvebt37/ZNd8v7+VT7hoKCAmvRooX96U9/suXLl9u3335r99xzj9WsWdMOHDhQomWcSEVs5x9++MEqV65sAwcOtL/97W9FaujUqZN5PB6rVKmS9e3b1zf+ySefNEkV9lqblf9nsV+/fmV6HNi0aZNlZmba119/bT169DCv12s//fTTSV/zM9GnTx8bNGiQRURE2A8//OAbn5GR4TsujRkzxu85Y8eO9R2XMjIyyqWusjh2rV271oKDg+3xxx+3zZs328KFC61+/fo2ZMiQcqnZrHTHqR9++MFmzZplkZGRNnz48HKrrbz2/99//7098cQTJsk++uijEtXihv3UHXfcYYmJieb1eu3QoUO+8YcPH7YLLrjAatasaXfccUdJN6+fU32uFixYYJmZmbZx40YbMGCABQUF2TfffFOqZZVEWX53mTBhgkVGRtr06dNty5YtNm3aNKtcubLNmTPnhMt3y/G/LNexpNt0yJAhFhISYk8//bRt3rzZNmzYYA8//LBVqlTJ7zvF8ceAY4f8/PzSvOynrUOHDjZp0iRbt26drVmzxjp16lQm30sApxFgAf/VqVMn6927t9+47t2726233uo3LiMjw8LCwuzXX3+15s2b2+TJk/2mFx60HnnkEWvXrp1v/KFDh8zr9dqjjz5aqgBr3759JskWLlxY7PSDBw9abGys3x9pxz/fzGzFihUmybZv3+6b9vXXX5sk+/77783M7Oabb7a//OUvfs9PS0uzGjVq+H3pPRPXXnut1ahRw++LpplZZmamhYeH27333mtmv/9hcOwXpPK2YcMGq1Klio0cOdLMzL788kuTVOwfsGb/t12ffvppu+iii/ymPf/881ajRg3f4+rVq9uLL77o16Zbt27Wq1ev067zVO+HAwcOWExMjHXv3r3ItDlz5pgkmz59um+cJJs9e3aJlr1//35LSkqy+fPn+70+BQUF1qBBA2vWrFmRL2hr1qwxj8djTz75pG9crVq1LC0trdhluOn9fKp9w6ZNm0ySrVu3zjf96NGjFh0dba+88sop538iFbGdzcxGjRplf/3rX23jxo0WGRnp9+V2//79VqVKFWvevLmFhYVZ06ZNfTUkJiaapAp7rSvis5iQkFCmx4HCmsz+7315sj8Mz8SBAwcsMjLSvv32W+vZs6c9/vjjfvUWHpeSkpL8nlevXj3fcak8AqyyOnaNGDHCmjVr5jdt9uzZFhoaajk5OWVac6EzOU51797dLr/88nKpqyL2/9HR0TZ48OBT1uKG/ZTZ7wFWt27dLDk52V5//XXf+DfeeMOSk5OtW7dupQqwSvK5Wr16tW9cTk6OSbLnn3/+tJd1Jkr73eXKK6+0oUOH+k0bNGiQXXXVVcU+z03H//Jax0LHb9MvvvjihK/t4MGDLSgoyPddpLhjgNN2795tkmzRokVOlwKcEU4hBP6rVatW+uSTT3xdk9euXaslS5bouuuu82v3v//7v+rUqZO8Xq9uvfVWTZw4sdj53XbbbVq8eLG2b98u6fcuzrVr19bll19eqvoqV66sypUr65133in2tISPP/5YP//8s4YNG1bs8y+44AJJUr169RQbG6uJEycqLy9Phw8f1sSJE9WwYUPVqlVLkpSbm6vQ0FC/54eFhWnnzp364YcfSlX/sfbu3auPP/5Y/fr1U1hYmN+0+Ph49erVS2+++abM7IyXdTp+/fVXXX/99WrdurX+8Y9/SPr9VKTKlSurX79+xT6ncLu2bNlSO3fu1Ny5c2Vm+umnnzRr1ix16tTJ1/ZE23XJkiWnXeup3g/z5s3TL7/8oqFDhxaZ1qVLF11yySWaNm3aaS9Xku6//3516tRJ7dq18xu/Zs0abdiwQYMHD1alSv6HlyZNmqhdu3YlXqab3s+n2jcUbv9jlxEQEKDg4OBSvbaFKmI7m5kmTZqkW2+9VfXr19cll1yiGTNm+NVw4YUXKj4+XhdddJHWrFmjnTt3as2aNdqxY4ckVdhrXRGfxUOHDpXpcaDQoUOHNGnSJElSUFDQSduW1ptvvql69eqpXr16uvXWWzVp0qQi+9CuXbtq3759vvflkiVLtHfvXnXp0qVcapLK7th1otfst99+08qVK8u87jM5Tq1du1aff/55ub3W5bn/z8/P14wZM7R3794S1e+G/dSx7rrrLt9nTfr9s9q7d+8SLac4JflcFTpy5IheeeUVSeX3OS/OmXx3OdHnavny5Tpy5EiR57np+F9e6ygVv02nTZumypUrq2/fvkXaDxkyREeOHNFbb71VklV0RHZ2tiQpOjra4UqAM+Rcdga4S0FBgQ0fPtw8Ho8FBgaax+MpcqpFfn6+JSYm2jvvvGNmZnv27LGgoCDbvHmzr82xv7pcf/31vl/rrrnmGnvuueds9uzZpT6FcNasWRYVFWWhoaHWsmVLGzFihK1du9bMzP71r3+ZJNu7d+8p57Nu3Tq7+OKLrVKlSlapUiWrX7++X7f4l19+2cLDw23BggWWn59vmzZtsvr165skW7p0aalqP9ayZctO2uNn3LhxJsl++ukna926tQUFBVlERITfkJ6efsZ1HCs/P986duxol156qd/piR07drTGjRuXaB6FpxsFBgaaJOvatavvNDaz33sCNWjQwL777jvLz8+3efPmWVhYmAUHB5eq5pO9HwpP7zrRr39du3a1Sy+91PdYkoWGhhbZzlu2bPF73rRp06xRo0a+UwuP/QV2+vTpRX6NPtbAgQMtLCzM97hWrVoWHBzst7znnnvOzNz1fj7VviEvL89q1aplN910k+3du9dyc3Nt7NixJslSUlJOOf/iVNR2njdvnlWtWtWOHDliZr/3TCv8VbqwhltvvdW6detmrVu3tvj4eOvdu7evhhPty8rjta6Iz2JQUFCZHgcK19Xj8Zgka9q0qV8dZally5a+nghHjhyx2NhYmz9/vpn59xRJTU21u+66y8zM7rrrLnvggQds9erV5XoKYVkcuz7++GOrVKmSTZ061Y4ePWo7d+60Vq1amaQip+uXhdIep4KDg02SVapUyWbNmlXmdRUqr/1/QECASbLo6Gi/93Rx3LCfKlTYA2vPnj0WEhJiGRkZtm3bNgsNDbU9e/aUugdWST5XYWFhFhERYZUqVTJJVrt2bd/ppeXtTL+7jBgxwuLj4+2rr76ygoICW7FihVWrVs0k2Y8//ujX1m3H//JYR7MTb9Nrr73WmjRpcsLleL1eu++++8ys6DGgcLjkkktOWW95KCgosC5dulirVq0cWT5QluiBBfzXm2++qddff11Tp07VqlWrNHnyZD3zzDOaPHmyr828efN08OBBdezYUZIUGxurlJQU/e///m+x8+zdu7fS09O1detWffHFF+rVq9cZ1XjjjTfqxx9/1Jw5c9ShQwctXLhQl19+udLT00vcW+nw4cPq3bu3rrrqKi1btkyff/65GjZsqOuuu06HDx+WJN19993q37+/OnfurODgYLVo0UJ//etfJf3es6S8Fa5L4cXue/XqpTVr1vgNN9xwQ5ku8+GHH9YXX3yhd999V1WqVPGrpSQX3d+wYYMGDhyoxx57TCtXrtRHH32kjIwMvwvKPvfcc0pKSlL9+vUVHBys/v3766677ir1Nj3Z++HY+otT3HqlpaUV2c6JiYm+6Tt27NCgQYP0+uuvF/k1sySKW+aDDz7ot7zbb7/9pHUfryLez6faNwQFBemtt97Sd999p+joaIWHh2vhwoXq2LFjqV7bitzOEydOVM+ePRUYGChJuvnmm/Xll19q4cKFvhqOXYdWrVpp8uTJ2rlzZ5nVUNLXuiI+i5LK9DiwePFirVq1StOmTVOtWrWUnp5eLj0zNm3apOXLl/ve14GBgerZs2exNfXp00czZ85UVlaWZs6ceUa9U0qqLI5dKSkpevrpp3XvvfcqJCREl1xyia9XXUUcl453ouPUF198oR49eqh379668cYby2355bX/nz9/vi677DKlpaWpbt26J1y+G/ZTxV2QOjY2Vp06ddLkyZM1adIkderUSbGxsaddn1Tyz9Wbb76p1atXa86cOapbt65effXVCuvlcqbfXR599FF17NhRLVq0UFBQkLp16+a72P2xnys3Hv/Leh0LnWiblqaexYsX+63jxx9/XOL5laX+/fvr66+/LnXPe8BVKjQuA1ysRo0aRa6J8o9//MPq1avne3zTTTeZJAsICPAN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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rang_freq_with_labels('voy-words-20', get_words(voynich), top=20)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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yszMNB0Jxxg9erTWrl2rVatWNbyGDBmi66+/XqtWraL8BYERI0Yct3XSpk2b1K1bN0OJcKyKigo5HI2rgdPpZBuYDogRwCCTk5OjG2+8UUOGDNGwYcM0ffp05efna9KkSaajQXWLC2bOnKl3331XsbGxDaO1brdbUVFRhtMhNjb2uPmYMTEx6ty5M/M0g8Tdd9+t4cOH65FHHtG1116rpUuXavr06Zo+fbrpaJB0xRVX6OGHH1ZGRob69u2rlStX6oknntBPf/pT09HQytgGJgg9++yzevTRR1VYWKh+/frpySefZIuRIHGyuZgvvviifvKTn7RvGDTJqFGj2AYmyLz33nuaOnWqNm/erMzMTOXk5OjWW281HQuSSktL9Zvf/EazZ89WUVGR0tLSNGHCBP32t79VRESE6XhoRRRAAAAAm2EOIAAAgM1QAAEAAGyGAggAAGAzFEAAAACboQACAADYDAUQAADAZiiAAAAANkMBBAAAsBkKIAAAgM1QAAEAAGyGAggAAGAzFEAAAACboQACAADYDAUQAADAZiiAAAAANkMBBAAAsBkKIAAAgM1QAAEAAGyGAggAAGAzFEAAAACboQACAADYDAUQAADAZiiAAAAANkMBBAAAsBkKIAAAgM1QAAEAAGyGAggAAGAzFEAAAACboQACAADYDAUQAADAZiiAAAAANvP/AaFiaqrJfHMyAAAAAElFTkSuQmCC", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "log_rang_log_freq('voy-words-log-log', get_words(voynich))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Język DNA\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Kod genetyczny przejawia własności zaskakująco podobne do języków naturalnych.\n", + "Przede wszystkim ma charakter dyskretny, genotyp to ciąg symboli ze skończonego alfabetu.\n", + "Podstawowe litery są tylko cztery, reprezentują one nukleotydy, z których zbudowana jest nić DNA:\n", + "a, g, c, t.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TATAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTA" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "dna_url = 'https://raw.githubusercontent.com/egreen18/NanO_GEM/master/rawGenome.txt'\n", + "dna = requests.get(dna_url).content.decode('utf-8')\n", + "\n", + "dna = ''.join(dna.split('\\n')[1:])\n", + "dna = dna.replace('N', 'A')\n", + "\n", + "dna[0:100]" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rang_freq_with_labels('dna-chars', get_characters(dna))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Tryplety — znaczące cząstki genotypu\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nukleotydy rzeczywiście są jak litery, same w sobie nie niosą\n", + "znaczenia. Dopiero ciągi trzech nukleotydów, *tryplety*, kodują jeden\n", + "z dwudziestu aminokwasów.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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X2658srqDh06pKysrHN+Xrz88sv/+FCXkEOHDunjjz9WcnKyUV6dFhwcrL59++rtt9/m82M9duedd+r666/Xe++9Z3YUSZKbm5vS09M1Y8YM7d271+w4hujoaK1Zs8a4v2bNGkVHRysqKsrYXllZqfXr15teYEnSQw89pK5du+rhhx9WRkaGtmzZotdee83sWIaHH35Yb7zxhnF/zpw5/MIBlzQKLMAFy5cvV+PGjeXl5aVrrrlGW7du1ZNPPml2LIO7u7syMzM1d+5cXX755ercubOeeuopffXVV2ZHuyTs2LFDDodDYWFhTtsDAgKMctBKf9+nbdiwQQsXLlTXrl3NjmKYPXu2HnjgAUm/nlJx7Ngxy10rx8oeeeQR7d69Wzk5Oca2OXPm6J577pGfn595wc7i9OfF396ee+45s2MZPvroI73wwgv64IMPznltMbOd+Rr+/e9/NzuS4fTnxeuuu87sKJek7777Tg6HQ23atDnr/jZt2qisrEwHDx78g5PVdLb/yz179jQ7Vr1w3XXXaffu3WbHMNx999264YYbnFb5mi06OlqfffaZTp48qaNHj2rz5s264447FBUVZXwtzM/P14kTJyxRYEnSa6+9pq1btyo1NVWvvvqqAgMDzY5kSEpKUm5urnbv3q3vv/9en332mfF9GXAp4hRCwAVdunTRyy+/rJ9//lmvv/66tm/frsGDB5sdy8m9996ruLg4rVu3TuvXr1dWVpYmTpyo119/3RLLmi8FZ66y2rBhg06dOqW+fftaZmXb6R80Tp48qaqqKvXu3VszZswwO5Ykadu2bdqwYYPx22Z3d3fdd999mjNnjmULBKu57rrrdNttt2nOnDnq0qWL/v3vf2vdunXKzs42O1oNpz8v/pa/v79JaWrq0KGDfvzxR40ZM0a33HKLfHx8zI5Uw5mv4blWgJrh9Mogq64+vdSdfn09PDxMTnL2/8uff/45P/TWAYfDYbn/Qy+88ILuvPNODRs2zOwokn7993f8+HFt3LhRZWVluvbaaxUYGKioqCglJSXp+PHjysnJUbNmzSxzGlxgYKAGDhyo999/X3fffbfZcZwEBAQoLi5Oc+fOlcPhUFxcnAICAsyOBbiMFViAC7y9vdWqVSt16NBBL730kioqKjR27FizY9XQsGFDde/eXWPGjFFeXp769etnqd+yWVWrVq1ks9n07bffOm2/+uqr1apVqxqnf5ipS5cuKiws1LZt2/TLL7/ovffes8xv/mbPnq2TJ0/qqquukru7u9zd3fXyyy/rvffes9RFY62uf//+WrJkiY4cOaI33nhDzZs3t9Qqu9NOf1787c1KBdZVV12ltWvXqqSkRD169NDRo0fNjlTDma/hlVdeaXYkQ+vWrWWz2VRUVGR2lEvS6a8rW7duPev+b7/9VldccYUlTsU82//lq666yuxY9UJRUZGl3phBku644w7FxsbqqaeeMjuKpF//rzRt2lRr1qzRmjVrjGu5BgcHq2XLlvrss8+0Zs0a3XnnnSYndXb6+xwreuSRR4wzMzh9EJc6CiygDjzzzDOaPHmyfvjhB7OjnFfbtm11/Phxs2NYXpMmTdS9e3dlZGRY/vU6/YNG8+bNLXUdtpMnT+rNN9/UlClTVFhYaNy+/PJLNW/eXAsWLDA74iWjT58+cnNz08KFCzV37lw9/PDDlvsN/qWiWbNmWrt2rQ4cOKCYmBgdOXLE7EiXDH9/f8XGxup///d/z/p58fDhw398qEvI6a8rM2fOdHpHMEkqLS3VggULWB1dz33yySf6+uuvLXn9vQkTJmjZsmXKy8szO4qkX385l5OTo5ycHEVHRxvbo6Ki9PHHHys/P98ypw9eCnr06KHKykpVVlYqNjbW7DjABaHAAupAdHS02rVrZ5l3Bfvpp5905513av78+frqq6+0a9cuLV68WBMnTlTv3r3NjmcoLy93KjcKCwu1Z88es2NJkmbOnKmTJ0/q5ptv1ttvv62ioiJt27ZN8+fP17fffis3NzezI1ra8uXLVVZWpv79+ys8PNzp9re//U2zZ882O+Ilo3Hjxrrvvvv01FNP6YcffrDsD7kVFRUqLS11uv34449mx6qhadOmysnJ0U8//aSYmBiVl5ebHemSMXPmTFVXV+vWW2/VkiVL9N1336moqEgvvfSSIiMjzY5neRkZGaqoqFBsbKw+/fRTFRcXKysrS927d9e1115rmXdoxYU7/flw37592rRpk9LT09W7d2/Fx8frwQcfNDteDe3bt1ffvn0tcwmCLl26KDc3V4WFhcYKLOnXAmvWrFn65ZdfKLBqwc3NTUVFRSoqKuL7V1zyKLCAOjJ06FDNmjVLxcXFZkdR48aN1bFjR02bNk133HGHwsPD9fTTT2vAgAHKyMgwO54hJydHN954o9PNKt/AX3PNNdq8ebO6deumUaNG6frrr9fNN9+sGTNmaPjw4Za6OLUVzZ49W926dZPdbq+x795771VhYaE2bdpkQrJLU//+/VVWVqZu3bqpWbNmZsc5q6ysLF155ZVOt9tvv93sWGd1+nTCw4cPq3v37qwe+p1atmypTZs2qUuXLho2bJjCw8PVvXt3rV69usY1k1BT69attXHjRl199dXq06ePmjdvrp49e+raa6/VZ599psaNG5sdEXXk9OfDFi1aqEePHlqzZo1eeuklffDBB5YtEJ577jnLvAtmly5ddOLECbVq1UpBQUHG9qioKB09elTXXHONQkNDTUx46fH19ZWvr6/ZMYALZnNY5TMVAAAA8CfyzDPPaOrUqcrOzmYVGwAA/wEFFgAAAGCSN954Q+Xl5UpJSdFll3FyxH+yZ88etW3b9pz7t27datmVqgCAC0OBBQAAAOCScPLkSe3evfuc+1u0aGHZd4MDAFwYCiwAAAAAAABYGuuUAQAAAAAAYGkUWAAAAAAAALA0CiwAAAAAAABYGgUWAAAAAAAALI0CCwAAAAAAAJZGgQUAAAAAAABLo8ACAAAAAACApVFgAQAAAAAAwNL+D1Zdk/6zbq58AAAAAElFTkSuQmCC", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "genetic_code = {\n", + " 'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',\n", + " 'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',\n", + " 'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K',\n", + " 'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R',\n", + " 'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L',\n", + " 'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P',\n", + " 'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q',\n", + " 'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R',\n", + " 'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V',\n", + " 'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A',\n", + " 'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E',\n", + " 'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G',\n", + " 'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S',\n", + " 'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L',\n", + " 'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_',\n", + " 'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W',\n", + " }\n", + "\n", + "def get_triplets(t):\n", + " for triplet in re.finditer(r'.{3}', t):\n", + " yield genetic_code[triplet.group(0)]\n", + "\n", + "rang_freq_with_labels('dna-aminos', get_triplets(dna))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### „Zdania” w języku DNA\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Z aminokwasów zakodowanych przez tryplet budowane są białka.\n", + "Maszyneria budująca białka czyta sekwencję aż do napotkania\n", + "trypletu STOP (\\_ powyżej). Taka sekwencja to *gen*.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def get_genes(triplets):\n", + " gene = []\n", + " for ammino in triplets:\n", + " if ammino == '_':\n", + " yield gene\n", + " gene = []\n", + " else:\n", + " gene.append(ammino)\n", + "\n", + "plt.figure().clear()\n", + "plt.hist([len(g) for g in get_genes(get_triplets(dna))], bins=100)\n", + "\n", + "fname = '02_Jezyki/dna_length.png'\n", + "\n", + "plt.savefig(fname)\n", + "\n", + "fname" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Entropia\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Entropia** ($E$) to miara nieuporządkowania, niepewności, niewiedzy. Im\n", + "większa entropia, tym mniej wiemy. Pojęcie to pierwotnie wywodzi się z\n", + "termodynamiki, później znaleziono wiele zaskakujących analogii i zastosowań w\n", + "innych dyscyplinach nauki.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Entropia w fizyce\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "W termodynamice entropia jest miarą nieuporządkowania układów\n", + "fizycznych, na przykład pojemników z gazem. Przykładowo, wyobraźmy\n", + "sobie dwa pojemniki z gazem, w którym panuje różne temperatury.\n", + "\n", + "![img](./02_Jezyki/gas-low-entropy.drawio.png)\n", + "\n", + "Jeśli usuniemy przegrodę między pojemnikami, temperatura się wyrówna,\n", + "a uporządkowanie się zmniejszy.\n", + "\n", + "![img](./02_Jezyki/gas-high-entropy.drawio.png)\n", + "\n", + "Innymi słowy, zwiększy się stopień nieuporządkowania układu, czyli właśnie entropia.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### II prawo termodynamiki\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jedno z najbardziej fundamentalnych praw fizyki, II prawo\n", + "termodynamiki głosi, że w układzie zamkniętym entropia nie spada.\n", + "\n", + "****Pytanie****: Czy to, że napisałem te materiały do wykładu i\n", + "*uporządkowałem* wiedzę odnośnie do statystycznych własności języka, nie\n", + "jest sprzeczne z II prawem termodynamiki?\n", + "\n", + "Konsekwencją II prawa termodynamiki jest śmierć cieplna Wszechświata\n", + "(zob. [wizualizacja przyszłości Wszechświata]([https://www.youtube.com/watch?v=uD4izuDMUQA](https://www.youtube.com/watch?v=uD4izuDMUQA))).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Entropia w teorii informacji\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pojęcie entropii zostało „odkryte” na nowo przez Claude'a Shannona,\n", + "gdy wypracował ogólną teorię informacji.\n", + "\n", + "Teoria informacji zajmuje się między innymi zagadnieniem optymalnego kodowania komunikatów.\n", + "\n", + "Wyobraźmy sobie pewne źródło (generator) losowych komunikatów z\n", + "zamkniętego zbioru symboli ($\\Sigma$; nieprzypadkowo używamy oznaczeń\n", + "z poprzedniego wykładu). Nadawca $N$ chce przesłać komunikat o wyniku\n", + "losowania do odbiorcy $O$ używając zer i jedynek (bitów).\n", + "Teorioinformacyjną entropię można zdefiniować jako średnią liczbę\n", + "bitów wymaganych do przesłania komunikatu.\n", + "\n", + "![img](./02_Jezyki/communication.drawio.png)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Obliczanie entropii — proste przykłady\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Załóżmy, że nadawca chce przekazać odbiorcy informację o wyniku rzutu monetą.\n", + "Entropia wynosi wówczas rzecz jasna 1 — na jedno losowanie wystarczy jeden bit\n", + "(informację o tym, że wypadł orzeł, możemy zakodować na przykład za pomocą zera,\n", + "zaś to, że wypadła reszka — za pomocą jedynki).\n", + "\n", + "Rozpatrzmy przypadek, gdy nadawca rzuca ośmiościenną kością. Aby przekazać\n", + "wynik, potrzebuje wówczas 3 bity (a więc entropia ośmiościennej kości\n", + "wynosi 3 bity). Przykładowe kodowanie może mieć następującą postać:\n", + "\n", + "| Wynik|Kodowanie|\n", + "|---|---|\n", + "| 1|001|\n", + "| 2|010|\n", + "| 3|011|\n", + "| 4|100|\n", + "| 5|101|\n", + "| 6|110|\n", + "| 7|111|\n", + "| 8|000|\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Obliczenie entropii — trudniejszy przykład\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Załóżmy, że $\\Sigma = \\{A, B, C, D\\}$, natomiast poszczególne komunikaty\n", + "są losowane zgodnie z następującym rozkładem prawdopodobieństwa:\n", + "$P(A)=1/2$, $P(B)=1/4$, $P(C)=1/8$, $P(D)=1/8$. Ile wynosi entropia w\n", + "takim przypadku? Można by sądzić, że 2, skoro wystarczą 2 bity do\n", + "przekazania wyniku losowania przy zastosowaniu następującego kodowania:\n", + "\n", + "| Wynik|Kodowanie|\n", + "|---|---|\n", + "| A|00|\n", + "| B|01|\n", + "| C|10|\n", + "| D|11|\n", + "\n", + "Problem w tym, że w rzeczywistości nie jest to *optymalne* kodowanie.\n", + "Możemy sprytnie zmniejszyć średnią liczbę bitów wymaganych do\n", + "przekazania losowego wyniku przypisując częstszym wynikom krótsze\n", + "kody, rzadszym zaś — dłuższe. Oto takie optymalne kodowanie:\n", + "\n", + "| Wynik|Kodowanie|\n", + "|---|---|\n", + "| A|0|\n", + "| B|10|\n", + "| C|110|\n", + "| D|111|\n", + "\n", + "Używając takiego kodowanie średnio potrzebujemy:\n", + "\n", + "$$\\frac{1}{2}1 + \\frac{1}{4}2 + \\frac{1}{8}3 + \\frac{1}{8}3 = 1,75$$\n", + "\n", + "bita. Innymi słowy, entropia takiego źródła wynosi 1,75 bita.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Kodowanie musi być jednoznaczne!\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Można by sądzić, że da się stworzyć jeszcze krótsze kodowanie dla omawianego rozkładu nierównomiernego:\n", + "\n", + "| Wynik|Kodowanie|\n", + "|---|---|\n", + "| A|0|\n", + "| B|1|\n", + "| C|01|\n", + "| D|11|\n", + "\n", + "Niestety, nie jest to właściwe rozwiązanie — kodowanie musi być\n", + "jednoznaczne nie tylko dla pojedynczego komunikatu, lecz dla całej sekwencji.\n", + "Na przykład ciąg 0111 nie jest jednoznaczny przy tym kodowaniu (ABBB czy CD?).\n", + "Podane wcześniej kodowanie spełnia warunek jednoznaczności, ciąg 0111 można odkodować tylko\n", + "jako AD.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Ogólny wzór na entropię.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Na podstawie poprzedniego przykładu można dojść do intuicyjnego wniosku, że\n", + "optymalny kod dla wyniku o prawdopodobieństwie $p$ ma długość $-\\log_2(p)$, a zatem ogólnie\n", + "entropia źródła o rozkładzie prawdopodobieństwa $\\{p_1,\\ldots,p_|\\Sigma|\\}$ wynosi:\n", + "\n", + "$$E = -\\sum_{i=1}^{|\\Sigma|} p_i\\log_2(p_i)$$.\n", + "\n", + "Zauważmy, że jest to jeden z nielicznych przypadków, gdy w nauce naturalną\n", + "podstawą logarytmu jest 2 zamiast… podstawy logarytmu naturalnego ($e$).\n", + "\n", + "Teoretycznie można mierzyć entropię używając logarytmu naturalnego\n", + "($\\ln$), jednostką entropii będzie wówczas **nat** zamiast bita,\n", + "niewiele to jednak zmienia i jest mniej poręczne i trudniejsze do interpretacji\n", + "(przynajmniej w kontekście informatyki) niż operowanie na bitach.\n", + "\n", + "****Pytanie**** Ile wynosi entropia zwykłej sześciennej kostki? Jak wygląda\n", + "optymalne kodowanie wyników rzutu taką kostką?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Entropia dla próby Bernoulliego\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wiemy już, że entropia dla rzutu monetą wynosi 1 bit. A jaki będzie wynik dla źle wyważonej monety?\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from math import log\n", + "import numpy as np\n", + "\n", + "def binomial_entropy(p):\n", + " return -(p * log(p, 2) + (1-p) * log(1-p, 2))\n", + "\n", + "x = list(np.arange(0.001,1,0.001))\n", + "y = [binomial_entropy(x) for x in x]\n", + "plt.figure().clear()\n", + "plt.xlabel('prawdopodobieństwo wylosowania orła')\n", + "plt.ylabel('entropia')\n", + "plt.plot(x, y)\n", + "\n", + "fname = f'02_Jezyki/binomial-entropy.png'\n", + "\n", + "plt.savefig(fname)\n", + "\n", + "fname" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Pytanie** Dla oszukańczej monety (np. dla której wypada zawsze orzeł) entropia\n", + "wynosi 0, czy to wynik zgodny z intuicją?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Entropia a język\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tekst w danym języku możemy traktować jako ciąg symboli (komunikatów) losowanych według jakiegoś\n", + "rozkładu prawdopodobieństwa. W tym sensie możemy mówić o entropii języka.\n", + "\n", + "Oczywiście, jak zawsze, musimy jasno stwierdzić, czym są symbole\n", + "języka: literami, wyrazami czy jeszcze jakimiś innymi jednostkami.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Pomiar entropii języka — pierwsze przybliżenie\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Załóżmy, że chcemy zmierzyć entropię języka polskiego na przykładzie\n", + "„Pana Tadeusza” — na poziomie znaków. W pierwszym przybliżeniu można\n", + "by policzyć liczbę wszystkich znaków…\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "95" + ] + } + ], + "source": [ + "chars_in_pan_tadeusz = len(set(get_characters(pan_tadeusz)))\n", + "chars_in_pan_tadeusz" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "… założyć jednostajny rozkład prawdopodobieństwa i w ten sposób policzyć entropię:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6.569855608330948" + ] + } + ], + "source": [ + "from math import log\n", + "\n", + "95 * (1/95) * log(95, 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Mniej rozrzutne kodowanie\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Przypomnijmy sobie jednak, że rozkład jednostek języka jest zawsze\n", + "skrajnie nierównomierny! Jeśli uwzględnić ten nierównomierny rozkład\n", + "znaków, można opracować o wiele efektywniejszy sposób zakodowania znaków składających się na „Pana Tadeusza”\n", + "(częste litery, np. „a” i „e” powinny mieć krótkie kody, a rzadkie, np. „ź” — dłuższe).\n", + "\n", + "Policzmy entropię przy takim założeniu:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.938605272823633" + ] + } + ], + "source": [ + "from collections import Counter\n", + "from math import log\n", + "\n", + "def unigram_entropy(t):\n", + " counter = Counter(t)\n", + "\n", + " total = counter.total()\n", + " return -sum((p := count / total) * log(p, 2) for count in counter.values())\n", + "\n", + "unigram_entropy(get_characters(pan_tadeusz))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(Jak dowiemy się na kolejnym wykładzie, zastosowaliśmy tutaj **unigramowy model języka**).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Ile wynosi entropia rękopisu Wojnicza?\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.902708104423842" + ] + } + ], + "source": [ + "unigram_entropy(get_characters(voynich))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Rzeczywista entropia?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "W rzeczywistości entropia jest jeszcze mniejsza, tekst nie jest\n", + "generowany przecież według rozkładu wielomianowego. Istnieją rzecz\n", + "jasna pewne zależności między znakami, np. niemożliwe, żeby po „ń”\n", + "wystąpiły litera „a” czy „e”. Na poziomie wyrazów zależności mogę mieć\n", + "jeszcze bardziej skrajny charakter, np. po wyrazie „przede” prawie na\n", + "pewno wystąpi „wszystkim”, co oznacza, że w takiej sytuacji słowo\n", + "„wszystkim” może zostać zakodowane za pomocą 0 (!) bitów.\n", + "\n", + "Można uwzględnić takie zależności i uzyskać jeszcze lepsze kodowanie,\n", + "a co za tym idzie lepsze oszacowanie entropii. (Jak wkrótce się\n", + "dowiemy, oznacza to użycie digramowego, trigramowego, etc. modelu języka).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Rozmiar skompresowanego pliku jako przybliżenie entropii\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Celem algorytmów kompresji jest właściwie wyznaczanie efektywnych\n", + "sposobów kodowania danych. Możemy więc użyć rozmiaru skompresowanego pliku w bitach\n", + "(po podzieleniu przez oryginalną długość) jako dobrego przybliżenia entropii.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.673019884633768" + ] + } + ], + "source": [ + "import zlib\n", + "\n", + "def entropy_by_compression(t):\n", + " compressed = zlib.compress(t.encode('utf-8'))\n", + " return 8 * len(compressed) / len(t)\n", + "\n", + "entropy_by_compression(pan_tadeusz)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dla porównania wynik dla rękopisu Wojnicza:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.942372881355932" + ] + } + ], + "source": [ + "entropy_by_compression(voynich)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Gra Shannona\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Innym sposobem oszacowania entropii tekstu jest użycie… ludzi. Można poprosić rodzimych użytkowników\n", + "danego języka o przewidywanie kolejnych liter (bądź wyrazów) i w ten sposób oszacować entropię.\n", + "\n", + "**Projekt** Zaimplementuj aplikację webową, która umożliwi „rozegranie” gry Shannona.\n", + "\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.10.2" + }, + "org": null + }, + "nbformat": 4, + "nbformat_minor": 1 +}