{ "cells": [ { "cell_type": "markdown", "id": "eb9ee8d4-afdd-400a-bae0-03ca972a2559", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "# Natural Language Processing Tutorial 1 - Static Word Embeddings with Word2Vec\n", "" ] }, { "cell_type": "markdown", "id": "71725826-1cd3-4a89-9471-509ccb926af9", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "## What you'll learn in this tutorial\n", "\n", "- We'll use the [gensim](https://radimrehurek.com/gensim/index.html) library to:\n", " - explore pretrained word embeddings\n", " - pretrain our own embeddings\n", "- We will additionally:\n", " - visualize word embeddings\n", " - evaluate them intrisically and extrinsically" ] }, { "cell_type": "markdown", "id": "ad4b05ea-4690-4368-a195-a82cbe8382d6", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "## Our schedule for today\n", "\n", "- Part 1: Using pretrained word embeddings with gensim\n", " - How to download already pretrained embeddings\n", " - Nearest neighbour similarity search \n", " - Word embedding visualization via PCA\n", " - Intrisic evaluation with word analogy and word similarity benchmarks\n", " - **Task 1**\n", "- Part 2: Pretraining your **own** embeddings\n", " - Training choices\n", " - Saving and loading your embeddings\n", "- Part 3: Extrinsic evaluation of word embeddings\n", " - Using word2vec embeddings for spam classification\n", " - **Task 2**" ] }, { "cell_type": "markdown", "id": "53576457-01be-4ec5-9404-9fdff84906cb", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Part 1 : Using pretrained embeddings with gensim\n", "\n", "" ] }, { "cell_type": "markdown", "id": "263da382-d2e4-41c3-b002-ee540da2fbab", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### What is gensim?\n", "\n", "- Gensim is one of many core NLP libraries:\n", " - together with [NLTK](https://www.nltk.org), [spaCy](https://spacy.io) and [HuggingFace 🤗](https://huggingface.co)\n", " - you can find its documentation [here](https://radimrehurek.com/gensim/auto_examples/index.html#other-resources)\n", "- It can be used to deal with corpora and perform:\n", " - Retrieval\n", " - Topic Modelling\n", " - Representation Learning (**word2vec** and **doc2vec**)" ] }, { "cell_type": "code", "execution_count": 1, "id": "1ebdec4e", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [], "source": [ "# Run this cell now!\n", "import gensim\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "import gensim.downloader as api\n", "from gensim import utils\n", "from gensim.models import KeyedVectors\n", "from gensim.test.utils import datapath\n", "from gensim.models import Word2Vec\n", "\n", "from sklearn.metrics.pairwise import cosine_similarity\n", "from sklearn.decomposition import PCA\n", "from sklearn.metrics import classification_report\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LogisticRegressionCV\n", "from sklearn.preprocessing import LabelEncoder\n", "\n", "from scipy.stats import pearsonr, spearmanr\n", "\n", "import nltk\n", "from nltk.corpus import stopwords\n", "\n", "import torch\n", "import torch.nn as nn\n", "\n", "import plotly.express as px" ] }, { "cell_type": "markdown", "id": "ee260e2b-1403-4be2-af68-86f63869a5b1", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Let's download some embeddings!" ] }, { "cell_type": "code", "execution_count": 2, "id": "a2ce6ee4-c4c5-4782-b404-c15f3ba0b1ad", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Run this cell now!\n", "word_emb = api.load('word2vec-google-news-300')" ] }, { "cell_type": "markdown", "id": "941bbbf7-0af0-43b9-994f-43186b2c0bf5", "metadata": {}, "source": [ "- The object that we get is of type [KeyedVectors](https://radimrehurek.com/gensim/models/keyedvectors.html)\n", "- This is simply a map $w \\rightarrow \\mathbf{e}_w \\in \\mathbb{R}^{300}$\n", "- You can explore [here](https://github.com/RaRe-Technologies/gensim-data#models) all the possible models or simply run ```api.info()```" ] }, { "cell_type": "markdown", "id": "bf5fe072-b0ee-4e3c-81ac-9220e3d17352", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### How do these embeddings look like?" ] }, { "cell_type": "code", "execution_count": 3, "id": "a7261e0d-a31a-4011-92e9-1dfeeb39c034", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(300,)\n", "[-0.06445312 -0.16015625 -0.01208496 0.13476562 -0.22949219 0.16210938\n", " 0.3046875 -0.1796875 -0.12109375 0.25390625 -0.01428223 -0.06396484\n", " -0.08056641 -0.05688477 -0.19628906 0.2890625 -0.05151367 0.14257812\n", " -0.10498047 -0.04736328 -0.34765625 0.35742188 0.265625 0.00188446\n", " -0.01586914 0.00195312 -0.35546875 0.22167969 0.05761719 0.15917969\n", " 0.08691406 -0.0267334 -0.04785156 0.23925781 -0.05981445 0.0378418\n", " 0.17382812 -0.41796875 0.2890625 0.32617188 0.02429199 -0.01647949\n", " -0.06494141 -0.08886719 0.07666016 -0.15136719 0.05249023 -0.04199219\n", " -0.05419922 0.00108337 -0.20117188 0.12304688 0.09228516 0.10449219\n", " -0.00408936 -0.04199219 0.01409912 -0.02111816 -0.13476562 -0.24316406\n", " 0.16015625 -0.06689453 -0.08984375 -0.07177734 -0.00595093 -0.00482178\n", " -0.00089264 -0.30664062 -0.0625 0.07958984 -0.00909424 -0.04492188\n", " 0.09960938 -0.33398438 -0.3984375 0.05541992 -0.06689453 -0.04467773\n", " 0.11767578 -0.13964844 -0.26367188 0.17480469 -0.17382812 -0.40625\n", " -0.06738281 -0.07617188 0.09423828 0.20996094 -0.16308594 -0.08691406\n", " -0.0534668 -0.10351562 -0.07617188 -0.11083984 -0.03515625 -0.14941406\n", " 0.0378418 0.38671875 0.14160156 -0.2890625 -0.16894531 -0.140625\n", " -0.04174805 0.22753906 0.24023438 -0.01599121 -0.06787109 0.21875\n", " -0.42382812 -0.5625 -0.49414062 -0.3359375 0.13378906 0.01141357\n", " 0.13671875 0.0324707 0.06835938 -0.27539062 -0.15917969 0.00121307\n", " 0.01208496 -0.0039978 0.00442505 -0.04541016 0.08642578 0.09960938\n", " -0.04296875 -0.11328125 0.13867188 0.41796875 -0.28320312 -0.07373047\n", " -0.11425781 0.08691406 -0.02148438 0.328125 -0.07373047 -0.01348877\n", " 0.17773438 -0.02624512 0.13378906 -0.11132812 -0.12792969 -0.12792969\n", " 0.18945312 -0.13867188 0.29882812 -0.07714844 -0.37695312 -0.10351562\n", " 0.16992188 -0.10742188 -0.29882812 0.00866699 -0.27734375 -0.20996094\n", " -0.1796875 -0.19628906 -0.22167969 0.08886719 -0.27734375 -0.13964844\n", " 0.15917969 0.03637695 0.03320312 -0.08105469 0.25390625 -0.08691406\n", " -0.21289062 -0.18945312 -0.22363281 0.06542969 -0.16601562 0.08837891\n", " -0.359375 -0.09863281 0.35546875 -0.00741577 0.19042969 0.16992188\n", " -0.06005859 -0.20605469 0.08105469 0.12988281 -0.01135254 0.33203125\n", " -0.08691406 0.27539062 -0.03271484 0.12011719 -0.0625 0.1953125\n", " -0.10986328 -0.11767578 0.20996094 0.19921875 0.02954102 -0.16015625\n", " 0.00276184 -0.01367188 0.03442383 -0.19335938 0.00352478 -0.06542969\n", " -0.05566406 0.09423828 0.29296875 0.04052734 -0.09326172 -0.10107422\n", " -0.27539062 0.04394531 -0.07275391 0.13867188 0.02380371 0.13085938\n", " 0.00236511 -0.2265625 0.34765625 0.13574219 0.05224609 0.18164062\n", " 0.0402832 0.23730469 -0.16992188 0.10058594 0.03833008 0.10839844\n", " -0.05615234 -0.00946045 0.14550781 -0.30078125 -0.32226562 0.18847656\n", " -0.40234375 -0.3125 -0.08007812 -0.26757812 0.16699219 0.07324219\n", " 0.06347656 0.06591797 0.17285156 -0.17773438 0.00276184 -0.05761719\n", " -0.2265625 -0.19628906 0.09667969 0.13769531 -0.49414062 -0.27929688\n", " 0.12304688 -0.30078125 0.01293945 -0.1875 -0.20898438 -0.1796875\n", " -0.16015625 -0.03295898 0.00976562 0.25390625 -0.25195312 0.00210571\n", " 0.04296875 0.01184082 -0.20605469 0.24804688 -0.203125 -0.17773438\n", " 0.07275391 0.04541016 0.21679688 -0.2109375 0.14550781 -0.16210938\n", " 0.20410156 -0.19628906 -0.35742188 0.35742188 -0.11962891 0.35742188\n", " 0.10351562 0.07080078 -0.24707031 -0.10449219 -0.19238281 0.1484375\n", " 0.00057983 0.296875 -0.12695312 -0.03979492 0.13183594 -0.16601562\n", " 0.125 0.05126953 -0.14941406 0.13671875 -0.02075195 0.34375 ]\n" ] } ], "source": [ "# Access embeddings with word-lookup\n", "print(word_emb[\"apple\"].shape)\n", "print(word_emb[\"apple\"])" ] }, { "cell_type": "code", "execution_count": 4, "id": "52a63f19-ac08-40a4-99c5-86b76bab8393", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 2.60009766e-02 -1.89208984e-03 1.85546875e-01 -5.17578125e-02\n", " 5.12695312e-03 -1.09863281e-01 -8.17871094e-03 -8.83789062e-02\n", " 9.66796875e-02 4.83398438e-02 1.10473633e-02 -3.63281250e-01\n", " 8.20312500e-02 -2.12402344e-02 1.58203125e-01 4.41894531e-02\n", " -1.17797852e-02 2.12890625e-01 -5.73730469e-02 5.66406250e-02\n", " -1.07421875e-01 1.85546875e-01 7.71484375e-02 1.44958496e-04\n", " 1.52343750e-01 -6.54296875e-02 -1.52343750e-01 2.25585938e-01\n", " 8.10546875e-02 8.88671875e-02 7.32421875e-02 -1.03515625e-01\n", " -6.68945312e-02 1.76757812e-01 2.12890625e-01 1.40625000e-01\n", " -3.41796875e-02 1.78222656e-02 5.95703125e-02 2.86102295e-04\n", " 5.88378906e-02 9.27734375e-03 1.66992188e-01 -2.70080566e-03\n", " 1.15722656e-01 1.04492188e-01 5.37109375e-02 1.85546875e-02\n", " 1.06445312e-01 5.05371094e-02 -1.64794922e-02 -1.27929688e-01\n", " 2.16796875e-01 5.15136719e-02 4.78515625e-02 1.52343750e-01\n", " 1.71875000e-01 7.86132812e-02 -5.88378906e-02 -4.29687500e-02\n", " -7.27539062e-02 1.81640625e-01 -8.05664062e-02 -1.54296875e-01\n", " -1.16699219e-01 8.44726562e-02 -6.17675781e-02 -4.51660156e-02\n", " 9.21630859e-03 1.33789062e-01 1.92871094e-02 6.44531250e-02\n", " 1.08886719e-01 1.58203125e-01 -2.35595703e-02 1.23535156e-01\n", " 1.69921875e-01 3.49121094e-02 1.29882812e-01 2.65625000e-01\n", " 1.93359375e-01 -8.83789062e-02 8.49609375e-02 -2.96630859e-02\n", " 5.76171875e-02 2.51464844e-02 -1.01562500e-01 1.99218750e-01\n", " 1.04492188e-01 -2.42919922e-02 2.01416016e-02 -3.51562500e-02\n", " 6.64062500e-02 -6.20117188e-02 2.90527344e-02 -9.81445312e-02\n", " -1.81640625e-01 2.14843750e-01 -5.76171875e-02 -4.51660156e-02\n", " 4.49218750e-02 -1.95312500e-02 -2.08984375e-01 1.19628906e-01\n", " -9.03320312e-02 5.07812500e-02 9.03320312e-03 -9.76562500e-02\n", " -7.86132812e-02 -1.36718750e-01 -1.13769531e-01 -5.64575195e-03\n", " -4.07714844e-02 -2.05993652e-03 -5.66406250e-02 3.64685059e-03\n", " 8.30078125e-02 -7.08007812e-02 2.63671875e-01 1.24511719e-01\n", " -1.61132812e-02 9.13085938e-02 -2.39257812e-01 -1.04980469e-02\n", " -6.78710938e-02 1.40625000e-01 2.34375000e-01 -6.39648438e-02\n", " 1.95312500e-01 5.02929688e-02 -1.25000000e-01 2.06298828e-02\n", " -1.19140625e-01 -1.17187500e-01 -9.01222229e-05 3.68652344e-02\n", " 1.46484375e-01 2.47802734e-02 -1.49414062e-01 3.03649902e-03\n", " -3.10058594e-02 1.06933594e-01 2.55859375e-01 -6.00585938e-02\n", " -2.07031250e-01 1.58203125e-01 -2.15820312e-01 -1.84570312e-01\n", " -1.72851562e-01 7.99560547e-03 -3.03955078e-02 9.81445312e-02\n", " 4.66918945e-03 2.57812500e-01 1.06933594e-01 1.26953125e-01\n", " 6.34765625e-02 -1.30859375e-01 6.54296875e-02 -9.91210938e-02\n", " 5.90820312e-02 -3.71093750e-02 1.01074219e-01 1.53320312e-01\n", " -1.53320312e-01 -7.56835938e-02 5.85937500e-02 -5.05371094e-02\n", " 2.08007812e-01 4.85839844e-02 -9.42382812e-02 -9.71679688e-02\n", " -1.23046875e-01 -1.97265625e-01 -1.76757812e-01 -1.11328125e-01\n", " 1.11328125e-01 -5.88378906e-02 2.27539062e-01 4.00390625e-02\n", " 1.24511719e-01 1.47460938e-01 1.81884766e-02 4.05273438e-02\n", " 1.69921875e-01 1.13769531e-01 -2.24609375e-02 6.73828125e-02\n", " 8.59375000e-02 6.73828125e-02 2.06298828e-02 4.78515625e-02\n", " 1.84326172e-02 2.05078125e-01 -4.68750000e-02 2.00195312e-01\n", " -1.56250000e-02 -1.40625000e-01 1.09863281e-02 -1.73828125e-01\n", " 4.85839844e-02 -1.58203125e-01 -1.04492188e-01 3.63769531e-02\n", " 3.01513672e-02 1.27929688e-01 -1.14257812e-01 1.41601562e-01\n", " 2.34375000e-01 -8.98437500e-02 -1.02996826e-03 -1.50390625e-01\n", " 1.79687500e-01 1.35742188e-01 -2.08007812e-01 -1.27563477e-02\n", " 1.75781250e-01 -1.39648438e-01 -2.03125000e-01 -3.00292969e-02\n", " -2.78320312e-02 -6.50024414e-03 1.26953125e-01 -1.49414062e-01\n", " 1.46484375e-01 -8.42285156e-03 1.12304688e-01 1.66015625e-01\n", " -1.57470703e-02 1.23046875e-01 7.22656250e-02 -4.37011719e-02\n", " -7.56835938e-02 -9.03320312e-02 1.01562500e-01 -1.44531250e-01\n", " -4.00390625e-02 -1.26953125e-02 2.66113281e-02 -7.81250000e-02\n", " 3.56445312e-02 3.49121094e-02 1.79687500e-01 -1.38671875e-01\n", " 2.80761719e-02 -2.86865234e-02 6.78710938e-02 7.03125000e-02\n", " 9.57031250e-02 5.00488281e-02 -2.20947266e-02 -3.00781250e-01\n", " 1.14257812e-01 7.51953125e-02 1.26342773e-02 1.32812500e-01\n", " 2.52685547e-02 3.63769531e-02 -2.81982422e-02 -1.36718750e-01\n", " 1.79687500e-01 -9.27734375e-02 8.49609375e-02 1.32812500e-01\n", " 3.97949219e-02 4.29687500e-01 -1.87988281e-02 -1.47460938e-01\n", " 6.10351562e-02 9.03320312e-02 8.69140625e-02 -6.88476562e-02\n", " 1.10839844e-01 9.81445312e-02 1.50390625e-01 1.61132812e-01\n", " -8.05664062e-02 -1.74804688e-01 -3.32031250e-02 -1.28906250e-01\n", " 1.22558594e-01 -1.44653320e-02 -1.63085938e-01 -3.58886719e-02\n", " 2.78320312e-02 -6.34765625e-02 -7.91015625e-02 -1.14746094e-01\n", " 1.84326172e-02 2.91748047e-02 -3.00781250e-01 -4.58984375e-02\n", " -1.74804688e-01 2.33398438e-01 2.25830078e-02 1.10351562e-01\n", " -1.03515625e-01 -1.21582031e-01 2.21679688e-01 -2.19726562e-02]\n" ] } ], "source": [ "# Access embeddings with index-lookup\n", "print(word_emb[10])" ] }, { "cell_type": "markdown", "id": "4c980361-d38a-4ef6-bb66-06e0c62c0a8d", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Let's check the vocabulary" ] }, { "cell_type": "markdown", "id": "3a19e89d-d6c2-49c5-8a8d-d71bd3561a67", "metadata": {}, "source": [ "- Two important attributes:\n", " - ```key_to_index``` : maps a word to its vocabulary index\n", " - ```index_to_key``` : maps a vocabulary index to corresponding word" ] }, { "cell_type": "code", "execution_count": 5, "id": "fc7eaeac-f570-453c-b9a0-9be2cbf4f05e", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Vocabulary length 3000000\n", "Index of cat 5947\n", "Word at position 5947 cat\n" ] } ], "source": [ "print(f\"Vocabulary length {len(word_emb.key_to_index)}\")\n", "print(f\"Index of cat {word_emb.key_to_index['cat']}\") # from word to index\n", "print(f\"Word at position 5947 {word_emb.index_to_key[5947]}\") # from index to word" ] }, { "cell_type": "markdown", "id": "335ab44e-e5b9-4060-bc1b-8cc12ab8878c", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Compute similarity and distance" ] }, { "cell_type": "code", "execution_count": 6, "id": "18c9ff38-21b9-469b-9942-ef71fc1236d7", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w1 w2 cos_sim cos_dist\n", "car minivan 0.691 0.309\n", "car bicycle 0.536 0.464\n", "car airplane 0.424 0.576\n", "car cereal 0.139 0.861\n", "car communism 0.058 0.942\n" ] } ], "source": [ "pairs = [\n", " ('car', 'minivan'), \n", " ('car', 'bicycle'), \n", " ('car', 'airplane'), \n", " ('car', 'cereal'), \n", " ('car', 'communism'),\n", "]\n", "print(\"w1 w2 cos_sim cos_dist\")\n", "for w1, w2 in pairs:\n", " print(f\"{w1} {w2} {word_emb.similarity(w1, w2):.3f} {word_emb.distance(w1, w2):.3f}\")\n", " " ] }, { "cell_type": "markdown", "id": "4968ae71-8c50-4f9e-9c09-24147eba5120", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Nearest Neighbour (NN) Retrieval // Similarity Search" ] }, { "cell_type": "markdown", "id": "7252e54f-35d1-424e-8bc2-a1e5d1b1452d", "metadata": {}, "source": [ "- gensim has a ```most_similar``` function:\n", " - however, it does not perform exhaustive nearest-neighbour research\n", " - given a query word $w_q$ we want to find a ranked list $L_q$ of words in vocabulary $V$\n", " in decreasing order of cosine similarity\n", " - e.g. $w_q$ = \"joy\" then $L_q$ = [\"joy\", \"happiness\",... ]\n", "- We can write our own function!" ] }, { "cell_type": "code", "execution_count": 7, "id": "44ef69c2-0055-486b-8137-7a9cdfc1b38d", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [], "source": [ "def retrieve_most_similar(query_words, all_word_emb, restrict_vocab=10000):\n", " \n", " # Step 1: Get full or restricted vocabulary embeddings\n", " # If restrict_vocab=None then we have exhaustive search, otherwise we restrict the vocab to the most frequent words\n", " vocab_emb = all_word_emb.vectors[:restrict_vocab+1,:] if restrict_vocab is not None else all_word_emb.vectors # shape: |V_r| x word_emb_size\n", " \n", " # Step 2: get the word embeddings for the query words\n", " query_emb = all_word_emb[query_words] # shape: |Q| x word_emb_size\n", " \n", " # Step 3: get cosine similarity between queries and embeddings\n", " cos_sim = cosine_similarity(query_emb, vocab_emb) # shape: |Q| x |V_r|\n", " \n", " # Step 4: sort similarities in desceding orders and get indices of nearest neighbours\n", " nn = np.argsort(-cos_sim) # shape: |Q| x |V_r|\n", " \n", " # Step 5: delete self-similarity, i.e. cos_sim(w,w)=1.0 \n", " nn_filtered = nn[:, 1:] # remove self_similarity\n", " \n", " # Step 6: use the indices to get the words\n", " nn_words = np.array(word_emb.index_to_key)[nn_filtered]\n", " \n", " return nn_words" ] }, { "cell_type": "code", "execution_count": 8, "id": "85f691a6-1c91-4546-84be-4ff2439e9c77", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[['kings' 'queen' 'monarch' 'crown_prince' 'prince' 'sultan' 'ruler'\n", " 'princes' 'throne' 'royal']\n", " ['queens' 'princess' 'king' 'monarch' 'Queen' 'princesses' 'royal'\n", " 'prince' 'duchess' 'Queen_Elizabeth_II']\n", " ['french' 'Italy' 'i' 'haha' 'Cagliari' 'india' 'dont' 'thats' 'mr'\n", " 'lol']\n", " ['Italian' 'Sicily' 'Italians' 'ITALY' 'Spain' 'Bologna' 'Italia'\n", " 'France' 'Milan' 'Romania']\n", " ['registered_nurse' 'nurses' 'nurse_practitioner' 'midwife' 'Nurse'\n", " 'nursing' 'doctor' 'medic' 'pharmacist' 'paramedic']]\n" ] } ], "source": [ "queries = [\"king\", \"queen\", \"italy\", \"Italy\", \"nurse\"]\n", "res = retrieve_most_similar(queries, word_emb, restrict_vocab=100000)\n", "top_k = 10\n", "res_k = res[:, :top_k]\n", "del res\n", "print(res_k)" ] }, { "cell_type": "markdown", "id": "bf58b008-445d-4950-a78d-4ab87fdba266", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Dimensionality Reduction and Plotting\n", "\n", "- We want to plot our word embeddings\n", "- But they ''live'' in $\\mathbb{R}^{300}$\n", "- Let's use dimensionality reduction techniques, like PCA" ] }, { "cell_type": "code", "execution_count": 9, "id": "24554147-0a3c-4bb5-b2d4-ab6cd75f0d07", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(|Q| x k) x word_emb_size\n", "(50, 300)\n" ] } ], "source": [ "all_res_words = res_k.flatten()\n", "res_word_emb = word_emb[all_res_words]\n", "print(\"(|Q| x k) x word_emb_size\")\n", "print(res_word_emb.shape)" ] }, { "cell_type": "code", "execution_count": 10, "id": "0add5d0d-ed1f-419c-a66d-b906ac96c744", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [], "source": [ "pca = PCA(n_components=3) #Perform 3d-PCA\n", "word_emb_pca = pca.fit_transform(res_word_emb)" ] }, { "cell_type": "code", "execution_count": 11, "id": "806c5683-92a4-413f-b616-cbd85826852c", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " pca_x pca_y pca_z word query\n", "0 -0.951780 -0.588461 0.546893 kings king\n", "1 -1.366599 -0.059902 0.103550 queen king\n", "2 -2.038808 -0.398816 -0.404128 monarch king\n", "3 -1.730922 -0.289503 -0.157777 crown_prince king\n", "4 -1.596841 -0.419770 -0.252166 prince king\n" ] } ], "source": [ "pca_df = pd.DataFrame(word_emb_pca, columns=[\"pca_x\", \"pca_y\", \"pca_z\"])\n", "\n", "pca_df[\"word\"] = res_k.flatten()\n", "\n", "labels = np.array([queries]).repeat(top_k)\n", "pca_df[\"query\"] = labels\n", "\n", "print(pca_df.head())" ] }, { "cell_type": "code", "execution_count": 12, "id": "d05b1a05-8dea-4e25-a469-96499d4ffeda", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "query=king
pca_x=%{x}
pca_y=%{y}
pca_z=%{z}
word=%{text}", "legendgroup": "king", "marker": { "color": "#636efa", "opacity": 0.7, "symbol": "circle" }, "mode": "markers+text", "name": "king", "scene": "scene", "showlegend": true, "text": [ "kings", "queen", "monarch", "crown_prince", "prince", "sultan", "ruler", "princes", "throne", "royal" ], "type": "scatter3d", "x": [ -0.9517804384231567, -1.366599440574646, -2.0388078689575195, -1.7309224605560303, -1.5968408584594727, -1.369072437286377, -1.1658663749694824, -1.6947394609451294, -1.8148521184921265, -1.7376943826675415 ], "y": [ -0.5884613990783691, -0.0599016398191452, -0.39881592988967896, -0.2895025908946991, -0.41976988315582275, -0.6122424006462097, -0.153344064950943, -0.7690215706825256, -0.6006054878234863, -0.3387441635131836 ], "z": [ 0.5468930006027222, 0.1035504937171936, -0.4041284918785095, -0.15777726471424103, -0.25216609239578247, 0.08896508067846298, 0.0244793388992548, -0.09496109187602997, -0.048294227570295334, -0.12886901199817657 ] }, { "hovertemplate": "query=queen
pca_x=%{x}
pca_y=%{y}
pca_z=%{z}
word=%{text}", "legendgroup": "queen", "marker": { "color": "#EF553B", "opacity": 0.7, "symbol": "circle" }, "mode": "markers+text", "name": "queen", "scene": "scene", "showlegend": true, "text": [ "queens", "princess", "king", "monarch", "Queen", "princesses", "royal", "prince", "duchess", "Queen_Elizabeth_II" ], "type": "scatter3d", "x": [ -0.9125000834465027, -1.4164530038833618, -1.3207920789718628, -2.0388078689575195, -0.8670774698257446, -1.2828762531280518, -1.7376943826675415, -1.5968408584594727, -1.2784538269042969, -1.5294901132583618 ], "y": [ -0.14129917323589325, 0.03801686316728592, -0.5229200720787048, -0.39881622791290283, 0.03786739706993103, -0.008012920618057251, -0.3387441635131836, -0.4197693467140198, -0.17408403754234314, -0.32198742032051086 ], "z": [ 0.5540258884429932, -0.0528465136885643, 0.48819461464881897, -0.4041287899017334, -0.2179393619298935, 0.03382590413093567, -0.12886901199817657, -0.2521649897098541, -0.6913980841636658, -0.7494331002235413 ] }, { "hovertemplate": "query=italy
pca_x=%{x}
pca_y=%{y}
pca_z=%{z}
word=%{text}", "legendgroup": "italy", "marker": { "color": "#00cc96", "opacity": 0.7, "symbol": "circle" }, "mode": "markers+text", "name": "italy", "scene": "scene", "showlegend": true, "text": [ "french", "Italy", "i", "haha", "Cagliari", "india", "dont", "thats", "mr", "lol" ], "type": "scatter3d", "x": [ 0.9309588670730591, 1.462249994277954, 0.9464520215988159, 0.9751124978065491, 2.0935122966766357, 0.9193646311759949, 0.9844239354133606, 0.9996874332427979, 0.5211668610572815, 0.9143239259719849 ], "y": [ -0.8589074611663818, -1.0839223861694336, -0.14867663383483887, -0.36846986413002014, -1.414186716079712, -0.6561701893806458, -0.1323813498020172, -0.11387570947408676, -0.2994327247142792, -0.16725479066371918 ], "z": [ 1.1040490865707397, -1.147091269493103, 1.676418423652649, 2.1434600353240967, -1.0863116979599, 1.7296453714370728, 2.1569983959198, 2.1118345260620117, 2.0187184810638428, 2.325324773788452 ] }, { "hovertemplate": "query=Italy
pca_x=%{x}
pca_y=%{y}
pca_z=%{z}
word=%{text}", "legendgroup": "Italy", "marker": { "color": "#ab63fa", "opacity": 0.7, "symbol": "circle" }, "mode": "markers+text", "name": "Italy", "scene": "scene", "showlegend": true, "text": [ "Italian", "Sicily", "Italians", "ITALY", "Spain", "Bologna", "Italia", "France", "Milan", "Romania" ], "type": "scatter3d", "x": [ 1.4158889055252075, 1.3687331676483154, 1.2609578371047974, 1.971722960472107, 0.8236953616142273, 1.8961466550827026, 1.5968090295791626, 0.8499287366867065, 1.3787188529968262, 1.2337576150894165 ], "y": [ -1.0573140382766724, -1.0023144483566284, -1.0882835388183594, -1.4329508543014526, -0.7145146727561951, -1.0877175331115723, -0.8948194980621338, -0.5499246120452881, -0.9163414239883423, -0.5847146511077881 ], "z": [ -1.1201683282852173, -1.2993834018707275, -0.9582164287567139, -0.748938262462616, -0.5381762385368347, -1.2336772680282593, -0.6072587370872498, -0.48449867963790894, -0.8369559645652771, -0.4665997624397278 ] }, { "hovertemplate": "query=nurse
pca_x=%{x}
pca_y=%{y}
pca_z=%{z}
word=%{text}", "legendgroup": "nurse", "marker": { "color": "#FFA15A", "opacity": 0.7, "symbol": "circle" }, "mode": "markers+text", "name": "nurse", "scene": "scene", "showlegend": true, "text": [ "registered_nurse", "nurses", "nurse_practitioner", "midwife", "Nurse", "nursing", "doctor", "medic", "pharmacist", "paramedic" ], "type": "scatter3d", "x": [ 0.5844143629074097, 0.41321346163749695, 0.5576409697532654, 0.2616342604160309, 0.5629440546035767, 0.6022177338600159, 0.23832714557647705, 0.4809919595718384, 0.6038249135017395, 0.5993444919586182 ], "y": [ 2.6503474712371826, 1.9749938249588013, 2.792224407196045, 2.257770299911499, 1.9113136529922485, 1.7936431169509888, 1.7009142637252808, 1.8391629457473755, 2.057131767272949, 2.074826717376709 ], "z": [ -0.5991157293319702, -0.24604666233062744, -0.46162161231040955, -0.33090874552726746, -0.10178092867136002, -0.2647252678871155, -0.15270692110061646, -0.2492000162601471, -0.249731183052063, -0.3402983546257019 ] } ], "layout": { "autosize": true, "legend": { "title": { "text": "query" }, "tracegroupgap": 0 }, "scene": { "aspectmode": "auto", "aspectratio": { "x": 1.036947374917748, "y": 1.0602480496098923, "z": 0.9095693162525992 }, "camera": { "center": { "x": 0, "y": 0, "z": 0 }, "eye": { "x": 0.9545193387358788, "y": 0.9545193387358786, "z": 0.9545193387358786 }, "projection": { "type": "perspective" }, "up": { "x": 0, "y": 0, "z": 1 } }, "domain": { "x": [ 0, 1 ], "y": [ 0, 1 ] }, "xaxis": { "title": { "text": "pca_x" }, "type": "linear" }, "yaxis": { "title": { "text": "pca_y" }, "type": "linear" }, "zaxis": { "title": { "text": "pca_z" }, "type": "linear" } }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "3d-PCA representation of word embeddings" } } }, "image/png": "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mTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIIJCpAoTfmTqzjAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEOjEAoTfnXjyGToCCCCAAAIIIIAAAggggAACCCCAAAIIbHuBiqpqGT95pnzy+Vfxix+wzx5y77QJUlJUIM+8+IYsev8zuXnSWMnJzjL7vPfhYpkxa158H/2e7nf97XPi53jorsly6KAB5mvrHCNPPNxcS7ff//Zy+dNj82XiuFHx/RKde9urdPwVCb873pQzIoAAAggggAACCCCAAAIIIIAAAggggAACrgJW8G0PoJ3Bdirht3OfZStWy7irZ8jUKReZYNsKxi84Z7hcOW5U/F7unDVP1q7fFA/W60ONcuP0OdKjW5cW+2XC9BF+Z8IsMgYEEEAAAQQQQAABBBBAAAEEEEAAAQQQ2CkEtiTY1oHZA3L9esrvZsukS86Wfrv1bBFs6xcadrtdR1/TkPzaqbPl1ikXmWOdX+8UiCneJOF3ilDshgACCCCAAAIIIIAAAggggAACCCCAAAIItFdAK6+tgNo6V7qV35sqq02V95p15a1ux6r0ThR+Oyu9nZXg7R3fjnQ84feONBvcCwIIIIAAAggggAACCCCAAAIIIIAAAghktICGzbv36SFnDD86Ps4tCb/t1dtuYInCb91XX5v3wuvyuykXya+nzm7VAzxTJoDwO1NmknEggAACCCCAAAIIIIAAAggggAACCCCAwA4v0BGV3zpIXcTSuXClffDJwm/7gpv2hTZ3eLw0b5DwO00wdkcAAQQQQAABBBBAAAEEEEAAAQQQQAABBLZUwNlj22pD8s3q9XLvtAlSUlRg+ntPmTpbZt0+0fTltsJqvaa1j4boLy58J76PvqbHfbt6vakqTxZ+6756/AOPvyi/uXpsiyr0LR3Xjngc4feOOCvcEwIIIIAAAggggAACCCCAAAIIIIAAAghkrICG1GOumGbGt0v3Uhkz6iSZ/4+348G2fl/D6+tvn2P20ers8396kjz45EsJ97HOZQXmbYXfzoA9E7EJvzNxVhkTAggggAACCCCAAAIIIIAAAggggAACCOw0As6e39vixtsKx7fFPWztaxB+b21hzo8AAggggAACCCCAAAIIIIAAAggggAACCCQR2Nbht9VGJVnP8EyYMMLvTJhFxoAAAggggAACCCDQ4QLRaEyaojHJ8ns7/NycEAEEEEAAAQQQQAABu8C2Dr+16nveC6+3aKGSiTNC+J2Js8qYEEAAAQQQQAABBLZIoCkSFZ/XKzX1YamubzLBd2FeQOobIpIT9BGEb5EqByGAAAIIIIAAAgggsH0ECL+3jztXRQABBBBAAAEEENhBBDTwbmyKSV1DkzSGo1KcH5BQQ0RC4agJuwty/VK+udHcrccjkhv0myDc7/WI1+vZQUbBbSCAAAIIIIAAAggggIBTgPCbZwIBBBBAAAEEEECg0wloS5P6xojUhZokHIm1GL+G3w3hqKn2dobf9h01CC8rDEosJuL3EYR3uoeIASOAAAIIIIAAAgjs8AKE3zv8FHGDCCCAAAIIIIAAAh0h0BCOSKgxKtFYTHKDvng1t/PcqYbfelzXoqBsqm405wz4vZIX9Esw4KUivCMmjHMggAACCCCAAAIIINBOAcLvdgJyOAIIIIAAAggggMCOK6CBt1ZwayV3JNpc4Z2smltfTyf87lacLeWbG+LntiSyAl7JyfJJXrZ/x8XhzhBAAAEEEEAAAQQQyHABwu8Mn2CGhwACCCCAAAIIdDYB7dutMfem6gbTksS5aYuSorxAh1R+Jwq/rWvq65vrwhLwe0wY7vd5O9t0MF4EEEAAAQQQQAABBLabAOH3dqPnwggggAACCCCAAAIdIWAtWBlq1LYmyft06/V8Xo90KciSDVUNrpfviMpv68Q9SrJlbUUofh29dm62T4IBn6lAZ0MAAQQQQAABBBBAYEcReObFN2TR+5/JzZPGSk52VovbunPWPPP1leNG7Si3m9J9EH6nxMROCCCAAAIIIIAAAjuSgBV41zU0iVZ627e2Krs1gC4tDMr6yu9DafvxHRl+9yzNkdXl9a50umBmSX6WaIsUr37BhgACCCCAAAIIIIBACgIbNsakMSySFRDpWtZx/44k/E4Bn10QQAABBBBAAAEEEEhXYO5fXpZePcpk6FEHJzxUA2/t3f27ux6Ssb84Q3Jyclz3bauyO5Xw2+PxiNcjpkJbr1tZE5bGppYhu15c25okCtFTed0K2rViPTfol5ygT/xeDwtmpvsAsT8CCCCAAAIIINAJBJZ9HZO33o7K5urve/sVFnhk+IneDgnBk4XfOysvld8768xx3wgggAACCCCAQAYJjLlimgweNEAuGXNai1HpgpWhxqhpZ2ItWHnimePl8Vm3SllZl4Thd7LKbi2y7lrUOrTODnglO8snudl+qW+MSH2oSXSNTA2o9do+r1esSnMrCE8WfrcVsuvN26vMrcHo/Wl/cA3eg1oVrik8GwIIIIAAAggggECnFmhoFHn48Yg0NLRe1EYD8LPP9EmwZaeStL2c4bd+fc/Df5VZt0+Uv770ljmftj1ZtmK1XDt1tow88QiZ+vvHzPcvOGd4i5Yoeuz1t8+J38MB++wh906bICVFBWnfV3sOIPxujx7HIoAAAggggAACCHSIgD381sC7viEiK1ZvkEgkJvl5OZKflxu/jobfT/zpViktdQ+/dUdnr23nTVqhtfbdzg36TOjd0NQcsmvldVM0Zu5BXy/I9ZvFMTXM1spsDaajsZipQi/MDSRsa5JK+F1SkCW19U2uVeV6z1ZrFG2Lou1cCMI75HHjJAgggAACCCCAwE4n8OEnUXnz7dY/iWgN5PSRPunds31FE/bw+3+Lv5KnXng93v/b3vNbw+9xV8+Q4UMPM4F3RVW1jJ88UyaOGyWHDhog7324WKZMnW1C83679TRfz5g1j/B7p3vquGEEEEAAAQQQQAABV4HPl6yQwvxc6bVL15SERl8+VQ4YTANCAAAgAElEQVTYby+58sIz5dW3P5Gnnn9Vli3/1oTeNbV1cvM1F0u/vn3MuTT8nnf/76SkpCThuZP12tZAu6woaNqZaEV3XUPE9A23KssLcvyu4bf9YnoO7dWt4bdVna5V4TFbIU5b7Vf0fKWFWVJVG5amSOsKHut6uk91XXNArtfU8F1/EYSn9GixEwIIIIAAAgggkBEC77wflXffTxx+//Bwrww6oH0Lqlvh98gTDzcV3/ZKbWf4rZXft065yITb9aFGuXH6HDnr5GNN+O1cHJPwOyMeQQaBAAIIIIAAAgggYAkkamNivR6NxiQUbq601vD4yuvvlIH79ZcJF50hI8+9RnKys+WOWyaY8PuRJ+fLy6+9LY/ed2s8/H56zlQpLCpOCO6s/Naqae2pnZ3lNSG3thRZVxGKB972E6USflv7a8i+saqhuV1K0CfhSNSE6TouDb+L8gKmajzRphXo5ZsbXO/DOibRPhqEa1sUDcL9vvb9hw5PLgIIIIAAAggggMCOLdBW+N1Rld9Wq5LfXD1Wzhh+dBwl3fB79z494scTfu/YzxZ3hwACCCCAAAIIIJCmgFv4rZXWjU1aad1kKq3vmfOUHDl4oAzcv79MvKE5/L78gtPl1PMmy6k/Pk7OGDnUXFUrv08fPVHuuHmC2Vcrv599cJrkFxYlDZUraxol8F1bE20fUhtqDqU1/E7WFsUZfudm+8yCl26b8zymjUq2T7L8PonFYqY9yqbqxhYV4fbzaLC9oSqU8HXdN5V9tF95cUFzNbveAxsCCCCAAAIIIIBAZgls2BiTJ56JJBzUeef4pbCd7bS18nveC6/LzJsulZl/eipeya0XTTf81mO0JYpuhN+Z9SwyGgQQQAABBBBAoNMLaPjdq0eZcXj3v5+bP0+54nwp+C6w1rD740+XSF5ujvTr21vWrS+XYccdLpeOOU3OGDtFykqbW5qsW7+p+fcN5XLuqBHSvVup3PGHR2SXbqVmMcru3b7v+91v996mNcrHn34pg/bpKz8/80SzWKaG7c62IskWqkwn/E50Hg3b87L9kp/tN/dvVYNbC2VaD0iy9izp7KO9yLUKXEN6vbZWuev3CMI7/VsRAAQQQAABBBDIIIF/vB6Vz79s3fpE251o25P2bvae36GGhhZ9vNMJv51htx777oeL6fnd3gnieAQQQAABBBBAAIHtL6AB7wUTpsmqtRtl0mXnmRu68bb7TMitvbtrauvlqhvulHUbNsn4888yld1z5y0w4fZpJx0lv/z1DKnaXCu1dfVy+oih8u93PzT76nbgfnuZ0Pyq8WfL3L+8bM6l+1nbnn17y/Djj5DSknw5+sjBCXtpJ6um7ojwW+/HCqS1p7fVciXg87YIwttamDOVRTP1Whq0676b61pWqNuDcF3Ikz7h2//9wR0ggAACCCCAAALtEVj2dUw2lsdk1eqY9OrpkV67eNq90KV1P/bwOyc7S6yFLadOuUjefOdjs5tWc+v3k/X81v008H7g8RfNMRecM1zWrt8UXzyzPeNP91hPTH8ekw0BBBBAAAEEEEAAgXYIaN/u+gbt3928cKTVxmT0T0eaft3T//BI/OwaYC9bvtKE1kcMHijdu5bKswsWmte1onvN+nJTEa6va6uTex98SpZ9vdK8rtXd+udB+/eXNes2tgq/jzh0oNw8+WKzkKS1SKTbsJL12k41/NZguWtRtqyvDLnK2auxrR2sinCt0vZ5veL1iGyoStzzW3uVl+RnmX2SbbrwprrXhpoS7mYF4QW5fpGYEIS343nnUAQQQAABBBBAAIHUBTRU//rbtfE2KKkf2f49Cb/bb8gZEEAAAQQQQACBTimg/bO1p3ZVbaNpL2LfrPBb+3Zr1bdWa+umwbdWe990233xam7ruGHHDpFrJ5wv54y7Vlav3djifFYYfubIofL0/Oag3LlZLVR6dCuVX11whuQXFImzzYh1TNeioOnFrYGxc9PwW7+t49M/i0dce363VZWt4bdWW1fXuwfS2pKkS0GWuVYkGjUfHGh4bS9N0X3ycvxSUZ140Uy9/+L8gIR0oc1w6x+DtY9Pe4PnZPvF6oeui2XqLyrCO+VbmEEjgAACCCCAAAJbRaCiqtq0TPnk86/M+UccP2S7VH3rtQm/t8oUc1IEEEAAAQQQQCDzBKLRmAlXNRTWSm8NaZ0Vx0uXf2sGrtXauoClVn5P//3D8vLri6RnjzKZeMm58vfX3paXX1tk9tO2JgP320tuun2WdO/aRc465QR5ZsFCycnONhXe997xa/nzX16UD//3ZRy0uqYu/mcrFNdvaFX4VZeNln+/+5Ecsv8ecsig/ROGwVoZrv2xneG3VkcX5QYkK9DcM1EX5szO8rn27G4r/NZWJFrZnSz81irs8s2Npje3Xic36JNwRI2be5Xr96xe3smeKA3zK2oaE7Z5sY5N1B5Fx0sQnnnvWUaEAAIIIIAAAgh0dgHC787+BDB+BBBAAAEEEEAgiUBTJCqNTTETxGoQ7NycYeo9c56S2to6WbuhPB5+W21PNPx+fNatcv9jz5se37pNumy0rF1fHv9aK8M3llfICcccJo88uUCuvuQc+c/HX8jCtz4w+9vDbufXeuyMW640+2koryGytmJx2zT81l7c1kKYGj5r8JwV8In2BNGxVtaGTSitldfNIXhzqxK10Aptr8cjpYXBhG1PTNW4JA6/tQo7O+hrVVVuD8K1KlzHoZXayZoVJuthbh9/Ku1RNAjXwD0v6KcinL8dEEAAAQQQQAABBHZqAcLvnXr6uHkEEEAAAQQQQGDrCGh1d03IPfC2X1GDWqt62f79e+bMk359+8iPjjs83vO7ID9XXvzzTPl61Yb4gpda7a37abW2bgcd0F9KivJl8dJvzKKXukimbto2RXuDnz7yOJn75ALTD9w69qPvqsKbv1dq+ohfOuY0ydW+4Ql6YGv4XReKmJYmGlJrBXidtg1pjEh+9vehtQnFs78PqLXaW9uZ6D56TDQWM5Xbbpu9d7jb6249we37mSr0vIBk+TWQF2lsiph7dmvl0tbCmdZ5SwqypD7U1GZ7FN1fP9gI+DwSicUkGPCZDwLYEEAAAQQQQAABBBDYmQQIv3em2eJeEUAAAQQQQACBrSSggapWSTeGI5ITbA52ky2eaN2GBrTdi7NlbUXzoo/T//Cw+X3SZeeJhtJX3TjT9PnWBS51O2rIIDnxmCEtFrHUinANxr9Y+o3036OPHDpogDz2zCtm/1eevjd+Hq361n7e1uKXuhjmwP37i1ab//vdD0X7i+t1Pvr0Sxl2zA/k0rFnubYc0Yrr4nzttd1c4a1tSeztT+wV287w284fzPJKaUFQtB2MflCgwblVSa77aR9u7eOdqPpcw++Azyub68IJZ9U6h547N+g31ed6jBXU67y11X7FfvJkC306b8J5/9aCmXrfBOFb6Y3IaRFAAAEEEEAAAQQ6VIDwu0M5ORkCCCCAAAIIILDzCGjfbg1mNaC1h7/WoohtLbJojVSrjtdVhkxbDrfw+9xRI+SZ+Qtl6nWXyOW/nmECbg2ely5fKeecfoJcOe5s+ff7n8mvrr3TtDXp1aNMvvyquXe4ht+PPDnftEWZe+9vTfiti2lqJbgVfmsP8WfnL5S8vBzpt3sfWbehXPr27ia/vHBUPPzWgFhDbW3pEY7Emntx1zW5VlGnGn7rOTUg1oUztUpae2bruKx+3Vq1nSz8bqstio5fK7Vr61vepxVCW0F4Q1PUjCdRBbr9iexZmiOry+tTekiTBeX2IFwX9WTBzJRI2QkBBBBAAAEEEEBgGwsQfm9jcC6HAAIIIIAAAghsTwGtIG5esLJl4G2/J7/PIyX5WbKhqiGlW9UWIlaQ7BZ+a4D9i4uvlbr6kOhilQ/ceY28+uYH8udnX4kH2lolfuNt95k2J/v/37Hy/75YJKGGRvH5vCYQb1q2Sc7veaBs/O8KWbb8W1m3YZNpcaL7DztuiEz//SPxe83Py5F7bpsku/XuZsaqvbw1qNYKb6301qBfQ+tELURSDb/dWr5Y/bp1oUrtHa7XTFT53VZfch2QLmSp4bpzYU5rsFaor9fT/uDaj1yv57Z/OhXizor+ZA+C7qvBf2FeQIdMEJ7Su4adEEAAAQQQQAABBLaFAOH3tlDmGggggAACCCCAwHYS0JYc2oojJiKbqhuSLppov0WtEF6zqT6l/e2LKLqF3++9dL/kZvtl2Tfr5OKrp8uV48+V7t1K5dzx18XDb7327DcWymzPMjlw336yubpWPv5smRx0wN7S0Nho2pkUFuRJn6YcuaboIBOUX3rBKDnx2CHx29aFM3XbtWdXs0hl0O814be2CHH2ydbw++uV6+XTL1bIkYcNajE72tZDq5k1uE7W9iRRv3M9mQbCZYVB8Xg8EovFpL4xYtrI2BetbKstip4nlYUsrbBeP9DQynbtR66LZFoV6NY106noT/cDECss158ACPi9JgzXX1SEb6c3PpdFAAEEEEAAAQQQMAKE3zwICCCAAAIIIIBAhgk0RaLS2KQLODZXOqcbZCqHvZq7LR5t+aFVxdq7WsNv/fMtky6Qjz9bIhdceZu8Nf9PJoTWEPa8S6834bdWbJ8+emK8dcnixgq57LO/mdD7gH36SXVNc/i979595YulK8Tv88lBBw4wtzIgUCz/m/Ks/PqKMbLvgD3N9/SaGvxqEFxVXScr12yQ/v12lUStWzR4vv/RF+TtDz6TGbdc2Sr8XvjPd+SPDz0n8+7/XYsFL+07avitIXuia6hhVW1YvB6PaGW2VqBrKG1VySerPreuk0qbErcQ3apAt66pQbgG1HovyXqMW9dtazFO5zORKFjXOSEIb+sdxOsIIIAAAggggAACW0uA8HtryXJeBBBAAAEEEEBgOwhoH2+33s/2vtyp3Ja9mrut/TVo1f7W4aao3Dxjjtl98q/GyHv/XSwTrr/T9O22tl9cfJ1Mumy0Wahy+u8fNotXDhtzkrxSWiX/XLXMVAr36dldGhoaZPVnK2XIDw6Q2rp6+eSzpdJv994SyvfJN/WVIiurZWDf3eWw0t5yQG6pjO7aP7545QcffyF33jtX5s+9rZXF0uXfyk23zZLnH7lN5vw5cfgdqg+J159lenl7vSKVNa0XpUxWFa7j1fBbj7NakGj4rItVFuT6ze+6aUsTZ1W6ZaX7dy3KlvWVzYuJJtrc+oLb97XuMzvgM/dSXRcW7RNur0J3njud+ddjdX/td15T35TwPjUID34Xhvu/G39bzxavI4AAAggggAACCLQWiKxbJdLQIBIMiq97L4iSCBB+83gggAACCCCAAAIZJKBtTtZWtA5L06nkVg57NXciHq0ozw36RRde1IriqrqwvPav/0okGpUjBw8SbUPy8mtvy+ifjoyf4qVX/imHHHSAdC3rIjW1dXLma4/KmpKY1Jdlid/vN21CsgJ+0ypEe37vJnmybsU66dKrTL711JnvZ2UFxBNqksGlvSSQFZBIJCr9/cVyWt4eMiCrRLR/eKLwW6+pLVSOOnRfefDx+S0qv3VhTb3nW66+QBa995H856MvZMLFZ8vGjZvk6lv/JAP36y//fvcjqamtl4H77SXXTjg/XhV+z5ynzFh100U5Naiffv04Kd/c4Np/2wq2daFKrQbX1ixWdbyFpdXsXQra7r2ebGFK+9xpSB6JxCTg95jwPRSOJOx7rvvWh5okFI6m9O7Q50sX5kxlfx1X95LslM7LTggggAACCCCAAALfCzR9+T8JL5wv0aqK+De9RSWSdfq5hOAJHhTCb95BCCCAAAIIIIBAhglsqAxJOKJdvr/f7Is4pjLcRP2sNbjUFh552bqgo5i+0trLWsPM1eX1bZ7aHqpOq3hfFocrZW1TrayN1Jljm2JRCUWjEvXETGWyVhN7GsKSnZMt2V6fad1hbT/I7W6qze3b5OKDpeHLDSb8fvHR282inbpA5jMLFsq5o5pD+Lnz5pu2LA89MV+e/dubMv78s+Tl1xeZYPvUk46SWyaNlef//i95asEbctYpx8vzf3td3vtwsfTsUSbdyrrIlCvGyNjLfyNHHz5I1m/YJJWba00F+/jzfyLDjjtcnpm/UF5+bZG8/MQdCcNvvQ8rtFZTbZ9iAunvFiTVavC22qpY4061qt8ekquj9cGFXtcK360q9FQD9XTvQffXVizF+VltPivsgAACCCCAAAIIIGATCNVL3azbJBZq/W9uDcBzxvxKJDun3WTPvPiGXH97809z6nbAPnvIvdMmmD+PnzxTJo4bJYcOam5HeOesebJ7nx5yxvCjzdf6b+YxV0xrcVxJUYH5uqKq2hz/yedfma8fumuyOc+yFavl2qmzZeSJR8jU3z9mXrvgnOFy5bhR7R6LnoDwu0MYOQkCCCCAAAIIILDjCFTWNJow074lW5zR7c6tBQy1itzqp62hpf5Z+4g7F5HsWhSUippGs7hmss0K4a9d/Y4JvnVb2lgpNbGw1ESaJCK6OGfzAp26aaW3VpIHfD7xiEfyvD7xe5pbhvTKypOuntwWl9N+4D9eVSA3T58lb/31j/Lxl6vkqhvuNKG0VqBrVfhVN86URS/OlkfmLZB7HnrOHL9Lt1L51f/9VGbOekLGjT5V/F6v3PbHP5uWKxf94hSZ/ejzcvqIofLsgoXywSsPyLhJ080/7vWY+x993rRx0WpvvYZWgD/y5AITfidrWaKhtb1K3x5I6z1FY83jd2u5Yg061dYour/zevZzaKW/tiTRILwm1GQWzXT7CQK3udVnorQw2GZ7FuvYkvws0Z7ibAgggAACCCCAAAKpC4T/85Y0vvpCwgOyz/4/8e3WL/UTuuyp/76dMnW2zLp9ovTbraf59+6MWfNSCr+dx2qI/vW3a02IbQXfo04+1gTlGnhPv+cJmfrri2RTZbWMu3qGDB96WIt97SF7ewZF+N0ePY5FAAEEEEAAAQR2QAGtHtZe0vbNHmancstWoKnhqx7rFnjbz5NqmwwNPZdGqkTDb2vT8HttU700SVSituBbX9frawW4x+sRjbx94pVYqFHys7PlgPwyCUb9rYbz41X5cv9vH5KX/jxdzvvV1HjwrTta4fd7L90vDz4xPx5+a7B9ydizzIKdTeFGOfbwg+SG6Q/I2aedIL8480QZee41csctE+SqG2aaHuYTb7hTPv50icy58xoZe+VtMvO3V8r+++xl7sUKv//x5B1JA+REYbSew/qwQsNo7c+tLUXceoOnuphpqgG17qcfUGh1v7ZjaQhHpb4h4tq6xYJPd3HMbsVBoed3Ku9C9kEAAQQQQAABBL4XCL/1ijT+6x8JSbKOP1kCPziqXWRaya2bVXWdTvjtPNYecC9dvioeomsleH2oUW6cPkfOOvlY6VJSaCq/b51ykQnc7a9ZFebtGRThd3v0OBYBBBBAAAEEENgBBZoiUVlf2dDqzlKpztYgU4PPnCyfaP9wrfDeXNd6sUfnyVNtq6Kh7t+bVsjD67+Mn2JluEaWhqtM1bdzs4ff2vFEf0UbI1IUyJKjinuZcNa59V0elrdu/6tpU5KTnS1XXTba9OEuKsiTzxYvlcum3CEf/mOO/OnR5034fdWlo+XeB5+SM0YOlXUbyqWiolJOPvFIE36POOEI+fmZJ8rPxt/cIvy+eOKtptWJtQ3Yc1eZfuOlUlhYLPNf+ZdoD3D9Uc7i0m4tbk97iq9bXy4F+bkyZNCeSaul1VRFNPzXvupWVba2mbEWq8wOeCU76EtaHa43oPvlZPulwvGhiNvja/V71w9R9FnQin8NwrXFTV3D99e2jk1ncUz6fe+Af2FwSwgggAACCCCwUwi0FX53ROW3WxuTVCu/9dgHHn+xhaXVMkXDb6sdin0H/fcy4fdO8fhxkwgggAACCCCAwI4lsK4i1KpatzgvYHqBa3hq30yAmtUcemuVsdV3WntCa1iZSvit56isqpTs3EJTXa2btgLRTb/WUFm3Yw4/SH5Z97apYt5cXSN5uTnyWWiTrJPmRTp1wUtraw5+tfdHc+qtbU/05WgkKj39ubJbU7bUN4QlGAxIYUF+/Dg9b/XVL5mv9fzaukQ37SN48rAjTcsSDcZPO+koE37fcfMEmf6HR8w96v779t9NVq3dKKvXbmxxjnNHjZC58xZI965dZN2GTSbArq6pi39t3YCeW7+vm/YIv2/GtebPuqCmVoX369vHmOzdb1e57aYrEj44xfmBeOW17qRzoR9OaEsSDaO1Gtzn86Y0R6ksYGrdiPO6+n390CJREK4fqlTVhl0r052Do9/3jvX3BHeDAAIIIIAAAjuPQGTdKgk9dHfCG869eLJ4ikraNaD2Vn7b+3/bb0QryJ964XW5edJYycluufaL1fObyu92TR0HI4AAAggggAACnUvAre+3VdWt1b8aZmoQmRXwmpDc9PAOR1sE5un0CV+/oVx+fvF1cuB+e8my5c0V0c/NvTMe+GrP7Y8+/dJUPftvOkZ8fr/8a9kSqc/zSiQ3ILHvMm/zmybc3/W7Niey8vCYiNfrMRXpwQ31sqs3z/QD31BeKQcdsLcEg83/kM5ZF5KlN82Xc38yTE4ZdqSpMtHjDj/0QBl27OGm57cG1JPGny0TbvxDq/Bbw/KDD+gvXyz7Nh6c25+eIwYPlPzcHCktKZBePUpl7l9eNoG2Lpip4blWkL/6xjum8nvY2VeZlihlpV3k3PHXmWvphwLarqS2ukqCuYUJH0xtJZOo3Yk1N8GATxrCEamuc2+LYp3cLdBOdOFkPyGgU6MV6AW5+sGIPjvaj91rFhbV56itrSgvIBrEsyGAAAIIIIAAAgikL9D44jwJf/J+qwO13Ym2PWnvZm9zou1JNAx/98PFpud3djBoWpUMOWTfeN9u7dV9yXmnmq+dPb/1Xh575hUZfvwQc1u62KXV81u/1v11o/K7vbPG8QgggAACCCCAQCcU0DBbA3D7ptXZxflZEv2uj7YubOgMvO37p9MnXNt5aLg7/vyfyBkjjzen0ermG2+7z1Q+a9sRDWyvuG6GfHJ0kaztnyuVm2vEFwhIQ6C5uNtUeX9X/W1VfGuv7/imvb+/q/zuHsiVH+R3k3BTVD794ispLMiT3j27m5x875VRefXWZ0zP75y8Qvl8yQqZeMNMOfKwgSb8tqq83/v7/XL2uJtk2HFD5Jn5r5nKbw3vtZf3MYcPkpVrNrZobWLdhxV+v/z6onhluVaDD9yvv3z06RIZuN9e4vN5ZNqv/08GHn++3D/jGjn4wP6mb3hZaYn86LjDZZ+9dpUD9+mbtA2JhtDauz1ZqKyhtlaEez0eM6+JWpNokF5dF25zQVIdo/YiX1cZirdWSfT20bkoyAlIfo4/3iJHf2rArTe5dQ76fXfCv4wYMgIIIIAAAgh0qEDTl/+T2Po10vTNMvHv2k+8ffZo90KX9hu0ty+54Jzh8fBbw3Ct0tbAe826chlx/BDJz8+V/ffe3YTfummgbW9vosdb/cOtRS8/+fwrs6/VEkUXvKTnd4c+IpwMAQQQQAABBBDIfAENIDdWNZhgVCtttWe0bhqSbtzckFIImk4QaoXfc+/9rQm6dXtm/kJT+a2hswbfusjhm2tXyKfDu4mvW75UVdeIPysgoe8Kge39ve1BuDVb8Z7fTVEJ+vxyfFFv0/5j6VcrTSiufbf198E1hfLEFffLG8/9QSLil8rNtWahSr3Hfn17S35erqnSfuK+m+TaaffLuT8dIffO+Uu8NYteTyvGn3/5X+bSPzv9BPnzsy0XF7JCcuvetOJbz6sBugbhk381Ro45bD85+MQLTLW3LtZTvqlCnn7hVfnPx1/IF0u/kZ+ccryMO+8nCR/GbsXZsqEqeQhtr9K2WpNoexKrdY0VROu5yje3XZ2d6sKY8XFnN7fGqa4Pi7bJsXqT64cvziBc52aXLjmZ/+ZjhAgggAACCCCAQIYIOCvBd8ZhseDlzjhr3DMCCCCAAAIIIJCCgFZFa+Co1d1a5d0UiUlpYXMrjZDLQpFup9T922qpocdZ4ffjs26VsrIupje19reePfd5Gfuzk6WkpEQWhyvkycK1Eg165etYrQm/9ccna3zNi1YmC781+PY1d/2WcFOT5PkDckxhL1PtvGTZt+Z4Dba188Yf8g6X00dPlAfvmix79O0rd/3pSXl2wULRiu0zRgyVR+bNN9Xdt06+UO5+4Fl59L7fyi8uvq5F+L33nruac2pIrX/W3+2b1Ut82LFDpKau3rRzUQMNwPV8777/sfz4uB+Y8Pumq8eZtij5eTmmT7h+GKELb15w5W3yz7/OSlgp3bM0R1aXN/crT7S5hdo651YQra1JdJFK7RO+tqK5r3qyLZ2FMfU8bu1UrN7kwYD2I2++vj6D2upFf/KADQEEEEAAAQQQQGDnECD83jnmibtEAAEEEEAAAQQ6pYC2uaiub7m4ZUGO3ywqmcoiloqm++vmPI8T1Aq/Fzx6u/Tepcy06vj3fz6Xy6bcIVY1+HO1X8lztctFYlEJeaPyzoZvTfhd64vG255o5xOrr7dew+/9rmJdPCYc13vX8HtATonsmVdsrqPBtB6n4ffk4oNlQFaJTP/9w/LNytXy87OGy7T/97Dp3a3hd/eupTL6pyNM2G0thKnfsxbkTPagaOCtmx5nhd9aAa7Bty6AqZt+X9u8vP3eRxJubJDZjz5vvqfV8Go0+qcjpd/uveWZBQulrq5e5sy8xlROa6W0LkT6XecX86FF16JsWV+ZPLDWFiXJQm2rt3tutj+l3uCpzrfl1FZFuV5f+8pr+K49afQnD9gQQAABBBBAAAEEENhWAlR+bytproMAAggggAACCGxjAbe+3+ksYqm3m6wS+O+vvS0nDT1ctM1GZUWF6Wn9wtzbJC+/KN6n+p45T5kKcF3w8pmDw7JhY4X06NZFdu3VQ95c+qV4ynKl3heTiGJkzfgAACAASURBVMTild8afserwGMieVGP1EtUYl6P+H0+CTeGZb+8UumTXWDC4i+/q/yefdApJvjWraa2Thb8/XVZtXajZGfnmHuwwu5zR40wgbX27NZNq7Gra+ranJ3m1iY58aDb7QBtedK9W6np/z133gITdN9xywRTEa4WWoGuPca7FOXLmScfL8XFxaYiurlS+/t2JRrqdynIMgtJJtpSbVFizWF9qEnycvxmgUr9SQBtS6I/DWDftJI7pC1LUvjJgHR6wus1yoqCpv0NGwIIIIAAAggggAAC20qA8HtbSXMdBBBAAAEEEEBgGwtYfb/tl7X6LrfVTsM6RoPZkvzWIayGmGvWrJEDBuwudaEmU7n84f++kEH79pXG6HdNvL87iS58+dGnX8oje282C1MWF+ab/t8Vm2sl5InKGm9I1kfqTQsTs9mrg2Mx8cU8pmpY/0dfyol55ZBgN8kONl/nRE9POaapqyz7+ltZtnylCbaXfb1Sigvz5NILRkmf3j1N73HtQa4V2PqaVbntNiX215LtZx3rbIuix5wxcqgJv7UtytoN5bJu/Sbp3q2Labfy7CMzpKa6Sh5/9h9yzpnD4z3Sne1KItGolG9uuWip/X51boryAkn30f21zYquG2pV7+t19Htaja090+2LZLZVyW2/fjofpNDvexu/+bkcAggggAACCCCAQPN/WsSs1YQAQQABBBBAAAEEENhmAp8vWWGu1WuXrlKYn7vVrrtmU328lYZ1EV0ksao2nLDXtPNmtLXGusqQaVmh1cl52T5zTq0e1l7OWqVs/mHpEelenLgNx5j1rzbvJyIBv7fF9Zc2VsrapnppkqipArdvfvm+WjjP65Pe/ny5q+yHclBBmfjNYovNrV2sgHv82LNM5fXzf3tN3nj7v3LGyONNJbiG0Yk2rdi2Wpd09GRoaxRrkU09t9U+Rb+nVeHWAqH26+bnNIfTuqmzvSWKtZ/2Vde+2pU14aS37NaX2zpAA2yrGlwrwXODvpR6g5txfLfYZSotdPS50Up2NgQQQAABBBBAAAEEtqUA4fe21OZaCCCAAAIIINDpBZ576S3540PPSWFejmnJUVCQJw/NvMaE4Ftj21TdaNpb2LfC3IAJrDVQTWXTsFw3a/FMDZutwNt5vBWUW0Xc9tet8Fu/Z7X4sL++uLFC1jbVaYOTePzdvNClV4Ier2R7fZLvCcieWcXmsCd6nSjZQV88/NXwW3t3T7rsPPO6hrNHjLhIdulWKmvWl8cvpeHzkYMHyr/e/SjeCsXNwa0C/MRgtbzSUJCUzWqjYv1++oihZv9/v/tRPOyeeMOdpkpdF8fUENy5abCt7Umq68MtqrTti486K7oT3ZTOX0VNY6sWJ/b9dW4LcgKiobsulFrf2LIHudu5SwqyRFuppNIiRSvU9X7ZEEAAAQQQQAABBBDYlgKE39tSm2shgAACCCCAQKcW0LB7zBXTZMplP5OhRx0sm2vq5MwLb5DTTzpKLhlz2lax0YBbq7ztW7I+3tZ+2k9aFz/UxQp10wrvSsd53G64tDBL7AGtfZ/4gpcipvezhqxa463Bq1Zwf9lYKevD9RKKRuOH2UPvHv5cyfd+Xz08qqifnNu1f7zthzP81iD38OEXGdvSkhL5zcwHzXmtRS8febK5Etxa7LKseHCLIY3cv1YeeuvT+Pf28DX33/4qEhT9c68eZfLmqmrXedP5Pf6og+Xaafe3eF3boGj/8y+WLDOLYeqmfcF1kUz7pvZaUG99QKFG+oGBVmbrpq1KAj6PNGhQ3dDyww3nDWkrkw1VoVY/AeDcz6okrwtF4tfStiiJ5lM/6NCe5Ik+CLGfn37fW+XtzUkRQAABBBBAAAEE2hAg/OYRQQABBBBAAAEEtqHAqjUbWlR5//K6u03bk1snX7hV7qIhHGnVE1p7RWsLivWVLRdT1MBbw25tt6Fhq/bx1mBVvxf0e1MKv5NVA2tl97TKD8w4NfzWHt/aSkWvVRlukC8aKuMGoWjEfH/3QKHkefwtQm9rJ339+X4/bhV+3zBxrAnudRHLo069zCwwuXZ9uem3rVXYWoE9+qcjxAq/I+F+UlZyWCv/H+V9KY+trJAzw3+TWbWl5vVLCyvlb7U50s/fKCcXNcpd5fkmDNdA3QrRTc/v4T+UM0cOldPGTJZDDtxb3v/4C+nZo0xWr90oRwweKGXF+Sa4/sVZI8z9aFuW0T8dGb+HtlqVaAhuVc9rWxTnwpV2o2StaOyDdv5EgL0HubVIptV+JdXFNvX89PveKm9tTooAAggggAACCCCQggDhdwpI7IIAAggggAACCGwtAa0EP3TQALl0K1V+63279f3uVhw0obFW7WoQrWFqbrY/vnilLpZpbYkWvXQzaasVx5KmSrm96gPxej2msjkSiZrf1zbVytpIXYtTDsgukTxPc4sWt01bokztPUR6NOaJhrFa+f3NytVy23WXmD7ZDz0+X15a+G959L5bzeEnnjlerrpstMx9coEJv6f/4RHZtcfpkpvT27zu83nN/fSKrpZV3p5yUv6X8lJNf7m07m755Tqz4qZcXrJZPq9r/rPf75Ompohpg2IPv/U1DcD32qOPfPi/L2XWjGvlhmn3ypBD9pW/vvSWLHh8pjw270X58bBjTL9vDeYvnnhrixYo+iFCbX1T0r7s2s6kIRw1c5eoQjuduUt2TT2Phu3WIpnhppj4fB6pqE68IKc1Z/rhSVlhc+scNgQQQAABBBBAAIEdV+DOWfPMzV05blTaN/neh4tlxqx5cu+0CVJSlLxNYNonb8cBhN/twONQBBBAAAEEEECgPQJaBT7snEny8uPTt1rPb72/jZsbTNsS+6ZBZ0yD74DXdfFK57h6lubI6vL6NoebqKWKFbAvjVbJpSvelC8bK8y5rN7gWumtm/b11m3PQJEU+YOmajhRVbPud163veX0vL6SFfDJPQ89K48+/Yrpoa2V1FpRP+uOqyUnr9Cc87Rzr5R+fXubCnANp7t1GSG52b1M4L1bn12ksTEsGzZWyCEN78o7/kNkWO4X8nLd3nJ5w2yZFv2x7JXzhry6/Pve4Uf2LJDc8tWyrClLarv0jFd+67VOPeko2bV3T/n9/c3/AWFtPz7+cLl87OlywcTbTRW4FZprRfolY8+K76ftY3Qhy2QtRez91dW3INdv+oTbF8hMdVFMvXCyfu32Mei1tDJdq/b1pwO0p7z9wxLnQ0K/7zbfNuyAAAIIIIAAAgikJfBVQ5XURSOS6/XJHsGitI5NtrM9/F62YrVcO3W23DrlIum3W882r0H43SYROyCAAAIIIIAAAp1LYNof/iyLl34jD901easOXBeorK5r7vutYahWCgcDPtNzu62FEK0bS2XRRN3XXmlstVHRFiQa4n5QvVFuXPeeOWVtLCx1sbCsCtearzX8bohFzcKW+we7mDYnXo+Iz+s1Vc3OzeoT/ouy/nJS1m4m3H/w8RfiC15q+F1cmCcavGqFu36t1dUajGul9R67HijhhuYe336fTwbsuauUFBdI0eLnZI/1r8rdwYvkyqY5UhhpDuk/9uwt4dpPZD9flXzUkCUbinvKyUVZ8vTGJpm3rkF+deGNMvLHPcx17p3zlLz9n48lPzfHLLQ5997fmgrvZ+a/Ki+/tkhqauulqCBXzjrleDn7lGNk7l9elmEnHN2iJ7f26S7fnLifto7frZ2J+ucG/fGWKGqo9voMJNv0fF2LsmV9ZSilZ1HDeQ3ZNWzPyfKZFjbah7yuoalVb3H6fadEyk4IIIAAAggggECbAotq1soD5YtlXfj7n5jsHsiVKT0O6tAQXG+E8LvN6WAHBBBAAAEEEEAAgUQCWvWti10+ff8tpupbF79cvGSFDD5onw5H06rcpqaoqfLWIFSrdSORmKkU1mA4lS1ZL2/n8VolXhdqirdR0eD109CmeL9v3V9DWb/PG68YdrY9GRTs2mofPU4Ddf1lVYS/sOfw+GKOzgUvdT+tUNYx6mvPzF8oky4bLfc++Bc5a+T1svzretO2ZNWajXLoQfuaxTebVrwvR6x8WN4L/EAGN/1HcqW5NUyjN1u6eKqlqKlSljboBwkeqSjrL3sGgvJnb4G8+tUaKSnqK8HgZln29Ur5+RknynFHHyYXXvFbufeOX8tXX6+UA/frb+6hrr5ezhpxtOy2++5mHNoqRgNrDY61x7peT6uw11YkDqJ1bNq3XRecdNusft152b54Zb9WaFuV9s5jtJo7L8efUhsTPdZZJa7Ha1sU/aUfVlgtW6yQXtvcsCGAAAIIIIAAAghsuUBtNCwXrXhdaiItF7PXM2oAflefIyXPG9jyC4iIVfk9/rzT5Mbpc2TBq4vi59OCnT379pLxk2fKJ59/Zb4/4vghcvOksZKTnSX2yu/X/vVfWfT+Z/HXdN/2tFRpz6Boe9IePY5FAAEEEEAAAQS2UODaaffL5upaOf6Hh8hzL70lq9ZulMGDBmy1hS8314Xjwap1y6m2MtH9NaDVwFXPk2izV5VrpbkJ2b/r1z2t4n1ZHP5+QUs9RzDgNT2rre3Dhg3xP/fw5cou/jwJ+JsDcr22VjVreNv0XZ/wAYFimb7b4fH2IFrRrZXXe/btY85jLcr41apN8ouLr5Nhxx0uRw4eKDP++IiccsJt4vF4ZFNVjXz86VLZd+++UliQL4v+84lcHfq99JaN5lqbPNoyxSNdpFpCnqAsDdVImccjwWCWlNeH5LXA7nJGl0J5P/sHMuPDF6VX96PMtWOexZKTnS33zbjWVJqfO/466d61i5wx8nipq6uXh5+cH68I1/2tENzqqa0V78mqsBO1l3HOjVbs6zxkZ3lbtUSx75vK/Fr7J1vs0rlIZigcMcE+GwIIIIAAAggggED7BJ6vXC73b/w84Ulu7XWYHJDTvEj7lm5ttT3RgFs3XbOooqraBOGjTj5Wzhh+dIvwW/eZ8rvZMumSs03LlHSryLf0/t2OI/zuSE3OhQACCCCAAAIIpCgwZMR4KSjIM4H3qT86MmnF97v//bzdFeFufb+1dUV1XfJFFa3hWD2lnZXiGoRqcKrhajgSMxW/WkFsX6xxcWNFi6pv65xaJazVyNa2tLFSamLfh+sHBbtKMEsrl2MSjcZM72/70peTiw+WI8u6Jx2Dtg/593+XyPirfidXjT9bevUok+ycHHn3vb1MJbyG7xp49++3q3QpKTJ/nll3nXikufd4hbe5X3hJrFoqPAXS2Fgp3QNeE4jr9nF9o5SWHCizio6TjRWL5YQjL5eq6joJBpfKI0/fbaq+tdWKht9W+xO1/L+Jt8rQHx4mZ4wc2uqJ0WrtorwsaQhHEo5NP2jQliPJPozQE9srtJ0Bu33utUJeLbTyvK0t1T7iOs6i/IC5TzYEEEAAAQQQQACB9gk8vmmJ6K9E24Vl+8gpxX3bdZG2wm/nye37O3t+P/PiG/L1t2vN4pn2P7frBrfgYMLvLUDjEAQQQAABBBBAoL0Cny9ZIfvstVvC02hblLlPvyKvvvWBCcivuexnZgHHLd2qasNSG2rZ97kwN2Aqs53fd7uGs8e0tYClBsjab1tbm1hV3trjWwu+rfM+V/uVPFe7vNVp9Rzad9weaFsBuF5vQHaJWfSyQdt1OI7Wqu/JJYeYtiZ1ocQLLmr4qwH7oSddKGN/drK88faHcvqI42TDuqNM5XldKCzv/fezeOV3bNFDck7j86YSWzxe2STNK9WXxDbL1/7esrm6+Uc8fT6vZAezpLYuJPvmFchvwoPlf7XLpagwT6prmnsw6u933DxBuncrbRF+a9X2lTfMlAH9+8non45s5aIV7gW5AfMBgram0Q8YakORFv20ncapzJm1j45NP3jQ3u+6aa9u/XOq/d/TeW7o972l71iOQwABBBBAAAEEWgq0FX5vi8pvvSMNvB94/MX4zV1wznATcDvDb632nn7PE3LjlefJzD89JWedfKypGN/WG+H3thbneggggAACCCCAQBsCY66YZtqgjP7JMBl65EGmJ3h7N60idlZtp9o6w7q2ttCob9Q2Ft/3kXarFNbzZgV88arkZOG31cJEr2EWuPR55cuGCqlqahRtfbJrdkGrgPy0vL5yWt4e5rY0iNUe08770MBYA+LcbL9Z7HPI8IvkwP32knXrN8non44w4beG7+UV1fLpF1/JDwbtK36/T3r+e6oc3fSeaYmiCbg9/F4SyzcV4KWemAnH/bEmCUij1HiL5b7aXUwx+MmFueZ3r8cj1fsOkaFXnS5LV6yTM8dOiVd+a+X0hOvuTBh+q1920GfauehmfdCggbUuMqkfKuhCnm1VatsXH030/FjnVift067n1wr7ZFuqi5/qOfTDB/p9t/fdy/EIIIAAAggggIDIVw1VcsW3/0pIcf/ux0k3f067qNqq/NbX167fFO/lnazyW29EX/9i2bdSVJDXov93u24yzYMJv9MEY3cEEEAAAQQQQGBrC2j4re05bp18YYddStuGOBdQbO7dnCXrK90XTbQubg+SNfy2tzRxu0Fni5RE4bfVw1vPYf1Zq8f1V0200QTcPfJyTOW2Fchaobd1XWcFtHWvWpGu1eibq6pk8u/+JB9/2vwjonm5OXLJ2LOkR9cj5J9vbJYVK9dKSXGh7L5rT6mtq5fj/nuNlMRqpCRWZfZf7SmTnFiDqfxe2xSR2mhM9sjyiVeaxCNe2Rz1SHn2nvJi4b7y+dL35bqyLGkIBOWfhYfIK2s+MIH+CUcfInP/8rI8++A0eeZvb0rXLgXy5qIPE4bfiVqa2BfHFImZcFz7oSfaUm1PYvXw1gU3rZ7jidrhOH8CINkDqnNQVhjssGeYEyGAAAIIIIAAAp1d4P+t/1he3byyFcMpxbvLhWX7tpvHHmZbPb0njhsVr9i2v14fajSLYvbo1sW18ltvRqvB9b9tfnP1WNMXfHtshN/bQ51rIoAAAggggAACSQR0AUxdEPPlx6ebSonFS7+RgvxcOfWko9rV+mRDZcj05bZv3YqDpiLcallif81awFLDUQ2Sg36v2U//nGxzBqRu4bd2FdHAWyu9I5GoOe93a2PGT/1Qt+NNW5NQQ0RCtoUx7dfWfuMaMOuijhqEW6G3VoLr4peXXPU7OeHYITJ33gI5YvBA+fe7H0m/3XubViS1VceLz+eTfffew1R9V1RE5EefTRSRqAm7q7xFkhUNSY5o+F1tvr+soTkA7+73So22jInGpG9uiXzp3U2eWr9ClgRKpLjgEKmoWi51oVVyT5+wXPJtwNzytOsukVvvekie+tPNcv3tDyQMv9tqaWL56jm16j1RUN3WeSxHt0pzbbeivbqtSnNd/FO3RL3f3Z4HnRutUGdDAAEEEEAAAQQQ6DiBRTVrZXljtXxSX24WuNw/p0u7F7q07s4ebuv3tFf39bfPMS8/dNdk6VJSKOOuniFr1pXLLt1Lpayk0KxN5Nb2RI+xWp9M/fVFUlLU3E5wW2+E39tanOshgAACCCCAQKcW2FxTl1KAfeLZV0l1da0M2Gs3UwX+6pvvy6EH7SO//+3lW+zn1ve7pCBL6kNN8XBZg25dvFKDSw2kNVS2Wopo8KmLWVZUN7Z5D/aFFnXnMetfNcdYobe2wtBAVX9pgOvcrJ7ebQW4GtDrPrppKG/dqwbfGnTf99Bf5K9z75QHH39Bhh13uFx1w0wZuN9ekpeXK39/9Qs5ZP8LpH+/PiaIX78xLCd9fq14PLrAZkSyY43SI7IqfmveWESCUi9VEZ+EAwETBJc0VEujZMkK/26yZ9MS+U84T94P54s/FpYfFxVLUbRcHq3Jkcpd95MR++wu459+Te6fcY2UFOVJUVGxiC9gDOxbolYu9n3UVyv5rQ8ozPgdi5emuohlImM1yQ3qYqY+aQxrz/GIBPxe04O8rYU29X7o993m24QdEEAAAQQQQACBjBbQ8Fy37VX1bf77IxZz/nM7o80ZHAIIIIAAAgggsN0EtI/3sLOvkrfn39NmAK7V34cO3Dve71sXyPzJRTfKgzOvMdUVW7Jp+5BNjuBaQ24NM/U17eXttoCldS3dr0tBlmyoSt4mRffXdir2MPb2qg9kSVOl6f+sLUy0DYvpm+3zurbumFx8sAzIKjEhvFZ2O6vNrQpkrU5uaIq6BvLPzF8oC998R+6749fxtim/uPg6E34P3L+/TP/DI9KzR5n07naqFBXsLk2RHNlr45syJPK2qUaPxqLi8/okR+okv3Gj5EUrxSuR7yJ8kayYOkSlUbKl0ZMtBbFKaZAsafA0t/pY6+shbwSOlPfz18lRsZD8MBaSv+Z3kxc+/co43HTVWDnhh4eYhSy1j7f1r/K2FvG02pSsrwzFHwPLQ1/TkFrPpy1HUlnE0vkBiPPZ0nnSEFyfD+tZqaoLtwrtncfR73tL3qUcgwACCCCAAAIIZIaAtk2Z8rvZMumSs6Xfbj2326AIv7cbPRdGAAEEEEAAgc4ksGrNBrn2tgdM3zvt5X3aSUelPfwhI8bL5F/+fIuO1Yu59f3Wqt+C3IDowpMaMGsInqw0wlnRnWgQWr3c3MokFg9NJ614Wz5tqGhxSDDgNQs32jf7gpaJWnJYrVgikZhoiw7nYp56vn+986H86ZGn5fFZt8YDdg2/f3bGCfKjY35g+nAv+uBzOWPkUCku7CvLV4Tk27fXyM99fxM9b32oToJZecaja+M3EozVSXa0VqIen7ndrFhIPBKTBpfwuyBWY0LyiMcnUfHJxqxdpSm/VAJ9d5fdfjVOln+7Xh5/9h/yk5OHyh67djfhshWC6wcMWqWfaOFJrcjWdiJuY7YWsNQFR/VDA/2gwq2ljd27W3G2lG9uez89RvfV2hn1d7ZEsZ8z4PNI1+LstJ9xDkAAAQQQQAABBBBAoCMFCL87UpNzIYAAAggggAACCQQ09NbQ8K9//5csXrJCnn7gN2lZaXg+7JxJ8pfZN8s+e+2W1rH2nbXvt/bWtvpjN4ajkpvtl9Xl9Smd01nRneig4ryAOW9DuHmBTKtn97SK92VxuDJ+mDP8tiq+rR2simarp7fpOW5r76EhrFZKuwXBa9eXy7njr5OrLhstPzrucHn7vY/ktrsflisvPluO++Fh8uobi+T+R5+X+2ZcKzW19TL3yfmyePEuck3vVVJSs1w2V9eIz5crwVhIuoW/kSpfqewSXi5Nnixze8FYs5k9/NavN3sKJKjNUGJhiYpHqmI+2ZzdRz7qvrfoPV14980SEb/cPXueOV4X4LQvZmlasFSGEobfzg8E3OZAXboWBc1c6wca+sttccx0FrC072vdb6IFMun3ndLbiZ0QQAABBBBAAAEEtrIA4fdWBub0CCCAAAIIIICAXcAKsXUxy167dE2Ks/CtD0R7hOuCl6++9YGcftJRcsmY09oFGm6KmqA11Bg1rTE0TE410NYLWxXdeqxz08BVW2NoH2qr2tgKpbUHtwa/+Xm5UlnslcXh5grwgpyAqXjW/U/L26PVOfOyfVKUl2VCdLeFHXUsXYuyTVjstr3+5jty9/3zpLqmToYdO0Rq6urN70ceNki8EpZJN/1RPvjkC+netYvpCb5kWa3ss8fP5LAVD0hO+RIJNWqX8uam3F0iG6R70zcm/PbGmiQgYfN9Z/jdJD7T+iQizRXia6RAunprZUWvw+ShrzfKfzZuNt8/cL+9ZNJl50mPbqXxW9fx7NIlx1Tpa2Ct1fjOyu1ErWDs49cAXSv6K2saTeuYRCG17leSn1orG7ee71ZLFO0T7/V4pL6xueWKnlN7hbMhgAACCCCAAAIIILA9BQi/t6c+10YAAQQQQACBTikw5oppZhFLbX9i3zQYn/v0KzL5sp+Zb2v4/exLb8ngQQNk6JEHtRmWp4Kpld4bN7fs2Z0s0HaeU6uOc7JbLnqpobe9klwDW213oj2nrf7gf3/tbXl2/kITgOt2xy0TZM++fUT7TWtluLMq2VrIUu9XQ1Rd3NG+WVXdd9w8QX70wwNbva77alirVeHatkR7nTtDZH0t1BCJV6Vb59+wwSP/fMMvgfVfSa9v/iH9at+TwshGyYrViy/WJF5Tz90ciFu/u9nHzPKeza1PGrz5Up9TJnXBMuk+cphEDz8qYXsZbS2yoSpkWqFo+O+sdk9lQUz106r6yprmgF43nTtdsFQ3qxrfbb9Ez5HVHz7RYpfOliva15wNAQQQQAABBBBAAIHtKUD4vT31uTYCCCCAAAIIdEoBXczyjw89J688cUeL8b/738/l/Am3bXFP8FQwtbf3+sqW4bdboJ3oXPZK4e/DTq+pUNag2h4wa39wZ2itFeC6EOURgwea8NsZ5NpDb6vq2e08en96Lq0k17DYbfFH3Ud7d4cjMVON7NzcQmTr+rrvrIfDsmSpR/avXij7Vb0qvRsXm1No32+/6Pk03m4Owd02K/xu8gSk0ZsbD7/3/+PtrmG9nsNtMUvrnqwQPDfb5xra2+9BP4zQlidu47YvFqrntBbIbOv5aWthTOt4+n23JcnrCCCAAAIIIIAAAttKgPB7W0lzHQQQQAABBBBAwCZw4tlXyaVjTpO9+/WRwvzceFW3BuCDD9pnq1qtqwi1CKmbA9esVqF4opvoWZpjFsjUTQPq+oaI6656Tl24sXJzrQmp3bbH/rJAamvr5Ytl38jHny6RvffcVW6cNE66lnUx4fZVN8yUZV+vNIdqm5BLzj9L+vXtY76eeMOdcvM1F8v/Z+9MwKOqsi28aso8QSCEWWR2YlAREH2KghNPAcEZxKkVRFsUBMV2RkFAbEDQpyhD26A4oELTYoN2C6KgDCrK2IjMCQmQOalU1fvWLk5xU6lKKhIw6N7v45HUPfecc/9740evu7J2swa18NLr7+NwbgG2/bxT5qmflooXnhqGZo3T4LTbZJ/BRYG41OuT/fMFQFK8SwR8yRePc+KzL93YsMGO9O3L0DxzKU4pNtdaJAAAIABJREFU+h60azvghtPnd1RXLH7bRSAvtCcCdoeI3/lRdXDa1BfCxrRU1syS+4p2OZCVW4zikrKNQq3XF87Vbh1DEZzNNSmSm2ab1dHsVPO+j+uPr06uBJSAElACSkAJKAElUAUCKn5XAZYOVQJKQAkoASWgBJRAdRBgvMnocTPAJpjntm8jIjj/PlHFHGgKvNZKS4mWaJBST2gnMwXyKJdd4k2Y7UxRm/nO4Wr8lFn4YeNWcV4bhzbHvjLx0YAQzjnHTZmFHb/sxugHBiE5JQXzP1qKJZ+txN9eGSPnrVi1Hv97ybnIKyzFvAX/ChzjXD2uHYw505/F6S3q48nxb+DrtT9hzOghaNq4Ibj+vswsTBs3okLxm1fLeBAWI0LohDZNNI343SJzGc7Z+DKcvhK/6O3zwA6PhJqEKz9FBqQ4UORIgN0O5EfXQVzvG9Dg6svA6BC6soPF5kiaWdLp7vEeeflgaf5p3QubXYaKegneL131jKahu5y54MwZ57MRHEMTypEe7tqZ9835tJSAElACSkAJKAEloASUwG9NQMXv3/oO6PpKQAkoASWgBJTAH4oAG1hee+fjkuM95NZrQuZ4UxyvrBnmsUCjuEkB3FrhIi1C5XnT2ev2eMM6vjkvXdnNGtfDoOt7Yfa7S/DlqvXYn+nP+6aD+6Wn7kPtlAQ8/sIMpNWtjev7XinHtm7ficHDn8MHsyeKSM5s77179+LHzTuw+b87ZZ5P35suYyl+fzR7HJo3qYdHnntNxPOB1/eSYxTQZ7+9CO/OeA4x0Y4y2dc8bgRu/p2T7y6T+22OsVnn5uffRGrBdiTm/oJody6ivXni9q7I8c35vbCDHvFSexS8jijZU0mbcxAzdKS4rfnigJnewY5risYuh13E8XBlYmBMfAnHBTcDDRcVY50zuFkov+e9ZdPS4JzxqmSDc23N+z6Wn1A9VwkoASWgBJSAElACJy+BF199Rzb/4N3X1YiLUPG7RtwG3YQSUAJKQAkoASWgBPwEKI536TUEb04aedziT+jqPXC4bO53cDNDq+hdVOIVl7LJ866s8SGvg+L3eR3a4u6B1+Bgrl9o55xbt/0XDz05Ff2vvgRpdWrjzbkfo/flFyAjO1ciS1iMLWEjy4T4WDwx7hXk5RfK1/szs+U488KfffgOdO93P+bPeA4upx2DR4yXJpuMROFxurKnvTEf3Tq3x4ED2YiOiZHPr7yka6A5J7PAS0u95SJRjPidM3s6Sn/+GQeybOLQrnfwO7i8hbBJw8vwRde318bGkjaUOBNkoC0uFt6xs2CNNTkqNh8Vwem+DpfVbRhSPDeNRPmZVQQX17bbi9Sk6LDRKmbnFWW9B89JQZ73P1SGuJUE2dWrFaM/zkpACSgBJaAElIASUALHkUBepg+eEoAei4S61ddknML1jLn/kJ1fdUlnPDXidixe9hW++vZH+To2xm/qqKhU/K6MkB5XAkpACSgBJaAElMAflAAd34OGjcOefQfQvVtHTHn2/uNGIjj32zSyzC1wIz7WKUJ1uDxvI4zSGR2uKH4nJ8bjkm4dAbsLdWsnol3bU2B3RuHa2x7B3ows9Lyos+R5X3bROeC67U5vJVElE6bORnxcLNqd0UqmZ/zJ/owsdDuvPd5buAwN0uug3ektsXjpSkyf8KjkgtNpHBcbgwHX95Kx6WmpGD91Ni7o3F5iZfYeyMHjY1/BpKeGok3rFuJap5s5VB44RenaG75A/udLRFjfu98He84BJBfshMNbUon4bQNsfl94sSMBPpsDjjqp8NzxMHwNm4lQzYaVjFgxZRXBfT4f8orC56jzfN4f80LByt/ayJLO/IruD8+L5CWGmZM54wVFpThc4C4X1WLdA13jKQmV/4+i4/Zg68RKQAkoASWgBJSAEvgdE8ja5sPPy70oyjkaVRiTZEPrK+3VJoIHi9fv/+M/Kn7/jp8pvTQloASUgBJQAkpACZwwAhS/6fxm9bvrCSyZO/64xZ8wD5r5zqYoBDOrudjtz3wO18SS4ynWxjm9yHf7s7JDFcXv7Tt2IzevQJpPNjulEQbf1h/rN2wWcfvJh+/G+ee1x/ipsxAb7cQdt/SVhpVPHnF6MyKFTm0K2azTWzVFXkEhli1fgwHXXSXz0CHe56ru2LV7Dxqm1xH3+IihAyUuhbEndH7P/b8xaFo/RQTbBx6fglq1amHI7f1lznDiN4X/pMWz4N35X3GGsymm7edN8OXn+S/Vx9gTL+wS2G3JSCcYesKjogBXFLz1T4EvJg4l19wuwrdZkxnjVvHb8BPRPTFKYk8ogIfKBI8kFiUh1in53axw8/AYm2IWuyuOrzF7Y5QJn4uYKEeFzTE17/uE/edCF1ICSkAJKAEloAT+YARKi4FvZ3lQWly+Rw8F8HY3OOCMPnYoVvF72449uPvhidi73/9v8jPbnorpY4ch+1Bumc/vuPHKQMyJ9fxgIb2wqARPjH8Dnc8+DX2vvPDYNxvBDBp7EgEkHaIElIASUAJKQAkogRNN4No7/oI2LZtizKg7j8vSFFbZRJJOXQqqjMqgy5mNLIObHQZvYMXX6/B/s9/DW688Kw0yTWPK7zZsRnxcnESaUNSmIL1x6y/yj+X8gsLANHR197y4C/ILCrD+h80oKCwSkTy4mA1+IOugHEuIi0XdurVFDO/aqT2+XLVOYlA45tTG9URgX7/xZzw18h6ZZvbbCzHnnUVlpqxXN1UE9YrEbzb0ZGPPwhdGgS5sp8MO74F98O31R7JQ77b+zw27z+v/0HxqdwAxcfDZHXC2Pw/Oq65HfmqTANNwgrvZaGpSlOR3U2TmvQkWr7m/imJROE9SnEsiSvgigyI45wolgrMp5sG88E1OzZ7MbwUwasW41DlvcakX+YWlZZ4XNk4lMy0loASUgBJQAkpACSiB6iWwZ50X27/wNz0PVWf0cSC50bFHoETi/P7k81Vo0awRmjdtACOQP//IXTi3fRsEi+fjp83D84/ehVrJiVi9biMmvvqOCOj8/kSUit8ngrKuoQSUgBJQAkpACSiBKhJY8M/leHnmAnw6b0IVz4xsuNfrk6gQRlkw3oRiqRFNK8t1prC8as33GHjdVeh09lmS752fX4g//+l6rF7zPbj3xIQ4XHLhecg4kI1Plq1E81MaScQJhW8jhNPBzQaW5vNXJo7GnLcXolXzJpg64x1c3LWDiOcUvS+94Gz864tvsW37Lok0oeDOYh44/5E9fPAN6DVgpDTDpMD8wuRZ+GjJCnGYb/vvdrz/jy/A+XmuKWZeR7kc0lyS51BYpuOdQnHUy38JjHNs/R5wh494CQz0euGLihGB2Ne4BUq6XQlHl0uRGOd3YdPtTSHabkO5nHEzR1pKDLJyiuV+mNx1nsO4Ee4tErc2xxQVewJNPK3zWEXwSJpicl+h3Obi/o92Ij7maHNM7lnzviP7+dNRSkAJKAEloASUgBKoKoFfvvZi56rw4nezC+xo0P7YTQiRiN/WvQe7uYPP5/enNE4Xp7f166pe/68dr+L3ryWn5ykBJaAElIASUAJK4DgT6HHDcMmr7n15t2NeiXEhz095KzDPmEfuQmqdNMTGxgY+iyTL+/2FS/H+wmW4/ppL8faHSyVmZPgTk/CfBVNRUFCI2x8ch9iYGBG06bKmSE3BmkXRux7d25nZEl3St1d3TH9zPpZ89pV8/tqkx1C/ThKWfP4VRo99HYNv64fpb74LOraH3tYb8xf9R3LBKWB/8tlK+dq4uyc+OVQaaX48ZxwyM7MRE5+EYY9NFJd4r0vOxR0PjsPwewfKuSZLnNdLoZhF57t5CcDvo6f5xW/boQOwZe6FrbRy8Ztub0TH+sXv9CYifnvO7S7zGHGdX4fLUucxit8Zh4rK3G9r81GazCtza9PRzVgb06DUTGbNFmfkDeNXrI0zwz1klQnugaxxp1/Y11ICSkAJKAEloASUgBKofgKVid8n0vltBO9FS78KXOgzD98eELj54YN3XyfH6Pae//HnGPan/njqxVkYMeQGcYyfqFLx+0SR1nWUgBJQAkpACSgBJVBFAhSAV63bKAI4m2AOGdS7zAzMCF+9flPE4viqtT/htmHjsOHzmTLPgZxiEX1NURytlxKDfQfLiq/WRXsPeFBEa4rbjCxp3bwxtmzfhZmT/yKOb2vUCF3epngOj1EsZyNKNrtk9Mm2n3eKwM2iW5zFmBMK3gnxsQFXOH9V8vW5i0Xwpov8/UXL5Gtmf1/YuQNmvb0wEJ1CYZ1FkZ5lnObcz+Db++Oyi7sEXNWMeuF1M8/amrFdRvzOyoCt5GhsS7jb6HP6s745nzc5Fe4e/QPiN8+JJNM7lPht1mP8SJ2kaHh9vgoF9Moc3dxHcpwrbBxK8PVFGo/CRpeMatFSAkpACSgBJaAElIASqH4CeZk+rJ93tGdP8Arn3OpEdNKxr1uZ89sI3+lptUXgrsz5bY4fzs2X/+1gRPFj32lkM6j4HRknHaUElIASUAJKQAkogRNKgML22JfnSoNHOr+H3HpNoPklRWb+2b3vQJWc4cHiN8VeZnxbqzKhk85vitWMGmEkSZdzzhKn9vQJj2L445MCQjMFarq+GUtyVY+uaNq4oYjeFLX5uTUD3KzP/G66xM0xfs+mlqw2LZogLjYWp7dtId9T2KY4Thd5q1MbS47gtXc+jg9mT5Q56EafM/1ZcXqXFuVh0ANjRXjveFbrQM65cWAbR3RslAO5hW4UlXjhWL0MztWf+Z3fh7JgKzzS7LKCp8AXFQs4HAHxu/jWhwONLs1pJpLE6bRLbEhBsT97nUWHd2pSdDnnt3VJCtt0dZsoFeaDWzPaI5mD8zHixWSXm30wViWUW7yyFyJmf5r3fUL/E6GLKQEloASUgBJQAn9AAlv+5UXGT+WjTxh3wtiT6qhg8Ts4pztY7D54OBeDR03Cdf97UUjnt/zb/R//wV9eeAMzXxol/zviRJaK3yeStq6lBJSAElACSkAJKIEICUybuQAN0uvg3HatA6I3BfFBw8YhKT4WI4fehE4d2kY4m39YsPjNhohZOWXjPFLiXdLIkEJocJnojslvfIAZb30s+3toyAA89PgkyfI27m5+TWG6XlqqiNdX9zwfySkp4vym+L0/098tvsOZreS85V+vDyxl3OLBDTKtOeEUvp8acTuKi4sxf+F/cPegfmjeqDZ63jBcMr/ZkJNC+4I5L8q87qI89L/rcYz7y73oek7bQMRJ8PVRODYxKMzndk19DPacLODgAfhKSiqOPrE74Iv2O90pppd2vBAl1w8tx7BWIhtauqVRqHFgs8Emc8f5WXK8q9w9MZNwfN3ko7EoJm6Ex40Izhzz2BgnDuZWHNPCfRQWlUouuLWJJeNQrPEvkUThmGuuX/uo079KD6YOVgJKQAkoASWgBJSAEoiYQNY2H/IP+HB4tw/JDW3+P9XQ6JIboPA9Y+4/ZC9XXdJZ/s3NemL8G2DEyZltT5VmlVu37xZzCat+vVTUqZWE666+OKz4baJPOF9sTFTE11odA1X8rg6KOocSUAJKQAkoASWgBE4QAeaAd2rfBmNG3VnhihS6v1m/Sdzh0nyyW0f4fL4ysSecYG92IZgjbYoCd7TTjkMWR7gRvfmP1lNPPVXcweOnzMLKb77DqxNHY/5HS/HBomWS8c0oFFOh3N3101KxN8Mvft96fS+s/WFTwN3Nz6wNMU0+eJ+rusv8rDtv/l/8Y+lKJMTFonmzRnJ9E59+EJ7iPFx+0wgRv/dlZGH44y8iIT4O8fGxOJB1UGJjpr8wAq1bNi/nbg4GScG3dmIUPDv/i/zXX8Rr32XgttoFcLiLYfOWfynArG9bDIVfBl77hGfRn8eVc31zndSkKGl8aXVYG9HdYbfD7fGGFa45jvsKzum2iuDuUv/NpJheUVkba5pxVhGcL0DyC0vBWBiuW9l8jDth7ImWElACSkAJKAEloASUgBIIJkBR/YLzzjrhrm/uQ8VvfR6VgBJQAkpACSgBJXASEWDcycszF2DMyDuwbMVaiR6huD3q3hsDDvGxU/+OpcvXYGC/nnKMYxYs/kLiU+a892kg85uXHZz7zVzpWglREq1BQZPCN3PBl3/zI96c+7EIzSyK3IwW+euYh/DcS29KY0kjUE94aphkcZv8b8aSbP7vTjnvumsuAQVaM9aKnq7wVyY+ij4DH5KPKWQzIuXLVevFyU3BnzEr+7JyRXD/bsNmyQRnPMqcyY8i83BRQMjneT/v2C3xIO3PbC0u58Q4FwpLPIGYkVC33Qj9jD5htnZMxg50GPQsPmu6Hy6nEyguLCOAl2ly6fO7vl2dL0Zh/3sDcSRbt+/Ek+Nexd9eeVYaWlr3ad1DQqwTCTFOEcCD40w4jq7umGiHiOehyjTwpPjOOBtrHIp1fGXZ7lYRnOflFR2NZgn3o0LHenyM8yT6SdKtKgEloASUgBJQAkpACZwIAtt27MH4afMkprBWcuKJWLLMGip+n3DkuqASUAJKQAkoASWgBI6NAN3fLDrAmZk3590lyMkrwHuvPy0Z4WOnvCVfN6xfN7AQjy/94ls8Nm4G3n3tKezdnyXnNGxQHw0bHu22Tpcvc78p/FL0NhEYs99eKIJ2sPh9z8BrZP0JTw8LZH6zmeW+zKyAo5uxJx8tWSF7oTucwjTjUPj1/owsEbBZdH0PvL4Xpr85H2lRDfHADXeImLz25zV4598LpdHlkyPvkUgVurpZFJYHD38Oi98aj+i4RHFU8xqYac04EZPrzbGcKzGWjR7tIiAHZ2XzHBtdzvlusCEP88qTE+Nw9S0P4p/tgQQHfd0APB6U5hyCw+OGw+WSfVBw9qWkwpdSB7l3jobd60Z0dAzgiMKa7zbJiwKK+cENLelSZ0lMTGoS7Dag2O2V+BUrf46hMO9y+CNSwhXjTNylXkS7/JmPoUR0vuCoKF7FOjf3yz2FE+TN2DrJ0aD4rqUElIASUAJKQAkoASWgBGoSARW/a9Ld0L0oASWgBJSAElACx50Ac7MTE+ORlOAXT2tK0dE9Z/4nIkgP7H8ZBvTrGXZrHBucBd7zxhGY8uz9mP3uEmkOOWroTeXOpzB+32OT5fPu3ToKg8zsXBGUjWAcF+OE1+vDobwSyYNmffLZSkyYOlu+psuaAjhF2wGDHxPBmk0l+T3/NkJ2pFwZbcK4EJMDTtE7o2Q3zkzohB71r0ZRcQn2eXZgy+Gf0CLudOSf9pOI8H17XSJi+IpV6/HlqnWY/9rT8NlcIvpS9C4o9oTMLee+TEwIHehscEm3NYVlI5RT6Kdr3dqA86+D+6Dz9hXYZU/EkNUHkZKcIFEqZyba8VRzO6Kj/ZEff81OxPJdh0WcJ5N7B/XG9NkfIjevQI4z9uWhewdKZAsbhPJFAMfy7xefug9NmzTE9p0ZwvamPj3w+cq1ss6/3p8u+yz1+sJeF+e3xpmEygTnmEhEdI6zOsR5DtfnS5FgQZ3jNO870idexykBJaAElIASUAJKQAmcSAIqfp9I2rqWElACSkAJKAEl8JsRoOj94Scr8ME/l0eUmX0iN2qNMrHZbHh07Ovoc3k3DBnUO+JtXHvHX9D7igswe/4nIcVzq/DNSekY55+Lu3bAKU0aimBsnMaMO2FRDA5VjDxhM8t7HhqD5KR4eDxHQ8MpYrMRJgVblsntNvMMuO6qQBxK8NwUvM9KPA95zizUR3OkRNVClMuFEkcB9h7eiybxp8KNEuyr+z32uDbJ6fFxcdJos23z+oiNcoBNPIMztcNBZP52tMshUSimQSSv7Ylxr+CViaNFzKcozRgWRrl0qOXCY89PQ4cUBwY2iRbn+KMbS9AEBbhzQB+8+d8CLOGLgqcfDJybkZkNm8+NPw1/AWs+nRFoZhnspOf3S//zNd7+vzH4eXemiN900Pfp1R0xUQ50PP1UyROnK928lAh1XcHOco4xUS50xVO45nx0codqamqdM1TzzJBNNqMckkWupQSUgBJQAkpACSgBJaAEahoBFb9r2h3R/SgBJaAElIASUALVSoCiN3OumYFNQTYxPlaaP4687+Ya4/6mG7thep2AW5ti+Oixr2PJ3PFlokvCgWGm97V3Pi7j2XU9lHOcDTBvGzYOb04aKS8BuAaLPJ5/7F6c1qZFoAmjETizckoqvBcPPf4iZr40SgRVit4UcP+9cl3A5dz3qu4iHi/5/CuZh07qgdf1kggQa1Egb1DSGqmOdDSObYGGyQ1QVFICu8eJmOgoFJYWAE4PEh3JKCp2IyU1Dqln+dDkcq841im8MuqDbm9mfHt9EOe6tZGndT2ekxTvgs/rC5zD4xTNx06eKUNHDL01cEqPawdj0jMPolnjNPQeNArz/m8MWjVLl+OLP/sGz700EwvmvCgvA3pe3EXEeJZx06/fsAV3PjQO3yyZIREi5HXdnY9i4PVXyXiWcdKzgWhcXKyI33OmPysiOovu6jpJ0TIn3er5ReUbb/JYalI0Mg4VhbxvRgS322yS6R4uE9ycnBTnkmciv6j8SxCrCE7OFNS1lIASUAJKQAkoASWgBJRATSOg4ndNuyO6HyWgBJSAElACSqBaCFD0njbrw4DIy2aPQ269RiJPxk15Czn5hRITUhOKgjXFbzZ0NBXqM+te6eSmoL973wH588jQmyTKJNx5RvzmGswEH3XfzcImNzcfF1/YOSDYGqG1XkoM9h0MLaJyjMna7tWjK7qcfRrYZJNxKRRrmeXN2BDGksTHxwayv3te3BlsamkaYXIexpz8+dKhKN4ThQNZOXDZo+C1l8Lr9cLj9aJuXF2UuN0SDeLzelFYVIKkxHjEpQHN/seOpp3L53fHxzgQH+NCflFZkZjiMJsyMvPbmgXOffCzpLgojB77Gj5bsRbtzmiFwbf1l+uh+M0YmpiYGLz2t48CojQF4DXrvsewJ6ZKLMnNdz8WELQpNB8+dAh3DX8BN/W7UmJjpk94FLVTEtCyaT30GjASN/e7MiB+cw9ch2N4rcHit7BKiUF2brHEj9CpH5xbXllDTPP8pNeKkS+LSjyBTPdQPwfMD88vLK1QJCcDvnywU9XXUgJKQAkoASWgBJSAElACNYyAit817IbodpSAElACSkAJKIFjIxAsejNz+ZrLzi/noO581WBMfvZ+dOrQ9tgWrIaz2TCSWd2fzpsQmM3ElFjd3xSrWzdvjLYtm8LEuDDfm6K3qXCucTMfXwJQLOffL7/5gYjgr89dHGhkaeZh08uDeSUotUSaWC91wsuz8cmylXj8odvw+lsfi6ueMR2MQ3l/4TLkFxSKCJ4QFyvOb+7xxr5X4LHnXxGXeOe0/0Fzx1kyZf2kdMTZkuApsaHU50ZUjAMeRwn2H8qADz6kxzREYkKciOCFRcVISUpAbIoNriSg5cDQ0SwUutk0kkWRmGIxRWMj+Ia6bXRXvzrzXcz/aKmsR+f6g3/qi3aX3I72Z7RCWt3aWPLZVxKBQnGcRbf7vz7/Cv+cOwGDHngeaXVT8ezDd8gxCuxsdsmi292I/2zqSdd8UWERZk19XJzVP27civsfnYgPZk+URpuhxG+K1uaFRKj4EQr7vO6KGmIad3jm4SJ5EWBlQpe3tbje/kNFYR30HKt539XwHwCdQgkoASWgBJSAElACSuC4EVDx+7ih1YmVgBJQAkpACSiBE02AzSK79BoimdPMzGb+9ZsvjRKx2Foc1/P6h0T4pQj8WxeFbDaspCvbuh8K9M89cpcIx9wzo00Y2RKqmaX1GkY//5q4wgf0v0wc5avXbcSqdRtFoG5QLxV79mfJcEae0Al/OCdfYjuslRLvQnFp+VxoE52xau1GcTV/tuAVfPnVNxLTwuaXLArfrBFDB+Ks01uJkMt7Mvi2fpj6+nyc6bkQnZqfjR279su4aEeMOMBdtmj53unwR2hkFu/FwZIDaJ3aFi6nE+7SUmmAyUadjNpIaAzUae9FnfZlRVvrdTC6IyHWiVKPV/K2KfC+v3CpDNm2fRcYSVIvrbbEnNDlbRztzEMntysu6YLFS1eKi51NKuFDoOHmtp93YsXX68U1n3EgG9//uEUYX93zfLRu1Rxbt+8SoZ+i95PjXg00B+ULgm3bd2J/ZjaeGnEHmjSsi3FT/46dezJljf0Z2XIeXx6QIZ3g4SJNrCI4tWuK+xVleQfneFO8NiJ4XlGpCPFkW1mEimHMlwqMY9FSAkpACSgBJaAElIASUAI1kYCK3zXxruielIASUAJKQAkogV9NgPEexs1NQZbir7VxJIXmsS/Pxeq1P2HJ2xNrTO4390qB2ur+ZhNLCthGEOe1tWnZNKI9U7jlH1N0MjOaZMPnMyXuxDSkfHnmAon0uOOWvnBbXN4UuaOddhzKd8sU1qaJj7/wBs7pcIaI3MyszjmYKcI8xVqKus2bNUbyoSYi+sbERGPajHfQpmNd/JyzDTt+zMXA0/6EunVSRHQ/eChH5mkS0xIOmwulvmK4PW5/jIYP2Fm4HWfUO1McxiwKs/y6MvHb5G1TnGWTyPhYp5xPF/gDj02UKBbul9Em09+cL8eeGnkPPli0DNPe8H/PoqDP/Rlhn58ZcZ8Z5hTFt/28S+ajwH9m25agKE7hO/hcnsd88769LpHGmDzPjGnRrJGcY8o0CjW5306HDe+8vxj7snIw5Pbryv18mPvDpqXvLPyP33UfH1duXDh3uBHB46KdKCj2C+Aup014VVTJ8S4Rz7WUgBJQAkpACSgBJaAElEBNJKDid028K7onJaAElIASUAJKoFoI/LRlB/rd9YSI38EO6GCXdbUseAyTUJQfNGycONa5X35PQXnKmD+DLmQWRWs6uhl1QsGaDuhIy2R+U/y21ukXDRLH+cUXnFemsSHF1loJUdj8hRuHvnegUSebOIrZJPGFybNw84OdA9EfJYW5uOqWhyWyY/FLPyOqMAmtW/jd9sXFJVj7/Sac0ehH9R30AAAgAElEQVQ0RLmc2LD7J6Ql1EOyqxaikoCM/P3Iyc1HQ9epEmni8XkQ64yDzWZDSWkJDpTswyl1GpeL3nDF2pCYbkPyGaVIDXJ+M/ObDRjpgrY2hjRZ4LcPG4tvv9sk4jwd3xSi//bOIix66wU8Of4NfLRkhey967nt8OXq9QFcFJRZX67yf/bpe9OlySVFbBZjUlasWiexJSYDOzevQAR2fk6B3Ijd9dNSsTfD78BnBbvmKaxzPP+mQ53FOe8e1A+XHWmSuf6HzfI5neR0rTMTnNd83hV34oM3xyIxObkcN0bBFLvLO/rNPqxOcDr/K2ocynPqJEeD7nMtJaAElIASUAJKQAkogRNIIHc/4CkBHFFAYr0TuPDJt5SK3yffPdMdKwEloASUgBJQAlUgQMGYf+iCpjO3U/s20viyYf26VZjlxAzduPUXDPrz88jNL5S9Mq+crm9Gntz2wFgRvSmEMyOc9d7rT0e8sVDiN+ehG3zmS6Nw5mktkZ1bEpivJNOOPZ864fP54C71whoH/eOm/6JWExfO69MAcenAa7PfBff+567DseOHQ9i1Z7/Ed0RHRSErMxe/7NuDVklnwuazocCTC4/DjURbbdidPmQV70eR/aj4zQ1EO2NkXYrfbl8xaiUnlrtOCuextWzS8DLpjFIUlXhFhKW4S/fz3gM5kt1NUXjFqvXIyy/A+Z3aof/Vl0re9trvN4uwzM+Y483YkpmT/4JX53wo34cqxplQaGbTS9bNfXvgrfc/xaj7b8XYybPC3gu6uCmIGwd54wZ1hVdwGWGcn1/UtQM+/3KtDBlw3VU4q+0pGPHUyxIdQ+f4+KmzAvvkeXTg333zFXhrwefSUJRRORTYzzvnLJzWpkVABGeWO+9zcL538F5Sk6JkTJTTIU5wE4diHUehnI1RtdllxD+GOlAJKAEloASUgBJQAsdGIHMLsPVzoPDw0Xlik4EzrlYRPAxZFb+P7ZHTs5WAElACSkAJKIGTkIBxUNOVKy7qa3vUKDGcDSnpVDdF4f6+0X/FV4umy0fBLvFIboERv5n5zeK1M+/bCOzMxM44VCwCsi/bgc0f+2cNFr75Gd3cFMAdDgd+Tl6NDXt/wJ3thqBuVCM5Z1/GAezbnwWHw454Xy1kFO5Fq8QzYYNf/I6yR8Npj5KxB4r3wx2VhyZxp6Io34MiTwHsNoc4v5l7UurxIDkhEXZ/DHigYusCjhig2ZVeNGoZBa/PJznVJtd7X0aWZI2zCSeFYYrfT77wKoYPHShOb7qqGQVDB332oTzMW/AvEcMplhvxm6Lz/owsadjJuqx7FzSuX0cafLJMNIk13oRRI8zrttbTo+7ByzPekYxvNs4ke+MWt45jhEqfXt0xYerswNzm+OTnHsKYSTPR7oyW4la/5Z7HhA+/5rXRjX77DZdj43/3ynVy77yW8885Dc0ap0nzTTr36Q7POFRU6SPDcWyKyWKsiYlDsYrgmvddKUYdoASUgBJQAkpACSiB6iNQWgysfA1wh/i3HAXwcwcCzmPrxfL+P/6Dr779EQkJcXj7w2WydxplaMA5eDgXg0dNwkN3Xxf4zdQXX30HpzROR98rL8S2HXvA3kO9enTF81PewpltT8X0scPw5rzFmDH3HzJX/XqpePWFh9C8aQMUFpXgifFvYNFS/7+1n3n4dpmnukvF7+omqvMpASWgBJSAElACNZaAcVDTdWtc4BSaN27ZIS7qmugGJ8xly9fg0edfC4jf/IwCPnPCl8wdX+m+KZazyaWJTwl3gyh05+8D1s/3iOuX0SesUksWuDm3tNSD4pISFLgO4rze9bHrE4cI5Q6HTUTo/AM+8Lcxi32F+Dl3i1/89h0J7uYk/PLItza7Dw4X4C21wevxwWvzwOb1C+B0gPMY/5hyRAOxaUBcug+n97FLHjmd3zFRdsmoZjSLEb+Zmc0GlxSCZ7+9SKYwmd38h/nTD9+B6/70pDS6ZFnd108+fLe4qI1QTbGbLyXWfO+PGzFjTe43BWd/E83NgTU4bsyjgzH5tbdF/I60zJzB4xnVUq9uquyL659/Xjv0uao7DmRlY87bi3A4t0DEd+5l4PW95HTeR2Zz248Ep2ceLq5wGybyxjqOpybHuSROxjTGZCPRxFjLjYn04nScElACSkAJKAEloASUQNUJ7PwW2PJZ+PM6XAfUalL1eS1nUPz+ywtvBARvmnAmvvqOiNisysTvux+eiCu7n4cH7/b3qOH58z/+HE+NuB2xMVGBnkRntDlVhO/0tNoylsL6I8+9hhFDbhBhvDpLxe/qpKlzKQEloASUgBJQAjWawKAHxorQPeq+mwNNJLlhisgsZl/XxKJ43fPGEXhz0shAM0/us8cNwzGwX09xL4cqnjdt1ofSSPORoTdJFEZFVVDswdblbhxY589wZs9Jp8MuYnJFFV3LB1u+PyKFovmPm3+GrSBWzs0pzkFSYjxSPOnSwLJMWaKiHS4fnLFAcY5FID8y2BV79EQjfFNgb9ffgag6XnE1G7G+dmKUCOFbd+zDzfc8BorfjAihg7vd6a3w8y+7YbPbsGnrL5L5LQ0v35iP73/cIhncJms71PVS/GYzT5P5HTzGKpwf63PUukUT2SOF7r+98mygEedVl3bFpRd1xrDHXgwsYYRy7p3XM3j4cyKMD769fyAfnIMpVifEOOH2eJFbUBr2voZrisk5TCNRiuC8K/xeSwkoASWgBJSAElACSuAEENj+JcA/4arlxUDjs49pI8b5bcRqurnHT5uH5x+9S+atTPym83vMI3cFBGzO987Hn4t4bo0yNC5x61iri/yYLiLoZBW/q5OmzqUElIASUAJKQAnUWAJ0fXfpNSTgYrBu1DTGXLlwWpWaSJ7Ii6VwT9exVaBnXvfqtT/hvRnPlNmKVfQ2sSaR7JXi91dTPWWGRrvs0iAxXFH8dOcCsSlsUOmVbOk9Ow8i/6BbTkmISkI0Yv2nH9GwjxiQgaA+ifH1fHAXAiVBArgRv5nzHZ3sdzK37WOHJ8ldLruac9ONnJ2djStufjggfnc8szVKiovEGd37yotx14NjAg0vGRvCKJTpb76LVqc2xub/+l3gdH4zQoQvDei+p1je86IuGP7EJDlOgZmO8lARJjzepo4dOwuiy7jArRx5PvOyGYMSXCZShYI2o00ouE9/c778GumYUXeh3SW3yX7o+ubnjHF5+L5bJbvdxL3sy8zCxKcfDEydFOcSXnToMxudX9MpH5z/XVlTTE7I+16vVkwkj5WOUQJKQAkoASWgBJSAEqgOApWJ39Xk/GbsSXWJ37xsitom9uSqSzrL3Hv2HwBd4nv3l40LPB7RJyp+V8fDp3MoASWgBJSAElACNZ6AEb+XzJtQJk+bG2f0Sc8bhiPUsZpyYSaz2xpzws/oWv/07YllthnOKV7ZtTD3+z8vlZYZxgxwOoUpaluL4idFaK/Xh5y9PiQ1sMPj8TfGzMgogTM7TN6gZR4RwS0COMXvqGTAUwQUZgGeYn+ud1ySDRS+GZOS3NCGlDM9cNWt2I2elZ2NG+4ajVlTHsekV+ehaaM0EbDvHtRPHOAUiCkcX3ZxZzwx7pVAQ0pmhJuM749mjcPVt47EkNv7Y9ob80VsHnBdL9zz0JiAoE1nNmNGjFhNRhe2qY21u4pwVXP/xc5bX4hbOibgb2vyAlEpHN/ujFZY8fV6GWOiWAxj4yI385vvuQeK3Jf2HSxC+KMP3IZ7R42XBp4cYzLHJRKlUzuMuO/WwG2rlRiFwqJSFB15mREf45AXBXzpkVvoDtxj5n1n5RRX2BRT874r+2nS40pACSgBJaAElIASqGYCzBRcPSf8pF3vAmKSj2nR6nZ+WzdjMr47n30a2p3eIuAoD9Xc/pguIuhkFb+rk6bOpQSUgBJQAkpACdRoAuFiQiiMMw6lU4e2NXr/FLoZYcJ88qSEOND5zfxyNqEJLmuUC/PBOc40eOS5oerwbh/WzHMH0kn2leZjv7egjPCd7ohDk5hEULg2zTALM4DE+v74i22HcxG3Jx4Ob5CtOzjyhFq2yf0+kpwRk+pDrL8fZ6DqtPdKs0U60BMaAO7EkpAZ5MHXYzK/me2+Z98BOWxysNf/sFnc29LQMjNL8sEHXtdLPpvw1DD5m+fRkc0/RhCn8BwfFycRJF3PbSeO7wlPDxMh/YZ2sSJys97884V4dO4GXNLIn61N0fv1W5rhzr9tx5+61cX/Lc8MbNcvWMdKHjjvD/PBmY3ITG8WxW9a5vv2ukQc3twDneA9rh0sxxmPwuvjPqdPeBQtmjXG7LcX4v2Fy9C8WSOc36k9+vbqLmNDidq8B9aGlmyKWTc5GvsOVtwUk+cwR1xLCSgBJaAElIASUAJK4AQS+GkxsHdD+QUZd8LYk2OsisTvmOhoyemmeG0aXNK9PeTWa8o0vLRGmXzy+Sq0aNaoTINLnn9F985lMr+5bUahbN2+C5dd1OkYr6Ls6Sp+VytOnUwJKAEloASUgBKoyQQoAo+d8hamjPlzyOaPPE5huLJs7N/qGk3DTjq7GYGSk1+ImZNGhmx4adzfFHE5tk2LJli6fI1s/dN5E8Jewr8nuXG4tBhb3YcDYyiQ0vlt4kr4dQtXMhLsUTKGTm1XLJDhLUTuPiAhN+ao+B1C9LYubnV/x9b1IabW0aPNrvSiUcsoEdmZ682GlhTCD+f7m1qGK7rScw4fQu9Bo/DqxNF4+Y13cErDNDx8/63YvjNDRGRGnTAShI7ubT/vxFMj7xH390eLP8P8j5Zi2QevIONAlrjH33vjebw650NZjuL3l6vWiRhNgZliNIXqr4e3xHkTtsiYVwafj6fe24gn+7fFytXfY+aqw7jy7MZ4pmciXv0iU8RvxpkYwZ2Z7XPeXYIrLumCrmefhujoGDz8zMsy1/ChAyW3m/uk6E5xno5xit//06U97h7UH198tVYiW/pffQlu6X+V/Brpks++kgZC3CeLnOulxIQVtY0Izkxwce8fqlj8rpMcDf5WgJYSUAJKQAkoASWgBJTACSaQuQXIywQO/uJvcJnS6JgbXZorqEj8pkObArWJK2GESUJCHM5ofUpY8ZumDsY3mrrjxisDzTCNE3zR0q/kcP16qXj1hYe04eUJfpx0OSWgBJSAElACSuB3RmDazAUSczJy6E3Izc0HBeW2LZvKVdJJvWDxF+Ksbli/bo29csad8Br6XHFBhXvktVL0NmK+EcSnPHt/WIH/Hy8WYGPRwTLz2kSh9pWLPrEK4ByxriQTdfamwFFqR5TbWb7BZYjdWvO/a7XyK+WJDYBmXRxIaWwT0ZtuZFOMWjFNLXMK/Lni1kqMdYLNGLf9sh/X3v5IIPN72/ZdMozxIpd174J7BvWTiBC6vtkQk8eTk+LF5b3m+02BrGxGnLz0zH2Y98G/kJySgi7ntpPxzNhmdMlFp9XFfw/b8HIPD/53ZjbqsWP9ZU3x4ic78EivZti8dQd2Fcfho693iLhOlzfXbdW8seS3L/n3t5j06tviQGdRFJ/wxFA899JMcXPTsc898/P8/EIRwzuefip63zpSGl8OvL6XnPf+wqWY/faiQHwKHeUDr78qIH6TG53aWTklFT4zdHSTodfnK8feemJ6rRjJK9dSAkpACSgBJaAElIASUAI1mYA6v2vy3dG9KQEloASUgBJQAseNAIXhl2cukPkpEE9+5j4RvK1xIcdt8WOYmPv+4J/LRbhv07Ipxoy8o0pCPZ0Xl3TrCLqNQ9X9H67BKRvqyaGAMA0bfMGh30dObh9dF20GebBqYSH2b/YhLjcGNq8NUcVO2H0ViKPm0BFHeXJLL9LO9iG1qQP1mjlE8KbwHapMU0uX0xZo2Ei3d2pSFErcfpf44dx8aRLZ8+IueOjxFyXnm0Ixc64p8LLRI93jPI9ir8tpR3ZuSdica7rOk+KikF/kRn6RX4zneQn7VsO9dbm4pW2lhbCXlnVM+2Jrwemwi5hc6vGL+1wTFz+EguLSwFzB18kxbDzJyi0oDeyV11gZG29pCerXScLhAnfgxUFKvAulXh/ywjA163PNomKPXE9inLPM+maMy2FD3RRtdnkMP8Z6qhJQAkpACSgBJaAElMAJIqDi9wkCrcsoASWgBJSAElACNYeA+fW7ewf1FuGbIjj/phPXNJZcuXCaRKDUpGIsC/fKqJPExHgR6ukMNhngle2Vzu9r73w8bOzL3OwtmJu9Fe0/PxW1MhNkOhN3Eqx9u0qciMuLQVKyHalx0WA+uHuvE1FFLnidXvC43RtG/A762O7woVYzOy4Ybg+I1x6qr5WUX8h2ocTtARswUrw2ArP1VKv4zc+Ne5xCOUXvikRo6zwU3VMSokDtmuI0z8e6d+DI2gJH0SHYS/IBX1Aci80OT1wqEFfb3yDUBzk/u0VvFMc3rOwSJVqEgrTZa15RWSd8uAms4rndZkNRSfiXCdY5mAueebgo4PLn+sEiuOZ9V3rbdIASUAJKQAkoASWgBJRADSGg4ncNuRG6DSWgBJSAElACSuDEETAC94bPZ8qiFIUHDRsHiuGtmzdGv7uewJJ5EyQruyZVsCvd7LvP5d0wZFDvkFvlmNXrN0lTRDrGKxp79dbFMgddyu0/OxW1DyQG5jS53/wgOTsBUSVOHKqdh+hoG1pEpWC/pwA5hz1IyooX0Zuub/5foHummSmEHh6bDKQ0saFRJzvi21ac5229yNhoh7ivKe4WFHsQKgaF47du3ylRI+lp/m6aFIaT4l1wHontOJgXWRNNnmuc41wzt9AN57dzELvrS9g8lggWm93/1gBeeubhgx0+uxO25PqAKwY+ZywyOw4N6zIPvpFJcS543P7mmXC4wrrFmWPO4rWyCgoKsfjTf6PvlRegdu1a2JNxWNY0xzmGzTHpjicb3uO6yTEh874Na4rwUS6HCPlaSkAJKAEloASUgBJQAkqgphNQ8bum3yHdnxJQAkpACSgBJXBcCPS4YbiI3b0v7ybzG1e1WSxSN/Vx2VyYSRl5smrdRsx8aVRgBPdNUXzJ3PFl4k+YZU7nOsXvsS/PFSF/wLU9KoxIMeI3BVK3x4sWP6Wj9oEEEcGN+E3hW4TVhCK4o/yxJJ3i62G3Ow+7S/JRd58/89tZ6oDX7oWNIrhXZHC/GH6kKAl7bT7YXT4k1bHDlQSknw20usCJ/KLwcSA83biaPR5/LjXF+sRYF6KPuL8rco1TvGbTTOOgprOZWdjG/f3JZyuxbftODLn9ujJ3IXjN5V+vwxVJWxC749+wBUWdhL59Nvic0fDZXUBcLXivHCNrVhRDYl3zsRdmiGOcv53AMlEo1rWC411K3SV47e+LRdxu3iQN9z0yEed3aoerr7w44Oy2it8xLjtioh0SCROqTFNMivFaSkAJKAEloASUgBJQAkrgZCCg4vfJcJd0j0pACSgBJaAElEC1E2BcyH2j/4reV1wgwjDjROiOphg+5NZrqpSjXe2bCzPhT1t2+F3pQUJ3sJDPXG9ekxFKI92f1fnNPGxrUViO3xOHTstbBj42meAdY9LEUbyuOFNc4bEFUXB47DLO7fLnY1MQt2aAe5xeeBxe1I51ITbNP2Wd9l7U68hoERfcpRS23eWabNLpTReyaYS5/ofNaN6sEVasWo/Dhw6hS8e2aNnyVBSVeKWZJd3QLZo1FsGcjTK/Wb8RafXSERsbK45wOp7pkC7Mz0HLUxtj8/Z9mP/RUtRLSxWHdPNTGqHz2W2REOPE/qwcfPrFGuzPyML7C5dhYr8m6Ob6CTYERZ0EAd/prQOvxLjY8PGGPJm3T49z4Tj7RrhLivD1+m046/RW4LWw2p3RCitXr8fu3Xvk+/r16+PL1evl6xFDb5UolLXrf8C6H7fLdXCP3O/wx19E82aN8T9dOqDj6c2QWrce1ny3Sfiw2SaPn976FFzctQPqN6iPpo0bypo8zj1R1GYj1Q8WfyHfd+3ULuCWNyxTEuOxfOVqJCbE4ZrLu5WJBuKLlg8/WSH7vOay8wM/Q3xuTYQQ5+ezWZMbykb686LjlIASUAJKQAkoASWgBGo+ARW/a/490h0qASWgBJSAElACx4nAnHeXYOzUv8vsNVn0tl4+he5O7duUEbbp/KaoaBzhdIg3SK8TcLVHis+I3xxf5PaL1qYouDb9oR6a/5QeaITJZI8Em0tiT1jM/c4qLEFqRlJA/DYid6g9RNvsqJXmgONI70SK33Xa+7O+KcRandx0JTOqxDS0NO7uW+55TARuCrgUpfdnZgub01q3wPRZC0QUv/LSrrj9+suQmJyCbr3+hCcfvhv7M7Mw++1FSIiPlXPi42Lx0OAbsH7DFvzrP9+ib6/uOJCVjeVfr5cGocVuzxEhuTHyd2/E+t3FuKh5LE5LLsS56R50qu+TpqDT1joCl3pvBz/Dl9c6MG2tHb3OqoXVe22y3pVnN8boW87HvA1eTHn9HZx1ekt8t2EL6tVNxbRxwzFk5HgRrPMLCmUO7u/889qJ+D3tjfn4ctU6XN69K0rdxVi2fA3uvq0fpr8xH7WSE0DX/xltWuCsM1phwtTZ6HlRZ/l6ztsLZS6uP+zu66Xpacced8jx/ldfgk1btmHC9HmoV7e2iOgUxgff3h+XXdxF1vxg0TI5PzE+VsRrrsP8+QWfrJDsee6je7eOIm4vWPyFZNGbJrL8jQU2aaVo3ueKC8LG9ET6rOo4JaAElIASUAJKQAkoASUQCQEVvyOhpGOUgBJQAkpACSiB3yUBOlWnzfqwxjq9Q0E3zTqnPHu/CI0sit0/bf0F/Ix1+kWDRAA2kS6R3rzRu7/G94XZMrzE4z3iVvafzXzsHu+3D0xlGmCmO+KQ7owPfL615BCKi31I2+sXxGWuaH88irUcsKFuPWdA+OaxJpd7EJd+dJQ/Z/poQ8usnJJyOdkUvylkG8GWkSXtz2yN73/cIkJrbl4Bup3XDv/+ci0mPP0gBgx+TIRkk/8dT/E7IwsDr+8l8SA9rh2Mc9u3wfQXRmDRpyvwwstzRQD+ctV6EYMfurwp0l15GPL2LtnoiG6xOLe+D6cl5qHHwnro0zADrU5tgtX7bPjX5gIs+9/9AfGb63ZunoTSwjz8e2s+LmoZjwM5xfhhfylu7ZSMWasOY9EzvdGgTQf89b3VWLz0Swy+zb/2ks+/Qs+LO6PnRV0w/IlJmDP9WbkGOtodcMu13vXQCzjztJbYs/8Alnz2Ffpc1T0gWFPg3peZJefw2KfvTRcH+f9cc7dcxzMP34EXps0N3HO+FKD7m3zand4Kc95ZJML8PQOvxj+WrsQt1/bAn/8yRYTwczu0DQjfFMEpiPPniuI4n0nzcmbMyDvU8R3pD6OOUwJKQAkoASWgBJSAEqgWAip+VwtGnUQJKAEloASUgBJQAseHgBHog53dbF75yNCbRGBkZMtzo+4U0ZZCOL+n8/vTeROqtKkfCrPx6O6v5RyT+82vmTXtctrRfX47OWaEb37dPrpuuTUogDuyohGXFy1RJ8Hid1S0DbVTygrfcek+NLm8bHwIxW/GjVDgZQ44o06Cy4jfRgweP3WWiLutWzTBwH49hcW7M57DPQ+PF3GbTmiK0H975Vk8Me4VEXbXb9gs7mYeHz9llrjFe1x4triZ3aVevDJxNJinTZH84gZ+J/a89f6/v7vDJw03Z22MxTd7fZj6P7mBLXZ+JxnvXOvCx99liyN8fv8otE0qhC8qAWdOL5R9LL4rHRf+dTtWPtQC0/+9HzHRURh8YRo6PP+THKfz2/xN8Zv7pWOd+zfF5pO1E6Nx+7CxEpnCZyWtTm0R9Cnmdz23nbwgoJBtFb95Po+z7hl4DV6Z/SEu694FW/+7ExOeHoZt23eJ0E5XOr/muQveeAb2I41C+ZKlTfPGeHbUnRLHw+dv45Yd4vzOyS+Uv/nbCBS/+XW4pqxVekh1sBJQAkpACSgBJaAElIASqAIBFb+rAEuHKgEloASUgBJQAr8fAhSNGcNQU7OHjejNuAhrY05zBxjZwmiJxMR4ca536tBWmluuXr8JDeql4v7HJmPUfTdX2f09N3sL5mZvlSaSFH4prFLsLPX40OO99mUiT1q4kpFgjwr5UOz35AO7o1Hq8yE/oUjGJDlcSIuPAXs+BpfV9U2xOzUpKhBxwr0wr5ux2YfySsqI70b8ppOZZcRvOqFZdH7zRQDz3Adcd1XAwUzx2DSINOJ3rx7n4+/vLpLmp107tcd3GzZj28+7RHxmMVrl7m51Udeeg9tmbcNTl9XGZbV3wWaz4eVvvfjblgRxYLMRp8NhkzWfuawW9mYcEPF7w+1u+GwO+JwxOPPVEpmTbmoK09wj99r3NBdqpyRi0pJdmDP1caTXry+Oc4rQRvxm3jgFeRYbeMbHOEFX/AOPTcR5HdqKSF+7di3c3P8qEbfp+macS7202gHx+4PZE1G/ThI6X3mXzHPr9b0w6+2F8tsEBw7mYuLTD2LF1+vw5Auv4smRd2P8lNky7ryObSUGhr9VQPGbzm/hnO9/GcDiMWZ+k0Xblk1V/P79/GdTr0QJKAEloASUgBJQAicdARW/T7pbphtWAkpACSgBJaAEqosAHalVbQpZXWuHm6cy0TvS9ekApzs8lPvbrEFxctTQm8pNaQRw2CACuMnXvvyDDoGxbWNrIcbrhD+h+2jZ2NzSYRO3dlG+F0WHEGhoyVEU03mM2d3mXCN8s4Emnd7WhpbWuU2zS2v8iVX85vGxk2eJeM0mkH16dZccbArFrU5JR3Z2Nq64+WERsxfMeVHE7/M7tceKVevQ44KzMbB/TwwdPRmHc/NF/GVDzMHDn8PoBwZh5TffSbTHX/q2Ru/WDlz5+n48eVltXBCzBfB5MW0Nd+rDvR3KN798ea09IH5z1IbcJFw33+/o/nRADLq+ehD/+XOzgMg+eeluiUBZ//pd8J3SBYuWrcbo56aL+M0oE+6JTveWTaE2RcgAACAASURBVOsJqx17D0njS15P81MaI7+gAKc2roc/Dbg6kOkdLH4vmDkWpzRKQ/tLbxfEI4YOxOwjmeBNGqbh1fEjMOavb2HL9p3CYslnK/HWu/8QYZvPFuNM7ntschnnN53dfFFjis+ZyfxW53ekP7k6TgkoASWgBJSAElACSqA6Caj4XZ00dS4loASUgBJQAkrgpCJAkfTcdq1rlPubgjzjI6qa1x0MnsLjoGHj0OfybmXiJowoHspNbp2DESgUwdcVZIkAzmrxUzrab2qCdGcckp3RImK7Pd6AE5vfU9ymWE73M8VtNrFkHVhnD0zPmBCX04bUdl4kneFvCunP93aiqMSL3EJ3GXe3dV/MqU5JiJIxhcUeUPwuKCzE8g+nyrmPj5+Bdd9vFjf1hKeGiRO8Xloq0uumIuNANtb9sFmmG3xbP4lH4TE6q6/vfSlu6nclLu07WPLDGYFCwZfHKf5mHsjGXcOeRYtaXpzTJD4Qe/L1TQWw+TxYtRcYtTpNMr6Dy4jfQ440wJy1KQGTLirCn/7hwwu9auPhhdn48sEWclqmNwm792ZIpjhzwDOTTscXX60TVzjFbza8/Ns7i/D+omW4uuf52L4rQ/ZPMf+Tz1aK2M+8bjasfH70EMn0ZsPPb9dvQt9eF0tkCqNUbuh9Ke4YcG0g9oTiN2NRnhz3qlz/2e3ayLoUwbf9kiFu8q+//U5iTHpc/xDuva2POLpZS+aOl984ePnND+Q3ECh08zcW+DdfLmnsyUn1n0XdrBJQAkpACSgBJaAEflcEVPz+Xd1OvRgloASUgBJQAkqgKgQoEH/4yYrfbRYxxX1mXrMBIYtieJsWTTDq3hurJPgz8iTzcJEI0htnOgKI6dSmGM3jFL0ZS1JaetTRzYFtBvnF7eAy0SYFxR5pphnlskt0h3GZV3QfzbkUu9kU8tXZH+KtV8fIufsyspCXXyCRJRR62bSRQjjryYfvligOr6cEr7/1sQjKHc9sBTYR7dvrEvTt1V3czxS9mZdNUZn536Y5Jucd1asZCgoK8WOmFx+t+gW3tMxHelot9GuYiRd3tMW8lbvRqb7f075qrw3v9o8KZH4/c3ktyQfvmOZB45h8fLXHhj8vdaJBdAGaNErHV9ty8ODlTcRZvuyHDIz4+IDMQzE6L78QF5/fASPvuxVJ8S58sepH7NidIW5xCt1mj4wqoTBOB/iQ2/vLNfyyczfeXbgM773xPDb8tAUfLF6Oz79cKzEuFLVZpuGnuX422uS8LZrWwyPPTpPxjDhhzA7rvdeflnxvit5z5n8iQjdr47adGNCvJzq1bxNoyMqfM1ZNjRiqyn8zdKwSUAJKQAkoASWgBJTAyUVAxe+T637pbpWAElACSkAJKIFqJkAnNPOJT3ZhjkJ3KLd4jxuGizDJJojMOL/kgrMDUS8/bdkhNJnLXFlR4M7KKUbuHh9++adfAGfEidNpFwe41+tDyRGHuJnLmuMdav6kOBcSYp3iLM88XFzZFsocZ9Z1cnyUrMtzQ4nmFKvZqJFFoZdCOIv7rVcrRr7OzinG5Tc8ILEf55/XvtwerHOwmWTSpvcRX7RXcr4Zj5KVnYM1e0rl+1B29XPr+0T8Zt3b8WhIjM/uRGlCfRQ7k1BcUgKPx4PoqChERx/NUKdDe1Xt3n7nelqqsCIz8srOjexFgbkgvqSokxwtvHjuj1t2ID+/UBpkVlTME0+Od4HPCl8WsOjuthbz8ymEs9q0bIqkI3nrVbqhOlgJKAEloASUgBJQAkpACRwHAip+HweoOqUSUAJKQAkoASVw8hCI1P0d6bgTfeXG3U2n7cihN5URHq3H2BST1fPGEZLX/PzUv4sYzkaFjFmZ/Oz9lYqWpR6vuLMpgO9e4iwTcULnNgVoiuRx6T6JO4lLD03D2tAyr6hUcr6ZE05Rlu7yiornMh7FOMVjouzS8JHncu3KiqL59DffhcfjRWxcLL7bsAW79mRi2oRHA+J4uDlk394MYO3bEuvictphyz8A22G/wB5u86v22RkHjk4NyorfqH+GCNl0zIer7HPuk0Mm73zV+m1Yufo7WZvnMnbGWl07tUOLZo3LfEZXPhuG5haWyr5TElyVxsvImnEuWVdLCSgBJaAElIASUAJKQAmcrARU/D5Z75zuWwkoASWgBJSAEqg2Aswkpjhckfub4jeFY+Yb1wSXeLCwHWpPY6f+HQOu7VFmv7xW5jGbzG+TDU7XuLVZYTi4FMBtsKHY7cG2FaVlGl7SmRyT5gNqlYY83SpcU4hlZrepUM0sgycxueA8j+eboquZ7uSC4lLkF4WPWaHoS/H3i1UbsPZI9nf9enVww9UXigB9KC+8+G72dyjPDe/BX5C06QNZXnLO92+Q3G9RuIPUe5+NWef844MNfqGaX/kc0Sit00pEbPPSIBQ0it90e0e77GXc3lyX18M6nO8OK/zz5UBirAsH846+HKBJnS8M4qKdyC9yh2Smwne1/edFJ1ICSkAJKAEloASUgBL4DQmo+P0bwtellYASUAJKQAkogZpBgALwtFkfBuJAwu3KNPhjE7/fqrjX0eNmyPJjRt5RZSE+VP4yo18oiLOZYSQVLmqEompynF+QPZTvLjNVOOHaOohj6AK3CrU8Huz2DhVxwjF0Nxe7yzfMNPNWJI7TEU5BmOK2Nb7FiMwUzcU5fcSm7czdhdg9q+DK3Y3oAxsB3xEHtvnb4QS8Vle2TwRyH4Vwmx0+VyxKUprJ5dOZLc1Dg1zgJY3OQ2zrC+SacgrK8jTcKG5THGd2en5RaRntvbIXClYBPbegNHDdKnxH8lOgY5SAElACSkAJKAEloAROBgIqfp8Md0n3qASUgBJQAkpACRx3AhSAhwzqDYrD9z82GQ3q15WsbMaJnNO+jUSC1AT397Lla8CM5eB87znvLpFmjqFyvyuDx6aYG7f+InEokRYFcGaAu0NEjVCMdTn9MSZs8MgGjWxqGUlOtYnooJBLF3ckorl1z1aXND+3RqRU1kyTDnK6qc3aRlgOdppb16MInrB1MWIyvgPFfyahM89bvpLvLWZwjxs2b6kc90YnSua3KbsNZVzg3uRGiDr3BnHHW13uoe4P16G7m/s14n1lwrd1HnPdJW5/s1K+BNBSAkpACSgBJaAElIASUAK/BwIqfv8e7qJegxJQAkpACSgBJVCtBNgkUpr2+Xz+RpH5hWhQL1Wa+VEkpiD+W7q/gy+WYvhtD4wVUXzmpJFVcoMzPmXslLcw86+PoE2LJlXiKM0T80pA0TS4jPjKz4MjTipbxGSCM0HE6/OJoFuZcG2d07i4+Vkk4rH1XArJdJBTtOfXzDivbO3YPV8j7pd/w5W3T6Yyoje/Lpdh7nEDDhfcCenwOWPLoRAXeO0m8LS7TmJYgpuIVsTOxL9wDLlFkqFu5uOe01JixIGupQSUgBJQAkpACSgBJaAEfi8EVPz+vdxJvQ4loASUgBJQAkqg2giYPO1P502QOX/asgPfrN8kwvfGLTvks/dmPFNt6x3rRIxjoet76fI1uKRbR4waelOlU943+q9YtmItunP8vTdWSTAPnpwiLWM3TMW47OL2pmhMMTUSAdk6J8Vr5lFTwGXcyOECd6WNMM35JnqFDTFZxsVdKZAjA4zwTke7y2ErF4MSbp7ETe8j6uBWEcDDid+emBR4YmrBE5sKR2FWyKlszbrC0byrHCsqKR/hUtF1cN06SdEo9XLv9rB53sFz8LzUpGhQPD/W4guYb9ZtlOdKSwkoASWgBJSAElACSkAJ/NYEVPz+re+Arq8ElIASUAJKQAnUSAJ0fzNTu1OHtjVyf6E2RdGeQnioppyMbFnwyQppajnogbEikl9zeTe/w70aik0Xi0o8gZgRE79hYkvoQi4NEZFiXdoIz3SSm3xtOshjohwRRaaY+A7j9jYu7kgFdL9j3IXcQrc4xk0ES6Tu8dRtCxCVtxuluX5h22bzZ3n7fD6URKXIZ+7Ehsht3Ve+ZmQKM8MLG5wngnmKez+idn0F94Ff/MePZIHnpJ2L4oQGKE1sFPZOGXZmr9Y874qc81y3bnKMrFUdZc2k57N2bvs2YaflWIrlbVs2rY6ldQ4loASUgBJQAkpACSgBJVCOgIrf+lAoASWgBJSAElACSiAEAQrJ/BNpE8iaAvHaO/4i8SzBsSyr1v6E24aNE/F79vxPkJgYD+Nsr669M+Ijr9BdLqPaLyJHVxjjYWJSQkWkmBiTigR0c36oMcwBZx52OAe61S0ePEZE6QTGoCBs/Iq1KaZ3zdtw5u4OIKWk7HLaJUs7t965KKjfKXDMNM2Myt2NqIJ9gLsw4HA3LnFrFvjBFn1EPA8uI3yHcrkbQd/f7LNsQ0xzntNx7I7v4D2tXrcRj459XSKCRg69KeRLlrFT/46lX3yLpMR4+W2FioTy6npGdR4loASUgBJQAkpACSiBPxYBFb//WPdbr1YJKAEloASUgBKoAgE6pEfee+NJ5Uw1TTnfnDSynGudAviHn6yQbO/Z7y5Bn8u7SZPPyorNQH+KsCEmxevcAne5KY2LOljcDuX2DrUfv6s7KuDKNmPM+ZVFhPgd6C7kFJRInEjw+ZW5u42IHJzDHc4dzhxwazman4+4aEcgRoXCd9KmD8TxHZW/D76SwnKX7XXGBJpiGhd4doveKI4/KoCbFwvB12WdLFRDzKoK32yo2v38DlWOx+F5fNnS+4oLMKBfz5AiuBHKHxl6k8alVPbDqMeVgBJQAkpACSgBJaAEqkRAxe8q4dLBSkAJKAEloASUgBKoWQQYGxEcXcLok1XrNorLm8JiqOacFUWkmCtctnwNnp/6d4lIoUgeaUQKHcaMQQmu4GiOitzeoSgfr/NNREtld9YI3RTPcwrcEvFCUT2SSBfObWJZijN3wLF+vkSiOL3F8B066hQP3oNVADcu8PwuD8hLAIrp8THOiDPVzfrcP53wVXF8GxF7YP/LRMSuSvEZ5fl0gYdzd9MFnptXUKMayVblGnWsElACSkAJKAEloASUQM0koOJ3zbwvuisloASUgBJQAkpACVRIgC7u0eNmiMDd+/JuZcbSqf3yzAXy+ZBbrwnr1mWuOQXJYHGcYuW4qX8XAX3mpJFVdvtyM2yASZd0KAG8dmKUCL/MCDfZ3pHebtPUkecXl3qRk++WxpqRlskBd9jtcHt+3fnJcS6woSZjXih8V3X9umumyvWzvAd3w1ZaVOH23Qnp8DljA2Psp3aFs/n58n3m4eIqrU8BPy0lJlJcZcaZ54KNX8PFlHAMiy9KQr2YCbUwx1175+MRN2v9VZvXk5SAElACSkAJKAEloAT+kARU/P5D3na9aCWgBJSAElACSuBkJcBYk2mzPhRhOlRDTjq66fauSPQ2124iUih+BwvodI9v3LID7814RoZz7O59ByRPPFIHOMXtg3klgRxra/wGBWM2ojwUwiFe0b0x+d9sisks7aqKz3Q8MwOc61OAjtS1bfZk3Odujw8uh71cjEplz1Xcnq+RlPGNNMG0sxlm5rbKTpHjJSnNAuNszbqCAjh5Vhb3Yp3c5bAhNSla1j2W4vPFlysN0+uUy/PmczJo2DjwpvM5Mc9PqPUoevO3CzgX69e+aDmWa9FzlYASUAJKQAkoASWgBH7fBFT8/n3fX706JaAElIASUAJK4HdCgKLinPc+xdLla0K6vc1lVuS2rSgihQ5witumwSfXoxuXMRf8nKI6KzE+FjP/+ojkhkdSpR4fMg8XiVCckuAqI9amxLvgcPgFaLqoKyrTVJJjGFNC8drEjoRrZBk8X/B4kyOeX+RGfpGn0ssxueGMHGFGeKR542ZiGb9tAXBoJ8jFXloEV/5eOVzZ9Rvxm4I/B2d0HOq/H7H+Zp6VRbdUl/BthcQoE1ZwDMpPW3ag311PYMqz95fL8OZvLHyzfpO8vKGI3iC9jvz2QSQvayq9QTpACSgBJaAElIASUAJKQAkEEVDxWx8JJaAElIASUAJKQAmcBAQYUcIGlbeEaRpY0SVQjLz/L1NCiubMWg4nqJv4FEarXHPZ+UhMjIc4wrf+gk/nTYiYmsSC+CAu8JLSo80m/eKtEzFR/tzscPEhftHZCWaJB4vUfid3VIUObGtTzcMF7jJCM48xhqXY7c/xDlfhhHbjZo92VexCN/v0LZtQ5jqjDm2XJW02m7jBw5U7pZk43b0+HwrjGiC3dd/AUGuWN4X54GmYDc5moSeq2CiWZV6kmHXp8OYz1b1bR4k4ad288UnVTPZE8dN1lIASUAJKQAkoASWgBKqPgIrf1cdSZ1ICSkAJKAEloASUwHEjEGl+snUD1oiUyc/cV05opHOXQnZFrls6vq2RKMbVu2TeBIm9iLRKPd6wjRnDCcsUpnmM+doVubuNuB1KHDdu7Yrc3RSwmeMdKkbFiOPuUi+ChXPrtQe7wq3HrNeXvGpyGWRG/OaH3AcrlAZuq9tcRHM6xgsbdEJhg/PKzGONlLG6wNkQMzneFeltOuZxjDG577HJWDJ3fLmseD7DFL/5suWRoTeVc4Uf8+I6gRJQAkpACSgBJaAElIASCCKg4rc+EkpACSgBJaAElIAS+B0SEJHxi28xoP9l5fK8jShOMZIO3OC874pwMKqCzt6VC6dFnP1t5qtIADfubpPBbb5nvAibYlZWwQ5uI2hXJpxb5zV54kY8No7qX7MH48BmvrjVFR6752vE7lkVWNaZt1fiT6zFvVsFcH5fWuvUgGM8p3UflCY2ConE6gKnj5zC+4kq07iSzxN/WyBc8YULf+OAxdz6hvXrnqgt6jpKQAkoASWgBJSAElACfzACKn7/wW64Xq4SUAJKQAkoASXw+yfAiJRwOcoUHu8b/VfJ8qZYOWf+J/L1kArESkOMojnjU85t3wajht70q0BSAD+YWwI2jAwuk8Fd4vZU6vYOtbgRvJkjTjE8UtHaOpcRj/0NLaveENPqwKaAHRyn4szdhaRNHwSWtJUWwpW3r9zlGBc4YIPHEY3ShPoyxp3YsEzkSTgOdZJjZP8nouj2Pqd9G/A3Cfg8LXl7YkQvRjpfNViidJ4bdac8U1pKQAkoASWgBJSAElACSqC6Caj4Xd1EdT4loASUgBJQAkpACfzGBCqKSGFmd2JCXEC8NjEVY0bdGdYBziaF9z82WYRKOnqr4hQPhcLr9SErp7icAG6EZ7vNJhEjFK+rWnQ6M+qD2diRNsK0rkHRPCnehWinHcWlXhzKq7wZZ/AeOUfd5Gj5mA7w4JzyxE3vw5W7O3Cao+ggHEWHykzjF7/5/3xgs0vjBK/I9W0mSIxznVDHN7O8Fyz+Anv2Z6Gi58h6gTyHQvlzj9yF2UcaZ6oLvKpPu45XAkpACSgBJaAElIASqIyAit+VEdLjSkAJKAEloASUgBL4HRGg+M2iSGnKNL2cOWlkIIKCLm+KmcaRSwG8U4e21UaCAjgbTBYcEbhNLjYjR5htnZoUVSXnthGt7TaAczDuJDHWJeJ1cJPNcBdhssONYzw4siSSi/dHp7ikAae71CfNNEPlhdf+ZkqZ6awCuDX725NYH86YOMn6Ptiyd9i4k+MpfJts+JFDbwrr6ObzMnrcDP+zVUmUCcdee+fjuPe2PhjQr6ecw2z5sVPewnsznqlSlnwk90THKAEloASUgBJQAkpACfxxCaj4/ce993rlSkAJKAEloASUwB+QAEVGum6tQrfJah7Yr2dAjGSu9+59B/DpvAnHldLhfDcoGJe4vZLtTeGbZTK8i0oqz/yOibKDQnVwzInTYRPxOVQjzOCLMnnfFOSLSryBw0bMjkRED9e4k3vjHk2eeUCoDnKASwSKtxi2woPi9HYnpMPnjEVRg06IbXOBnGZeDoS6KSkJUYiLdhyX+2Xc3YzIMYJ1qIX4mwQN0uugTYsmcjjUbyFwzKPPv4beV1wgcTtJCXHHZc86qRJQAkpACSgBJaAElIASUPFbnwEloASUgBJQAkpACfzBCDATnI0urbnddPcyuoLOWxbduRQu27ZsetzpUPg+kFNcbh06oOskRYtz+lC+O+Q+wgnOZnCwmzvUJEacDheTYkT0cBni3CeFZ+M6NwK+dS1GulCID45BYQY4I1BsNtsRAb9UnOqFDc4rt1UjxOcXlY1S4fq1EqIQE3V8hG+zkUjc3Sb/m2Pz8gulOeqbk0aW+60BPlvSlHX5mjIvYo77w6YLKAEloASUgBJQAkpACfyhCKj4/Ye63XqxSkAJKAEloASUgBLwR0ww/mTmS6PKxJow1/urRdNBAZONMRl5cqIaEdL1nVsQWuBOiXeBTSzpnDbZ10bUDnaMh7q/RpzmMWuGt5mDTm86visqzkHxmsb0UHNE0lyT66UkuI55Du6j1OuTfbDqJseAAn1Vii87rrm8269yXfP5eH7KW9IoNdgFzggdzs1697Wn8OEnKypsjkpxnC7xX9tAtSrXrGOVgBJQAkpACSgBJaAE/ngEVPz+491zvWIloASUgBJQAkrgD0qAordpVmlyvp8bdSca1EsVFy4bWrLoxqUznE5w/j3mkbtOCLGKBHA6vOlspgBu8ryDHdCVbdLqEnc5/U7rSCJRrPNaXeJGEP+1c/zafHPuh/uIjXKAITFVFb55vvX+/5oXHHRuf7NuI7p361gGOz/vef1DGND/MmmOai0K3cF54PysYXqdMhn0ld1HPa4ElIASUAJKQAkoASWgBCIloOJ3pKR0nBJQAkpACSgBJaAETlICjKCYNutDiTFho0uTsWx16dLBSxF09POvYcnbE2UMzxs0bFy5iJTjiYFCMnPAQxXF6/gYJ7w+H8JFlFS2N0aHsBHmscwRG+1AcpxLlmJcC5tRVrUYg0IXOGCT5pjWnPFI5qKLvG5yNOzMWvmVtXrdRjw69nW5vxVlb7PZaZuWTSNyiRtR/b3Xny43ni9YPvjnckx+5j6J06FDnOOtv4HwKy9FT1MCSkAJKAEloASUgBJQAiEJqPitD4YSUAJKQAkoASWgBH7HBIzgSBeucX1bL5eCOItiN+MsXn7zg0DuNz8PFZESChfHMb7CNDo8FqQFxZ5ApIeZx0SUuD0+uBy2XyV+W2NHXA675G8zrqSqZRzkPC+SyJRQ85sGmyYf3BrpUtl+DAunw17Z0EqPW7O3+VsAVhc4o2/ue2wycnPzZZ57b+tTYbNLiul0clckZvM5GTvlrcC+GJ1C4V1LCSgBJaAElIASUAJKQAkcDwIqfh8PqjqnElACSkAJKAEloAR+YwLG1dupfRsMufUaNKxft9Id0end88YR5RoUMh98974DImoGl9VVPureGyNap9KNANL0MSunWDK+jdjMWBSK1XRe072dnRu56zq4aWUkjTCD98lzkuL9jm+Tt11Zo8tQ1xrcpNN8zxgUXndFVZ3Ct3Ud87wYVzaF70F/fl5yvSlOUyS/9s7HJcok1EsUzsXjDdLrYMqz91d6i/k8Me5ESwkoASWgBJSAElACSkAJHE8CKn4fT7o6txJQAkpACSgBJaAEfgMCjKkYPW4GZk4aWWUxmkL3qnUb8em8CYGdG1GcDQwZV2GKLt6XZy5An8u7HRf3LuNE3P/f3r3F2FWddwBfM/bM+A7hIpFEhYcGxagP5a5GGKkCYYgaCSqMwkWmrggPpRiIArIdg6I0XGyFiART+gAIGlRCBKiO1CpcBKqEUaumJeKhAkT7QKtERDEJ9jC2x3Orvj1ZkzPH5zb2mdua335JPGfP2nv91uLlf7751uh46u2NsHkk5SrpeH6E2aetG0gHDrWv3m4WLuee3WNjE9U4+TDNRkvWKizP40f1drsWKLW9y2vnk9ugtDo4MyreP7O2P3Wj4rvRHCPgjr8AyEF3VPHXBtmxNyKwrq3Ujj0QP4s98+wLr0y1zJmHbe+RBAgQIECAAAECBI4REH7bFAQIECBAgAABAtOC7qjgrW9HccVXv5F2bL1p6oDDCEi/9JXb0vbbb2zZCuNEacfHJ9KvDwxPC77zmO2qtyPcjt7ccUBmqx7hcXjkQF9vdZhmbSCdn7Oiv7ft4ZgRXp+ytr9qpTJ05NhWKvEuUSUeV1SNNwracxg/ec/0sD+C71PXnViP707XIr7QiCA7+nbnvxjIB1lu33rTtMrvqBCPvt1ROR6heP0hl50+030ECBAgQIAAAQIEZkNA+D0bqsYkQIAAAQIECCxigXwQYRyOGS0uovI7AvF8EGaeWu4nHhXmP3vn/aoK/Jcf7a/6Rj+w7ZYZV503IxsdixYojYPpZgF4/nmnPbmbVW/XtyhptazxzAjAh0fGqxA8B9z550eOjqVo3dLuyodyRhgfbVBW9C9LJ6/uO6HDLds9s/bzP/mzv0qbr7tyWpAdeyL6wdfvgfx78fkPX3gl7Xngzq70fZ/J+7qXAAECBAgQIECAQDMB4be9QYAAAQIECBAgcIxADjvXrlmVUk9P2nH7jVNV37U3X3H93VP/jKrfaJvx0GPPpeg1HuF5t65WAXhUTEcLlAidDx4ameoJPnSkcRV2s3earPCerN6O9iNRER4/a1U1Xj9WvEv0I8+V5PH5qev6q/E6Cb7zeLkNSrRRifB7rq7oxb3x+rvTv/7T49VaxpW//Gh34GW021m3drXwe64Wy3MIECBAgAABAgTaCgi/2xK5gQABAgQIECCwNAWi1cV7H3yY1p991lQQWi8RweizL71WtbzIYem7H3yYNt36rWkBajcEIwD/7eDRNDI2ccxwucVJ3/LeyOpnFFjXDpYrxnt7etKh4bEqTD+eK1dvj09MpKEjow1bobQb96TVfWn1iuXtbuvq57mdzas/+m5VuR/ru+Xru6u+3o0OPM0Pz38tEPtg86aNTfdLV1/WYAQIECBAgAABAgTaCAi/bRECBAgQIECAAIGuCkwFqM8/XIWm3byiB/jHB4ePCcBza5EImyO43n9wuOUBls3eKYff8XmnLVMajZWrznVA6gAAFgBJREFUyFM6vvB77aq+FC1X5vLKB17mqv/LL72gOsgyrlaHp+bK8OgTH2O8vu/t9OD2r1Xtb1wECBAgQIAAAQIE5lNA+D2f+p5NgAABAgQIEFigAhFo7tz9VFX5e82XL51RNW8cgBgHIbaqFD6RaUcAHhXZUZkdV24RkluLzKRPd+17rBxYVrUsOXjoaNVCJQ7LjErymQbptc+P8aMP+MjoeDpw6Pd9wFvNf66D7wisdz/2XNr78r60dvXKFO1NIriOQyyj7U30fW91bblr12RA/v3t1f/G731z15Pp5k0bZ/Uw1BPZQ36XAAECBAgQIEBgaQgIv5fGOpslAQIECBAgQKBjgVzJu33rTVXldoTZEZC2q/6N9idR9Rv9vm/7i6u7duBlsxf/5NOjKSq1I7SOwyGjP3a+ou1ItAzptF93s8B8pkF6s/s77R8+H8F3HGYa16Pf2VqtWfw7+rfXh95REX7ZJedNW9fYF3fc+2iKXuF77r9jqt93/HxwcGjW90DHm9qNBAgQIECAAAECS1JA+L0kl92kCRAgQIAAAQLNBR5/Zm8VZuYDK3Pf53aHWEZIHuHoxeedM2e8Y+MTaf+B4RT/W3/lSu7fDA5PC8Zr76vtFR4BeqtxImw/OjredG4RcMdBl80qxScD+cnK8mipUn/NR4/vWLP4wqL2i40Iuauf/a6SO94z93GPnt4RjNdfcX+E4C89+TcOvJyz3e9BBAgQIECAAAEC7QSE3+2EfE6AAAECBAgQWGICjcLPCMA33nBPFYjniuC474cvvloFnvmwy/mgGjw8mgabHEy5fFlPOmXtQBo8PJKiLUrtlft7d9Lbe3Kc/oaHV0aAftq6gapVSrsDMvM4uUVLfp+T1/SnVQPL5pQv2pNEy5IIuWv7c2+999Gq4n/77TdOe5+4/4tfOLNa69gPUSVee+3c9WT1pclstbuZUxwPI0CAAAECBAgQKEJA+F3EMpoEAQIECBAgQKB7Ao2C7hg9ws04APG15x+uHpZ7O893+B3v0ioAzyH30JHRNHRkMgBvFkK3UmwUluef1YfZrcaJsDyC9Lg++XQknbpuoHqfbl6xhtGGJkLsq6/a0PDLiQi+4/Nc4Z/XtFEgXv9uEZDHXwJs3rRx6qO/fWZv2vvTN9NrP/5eN6diLAIECBAgQIAAAQLHLSD8Pm46v0iAAAECBAgQKFcgB921wXYOxV984tvpnLPPmjb5+Kxqe/HUd+YNJQ7AjNYkja7akHp8YqLqBx7Bc6s2Jo3GieA6qrR7e1I6MDRShdgzCb5rx4z+4NHju9tXtK2JIPqyDedXQ1eHjz6y7ZhK7T/60y3Tqr6jT3f0+45AvF31doy55c6H0oM7bk0Xnrs+/UcccvnQE9VhmbWBeLfnZjwCBAgQIECAAAECMxEQfs9Ey70ECBAgQIAAgSUikIPQ+j7fEZg2Cr8jbI3QNfpBR1/o+braBeCnnzSQent70q9+e6Rhf+9O3zv6e69ZuTwdGDo6VU3e6e/GfTmMX76sdya/1vbevS/vqyr0o2VJDqHj32vXrDqmjckV199dHXKZv8jY+dAT6d/feb/lwaa1LxBfeOzc/VT1FwBxzffat8VxAwECBAgQIECAwJITEH4vuSU3YQIECBAgQIBAZwK5uvei885Jf37VhvSPL+9Lg58eOqYqOFd9b77uyip43XP/HVNVx509qbt3jY5NpF8fOJImas7AzBXb+UkT4xPpwKGRafd0+haTB1curw6tXNHfm+KgzHhmp9dsBd+xDlG5ffN1V077AiIOtYx1q21vEu+ae7bH2kY7m6pfd4MK8Xbzii9K5rPne7v38zkBAgQIECBAgMDSFRB+L921N3MCBAgQIECAQFuBXN07ODiULr/0grZV3VH9HSF5pyFqjP/+//xf18PyCKM/PjhcVXc36ssdldsDfb1p/8HhGQXg0apk5cCy9PHBo9XY/ct7q9YncaBm7ifeCnW2gu94ZvTqjqu2ZUkE0xu/+o2m7UiiajuqxaMyfPO1VxzTGqXtBnEDAQIECBAgQIAAgQUsIPxewIvj1QgQIECAAAECi1Egqo8/d8ZpVQV4qytC12dfeCU9sOPWtP4LZ3Z9qqNj49VBmBFY1x52mR9UH2S3e4Fm93d66OVsBt8Rcn/pK7dN6+Ed84mq79f3vZ0WwqGk7Xx9ToAAAQIECBAgQKDbAsLvbosajwABAgQIECCwxAWimnvL13dXrVKuvvKS9LN33k/XXLVhmkoOZTutED8R0mhLcuToWMMhOgnAa1umxIGate1U8qBxT1SAj401bqfSt6wnnbpust/4bFzvfvBh2nTrt9J//cszU8Pn/t9RCX7RueubPlbbktlYEWMSIECAAAECBAgsBAHh90JYBe9AgAABAgQILHmBCCCjZUj0Tp7PAyO7tRA5eF3/h3+Qohd4bfh97S33VY95+gc75qRXdFSA5zYljeYXbUxOWtVXtUCp790d1doRag+PjKeDh0ba8uR2KhG4R1uUuPr7etMpa/pnLfjOLxUHWMYXDrF/op93fMHQ7hDKWKc4rPTB7V9rGZC3nfg83CC0nwd0jyRAgAABAgQILDIB4fciWzCvS4AAAQIECJQnEH2Xv7nryfTLj/anCIvnKhSeTclWld05GI+2KBeeuz7tfuy5yb7Tq1c27U19ou86Pj7ZA3ykycGU0bv75DWTvbsPD09WiXfazqT+3XI1eQTgedwTff9Ofj/3Z4/9FG1nIviur7ivHScfkHnNly+tWqPcvGlj2rxpYyePmvd7Yr/EPOsP8Zz3F/MCBAgQIECAAAECC0pA+L2glsPLECBAgAABAktNIKq9o/I2el7fv+2W9JNX3kp7f/pm1aP58589fVFyRKga82hVwZ4PxowJXnzu+qo9yhtv/byqWH71R9+dlblHAP6bT4+moyPjDV2XL5us8o7+4FHpnf9/JwdZ1g+4oj/C9IE0S11OWu6LX3y0P33+jNNa3hNV0395167qoMtoixL/3rnryTT46aH06P13zElF/ols7lyx/trzD5/IMH6XAAECBAgQIECgcAHhd+ELbHoECBAgQIDAwhTIfbGj2ru+NUUOhksP9uJgzMs3nD8tJN9676NVcLv99htnbeGib/eh31V31z8kV3v39vSkT4aiV3jjoLzdy61d1VcdtDnfVw61t//1DdO+UIiq6a07f1D5x4Gj+YovHy675LxZ+fKhmxbx38/GG+5JTz+yLV183jndHNpYBAgQIECAAAECBQkIvwtaTFMhQIAAAQIEFodArvaONh+NKrzf2Pd2ihD41ecfblvBuzhm3PlbRruUqD6e7XYWB4ZGqgrv+iu3LIlDLTvt833MGAsk+I73anXoZQTju/f8Q/rFrz6uqr8X27Xlrl3Vfx+xV6LaPa4IxeNni/WvJhbbGnhfAgQIECBAgMBCFxB+L/QV8n4ECBAgQIBAMQK11d7RWznam7z64+8d02IiQr33Pvgw/ds//10xc+9kIrkH9Z4H7pyTwxcHD4+mwZpDLHPwHYdjjk9MVG1PxsYm0oFDIynC8E6uhVLxXfuutW1Q3v3gw3TO2WdNm0oclNmuP3gnc5/te3JP8xxyx5ckg0OHpz222RdKs/1uxidAgAABAgQIEFiYAsLvhbku3ooAAQIECBAoUCCHdw9su6WqTL32lvvS5ZdeMNX2ozYcj8MgL9tw/qJUiGrjuFodtlg7sah0jwMXX3/zP9P2rTd1/HvdwMkB+LpVfWmgrzfFIZVj479Puk9e3Zf6lvem/QeH2wbgJ63uS6tXzF+rk2hZEo7RQz16edcfXhnB9x337UnPPLJtWmV0/T7shutsjBHze++//7ea27o1q6pHRL/8CO4v/OMvVv9W9T0b8sYkQIAAAQIECCxeAeH34l07b06AAAECBAgscoFc6RxhXoTh0Yf5c2eclnbcfuOiDb5jSaJ1yUwOrgyHZ196LW2+9op5aVcRVd2Hh0fTJ0MjDXdUbUV4bTBee/PJa/rTqoFl874js320Amn05UN8Hvvs6e9vrwLk3IJntg4ZnW2Q2tYns/0s4xMgQIAAAQIECCw+AeH34lszb0yAAAECBAgUJBDB7xtv/bzqWbz+C2dWgWX87PG//0lVCR3X+rPPSrlafKFPPSpzo195zCX+f32VcX7/qA6PthX11cnzNb84ADMOwmx2NQvAe3pS+sya/rSif/6D7/yXA3GIZasDQ+OLiQjBo0VIXHNdbd/NNY59FNXfpR8O200zYxEgQIAAAQIElpKA8Hsprba5EiBAgAABAgteIIfHg4NDVUuUi85dX7WyaBUkL6RJxSGKcUVVcfSSjjYUjQ5TjPA15hUHfuYWFvM9jwjADwwdbdreZOXAshQheLRGGR2bSBF8n37SirR8Wc98v3r1/KiCjquTwytjnarDIT97+oLxPx7EmMPGG+5JLz7x7WN6mR/PeH6HAAECBAgQIECgLAHhd1nraTYECBAgQIAAAQIECBAgQIAAAQIECBAgkFISftsGBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcgPC7uCU1IQIECBAgQIAAAQIECBAgQIAAAQIECBAQftsDBAgQIECAAAECBAgQIECAAAECBAgQIFCcwP8DCvJD4fpD2AwAAAAASUVORK5CYII=", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "px.scatter_3d(pca_df, x='pca_x', y='pca_y', z='pca_z', color=\"query\", text=\"word\", opacity=0.7, title=\"3d-PCA representation of word embeddings\")" ] }, { "cell_type": "markdown", "id": "7c76ab53-70dc-4324-97ca-358b4d962f5e", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Word embedding evaluation\n", "\n", "- There are two main types of evaluation:\n", " - intrisic evaluation: evaluate word embeddings without a downstream task\n", " - word similarity benchmarks\n", " - word analogy benchmarks\n", " - extrinsic evaluation: evaluate word embeddings on a downstream task" ] }, { "cell_type": "markdown", "id": "bc5e5ef0-9a9b-4952-9c74-26130634ae7b", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "#### Word Similarity Benchmarks\n", "- Word similarity benchmarks, such as WS353, contain word pairs and a human-given similarity score\n" ] }, { "cell_type": "code", "execution_count": 13, "id": "a006fbad-3740-40ea-b2e9-9a85c92ef32e", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Word 1Word 2Human (mean)
5computerinternet7.58
286seafoodfood8.34
127planetstar8.45
263profitwarning3.88
304environmentecology8.81
\n", "
" ], "text/plain": [ " Word 1 Word 2 Human (mean)\n", "5 computer internet 7.58\n", "286 seafood food 8.34\n", "127 planet star 8.45\n", "263 profit warning 3.88\n", "304 environment ecology 8.81" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ws353_df = pd.read_csv(datapath('wordsim353.tsv'), sep=\"\\t\", skiprows=1).rename(columns={\"# Word 1\": \"Word 1\"})\n", "ws353_df.sample(5)" ] }, { "cell_type": "markdown", "id": "8a2d8328-745e-4afe-b192-3b71846416ca", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "- To evaluate word embeddings, we need to do three steps:\n", "1. For each pair $(w_{i_{1}}, w_{i_{2}})$ we get the embeddings $(\\mathbf{e}_{w_{i_{1}}}, \\mathbf{e}_{w_{i_{2}}})$\n", "2. For each pair we compute the cosine similarity between its word embeddings $s_i = \\cos(\\mathbf{e}_{w_{i_{1}}}, \\mathbf{e}_{w_{i_{2}}})$\n", "3. We compute a correlation score ([Pearson's $r$](https://en.wikipedia.org/wiki/Pearson_correlation_coefficient) or [Spearman's $\\rho$](https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient)) between the human given scores $h_i$ and the cosine similarities $s_i$\n", " - the higher the score, the better!" ] }, { "cell_type": "markdown", "id": "2c939ac8-8388-4419-bf62-18a83602b318", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "##### Evaluating word similarity with gensim\n", "\n", "- gensim allows us to do everything with the [```evaluate_word_pairs```](https://radimrehurek.com/gensim/models/keyedvectors.html#gensim.models.keyedvectors.KeyedVectors.evaluate_word_pairs) function" ] }, { "cell_type": "code", "execution_count": 14, "id": "c827290d-3880-4919-b3f7-a87734155f92", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(PearsonRResult(statistic=0.6525349640723466, pvalue=3.3734155032900286e-44),\n", " SpearmanrResult(correlation=0.7000166486272194, pvalue=2.86866666051422e-53),\n", " 0.0)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "word_emb.evaluate_word_pairs(datapath('wordsim353.tsv'), case_insensitive=False)" ] }, { "cell_type": "markdown", "id": "0cdce175-12e1-4eaf-acac-1dfadc83ac1c", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "#### Word analogy benchmarks" ] }, { "cell_type": "markdown", "id": "36aa6616-4a20-4556-9eef-39f3726e435a", "metadata": {}, "source": [ "- When doing word analogy resolution with word embeddings, we want to solve equations such as\n", "\n", " *man : king = woman : x*\n", "\n", "- word2vec paper shows that word2vec embeddings can solve (some) of these equations by algebric operations:\n", "1. Get $\\mathbf{e}_x = \\mathbf{e}_{king} - \\mathbf{e}_{man} + \\mathbf{e}_{woman}$\n", "2. Check if $NN_{V}(\\mathbf{e}_x) = \\text{queen}$\n", " " ] }, { "cell_type": "markdown", "id": "fad14c49-be5f-43cb-bf7e-6b369e84158e", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "##### Evaluating word analogies with gensim\n", "- gensim provides us with a [```most_similar```]() function\n", "- It has several arguments, the most important are:\n", " - ```positive``` : list of words that should be summed together\n", " - ```negative``` : list of words that should be subtracted\n", "- In formulas, this function computes:\n", "$$ \\mathbf{e}_x = \\sum_{i \\in \\text{pos}} \\mathbf{e}_i - \\sum_{i \\in \\text{neg}} \\mathbf{e}_i $$\n", "- And then returns nearest neighbours of $\\mathbf{e}_x$" ] }, { "cell_type": "code", "execution_count": 15, "id": "18d28a9c-7e6d-460d-82ea-0e3c9d3df32b", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('queen', 0.7118192911148071), ('monarch', 0.6189674735069275), ('princess', 0.5902431011199951), ('crown_prince', 0.549946129322052), ('prince', 0.5377321243286133), ('kings', 0.5236843824386597), ('queens', 0.5181134343147278), ('sultan', 0.5098593235015869), ('monarchy', 0.5087411403656006), ('royal_palace', 0.5087166428565979)]\n", "[('Walkman', 0.581480860710144), ('MP3_player', 0.5763883590698242), ('MP3', 0.5520824193954468), ('Panasonic', 0.5468560457229614), ('Blu_ray_disc', 0.5435828566551208), ('JVC', 0.525976836681366), ('camcorder', 0.5257487297058105), ('Sony_PSP', 0.5226278305053711), ('PlayStation_Portable', 0.5171500444412231), ('Blu_ray', 0.5171388983726501)]\n" ] } ], "source": [ "print(word_emb.most_similar(positive=[\"king\", \"woman\"], negative=[\"man\"], restrict_vocab=100000))\n", "print(word_emb.most_similar(positive=[\"iPod\", \"Sony\"], negative=[\"Apple\"], restrict_vocab=100000))" ] }, { "cell_type": "code", "execution_count": 16, "id": "27d1d8b9-e943-4528-bf3d-ccf58da4867c", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ": capital-common-countries\n", "Athens Greece Baghdad Iraq\n", "Athens Greece Bangkok Thailand\n", "Athens Greece Beijing China\n", "Athens Greece Berlin Germany\n", "Athens Greece Bern Switzerland\n", "Athens Greece Cairo Egypt\n", "Athens Greece Canberra Australia\n", "Athens Greece Hanoi Vietnam\n", "Athens Greece Havana Cuba\n", "Athens Greece Helsinki Finland\n", "Athens Greece Islamabad Pakistan\n", "Athens Greece Kabul Afghanistan\n", "Athens Greece London England\n", "Athens Greece Madrid Spain\n", "\n" ] } ], "source": [ "f = open(datapath('questions-words.txt'))\n", "print(\"\".join(f.readlines()[:15]))\n", "f.close()" ] }, { "cell_type": "code", "execution_count": 17, "id": "faef7b21-d033-41f4-9f00-884d31ce68ca", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy 0.7401448525607863\n", "dict_keys(['section', 'correct', 'incorrect'])\n", "Correct [('ATHENS', 'GREECE', 'BANGKOK', 'THAILAND'), ('ATHENS', 'GREECE', 'BEIJING', 'CHINA'), ('ATHENS', 'GREECE', 'BERLIN', 'GERMANY'), ('ATHENS', 'GREECE', 'BERN', 'SWITZERLAND'), ('ATHENS', 'GREECE', 'CAIRO', 'EGYPT')]\n", "Incorrect [('ATHENS', 'GREECE', 'BAGHDAD', 'IRAQ'), ('ATHENS', 'GREECE', 'HANOI', 'VIETNAM'), ('ATHENS', 'GREECE', 'KABUL', 'AFGHANISTAN'), ('ATHENS', 'GREECE', 'LONDON', 'ENGLAND'), ('BAGHDAD', 'IRAQ', 'BERN', 'SWITZERLAND')]\n" ] } ], "source": [ "accuracy, results = word_emb.evaluate_word_analogies(datapath('questions-words.txt'))\n", "print(f\"Accuracy {accuracy}\")\n", "print(results[0].keys())\n", "print(f\"Correct {results[0]['correct'][:5]}\")\n", "print(f\"Incorrect {results[0]['incorrect'][:5]}\")" ] }, { "cell_type": "markdown", "id": "a157c61e-9753-43b2-b728-13bdeea08b90", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "### It's your turn! Go ahead with *Task 1.*\n", "\n", "![](data:image/png;base64,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) " ] }, { "cell_type": "markdown", "id": "33dcab8d-23ba-4da0-b870-cd25b24db593", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "#### Task 1 \n", "\n", "Implement instrisic evaluation using wordsim353 benchamark. For computing correlations (step 3) use [```spearmanr```](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.spearmanr.html) and [```pearsonr```](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html) from ```scipy.stats```" ] }, { "cell_type": "code", "execution_count": null, "id": "0bf06b41-aa29-4943-90de-b3d893180d19", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [], "source": [ "#TODO: implement WS353 evaluation benchmark in the three steps below.\n", "\n", "# Step 0: (re)load the data\n", "\n", "ws353_df = pd.read_csv(datapath('wordsim353.tsv'), sep=\"\\t\", skiprows=1).rename(columns={\"# Word 1\": \"Word 1\"})\n", "\n", "# Step 1: Get embeddings (use ws353_df defined above)\n", "\n", "# Step 2: Compute Cosine similarities\n", "\n", "\n", "# Step 3: Compute correlations\n" ] }, { "cell_type": "markdown", "id": "25134a35-3180-457b-bcf9-93268a6032ee", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Part 2 : Pretraining your own embeddings\n", "\n", "- Up to know we have used embeddings that someone else trained for us\n", "- What if you want to pretrain your own embeddings for you domain or task of interest?\n", "- The first thing we need is data!" ] }, { "cell_type": "code", "execution_count": 19, "id": "53f7d388-2c8e-48d5-a66d-fa001fa48cd3", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hundreds of people have been forced to vacate their homes in the Southern Highlands of New South Wales as strong winds today pushed a huge bushfire towards the town of Hill Top. A new blaze near Goulburn, south-west of Sydney, has forced the closure of the Hume Highway. At about 4:00pm AEDT, a marked deterioration in the weather as a storm cell moved east across the Blue Mountains forced authorities to make a decision to evacuate people from homes in outlying streets at Hill Top in the New South Wales southern highlands. An estimated 500 residents have left their homes for nearby Mittagong. The New South Wales Rural Fire Service says the weather conditions which caused the fire to burn in a finger formation have now eased and about 60 fire units in and around Hill Top are optimistic of defending all properties. As more than 100 blazes burn on New Year's Eve in New South Wales, fire crews have been called to new fire at Gunning, south of Goulburn. While few details are available at this stage, fire authorities says it has closed the Hume Highway in both directions. Meanwhile, a new fire in Sydney's west is no longer threatening properties in the Cranebrook area. Rain has fallen in some parts of the Illawarra, Sydney, the Hunter Valley and the north coast. But the Bureau of Meteorology's Claire Richards says the rain has done little to ease any of the hundred fires still burning across the state. \"The falls have been quite isolated in those areas and generally the falls have been less than about five millimetres,\" she said. \"In some places really not significant at all, less than a millimetre, so there hasn't been much relief as far as rain is concerned. \"In fact, they've probably hampered the efforts of the firefighters more because of the wind gusts that are associated with those thunderstorms.\" \n", " ['hundreds', 'of', 'people', 'have', 'been', 'forced', 'to', 'vacate', 'their', 'homes', 'in', 'the', 'southern', 'highlands', 'of', 'new', 'south', 'wales', 'as', 'strong', 'winds', 'today', 'pushed', 'huge', 'bushfire', 'towards', 'the', 'town', 'of', 'hill', 'top', 'new', 'blaze', 'near', 'goulburn', 'south', 'west', 'of', 'sydney', 'has', 'forced', 'the', 'closure', 'of', 'the', 'hume', 'highway', 'at', 'about', 'pm', 'aedt', 'marked', 'deterioration', 'in', 'the', 'weather', 'as', 'storm', 'cell', 'moved', 'east', 'across', 'the', 'blue', 'mountains', 'forced', 'authorities', 'to', 'make', 'decision', 'to', 'evacuate', 'people', 'from', 'homes', 'in', 'outlying', 'streets', 'at', 'hill', 'top', 'in', 'the', 'new', 'south', 'wales', 'southern', 'highlands', 'an', 'estimated', 'residents', 'have', 'left', 'their', 'homes', 'for', 'nearby', 'mittagong', 'the', 'new', 'south', 'wales', 'rural', 'fire', 'service', 'says', 'the', 'weather', 'conditions', 'which', 'caused', 'the', 'fire', 'to', 'burn', 'in', 'finger', 'formation', 'have', 'now', 'eased', 'and', 'about', 'fire', 'units', 'in', 'and', 'around', 'hill', 'top', 'are', 'optimistic', 'of', 'defending', 'all', 'properties', 'as', 'more', 'than', 'blazes', 'burn', 'on', 'new', 'year', 'eve', 'in', 'new', 'south', 'wales', 'fire', 'crews', 'have', 'been', 'called', 'to', 'new', 'fire', 'at', 'gunning', 'south', 'of', 'goulburn', 'while', 'few', 'details', 'are', 'available', 'at', 'this', 'stage', 'fire', 'authorities', 'says', 'it', 'has', 'closed', 'the', 'hume', 'highway', 'in', 'both', 'directions', 'meanwhile', 'new', 'fire', 'in', 'sydney', 'west', 'is', 'no', 'longer', 'threatening', 'properties', 'in', 'the', 'cranebrook', 'area', 'rain', 'has', 'fallen', 'in', 'some', 'parts', 'of', 'the', 'illawarra', 'sydney', 'the', 'hunter', 'valley', 'and', 'the', 'north', 'coast', 'but', 'the', 'bureau', 'of', 'meteorology', 'claire', 'richards', 'says', 'the', 'rain', 'has', 'done', 'little', 'to', 'ease', 'any', 'of', 'the', 'hundred', 'fires', 'still', 'burning', 'across', 'the', 'state', 'the', 'falls', 'have', 'been', 'quite', 'isolated', 'in', 'those', 'areas', 'and', 'generally', 'the', 'falls', 'have', 'been', 'less', 'than', 'about', 'five', 'millimetres', 'she', 'said', 'in', 'some', 'places', 'really', 'not', 'significant', 'at', 'all', 'less', 'than', 'millimetre', 'so', 'there', 'hasn', 'been', 'much', 'relief', 'as', 'far', 'as', 'rain', 'is', 'concerned', 'in', 'fact', 'they', 've', 'probably', 'hampered', 'the', 'efforts', 'of', 'the', 'firefighters', 'more', 'because', 'of', 'the', 'wind', 'gusts', 'that', 'are', 'associated', 'with', 'those', 'thunderstorms']\n" ] } ], "source": [ "corpus = open(datapath('lee_background.cor'))\n", "sample = corpus.readline()\n", "print(sample, utils.simple_preprocess(sample))" ] }, { "cell_type": "code", "execution_count": 20, "id": "7d120bd6-c8b8-4297-86f5-479403eee326", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [], "source": [ "class MyCorpus:\n", " \"\"\"An iterator that yields sentences (lists of str).\"\"\"\n", "\n", " def __iter__(self):\n", " corpus_path = datapath('lee_background.cor')\n", " for line in open(corpus_path):\n", " # assume there's one document per line, tokens separated by whitespace\n", " yield utils.simple_preprocess(line)" ] }, { "cell_type": "markdown", "id": "e4fb828c-ce09-4cc2-af29-247ea5564ae9", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Let's pretrain our own embeddings\n", "\n", "- We will use the [```Word2Vec```](https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec) class from ```gensim.models```\n", "- Let's look at the most important parameters" ] }, { "cell_type": "code", "execution_count": 21, "id": "61bd239c-d7cb-4720-a068-65b13a5a154d", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Word2Vec\n" ] } ], "source": [ "model = Word2Vec(sentences=MyCorpus(), \n", " min_count=3, # ignore all words with freq < min_count\n", " vector_size=200, # dimensionality of the vectors\n", " sg=1, # 1 for skip-gram, 0 for CBOW\n", " epochs=10, # num_epochs\n", " alpha=0.025, # initial learning rate\n", " batch_words=10000, # batch size\n", " window=5, # window size for context words\n", " negative=10, # number of negatives for negative sampling\n", " ns_exponent=0.75 # exponent of the sampling distribution\n", " )\n", "print(model)\n", "word_emb_lee = model.wv # wv attribute contains word embeddings" ] }, { "cell_type": "markdown", "id": "e912f2dd-6f65-4b0b-9637-1b1dc9aa5181", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Saving and loading your embeddings\n", "\n", "- Saving or loading the full model (i.e. embeddings + hyperparameters)\n", " - This allows to resume training" ] }, { "cell_type": "code", "execution_count": 22, "id": "98ff7d27-7a4c-4ead-b3a7-8fc026b798b2", "metadata": { "tags": [] }, "outputs": [], "source": [ "save_path = \"word2vee_lee.model\"\n", "model.save(save_path)\n", "model_reloaded = Word2Vec.load(save_path)" ] }, { "cell_type": "markdown", "id": "b9c71077-31ea-4ef4-9543-ee694c663ce3", "metadata": {}, "source": [ "- Saving or loading **only** word embeddings\n", " - This does **NOT** allow to resume training" ] }, { "cell_type": "code", "execution_count": 23, "id": "31ece60e-ea65-4198-9334-e5e5e663fbbb", "metadata": { "tags": [] }, "outputs": [], "source": [ "save_path = \"word2vee_lee.emb\"\n", "model.wv.save(save_path)\n", "emb_reloaded = KeyedVectors.load(save_path)" ] }, { "cell_type": "markdown", "id": "c5e9f540-9f77-4f62-b89e-ec4356251833", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Part 3 : Extrinsic evaluation of word embeddings\n", "\n", "- Up to know we have evaluated words embeddings intrisically\n", "- Let's try to see how they fare in a real world task\n", "- We will use them to solve a spam classification task" ] }, { "cell_type": "markdown", "id": "3d94b00d", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- Please now run all cells below!\n", " - You will need them for **Task 2**\n", "- Remember to put ```SMSSpamCollection.tsv``` in the same folder as this notebook\n", " - Or upload it if you're using Colab" ] }, { "cell_type": "code", "execution_count": 24, "id": "6f649677-9e95-4de2-b75f-84bb3b28eb55", "metadata": { "tags": [] }, "outputs": [], "source": [ "spam_df = pd.read_csv(\"SMSSpamCollection.tsv\", sep=\"\\t\", header=None, names=[\"label\", \"text\"])" ] }, { "cell_type": "code", "execution_count": 25, "id": "e787e4f9-5f4c-4943-8474-557521805313", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labeltext
00Go until jurong point, crazy.. Available only ...
10Ok lar... Joking wif u oni...
21Free entry in 2 a wkly comp to win FA Cup fina...
30U dun say so early hor... U c already then say...
40Nah I don't think he goes to usf, he lives aro...
.........
55671This is the 2nd time we have tried 2 contact u...
55680Will ü b going to esplanade fr home?
55690Pity, * was in mood for that. So...any other s...
55700The guy did some bitching but I acted like i'd...
55710Rofl. Its true to its name
\n", "

5572 rows × 2 columns

\n", "
" ], "text/plain": [ " label text\n", "0 0 Go until jurong point, crazy.. Available only ...\n", "1 0 Ok lar... Joking wif u oni...\n", "2 1 Free entry in 2 a wkly comp to win FA Cup fina...\n", "3 0 U dun say so early hor... U c already then say...\n", "4 0 Nah I don't think he goes to usf, he lives aro...\n", "... ... ...\n", "5567 1 This is the 2nd time we have tried 2 contact u...\n", "5568 0 Will ü b going to esplanade fr home?\n", "5569 0 Pity, * was in mood for that. So...any other s...\n", "5570 0 The guy did some bitching but I acted like i'd...\n", "5571 0 Rofl. Its true to its name\n", "\n", "[5572 rows x 2 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's do one-hot encoding of the labels\n", "label_encoder = LabelEncoder()\n", "spam_df[\"label\"] = label_encoder.fit_transform(spam_df[\"label\"])\n", "spam_df" ] }, { "cell_type": "markdown", "id": "c9013ea4-1faf-4cc4-a194-b67ed8c1bb1c", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Building a classification model \n", "- We want to use a standard ML approach\n", "- We will first preprocess the text:\n", " - lowercasing\n", " - tokenization\n", " - stopword removal\n", "- After this, we will create a sentence embedding of each SMS as the average of word embeddings in that sentence" ] }, { "cell_type": "code", "execution_count": 26, "id": "2a89d9bf-92e6-4d0d-88d9-6640bade38f7", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[nltk_data] Downloading package stopwords to\n", "[nltk_data] C:\\Users\\Tommaso\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package stopwords is already up-to-date!\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nltk.download('stopwords')" ] }, { "cell_type": "code", "execution_count": 27, "id": "b564425d-6944-4591-ae9c-6038040f62b2", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labeltextpreprocessed_text
00Go until jurong point, crazy.. Available only ...[go, jurong, point, crazy, available, bugis, g...
10Ok lar... Joking wif u oni...[ok, lar, joking, wif, oni]
21Free entry in 2 a wkly comp to win FA Cup fina...[free, entry, wkly, comp, win, fa, cup, final,...
30U dun say so early hor... U c already then say...[dun, say, early, hor, already, say]
40Nah I don't think he goes to usf, he lives aro...[nah, think, goes, usf, lives, around, though]
............
55671This is the 2nd time we have tried 2 contact u...[nd, time, tried, contact, pound, prize, claim...
55680Will ü b going to esplanade fr home?[going, esplanade, fr, home]
55690Pity, * was in mood for that. So...any other s...[pity, mood, suggestions]
55700The guy did some bitching but I acted like i'd...[guy, bitching, acted, like, interested, buyin...
55710Rofl. Its true to its name[rofl, true, name]
\n", "

5572 rows × 3 columns

\n", "
" ], "text/plain": [ " label text \\\n", "0 0 Go until jurong point, crazy.. Available only ... \n", "1 0 Ok lar... Joking wif u oni... \n", "2 1 Free entry in 2 a wkly comp to win FA Cup fina... \n", "3 0 U dun say so early hor... U c already then say... \n", "4 0 Nah I don't think he goes to usf, he lives aro... \n", "... ... ... \n", "5567 1 This is the 2nd time we have tried 2 contact u... \n", "5568 0 Will ü b going to esplanade fr home? \n", "5569 0 Pity, * was in mood for that. So...any other s... \n", "5570 0 The guy did some bitching but I acted like i'd... \n", "5571 0 Rofl. Its true to its name \n", "\n", " preprocessed_text \n", "0 [go, jurong, point, crazy, available, bugis, g... \n", "1 [ok, lar, joking, wif, oni] \n", "2 [free, entry, wkly, comp, win, fa, cup, final,... \n", "3 [dun, say, early, hor, already, say] \n", "4 [nah, think, goes, usf, lives, around, though] \n", "... ... \n", "5567 [nd, time, tried, contact, pound, prize, claim... \n", "5568 [going, esplanade, fr, home] \n", "5569 [pity, mood, suggestions] \n", "5570 [guy, bitching, acted, like, interested, buyin... \n", "5571 [rofl, true, name] \n", "\n", "[5572 rows x 3 columns]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# lowercase, tokenize and stopword removal\n", "stop_words = set(stopwords.words('english'))\n", "spam_df[\"preprocessed_text\"] = spam_df[\"text\"].apply(lambda sentence: [word for word in utils.simple_preprocess(sentence) if word not in stop_words])\n", "spam_df" ] }, { "cell_type": "code", "execution_count": 28, "id": "eeb313e3-fbe0-4026-b423-92bd1a3a5934", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Tommaso\\anaconda3\\envs\\pd_nlp\\lib\\site-packages\\numpy\\core\\fromnumeric.py:3432: RuntimeWarning:\n", "\n", "Mean of empty slice.\n", "\n" ] } ], "source": [ "# Create sentence embeddings\n", "spam_df[\"sent_emb\"] = spam_df[\"preprocessed_text\"].apply(lambda tok_sentence: np.mean([word_emb[word] for word in tok_sentence if word in word_emb.key_to_index], axis=0))" ] }, { "cell_type": "code", "execution_count": 29, "id": "0830e39a-89bc-4069-a9e8-8ff3e5ec18c1", "metadata": { "tags": [] }, "outputs": [], "source": [ "spam_df = spam_df.dropna()" ] }, { "cell_type": "code", "execution_count": 30, "id": "a0db16f0-5cb1-4394-becc-e5ae9904c02f", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [], "source": [ "all_features = spam_df.drop(columns=\"label\")\n", "features_train, features_test, y_train, y_test = train_test_split(all_features , spam_df[\"label\"], test_size=0.2, random_state=2023, stratify=spam_df[\"label\"])" ] }, { "cell_type": "code", "execution_count": 31, "id": "fecd00c5-87c6-4538-9b1b-63bbfb15c151", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(4444, 3) (1111, 3)\n" ] } ], "source": [ "print(features_train.shape, features_test.shape)" ] }, { "cell_type": "markdown", "id": "2cc6c573-7cdb-4458-946d-82c9afcde48e", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Logistic regression classifier on top of these sentence embeddings" ] }, { "cell_type": "code", "execution_count": 32, "id": "0f077d0c-f175-4999-b1c8-34f0766b5b7e", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
LogisticRegressionCV(cv=5, max_iter=1000)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegressionCV(cv=5, max_iter=1000)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "logreg_model = LogisticRegressionCV(Cs=10, cv=5, penalty='l2', max_iter=1000)\n", "sent_emb_train = np.stack(features_train[\"sent_emb\"]) # shape: train_size x 300\n", "logreg_model.fit(sent_emb_train, y_train) # 5-fold GridSearchCV followed by training of full model " ] }, { "cell_type": "code", "execution_count": 33, "id": "4afb2d49-3d55-48fc-a955-d7f3b22d6394", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy of the model 0.9567956795679567\n" ] } ], "source": [ "sent_emb_test = np.stack(features_test[\"sent_emb\"])\n", "print(f\"Accuracy of the model {logreg_model.score(sent_emb_test, y_test)}\")" ] }, { "cell_type": "code", "execution_count": 34, "id": "4f12baaa-a080-4cab-a6ce-d1bc0e92681c", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " ham 0.97 0.98 0.98 962\n", " spam 0.87 0.79 0.83 149\n", "\n", " accuracy 0.96 1111\n", " macro avg 0.92 0.89 0.90 1111\n", "weighted avg 0.96 0.96 0.96 1111\n", "\n" ] } ], "source": [ "print(classification_report(y_test, logreg_model.predict(sent_emb_test), target_names=label_encoder.classes_))" ] }, { "cell_type": "markdown", "id": "e7f76cc0-7d97-44cc-9101-0f36191f4e49", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Sneak-peek: using gensim embeddings in PyTorch" ] }, { "cell_type": "code", "execution_count": 35, "id": "e4d5b376-17dd-49a8-b598-68dbe320aacd", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "tensor([[-7.6660e-02, 1.1035e-01, 3.5352e-01, -7.9102e-02, -5.0049e-02,\n", " -2.9688e-01, 1.0938e-01, -3.5938e-01, -8.7402e-02, -7.0312e-02,\n", " 2.0801e-01, -2.4512e-01, -5.5664e-02, 2.4219e-01, 2.3560e-02,\n", " -8.6670e-03, 2.6855e-02, 4.0234e-01, 1.7480e-01, -1.6602e-02,\n", " -2.0410e-01, 5.0000e-01, -8.9844e-02, -1.4355e-01, 5.5420e-02,\n", " 9.0820e-02, 1.1426e-01, 1.5430e-01, 1.3477e-01, 2.2656e-01,\n", " 4.4189e-02, 3.7109e-02, -1.1621e-01, -1.1328e-01, -1.6479e-02,\n", " -1.2695e-01, 2.9883e-01, -1.2598e-01, 1.0303e-01, 3.1641e-01,\n", " 1.2665e-03, -8.8379e-02, 1.2695e-01, 1.5820e-01, -7.1777e-02,\n", " -2.1094e-01, 3.1641e-01, -2.0801e-01, 9.6893e-04, 3.2422e-01,\n", " 7.1289e-02, 7.1289e-02, -9.2285e-02, -2.2705e-02, 9.5703e-02,\n", " -2.9883e-01, -6.5918e-02, -7.0801e-02, -7.4219e-02, -2.3535e-01,\n", " -2.8320e-01, -2.0215e-01, -1.6211e-01, 2.2070e-01, -2.3682e-02,\n", " -1.0645e-01, 1.9653e-02, -5.9082e-02, 2.3730e-01, 2.9785e-02,\n", " 2.8711e-01, 1.0889e-01, -1.9141e-01, -5.2246e-02, 1.4746e-01,\n", " 2.3730e-01, 4.1016e-02, -5.9326e-02, 2.0508e-01, -1.5430e-01,\n", " -2.2461e-01, 3.8330e-02, -8.1055e-02, 2.1387e-01, -1.7944e-02,\n", " -1.9043e-01, -1.2402e-01, 2.7539e-01, 1.0681e-02, -6.2500e-02,\n", " 8.5449e-02, -3.0859e-01, 3.6621e-02, 6.9336e-02, 1.3184e-01,\n", " 7.4219e-02, 1.6016e-01, -5.9326e-02, 1.2634e-02, 2.6758e-01,\n", " -3.5706e-03, 1.0303e-01, 2.9297e-01, 1.1816e-01, 2.0117e-01,\n", " 4.8047e-01, 2.1680e-01, -3.2422e-01, -1.7188e-01, -1.6016e-01,\n", " 1.4746e-01, -6.4392e-03, 2.0264e-02, -1.0791e-01, 9.9121e-02,\n", " 2.7734e-01, -4.3945e-02, 2.3438e-01, -2.9175e-02, -1.3574e-01,\n", " -5.1514e-02, -3.0664e-01, 2.4048e-02, -5.4688e-02, -1.9727e-01,\n", " -1.2695e-01, -3.4375e-01, -1.0742e-02, -1.7285e-01, 4.0771e-02,\n", " 2.7588e-02, -3.2227e-01, -1.4258e-01, -1.6504e-01, -3.8452e-03,\n", " -1.0889e-01, -2.4707e-01, 1.5430e-01, -1.1475e-02, -3.2501e-03,\n", " -2.2339e-02, -1.1035e-01, 3.4961e-01, -5.8105e-02, 1.7773e-01,\n", " 3.1055e-01, 1.8066e-01, -6.1340e-03, 9.1553e-03, -3.2812e-01,\n", " 1.7480e-01, 2.2266e-01, -2.7344e-01, -1.6602e-01, -2.8711e-01,\n", " 2.5977e-01, -5.8350e-02, -3.7354e-02, -9.0332e-02, -8.3008e-02,\n", " -6.2500e-02, 4.1260e-02, 8.4839e-03, -5.8105e-02, 1.0681e-02,\n", " -4.8218e-03, 1.1182e-01, -3.0078e-01, -9.2773e-02, -6.4453e-02,\n", " -9.5215e-02, 2.8320e-01, -1.4453e-01, -1.6406e-01, 1.3574e-01,\n", " -4.3945e-02, 1.7188e-01, -2.1606e-02, -8.1055e-02, 8.8867e-02,\n", " 1.3281e-01, -1.5137e-02, -2.3242e-01, 1.8555e-02, 4.3945e-02,\n", " 3.7500e-01, 7.6172e-02, -9.7656e-02, 1.0681e-03, 1.3672e-01,\n", " 2.5000e-01, -6.1768e-02, 6.2012e-02, 1.6309e-01, -1.9434e-01,\n", " 7.9590e-02, 2.2461e-01, 1.8555e-01, -2.5195e-01, -9.5215e-02,\n", " -2.0508e-01, -1.3184e-01, -5.0293e-02, -3.0664e-01, 5.5176e-02,\n", " -5.7812e-01, 4.9561e-02, -6.7383e-02, -2.1777e-01, -2.1851e-02,\n", " -1.3574e-01, 1.1182e-01, 6.7383e-02, 1.7871e-01, -2.3828e-01,\n", " 1.3184e-01, 9.0942e-03, -2.5024e-03, -3.2812e-01, -7.0312e-02,\n", " -1.1719e-01, -2.7734e-01, -4.1809e-03, -1.0352e-01, -1.6968e-02,\n", " 1.4648e-01, -2.2705e-02, 2.4292e-02, 1.2500e-01, -2.3438e-02,\n", " 9.7656e-02, 2.2827e-02, -1.1572e-01, 5.8350e-02, 1.7969e-01,\n", " -7.9346e-03, 1.2817e-02, -2.2363e-01, 1.0254e-01, -2.2363e-01,\n", " 5.2979e-02, -2.3926e-01, 1.5137e-01, 7.9102e-02, -4.7363e-02,\n", " 7.1411e-03, -2.7734e-01, -1.0938e-01, -4.1211e-01, 5.7373e-02,\n", " 2.0117e-01, 8.4961e-02, 1.5918e-01, 2.2949e-01, 2.5391e-01,\n", " 1.3867e-01, 2.7100e-02, -2.1875e-01, -2.3828e-01, 2.3535e-01,\n", " 5.8594e-02, -1.3770e-01, 1.1670e-01, 1.7188e-01, -5.0049e-03,\n", " 2.7344e-01, -2.9492e-01, 1.6406e-01, 1.0071e-02, 1.5039e-01,\n", " -3.3398e-01, 1.3965e-01, -1.5234e-01, -1.3672e-01, 1.8652e-01,\n", " -3.1836e-01, -4.3213e-02, -1.2207e-01, 1.9824e-01, -1.1328e-01,\n", " -9.2285e-02, 5.9814e-02, 9.0332e-02, 9.8267e-03, -1.2793e-01,\n", " -2.3828e-01, -1.7188e-01, 1.3281e-01, 1.2158e-01, 1.4160e-01,\n", " -1.3281e-01, -1.1621e-01, -2.2949e-02, -1.1670e-01, 2.1289e-01,\n", " 3.7891e-01, 2.5391e-01, 6.2500e-02, -1.8359e-01, 2.6562e-01],\n", " [-2.8906e-01, -8.6426e-02, 2.3145e-01, 3.6377e-02, 4.7363e-02,\n", " -5.6885e-02, 9.4727e-02, -9.2773e-02, -1.7944e-02, 1.8848e-01,\n", " 4.0039e-02, -2.6245e-02, 2.4902e-01, 7.2754e-02, 2.5513e-02,\n", " 3.8818e-02, 1.3770e-01, 4.2383e-01, 2.6953e-01, 1.0437e-02,\n", " -1.3379e-01, 4.7461e-01, -2.5000e-01, -1.0547e-01, -1.0156e-01,\n", " -1.9238e-01, -8.6914e-02, 2.5586e-01, 1.0840e-01, 4.8096e-02,\n", " -6.1035e-03, 2.8801e-04, -1.6406e-01, -2.9907e-02, -2.3071e-02,\n", " -2.3926e-01, 1.5918e-01, -1.0986e-01, 1.3184e-01, 9.9609e-02,\n", " 1.4551e-01, -9.4727e-02, 1.1035e-01, 1.2305e-01, 5.1025e-02,\n", " -3.4766e-01, 2.8320e-01, -1.8750e-01, 7.5195e-02, 4.5703e-01,\n", " 2.2754e-01, 2.1387e-01, -2.8125e-01, -1.3965e-01, 8.4473e-02,\n", " -2.5391e-01, -1.6602e-01, -2.5781e-01, -2.4414e-02, -2.2070e-01,\n", " -1.6016e-01, 5.3955e-02, -2.4414e-01, -1.8188e-02, 1.6724e-02,\n", " 2.9297e-01, 3.4570e-01, 2.0996e-01, 2.2266e-01, -2.6367e-02,\n", " 3.5547e-01, 1.8677e-02, 7.7148e-02, 2.7710e-02, 1.2878e-02,\n", " 1.7090e-01, -1.3086e-01, -2.5391e-01, -3.0078e-01, -1.0693e-01,\n", " -3.3984e-01, -3.5400e-02, 1.6309e-01, 5.0049e-02, -1.7578e-01,\n", " 1.3867e-01, -2.9297e-01, 2.1289e-01, 9.1309e-02, -1.7578e-01,\n", " -1.1572e-01, -6.1035e-02, -4.5654e-02, 1.6699e-01, -3.5400e-02,\n", " 7.8125e-02, 3.4570e-01, -1.2109e-01, -3.4766e-01, -5.2490e-02,\n", " -2.7148e-01, 3.8281e-01, 2.3828e-01, 2.3438e-02, 1.4551e-01,\n", " 4.5508e-01, 2.9297e-01, -4.0771e-02, -2.3535e-01, 2.1240e-02,\n", " -3.6133e-02, -1.0645e-01, -1.6724e-02, 1.3574e-01, 9.7656e-02,\n", " 3.8867e-01, 1.2793e-01, -4.9805e-02, -5.3955e-02, -2.1094e-01,\n", " -2.2949e-01, -2.1118e-02, 1.9141e-01, -2.5391e-02, 4.6875e-02,\n", " -1.6211e-01, -1.1865e-01, 7.4158e-03, 1.9287e-02, 2.2095e-02,\n", " 9.3262e-02, -1.7969e-01, -3.0664e-01, 2.0312e-01, -1.8555e-02,\n", " -2.1289e-01, 5.3406e-03, 1.7969e-01, -3.7109e-01, 7.1289e-02,\n", " -4.2480e-02, -2.7148e-01, 2.0605e-01, -2.9492e-01, -1.1230e-02,\n", " 5.3906e-01, 2.5195e-01, -1.7773e-01, -9.4727e-02, -3.5352e-01,\n", " 1.3477e-01, 2.1484e-01, -4.5117e-01, -1.1572e-01, -2.2168e-01,\n", " 9.1309e-02, 6.2500e-02, -7.6172e-02, -6.4453e-02, -3.3398e-01,\n", " -2.1777e-01, 2.2949e-02, 8.9844e-02, -2.6245e-02, 1.9653e-02,\n", " -2.5586e-01, 1.9727e-01, -1.3281e-01, -4.3457e-02, -8.4961e-02,\n", " 5.2490e-03, 2.1777e-01, -4.1260e-02, 5.4443e-02, 9.9609e-02,\n", " -1.8652e-01, 3.5938e-01, 1.9727e-01, 8.9111e-03, -1.6602e-01,\n", " 7.3242e-02, 2.3926e-01, -4.3359e-01, -4.3701e-02, 2.1191e-01,\n", " 1.7773e-01, 1.0596e-01, 1.7188e-01, 1.8945e-01, 3.6377e-02,\n", " 1.3867e-01, 9.3994e-03, 1.2988e-01, 1.8359e-01, -1.3672e-01,\n", " 2.4316e-01, 3.1250e-02, -5.5420e-02, 1.4746e-01, -1.4160e-01,\n", " -3.9258e-01, -1.8066e-02, -2.0898e-01, -3.0469e-01, -2.6953e-01,\n", " -4.1016e-01, 3.6316e-03, 5.0781e-02, -2.1191e-01, -3.5889e-02,\n", " 1.8555e-02, 2.5000e-01, 5.5908e-02, 1.1780e-02, 1.3281e-01,\n", " -3.3875e-03, -1.0303e-01, 9.7656e-02, 2.8534e-03, -1.5430e-01,\n", " -2.2461e-01, -3.2422e-01, -2.8198e-02, -5.1758e-02, -1.2256e-01,\n", " -2.4170e-02, 1.4453e-01, -1.2354e-01, 6.5918e-02, 2.2339e-02,\n", " 1.1182e-01, -4.9805e-02, 2.0996e-02, -1.4648e-01, 6.8848e-02,\n", " -2.7832e-02, 1.3574e-01, -1.5820e-01, 1.9727e-01, -7.9956e-03,\n", " 5.8594e-02, -2.3145e-01, 4.9805e-01, 1.9897e-02, 8.2520e-02,\n", " -3.0151e-02, -2.8320e-01, -1.6797e-01, -1.2402e-01, 6.3965e-02,\n", " 2.4902e-01, 1.5234e-01, 5.4688e-02, 2.0020e-01, 1.5918e-01,\n", " 3.0078e-01, 2.2559e-01, -3.5645e-02, -2.6758e-01, 2.8320e-01,\n", " 3.3203e-01, 1.8799e-02, 4.2236e-02, -1.4160e-01, -8.5449e-02,\n", " 4.1992e-01, -1.1475e-01, 4.6143e-02, 8.3984e-02, 1.4453e-01,\n", " -7.3730e-02, 3.7891e-01, -1.8555e-01, 3.0151e-02, 1.7090e-01,\n", " -5.3223e-02, 1.2793e-01, -2.4414e-01, 2.1680e-01, -8.8501e-03,\n", " 5.8594e-02, 1.8945e-01, 2.2754e-01, -1.6699e-01, -3.7354e-02,\n", " -3.3447e-02, -3.6523e-01, 1.2891e-01, 5.6458e-04, 4.1016e-01,\n", " -2.3242e-01, 1.1816e-01, -6.7871e-02, -2.2656e-01, 2.6562e-01,\n", " 1.4941e-01, 6.5918e-02, 1.3965e-01, -1.8066e-01, 8.1543e-02],\n", " [-9.7656e-02, 3.1982e-02, 2.5781e-01, -4.1504e-02, 1.0156e-01,\n", " -1.0059e-01, 1.4648e-01, -1.9922e-01, 1.5332e-01, 6.3477e-02,\n", " 8.3984e-02, -3.0078e-01, 6.3477e-02, 2.0898e-01, -2.1191e-01,\n", " 1.8848e-01, -8.3496e-02, 3.2812e-01, 2.7930e-01, -1.4062e-01,\n", " -1.6895e-01, 2.0410e-01, 4.9072e-02, -6.9885e-03, 9.4238e-02,\n", " 9.8419e-04, 3.1250e-02, 2.4805e-01, 3.3594e-01, 2.6367e-01,\n", " 5.6885e-02, 3.0469e-01, 1.2158e-01, -1.9727e-01, 1.7212e-02,\n", " 9.9609e-02, 2.2754e-01, -1.2061e-01, 1.2354e-01, 3.7891e-01,\n", " 2.3682e-02, -1.8652e-01, 6.2988e-02, 1.5234e-01, 3.7354e-02,\n", " -1.6992e-01, 1.0645e-01, -4.9805e-02, -6.2012e-02, 1.6895e-01,\n", " 4.4189e-02, 2.7832e-02, -1.1084e-01, 4.4922e-02, 2.7832e-02,\n", " -4.4531e-01, 3.4912e-02, -6.2256e-02, -3.9307e-02, -2.0117e-01,\n", " -3.0469e-01, -1.0059e-01, -1.6406e-01, 1.5234e-01, 1.1035e-01,\n", " -1.5332e-01, -7.1289e-02, 7.9590e-02, 1.8750e-01, 6.8848e-02,\n", " 2.4414e-01, -6.5613e-04, -1.9141e-01, 3.4912e-02, 1.9775e-02,\n", " -5.4199e-02, 3.3203e-02, -2.0801e-01, 9.8633e-02, -1.9043e-01,\n", " -6.0791e-02, -2.0703e-01, -2.1851e-02, 8.7891e-02, 2.0898e-01,\n", " -2.3633e-01, -9.1797e-02, 2.2656e-01, -3.9307e-02, 9.1309e-02,\n", " 1.1353e-02, -1.5527e-01, 6.7871e-02, -4.9072e-02, 2.5177e-03,\n", " -4.6631e-02, 9.1797e-02, 1.0596e-01, 2.1094e-01, 4.2480e-02,\n", " -4.9561e-02, 1.7676e-01, 3.3203e-01, -4.2236e-02, 2.0312e-01,\n", " 2.9883e-01, 1.2109e-01, -4.8584e-02, -1.4160e-01, -2.5195e-01,\n", " -2.2070e-01, 2.2363e-01, 2.2217e-02, 1.0938e-01, 3.1445e-01,\n", " 3.7109e-01, -4.8340e-02, 2.7734e-01, 1.2756e-02, -9.6191e-02,\n", " -2.0312e-01, -1.5527e-01, 1.1035e-01, -6.5430e-02, -2.7539e-01,\n", " -2.3438e-01, -3.7891e-01, -8.3008e-02, -1.2500e-01, -1.4062e-01,\n", " -9.2773e-03, -4.2188e-01, -1.1719e-01, -2.4121e-01, 3.4424e-02,\n", " 5.3406e-03, -2.9883e-01, 3.4570e-01, -6.5430e-02, 5.5420e-02,\n", " -5.1758e-02, -1.1279e-01, 2.0117e-01, 2.9785e-02, 1.0547e-01,\n", " 2.7539e-01, 1.0205e-01, -1.6699e-01, -7.0801e-02, -2.9688e-01,\n", " 1.5039e-01, 2.9492e-01, -1.9727e-01, 4.8584e-02, -4.2773e-01,\n", " 1.5564e-02, 1.2061e-01, -1.7090e-01, 6.6895e-02, -1.5039e-01,\n", " -5.2734e-02, 6.4941e-02, 3.7842e-02, 1.7456e-02, 1.4453e-01,\n", " -1.4746e-01, 1.0742e-01, -1.9629e-01, -5.2002e-02, -6.2988e-02,\n", " -1.7188e-01, 2.2583e-02, -5.2795e-03, -1.2256e-01, -6.2500e-02,\n", " 8.8501e-04, 1.8433e-02, 1.1279e-01, -1.1133e-01, 1.0073e-05,\n", " 2.4121e-01, 6.6406e-02, -2.4536e-02, 1.8921e-02, -1.8311e-02,\n", " 3.0664e-01, 1.8311e-02, -3.8574e-02, 1.8164e-01, 2.2736e-03,\n", " 1.4551e-01, 6.7383e-02, -1.6846e-02, 1.8750e-01, -1.2109e-01,\n", " 2.1729e-02, 1.2988e-01, 1.5527e-01, -7.8125e-02, 5.0537e-02,\n", " -7.6660e-02, -1.1816e-01, 4.5166e-02, -3.7109e-02, 2.4805e-01,\n", " -3.1055e-01, 1.9824e-01, -2.3730e-01, -2.1851e-02, -9.7656e-02,\n", " -1.0803e-02, 1.6992e-01, 1.1377e-01, -5.1758e-02, -1.9434e-01,\n", " 9.4727e-02, 1.2891e-01, 2.0508e-02, -2.7734e-01, -8.6914e-02,\n", " 1.2634e-02, -4.5703e-01, -1.3379e-01, -8.1543e-02, 2.8906e-01,\n", " 1.8945e-01, 1.6211e-01, -1.6479e-02, 3.7537e-03, -1.3867e-01,\n", " -1.0498e-01, -1.2012e-01, -1.1353e-02, 5.1514e-02, 4.6875e-02,\n", " -8.9355e-02, 2.5635e-02, -2.7734e-01, 1.0547e-01, -1.0303e-01,\n", " 2.0703e-01, -1.6797e-01, 1.9922e-01, 1.6724e-02, -1.8066e-01,\n", " 1.0645e-01, -3.3984e-01, -5.8105e-02, -3.3594e-01, 4.3945e-02,\n", " 8.5938e-02, 4.4434e-02, 2.7466e-03, 1.7090e-01, 7.4219e-02,\n", " -3.0640e-02, -7.8613e-02, 5.0354e-03, -1.1670e-01, 3.1836e-01,\n", " 2.6367e-01, -9.4727e-02, 1.2158e-01, 1.5234e-01, -2.3340e-01,\n", " 3.8477e-01, -1.1328e-01, 4.1504e-02, -2.2070e-01, 1.0559e-02,\n", " -3.4180e-02, 7.5684e-02, -2.3633e-01, -6.9824e-02, 3.0396e-02,\n", " -2.0020e-01, 1.7480e-01, -1.5723e-01, -3.9551e-02, -2.6953e-01,\n", " -1.1182e-01, 1.0498e-01, 1.1475e-01, -2.4796e-04, -1.4258e-01,\n", " -1.6309e-01, -2.6367e-01, 1.4453e-01, 1.6309e-01, 2.1973e-02,\n", " -2.0605e-01, -3.1738e-02, -1.5625e-01, -1.0938e-01, 4.5703e-01,\n", " 2.7148e-01, 6.1279e-02, 2.0142e-03, -1.2158e-01, 1.5820e-01]])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "embs = nn.Embedding( len(word_emb.key_to_index), 300).from_pretrained(torch.from_numpy(word_emb.vectors))\n", "idx = torch.LongTensor([word_emb.key_to_index[word] for word in [\"soccer\", \"tennis\", \"football\"]])\n", "embs(idx)" ] }, { "cell_type": "markdown", "id": "7966f74b-f1a0-4def-9519-4b833f68eda5", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "### It's your turn! Go ahead with *Task 2.*\n", "\n", "" ] }, { "cell_type": "markdown", "id": "b47ccc12-03e7-4eb6-95cf-b20f445b18fe", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "#### Task 2.1\n", "\n", "- Plot the 3D PCA representation of the sentence embeddings, using a different color for each label (ham and spam)\n", " - Are the two classes neatly separated?" ] }, { "cell_type": "markdown", "id": "3a1117ab-7c06-475a-a341-1d389b80f30d", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "#### Task 2.2\n", "\n", "1. Implement a new classifier to solve this task.\n", " - You can use:\n", " - a ```scikit-learn``` estimator, for example: [KNeighborsClassifier](https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html), [SVC](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC), [DecisionTreeClassifier](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier)\n", " - **only** if you are confident with your pytorch skills, you can implement either:\n", " - a feed-forward network that processes the sentence embeddings\n", " - a RNN of your choice (LSTM, GRU, BiLSTM) that processes one word per time step \n", " - **Requirements**:\n", " - use the same train_test split done above (```sent_emb_train``` / ```sent_emb_test```)\n", "2. Evaluate your model on the test set using classification_report" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" } }, "nbformat": 4, "nbformat_minor": 5 }