{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "\n", "***\n", "***\n", "\n", "# Introduction to Word Embeddings\n", "Analyzing Meaning through Word Embeddings\n", "\n", "***\n", "***" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Using vectors to represent things**\n", "- one of the most fascinating ideas in machine learning. \n", "- Word2vec is a method to efficiently create word embeddings. \n", " - Mikolov et al. (2013). [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf)\n", " - Mikolov et al. (2013). [Distributed representations of words and phrases and their compositionality](https://arxiv.org/pdf/1310.4546.pdf)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "***\n", "***\n", "\n", "## The Geometry of Culture\n", "\n", "Analyzing Meaning through Word Embeddings\n", "\n", "***\n", "***\n", "\n", "Austin C. Kozlowski; Matt Taddy; James A. Evans\n", "\n", "https://arxiv.org/abs/1803.09288\n", "\n", "Word embeddings represent **semantic relations** between words as **geometric relationships** between vectors in a high-dimensional space, operationalizing a relational model of meaning consistent with contemporary theories of identity and culture. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "- Dimensions induced by word differences (e.g. man - woman, rich - poor, black - white, liberal - conservative) in these vector spaces closely correspond to dimensions of cultural meaning, \n", "- Macro-cultural investigation with a longitudinal analysis of the coevolution of gender and class associations in the United States over the 20th century \n", "\n", "The success of these high-dimensional models motivates a move towards \"high-dimensional theorizing\" of meanings, identities and cultural processes." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## HistWords \n", "\n", "HistWords is a collection of tools and datasets for analyzing language change using word vector embeddings. \n", "\n", "- The goal of this project is to facilitate quantitative research in diachronic linguistics, history, and the digital humanities.\n", "\n", "\n", "- We used the historical word vectors in HistWords to study the semantic evolution of more than 30,000 words across 4 languages. \n", "\n", "- This study led us to propose two statistical laws that govern the evolution of word meaning \n", "\n", "\n", "https://nlp.stanford.edu/projects/histwords/\n", "\n", "https://github.com/williamleif/histwords\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Diachronic Word Embeddings Reveal Statistical Laws of Semantic Change**\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Word embeddings quantify 100 years of gender and ethnic stereotypes\n", "\n", "http://www.pnas.org/content/early/2018/03/30/1720347115\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## The Illustrated Word2vec\n", "\n", "Jay Alammar. https://jalammar.github.io/illustrated-word2vec/" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Personality Embeddings\n", "\n", "> What are you like?\n", "\n", "**Big Five personality traits**: openness to experience, conscientiousness, extraversion, agreeableness, and neuroticism\n", "- the five-factor model (FFM) \n", "- **the OCEAN model**\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:08:26.103877Z", "start_time": "2019-04-05T09:08:26.096732Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "- 开放性(openness):具有想象、审美、情感丰富、求异、创造、智能等特质。\n", "- 责任心(conscientiousness):显示胜任、公正、条理、尽职、成就、自律、谨慎、克制等特点。\n", "- 外倾性(extraversion):表现出热情、社交、果断、活跃、冒险、乐观等特质。\n", "- 宜人性(agreeableness):具有信任、利他、直率、依从、谦虚、移情等特质。\n", "- 神经质或情绪稳定性(neuroticism):具有平衡焦虑、敌对、压抑、自我意识、冲动、脆弱等情绪的特质,即具有保持情绪稳定的能力。" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:37:14.866873Z", "start_time": "2019-04-05T09:37:14.862287Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Personality Embeddings: What are you like?\n", "jay = [-0.4, 0.8, 0.5, -0.2, 0.3]\n", "john = [-0.3, 0.2, 0.3, -0.4, 0.9]\n", "mike = [-0.5, -0.4, -0.2, 0.7, -0.1]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Cosine Similarity\n", "The cosine of two non-zero vectors can be derived by using the Euclidean dot product formula:\n", "\n", "$$\n", "\\mathbf{A}\\cdot\\mathbf{B}\n", "=\\left\\|\\mathbf{A}\\right\\|\\left\\|\\mathbf{B}\\right\\|\\cos\\theta\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "$$\n", "\\text{similarity} = \\cos(\\theta) = {\\mathbf{A} \\cdot \\mathbf{B} \\over \\|\\mathbf{A}\\| \\|\\mathbf{B}\\|} = \\frac{ \\sum\\limits_{i=1}^{n}{A_i B_i} }{ \\sqrt{\\sum\\limits_{i=1}^{n}{A_i^2}} \\sqrt{\\sum\\limits_{i=1}^{n}{B_i^2}} },\n", "$$\n", "\n", "where $A_i$ and $B_i$ are components of vector $A$ and $B$ respectively." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:17:02.584345Z", "start_time": "2019-04-05T09:17:02.577116Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "-0.4999999999999999" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from numpy import dot\n", "from numpy.linalg import norm\n", "\n", "def cos_sim(a, b):\n", " return dot(a, b)/(norm(a)*norm(b))\n", "\n", "cos_sim([1, 0, -1], [-1,-1, 0])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:14:47.865304Z", "start_time": "2019-04-05T09:14:47.857879Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "array([[-0.5]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics.pairwise import cosine_similarity\n", "\n", "cosine_similarity([[1, 0, -1]], [[-1,-1, 0]])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "$$CosineDistance = 1- CosineSimilarity$$" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:25:29.120401Z", "start_time": "2019-04-05T09:25:29.113611Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "-0.5" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy import spatial\n", "# spatial.distance.cosine computes \n", "# the Cosine distance between 1-D arrays.\n", "1 - spatial.distance.cosine([1, 0, -1], [-1,-1, 0])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:17:48.677658Z", "start_time": "2019-04-05T09:17:48.672323Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "0.6582337075311759" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cos_sim(jay, john)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:18:04.442036Z", "start_time": "2019-04-05T09:18:04.437385Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "-0.3683509554826695" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cos_sim(jay, mike)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Cosine similarity works for any number of dimensions. \n", "- We can represent people (and things) as vectors of numbers (which is great for machines!).\n", "- We can easily calculate how similar vectors are to each other." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Word Embeddings\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Google News Word2Vec\n", "\n", "You can download Google’s pre-trained model here.\n", "\n", "- It’s 1.5GB! \n", "- It includes word vectors for a vocabulary of 3 million words and phrases \n", "- It is trained on roughly 100 billion words from a Google News dataset. \n", "- The vector length is 300 features.\n", "\n", "http://mccormickml.com/2016/04/12/googles-pretrained-word2vec-model-in-python/" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Using the **Gensim** library in python, we can \n", "- find the most similar words to the resulting vector. \n", "- add and subtract word vectors, \n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:48:32.663015Z", "start_time": "2019-04-05T09:46:33.523568Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "import gensim\n", "# Load Google's pre-trained Word2Vec model.\n", "filepath = '/Users/datalab/bigdata/GoogleNews-vectors-negative300.bin'\n", "model = gensim.models.KeyedVectors.load_word2vec_format(filepath, binary=True) " ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:54:56.388102Z", "start_time": "2019-04-05T09:54:56.383705Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "array([ 0.24316406, -0.07714844, -0.10302734, -0.10742188, 0.11816406,\n", " -0.10742188, -0.11425781, 0.02563477, 0.11181641, 0.04858398],\n", " dtype=float32)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model['woman'][:10]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:52:13.063134Z", "start_time": "2019-04-05T09:52:12.809519Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[('man', 0.7664012312889099),\n", " ('girl', 0.7494640946388245),\n", " ('teenage_girl', 0.7336829900741577),\n", " ('teenager', 0.631708562374115),\n", " ('lady', 0.6288785934448242),\n", " ('teenaged_girl', 0.6141784191131592),\n", " ('mother', 0.607630729675293),\n", " ('policewoman', 0.6069462299346924),\n", " ('boy', 0.5975908041000366),\n", " ('Woman', 0.5770983099937439)]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.most_similar('woman')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:51:43.612745Z", "start_time": "2019-04-05T09:51:43.607316Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "0.76640123" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.similarity('woman', 'man')" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:54:38.743342Z", "start_time": "2019-04-05T09:54:38.738722Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "0.76640123" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cos_sim(model['woman'], model['man'])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2019-04-05T09:49:03.690483Z", "start_time": "2019-04-05T09:48:48.812748Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[('queen', 0.7118192911148071),\n", " ('monarch', 0.6189674139022827),\n", " ('princess', 0.5902431607246399),\n", " ('crown_prince', 0.5499460697174072),\n", " ('prince', 0.5377321243286133)]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.most_similar(positive=['woman', 'king'], negative=['man'], topn=5)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "$$King- Queen = Man - Woman$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Now that we’ve looked at trained word embeddings, \n", "\n", "- let’s learn more about the training process. \n", "- But before we get to word2vec, we need to look at a conceptual parent of word embeddings: **the neural language model**.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# The neural language model\n", "\n", "“You shall know a word by the company it keeps” J.R. Firth\n", "\n", "\n", "\n", "> Bengio 2003 A Neural Probabilistic Language Model. Journal of Machine Learning Research. 3:1137–1155\n", "\n", "After being trained, early neural language models (Bengio 2003) would calculate a prediction in three steps:\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-04-05T10:08:02.288041Z", "start_time": "2019-04-05T10:08:02.282384Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "The output of the neural language model is a probability score for all the words the model knows. \n", "- We're referring to the probability as a percentage here, \n", "- but 40% would actually be represented as 0.4 in the output vector.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Language Model Training\n", "\n", "- We get a lot of text data (say, all Wikipedia articles, for example). then\n", "- We have a window (say, of three words) that we slide against all of that text.\n", "- The sliding window generates training samples for our model" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "As this window slides against the text, we (virtually) generate a dataset that we use to train a model. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Instead of only looking two words before the target word, we can also look at two words after it.\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "If we do this, the dataset we’re virtually building and training the model against would look like this:\n", "\n", "\n", "\n", "This is called a **Continuous Bag of Words** (CBOW) https://arxiv.org/pdf/1301.3781.pdf" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Skip-gram\n", "Instead of guessing a word based on its context (the words before and after it), this other architecture tries to guess neighboring words using the current word. \n", "\n", "\n", "\n", "https://arxiv.org/pdf/1301.3781.pdf" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-04-05T10:48:55.984057Z", "start_time": "2019-04-05T10:48:55.979592Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The pink boxes are in different shades because this sliding window actually creates four separate samples in our training dataset.\n", "\n", "\n", "- We then slide our window to the next position:\n", "- Which generates our next four examples:\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-04-05T10:45:28.851644Z", "start_time": "2019-04-05T10:45:28.847193Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Negative Sampling\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "And switch it to a model that takes the input and output word, and outputs a score indicating **if they’re neighbors or not** \n", "- 0 for “not neighbors”, 1 for “neighbors”.\n", "\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "we need to introduce negative samples to our dataset\n", "- samples of words that are not neighbors. \n", "- Our model needs to return 0 for those samples.\n", "- This leads to a great tradeoff of computational and statistical efficiency.\n", "\n", "## Skipgram with Negative Sampling (SGNS)\n" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-04-05T10:48:55.984057Z", "start_time": "2019-04-05T10:48:55.979592Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Word2vec Training Process\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Pytorch word2vec \n", "https://github.com/jojonki/word2vec-pytorch/blob/master/word2vec.ipynb\n", "\n", "https://github.com/bamtercelboo/pytorch_word2vec/blob/master/model.py" ] }, { "cell_type": "code", "execution_count": 118, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:43:56.056098Z", "start_time": "2019-04-07T07:43:56.045854Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# see http://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html\n", "import torch\n", "from torch.autograd import Variable\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import torch.optim as optim\n", "\n", "torch.manual_seed(1)" ] }, { "cell_type": "code", "execution_count": 202, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:08.645360Z", "start_time": "2019-04-07T09:08:08.641731Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "text = \"\"\"We are about to study the idea of a computational process.\n", "Computational processes are abstract beings that inhabit computers.\n", "As they evolve, processes manipulate other abstract things called data.\n", "The evolution of a process is directed by a pattern of rules\n", "called a program. People create programs to direct processes. In effect,\n", "we conjure the spirits of the computer with our spells.\"\"\"\n", "\n", "text = text.replace(',', '').replace('.', '').lower().split()" ] }, { "cell_type": "code", "execution_count": 203, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:11.597040Z", "start_time": "2019-04-07T09:08:11.590972Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "vocab_size: 44\n" ] } ], "source": [ "# By deriving a set from `raw_text`, we deduplicate the array\n", "vocab = set(text)\n", "vocab_size = len(vocab)\n", "print('vocab_size:', vocab_size)\n", "\n", "w2i = {w: i for i, w in enumerate(vocab)}\n", "i2w = {i: w for i, w in enumerate(vocab)}" ] }, { "cell_type": "code", "execution_count": 204, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:13.785456Z", "start_time": "2019-04-07T09:08:13.773647Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cbow sample (['we', 'are', 'to', 'study'], 'about')\n" ] } ], "source": [ "# context window size is two\n", "def create_cbow_dataset(text):\n", " data = []\n", " for i in range(2, len(text) - 2):\n", " context = [text[i - 2], text[i - 1],\n", " text[i + 1], text[i + 2]]\n", " target = text[i]\n", " data.append((context, target))\n", " return data\n", "\n", "cbow_train = create_cbow_dataset(text)\n", "print('cbow sample', cbow_train[0])\n" ] }, { "cell_type": "code", "execution_count": 205, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:14.703431Z", "start_time": "2019-04-07T09:08:14.671677Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "skipgram sample ('about', 'we', 1)\n" ] } ], "source": [ "def create_skipgram_dataset(text):\n", " import random\n", " data = []\n", " for i in range(2, len(text) - 2):\n", " data.append((text[i], text[i-2], 1))\n", " data.append((text[i], text[i-1], 1))\n", " data.append((text[i], text[i+1], 1))\n", " data.append((text[i], text[i+2], 1))\n", " # negative sampling\n", " for _ in range(4):\n", " if random.random() < 0.5 or i >= len(text) - 3:\n", " rand_id = random.randint(0, i-1)\n", " else:\n", " rand_id = random.randint(i+3, len(text)-1)\n", " data.append((text[i], text[rand_id], 0))\n", " return data\n", "\n", "\n", "skipgram_train = create_skipgram_dataset(text)\n", "print('skipgram sample', skipgram_train[0])" ] }, { "cell_type": "code", "execution_count": 206, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:15.358380Z", "start_time": "2019-04-07T09:08:15.335746Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "class CBOW(nn.Module):\n", " def __init__(self, vocab_size, embd_size, context_size, hidden_size):\n", " super(CBOW, self).__init__()\n", " self.embeddings = nn.Embedding(vocab_size, embd_size)\n", " self.linear1 = nn.Linear(2*context_size*embd_size, hidden_size)\n", " self.linear2 = nn.Linear(hidden_size, vocab_size)\n", " \n", " def forward(self, inputs):\n", " embedded = self.embeddings(inputs).view((1, -1))\n", " hid = F.relu(self.linear1(embedded))\n", " out = self.linear2(hid)\n", " log_probs = F.log_softmax(out, dim = 1)\n", " return log_probs\n", " \n", " def extract(self, inputs):\n", " embeds = self.embeddings(inputs)\n", " return embeds" ] }, { "cell_type": "code", "execution_count": 207, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:15.952938Z", "start_time": "2019-04-07T09:08:15.934330Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "class SkipGram(nn.Module):\n", " def __init__(self, vocab_size, embd_size):\n", " super(SkipGram, self).__init__()\n", " self.embeddings = nn.Embedding(vocab_size, embd_size)\n", " \n", " def forward(self, focus, context):\n", " embed_focus = self.embeddings(focus).view((1, -1)) # input\n", " embed_ctx = self.embeddings(context).view((1, -1)) # output\n", " score = torch.mm(embed_focus, torch.t(embed_ctx)) # input*output\n", " log_probs = F.logsigmoid(score) # sigmoid\n", " return log_probs\n", " \n", " def extract(self, focus):\n", " embed_focus = self.embeddings(focus)\n", " return embed_focus" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2019-04-07T08:24:20.526644Z", "start_time": "2019-04-07T08:24:20.523217Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "`torch.mm` Performs a matrix multiplication of the matrices \n", "\n", "`torch.t` Expects :attr:`input` to be a matrix (2-D tensor) and transposes dimensions 0\n", "and 1. Can be seen as a short-hand function for ``transpose(input, 0, 1)``." ] }, { "cell_type": "code", "execution_count": 208, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:17.249149Z", "start_time": "2019-04-07T09:08:17.245376Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "embd_size = 100\n", "learning_rate = 0.001\n", "n_epoch = 30\n", "CONTEXT_SIZE = 2 # 2 words to the left, 2 to the right" ] }, { "cell_type": "code", "execution_count": 209, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:18.005531Z", "start_time": "2019-04-07T09:08:17.973458Z" }, "code_folding": [], "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def train_cbow():\n", " hidden_size = 64\n", " losses = []\n", " loss_fn = nn.NLLLoss()\n", " model = CBOW(vocab_size, embd_size, CONTEXT_SIZE, hidden_size)\n", " print(model)\n", " optimizer = optim.SGD(model.parameters(), lr=learning_rate)\n", " for epoch in range(n_epoch):\n", " total_loss = .0\n", " for context, target in cbow_train:\n", " ctx_idxs = [w2i[w] for w in context]\n", " ctx_var = Variable(torch.LongTensor(ctx_idxs))\n", "\n", " model.zero_grad()\n", " log_probs = model(ctx_var)\n", "\n", " loss = loss_fn(log_probs, Variable(torch.LongTensor([w2i[target]])))\n", "\n", " loss.backward()\n", " optimizer.step()\n", "\n", " total_loss += loss.data.item()\n", " losses.append(total_loss)\n", " return model, losses " ] }, { "cell_type": "code", "execution_count": 210, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:18.803221Z", "start_time": "2019-04-07T09:08:18.773964Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def train_skipgram():\n", " losses = []\n", " loss_fn = nn.MSELoss()\n", " model = SkipGram(vocab_size, embd_size)\n", " print(model)\n", " optimizer = optim.SGD(model.parameters(), lr=learning_rate)\n", " \n", " for epoch in range(n_epoch):\n", " total_loss = .0\n", " for in_w, out_w, target in skipgram_train:\n", " in_w_var = Variable(torch.LongTensor([w2i[in_w]]))\n", " out_w_var = Variable(torch.LongTensor([w2i[out_w]]))\n", " \n", " model.zero_grad()\n", " log_probs = model(in_w_var, out_w_var)\n", " loss = loss_fn(log_probs[0], Variable(torch.Tensor([target])))\n", " \n", " loss.backward()\n", " optimizer.step()\n", "\n", " total_loss += loss.data.item()\n", " losses.append(total_loss)\n", " return model, losses" ] }, { "cell_type": "code", "execution_count": 211, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:24.429022Z", "start_time": "2019-04-07T09:08:19.718142Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CBOW(\n", " (embeddings): Embedding(44, 100)\n", " (linear1): Linear(in_features=400, out_features=64, bias=True)\n", " (linear2): Linear(in_features=64, out_features=44, bias=True)\n", ")\n", "SkipGram(\n", " (embeddings): Embedding(44, 100)\n", ")\n" ] } ], "source": [ "cbow_model, cbow_losses = train_cbow()\n", "sg_model, sg_losses = train_skipgram()" ] }, { "cell_type": "code", "execution_count": 212, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:24.968373Z", "start_time": "2019-04-07T09:08:24.430942Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize= (10, 4))\n", "plt.subplot(121)\n", "plt.plot(range(n_epoch), cbow_losses, 'r-o', label = 'CBOW Losses')\n", "plt.legend()\n", "plt.subplot(122)\n", "plt.plot(range(n_epoch), sg_losses, 'g-s', label = 'SkipGram Losses')\n", "plt.legend()\n", "plt.tight_layout()\n" ] }, { "cell_type": "code", "execution_count": 213, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:46.483856Z", "start_time": "2019-04-07T09:08:46.477458Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "100" ] }, "execution_count": 213, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cbow_vec = cbow_model.extract(Variable(torch.LongTensor([v for v in w2i.values()])))\n", "cbow_vec = cbow_vec.data.numpy()\n", "len(cbow_vec[0])" ] }, { "cell_type": "code", "execution_count": 214, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:08:59.082813Z", "start_time": "2019-04-07T09:08:59.076630Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "100" ] }, "execution_count": 214, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sg_vec = sg_model.extract(Variable(torch.LongTensor([v for v in w2i.values()])))\n", "sg_vec = sg_vec.data.numpy()\n", "len(sg_vec[0])" ] }, { "cell_type": "code", "execution_count": 217, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T09:09:21.040471Z", "start_time": "2019-04-07T09:09:20.289414Z" }, "code_folding": [ 0 ], "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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Tv/85z/P+5wFBQW6++679fDDD2vbtm3q3LmzBgwYoDvvvFNBQUF68cUXNWPGDI9j3n33XbVu3VqffvqpoqOj9Z///Eddu3bVwYMHPVZEk6SHH35YCxcu1J133qmYmBi9/PLLatas2XmPGxe3rKwsLV68WI8//rimTZum8PBw/elPf/LYx9dqt61bt1ZISIhHEFPcfnsb7KlmHxYWFmr9+vWaMWOG7r//fnf7Cy+8oEqVKrk/DwoK0ujRoxUcHKz33nuvxMbtcs0113j9bujatauio6OVnJysVatWudtdt1o+9thjHvs3adJETz31lM/+Xc8v8zXDct68efrpp5/Ur18/derUyefxkZGRuvzyy8/8ggAACCDMxAIA4KRESXkqWtYl/+TnGzduPKMHdL///vt6//33fW5buXKlHA7H7x7/4YcfnvGDsqWiGRd/+9vfTrtfSkqKunbtesb9ovSKjo5WYmKiV3uVKlUkSdnZ2R7tL774oj799FP37Xxly5bVyJEjJUmxsbElNk5XSHNnnToqt2OHEn81+/D777/XwoULtXnzZo/Zh67wdsuWLWrcuLE2btyouLg4HT9+XJ06ddL111+vVatW6bXXXiuxcbssXrxYr7/+ujp16qQffvhBDRo00D333KOcnBz17t3bY4bWvHnztH37dj3wwAOqVauWvv76a9WpU0fdunXTvHnz9Pe//92r/+XLl+vee+9VfHy8Fi1apJycHO3atUsffvihCgoKdM8992jJkiVatGiR1qxZo++//17Z2dmqXbu2WrZsqauvvlrVqlXz+XB8AAACHSEWAAAnsQopSqNIFX1PPz93rrKOHdPatWu1c+dOORwOtWnTRq1atdK6dev0+eefexy3ZcsWbdq0SXFxccrPz1e3bt3UoEEDffrpp5o+fXqJjXf58uUaOHCgxr3zjvTxxyr45ReNy8xU69at9cEHH+juu+9Wt27dlJOTowMHDig3N1fTp0+X0+lU7969FRERof79++uRRx5RaGioUlJSNHjwYL3++us+V2Ysbl9//bVeeuklDR8+XP3795fD4dCKFSs0ePBgrVu3zmPf3NxctW/fXqNHj1aHDh3UsmVLbdy4UQ888ICOHDniM8R69913FRERofvuu08DBw5UaGioEhMT3SH4jz/+qKZNm+rpp59W586d1atXL504cULp6elKSkpS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+KzHfKZ+/vlnn+2uFaiuueYaDR069JTHh4WFlcSwAOCS980336h58+bq1auX3nnnHXd7jx491Lp16zPqo7CwUOPGjdOQIUM0duxYPf300x6zfiWpWrVqqlixorZs2SJJio6OVmJioldfVapUkSSvmbsAAAAlhdsJgXPgCplatWrlXhmwUaNGmjt3rg4fPqxjx45p1apV7lvuqlWrJslzVcA77rhDN954oyRp165dHv1fdtllWrx4sQ4fPiyn06lt27Zp5MiRKlu27CnH1KFDBx09elRZWVlatmyZO0wyM0VFRXnsO23aNElFIds777yjvXv3qqCgQGFhYTIzNWzYUCNHjtS3336rn3/+WU6n0/2g+sWLF3vddhIdHS1JGjp0qLp3767FixcrMzNTR44cUVxcnGrVqiVJqlevnv773//q559/VnZ2tlasWKEbbrjB61qqVKmi1157TVu3btWxY8eUkZGhrVu3KjY2VvXq1TvjrxMABLpISYNOfjydcePGyel0atKkSZo1a5Zee+01LVu2TBMmTNCCBQvO+JzDhw/XvHnz1LdvXyUnJ+v999/XiBEj9O6772rlypXau3evunbt6t5/7ty52rNnj+bMmaPXXntNo0eP1tdff60uXbpo3bp1+vzzz8/6ugEAAM4FM7GAc7B27Vq1bNnSHQ7Vq1dPX331lX788UdNnjxZ1atX19///nd36BQdHa0dO3a4j//b3/6mO++8U8HBwcrMzNRnn33m3hYWFqbw8HDddtttmjNnjn7++WdFR0dr0KBBPmdJtWrVSpJUvXp1zZkzRykpKbr++uvVtm3b017Hiy++qP379ys+Pl4nTpzQfffdJ0m655579I9//EMJCQn68ssvlZeXpyZNmqh69erq2LGj6tSpo927d3v117JlSz377LNauXKl3nnnHV1//fX661//qiZNmqhbt25avXq1tm7dqg8++EARERG65557tGzZMtWvX1/Hjx+XJF1++eVas2aNGjRooKVLl2rBggVyOByKiIhQt27dFBcX514tEQAuZpGSlksqIylP0umeKLhlyxbdfvvtGjFihLp06aKCggKtWrVKt9xyi+655x516dLljM7rWvH2oYceUs+ePdW5c2eFhYXp4MGDSk1N1YsvvqgZM2a49x80aJDuuOMONWvWTHfddZecTqd27dqlgQMHatKkSWd9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pEkTh8dwcXHBjBkzrOtd5ebmYuTIkQCK1vj617/+BQ8PD7v9hg8fjtTUVOv3JpMJCxYsgKurK9q0aXPZ87oSy22ZV3p9REREREScQQu7i4jITdG+fXsAgL+/Px555BG77bVr14abmxvuuece7Nu3D/PmzUP37t0RGBiI4cOHAwDc3d3x8ssvIyEhAWvWrLHue//99wMA4uPj7cbdvXs3tm7disaNG6N169Y4c+YMzpw5c9m5pqSk2LVZ9nFxsf39T/Xq1QEAEydOxNdff43KlSvbbL/jjjtKPE5YWJjN95GRkSgoKAAAVKpUCS1atMCBAwds+uzZs6fEuXl7e5d4LBERERGR252KWCIiclNYFmn/4IMPLtuvatWqAIDly5cjPT0d/fr1w8iRI1FYWIinnnoKNWrUwJQpU2A2m637WApFOTk5duOlpaVZi1vVqlUDAGuh6GpY9jEYDNa2xo0bY+zYsQCA9PR0LF68GOnp6TCbzbjrrrvQv39/uLmV/KP20qKb2WxGUlIS6tSpYzPf4tLT00ucm6ur61WelYiIiIjI7UO3E4qIyE1hKb54enrCYDCUmK1btwIouk3u559/Rv369a23Czq6lRAALly4AKDo6iVHLE8+dFQAKu7iuo2XLTwV9+6771oLaJ9++inefvttjBkzBmPHjsX69euvuH/dunVtvnd1dUXNmjWtBborzbcsBQUF4dSpUwCA/v3726w9YHndLR588EGsWrUKqampyMrKQkREhPVKu0u5urpi8ODB2LlzJ9LT05GVlYV9+/ZhyJAhNgVBEREREZErURFLRERuiqioKABA586dS73PvHnzABQVr2rWrIkePXrgt99+w2+//WbT7/fffwdgXxQCiooolmPu27fvsscrLCwEANx555122yy3DRZ399132xynOH9//8seCwACAgJsvu/UqZO1gJaTk4MjR46UuK+l0FVWV19FRETgyy+/BADs378fwcHB1uzfv9/ar02bNtixYwcqVqyIuXPnYtWqVejUqRM2b96Me+65x2ZMNzc3rFq1Cl9//TWqVauGhQsXYvbs2db1wC4tRoqIiIiIXJYzVpOH81frVxRFUW5C/ACOuPi1efPmzM3N5bFjx9isWTO7vu7u7tYnCxbPsWPHmJWVxdGjR5Mk33nnHbs+xZ9O2K5dOwJ/PZ3wk08+IUlu2LDB2t/y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rW1HjhzB9u3bce+999qsmTFs2DAAwOuvv4709HSbcebPn4/o6Gj07dvX4XHee+89ZGdnX9XcRERESlL852Bx586dAwC7daws7Zey9IuPj3e43dJerVo1m/4lHb+k9svNAQC++OIL/PDDD7j33nuxfv16TJ48GcHBwQgODsapU6dQoUIFh/td+vMYAAoKCkrcZjabAQDu7u4lzkVERETEWdycPQEpOw8//DAAICwszG5bTEwMzp49iyZNmsDT0xMZGRmlGjMmJgYXLlywaz9z5gwAwNvbG1lZWQCA9u3bIy8vD88//7zDsTw8PFC7dm1Ur14dKSkp1vacnBwcOHCgVPMREREpjTp16jhsr1u3LgD7As7FK8XtWPrVrVsXhw8fttter149m36Wn68lHb+k9svNoVatWhg2bBgOHjyIDh06IDMz02b7yy+/XOKYIiIiIuWJiljlSGl+W+zj44Nq1aqVuoiVlpbmsN3yW1xXV1drW40aNeDu7o7g4ODLjlm1alWbItb58+dLNRcREZHSevjhh1G1alW7gk9AQAAAIDo6ulTjREdHo0+fPggICLD7JZGXlxceeugh5OTk4MiRIzbjdurUyW4sg8GADh06XO2poEmTJnB1dcWGDRvszqdBgwZo0qTJVY8pIiIicjvS7YTlSPHfFjty6W+Lb8TxU1JSYDAYLpvTp0/b7FfSb55FRESuVbVq1TBmzBibNl9fX/Tt2xdpaWlYvnx5qcb54YcfkJeXh7feegtNmza12TZu3Dh4eXlZ+wDA9u3bceLECTz22GP4xz/+YdN/4MCBaN68+VWfy6lTpwAUFcZcXP76q1uVKlUwZ84c3fonIiIifxu6EqsciY6Ohq+vLwICAvDHH3/YbGvatCkaNmyIP/74w1rEMpvN8PDwKLPjR0VF4amnnsK9997r8JYLERGRG8EPQACACACWa5G3bNmC1157De3atcP27dtRr149vPjii3BxccGgQYMc3irvyJ9//ol33nkHX3/9Nfbt24eff/4ZiYmJ8Pf3R4cOHXDkyBEMHz7c2p8kXnvtNaxbtw6hoaFYunQpTp48iVatWqFbt25Ys2YNevbsabPW5JUkJCTgxx9/xMsvv4z9+/djw4YN8PLyQrdu3WAymRAdHY3WrVuXejwRERGR25WuxLrN+QEYcfHrt99+CwAYPXo0atasae3j4uKCzz//HK6urvjf//5nbU9OTkatWrVQsWLFMpnLlClTAABz5syxXvVVXOXKldGuXbsyOZaIiAhQ9PNvM4BxF79aSjlGoxEdOnRAamoq3njjDbzwwgvYt28fevbsiZ9//vmqjjFz5kx0794dUVFR6NOnD959913Url0bkyZNQvv27ZGammrTf8uWLfD390dERASefPJJDBs2DJUqVUKXLl2sv2Qq7W39Fv/v//0/jB8/HpUqVcKQIUPwxBNPYNWqVejQocMNu8JaRERE5JbjjEciwvmPnCwX8QOYBTD/4lc/gJ9++ilJ8ty5c5wxYwY/++wzHjhwgCS5detWuru7W/efMGECSTIiIoIff/wxR40axaeeesq6nSTDw8MdHjskJIQk6ePjY9P+wQcf0Gw2MzMzkz///DM/++wzfvXVV1y1ahUvXLjAtWvX2vQ3Go00Go1Ofy0VRVGU2zMjUPRzkADzAH7q40OSDAkJcfrcHCUyMpL5+fmsXLmy0+eiKIqiKEq5zB5n1HluVnQ74W0sAIAHiu4J5cXvR4wYgejoaAwdOhSvvvoq3N3dcfLkSYwaNQqTJ09Gfn6+df9PPvkE1apVw9NPP42OHTvCzc0N8+bNw6pVq655TpMmTcL27dsxbNgwdOrUCb1790Z6ejpiY2Mxe/ZsLFy48LrOWUREpLgIAHko+jmYDyDKqbMpUqlSJXh4eNhdIRUYGIiOHTtizZo1yM7OdtLsRERERG5juhLr9o3lSqw8/HUllrPnpCiKotx+CQwMJEkGBgbelsf2Q9EVWX4AfW6BK7GaN2/O7Oxsrly5kpMnT+bUqVO5detWkmRKSgpbtGjh9PdcURRFUZRym3J9JZbWxLqNRQHoCmDMxa+3wm+fRUREbrYoABWCgrCThJ+fn7Ong4SEBCxYsAAtW7bE66+/jjfeeAM+Pj749ttv0aZNGxw9etTZUxQRERG5Lel2wttcFFS8EhGR67N8+XJERUUhPj7+yp1vcefOnYPBYHDqHNLS0vD66687dQ4iIiIi5ZGKWCIiIn9zGRkZV/20PBERERGRm023E4qIiJQxHx8fkERISAiaNGmCxYsXIykpCRkZGVi/fj3uu+8+AEDNmjUxa9YsxMXFIScnB7t370ZAQIDNWPXq1cNHH32EyMhIxMfHIzc3F7Gxsdbb1S53bB8fH/z4449ITExETk4Ofv31Vzz55JN2+wQGBoIkAgMDbdqNRiOMRiM8PT0xffp0nD17Fjk5Ofj999/x1ltv2Y3j7+8PkggKCnL4uljGK42AgADMmjULv//+O9LT05GdnY2DBw9izJgxqFChgt24wcHBAICIiIhL1+G0qlSpkvUBKJmZmbhw4QJ27NiBl156qVRzEpHrd+nnQEmfP38nISEhIAkfHx9nT0VE5JanK7FERERukLvuugu7du3CkSNHMG/ePNx111345z//iYiICLRv3x7r1q1DRkYGFi1ahOrVq+Oll17C2rVrcc899+DMmTMAgEcffRQjRoxAeHg4li5diszMTDRr1gzPPfccevXqhY4dO+LAgQN2x/bx8cHu3bvxxx9/4Pvvv0f16tXx4osvYuXKlXj88ccRERFRqnPw8PDApk2bUK1aNfz000/w8PBAnz59MG3aNDRv3hxDhw4ty5fMavjw4WjRogV27NiB1atXo2LFiujYsSPGjh2LgIAAPP744ygsLAQAfPnll3jmmWcQEBCAefPm4dSpU3bjeXl5ISwsDA8//DD27t2Lb7/9Fi4uLnjiiSfw448/4r777sNHH310Q85FRG4vPj4+OHXqFObNm4cBAwY4ezoiIlKcnk6oKIqiKGUbyxPySPLDDz+02TZ69GiSZHJyMmfOnEmDwWDd1q9fP5LkF198YW2rVasWq1ataneMVq1a8cKFC1yzZk2Jxx4zZozNtu7du5MkV69ebdNe0hMCjUYjSXLbtm308PCwtnt7e/PEiRMkyc6dO1vb/f39SZJBQUEOXxej0Uij0ViqYzdu3NjhGB9//DFJ8oUXXrBpDwoKIkn6+/s73C8kJIQk+f7779u0V6hQgWvXrqXZbOaDDz7o9D87ilLec+nngKenJ5s3b05PT0+nz82Sm/2UU8vnk4+Pj9PPXVGUchE9nVBERESuntFoxKeffmrTNn/+fABAhQoV8P7779vc8rZw4ULk5+fjoYcesrYlJiYiMzPTbuwDBw4gLCwMXbp0gZub/YXVp06dwieffGLTtmHDBvz5559o27btVZ3HyJEjkZeXZ/0+NTUV48aNA4AbdpVCSbcdTpkyBQDwxBNPlHqs6tWro1+/fvj111/x3//+12Zbbm4uhg8fDhcXF7zyyivXPmERuSYZGRk4duyY1uUTEZFSURFLRETkBtm/f7/1ljeLuLg4AMDx48ftilOFhYVISEhAw4YNbdp79uyJ0NBQxMXFIS8vz/qbqF69eqFixYqoWbNmqY4NAGfOnIG3t3epzyE/Px87duywa7fcjti6detSj3U1KleujJEjR2L37t1IS0uD2WwGSaSkpAAAGjRoUOqxHnnkEbi5uVnX67o0L7zwAgA4XGNMRK7NkCFDcOjQIeTk5ODs2bOYPn06PD097fpdaU2+O+64A5MnT4bRaEReXp7Nmnuurq4YPHgwdu7cifT0dGRlZWHfvn0YMmRIiU8pfeSRR/DTTz/h7NmzMJlMiIuLw/r16/H8888DAIKCgqy3JPfv39/mt/+XzrF79+5YvXo1EhMTYTKZcOLECUyaNAleXl4Oj921a1ds3boVmZmZSE5OxvLly9G8efNSv6YiIqI1sURERG6Y9PR0uzaz2VziNgAoKCiAu7u79fthw4Zh6tSpSElJwcaNG3H69GlkZ2eDJJ555hk89NBDdgudA0BaWlqJ47u6upb6HJKSkhwWw86dOwcAJf5j7Xq4ubkhLCwM7dq1w8GDB7Fo0SIkJiYiPz8fABAcHOzwnEtSo0YNAEDbtm0vexVa1apVr2/iIgKgaJ26t99+G3FxcZg9ezby8/PRu3dvtGvXDh4eHjZXdl6Oh4cHwsLCUL16dWzYsAEZGRnWqzTd3Nzwyy+/4B//+AeOHj2KhQsXwmQyoUuXLpgxYwbatWuHV1991Wa81157DTNnzoTZbEZoaChiYmJQu3ZttGnTBm+++SYWL16MiIgIfPnll3jnnXewf/9+rFixwrr//v37rf89ZswYjB07FsnJyVi1ahXOnz+PVq1a4f3330fPnj3Rvn17XLhwwdq/T58+WLRoEfLy8rBo0SLEx8ejU6dO2Llzp8N1DUVEpATOuIcRzr9HVFEURVFuWK60ngpJhoeHO9xWfL0YV1dXpqSkMC4ujnXr1rXru27dOrt1VK507PDwcLLoh7E1l1sTKy8vjy4uLiWeY3R0tLWtc+fOJMlx48Y5PHZqamqp1sTq06cPSfLbb7+1G6Nu3boOX7/LrYn15JNPkiQnT57s9D8bilLe0759e5JkTEwMvb29re0VKlTgjh07SNLmc+BKa/Jt3LiRlStXtjuO5f/5adOm2XxGubi4cO7cuSTJXr16WdtbtmzJvLw8Jicn895777Ubr0GDBtb/vtLnaEBAAEly+/bt9PLystlmOZ/iaxtWqVKFSUlJzMvLo6+vr03/L774ghZaE0tRlDKK1sQqicFg+K/BYDhqMBgOGAyG5QaDodr1jCciIiJ/qVmzJry9vbFjxw7rlU8WVapUwcMPP3zD5+Du7o4OHTrYtQcEBAAAoqOjrW2pqakAgDvvvNOuf9OmTVGtWun+mnD33XcDAJYtW2a3zd/f3+E+livcHF1ltnv3bpjNZnTu3LlUxxeRa2dZJ2/8+PHWzwSgaP25kSNHXvV47733HrKzs23aDAYD3nrrLcTHx+Pf//63zdWihYWFeO+991BYWIi+ffta2wcPHgx3d3eMGzcOhw8ftjtObGxsqec0bNgwAMDrr79ud1Xt/PnzER0dbXPs3r17o0aNGli4cCH27t1r0z84OLjEK2dFRMTe9d5OuBHASJIFBoPhMwAjAQy//mmJiIjcXvwABACIABBfRmOeP38eWVlZ8PX1RZUqVZCVlQWg6DaaqVOnolatWmV0pMubOHEiunbtar0FyNvbG6NHjwYAhISEWPsdPXoU6enp6N27N2rVqoXExEQAQMWKFTFt2rRSH8+yHk1AQABWrVplbW/cuDE+++wzh/skJycDABo1amS3LTExEQsWLMCrr76K0aNHY8KECXa3SDZp0gSFhYXWY4vItbEU17ds2WK3LTIyEgUFBaUeKycnx+Gtdvfccw9q1KiB48ePWz+LHO1bfJ07Pz8/AMDatWtLffyStG/fHnl5edZ1tC7l4eGB2rVro3r16khJSbnsa5KRkYH9+/dbfzEgIiKXd11FLJIbin0bBeC565uOiIjI7ccPwGYAHgDyAPS9fPdSI4lp06Zh5MiROHjwIFauXAkPDw906dIF1atXR1hYGB577LEyOppjcXFxqFChAg4dOoTQ0FC4u7vjueeeQ/369fHVV19h27Zt1r4FBQWYOnUqxowZg+joaCxfvhxubm7o1q0b4uLiSn2lwy+//IKYmBi89957eOCBBxAdHY1GjRrhqaeewurVq+Hj42O3T3h4OMxmMyZOnIj777/fegXI+PHjAQBDhw5Fs2bNMG7cOPzrX/9CZGQkEhISUL9+fbRs2RJt27bFSy+9pCKWyHWyrJOXkJBgt81sNiMpKanUY50/f95hu2Wdu3vuuQfBwcEl7l98nTvLlaBXc8VVSWrUqAF3d/fLHtty/JSUlMu+JgDsrrQVEZGSleXTCf8PQIm/2jAYDAMNBsMeg8GwpwyPKSIi4nQBKCpguQFwR1FRq6x89NFHePfdd5GTk4NBgwbh2WefxZ49e9C2bVucPn26DI/kWF5eHh5//HFs2LABL730EgYNGoT09HQMGzYMQ4cOtesfFBSEESNGwGQyYeDAgejZsyeWLl2KJ554wrow+5VkZ2fjsccew4IFC3Dfffdh2LBhaNWqFcaNG4d+/fo53Ofo0aMIDAzEuXPn8Oabb+KTTz7BJ598Yt1+4cIF+Pv7Y+jQoUhKSkKfPn3w7rvvokuXLrhw4QLeeecdbNy48dpeJBGxstxeV6dOHbttrq6uDp+mWpKi5ftKPsayZctgMBhKTJMmTaz7WG7Zu5onm5YkPT0dKSkplz22wWCwfkZf7jUBgLp16173nERE/jautGgWgE0ADjlI72J9RgFYDsBQmoW44PyFzhRFURSlzOIHMAtg3sWvfrfAnMoixReZVxRFKU1mz55Nkuzfv7/dNn9//6ta2L2kzx/LQy9iY2Pp5uZWqnlNmzaNJPnOO+9csW/Dhg1Jkt99953D7b/88gtJOlwg3lFeeeUVkuS8efPstnl6ejI1NVULuyuKUpb5ey/sTvJxkvc7yEoAMBgM/QE8BaAvS/p1iYiISDkWBaArgDEXv0Y5dzoiIk4zb948AMCoUaPg7e1tba9QoQImTpxYJscwm82YPn066tevj2nTpqFixYp2ferWrWuzJtbMmTORn5+Pjz76yKbdovgVWqmpqSgsLHS4xh4ATJkyBQAwZ84c1KtXz2575cqV0a5dO+v3K1euREpKCl555RX4+vra9A0ODi71Qy9EROQ618QyGAz/APABAH+S2VfqLyIiUl5FQcUrEfn7sj7cYscOTJs2DcOGDcOhQ4ewZMkS5Ofno3fv3khNTUVcXFyZHG/cuHF48MEHMXjwYDz99NMICwtDbGwsateujWbNmqFjx44YNWoUjhw5AgA4cuQI3nzzTXzzzTeIjo7GypUrERMTgxo1auCRRx5BRkaGdY3BrKws7Nq1C507d8YPP/yA48ePw2w2IzQ0FAcPHkRYWBiGDx+OiRMnIiYmBmvWrIHRaETVqlXh4+MDf39/REZGokePHtbxBg4ciEWLFmHbtm1YtGgR4uPj0alTJ9x///3YsmVLiU9eFRGRS1zPZVwATgA4A2D/xXyj2wkVRVEUpXxEtxMqilKaWG6pzsdft1QPGTKEhw8fpslkYmxsLGfMmEFPT0+7z5VruZ2wePr168dNmzYxOTmZubm5PHv2LLdt28aRI0eyYcOG9nP18+OSJUuYkJDA3NxcxsbGcu3atezTp49Nv6ZNmzI0NJRJSUk0m80O59ixY0cuWrSIsbGxzM3N5fnz5xkdHc3JkyfT19fX7tiPP/44t23bxqysLKakpHDFihVs3rw5Q0JCdDuhoihlmXJ9O6HBGXcAGgyGm39QERH52yOJiIgIdOnSxW6bj48PTp06hXnz5mHAgAFOmJ2IyO1pBIBxKLrFIx9Ft1Z/6tQZiYj8re0l2cbZk7hRrut2QhERERER+XuLAJCHol//51/8XkRE5EZQEUtERERERK6Z5eEWASgqYGl9QBERuVGu+HRCERGRm8HHxwckERISgubNm2P58uVITk5GZmYmtm3bhm7dutn09/T0xH/+8x9s3rwZZ86cQW5uLs6fP4+VK1fCz8/Ppm9gYKBlTUYEBATY3FcfFBSEoKAgnDp1CgDQv39/m+2BgYE2Y3Xv3h2rV69GYmIiTCYTTpw4gUmTJsHLy8vunIxGI4xGI+644w5MnjwZRqMReXl5CAoKAgAEBQWBJPz9/dGnTx/s2rULWVlZSE5Oxo8//oj69euX1csrInJDRaHoFkIVsERE5EbSlVgiInJLady4MXbu3ImDBw9i1qxZqFevHl588UWsXbsWr7zyCn7++WcAQMuWLTF+/Hhs3boVq1evRmpqKho1aoRevXqhR48eePrpp7F+/XoAwP79+xEcHIzg4GDrulcWERERAIAvv/wS77zzDvbv348VK1ZYt+/fv9/632PGjMHYsWORnJyMVatW4fz582jVqhXef/999OzZE+3bt8eFCxdszsfDwwNhYWGoXr06NmzYgIyMDBiNRps+b775Jnr16oXQ0FBs2bIF7dq1w0svvYQHH3wQDz30EPLy8sryJRYRERERuT05YzV5OH+1fkVRFOUWi4+PDy0mTZpks83X15d5eXlMSUnhHXfcQQD09PRkjRo17MZp0KABY2NjefjwYbttJBkeHn7Z44eEhDjcHhAQQJLcvn07vby8bLZZnq71xRdf2LQbjUaS5MaNG1m5cmW7MYOCgkiS6enpvP/++222LViwgCT5/PPPO/29URRFURRFUW6blOunE+p2QhERuaWkpaXh448/tmnbu3cvFixYAG9vb/zzn/8EAGRkZCA5Odlu/9jYWCxZsgQtW7bEnXfeWWbzGjZsGADg9ddfR3p6us22+fPnIzo6Gn379nW473vvvYfs7OwSx542bRoOHTpk0zZnzhwAQNu2ba9n2iIiIiIi5YZuJxQRkVvKvn37kJmZadceERGB/v37o3Xr1vjuu+8AAB06dMDbb7+N9u3bo3bt2qhQoYLNPg0aNMCZM2fKZF7t27dHXl4enn/+eYfbPTw8ULt2bVSvXh0pKSnW9pycHBw4cOCyY+/Zs8euzTJvb2/v65i1iIiIiEj5oSKWiIjcUhISEhy2nzt3DgCsC6g/88wzWLJkCUwmEzZu3IiTJ08iKysLhYWFCAgIQEBAgF1R63rUqFED7u7uCA4Ovmy/qlWr2hSxzp8/f8Wx09LS7NoKCgoAAK6urlc3URERERGRckpFLBERuaXUqVPHYXvdunUBwHor37hx45CXl4c2bdrg6NGjNn3r1auHgICAMp1Xeno6XFxcUKNGjavaz/JURBERERERuT5aE0tERG4pDz/8MKpWrWrXbilKRUdHAwDuvvtuHD582K6AZTAY0KlTJ4djm83mEq9sMpvNAEq+8ikqKgrVq1fHvffeW6rzEBERERGRsqUiloiI3FKqVauGMWPG2LT5+vqib9++SEtLw/LlywEAp06dQrNmzVCvXj2bvsHBwbjvvvscjp2cnFziYu+pqakoLCxEo0aNHG6fMmUKgKIF1y89JgBUrlwZ7dq1u/zJiYiIiIjINdPthCIi4jR+AAIARACIv9i2ZcsWvPbaa2jXrh22b9+OevXq4cUXX4SLiwsGDRqECxcuACgqKs2aNQvR0dFYunQp8vPz0bFjR9x7770IDQ1Fr1697I63efNmvPzyywgNDcW+ffuQn5+PrVu3Ytu2bcjKysKuXbvQuXNn/PDDDzh+/DjMZjNCQ0Nx8OBBhIWFYfjw4Zg4cSJiYmKwZs0aGI1GVK1aFT4+PvD390dkZCR69Ohxc148kdsUSURERKBLly7OnoqIiIjcbkje9ACgoiiK8veOH8AsgPkXvz7j40OSDAkJYYsWLbhixQqmpKQwKyuLkZGR7N69u90YgYGBjI6OZmZmJhMTE7ls2TLef//9DAoKIkn6+/vb9K9VqxYXLFjAc+fOsaCggCQZFBRk3d60aVOGhoYyKSmJZrOZJBkYGGgzRseOHblo0SLGxsYyNzeX58+fZ3R0NCdPnkxfX1+bvkajkUajscTXoKR5AqBPsdfD2e+VopRlSDI8PNzp81AURVGUcpo9zqjz3KwYnLHgrMFguPkHFRGRW8oIAONQdElwPoAvfHww/NQpzJs3DwMGDHDu5ETkhtGVWCIiIjfUXpJtnD2JG0VrYomIiFNEAMhDUQErH0CUU2cjcvt75JFH8NNPP+Hs2bMwmUyIi4vD+vXr8fzzzwMAfHx8QBIhISFo1qwZfvrpJyQkJMBsNsPf3986jre3NyZMmIDDhw8jOzsbaWlp2LRpE7p162Z3TE9PT/znP//B5s2bcebMGeTm5uL8+fNYuXIl/Pz8bPoGBgZan9YZEBBg81vVoKAgm75t27bF4sWLER8fj9zcXJw+fRrffPONw/XoRERE5O9Da2KJiIhTRAHoCvs1sUTk6r322muYOXOmdR23mJgY1K5dG23atMGbb76JxYsXW/s2bdoUu3btwvHjx7FgwQJUqlQJGRkZAIBGjRohIiICjRs3xtatW7Fu3TpUqVIFTz31FNatW4dBgwZh7ty51rFatmyJ8ePHY+vWrVi9ejVSU1PRqFEj9OrVCz169MDTTz+N9evXAwD279+P4OBgBAcH49TFqy4tIiIirP89YMAAzJ49G7m5uQgNDcWZM2fQrFkzvPbaa3j66afh5/f/27v36Kjqe///r00SgsiBQACVixELKohYESQcgQS0qNQSisdLq23AQ22Bira2lkshUOCnVg+ioqinZewRLGpAiWhEMAkXMfoDIncEIZESAoaQCxByG97fP0KmjBNCCElmEp6PtV7LzGfv/dnv2a7tMu/sS6T+9a9/1e0BBQAAgYlnYhFCCAmE8AwoQmqW7t27W0lJieXk5FiPHj18lnfs2NGkf59jZmazZ8+udK7k5GRzu912//33e423atXK0tLSrLCw0Nq3b+8Zb9mypYWHh1e6z8zMTNuxY4fPsqqeLH0VUwAAIABJREFUidWtWzcrLi62PXv2WIcOHbyWDRkyxMrKymzp0qV+P+aEEEJIAKdRPxOLJhYhhBBCSAPOiy++aGZmjz/+eJXrVTSxsrKyrGnTpj7Le/XqZWZm77zzTqXbDx8+3MzMxo4dW626XnjhBTMz69y5s9d4VU2sOXPmmJnZsGHDKl2+dOlSKy0ttRYtWvj9uBNCCCEBmkbdxOJ2QgAAgAas4tlTiYmJ1Vp/8+bNKikp8Rnv37+/JKlVq1Y+z6iSpHbt2kkqv4XwTP/5n/+pxx57TP3791f79u0VGhrqtbxjx47Vvv2vooaoqCj17dvXZ3n79u0VHBysa665Rps2barWnAAAoPGgiQUAANCAhYWFSZIyMzOrtf6hQ4cqHQ8PD5ckDR06VEOHDj3r9i1atPD8PGLECMXHx6uoqEgrV67U3r17deLECZ06dUrR0dGKjo72aWpVpaKGJ598ssr1zqwBAABcPGhiAQAANGB5eXmSyq94+vrrr8+5/ulHO/jIz8+XJE2YMEEvvfRStfY9c+ZMlZSUqE+fPtq1a5fXsiuuuELR0dHVmuf7NbRs2VLHjh07r20BAEDj18TfBQAAAKDmUlNTJUl33XVXrcwzcODAam/TtWtX7dixw6eB5TiOBgwYUOk2brdbQUFBtVYDAAC4eNDEAgAAaIAiJU2UtH7+fJWWlmrq1Kk+z6uSyq/Qqo6NGzdqzZo1GjlypEaPHl3pOj179vQ8G0uSMjIy1K1bN11xxRVe602fPl3XX399pXPk5OSoc+fOlS6bN2+eSkpK9Pzzz6tbt24+y0NCQs7aHAMAAI0ftxMCAAA0MJGSPpXUVFLJzp16btw4Pfnqq0pLS9OyZcu0Z88ehYeHq2/fviooKNCQIUOqNe/Pf/5zJSUlacGCBZowYYK++OIL5eXlqVOnTurVq5duuOEGRUZGKjs7W5L0/PPP67XXXlNaWpqWLFmi0tJS3XrrrerRo4cSEhI0fPhwn318+umn+tnPfqaEhARt2rRJpaWlWrNmjdauXauvv/5aDz/8sBYsWKDt27fr448/1u7duxUSEqIrr7xSAwcOVHZ2dqXNOgAAcBHwxysR5f9XThJCCCGENNhMlKxUMpOs5PTnyMhIi4+Pt8OHD1txcbFlZmZaYmKi3XPPPSbJIiIizMzM5XJVOXeLFi1s0qRJtmHDBjt27JgVFhbavn37bPny5farX/3Kmjdv7rV+bGyspaWl2fHjxy07O9uWLl1qPXv2tLi4ODMzi4qK8lq/Xbt2tmjRIjt06JCVlZWZmVlcXJzXOj179jSXy2UZGRlWVFRkOTk5tnXrVnv11Vdt8ODBfj/+hBBCSABngz/6PPUV52wP96xLjuPU/04BAAAaiYorsUIklUq6TVKqXysCAAABYqOZ9fF3EXWF2wkBAAAamFSVN66iJaWIBhYAALg40MQCAABogFJF8woAAFxceDshAAAAAAAAAh5NLAAAAKAKLpdLZqaIiAh/l3JOycnJ8sczbwEAqA80sQAAANCg1HajJi4uTmamqKioWpsTAADUPppYAAAAQBUmTZqk6667TpmZmf4uBQCAixoPdgcAAACqcOjQIR06dMjfZQAAcNHjSiwAAIAGom/fvlq8eLEOHDigoqIiHTx4UCtWrNC9997rtd69996r1atXKy8vT4WFhdqyZYsmTpyopk2b+syZnp6u9PR0XXrppZozZ47279+vwsJCpaWlKSYmRpIUFBSkyZMna/fu3Tp58qS++eYbjR8/3meuqKgomZni4uIUGRmplStXKi8vTwUFBfr444918803+2xT1fOmzpxPkiIiImRmio6OliSZmSfJycme7aKjo/Xaa69p+/btys/PV2FhobZu3app06YpNDTU5/tPnz5dkpSSkuI1Z3VqrMmxbt68uf7617/q22+/VVFRkfbs2aMnn3zSZ31Jio2NVXx8vPbu3avCwkLl5+dr3bp1evDBBytdHwCAxowrsQAAABqAMWPGaP78+XK73UpISNCePXvUvn179enTR+PGjdO7774rSZo9e7YmT56s7OxsvfXWWzp+/LjuuusuPfXUU7rjjjs0dOhQlZaWes0dEhKilStXqk2bNlq2bJmaNm2qn/3sZ1qyZImGDh2qcePGqV+/fkpMTFRxcbHuvfdezZs3T9nZ2XrnnXd8au3Xr58mTZqkVatW6eWXX1bXrl01cuRIDRo0SEOHDtW6detqdAzy8vI0ffp0jRo1SldddZWn+SRJGRkZnp//9Kc/6brrrtP69ev14YcfqlmzZrr11ls1Y8YMRUdH6/bbb9epU6ckSXPnztWIESMUHR2tN954w2uec6npsV6xYoU6dOigxMRElZWVacSIEXrmmWfUrFkz/eUvf/Faf/78+dq+fbvWrFmjrKwshYeHa9iwYVq4cKGuvfZaTZs27byPIwAADdaZf22qr0gyQgghhBBSvXTv3t1KSkosJyfHevTo4bO8Y8eOJskiIyPNzOzbb7+1yy67zLM8KCjIEhISzMxs0qRJXtump6ebmVlCQoI1bdrUMz5gwAAzM8vJybEvv/zSWrVq5VnWpUsXKy4u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CD3++OP66quv9P7773uWvf/++woLC1NKSoqWL1+uIUOG6PPPP1daWpquvPJK3XPPPSopKdEPf/hD7d6927Pd/fffrwULFig5OVkZGRk6fvy4unXrprvvvlslJSW69dZbtWXLlmrtf/PmzfV3MAAAAICqbTSzPv4uos6c+Rfl+ookI4QQQqqbiIgIMzNzuVw+y6KioqxCbGys17JHHnnEzMxefvllr/F27dpZixYtfObq1auXHTt2zD766KNq758QQgghhJAAygZ/9HnqK9xOCABoFNatW6d//OMfXmMLFixQaWmpbrnlFq/x7OxsHT9+3GeOLVu2KCkpSYMHD1ZwcHCd1gsAAADg/NDEAgA0Chs2bPAZKysr0+HDh9W6dWufZcOGDVNCQoIOHjyokpISz193hg8frmbNmqlt27b1UTYAAACAauLPzACARiEvL6/S8bKyMgUFBXmNTZgwQS+88IKOHj2qlStXav/+/SosLJSZacSIEfrhD3+o0NDQ+igbAAAAQDXRxAIAXFSCgoI0ffp0ZWVlqXfv3jp06JDX8sreZggAAADA/7idEAAQ8NxutyT5XFFVE23btlXr1q21fv16nwbWpZdeqt69e9fp/gEAAADUDE0sAEBAipQ08fQ/c3NzderUKV155ZUXPO93332nEydO6Oabb9all17qGQ8ODtYLL7ygdu3a+WxTm/sHAAAAUDPcTggACDiRkj6V1FRSiaTbTpzQF198oYEDB2rhwoXavXu33G63EhISzntuM9OLL76oSZMmaevWrVq2bJmaNm2qwYMHq02bNkpKStKQIUO8tjlRxf63bt1aG18ZAAAAwDlwJRYAIOBEq7yBFSwp5PTnX/ziF/rwww915513Ki4uTrNmzar01r/qmDp1qn7/+9/r5MmT+vWvf62RI0dqw4YNuuWWW7R///5Kt6nN/dc2l8slM1NERIRnLCIiQmYml8vlx8oAAACA2uOYWf3v1HHqf6cAgAaj4kqsEEmlkm6TlOrXigKby+XSqFGjdNVVV+nbb7+VVN7EysjI0BtvvKHRo0f7uUIAAADUk41m1sffRdQVbicEAAScVJU3rqIlpYgGFgAAAACaWACAAJUqmlcAAAAA/o1nYgEAUEM/+clPtGrVKh08eFBFRUXKzMxUSkqKxo4d61knOTlZZqamTZtq5syZ2rdvn4qKivTNN99o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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 利用PCA算法进行降维\n", "from sklearn.decomposition import PCA\n", "X_reduced = PCA(n_components=2).fit_transform(sg_vec)\n", "\n", "# 绘制所有单词向量的二维空间投影\n", "import matplotlib.pyplot as plt\n", "import matplotlib\n", "\n", "fig = plt.figure(figsize = (20, 10))\n", "ax = fig.gca()\n", "ax.set_facecolor('black')\n", "ax.plot(X_reduced[:, 0], X_reduced[:, 1], '.', markersize = 1, alpha = 0.4, color = 'white')\n", "# 绘制几个特殊单词的向量\n", "words = list(w2i.keys())\n", "# 设置中文字体,否则无法在图形上显示中文\n", "for w in words:\n", " if w in w2i:\n", " ind = w2i[w]\n", " xy = X_reduced[ind]\n", " plt.plot(xy[0], xy[1], '.', alpha =1, color = 'red')\n", " plt.text(xy[0], xy[1], w, alpha = 1, color = 'white', fontsize = 20)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# NGram词向量模型\n", "\n", "本文件是集智AI学园http://campus.swarma.org 出品的“火炬上的深度学习”第VI课的配套源代码\n", "\n", "原理:利用一个人工神经网络来根据前N个单词来预测下一个单词,从而得到每个单词的词向量\n", "\n", "以刘慈欣著名的科幻小说《三体》为例,来展示利用NGram模型训练词向量的方法\n", "- 预处理分为两个步骤:1、读取文件、2、分词、3、将语料划分为N+1元组,准备好训练用数据\n", "- 在这里,我们并没有去除标点符号,一是为了编程简洁,而是考虑到分词会自动将标点符号当作一个单词处理,因此不需要额外考虑。" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T06:12:24.844179Z", "start_time": "2019-04-07T06:12:24.840626Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "with open(\"../data/3body.txt\", 'r') as f:\n", " text = str(f.read())" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T06:12:26.106850Z", "start_time": "2019-04-07T06:12:25.963215Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7754\n" ] } ], "source": [ "import jieba, re\n", "temp = jieba.lcut(text)\n", "words = []\n", "for i in temp:\n", " #过滤掉所有的标点符号\n", " i = re.sub(\"[\\s+\\.\\!\\/_,$%^*(+\\\"\\'””《》]+|[+——!,。?、~@#¥%……&*():]+\", \"\", i)\n", " if len(i) > 0:\n", " words.append(i)\n", "print(len(words))" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T06:12:25.377559Z", "start_time": "2019-04-07T06:12:25.373378Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "'八万五千三体时(约8.6个地球年)后。\\n\\n元首下令召开三体世界全体执政官紧急会议,这很不寻常,一定有什么重大的事件发生。\\n\\n两万三体时前,三体舰队启航了,它们只知道目标的大致方向,却不知道它的距离。也'" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "text[:100]" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T06:14:48.293883Z", "start_time": "2019-04-07T06:14:48.286653Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "八万五千 三体 时 约 86 个 地球 年 后 元首 下令 召开 三体 世界 全体 执政官 紧急会议 这 很 不 寻常 一定 有 什么 重大 的 事件 发生 两万 三体 时前 三体 舰队 启航 了 它们 只 知道 目标 的 大致 方向 却 不 知道 它 的 距离 也许 目标\n" ] } ], "source": [ "print(*words[:50])" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T06:12:26.856673Z", "start_time": "2019-04-07T06:12:26.844921Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(['八万五千', '三体'], '时'), (['三体', '时'], '约'), (['时', '约'], '86')]\n" ] } ], "source": [ "trigrams = [([words[i], words[i + 1]], words[i + 2]) for i in range(len(words) - 2)]\n", "# 打印出前三个元素看看\n", "print(trigrams[:3])" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:01:07.086627Z", "start_time": "2019-04-07T07:01:07.074396Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2000\n" ] } ], "source": [ "# 得到词汇表\n", "vocab = set(words)\n", "print(len(vocab))\n", "word_to_idx = {i:[k, 0] for k, i in enumerate(vocab)} \n", "idx_to_word = {k:i for k, i in enumerate(vocab)}\n", "for w in words:\n", " word_to_idx[w][1] +=1" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "构造NGram神经网络模型 (三层的网络)\n", "\n", "1. 输入层:embedding层,这一层的作用是:先将输入单词的编号映射为一个one hot编码的向量,形如:001000,维度为单词表大小。\n", "然后,embedding会通过一个线性的神经网络层映射到这个词的向量表示,输出为embedding_dim\n", "2. 线性层,从embedding_dim维度到128维度,然后经过非线性ReLU函数\n", "3. 线性层:从128维度到单词表大小维度,然后log softmax函数,给出预测每个单词的概率" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:01:38.819578Z", "start_time": "2019-04-07T07:01:38.783151Z" }, "code_folding": [], "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import torch.optim as optim\n", "from torch.autograd import Variable\n", "\n", "import torch\n", "\n", "class NGram(nn.Module):\n", " def __init__(self, vocab_size, embedding_dim, context_size):\n", " super(NGram, self).__init__()\n", " self.embeddings = nn.Embedding(vocab_size, embedding_dim) #嵌入层\n", " self.linear1 = nn.Linear(context_size * embedding_dim, 128) #线性层\n", " self.linear2 = nn.Linear(128, vocab_size) #线性层\n", "\n", " def forward(self, inputs):\n", " #嵌入运算,嵌入运算在内部分为两步:将输入的单词编码映射为one hot向量表示,然后经过一个线性层得到单词的词向量\n", " embeds = self.embeddings(inputs).view(1, -1)\n", " # 线性层加ReLU\n", " out = F.relu(self.linear1(embeds))\n", " \n", " # 线性层加Softmax\n", " out = self.linear2(out)\n", " log_probs = F.log_softmax(out, dim = 1)\n", " return log_probs\n", " def extract(self, inputs):\n", " embeds = self.embeddings(inputs)\n", " return embeds" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:14:30.758701Z", "start_time": "2019-04-07T07:02:06.973444Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "第0轮,损失函数为:56704.61\n", "第1轮,损失函数为:53935.28\n", "第2轮,损失函数为:52241.16\n", "第3轮,损失函数为:51008.51\n", "第4轮,损失函数为:50113.76\n", "第5轮,损失函数为:49434.07\n", "第6轮,损失函数为:48879.33\n", "第7轮,损失函数为:48404.71\n", "第8轮,损失函数为:47983.95\n", "第9轮,损失函数为:47600.01\n", "第10轮,损失函数为:47240.32\n", "第11轮,损失函数为:46897.53\n", "第12轮,损失函数为:46566.24\n", "第13轮,损失函数为:46241.59\n", "第14轮,损失函数为:45920.18\n", "第15轮,损失函数为:45599.50\n", "第16轮,损失函数为:45277.74\n", "第17轮,损失函数为:44953.10\n", "第18轮,损失函数为:44624.41\n", "第19轮,损失函数为:44290.34\n", "第20轮,损失函数为:43950.63\n", "第21轮,损失函数为:43604.48\n", "第22轮,损失函数为:43251.90\n", "第23轮,损失函数为:42891.99\n", "第24轮,损失函数为:42524.64\n", "第25轮,损失函数为:42149.46\n", "第26轮,损失函数为:41766.14\n", "第27轮,损失函数为:41374.89\n", "第28轮,损失函数为:40975.62\n", "第29轮,损失函数为:40568.36\n", "第30轮,损失函数为:40153.31\n", "第31轮,损失函数为:39730.61\n", "第32轮,损失函数为:39300.70\n", "第33轮,损失函数为:38863.39\n", "第34轮,损失函数为:38419.11\n", "第35轮,损失函数为:37968.16\n", "第36轮,损失函数为:37510.99\n", "第37轮,损失函数为:37048.06\n", "第38轮,损失函数为:36579.82\n", "第39轮,损失函数为:36106.78\n", "第40轮,损失函数为:35629.46\n", "第41轮,损失函数为:35148.57\n", "第42轮,损失函数为:34665.39\n", "第43轮,损失函数为:34180.25\n", "第44轮,损失函数为:33693.93\n", "第45轮,损失函数为:33207.48\n", "第46轮,损失函数为:32721.72\n", "第47轮,损失函数为:32237.36\n", "第48轮,损失函数为:31755.00\n", "第49轮,损失函数为:31275.05\n", "第50轮,损失函数为:30798.38\n", "第51轮,损失函数为:30325.62\n", "第52轮,损失函数为:29857.59\n", "第53轮,损失函数为:29394.65\n", "第54轮,损失函数为:28937.08\n", "第55轮,损失函数为:28485.72\n", "第56轮,损失函数为:28041.07\n", "第57轮,损失函数为:27603.33\n", "第58轮,损失函数为:27173.14\n", "第59轮,损失函数为:26750.82\n", "第60轮,损失函数为:26336.92\n", "第61轮,损失函数为:25931.60\n", "第62轮,损失函数为:25534.87\n", "第63轮,损失函数为:25147.07\n", "第64轮,损失函数为:24768.02\n", "第65轮,损失函数为:24397.92\n", "第66轮,损失函数为:24036.68\n", "第67轮,损失函数为:23684.69\n", "第68轮,损失函数为:23341.30\n", "第69轮,损失函数为:23006.46\n", "第70轮,损失函数为:22680.18\n", "第71轮,损失函数为:22361.95\n", "第72轮,损失函数为:22051.86\n", "第73轮,损失函数为:21749.46\n", "第74轮,损失函数为:21454.48\n", "第75轮,损失函数为:21167.06\n", "第76轮,损失函数为:20886.72\n", "第77轮,损失函数为:20613.04\n", "第78轮,损失函数为:20346.13\n", "第79轮,损失函数为:20085.52\n", "第80轮,损失函数为:19831.27\n", "第81轮,损失函数为:19583.16\n", "第82轮,损失函数为:19341.03\n", "第83轮,损失函数为:19104.43\n", "第84轮,损失函数为:18873.11\n", "第85轮,损失函数为:18646.91\n", "第86轮,损失函数为:18425.87\n", "第87轮,损失函数为:18209.80\n", "第88轮,损失函数为:17998.34\n", "第89轮,损失函数为:17791.97\n", "第90轮,损失函数为:17589.94\n", "第91轮,损失函数为:17392.24\n", "第92轮,损失函数为:17199.04\n", "第93轮,损失函数为:17009.97\n", "第94轮,损失函数为:16824.82\n", "第95轮,损失函数为:16643.87\n", "第96轮,损失函数为:16466.76\n", "第97轮,损失函数为:16293.54\n", "第98轮,损失函数为:16123.99\n", "第99轮,损失函数为:15957.75\n" ] } ], "source": [ "losses = [] #纪录每一步的损失函数\n", "criterion = nn.NLLLoss() #运用负对数似然函数作为目标函数(常用于多分类问题的目标函数)\n", "model = NGram(len(vocab), 10, 2) #定义NGram模型,向量嵌入维数为10维,N(窗口大小)为2\n", "optimizer = optim.SGD(model.parameters(), lr=0.001) #使用随机梯度下降算法作为优化器 \n", "#循环100个周期\n", "for epoch in range(100):\n", " total_loss = torch.Tensor([0])\n", " for context, target in trigrams:\n", " # 准备好输入模型的数据,将词汇映射为编码\n", " context_idxs = [word_to_idx[w][0] for w in context]\n", " # 包装成PyTorch的Variable\n", " context_var = Variable(torch.LongTensor(context_idxs))\n", " # 清空梯度:注意PyTorch会在调用backward的时候自动积累梯度信息,故而每隔周期要清空梯度信息一次。\n", " optimizer.zero_grad()\n", " # 用神经网络做计算,计算得到输出的每个单词的可能概率对数值\n", " log_probs = model(context_var)\n", " # 计算损失函数,同样需要把目标数据转化为编码,并包装为Variable\n", " loss = criterion(log_probs, Variable(torch.LongTensor([word_to_idx[target][0]])))\n", " # 梯度反传\n", " loss.backward()\n", " # 对网络进行优化\n", " optimizer.step()\n", " # 累加损失函数值\n", " total_loss += loss.data\n", " losses.append(total_loss)\n", " print('第{}轮,损失函数为:{:.2f}'.format(epoch, total_loss.numpy()[0]))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ " 12m 24s!!!" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:17:40.676666Z", "start_time": "2019-04-07T07:17:39.894446Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# 从训练好的模型中提取每个单词的向量\n", "vec = model.extract(Variable(torch.LongTensor([v[0] for v in word_to_idx.values()])))\n", "vec = vec.data.numpy()\n", "\n", "# 利用PCA算法进行降维\n", "from sklearn.decomposition import PCA\n", "X_reduced = PCA(n_components=2).fit_transform(vec)" ] }, { "cell_type": "code", "execution_count": 107, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:21:25.499695Z", "start_time": "2019-04-07T07:21:24.948708Z" }, "code_folding": [ 0 ], "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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fWXKlLF+/fpZ586drUGDBlahQgWTZD/++KM9/fTT+dZv2rSpmZklJSW53F5qaqrdc889HjuukSNHWmpqar4yz50719avX289e/a0lStX2p/+9Ce/nwOCIAiCIAg/xAp38jL0DAIAIASVdIjYmTNn9O6777q9fmGPlo+JiVFcXJzHHisvSS+88ILq16+f83uZMmU0efJkVa5cWR06dFBqaqoWL16sDz74QG3bttXDDz9c4JPQAAAAwhVPEwMAhDR3njIWzPx9fIU9TSz7aWFbt2712P5OnDihO++8U9K5YW0zZsxQpUqV1Llz55wEWHp6um644QZlZGTo22+/Vc2aNT22fwAAgFBAMggAELKK89j5YBQIx1dYz6CkpCRlZWVp+/btHt9vnTp19P333ysrK0t9+vTRsWPH8rzetm1bjRgxQi+//LIWLFigq6++2uNlQOAJ1WsdAABPIxkEAAhZof7Y+UA4vqKSQbt371ZmZqZH99mzZ08tWbJE48aN07vvvqtp06YpOjo6zzqXX365pk6dqmXLlumGG27Q2LFj9cwzz6hMGUbIh6pASI4CABAsSAYBAAKKp2/kAiER5M2bU38fX9myZSUVPEzMk/MFRUdH66WXXtKYMWOUnJysN998Uzt27NA111yjUaNG5Vl3/vz56t27t15++WX99ttvatu2rVq0aKFVq1apU6dOHitToAnnREggJEcBAAgWJIMAAAEjFL/ZD8Vjyi0mJkbSuYmcK1asqFq1aqlZs2Zq06aNWrZsqZo1a3rk2Dt06KAVK1YoOjpaL7/8cs48RNk9kqZPn55n/eyhabNnz1ZqaqoyMjLUq1cvTZ06Vd98842+++473X777SE1n5C7bS1U26Lk/+SoJ4Ty+QEABBAeLU8QBEG4ipI+mjxY98sxFR4FPVr+rrvuMleOHTtmv/32m6WkpNj48eNLvN+EhASbOHGizZ4925o0aZKvPnv27GmpqanmcDjyvK9cuXJmZnb11Vfn2+b1119vhw8fzinrgQMHbNasWfbggw/6vZ5L286KamtOp9P69+8fEm0yFOL888D5IQiCIDwQPFoeAFAy2T0M/DHkIhS+2T9fKB5Ttssvv1ySdOONN2rRokU6duyYjh8/XurtxsbG6qGHHlKHDh30r3/9S19++WXOa7nrs3Hjxlq+fHn2l005sucyOnv2bL5tf/HFF2rTpo26du2qdevW6eeff1ZaWlqpy+xPua/ZwjCUKnC4+jvL+QEA+Aw9gwiCIAhXwTfTRO4oqGdQQkKCZWRkWMOGDT22r27dutnEiRPtqquuKnLdyZMn29///vd8yyMjI83M3NpGqATXbPAF54woTdB+CIIoINzqGcScQQDgY4EwH4Q7ZeCbabhj3759euyxx3TgwAGPbXPevHm68847tWDBgkLXi4iIUJcuXTR79myP7TuYcc0GH84ZSirU56MD4H0kgwDAhwLhw1sglAH+k/u8t5X06O8/S9Mexo4dq/T09FKXLdv5Q74K0qNHD504cUJLlizx2L4BuI//R/yHIYUASqvUySCHw5HkcDjmOxyO9Q6H4xeHw/GAJwoGAKEoED68paamauHChXyADEO5E4FtJX0j6Znffz7Url2hN3bZj5AvrYiICMXFxXlkW48++qheeeWVQtdxN7EEoHj4YsH/+H8cQGl4YgLpM5KGmtkqh8NRUdJKh8PxtZmt98C2ASDk+PvDm9PpVMeOHXX48GG/lwWuOZ1Or5yb3MnITpLK6dwHAZN09ttvlXriRIHvrVWrlsvlERERio6OVvny5XN+li9fXjExMYqJiVHFihUVFxenatWqqWHDhurSpYtiY2M1YMCAPJNCF9dtt90mp9OpN9980+Xr2ckrkkGAdwTClxsAgJJzePpDksPh+FzSWDP7upB1+GQGAH7krWQDSs9XT3LL7hlUVlKmpC6Slhawbt++ffXuu+8qLS1Nx48fV1RUlKKiohQdHa0yZfJ/r5SVlaVTp07liZMnT+b5/cSJE3r88cf1448/FrvsLVu21IwZM9SjRw+tW7fO5TqNGjXSpk2bdMUVV+iHH34o9j6CDdd0eOA8AwDcsNLMWhW1kkcfLe9wOOpJulTSMhevDZI0yJP7A4BQ4I8P99xMBC5ffdu+VOcSQJ0kfaeCE0GSdPPNN0uSvv/+e7322mtKS0tzmeDJ/v3MmTP5tuGpdt6uXTtNmDBBffr0KTARJEl33HGHJOnUqVOl3meg81UCEf7FeQYAeJQHHxcfK2mlpD48Wp4gCMK9cDqd1r9/fx4PS5Q6vNmGHA6H3X///SXeR0HtvLjbu+WWW+y7776zBg0aFLlu69atLSsryxo3buz3cxPs558InCjtNUQQBEGERfju0fIOh6OspGmSPjCz6Z7YJgCEA+ZcgCd4eyJXM9Orr75a4nbqqp0Xp8xRUVEaM2aMEhMT1aVLF23durXI9/z444964403tHPnzhKVOdgEw98QJhouvZJeQwAAnK/UcwY5HA6HpPckpZrZX918T+l2CgAA8gjGuUSKU+YqVaooLS3NyyWCtzDEyTuC8boHAHidW3MGeSIZ1EHSIkk/Szr7++K/mdmsQt5DMggAACCMkLgAAMAnfJMMKgmSQQAAIJCQqAAAACHCrWSQR+YMAgAAweX8eUbCed4Rd+deCec6AgAAoYVkEAAAvwuXm/3zkx/hPhGtOxO5h3sdAQCA0MIwMSASq0bZAAAgAElEQVSEMewBcF+4TXB7/t8H/l4UjToCAABBgGFiQDjjW2ygeNzpHRJKzj9OTx53af/uBOrfrXBpG+EuUNsfAACeRDIICFHhdmMLeALXS+kVloh25yabRHbwcjqdQX/eCmp/wX5cAACcj2FiAADAo1wNpyrOMDyGYwUfp9OpgQMH6vjx45o8eXJQnz9XQyjDaQgpACDo8Wh5AACClbcSIv5MtJDkCV1Op1O33nqrZs+erS1btvi7OB5H2wUABBHmDAIAIBh5a6iUv4dgcTMdvIpqM6mpqZo8eXJIJoIk2i4AIPSQDAIAhJRQmNvDW3N+paamauHChdzYFiIU2o+nuZtEpF0BABA8SAYBAEKGv3u+eEJ22b01RKxjx45BXT/eFArtxxt4IAEAAKGHOYMAACEl0Ob2KE55fDFRbaDVjyd48phCrX5C7XiAgtDWkRvtAWGOOYMAwFfoSRA4AunDX3F7mviiB0Yg1Y8nFLeOw2moEz2dEC5o68iN9gC4h55BADwqHL+J4bHDKEw4XhO+5m4dh+O1SvsLDuF8njx17OFch8iP9oAwR88gAL4Vrt/EMJ8GCkO78D536zgcr9VwOlZP8uX/Y+H6f6fk2WOnrSM32gNQNHoGAfAovokBPMPf15In9u/vYwg11Kdv+KMHmTfObbC0l2ApJwAEEXoGAfA9PtABpefvngKe2L+/jyHUhGt9+uN4/dGDzBuJoGBpL3xuAAD/oGcQAAAByN/flgdCzyB/10GgCbf6CMc5njwp3NoLACCHWz2DSAYBAICAQyIg8PliaBMJDQAAio1hYgAA+EowDMcIZNn1l/0zVCZ7DtV24Y1hSK626er8h2qdAgDgSySDAAA+FYo3csE0P0cgyq6/hg0b5qnHwhJBwVDXwd4uCiu3N5J17mwz2OsUAIBAwTAxAIDPhPLQn2AYzuLPMha17+zX3Sljw4YN1bFjx6BoR6Wpc3+fL09eq+6ef09sC8GPcwwApcIwMQAoDb559rxQGfrjSmlu+H3BXz0qnE6nW/vOrr+i6tHpdKpjx45auHBhULSj0rQLf/aA8eS1WtSxnP96UcccDOfdXfw/k5+/2z4AhA0z83lIMoIgiEAOp9Np/fv3N6fTaU6n0+/lIQo+T/4uQ2nLn93OQrG+vHUdBft5D8fjLOpYsl/39TXhz/pw91hDvS44ZuqJIAiPxwq38jIkgwiCCKbw5Qef4nxYJ/zTFjx1bvx5fku770Bvm4FePiLwojRtJhjaW3GSpPwfRBQUtA2CIAoJkkEEQYRW+OuDT7h80HLnOAOt7j2VCArWD9Tnl71ly5ZWoUIFv5crENoGEXzhicRooF/LuXtA+apewjHCpc7C5TgJgih2uJUMYs4ghA3Gngc/f803E0rzUxTEnTkafD2PQ2H7c+dpU+4K5nmMssteu3ZtjR49WgsXLtS8efNUpUoVv5XpzjvvVGJiolf3wZwioccT5zTQr+Xcx1icMgbq8QSqcPr7QNsAUCr0DCLCIYLh20KC8HcES8+gYLiei1u2pk2bWt++fd1ev3bt2nbbbbfZf/7zH9u+fbuZme3bt8++/PJLe/nll619+/Y+O9b4+Hi79NJLLTk52Z555hnLysqyZcuWWVRUVEDVMRH4EQ7n1N/HOHDgwEJff+GFF+ziiy/2ez0Fez0TBEH4OdzqGcSj5RE2eEwpEDoC+XouySO5Y2JitHTpUrVo0SLfa2XKlNHFF1+stm3bql27drriiisUExOjlStXasWKFVq5cqV+/PFH7d6929OHogoVKigpKUl16tTJ+dmoUSPVqFEjZ1n58uWVkZGhHTt2qHr16qpWrZokaciQIXr99dc9XqZAPvfBjHrNz906Caa6O3TokHr27Klly5a5fL1///567bXXNGDAAH388cc+Lh1QesF0PQJe5Naj5UkGAQDgQSUdwpaWlqabbrpJKSkpat26tdq0aaPWrVsrLi5O//3vf7V27VqtWbNGDz/8sFasWKEHH3xQZ8+e9WjZ69Wrp5dffln169dXnTp1VLVqVUlSZmamtm/frm3btikiIkLz58/X+vXrtW3bNqWkpOjw4cPq1KmT5syZo7Nnz+qvf/2r/v3vf3u0bJLrRBsf/EuvJAnMUOdunQRT3TVv3lzr1q3TnDlzdO2117pcp3Hjxtq4caPS09NVuXJlH5cQKJ1guh4BL3MrGcQwMYIgCILwUJRmCNv27dtty5YtNm7cOPvzn/9s7du3t9jY2Hzrvf3222Zm1rJlS68cQ5cuXWz27Nk2cuRI69OnjzVp0sQiIyMLnfi2WbNmlpqaart27fJauXLXsTv17Y1hIqE89CSUj83bdRIsdffiiy+amdnixYvt9y9m80XZsmUtKyvLZsyYEbD1TRCFBe2IIGTiaWIEQRAE4fso6VOC1q9fby+99FKR73n99ddt//79Pj+mgpIuCQkJtm3bNlu7dq3VqlUrZOeVatiwYcDPVRVoQV2VvF4iIyOtTZs2ds0113hknzExMXbo0CHbtm2bValSpdB1Dx06ZM8++6zP6+T864v2QxAEUeLgaWIAAPja+V3TC3qizflPvMnKylJWVlaR24+KitLmzZsLfb1Vq1Z64IEHNGrUKEVFRRWj9K4V9JSmmJgYffnll9q2bZs6dOigEydO5HuKj7ef6ONqKIC7T5Vyt2xOp1MdO3bUwoULGXrgpnB6olNxZNdLjRo1lJSUpNatW6tXr176y1/+otGjR2vq1KlavXq1jh07pmXLlmn27NkaO3asIiMjS7XfoUOHqnLlyrrjjjuUlpZW6LonT57U/v37S7W/4jr/mvVm+6FNAsA5ZfxdAAAAfM1X88wUNn/B+Tc/Z8+edTsZdOTIEV1yySWqU6eO6tWrp/r166tRo0Zq0qSJ6tevrzJlyujYsWPat2+fnE6nBg8eXOpjSU1NVc+ePXX8+HF99913ioyM1JQpU7Rz50796U9/0qlTpyTJ5Q2dP+ZvcCcR5G7ZAv2R5YGoOAm5UK3Xfv36qXHjxoqPj1fVqlWVmJgop9OpGjVqaPz48ZKk06dPa9++fdq7d6/27dun/fv3a/369Xr77bd14MABHThwoNSJmerVq2vYsGF67bXXtGjRoiLXP336tE6cOFGqfZZE7nbgrWuOOWUA4H+YQBpAWAvlGxFfC/S6zC6fr28G3K2XDRs26PPPP9ebb76pWrVqqVatWkpMTMzz75o1ayoxMVEZGRlas2ZNnpvI839mZGR4/Fhq1qyp+fPnq23btnrxxRdVoUIF9evXr9Aklq/bRXH2F+htNtSF4o157jbVoEEDffbZZ4qPj9e6detkZpo/f75++eUX7dq1S7t27dKBAwe8Xqb3339f7dq1U4sWLXT8+PEi109JSdGoUaP0zjvv5LtGmjRpottuu02LFi3S119/7c1iew3XPYAwwATSBEEQhYU35hUJ1PD2MQZSXbozh0wglPP82Lp1q/3973+3KVOm2IkTJ2zVqlX23nvv2fDhwy05OdmaNm1qUVFRNm/ePHvqqaf8Vs5//OMftnHjRnvzzTddTkLrz7oNpHZIuH/O/F0GTx7L+e2vTJkybh+rN+qia9euZmZ2zz33uP2elJQUe+ihh6xLly72xhtv2PPPP2/Tpk2zXbt2WbaTJ096bD4jwn8RStcfQRB5wq05g+gZBCCshcM3hL769r2guvRlHRd2rIF+rnfv3q2RI0fq3//+tyIjI132tnE6nVq6dKneeustvfzyy34o5bneDlu2bFH9+vW1bdu2fOXzd0+PQD/PCG0lbX/euHYqVaqkNWvWqF69eurXr5/ee+89SeeGmtapU0dJSUmqU6dOvmjUqJEkaceOHdq9e7c2b96s7du354kdO3YoMzPTI+WEfwTC32sAXkPPIIIgCOJc+OvbP3/01AjWbzqPHDliN910U87v9erVc7neL7/8Yr179863vHv37jZgwACflHXt2rX2xBNPuFX/UVFR1q1bN+vRo4ff69iT4c125oltB+t1EKrhzvnw9Dl7//337aeffrI9e/ZY3759rVy5cjZlypSc3j1Hjx61lStX2uTJk23UqFH2wAMPWGZmZk7Pn4YNG/q93gjvBn8nCCJkg0fLEwQR2sGHmOCoV85T0REVFWVmZp07d85Z9uKLL9rFF1+cb92UlBTr1KmT1atXz6688kq79dZb7ZFHHrGNGzeamdm9997r9fK++eabNnfu3DznuHz58nbBBRdY9+7dbciQIfbGG2/YDz/8YCdOnDAzszNnztiDDz7o97r2RHgzyemJbZdkG95al/BPUvz222+3w4cPW8OGDS0lJcX69u1r0rlha7fddpv9v//3/ywiIiLPe/7617/asWPHLDU11ZYsWWLTpk3ze90RBEEQJQqGiQEIXXRvLj1XwxmoV/9ISkrSjh071Lhx45zHxt96662677779NVXX+WZTLpFixbKzMzU3r17tWfPnpxo3769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jwt9b3YiplWrVnb06FFr2rRpzmu1atWyWbNm2eTJk61Ro0ZeKXujRo1s48aN9uqrr1qFChVylj/00ENmZta5c2e/JvemTJli48aNy7e8oEd4/+1vf7OFCxeWeH+NGze2YcOG2SuvvGJTpkyxFStW2L59+8zM7ODBg/bTTz/ZjBkz7PXXX7dbb73VZdt7//33bdKkSfm2nZycbJKsSpUqxWqzwZCMCNUIluR2djIoOTnZZs6cmXN9xMfH280332yNGjUyh8ORZ/3cj5Y/P5o1a2Zdu3a1Sy65xGrVqmXlypXz+zF6MsaNG2effPKJy9fq1atnkZGRJsliYmKKTLbUrFmz2PuvV6+eTZs2zVatWmUHDx7MSeycPn3aNm3aZLNmzbKxY8faQw89ZH369LHLLrvM4uLiTDr3pcDJkyft+PHjNmjQIL/XJUEQfguSQQRBEOEUgX5D4s968NdNW1vJjkmW+fvP7IRQTEyMrV271hISEorcRt26dW3Xrl3Wv39/l68/8sgjduzYMXvzzTctMTHR48dQs2ZNW79+vW3dutW6dOlikmzixImWlZVlFStW9Gu7e++992zMmDH5lrdp08amTp1q5cuXz7N8+PDhNn/+/FLtc9iwYfbJJ5/Y8OHDLTk52Z588knbtGlToe0xd9ubNGlSTjKoevXq1r59exs4cKC99dZbtnXrVktLS7N+/fq51Wb93SvQX+c9kMLb9VChQgW79NJL7e6777apU6eWqAdOSkqK/f3vf7f58+dbTEyMW+sXlgwK5ahXr54dPHjQEhMTLTY21tq0aWMDBw60N954w1avXm1mZp9//nlOQqiwa//222+3AwcOWJs2bYpdji5dutjs2bNt5MiR1qdPH2vSpEnOPguKZs2aWWpqqu3atctatmzp97okCMKv4VYyyPF7csanfv/2AQDgIdmTVwbTZLDecH495J4gtLDJQr3lUUnPSCoj6YykJyW9IGn06NH69ddfNWHChELf37JlS3366ad65ZVXNGbMmALXa9u2raZPn64qVapo7NixeuGFFzx6rPHx8fr222/VokULvf322+rZs6fS0tJ04YUXemwfJTFhwgSlpaXpwQcflJT3HKenp2vDhg268sorderUKUnS8OHDdc011+jqq6/Ot61atWoVOAF3Yfr27aunnnpKDRs2zFlWtWpV1apVSwkJCUpI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Zma2e/dumz9/vnXp0sUiIyNtzpw5dsMNN+R5/6RJk8zM8j1h6KGHHjIzs19//dXv9UoUHbmHf3p620X9TXT3ms1eb+7cuTnDOt1579dff12ip5a52r+vnnZX1JDBu+66y1asWGGrV692ORS0Ro0a1rp1a7vxxhvtoYcesjFjxtiMGTPMzOzkyZN25MgRW7t2rc2cOdNee+01Gzp0qNWqVcumT59uo0aNyre92NhYMzNr2rRpzrKIiAhbunRpzt+o0kSDBg3MzKxevXper1uCIIIyeLQ8QRChH8F8I0v47lz68xHcgRL+evy4O/t1t2z169e35ORke+qpp2zatGl28OBBO3nypK1cudLefvttGzx4sF122WUm/S8ZdOmll9qnn35qv/32my1dutTlo+XfffddGzdunFtluPHGG23//v02f/58+8c//mHvvPOOpaSk5DyyO3dba9SokaWnp9tLL72UMx/QpEmT7Oeff7avv/46Z5sXX3yxnThxwr7++muvzPVEeCe8cU3lbj8FJYKK+7csKSmpWPPJXHjhhZaQkBCwdVTSclx00UV2+vRpO3z4cE6y649//KNlZGSYmdmuXbts7ty5NnbsWPvrX/9q06ZNs82bNxd6DB9++KGNHj063/JLL73UMjMz880Ddt1119np06c9MifT2rVr7YknnnBr3aioKOvWrZv16NHD7+eCIAifBMkggiACJ7z9odnfx0cEfgRCO/FXGfxxrTidThsyZIgNGTKkyG/tiypb27Ztbf/+/ZaVlWVr1qyx119/3fr162ezZs3K0/snd7z//vt26NAh279/vw0fPtxiYmLyTSCdvc8FCxbYsGHDSnScffv2tU2bNhV4ngcMGGBmZu+++65J/5tAeu7cuXb11VdbjRo1bOvWrTZ69GhzOBw+aT+BcC0Ee3jzmipqm57eZ7C0B09MGD569GgzM1u2bFnOsrp161rlypXzrOdwOGzjxo22fPlymzlzptWtW9fl9j755BN766237MILL7Trr7/ehgwZYi+99JItWLDAzMyGDh2a7z3fffedmZk9+eSTpTr2N998M1+PxvLly9sFF1xg3bt3tyFDhtgbb7xhP/zwg504ccLMzM6cOWMPPvig388lQRBeD5JBBEEERvjzQzPhu3PMeSm6jvyZvAz2nkFNmza1mjVr5ll2/lAwSdaqVSubOXOmmZnNmDHDKlSokPNa7mRQ7vOxa9cu6927d4nKWVQySJJNnTrVpk2bZtL/kkFdunSxZcuW2ZIlS2zAgAE+az+BNHTH1+3Rl8cXLBEsf5eKKueCBQvc2k758uVt69at9vzzzxe6Xt++fW3v3r3WvXt3e+GFF+zYsWP26KOP5uvp8+OPP9rBgwdt0aJFNn36dHvrrbfsmWeesfvvv99uueUWu/LKK/Ntu02bNmZmdvr06UJ7bJUrV84SEhKsXbt29vzzz9vtt99ud911lw0bNsyee+45+/777+3YsWM2f/58++WXXyw1NdXMzg1r27Fjh/3444/2xRdf2H/+8x979tln7f7777c//elPdtVVVxWZeCYIIujDd8kgSeMl/SZpHckggiBcRSh8aCYKPre5P6T7++bCV8dc0veFcr14oo6KE7mTQa1atbIvvvjCsrKybNy4cTZ16tR8iSJXPYMqVKhgZmbNmzcv8nhctevzk0Gu1ouLi7PBgweblPfR8itWrLCHH37Y53Xqq0RQYXPehMLfiGAvv7+Po7jtoLD19uzZ4/Z+O3ToYPXr13f5WpUqVeyKK66wQ4cO2ZEjR+z06dP2l7/85f+zd97hUZTbHz8pEEoIZGmB0DQiRJCq14BXBAFRICJREUHlclUUb8SICqggolJUEERFpEUQvKCgRoqAFC8oUkSqNAlBTOgsEFoIid/fH7D7293M7k6fd3bP+zyfBzI7876nvDM7c/acdzBy5EgAwM6dO1G2bFn3/nv37sWECRNARHjttddky/Dll1/ixx9/RFRUFN544w3MmzcPK1aswG+//YY///zTXbrman///TeOHDmCzZs3Y8mSJcjMzMS8efMAAP369UObNm3QoEEDr7XQGIYJa0wNBrUhohbEwSCGCVlC5abXrohu/3DKDNLyIBsqD8Gi6OkZDKpbty7eeusttG3btsRnLnyDQURXF4S+cuUKSpcuLUsv321yMoNc3Hzzzdi3b587GPTQQw9h48aNlvvLyHmg5jM7EC7nshl21HpMdHQ0iouLvbIAPSlfvjySkpLQunVrpKWl4dlnn8WIESPw6aefIisrCxs2bMDBgwfdpVS+bc2aNShfvjxGjRoFAGjSpIm77/vuuw9vvvkmiAg///yzbB2uv/56tGnTBkSEevXqYePGjVizZg3mzp2LyZMnY8KECXj//ffx4Ycf4sSJEwCAHTt2IC4uzt3HrbfeCgBo2rSp5X5kGEY4ZAWDokmHBmBNREREPT364saNm3jNce21rWpf1ctNWxPF/g6HQ/b4Vs8TJbIqbVpfW62HH43UT4+ml55K2p9//knDhg1TfFzTpk3pwIEDkq+h92xybV62bFnq0qULNW3alF566SUiIipdujQNGzaM7rrrLsrNzaWYmBhyOBy0YMECGjVqFHXv3p2++eYbxbKraVrmjpxj5fYv8vyV07TMcSU+EP1c19qU6ib1fXj99ddTZGQkDR06lOLi4ighIYESEhKoevXqlJCQQLGxsURE9Pfff9OpU6fo2LFjbrKzs2ndunV0/PhxcjqdlJGRQdu2baNffvmF5s6dS3PmzKHHH3+c/v77b3r11VepXLlyXq+n/+6772jNmjVERNSwYUOqV68eHTx40EvmmJgYt0w1atTw4uWXX3b/v1q1ahQdHU3FxcV08uRJOnLkCP39999UpUoVunTpEo0dO5by8/Pd/Z46dYqIiGrWrEnbtm1TbHtu3LhxizRroIiIiH4RERG/RkRE/GrWmNy4cdOnWfFgx+3/mwj2d92AOxwORZ9Z0cyQR4sv9AgEiWRvf83pdAopIwBKSkqiihUrEhHRrbfeSlu3bg14jJTNfXVr0aIFTZo0iTZu3EiVKlWioUOHEhFRq1ataOvWrZSQkEDt2rWjkydPUr169ahXr15UqVIlGjduHI0ePZqio3X5fU6xHlqP9bWJax8lY4k2T+TKozYQpMQudjjXzWxS34cpKSn0999/U4sWLahChQp04MAB+uabb2jEiBGUlpZGTZs2pYSEBCpVqhRVq1aNbr75ZurQoQP17t2bBg4cSO+88w4tWbKE0tPTafbs2ZSRkUGDBw+mvXv30n//+1/6+++/3WNlZGTQhg0bvGQ6c+YM1atXjxwOB+3atYu2bNlCP/zwA+3cuZNOnTpFBQUFdPDgQVq7di19+OGH9N5771GTJk2oqKiINm3aRJ9++ik9/fTTlJKSQomJie7gUfPmzWn9+vV06dIl6ty5M82cOdNrXFdgKCEhwUCLc+PGLaSbHmVi10q/6hGXiTEMw4Qsdir5CPXFykWSJZCMeq0H4g/fUjDPPqTKxIYOHYqVK1ciMTERv/zyC5o2bYrff/9d1pvEPPt26XbjjTdi6tSpAID9+/cjIyMDpUqVAtHV0pSJEyfi4sWLeOqpp9zHfv755/jyyy/d/cXExODo0aMYMGCA8HNHqhzU18f+/q/XPNFbJyPk0VNeO5zrVrN48WIcOHBA9fGdOnXC999/7y7/Sk1Nxfbt29G3b1/Mnz8flStXRuPGjdGxY0f06dMHQ4YMwcSJE/HVV1/h559/xoEDB3D58mV3WdnJkyfx+uuvo0+fPrj77rvRpEkTVK1a1T3esmXL8MorrwSVq2rVqjh//rzfxe3r1asHABg8eLDlPmAYRjjMfZsYcTCIYRjG1tj9ocPohzdeH8Q4n6i1r2fAJzk5GQsWLECfPn1KfOZi1KhRWLFiBYgId911Fy5cuAAAaNGihXufxMRE3HnnnX7HjIyMROfOnbFw4UJcvnwZu3fvxmOPPYaqVau6dejUqRMOHjyIvLw83HbbbV7Hey4g7dL91VdfhdPpRPXq1U21uyhj+Vtk2si5I4r9QlE+M+nYsSMA4Ouvv1Z8bNWqVfHBBx8gIyMDUVFR7u2ZmZlISkpC+/btAVx9HfvRo0exdetWLF26FJmZmRg9ejQGDBiAHj16oE2bNli/fj327dsHAGjXrl3Acfv37w8AQRecHjlyJAYNGuT387JlywKArGA2wzBhBweDGIZhGHnYPdgh2q/5oTi+iPplZmZi+fLl+OqrrzB//nz3gqyuz3yDQdOmTcMPP/zg/nvSpEnIycnx2ic5OVnyDV9JSUkYOXIkcnNzAQC7d+9Gr169vF7RfP3112PmzJkAgA0bNqBGjRol+vEMBrnm7XXXXYf8/Hz36+e12lHPc8GKeWdGVpleupltHyW2CfVrBhFh+/btAOAOAsulS5cueOONN9CuXTv069cP3377LRYsWIAqVaq492nRogUAeG2T4oEHHgAALF26FABQoUKFgPvfcsstAIBvv/024H7BgkoVKlQAAAwdOtRyPzAMIxymvk3sv0R0hIiuEFEuET3BwSCGMZ9wuPETAbvZ2SVvMLkdAr723M7lFHYrXbET8fHxyMjIQG5uLpYuXYpbb721xD4zZswoEQz69ddfsXTpUvffcXFxePDBB732adSoET766KMS/aWlpeHgwYP4888/0adPH0RGRnp93qZNGxw9etSdpVCmTBlJ2WfPnl0iM4iIMG7cOADAkCFDNM8pPQNBVs07o8fUqzzNihI3s8rv7EBaWhry8/O93rLlaYNGjRqhQ4cO6NOnD4YOHYpPP/0UP/zwA7Kzs1FUVATfdujQIbRs2RJEVwPAAIJm7H388ccAgIkTJ+L06dNBZa5ZsyYA4Mknn9Ske+XKlQFAVskZwzBhh7mZQQqDR1Ybh2FCjnC58TPahqFmZ5e8SUlJQeUWTTc18thZdpF0E8WOvtx+++2YNWsWLl68iJ9++smdCSQl7+TJk/Hxxx97bRswYIDXr/FSx918881YsmSJ5PhlypTx+/rqiIgIpKWl4Z133vEqOfG163//+1/MmjWrxGe1atVyrzvy5ZdfolWrVl79WHV+ijoXRNHN6mBSuPrOk/bt27v//9hjjyEvLw+FhYXuAM+FCxewe/durF69Gj/++CMA4KOPPsKTTz6Jbt26oXXr1qhfvz4qVark1a8raFOrVq0SY1avXh333HMP/vOf/yA5ORnr1q3DO++8gx07dqBz584B5XVl9KSmpvrdJyIiQjLI7UmdOnUAAC+++KLlPmAYRjg4GMQw4Ua43PgZZTs7pd6rCZCYrZvZD1oiBrMCfZ6UlGS5jKLZUWrMihUrIj09HTt27AAA/P77714PUf7kfeedd/DVV1+V6K9Lly4Bj2vatCn27dtnmF0XLVqEzz77TFLXzMxMryyFkydPYv369UhJSZE1p8zwh8j92g2pbEzRbSPKdSEQ9913H1544QW0bdsWCQkJXp/deeedAFBiLS8p4uPjAQDvv/8+Pv74Y2RlZWHLli04c+YMAKCgoACHDh1Cr169EBcXh+nTp+P777/HRx99FHDdsTJlygAAOnbsKPl51apV8frrr6OoqAiTJ0/2m2XYsmVLANoyjESfbwzDqIaDQQzDMEqwy02RaEEPkWQU2SaeJCUlYfr06boGhJTqHixLzGyb+JsztWvXxi+//IKTJ0/imWeeKVGe5U/e/v37Y//+/bJt4Pp/8+bNUVRUhJiYGM06RUVFYcqUKahXr557jKVLl2L27NmSupYvXx41a9ZEXFycpJ7BZDfDH6L2axc8g/NSb2IT2TZmreVk1HxJIcKnCoJBMTExAICpU6ciIyMDPXv2RNu2bZGcnIz4+PgS+2dlZWHq1Kno1asXVq5cWeLzsmXLIikpCR06dAAATJs2DePHj8eXX36Jn376CTk5OV5vJQPg/uz2228v0V+XLl0AwO/bxsy0LcMwwsHBIIZhmFDFqAdBUfsKJVx20TsQpPQhTcRMOIfDgRQiDKGrD26u7dHR0UEXcfWlcePGAID77rtPkT1ci8becsstivWX2rdhw4bYs2cPXn75ZURFRWHTpk345JNPdCsvkutLNdcMJX0q6Stcrw2+vpKyg+i2MeIao9eYgUghwgUiFF0LBj0hIxhERAC83zYYiF9++QXDhw9Ho0aNAABz587FsmXLsHPnTjidTneAx5VZtGHDBnz22WcYNWoU0tPTkZaWhpSUFNSpUwdvvfUWAKBu3bq44YYbsG/fPkycONGrTHXgwIEA4F7jyCrbMgwjJBwMYhiGCXW03HBLlSeY8SuhlTefVt/4BrKx1odltZlBwTKEzPzl2PXAduXavykyjgkk29SpU1FQUIAPPvgA9957Lxo2bIj4+HiUKlUKUVFRcDgcSEpKQseOHTFgwAB8+umn2LlzJ4CrpRdKg2b+9m3evDlycnKwZcsWnDt3DuPGjdNlLsn1vZrgkRZ9rZ5HIiNKcMQuuurFELp6XcG1YNB0jzcPEl1dx6dRo0bo2rUrXnjhBUybNg1btmwBAKxfv14yE8iXU6dO4YknnkBsbCwA4JtvvsELL7yAhx9+GHfccQeSkpJQtmxZd8aR51pHvraaMGECcnNz3X/XqFEDu3btwoEDB9zHzZo1C8XFxUHfXsYwTFjCwSCGYZhwQG3gQOrhzIxAkJXr0YjwQOovEKT3w7peNvH3mRHyuR/YiFB47W+t8j/yyCNYtGgRDh8+jOLiYvhrZ86cwe+//46srCy8+eabaNiwoWI9A/m2adOmOHToEADgtddeU92fHvNOr3612sZM/UMFUa5jZuip5fiIiAhUrVoVN910E9q2bYvXevTA5f/8B8UzZgAAcrZuxdq1a7F7926cPXtW8nqwf/9+AMCaNWswaNAgEBEiIyNRs2ZNtGrVCo8//jgmTpyI7t27o23btgCAu+++G0T/HxiSks03GCTl09mzZ2Pjxo1ex1WpUgXbt28HAEyZMgW5ubnYuXOn5b5iGEZIOBjEMAxjFna8MbdK5nDODJIrm9mlWWqOUVqaJAdXZlAh6ZMZ5Pt5VFQUKleujMTERNSuXRtVq1ZF+fLlUblyZVNs3KBBA5w8eRLdunXTzcZ6+9bK433PgXAIeqixYahfu+X4PiYmBk899RSGDRuGiRMnYu7cuVi1ahV27NiBY8eOlXht/Pnz53E4JwfH9+wBACxduhTvvfceXn75ZfTp0wf33nsvWrRogVq1aqF06dIgItxzzz0AgM2bN+O3337D4cOHceXKFQBXF4/Oy8vD1q1bsXz5cuzbtw8AcOONN4KIsGfPHncASUp2z2CQlG2///57rzcfukhISMAff/zh1mvChAmWz1GGYYSEg0EMw4Qf4ZxxwjBKMPpBX+15IbVmkFp5RTw3GzVqhOjoaFm21WtdISuPl7s2ltR44b7OkAgBQT1l0Vvu7t2748KFC7h06RJ27NiBrKwsfPDBB3jhhRfQo0cP/POf/0RSUhLKly/vPkbJ28Q6duwIABgzZgw6d+6Mf/zjH7j++usly7KGDBmCixcvIioqCkSEdevWYcyYMZK6uIJBngs/u9YGcv3tWltMSq66devi6NGjAIB//vOfls9ThmGEhINBDCMq4XRTa3aGg0ivxLYaK0pB7GincETtuaI0SGHkg6jZMqiV2yzfGKG71uOTkpJ0efuUiEE9s9Cy0LzedhPR/vHx8UHfvOeJkmAQEWHt2rW44447gtolNjYWU6dOdW9buHAhpkyZ4vZBvXr1kJycjA4dOuCJJ54AAGzbtg2rV69GXl4egKulaW2urWV04MABvP76637H/Mc//oEVK1ZYbn+GYYSFg0EMIyKheFMr0g18KNlVi+562V7vB9NQm/ui+FvL8Uoe1F2ZHlb40egSIr0DJw6HA+np6WG7Vo4e2U2hZhM1OouSGRQqKA0GNWvWDLGxsYp9NHPmTMyfPx+1a9d2rz105coVHDhwAKtWrQIAfPHFF3j66aeRmpqKli1bIiEhARERESAi5Ofn46mnnrLcXgzD2BYOBjGMqITSzVmwm9VQ0lVktGROyOlbr2NDdT5YERixItin9wO+KDY3oqRKSzDITN2N8g0HfsPD13ZDaTBIrY/ef/99rF69GkSEWrVqoXXr1ihTpgyIpNcM8qRUqVIAgK5du1puL7Ph+c4wusHBIIZhzIG/vMVAjh9EKduzes6IFEjQWwc1pV9W+0MEtJTj+LO73nZ1+coOgRbR5WPCEyOCQVIMHToU27Ztk/wsWDCoRo0aAICWLVtabi9R7hkYhlGMrGBQJHHjxo2bxuZ0Oq0WgRsF94PD4aBu3bqRw+EwTZ6srKwScpkth29TMr6cffzpqaYvJcdJjafWtmb4I1j/SsfXU16Hw0Ft2rTR1KeUPzy3aZXX5VsikjXfrG56yqeHr6263nBT3+zsM6fTqVr+qlWrEhHRkSNH9BRJcRPlnoEbN27GNQ4GcePGjVuYNCtutPw9IFt5w6ckeCP3RtioQJzS4+To5tuXUn+oeTAIpodSPaX21xrIycrKUn18sPH1eKjy9JPLV3Z6WNYSDA02d7T2wU285uuzFCIacu1fLa1UqVJERK5KBcPaqVOnVM+36667jgoLCy0PBolyz+Cv8fnMjZsOjcvEGIZhGBGQWl/I6nRxERYoFqmkTcvxwY5RU97mOU8CvcZcbgmlFt2CHWtEyZhdSir0mHda+9VaBqhWRka7TVOIcIEIV679m6Kgj4oVK3r9nZqaCgC49dZbDZW9U6dOAOBeJ8gT3zKxxMREdOzYERkZGahQoQLef/997N+/33L7i4ydrn8MYxG8ZhDDMEyoEmo3QL43dq7Fd9PT0wM+xNnBDqLJqEUevQN0WvvyXKTZ31vOlDw0aLWN2Xaxcp0qpWtWGSWr0YE+uTLwg6lxDKGrgSAQofDa33KPHTVqFKZMmYJ69eqBiPDkk08CAFq0aGGozK6g0yOPPILevXvjhRdewKhRozB16lR89913AICjR4+ioKAArnb27Fn89ttvOH/+PBYuXGi53UWHzzeGCQivGcSNG7fwa+GQNqyl5EFU+/imozudTvriiy/o+++/97uWix1KP0SUUW3Kv+eaNXo0vW2TnZ0tWdKgpNRBSzmEHmtGORwOXcsTlYwtpw+XXA6Hg3r16lWiX1/ZPT83qtRErl8DzQGt11KrS1/NbFZcy34kokIiunKNHxUc++qrr9K2bdtoz549NG3aNEpNTSUioitXrugtplfr3r07ERGNHTuWMjIyqEOHDlSjRg06ffo0rVmzhvr06UP/+te/qHXr1lS7dm2KiYmhihUr0hNPPEHly5enbdu2GSpfKLRwON+4cTO8cWYQwzChQjj9OmtUKYuImFl6I4qvRMWIUicR+gjUj14yyikjc+1jVGmgHplYrn9dGVmB9jGiNExv1Mjp7xgjZBbp+mHld0gKXc0IUlIi5kmPHj1QWFjozsJxZQoZRbt27QAArVu3Vnzs119/jXvuucdyfzMMY2u4TIxhmPBDpBtnEbHKPuwX8bByLhhdjqVm/SGtJWZyZTIiuBnsOM91lbTq4irbNLLszqzSPl+dtNjciECJiAF8kWRRyv3334/CwkKcO3cO0dHRho/39ddf+319fCBq1qypm3x29hfDMJrgYBDDMAxjPSI+0IQaSm3rb30do0lKSnKvBaUmKKI0w0YPG4r+cG9m4CQpKQmzZ882fDFmubLqYU8jAn5m28GKMeyqa69evTBx4kTDxyEiJCcn46mnnrI08M7fvQwTtnAwiGEYhhEDUR+0QgGlZUCu/c14oJcat2XLlpqCOXJ01KqbXoEkufvqVb5lhg8HDRqkeryWLVsaIpPWPm644QZT7CciepbJmS2HHbBaH6vHZxjGMjgYxDAME85YeRNoxNoyofigINeOcsuAgmXcWD035GYkWZnpofR4X530KlHTMl+MRMsYw4YNw6efforIyEjD5ZTLvffei9mzZwfUq3z58pbJJ6pP7ZoZxDAMEyZwMIhhGCZcMSN4IreUR6kMDz30kKLxjKBJkyaIjY0VwodKAihyg0FW6WOUH6XWb9GzPzk+kvpbbn9aAleedtWzPM4IatSogePHj2PZsmWWn18uKlasiKNHj6Js2bKSNilTpgx2796N559/3nR7GnUdF/UaEUqYbWP2KcMwPnAwiGEY0vkxhQAAIABJREFUdYTDTQXrqL1vOaU8ah5mtm7dimnTpiEqKsoy2zRt2hQ7duxAcnKyED5UEpwQZR55HmdkcNLqIJjvuFKZQkY90Puuv6R3VpLeQTYiQu/evQEAW7duRa1atXT3R2JiouJj8vPz8frrr6Nhw4bo0aMHPv/8c3z44YeYP38+du/eDQC4ePEi6tatq6s91cwvPeaNPxnllpqGG1Zm+4k4HsMwtoCDQQzDKCccbirCQUez7Kh0PznHTJ06FQAwb9481WPq4f8PPvgA586dQ8+ePS23tVWoXWhaysZGnW9WB4P8yRTobz3H0Xt9JH9BLD2vm4sXLwYA/PHHH6rl9MfYsWNx0003SX7WoUMHybc7/fHHHwCAs2fPYseOHVi+fDkmTZqEIUOG4JFHHsGpU6cwcuRITXKK9L3jLxAkZ3H3cMMOGXdWjMcwjPBwMIhhGHWEw02Fmb/YWa2r1Sh9mHz77bcBAFOmTCnRj5lrq8TFxeHIkSMAgGHDhlliM6v9pmWhaSPLwkS0l5n6qA3QyOnXNwBkREDvhhtuQEFBAdauXStrfyVByX79+uHzzz8H0dUSr2bNmqFXr154++23kZeXh4KCAnTo0MHrmN9++w1jxozx2+eRI0fwxBNPGO5Xs+ZPoOOMyl6y8zlqZ9kZhglbZAWDIokbN27cfJrT6bRaBMObGTo6HA7q1q0bORwOw8cKJIOV43jawOl00po1a4LavqioiIiIFi9e7LXd6XRSVlaWLr6T00d+fj69/PLLREQUHx8fdP/o6Gi/nynxg5J5Y6R/XfbOzs5WfbxZ54DR57OZ53Awm/meU3LPCTm+kOrP8xi97Ox0Omns2LE0Z86coPs6HA5q06aNrGsHEdHevXupZ8+etH//fjp+/DhlZmZSamoqXblyhTZv3kznz5+nLVu2eB1TWFhIBQUFqvWR28yYp1rOOafTqVhGOeOJ8F2opYXDPRE3btzCtHFmEMMwjHHosd6K2v3NKkuQu06GXHneffddAEC9evUMk/nVV19Fw4YNZe27YsUK3HzzzQH3GT58OBYuXIjSpUuX+ExNqZXcX9rNKsXSIq/df1XX4zxSuoaM3MwgPf2k5Rilc7tv376oVq1a0LeKxcbGolOnTkhNTZU9ZnJyMgBIvsb+vffeQ1ZWVol+9uzZE7AMzDMzSNT57DlPjZBR6zkuot1C+brFMEzYw5lB3Lhx42Z1U/OLotJfUf3tr2cmTaAWbBzXdrnyVKlShQoLC+nQoUOaZfNnwzJlylCDBg0CHhsVFUUJCQn00ksvUfXq1alXr16UkZFBo0ePpunTp9PChQtpw4YNlJOTQ2+88QZ17dqVFixYQBEREV7jK8lqUJKB4WtPrb++u45TmsUUbFxRf1WXq6fW88iffQLZLdhYamVRc1ywY+TOO8+5nZWVRcePH6eoqCiqU6cOpaSk0IMPPkgDBw6kiRMn0qJFi2j//v109uxZWrp0KS1YsID+/e9/yxrz9OnTRER0/Phxr3GJiMqVK0dnzpwpod+xY8coPz8/oPxKdLWiec5TKZ9pkVmPc1y060AgnTw/E9HX3Lhx46ZXi7iWqWPuoBER5g/KjRs3bjZqrhIQo/YXuS1cuJAaNmxI9evX19SP64Ze6kH+ww8/JCKinTt3UrVq1dxUr17d/f/4+HiKjIyky5cv04kTJ+j48eOSXL58mT7//HOKiIigl156iSZMmFBCDt/x/W3zJ68SnbUEINesWUNt2rSRJYOnvET6PeyZMZc99fUsgzNqbH/9yp0bIjffAGZkZCRVqVLF63y67rrr6Pbbb6f8/HyKj4+nGjVqUI0aNahy5coEgK5cuUKXL1+mffv20cmTJ704ceIEnTx5ko4dO0br1q3zGlfKTmXKlKFLly5RUlISnTlzxuucyszMpIKCAurfv7/XMWvWrKGsrCwaN26cpI5HjhyhoUOH0vTp00uMK9dfVvrVymuLyC2QTq55rdVu3KxroXB95cZNQ9sM4Jage3GZGMMwDCMSW7ZswfLly1Ud65va7y/Vf8WKFTh48CBWrVqFuXPnYuLEiRg6dCiefvppdO/eHbfffjvq16+PihUrBh3zpZdeAgDZC8wGKjvSUragtazBs5xPrb31GNtlG61vyQo2ltQr4OW+SUmp75TIJsobp5TIm5SUhGXLluHEiRMoLi4GABQVFSEnJwc//vgjZs6cifHjxyM9PR0PPPAA/vnPf6JBgwZwOByIiIjA1KlTkZ2djWs/Fmqad5GRkQCABg0alNj3yy+/xNixY0scs3HjRjz//PPuvxs2bIhXX30Vbdu2BdHVMrEBAwao9pec/fT0uVHzMxxhu9kTf2XUdrq+MoxG+G1iDMMwjP04deoUJk+erPg4uQ/z5cuXx7lz53Dvvff63UfuQ2lUVBT++usvjB8/XrGsSvcPti6TXW9yfWV3BYKmT5+ue0BIaiyl80fNQ4YSPYwKghnpPyJC9erVMXz4cDz44INITk5GqVKlZPexbds2AJB87bs/+3vaydfuxcXFaNy4sfvv6OhoEBEWLVqEN998s0Sf27dvx8qVK7Fo0SIcO3YMBQUF2Lp1K6ZNm4aYmBgcPXoUM2bM0BRkCXTu6nn+mnktsOP1hgkfOCjKhDkcDGIYJjD8pciIRlxcHAAgIyMj6L4tW7bE0KFDUblyZRDJf5gfNGgQAODGG2+U/Lxr16549913vbY1a9ZMct8nn3wSOTk5qFatWonP9D6/gmUV2Pl8lpLd6MwgpZ8F2y9QIEhuYMvKoJ6aMfU4pkaNGiguLsaBAwdkZeK5bOq5WLKvzS5fvoyRI0fio48+wt69e7FixQqUKlUKq1atwuDBg0v0t2/fPsybNw89e/bETTfdhKioKK/PpTKD9A7cGJ0ZpPdxdg5AMwzDhAEcDGIYxj98I+dtC6tlYF2vcttttwEAOnbsCKKrmTd169bFnXfeiSeeeAJjx47F8uXL4XQ64Wo5OTlo0qSJLP2aN2+OgoICnDx50m/2z/fff4+LFy+iZs2aICKULl0as2fPxsyZM5GQkOC177Jly3DrrbdK2tnMX+dFP5eVBk9ElFfOZ/7w1CmYfkb4UY8yJjXHpKWlYcuWLViwYIHfY5599lkAQI8ePVTr5CvD+fPnsXDhQrz11lu4//773W8OXL9+vWQwyOl04u677/Y7lufbxNTay0x/q5XDiLceMgwRzxWGsQAOBjEMExit6e2hgB0epO2mq5z+K1WqhAYNGqBNmzZ46KGHkJ6ejrfffhvLli0DAOzatQt5eXkoKioCAFy4cAH79u3DqlWrMHPmTIwcORL9+/dHamoqmjdvjgoVKsiSLSkpCQDw8ccfS37evXt3AMDevXtLvNr+ueeew8mTJ/Hiiy+6y07KlCmjyQ5m2twqOZWUVUll0QQqrzHCboHOE63nkFHlb0rtr5c95Rzz+OOPo7i42F2W6XvM+vXrFa0XJIczZ86ga9euJfT+/fffS5R7JSYmAoDf7D+iksEgveafWf43Yl+GkUs43WcxjEBwMIhhGO2Ew5d4KOvmq58VD/6lSpXChx9+iI0bN+LPP/9EQUEBPNu5c+ewe/durFixArm5uThy5Ai2bduGzMxMNGnSRHeZV65cidq1a5fYXrt2bRw/fhzr169HpUqVJI9t1aoVcnNz8fvvv8ta38RIXxrlL7Pkllq3h4hKBIKk5NND7mBBH6N8YEXmk9XXuEGDBiEnJ6fEedWqVSsAwNtvv63reCdOnED79u1L6L1///4SGT5DhgwBAHe5qRRSwSDRbOxPplD//mbsAc9BhjEdDgYxDOONGesIMGL504qHAamxKleujNmzZ+Pjjz/G888/j27duqFp06aIj4/32i8nJweZmZlo164dDh8+jHLlyukun9TCtuXKlcOmTZuwdu1axMbGBjy+WrVqWL16NQBg/vz5qFOnjml2lcqwMWsemaWT3LGVBnGkEKEkLdTw54NZs2bh+++/R2RkpHvbhAkTcPr0afTv31/XOXb48GF06tSpxPZjx44hNTXVS877778fTqfTa048/PDDmDVrlrukLFgwSOSgi4gyMQzDMIbDwSCGYf4fkW9WGWP9aRef169fHwDQq1cvEBEWL16MYcOGGa5LVFQUFi1ahNWrV6N8+fKyjilVqhTmzZsH4GoJ2wsvvGCa3+XOAb1spXeZkVSWj5lyqt1fqV5mzwcR+gtk05iYGGzYsAHvv/++e9/8/Hy8/vrruuvx119/oWvXrl7boqKicOXKFdx1111ecr744ou4cOECduzYAafTif3797vLUd98803ExcUZkhlkl+sywzAMY0s4GMQwjDd88xlahJo/09PTAcD9Zq7GjRvj9OnTqFq1qltfvQOaUVFRmDdvHhYvXoyyZcsqOjYiIgIff/wxAODs2bO6rnmidQ6YHehQEjCS88Y3rXKavR6aVRl4SoNfZugQ6PiaNWvi8OHD6Nu3L0aPHo0jR47IDsAqITc3F/fff7/779jYWNx0000AgNtuu81Lzrlz52L27NmoXr263/7kBIOs9J2dMGptqnDDrKxQhmFsCweDGIZhGGmMfOBTy7p16/DTTz95bZsxYwYmTZoke1wlcpUuXRpfffUVMjMzS7xKWgnDhw8HAPfbx0TBCB9pXUvH6GAQkfdrx7XqKfriu3pnQZmhQ0pKCs6ePYvz58+jd+/ehoxx9uxZjBgxAunp6fjqq6/c65IBQHJyste+2dnZ7mxEf/rrHQwywndWYqQuIupvtSxGr5nGMExIwMEghmGYUEHPGzatN4FG3ES63vL1+OOPe21PTEzE2bNnSzzAaZUrNjYWy5cvx2uvvaZY1lq1auGhhx5C6dKl3duefPJJ1KpVS7Ef9Vj3xog5YqTfjSxtcsmoZS0gzz7UrmckIiLJunLlSly6dAl169bVve/4+HgAwJYtWzB58mQMHDgQXbt2xbhx4wDAnWlIREhOTkZxcTFq1qwZcH4bkRlkte+sLM+0SlYr9DVSDhH6YBhGWDgYxDCM2PCNiHw76X3zKdoD/ejRo+F0OiVf1T569GgsWbJEN7lq166NVatWoXPnzpKfx8fHIzk5Ge3bt8fjjz+O1157DdOmTcOPP/6IY8eOwdU2btwY8A1EvvL4+lHKr2p9bdYDilnnbKDyt2B66/mQFCwQZHSWk5UYpdczzzyD3NxczJw5E9u2bQu6YLtSee655x4AQM+ePb22V6pUCUeOHPHa9sYbb2DdunWSY3j+X89gkAjBBLPLSEONcNOX0Q7PGcYCOBjEMIw4yHmIY+TbL5SoWLEizpw5g7Vr10oGg+Li4nDixAncc889mscqW7Yspk2bhho1aoCI0LZtW/zwww/YsmULcnNzcfnyZQDAiRMnsHXrVhQUFOCnn37CO++8g4yMDPTs2RNt27ZFgwYNEBcXF9RngQIVDofDVplBZuEvyOIvU8eq0ictwSDRfWXU9blt27bIz89HSkoKoqOj8eOPP2LRokVebxiTso8SeaKjo7Fnzx706NGjRB/Dhw939xEREYF9+/YhPT09qG+tzgwyysdWy2BnmUMlY5AxHr7fZSyCg0EMw1hLoAwIz8/tTCjoYDWvvfYazp49i0cffRR//PFHiYc4IkJGRgZ2794t+Vp4rTzyyCMYMWIEunfvjptuuslrIem//voLTz/9tOb5IVow1OoMn2C28g2yqC3/MtrOagNBdngw0Fu+Zs2a4dSpU17rBFWpUgUHDx4ssS6Y1u+Lzp0746677gqoU8+ePXH69GnJzCTfOXj06FHd1wxilCHSeRNIFpHkNNsmVssgMmwfxgI4GMQwjHVIlcRYLZOnbEboyCgnMTER+fn5GDJkCIgIvXv3RnFxMf73v/+hWbNm7v1KlSqF7OxsvPLKK6bKpzUY5DtPlJQz+csc0oqSeatlfKXjeNpIS8aUVUFnNYEvvfc14ng9aNGiBU6ePIkBAwaU+KxZs2a4cOEChg4dqllmucdFRERg165dGDFiRNC+HA4H8vPzJWVnzEWEuSxHFpHkNMsWfC/EMMLBwSCGYaxFxBsDXitBLL766its3rwZ0dHR7m0vvvgiAKCoqMgrE6Rnz564cOGCpsWBlaJHMMg1T/wFhfztn56ebtiaNHKCtHqcK0qDHloDVVY9lBg1rtZ+RXhI69SpE06fPh3wPHr44YdRXFysKeCiRNeBAwfi0KFDXlmAgTh9+jT69u1rmQ396RsOYzL2gOcGwwgHB4MYhtGXUPmyDxU97KqnS64+ffrg/PnzaNSoUYl9XG/+adq0qdf2TZs24eeffy6xxohR6BUM8tRd7kOrUZlBnv2L+LYspZlEwY43OgPKaFuZkRkkd4wUIgy59q+c/Z977jk4nU5069Yt6L6jR48GALz88suK9FKSbUdEqF+/PvLz89G2bVvJzyMiItCwYUOvbYWFhejTp48h/lXrU7ODfCIEFo3Sy2oZGIYRgxC7HnAwiGEY/QjVG8FQRcpfIvjOJVfbtm1x4cIFPPzww373/eyzz0rI3K5dOwDAmDFjTJFXKhgkcuBAqQwilnEqlT2Q/HIDXuF8bZOrfwoRLhDhyrV/AwWEqlWrhsWLF2P79u1ITk6WJUdERAQWL14MAMjMzET58uWDyuxvUXF/xMTEYMOGDRg8eHDA/SZMmIC33noLpUuXRuXKlQEAvXr1EsJXUv+3YvxQINzPfYZh/p8QvB5wMIhhGH0JoQukrdBj/QyzvuTkZA60aNECubm5GDRokKoxlixZAgB48sknDbf9X3/9hYEDB2qyo4jnjW/Jmp1ugHzlDVZ+p1cGltFZWlbbNJgcQ+hqIAhEKLz2t9R+Xbp0wZEjRzBmzBiULl1akRxxcXHYs2cPAODPP/9Ev379/L61z1UuKtd2DocDc+fOxQcffCBr/08//RS7du3C0KFDAQDdu3e33Ed6XnsCBVCtmHtW2tVuMjMMYwwhdm5zMIhhGMbuuNaOsUM2ipzMgbp16+LPP//E8OHDVY/TuHFjFBUVoaioCK+88oqhJWN5eXmYOXOm31/kPR+ie/TogcTExBI2FzHQIjezxmrkPrCqDWrJzaAz0o96rAukZR+poJrU567zu5Ckz+/atWvjs88+w08//YShQ4eqnl8NGjTAmTNn4GpXrlzB5s2bMXPmTLzzzju4/fbbJQOCwfRftGgRpkyZosi2s2bNcsvRrl073X1vhK8DzSs5vlbz1j4t+lhR7mY3mRmGYVTAwSCGYRi7o2cwyGiCZQ40adIEOTk5eO655zSPNWPGDPdD2s6dO5Geno569erppktERATi4uKQl5eHsWPHIiUlBXfffTcefvhh/Oc//8GIESMwa9Ys7Ny5E4cOHXLLsm/fPsmAkNW+8ZXHDtlNZskpN4NOlMwgpRl/wXQKFFTx/Vwq8y8+Ph7vvfceNmzYgNTUVFUy+tKlSxds3boVW7ZswYwZM/Daa68hPT0d7733Hlq1auU1hpz+R48ejdGjRyv2S6lSpfC///0PAHD99dcb5n895oXSueKvb6Wld1brqHQsPXQT7ZouulwMw1gCB4MYhmFCAbvc4AXKHOjSpQv+/PNPdOrUSZexatWqhYsXL8KzXbp0Cb///nvANxI9+uijeOutt/DBBx8gMzMTCxYswA8//IANGzZg165dyM3Nxblz51BcXAypVlhYiNOnT+PQoUPYvXs3fvvtN6xevRqLFi3CvHnzkJmZif79+1vuC61zSoQASbD+9RrbXyaMKL7w3VfuWmByM3OUzAVfunTpgqVLlyItLQ0RERF+91ObaeI7tr9ARaAAx4ABA/DAAw9o8s+SJUtMnRP+fK3VhkpK6szW10y7hqLOnLHEMIwPHAxiGIZhzMU3cyAqKgojR47EihUrUKdOHV3HqlmzJmrUqIG4uDhERUXJOqZ+/frIy8sDAFy+fBl//PEHVq9ejfnz52P8+PEYOXIkZs6cib59+6Jjx4645ZZbUL9+fTRo0ABPP/20pgdnu2BU6ZSettGrnMXqByi54yt9oDfLN+XKlTPdxv5sYbUv9bKpnn2IZhNRCRU72V3+cNGJYUyCg0EMwzCMdTdTtWvXxpIlS/Dss88GzBow2xYDBw5Eq1at3AEk31I8tb8ch8oDhZI5o2Q/pUGPYLRs2TIkSj6Mmld6+0Y0GyvJkrLCp6JcC4zKoLM7VmcEMvJ8JMp5xDA2hINBDMMw4Y6VN1Px8fGoWrWq5TaQsonv33ZZpNvO6Bn0kJMZpLcvlJZzWTW2GfuLglFy61FKZFeb+tNFpIdyzpgKH9hHDKMaDgYxDMMw6tfrEAGzHqrD9YZTNL3VPGzrUcImZyy56yYZ+aApp3Qv2PjhEijSYtdAb9oK13V3RNHHiLWUGIZhQhAOBjEMw4Q7dv4FVI7sSoMHdrGFGTIaUbol0hwxI5AYKHCgt989x/JXIuX5uVS/agIadjln1CK1KLWcQJpcXxkhswj+sFKGYCW9TOj4mmEY1XAwiGEYJpwIxawXvR+47GALMx/AtZRuyS3nsloHJceoyfrQK5imNPgp1ye+/YqUGWT1+Sin3FCJr9T4R63MVgdjWAb5clotQzjYmWGYEnAwiGEYJlwI1xIGIzIwrJJJbh9m+05tGZbZDxFagy5ygyZK9FKaOWR1JomZ1w9RHjL1uoYE00dPfZUEI0WzW6jJEEw+EeZ4qNuZYRhJOBjEMAwTTqh9GBY9MGKETEau6WJ0eYgR/euZXWOG/30zOfQKhsotp9KSjSZq4FauXFrnoFWBDBGy1Iw4b0Mh2BDKsG8YhrEIDgYxDMMw0sh96NU6hqgPKqIFwPQodZObfSKSn9SULCUlJWH69OmSASGjZdMyhpogiBrf6CWjEWNYFcwU+VpktO4M24lhmLCEg0EMwzBMcEQLjIhGVFSUobbR40FVKtvL6OwTrb5VI6Nr/5YtWxrmb38Zc1r8pPVYOwT2zJo3UrYxeyF0ke3LSPtL9POCYRhGZ8wLBhHRPUS0l4j2E9EQDgYxDBMumFnCYbWuoYjLrm+99RYSEhIk92nXrh2GDx+uq9+Uluo9+uijaNasWcC+tWQGqdHLitc7K3n4VyuPa0FhPd8SpuVYq8vKRL32eNpFTz+p9YceY4pq61CAbcswTJhhTjCIiKKIKJuIriei0kS0jYhu4mAQwzChjlm/Nlr1q6adbp61luAsXboUI0aM8Lvv/v378eijj+rqN7mBICLC22+/jd27d6NcuXK6zgmtGSsi+NuovpVmmoRihp3U/BDpuuCvlM/o66WeWWNmys0wDMOEDaYFg1oR0TKPv18holc4GMQwjBlYfeNst8ygUCo3kZJVTRZFZGQkzpw5g2PHjqF06dKS+w0ePBgFBQVo06aNrvaWK++iRYsAAI899phlc4Lx7ze7B9UCyeAbCFLzKnaz9bfCppwZxHZkGIYRCNOCQQ8S0TSPvx8joo84GMQwjNHYKWAhAlaXmxitm1q577vvPgDAgQMHUK1aNcl9qlWrhsuXL+PkyZOoX7++YbJLERUVhdOnT2Pp0qWW29lTXn9ZGXrpbZZ99eo3WAaYv8+MLHkL9LmrFM5fSVyw4/R6aNc7uMTYFyMzrOz0fcYwDKMDYgWDiKgfEf16DauNwzBMiMA3eKFjL7nZCXqzcuVKOJ1O1KlTJ+B48+bNAwC8+OKLmvTxtz02NhZPPfVUie1t2rTBuXPnUKtWLb9j9e3bF3FxcYbbLNCaOkoe5OSW0Oklr5VlVunp6abPbTn29QzCKJVBT5n1DC6Z7VurZVArq8iy63GuGFHGxzAMYzO4TIxhmNDBzjdxdpbdTBv5u1nXe90Sz2M7dOgAAPjXv/4VVJZ27drh1KlTiI+P99t3w4YNA/YR7KFk3759qFixote2CRMm4NVXXy2xb6VKldwP0gCwY8cOt2xmZJyozQwKVprkW/YXzIfBPjdz7Ripz4MFg9TYUI9+RMrGUTJvRMBOwQU9SxpF0kPN8VbrECqwLRnGFpgWDIomogNEdB39/wLSjTgYxIQq/CVojc3tePNqd9mtsJWcz7SUu3keGxUVha1bt2L16tWyZfnHP/7h/n+1atVwxx13oH///pg+fToOHDgAAJg4cSIiIiJUBTI2bdqEzMxMPProo8jIyMDIkSNx9OhRLFu2DGvXrsWuXbtw7NgxXLlyBQBQVFSE/Px8AMC0adNkj2Olj+Uuqi31ECu3D5EWdlcaCAqmW7Bgmpyx7XZdElFeo7PajJRVRBm12JxlMldf0c5FhmEkkRUMirgWnNHUIiIiOhPRBLr6ZrEZAEYG2V/7oNy4WdAcDgd169aNsrKyyOl0Wi1OWDWHw2Fbm+spu53toGeTawepc9Z17CuvvEKjRo2iBg0a0L59+7yOOXfuHCUmJlKtWrWodu3aVLt2bapTpw7VqVOH6tWrR9dddx3FxsbSlStX6MiRI5Sbm0t5eXlu/vvf/1JeXp5ivb7++mtq3bo1bdmyhZxOJ506dUryX9f/z5w5Qx06dKDly5fTzTffTIcPHxZ+fjgcDiKiEnIG8pXvZ8H8b9Z5osc4vn3469PhcFCvXr2IiOj777+nNm3aSNrKc/9A31d2u5bYQV6R7xHsYD+9m9E6i+xvI1s4ziVu3GzYNgO4JeheWjODVGYTWR0pYxjV8K8hjFWoKTlhpM/Z5ORkXLp0CQAQGxuLYcOG4bvvvsPWrVtx5swZFBcXAwBOnjyJTZs2Yf78+Rg3bhyef/55pKWl4ZZbbkFCQgKu/bihG9OmTUNmZqaiY3r06AEAqFevninr8Ojhj0AlgUr8aLUeRtpCaix/mUGByhKN0k9N33r70Mo54a+MUbR5Gmh+iESgjDe1c82sDEGrbccwDCOBOWViHAxiGEYpfPOk3m4cDNJO2bJlsWPHDqxfvx4AUL58eSQmJmLWrFkYMWIE/v3vf6NFixaoUKGCrr6Ts98nn3zH3h4QAAAgAElEQVTiFQySOi4uLg6pqamoVKkSiAjPPPMMCgoKAo4j2sOgUXKYpZ+e9pQTdJGzZpaeuhtRiqf3HNTan9rAoysIlJ6ebqvrsZayQjNk02NhelH0sRtsJ4YJSTgYxDCMeIj2UGo37Gg30WSeNm0afvjhB7Rv394dDFIrq9wHLLlz/pNPPsEXX3yB+vXrIzU1FZ9++ilGjBiBSZMmYenSpcjJyXFnLW3evBnlypXDK6+8gtzcXCH9YOaYSq8tWmXTM6ihZB9RMh5EeDjXEghSsmC91Gf+MoPsitXfzf4y3oyYN6GKyBlUDMOYDgeDGIYRE77pEMP+ZvhBtBvN/v37Y9euXYiPj0dqaqpXMEiOrAkJCUhNTcWAAQOwePFirFmzBlWrVpW0b6Bt/sb45JNPcPnyZeTk5GDTpk1YsmQJJk+ejBEjRuDZZ59FWloabr/9diQlJSE2NhZEhHfffRe//fab5vmg9DM9fK/32EoCQVrnpR6BQ7VymJGRFOqYOS/tgki6ifbdITqcQcUwjA8cDGIYhmG8CZSOL+dYtWNarTcRoW3btjh48CDq1KkDh8OBMWPGSGYGNWnSBM888wzeeOMNTJ06FUuWLMHOnTtx7tw5AEB+fj527NiBJUuWYM6cObjjjjtK2DfYw6S/fVxlYkpu7KdOnYqlS5dqmg96Birk+l6vsc2Yl1LBPKVZSHLWSTLrXBElu0i0fsNdVtFg27G9GIZRDQeDGIZhmJKoyQyy+6+0DRo0wO7du9GoUSP3Nt/MIBexsbH49ttv8fPPP+ODDz5A//790bFjR9xwww2IiYlRXT4T6KHf9bfnmkGBxklJSUHFihVBRJg/fz5mzZqlWCY588DKYIHeJXhaZAy2OLOc8ZOSkgLqafY5ZsQ4wcrZ9AjumeVzNfbSGjQUyZcsK8MwjK3hYJAZ8JcawzDhgl2vdzVq1MCmTZtw8803e22/8847JYNBRtnOc60Rf5998sknmDt3Lho0aIA2bdqgR48eeP755zFmzBh8/vnnWLt2LZxOJwBg+/btcDgcWLlyJcaNG+fXX/4eyvV++5SWOWNmuZbeY2jJBvPdbuY5ZoSvAwV/5NhJbsai2cE/rT422o92CdTbSVYtOlotA8MwDHEwyHjC4UuNMReeS4xarJg7Zj/0qGXOnDmoX79+ie1ag0E33ngjBg4ciGrVqsmylYtAD4yffPIJCgsL8ddff2HTpk1YuHAhpk2bhrfffhvp6el46KGHcMcdd6B+/fqIi4sDEWHLli0YPHhwif6CBRmMzmKQ25/acfXKaNJDXy0ZL1adu0a8DU1LGZxLJqkMKrNtpFdmkJnyinr9lWsjO+kQSDcrstYYhmEk4GCQGfBFmdELDi6KhZ38YMXckQo2iDp/o6KiJP0qJxhUunRpJCUloX379ujXrx/GjRuHpUuX4tixY3C1X3/9FfHx8X778M12CGSjKVOmeL1aXg4HDx5E3759JX2kxq96zxMjxg0035TMxWD9GDkvrUavQJC/AI5SX/iTSeRrixU218POouFwOJCeno709HQhAn8i9Wd3P9tJVoYJMTgYxDB2g780xUDLDZeVvwxbPabo89fXr/6CQWlpadi8eTOOHDmC4uJiXLx4ETt37kRWVhbef/99pKeno0uXLrjppptQtmxZWWP6e1j2Ze7cubKDQZGRkahevTry8/Px0EMPKZ4fIvtLaxaGkuySUA9AGE2w0i6zMq+MGltt30Zm3tntfJark9k6BJq7Zship3sMtfrxdZRhLIODQQzDMGpRe5PGNz5iIzczKC0tDd26dcN1112HiIgI1XNCyXFRUVE4cuQIvvnmG7Ru3Rr3338/+vXrh6FDh2LixImYO3cuVq1ahZ07d+LEiRMoLi4GABQVFeGXX35BZGSk3/HVrIFipY+0yKaXvlYGMay2v1JdRNTT0+dGZH8EC4AZtX6QyOeunQhWlmjVwvShRqjrxzACIysYFHEtOGNqu3ZjzY0bN24h1xwOBzmdTtv0G0pNqY3uvPNO+vHHHyk2NpYuXLgQsF8iom7dulFWVpbXGBUqVKDExETas2ePKhk8W2RkJG3fvp2Sk5Pp9OnTdPz4cTpx4oTXv1LbTp06RcG+y6XkMmNOqR1Dq2xK9TXCFg6HQ3LOGNH8ya9UL38yS223wzUp0LlrxBxT8rmWZgfb26GZfU2wYgxu3LiFbdsM4Jage3FmEMMwjNiEyy+IZtvIX2ZQ8+bN0bVrV3dGgVR2QXR0NK6//nosWbIETqcTd9xxh2oZKlSo4P67Y8eOmDhxotc+VapUQenSpS23sa+9jfCJEXLIlVNuKZ/Z8qm1s1q95GQGyfGt1lI/I/1gx1Jg0WQQAbYDwzCMX7hMjGEYJhSwYi0FO6LURv6CQVWrVsXBgwfxyiuv4P7778dzzz2HN998E7NmzcKaNWtw6NAhFBUVoaCgAJcuXQIAvPXWW4plcDgcmDRpEmrUqOG1vW7dul5/169fH7/88gvat28fsL82bdogMTHRMHt5HqdkgWYj/a1HsMnhcMh+pbne8utlN3/7G6lXMPnVvopdLxmMOFaJPeX2r8bX/OPA/y86He52YBiG8QMHgxiGYZQi2o0l3/gbR6A1g44ePQoAuHz5Mvbu3YtFixZh/PjxePbZZ3H33XfjuuuuQ2RkJH766Sfs2bNHtV9XrlyJ6tWrB93/rrvuwuXLlzFnzhy/+1eqVAnr1q3Dv//9b8PnlSjr6egRCPLM/DIzU8Wf/fUO4Fh17TA6WGj2tVFJppVc2dTqwN8HHAxiGIYJAgeDGIZhlCBq4MWqUopQ19lfMMjhcGDHjh0YNWqU30WZXRw8eBArV65UtVCsw+FAXl4eypUr5942efJkr7IxT/r16wcAOHz4sN+xateujby8PCxbtgx16tSx3MaBxtY74KE1sGVFcMGfXYwoWTNLBzP70jO7Sm8Z9c4MEun6LAp2sZ3V4zMME5bICgZFEjdu3MK2Oa4trhmqTal+TqfTlMVelTYz5HFcWyBWy5zQaz7pIYucFhUVRUTk+pHCa+wrV67QpUuX6O+//w7YR0JCAi1fvtxrm1z5K1euTDExMXTx4kX3ts8//5wmT54suf+UKVNo/PjxVFRU5Hesv/76i+6991667bbbaOfOnfTMM8/4Hd+seeVvbK3nmqtvh8NBvXr1ol69eqmaMy4ZzD7//S1wnZWVRdnZ2abIoKXpeZ7K7cv380CL/xpxDVEyN+TuK2c/s66JdmtKbJeUlGSCRP7HZ99x48ZNyMaZQQwTnoiaBcP6Seti9jFmrGNh9q/6vnTu3BkAULZs2RJj//zzz+51gPxRpUoVAEBaWprkq8yDjf/6669j06ZNJbZPmjQJb7/9tuQxERER6N27t9e26tWr45FHHvHa1r59e1y+fBkA0KpVK8NtqXZOaMnm8ezbzBIvq2xlpixG7Ku1r2A2UpOdZ7X9ROg3HLBiTTD2HcMwFsNlYgzDBCbUb1BCQT+1QRat68EYvY6F0Q+/KUQYcu1ff/v06tULABATE1NCjtWrV2PMmDEBx2jSpAkAoFatWor1qFOnDk6fPo0ZM2aU+Kx06dJYt24dhg0bJru/RYsWldjWu3dvFBcXo3nz5obYWOuc0Lrmh1VBCyNtpbdOZgR1zcRf+Zwocosih9Z5YFeM/IEhXGzIMEzIwGVi3LhxC9xEK4fSu4WCfr6lK3JSzbWWu6g9XmkJhVElOSlEtJKI3rr2b4qf/ZKTk4mIqGLFiiXS+AsLC6l06dLuvx0OB0VHR1NiYiLdcsstlJqaSo8//jgREbVs2VKxHtOmTaNKlSpRQUFBCZ8WFhZS9+7dqU+fPjRjxgyKiYkJ2l9ycnKJ/ebMmUMvvfQS5eTkKJLN1fQoazDyHJTbt53KNOTKKUcnJXq79pFzXpplR99xHA4HtWnTRnJ8LdcTqf7U6ugph952krKH3OPsMv+1tGB6ai1JtbLUzKoW6nOGGzduRJwZxDAMYxNE/dVZNIYQ4QoRQITCa39L7bd161bg6pdSCZuuXbsWe/fuxbJly/D7778jPz8fxcXFcLXz58/j4MGD2LRpE7777rsSr4cPxn/+8x+cOXMGtWrV8rtPQkICtm/fjl27duHWW28NOC8OHTqEtLQ0v59L/V+EueZZ5mXGOEbtb4WcemUGKfG1mfNCahy9x5UaRw8d9baTVFmkEvsY6S+Rvo+MlMXqUjMrbBlO+oYD7Muwg8vEGIZhREfpA12of5nroV8KES7Q1UDQBfJfKrZjxw5cvHixxPaYmBhcuHABv/76K5577jk88sgjSEtLQ/PmzVGrVi3JsjKlVKpUCU899VTQ/SpWrIh58+ahuLgYX3zxBRo0aCC535o1azB27FhJe3q+Ol3Jzb1Zc02uXKLJE0qIWHKntGxOT931GNeIwFWwv82et+F2roSLnuGqbygTbucqQyAOBjEMw4iNnC/nUPsCN0vXFCK8WbYs3u7SxW9/vXv3Rl5enuRn8+fPl1zPJ5icRvmpZ8+eOHToEIqLi7FmzRr0798fjRo1cn8+b9487NmzJ6jNRc0QkBMIsvq176GMiPq6fO5vnSBGmx/1zFqyWm+GYYLD52rYwcEghmEY0VFT6mHXL3S5wS+j7evaFhUVhXHjxkke17hxY7z++uuSx/rLWDA6YFG9enU888wz2L59u7tc7cKFCzhw4ABOnjwJAGjYsKFsm/ibV2rkN+PBXbR5r9ZOVsvtz3ciymZ0aY6IOoe7z+0G25BhGEHhYBDDMEyoYbdfy0ULZGl5CHI4rr79KtAbsIx8aPWUu0GDBhg4cCDmzJmD7du34+jRo7h06RKGDh0qe/5IrUES7OE7kH7+jrUiaGLVmjZGzj0jdDDLXiL6MpwCImZmMYY6vudNuMwhhmFsBweDGIZhQhG7LGQp6o2y1nImtccbHeCQChQGeghUmhkkpzzON0hpdtBEj+ON9KeSIK5voE5Pfaw+N0UpURLt2mSUrUW8DtsRKVuyXRmGERQOBjEMw4QqdrkB1VJ6FEqY9UDmGSg0KojgTzctmUF6Z5CJlpGmdA747itXfivWjDHSDoFklhOcDEVEySwLV8y0pah+E1UuhmG84GAQwzChgV1vPKzKIBFNT72CEnazi97yqwkImGUzJUELqUCN3q/hNqp/M3yoNoBqpwwQtXNZTlaGneygxm6cmaJs3tgVUeexqHIxDFMCDgYxyuALOyMiIt14mFHqIpK+esob6HM1mRJ2mANW2Fl0ff3poVcGWbD+tejpcDgCrhelh/30KJGzyrd6968l8GH1dcIsu4pyXRSJULKJqDqIKhfDMF5wMIiRTyh9eTKhhwjzMtg5oqVUQcSSFrP8o7R0xmo9Q2GdFSP0lbsWjsPhf80lqzLIlAQ0lQSDtASEzfStEYvR61kKZrQt1Oonypii2ijc/MMwDCMYHAxilMFfnqEB+9F822p98An3QKyddNf6cCs6agKTSUlJmD59OpKSkgKeI3LmulVvydOScaI1680oWYMd7woEuXynt0xGXA9FOJeMvmbrUfomgp1Eg23CMEyYwcEghgk3OLBgre2tODacsYPdrDgntZQYqZXVFQjyV6Lluah1sPGDBSZE8rvZ/tWjjMz3eD0CQUau+eTapiSDyww/mO1fozPSRMaIkkOGYZgQh4NBDBOO8M0OEw6IcnOvtbxNb/n1CBboYQ+1pY/+3kgmmt/1sJnVPhLBBnL7llvSFiggafU8MdOWdtJXif+tsEko2ZJhmLCCg0GhBn8hsS0YJpQw8ube7HVXrDjeKt2DPZRL6aUk00GEzA+97R4oW8oIf4pqI7XyackMUnOe6Wk/u53fImKVziIGnxmGYWTCwaBQgr+Q2BYME0oYeR6beY0QMUvDSP0cDgcGDx6ML7/8MmhAKJA/QiGDw1fuQOU9UmVycgNBagIZIn9HypFPbaBQaX962i+Q7/VaC0tE34okixEyiaSfSLIwDCM8HAwKNfhLQB9bsB3tCfst9FCyBoZRfYcSZpWcJSUlYfDgwZozLfTI4BCJYMExPYMMehxjpZ2DBYKsngdqfOTvTXPBSh+Nls1oO1ntKzvIxHoxDGMBHAxiGF/4y9SesN9CA7UPteHgez0yjMwsOTMqIG/XQL/aEibR5bVSPqtlUCqvv2CQHfWxu69ElIn1YhjGZDgYxDBS8JepPQnVtG+7oaVMQ+3Dp9385ZJXSeaTlQukmm0bo4JWVgc3jApyWSGvETroYQMR7WikbHabU6LLaZQsIuloF7RmljIMExRZwaBI4sYtzJrT6bRaBG4qml5+czgc1K1bN3I4HLr0Z8emVndf2ynpx+l0UlZWVgk/yulDlHNWjqwuGyUlJcmeZ/5so7SJYqdATS9d/fUrtxlx/vvTSdRrjhIfeOrgT49A+ulhA1Ht6Gp6z+lA+opuC1cTSU6jZBFJR7s0JTZj+3LjZnDjzCCGYcIN0X9lUppZorRvPV49rkcmhsilNVrWszHSf3rpE0oonZPB9vPcHorrvGixrz/bBbKp7/Hhake99TXaFqE49zkzSBw4M4hhDIfLxBiGYeyG66FK70VHfccQpR+tD+5G+kDqgdco2xipn+ecMsuGVvlKSWlesP5EDlZaZd9gttPDniJgBxnN9jvDMAxjKzgYxDAMY0dEzCwRwR5m9m1ExpOcAIRReuoZXNQSJLPD/PANfATLzgi0cLComPmrvBGZVkbbxooAtCh98fcPwzBMSMBrBnHjxo2bHZtr7QlR1oDxrdU3u3bfKDsEWotAy5hS6+IEG8uIdXQ8W3Z2ti5j+OqhdT0HPeaSEesPebZQW69Cqc8C2VdOH57Ha/GVWT4w43z0bHquiaLH+eg6XpTvH7XNynM2lK4X3LhxC/HGmUEMwzCMP6TKcEKpfEDvzCAr1/iwymZabGXmXDLCp3b1q14ZYmb5T5Trjl7XCyOz68xel8lqn/iTyar5IspcZRgm7OEyMYZhGKsJhRtC0cqCzNBXyc18qAbK1M4Ps4410qei2VNUue1aSqUGf6WWvusiydHDLnPRzrpYKZOI9mAYJuzgYBDDMKGNEeu96C2fkTfKouipt8xW6yX3oU7Kx1bLbrY9XfqrWZzabFuJ6Bt/9vRdZ0fUB267+UdrFpu/ee66Zih942AoEEq6MAzDhBAcDGIYRlz0SGVX+opjq+Q0yn52e0CUI7PVeqkZX2QfaLGn3GPULE5t5NvyjNLTSnlCPQPHjPNe6xhyAr6hUGLFMAzDhAQcDGIYRkz0uvE3OjPI6sCE1fqbKbNI8ls9vtH6GFHKojR4ZtWr7o0OHgcaT+TMF7PsYaTsdrOP6N8vTGDf2dFvdpSZYRjVcDCIYRhxsctNiV3k9JSXHzD086Nd7Ki2rM0q3a3IvAq05osROnqOZ4fMFzP8LuK4ZsmpJOPL6vOTCWz39PR0pKen28oHfG/AMGEHB4MYhmHCEbvf7Oktv9qbYKtvno0I8Gi1rxXr/OhR5qZnNpKSzCrP8eyQ+WIVVp9rIuknZ66aec4z0va0o03tKDPDMKrhYBDDMIzRGLkWi0iYJbNRD4V2ywwS8WHPigd2tQ9dUrJqCQR5rhcj981RVpTBGWH/UBxLdFvKWVPLqGAxwzAMExJwMIixBr7hYMIFNTfZdrwxN1tmPdd8Eqkfkcc1OuikV0BH7ZhaM4x83xgXrD9XKYkRmUhmlYGZdd7bKVPNTPTUjW3MMAwTdnAwiDEfOz7oMowWODNIzLH1XD9FhGuaHdaaMaJ/sx+IlazhEixrY9CgQSXWFdFaqqhHgEykjDM9g3SMWP4RDVGCayKOwzBMSMLBIMYa+MuLYRi9ECGQYPU1Tc8HMiXBDr11sNKGetpZSSDFs5xMrR+tygyyqh+lmZZWzxu7yal1/tkRva+hZmXMhUogjmEYS+BgEMMwjJ3hm0Dx7CBayViolyiKYme1NpTK7NHiQ1Ewai7ZtSRVJJ20yCKCjHbwdajNT6t9wzCMIXAwiGEYxq6YkQ3CWOcTq+QJVtqkRRY9+xMZPTMrRJtTRtpBSb9mZD8ZGdBSu81Kv9l5LjLq5wL7nGFCFg4GMQxjLEY+DIgkj53tK8rNntXjh6oeepbq6Ll2i5y3IdnN1kbJZcb1zk5BZTPXRdI7OKqk1FCE67JVPmbEgX3OMCELB4MYhjEOPR72pNCyroaIN9da7CBiX2b6VK2OVutrJz/pZTfffvr27YuWLVtq6s/sciEzskn0trFZGTB2K9/S+hY3rcFRM3RkGIZhmABwMIhhGGNw3Sjr8dpkf/2beZxohFpgy2jfeNrLStuJ+rBtRVmInTKDHI6rr4H3ffOXErnkZILonX0VCplBRvWp15sE9ZZNpDFD6fuFYR8zDFMCDgYxjC/8xci2tAtsX2U20iPDxepgjhUPxmZla5k1D7T0YVRZkmfwXOs4eupu9TXGigCoWf0ZWWImuu0ZMWAfM0zYw8EghvGEvxgZJnTQ+3wWNZijl25Wy2CHeaDlgT/Ysa5MKT3La/XONDLCN3rb3CzfarGVGSVmVtuEsQfsY7Y3E9ZwMIhhfOELNcOEDlb/+h/OiGQrPYIOZjzwu/bV03aiBi99SzetnBNWlCyKdH5YDduCCQf4B2dGQIwPBhHRQ0T0OxH9TUS3cDCIYRiGYUIbu930ypXXrg/8ombXuAJBctdi0kse30CU0vXtzF6LKZSx27WCYbTA85wRDFnBoEjS1nYSURoRrdHYDzdu3Lhx42a75nA4rBbB9OZ0OikrK4ucTqei46yylUteOfsp7dfq5nA4qFu3bobbVs04vvbRU0ZfeTz79pyfrv9nZ2er6levfX2PC5em9lrBjZsdG89zbrZsOpV9/UicGcQwDMOEEfyrt762MqtsyWpbGKGbSOP47ueZoWNEiZwR64cZZXslsobiXNXT51bLwjAMIzjmrRlEHAxiGEYQ+CaR7S2y/uFsr2CBIBEWNBZlHLvOk0B+DAXfmiVrKAcvtdhN70XYGYZhQhh9gkFEtIKuloP50k1JMIiI+hHRr9ew2jgMw4Qg4X4Dbbbe4W7vULWXVfKpHVcke+rhY7vMEzv4w86E+pvFtLxtjecYwzBMUDgziGGY8CNcbxKteoAMV3urtYGWByAz5LdbIEJEebXKIsIbuJjwwYpzSMTzlmEYJsQwZQFpbty4cROqhesCfnov1Cl3kVPR7e1wOAxdsFXpIrIue0ktfOvbr5r+lTbf/u26OLQR81CtTlpkcfnD7GbWQtTcxGtWLPLMC0tz48aNmyBNY0ZQdyLKJaLLRHSMiJZxZhDDMGbDvy7qb89Q+NXW9Vpro15t7TmO579y7etv7Qtf+2vJFNFzoVp/+9lhvlSsWBEJCQmK7GaVTiKV6YnsU5FgOzEMwzCCYV6ZmIogktXGYRgmRLDDg6hcPayWQY08osktJZ8ZMkoFcOTYLVCAxV/famXS4jt/ffXr1w81atQQfh7cc889yMnJQbNmzRTpLNdmsbGxqFy5sqx+y5Urp8kXauRW24/aa6vo80FPQuU7iGEYhgkpOBjEMEx4YPebcLs+TNhVbk/5Pf/Vsz+jXqOtl25qZJTad9CgQThw4ABuuOEG3XXQG6fTCafTKUtWpTZr2rQpXnvtNb/HRUREuP8eNWoUbrzxRsl+4+Li8Nhjj2maJ8H8asYaV3a+Lqixgwi6iiADwzAMIwwcDGIYhrELIt7Iy3mgFFFuuboZ+ZriQFklvlk/RulmxgNsWloaAODQoUO6yKSX3aXG+emnn3D69GnExMTo6leiq9k+69evL7E9MjISa9aswZdffolSpUqBiPCvf/0LEyZMcO8TGxuLli1bonXr1vj2228BAM8++6xuMuqRZaaXneyIHYJbImdxiWw3hmGYEIaDQQzDMIw6Aj1c6Fl+ZLWOZskrFXwy8iHTrAe8O++8EwAwZ84cU2SKiopC7dq1ZdvY8/Nvv/0Wq1atMswm+fn5ePnllzF27Fh89dVX2LhxI44fPw4AOH36NOrUqQMiQufOnXHx4kVkZ2fj/PnzAIDCwkLk5ubC6XQCAJ544gld/C01x7SuDSTq+W2kXElJSZbrZ4T+Rge67BBIYxiGCVE4GMQwDOMinG9G1equptSEb/6D29PozCAz9HD5uFOnTgCA559/3pSxIyIikJWVhccff1y2jV188cUXsoJWajl8+DCWLl2KMWPGYMCAAXjwwQfRunVrFBYW4t1333Xvd8cddwAAOnTogMaNG6NKlSruz7777jv873//U+2PQDZRe7zafa2ak8H2U2ojM8o+rbRnuGQGiSIHw35lGJPgYBDDMAyRuA8woap7ONo53HD5uG3btgCA9u3bGz6Wi4SEBBw9ehSzZ89GhQoVZPczc+ZMTJ061Wtb+fLlcdddd2HcuHGYNGkSypYtq3r+Zmdno3Pnzl7bKlWqBAB48MEH3dtatmwJAIiOji7Rx/bt2zFmzBjNNjLyeFHPb7VBL73XWZIjp+9i8+H6/WTm3GAbhx7sV4YJCAeDGIZhXITzzYLIuosimx3KQESzGdHVkicAaNy4sSE6+bvZ79ixI4qLi7F//37ceuutJY4rX7486tatixYtWuDuu+/GI488gnXr1mHr1q3IzMzEDz/8gJycHBQXFwMAzp07hz/++AMzZsxQ/XCxa9cuPPDAA17bGjZsCABo0qSJe1ujRo0AAGXLli3Rx7lz59CzZ0/L/RqqiFLaKlJmULjANg5N2K8M4xcOBjEMwzDiIsqveklJSZg+fbotAkJmLg4th4cffhgAULVqVcN08rd9/PjxAIAlS5aAiFCxYkUsWLAAly5dAgAUFRUhLy8P69evx9dff429e/di06ZN6NevH7p164aUlBRcd911SExMLJGpocaGv/32Gx599FGvbe3atUNxcbFX4Of6668HAFSsWNFrjCpVqgAAGjZsaPk8C1fsnmUMkAYAACAASURBVEFp9bWUYfSE5zPDaEJWMCiSuHHjxo2brZrD4bBaBF2a0+mkrKwscjqdlsqRnZ1No0aNouzsbEvlkNPk2MzhcFC3bt1MmSeJiYlUUFBAxcXFXtuTkpKocePG7r8feOABio6OluwjmE5S2x0OB+3cuZPWr19PGzduJCKis2fP0jPPPEOTJk2i2267jcqWLUuJiYmUkpJCaWlptHnzZjp37hzNnz+fsrKyaP369ZSTk0N5eXle4zudTlU2jIiIoHLlynltq1OnDp04cYIuXbpEpUqVIiJy79OsWTPKyMig3r17U79+/Wj48OHuY7iZ38w8b4wYS02fdv4usbPs3II3M89HbtzCunFmEMMwjH2wKpvGDr/Q2UFGs+Q1yxbjx49Hdna2e07WrFkTDRs2xObNm3H27FncfffdoP9r787jo6rv/Y+/vxAg7GESwi5gEJRdRcTqVYrYB61VFLQXrGtdEOtW6m21eO2jWrx1r8iv6sVivVSrorVY7aUqqLhh3YLVigoRy57ABC0EyMLn9wckl5BJMpntnDnn9Xw8Pg/IzJlzvud7vjOZ88l3keyuu+6yyZMnN7mvadOmWWFhYYvOsVevXg1WFzv22GNjbv/www/bggULGjx+0UUX2X333WetW7dOuA4jkYiVlZXZ3/72N/vzn/9sK1eutO3bt5uZ2c6dO+2yyy6zZcuWWa9evezCCy80M7MtW7bYqlWrbPny5fanP/3Jfvvb39rtt99uV155pedtMyzh5XAtr3sG+aVnZqLnma1lJ1p2nb0uA0FkcTBMjCAIIojhRSIokxOspquMfopsK29tdOnSxUaNGmWTJ0+2a665xj755BOLRqP2t7/9zTZv3mwHO/vss02SzZw50/70pz/V21e7du1s8ODBdsopp9gVV1xhu3fvto0bN9rRRx+dVBlvueWWuiRUbXTq1MkWLVpkS5YssUsvvdRuvvlme/jhh+2ll16yiooKMzObMWNGwscsKioyM7Mnn3zSvve979mJJ55ogwcPti5dupi0byLpXbt22ezZs23ChAlmZtazZ88WJb+I1Ea2vgdTXQdevNbrshMEQYQgSAYRBEEQqYlML72c6jL6MVJR3nSf89FHH21PPfWUvffeexaNRuuSPJWVlbZmzRqrrq62FStW2I9+9CObMmWKTZgwwQoLC62qqsqWLFlSt59vfetbVllZaU888YStWLHCNm3aVLev8vJy++yzz8zMrKSkpMXndPD2p59+uq1du9aee+45W7lypZWXl1tVVZXt3r3b1q9fb0888YTdeeedds0119iUKVOsuLjYXnvttaTqqV27dlZSUmJXXXVVzOevvfZaM7O6Olm0aJF17NjRbr31Vnv22Wft+OOP97w9hjGy7TPDL+fll898giAIotEgGUQQRHCDL6H+imy6HtlU1ubOIxM3ZNOmTbNFixbZ9ddfb6eeeqoVFRVZq1atrGvXrmZmDSZNjkQiZmY2Z86cusfGjh1rZmYPPvigXXrppTZp0iQbOnSoderUySTZkUceaWZm1157bb1rFM9E2fPnz7eePXvWPTZmzBirrKy0s846y8aNG2d9+/a1Vq1a2cMPP2z3339/g32sWbPGZs2alXRbOuOMMxosLS/JOnfubFu2bLHVq1dbQUGBSaq3rPyjjz4asx69alNel4HzTv5c0vW5cOA+g1RnBEEQAQySQQRBBDPC8FfJIJ+bl/UWtLbj1XlEIhE76aSTzMxs6NCh9Z4bMmSImZnNnDmz7rEjjjjCzKzRIWATJ040M7Pjjz++7hoVFRU1ea3atm1rF1xwgZmZvf3229a2bVuT9i3nXlVV1WD7WMmgVq1aWWVlZb2eOfHWabxtad68efavf/2rQT3VRps2bWzp0qV2ySWX2L/927/Zf/7nf9oLL7xg3//+9zPaDoL23gjzeacjaRPEeiIIgghwxJUMir20BwD4mF9WoUqX2lU0gnyO6RBPvfml7UQikZSUwYvzqK3nnj17aufOnVq1alW95wsLCyVJ69atq9u+oqKiyX3m5+dLktavX1/vGpWXl+uwww7T0KFDNXDgQA0cOFADBgzQwIEDVVhYqN27d0uSnn/+eVVWVkqSKioqGl25TJLat2+vAQMGaMCAARoxYoTatGmjkSNH6o033mjRey9WW+rSpYvy8vLUrVs3devWTcOGDdMPf/hDLV26VNOmTVNeXl5ddOvWre7/kUhE48eP144dO1RZWamNGzfqoosuUnFxsTZt2hTX6nHJtmu/vDcOlKr3SVP79uN5J6v2XFL5uySI9QQAYef299TJ7EGdy/xBASCLpPMmKMiyod6CkOyLRCKaO3euevXqpZNPPrnec1OmTNHTTz+tUaNGaf369Zo8ebLef/99FRcXa8yYMXrvvfca7G/mzJmaN2+ecnNzVVVVVe+5ESNG6PHHH1c0GtW7776r4uJiffjhh9q8ebOWLVumTZs2acKECXXb9+3bV+vWrdPUqVPVu3dv9e/fXwMGDNAJJ5ygSCSinJwclZeXa/369Vq3bp3WrVunL7/8UnfddZeqq6tjtqFYj/Xs2VPz58/XEUccUZfUad26tSTVJXUikYjuvPNOffzxxyovL1d5ebmi0ahmzZqlzp0767bbbqt7fPv27dq7d2+9Y8XbVmpfkw3tP17pfJ8E4T0YryC1CQQbbRVIqffMbEyzWzFMjCAIggha+H0og9/LF0+sW7fOfvaznzV4/PLLLzczs65du9ada//+/ZscJnbjjTdaaWlpi44/ZMgQ2717tw0aNKje47WrdT377LN233332U9+8hN78803zcxs4cKF1r59+xZfq8aGxxQUFNitt95qM2fOtIkTJ9qgQYOsffv21qNHD/v000/tjjvuiLlP55w98sgjduutt6asrQRxGE86z4V6Igj/RBA/vwjC42DOIIIgvA9+sQcz/HxdU/2l0s/n6lWZa5dSP/bYYxs8d/vtt1s0Gq33WHPJoHvuuceKi4tbVIZ77rknZrKldevW9sEHH1j79u0tEonYmDFjrKqqyvbs2RNzAulU12dBQYF99NFHtmDBgia3a9Wqlf3+97+3//mf/6k3obSfr7tXEdTzSlXd+OEm2uvjcw7ZH9Q/QaQ04koGtRIApEltV/xIJOJ1UZBCfr+uqZzbwu/nGksmyjxhwgSVlZXpnXfeafDcoEGDVFJS0qL95efna8OGDXFv365dO5166qn65S9/2eC5mpoaXXDBBWrfvr3OOussPfroo1q6dKmefPJJSVKvXr1aVDYp/rmZBg0apFdeeUVvvvmmLr744rrHY12LvXv36vzzz1ebNm20ZMkSde7cucXlSrScXmppu0ymPWfT+zZRfpjLJxs/Jw8WhHNIlF/OORs+v4CgIRkEIG388CUVqZcN1zVVZcuGcz1Yqssc60bhjDPO0DPPPKO9e/c2eK6oqEirV69u0THy8/O1cePGuLcfOnSoXn75ZX311Vcxj3/00UdLkk499VRVVFTorLPOUnV1tSRp8ODBeu655/Tv//7vdXP8pOJm6Dvf+Y7efvttPfnkk7rssstqe0LXu8kcO3asrrnmmrrX7N27V+eee66i0ahef/119e3bN6Fjt6T8XiZVErnhTrQ9h+nm3uvPp2z8nDxYEM4hEWF6nwCIgWFiBEEQRJCDrufJ1d3BQ1A6d+5su3fvtpNPPjnma3bs2GE333xzvX00N0xsxYoV9otf/KJFZXv33XftyCOPjFneoqIiu/322+2TTz6xXr16mVR/aflDDjnE3n//fVu7dq3deOONNnPmzBa1kwO3zc3Ntf/6r/+ybdu22WmnndZg23POOceKiopMkg0aNMhefPHFBtu0bt3annrqKdu0aZNNmDAhruM2dY1acj2bO042D7vkvU80F7QR6oAgAhrMGUQQBEGEO/wyn0Y2x8F1d8EFF9iXX35prVq1arBtz549zczsnHPOqVf/o0aNajIZ9Pnnn9uMGTNaVK758+fbM888E7O8N954o61cudK6d+9e9/ijjz5qv/nNb+p+bt++vf3hD38wM7Ovv/7a7rrrLuvUqVOL2tSECRPs888/ty+++MJeeOEFO/zww+2EE06wM8880y699FKbM2eOVVdX1yWAunbtart377Zzzz3XrrvuOrv77rvt8ccft+XLl9vatWvNzKympsYWLFhgI0aMiLstJ5rIije5xPuH8CLS3e74/UAQRIAjrmRQjgAACKiwdv1PpYPrbsaMGXrggQdiDhEbNmyYJOnjjz+ue+3ixYvVpUuXmPtu27atBg4cqO7du6t79+4tKte2bds0bNiwBssRz549W0cddZS++c1v1nu8Q4cO2r59e93Pu3bt0vTp01VcXKw5c+Zo1qxZ+vOf/6xXXnmlyeNGo1F99NFHmjdvnoYPH66rrrpKO3bs0Guvvaann35aW7du1datW1VWVqbKykq1bt1azz33nCSpoqJC7dq10+WXX65Vq1Zpw4YNWrZsmTZs2KBevXpp/vz5+uMf/6iLLrpIF110kdatW6eVK1fqtdde00MPPaTFixc3WqaWamx59Vjvmcb2z1LQ3ghDvTfWPlOJ3w8AQo+eQQRBpCL4yxpBZGfUvnebeg/XPjdy5EjbtWuXFRQUxNzuRz/6kVVWVlrbtm3rPT58+HAzM5s3b5498MAD9tJLL9natWuturraatXU1NgPfvCDuMv92GOP2dy5c+v+st+pUyd7/PHH7Z577rHWrVs32P7tt9+2uXPnxtzXpEmTLBqN2rRp05o8ZlFRkT3yyCP21ltv2bnnnlvXO2rYsGFmZg2WrR87dqyZmfXr16/uMTOzcePGNdj3xRdfbFu3bjVJdsMNN9ivfvUru+KKK+y0006zcePG1Q1/O7AnQ0s/dw/uCZHM5za9KryJMNV7vEMfvS4nQRCED4NhYgRBZCbC9OU0qMG1C2ccOMdOU0OQap974okn7Ne//nWj+3vkkUfsww8/bPD4lClTzMzs1VdftYcffthuv/12u+666+z888+3b3/723b00UfbIYcc0iCJ1FSUlJTYyJEjLRKJ2LBhw+yFF16IOWePJGvTpo3t3LnT7rzzzkb3N2jQIBs2bFiTx5wzZ44de+yxDR4fOHCgmZnl5+fXe3z69On2r3/9q95j1dXV9o1vfKPBPu68805bunRpk9fq4H8T+dxN5Xudzw1vgnr/v3rguwdBEETMIBlEEH6JMHxRCcM5el2v6arjSCRiV155JdcwpBFvz6ChQ4fa9u3b6+bhGT9+vF188cX1tlu1apUtWLCgwesfeughMzMbPXp0Sso8ZswYW758ed3PZ5xxhnXs2LHR7Y877jgzsxZPUh1vHHHEEWZmNnLkyHqPz5492z744IN6j1VWVtoJJ5zQYB/PP/+83X333QldOy/aSxAjyOcW1OCaEQRBxIy4kkEsLQ+kWViW7WTMfeod2HbC0o6yUbZfk2g0qkgkosHRqK6XNK6Rbe666y7dcccdKisrkyS98sorOu200+qWSu/Zs6eGDBmit956q8Hr33jjDUlSZWVli8t39dVXa8uWLdq9e7eqq6tVUVGhZcuW6dBDD9Wzzz6ruXPnqmfPnho2bJhyc3Nj7uOtt97SCy+8oG3btrX4+PHYsGGDJKmqqqre44ceeqhWr15d77G9e/fWLWl/oCOOOEIrV65s0XFrr12mBPlzKMjnFmR89wCAxDGBNJBmTFCIRB3cdhJpR/FMNBqNRvXYY4/RRmNorv4yMclpS7V0ctlIJKJZxx2nHz3/vNpKqpR0sqQVB2wzZcoU9e7dW7fddlu9186YMUP/+Mc/1KlTJ5WWlkqSli9f3uAYv//973XLLbckVEdz585VTk6OWrVqpZUrV2r79u2qqKhQ586d1a1bN/Xr108jR47U9OnTNXLkSK1atUqvv/66Xn/9db355pt1yavLLrtM+fn5LT5+PGon0+7QoYMkqbCwUH379tXo0aNVUlJSt11OTo7atWunVq32/S2uTZs2KigoUO/evdW/f/8WJ8sy3f78/vssmYmV/X5uAACkHMPECCLzQbdmIpXRWHtKdj6FsLfTeOvPT/WU6DW/uX17q5LMJKuU7PqD9vnFF1/YmDFjYr72iiuuMDOzr776ytauXdvoMSZNmpT282/Tpo2deOKJduutt1pxcbHV1NTYZ599Zr/73e9sxowZNnLkyLpJn1MZY8aMMTOzzZs32+7du83MrKKiwtatW2cffPCBTZw40STZ4YcfbmZmmzZtsu3bt9uB9uzZYyUlJdanT58WX3Ov250fgvljCIIgCKIumDOIIPwYfGElUhnNtadkEkG00+y80U6kzOMk26l9iaCd+3+ufe6Pf/yjXXHFFTGPUdtO3njjDTMzu/fee311fn369LHLL7/c/vKXv9QlaXbs2GGvvfaa3XfffTZjxgybOHGiDR8+3I488kgbPHiwjRo1ysaPH29nn322HXrooc2WJRKJ2G9/+1szM7v88sutf//+jc5fdN5555mZ2axZs+yYY46xwYMHW48ePSw3N9fzdhOESHZ1NK/LTxAEQRApCpJBBOHX4EsnkcpI58TSXp8bkblrNU77egQdmAiaNWuWzZ8/v8GxDl6efPTo0VZVVWXDhw9P+3kmmqTs1KmTTZ061RYuXGjRaNQaU1FRYYsXL7YLLrjAunTpEldZhg4dart27bJTTjmlyTK0b9/eysrK7LjjjvO8zRCpaVcEQRAE4cMgGUQQBEEQQY903ciedtpptnDhwpjDqmIda/z48Rk732T3kZOTY6eccor95je/sQ0bNlh5ebktWrTIpk6dah06dEioLA888EDMoXQHl/f666+3Xr16kXjwWXA9CIIgiABFXMkgtz85k1HOucwfFACAgEpm4tzGnHzyyXr55ZfrJkf2g3Scp7RvYufq6uqk9lFQUKDy8nLV1NTUPVZUVKQTTzyxwcTEfpx4HAAABMZ7ZjamuY1YWh4AgCx3cKIhFZYuXaq8vLy4ts3EctzpXPo72USQJG3durVeIigSiejEE0/U8uXLGyR8WLkKAAB4jWQQAKRBJm6OW8qPZUJqpTJhEu++0pmkOVC2JVBqy7tmzZpGnweQevyuA4D4kAwCgBTL1M1xS/ixTGGUbP039/pUJkzi3VcmkzTZkEA58BplQ3m9kOnPoUSP5+fPy5aWzc/nkkr8rgOA+JEMAoAU82MPBj+WKWySvUmJ9/WpvMbx7qulx8ymG7WWlLUl1zib6qAxiZxDpm/WEz1eIq/z6zmFKUHC7zoAaAFWEyMIgqgfrCpDpCuSbVtBaJvZtIx3ImWNZ9tsqoN0nEOmzzvR48V6XWP7SrQ+Ulk2P9U5QRAE4WmwmhgQZuladSfoWOUHXmvpezfb3uu1vROypczpqt9su26xBOEcWqK53w+JvHf5fQMASANWEwPCKkxdwlONLubwUtCHf9SWN1X7yoR0fRb48TOmpXXqx3NIp+Z+P7S0Pvh9AwDwEj2DgIAK219sgaAIWs+gg8uXivLSoyL1qFMAAAIjrp5BJIMAAEBapDPB4PckWDZKdeKOawQAgCcYJgYAiF+2DDXKhKbqwm/15LfyHCidw2Aam7MFiTs4EZSJ1e8aey0AAEgvkkEAgKybeyadmqoLv9VTUVGRr8oTS6Z6hnixZLmf95esZBN5LXn9gefut/cYAACBxdLyBEEQhMTSw/HWRVNLS2eyXmuXsi4qKuKaZvh8U700fGP7C8P1i3XuYThvL+s7ldsRBEEQvoy4lpanZxAAQFL4VgY62IE9EZqqi8aGJ8XqzRCJRHTOOeekpZdDbc+LNWvWxHw+jD0sMtWGUz38Ldb+Drx+Qb6Gsc497J9F6RLvZ0IYPzsAIIxIBgEAsloqbliSvfnxaono5pJWrAyVvuFXqa7Xg/dXe/0kBf7GPOxtNFPi/UyId7sgt0mA9o0wIBkEAMhaqfoLdioSJ7FeG41G9dhjj3l2sxv2m+xUtA8vbwii0ShJPWXvTZkfyx1vO4onERTUJGUQzwktE+T2DRyIZBAA+BxfRhqXyhvldN1sh/km3mvJtg+/3BAk24a8Ln8y/HINWipbyx2voCYpg37dEJ+gtm/gYG7/hM6ZPahzmT8oAPhQJBJp8stG7RdTvpQA3mjuPep3QfgMydZrkM5yZ2udZAPqFkAAvGdmY5rbiGQQAHgk3ps0vpgCSAafIcEShAQfACCtSAYBgN9xkwa/o40C/sP7EgDQhLiSQcwZBAAe4ss8/CzT82cwTwcQn1T97kj2Pcd7Njtx3QBIJIMAAFmOL7Xpk8lJNJm4NTWov//TWF1QR/sk+57L1vdstpU31bL1ugFIPZJBAJAl+OLWkF++1Kb7+F4vb56p4zAHSnIOfj94/b7wUmOfDX75zPCDZN9zqVitL9O4/nzWAjiAmWU8JBlBEAQRf0QiEbvooossEol4Xha/hdd1ku5rw7X3b/jxmtSWiXbT+PUJc534Jbxsn1x/giBCEO/Gk5dhAmkAyBJMGOpf8V6bRK9hkK99Ks8tk/WUDSs6BbndHKj2PNNxvmGpQy/EU7fUPwAkhAmkASBI+ELsX/EmghIdnhDUa5/KIRuZHv6RDUMt/Fy2VKm97kVFRSm//gwpSq94EkHUPwCkDz2DAADIkGT/yh3Ev5Jna88g+Ac9g4KL+geAhNAzCAAAP0k2ERTEv5Kn8kYv1r6ypb6ypZx+VHvd05E0IBHhLeofANKHZBAAAFkgG4YlxStTiY9sSaBlSzkBAEBwMEwMAABkTKYnXs6WYSbZUs6WCOI5AQCQBRgmBgAA/CXTPZyyJRmRLeWMF72dgHDgPQ5kr6SSQc65O5xzq5xzHzrnnnHO5aWqYAAAIJiClvhIhaDdUAVpWCOA2Ej6Atkt2Z5BL0oabmYjJX0m6YbkiwQA4cUXquZRR2iJbGgvQb2hIhEEBBtJXyC7JZUMMrMXzKx6/48rJPVNvkgAEE5BvSFMpWyso2wqa9BkS3vhhiq8/N42gebwuQVkr1TOGfQDSf/b2JPOucucc+86595N4TEBIDC4IWxettVRtiQj0snLc8+G9lJbP34uI9KDzwcAgJeaXU3MOfeSpJ4xnpptZov3bzNb0hhJUyyO5clYTQwAUCvoKw5l6vz8WI+ZXjks21A/8OP7FgCQ9eJaTSzppeWdcxdKmiHpZDOriPM1JIMAANwMp4if65Gb3aZRPw1RJwAAJCX9ySDn3CRJd0s6yczKWvA6kkEAAEnc+KUK9RheyV57P7UdPyc2AQDIEnElg5KdM2iepM6SXnTOFTvnHkhyfwCAkOGGLzUyNRQN/pLsvDN+m7cmG+Z5AgAgCJIeJpbQQekZBABAVqHHhn8FqWcQAABIWmbmDEoEySAAALIPSQMAAADfy8gwMQAAEBIkggAAAIKBZBAAAEDI+GWOIAAA4A2SQQAAACHit0mjAQBA5jFnEAAA8D3mK0ot6hPpQLsCAF9gziAAQLjQ0yGY/NaTxS/lSAY37Eg1v71PAQBNIxkEAAgEbkSCKxqN+mZJ+2xqZ9lQRgSHn96nAIDmMUwMABAYDFFAJmRDO6tNWgX95jwbrgUAABnGMDEAgL+ku6cCN4XIhHS1s1S+P8LQSyObemkBAOA3JIMAABnBjRvQuHS8P4KcCJLCkfACACBdGCYGAMgYhnQAjQvT+yNM5woAQIYxTAwAkJh09d7h5g9oXFjeH37oJUgPRQBA2JEMAgDU44cbNQDB5fXwLj7jAABgmBgAIAaGcCSPOgwGrmMwcV0BAAHGMDEAQGK4SUoOPQ/SLxN1y3X0t2SuC59xAICwIxkEACHHjW7qeT0MJugylaThOvoXiToAAJLDMDEACLHaGypueJFtGOYD2gAAADHFNUyMZBAAhBw3VAAAAEBgMGcQAKB5iSSCGJqBVKI9AQAAZBbJIABAizBXB1KJ9oR0ol0BABAbw8QAAC3G0DLqIJWoS6QDc6IBAEKKYWIAgPRI9Y1Vtv31Pmi9Wbw+Dz/fqHtdN0gcq8EBANA4kkEAAE/5MbHSXFmCdJPpx/r3C+om+wXhPQoAQDowTAwA4Dk/DRMK49ASP9W/31A3AAAgy7C0PAAAiSABACBs+NwDgMBgziAAABLBDRGAMGFIJACEDz2DAAAAgJCjZxAABAY9gwAAAAA0j0QQAIQLySAAAAAAAIAQIRkEAAAAAAAQIiSDAAAAAAAAQoRkEAAAAAAAQIiQDAIAAAAAAAgRkkEAAAAAACBukUjE6yIgSSSDAAAAAABAXCKRiCZPnkxCKMs5M8v8QZ3L/EEBAAAAAEDSIpGIotGo18VAbO+Z2ZjmNqJnEAAAAAAAiBuJoOxHMggAAAAAACBESAYBAAAATWBeDABA0JAMAgAAABrBRKkAgCBiAmkAgCQmAgSAxvD5CADIIkwgDQCID3/5BjKH91n2IREEAAgakkEAAEWjUS1evJgbHiDNSLwCAAA/YJgYAABABjHkCAAApBHDxAAA2SMbe0pkY5nhvZYmgmhnAAAg1UgGAQA8l41DZ7KxzMg+mWhntGEAAMKHYWIAAF/IxqEz2VhmZJ90trPaZBNzhgEAEBhxDRMjGQQAABBiJDUBAAgU5gwCAABA00gEAQAQPiSDAACAbzGfDQAAQOqRDAIAAL7EJN3+xPUAACD7kQwCAAC+FI1GY05sTDLCOyToAAAIBpJBAICUyM/P13e/+13ddtttvrxR7Nq1q9dFQAJiJYJIRninsQQdAADILqwmBgBoVm5urgoLC1VYWKgePXqoT58+6tOnj/r376+BAwdqyJAh6tGjR932f//733XSSSepvLw8o+Vs166devfurX79+mngwIE67LDDNHToUB1zzDHKy8vTWWedpb/+9a8ZLRNSj9WvAAAAGsXS8gCA+J1//vkaP3688vLy1LVrV0UiEeXn5ysSiahjx46qqalReXm56rjMLwAAD51JREFUCgoK9Oabb+rTTz/Vli1btHnz5gb/piIJlJubq7y8PEUiEXXr1k2RSKQuCgoK6kVhYaF69uypvLy8utfv2rVL5eXldbF9+3aVlpbq6quv1s6dO5MuHwAAAOBDJIMAAPHr2LGjHnzwQeXk5Ojzzz/Xl19+qfXr12vjxo3asmWLSktL1bt3b61fv17jx4/Xq6++2mAfhYWFMjOVlZXFfdy8vDzde++9Gjx4sPLy8pSXl6du3bqpXbt22rt3r8rLy1VWVqZt27Zp27ZtKi8v15AhQ9S9e3fdc889dYmeAxM/5eXlqqysTGX1AAAAANmAZBAAILX69OnTZDJo+vTpOvbYY3Xttde2aL+FhYW6/vrrtWHDBq1Zs0br1q3Thg0bVFZWppqamgbb33HHHbruuus0aNAgrVmzJuHzAQAAAAImrmRQTiZKAgDwl6bmXDn88MO1fv167dixo8X7PeGEE3ThhRdqzpw5LeodVFpaqlmzZsW9/dChQ7V06VISQQAAAEACWE0MAEKmudWYevfurYULF7Z4v23bttXZZ5+t3NxcjR49OtliNmns2LG677770noMAAAAIKhIBgFAyDS3NPSyZcs0YsQI/fznP2/Rfs8//3x1795dP/vZz/Tiiy+moqgxHX744dq7d6+ef/75uLYvKipKW1kAAACAbEQyCABCqLlluR966CHddNNNOv300+PaX05Ojm644QY98cQTuu2225Iq2+TJk5t8fsKECXrqqadUXV3d5HbdunXTBRdcoA8//FATJ05MqkwAAABAkCQ1Z5Bz7hZJkyXtlVQq6UIz25iKggEAvPPwww/r5ptv1sKFC3Xsscdq1apVTW5/6aWXqrq6WpdccknSxz766KPVqlUrPfPMM/Uez8nJUWFhoU499VS98cYbmj59unr06BEzCgsL1bZt27rXnnfeeXrppZeSLhuAxDQ1TxkAAMi8ZHsG3WFmI81stKTnJN2UgjIBADy2ZcsWPffcc+rSpYuOOuqoJrft2LGjfvrTn2ratGkJTTp9sI8//lh33XWXFi1apFdffVWffPKJotGoqqqqtHbtWh111FGaNm2aLrnkEh133HHq3Lmzpk6dqvLyct12220677zzdNRRR6lHjx76j//4D1VVVemqq65KulyIX2PzUSGcmpunDAAAZF5SPYPM7OsDfuwoiSXjASAg5s+frzPPPFOvv/56k9v95Cc/0b333qsPPvggJcddu3atBg4cqHnz5umLL75QWVmZysrK9OCDD+r111/XjTfe2OA1U6dO1YsvvqhFixbVe7xr165au3atvv766wavQXrU3vg3NS8VwqW5ecoAAEDmJb20vHNujqTzJX0l6ZtNbHeZpMuSPR4AIDOW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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 绘制所有单词向量的二维空间投影\n", "import matplotlib.pyplot as plt\n", "import matplotlib\n", "\n", "fig = plt.figure(figsize = (20, 10))\n", "ax = fig.gca()\n", "ax.set_facecolor('black')\n", "ax.plot(X_reduced[:, 0], X_reduced[:, 1], '.', markersize = 1, alpha = 0.4, color = 'white')\n", "# 绘制几个特殊单词的向量\n", "words = ['智子', '地球', '三体', '质子', '科学', '世界', '文明', '太空', '加速器', '平面', '宇宙', '信息']\n", "# 设置中文字体,否则无法在图形上显示中文\n", "zhfont1 = matplotlib.font_manager.FontProperties(fname='/Library/Fonts/华文仿宋.ttf', size = 35)\n", "for w in words:\n", " if w in word_to_idx:\n", " ind = word_to_idx[w][0]\n", " xy = X_reduced[ind]\n", " plt.plot(xy[0], xy[1], '.', alpha =1, color = 'red')\n", " plt.text(xy[0], xy[1], w, fontproperties = zhfont1, alpha = 1, color = 'white')" ] }, { "cell_type": "code", "execution_count": 109, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:22:21.974225Z", "start_time": "2019-04-07T07:22:21.911757Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "['局部', '一场', '来', '错误', '一生', '正中', '航行', '地面', '只是', '政府']" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 定义计算cosine相似度的函数\n", "import numpy as np\n", "def cos_similarity(vec1, vec2):\n", " norm1 = np.linalg.norm(vec1)\n", " norm2 = np.linalg.norm(vec2)\n", " norm = norm1 * norm2\n", " dot = np.dot(vec1, vec2)\n", " result = dot / norm if norm > 0 else 0\n", " return result\n", " \n", "# 在所有的词向量中寻找到与目标词(word)相近的向量,并按相似度进行排列\n", "def find_most_similar(word, vectors, word_idx):\n", " vector = vectors[word_to_idx[word][0]]\n", " simi = [[cos_similarity(vector, vectors[num]), key] for num, key in enumerate(word_idx.keys())]\n", " sort = sorted(simi)[::-1]\n", " words = [i[1] for i in sort]\n", " return words\n", "\n", "# 与智子靠近的词汇\n", "find_most_similar('智子', vec, word_to_idx)[:10]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Gensim Word2vec " ] }, { "cell_type": "code", "execution_count": 110, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:23:43.680735Z", "start_time": "2019-04-07T07:23:43.140121Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import gensim as gensim\n", "from gensim.models import Word2Vec\n", "from gensim.models.keyedvectors import KeyedVectors\n", "from gensim.models.word2vec import LineSentence" ] }, { "cell_type": "code", "execution_count": 112, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:24:20.881447Z", "start_time": "2019-04-07T07:24:18.860234Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "f = open(\"../data/三体.txt\", 'r')\n", "lines = []\n", "for line in f:\n", " temp = jieba.lcut(line)\n", " words = []\n", " for i in temp:\n", " #过滤掉所有的标点符号\n", " i = re.sub(\"[\\s+\\.\\!\\/_,$%^*(+\\\"\\'””《》]+|[+——!,。?、~@#¥%……&*():;‘]+\", \"\", i)\n", " if len(i) > 0:\n", " words.append(i)\n", " if len(words) > 0:\n", " lines.append(words)" ] }, { "cell_type": "code", "execution_count": 113, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:24:42.626293Z", "start_time": "2019-04-07T07:24:41.970277Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# 调用gensim Word2Vec的算法进行训练。\n", "# 参数分别为:size: 嵌入后的词向量维度;window: 上下文的宽度,min_count为考虑计算的单词的最低词频阈值\n", "model = Word2Vec(lines, size = 20, window = 2 , min_count = 0)" ] }, { "cell_type": "code", "execution_count": 115, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:24:58.455724Z", "start_time": "2019-04-07T07:24:58.449700Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[('地球', 0.9994192123413086),\n", " ('组织', 0.9993805289268494),\n", " ('文明', 0.9993024468421936),\n", " ('中', 0.9992458820343018),\n", " ('发展', 0.9992369413375854),\n", " ('的', 0.9992075562477112),\n", " ('与', 0.9990826845169067),\n", " ('社会', 0.9990127682685852),\n", " ('一次', 0.9990046620368958),\n", " ('状态', 0.9989502429962158)]" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.wv.most_similar('三体', topn = 10)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2019-04-23T03:59:03.438346Z", "start_time": "2019-04-23T03:59:03.263853Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "ename": "NameError", "evalue": "name 'model' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mrawWordVec\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mword2ind\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvocab\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mrawWordVec\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mw\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mword2ind\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mw\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'model' is not defined" ] } ], "source": [ "# 将词向量投影到二维空间\n", "rawWordVec = []\n", "word2ind = {}\n", "for i, w in enumerate(model.wv.vocab):\n", " rawWordVec.append(model[w])\n", " word2ind[w] = i\n", "rawWordVec = np.array(rawWordVec)\n", "X_reduced = PCA(n_components=2).fit_transform(rawWordVec)" ] }, { "cell_type": "code", "execution_count": 117, "metadata": { "ExecuteTime": { "end_time": "2019-04-07T07:26:15.113405Z", "start_time": "2019-04-07T07:26:14.643527Z" }, "code_folding": [ 10 ], "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 绘制星空图\n", "# 绘制所有单词向量的二维空间投影\n", "fig = plt.figure(figsize = (15, 10))\n", "ax = fig.gca()\n", "ax.set_facecolor('black')\n", "ax.plot(X_reduced[:, 0], X_reduced[:, 1], '.', markersize = 1, alpha = 0.3, color = 'white')\n", "# 绘制几个特殊单词的向量\n", "words = ['智子', '地球', '三体', '质子', '科学', '世界', '文明', '太空', '加速器', '平面', '宇宙', '进展','的']\n", "# 设置中文字体,否则无法在图形上显示中文\n", "zhfont1 = matplotlib.font_manager.FontProperties(fname='/Library/Fonts/华文仿宋.ttf', size=26)\n", "for w in words:\n", " if w in word2ind:\n", " ind = word2ind[w]\n", " xy = X_reduced[ind]\n", " plt.plot(xy[0], xy[1], '.', alpha =1, color = 'red')\n", " plt.text(xy[0], xy[1], w, fontproperties = zhfont1, alpha = 1, color = 'yellow')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# END" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python [conda env:anaconda]", "language": "python", "name": "conda-env-anaconda-py" }, "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.5.4" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": false, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": false, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "517px", "left": "953px", "top": "134px", "width": "255px" }, "toc_section_display": false, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }