{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Getting Collocates for Words\n", "\n", "This shows how you can get collocates for a word. \n", "\n", "**Note:** It assumes you have the text in the same directory." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Checking files and getting a text\n", "\n", "First we check what texts we have in the directory." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hume Enquiry.txt Hume Treatise.txt untitled.txt\r\n" ] } ], "source": [ "%ls *.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we open the text. \n", "\n", "Copy in the title of the text you want to process and run the next cell. Our example uses the plain text version of Hume's [A Treatise of Human Nature by David Hume](http://www.gutenberg.org/ebooks/4705) that we downloaded." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This string has 1,344,061 characters\n" ] } ], "source": [ "targetText = \"Hume Treatise.txt\"\n", "\n", "with open(targetText, \"r\") as f:\n", " theText = f.read()\n", "\n", "print(\"This string has\", \"{:,}\".format(len(theText)), \"characters\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tokenizing\n", "\n", "Note that we are tokenizing the full Gutenberg text file which includes metadata and license information. If you want only the tokens of the book you should delete the Gutenberg information from the text file." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['the', 'project', 'gutenberg', 'ebook', 'of', 'a', 'treatise', 'of', 'human', 'nature']\n" ] } ], "source": [ "import re\n", "theTokens = re.findall(r'\\b\\w[\\w-]*\\b', theText.lower())\n", "print(theTokens[:10])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Finding the collocates\n", "\n", "This will ask you what word you want collocates for, and create a list of collocates. Note that you can set the number of words of context." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "What word do you want collocates for?gutenberg\n", "['project', 'ebook', 'the', 'of', 'a', 'treatise', 'of', 'project', 'license', 'the']\n" ] } ], "source": [ "wrd2find = input(\"What word do you want collocates for?\") # Ask for the word to search for\n", "context = 5 # This sets the context of words on either side to grab\n", "\n", "end = len(theTokens)\n", "counter = 0\n", "theCollocates = []\n", "for word in theTokens:\n", " if word == wrd2find: # This checks to see if the word is what we want\n", " for i in range(context):\n", " if (counter - (i + 1)) >= 0: # This checks that we aren't at the beginning\n", " theCollocates.append(theTokens[(counter - (i + 1))]) # This adds words before\n", " if (counter + (i + 1)) < end: # This checks that we aren't at the end\n", " theCollocates.append(theTokens[(counter + (i + 1))]) # This adds words afte\n", " counter = counter + 1\n", " \n", "print(theCollocates[:10])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Doing things with the collocates\n", "\n", "Now we can do various things with the list of collocates." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Count collocates" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "357\n" ] } ], "source": [ "print(len(theCollocates))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Count unique words among collocates" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "123\n" ] } ], "source": [ "print(set(theCollocates))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Tabulate top collocates" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " project the foundation literary archive of to 1 a with \n", " 33 31 15 14 14 12 10 9 8 8 \n" ] } ], "source": [ "import nltk\n", "tokenDist = nltk.FreqDist(theCollocates)\n", "tokenDist.tabulate(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot top collocates" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAFFCAYAAADvklavAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXm8XdP5/9+fJJIIMiASY2IeSiSEKjHPvqhWS82h1FS0\ntBXamtqaiv7QqrEtVTOtoQQlKTFnIkjMMVNDbuSKKfH8/ljr5J57cuZ7zj773vO8X6/7umcPaz/P\n2WfvZ6/9Wc9aS2aG4ziO0/Xp1mgHHMdxnGTwgO84jtMkeMB3HMdpEjzgO47jNAke8B3HcZoED/iO\n4zhNggd8xwEk7SjppazldyVt2kifqkXSNyQ9LekTSYc22p960Jl/n0biAb8OSJoTb7ZPJM2XNDdr\n3T41tvW4pM/isTM21q+ljc6EpIMkTZLUKultSXdI2qTM4ol1Ssl9wNSYk4A7zayvmV1ZiwNKWlvS\nTZI+kNQiaYak8yUNKrP89ZJOroUvTvV4wK8DZrZEvNn6Aq8D/5e17vpamwMOicfO2Hg6dydJ3Wts\nN3XEgHImcAqwNDAEuBLYtZF+FUDU7wEzBHi+moL5rhNJawOPAS8B65lZf2AL4B3gWx3ws+E0w33R\nDjPzvzr+Aa8B2+Ss6w38iXDDvAGcC3SP23Yk3FinAR8BrwDfK3L8x4B986zvBXwNHAG8DDwf168L\nPAB8DDwHfDurzEDgbmA28AgheN4ft60JfFXMNnA4MAP4ELgTWC7Hl8OiLx8BF+Qc6yhgOvAJ8DTw\nDeBXwLU5+10OnJXn+y4FfAbsUuRclTrvL2bt+y6waalycfv3o8+fAC8AW8f1P8r6Ti8CB8f1SwJz\ngXnAnLh9AKEC9uv4m/8P+DvQN5bpA1wfz92seO775fmOjwBfxXPxCbBCPPZ18ZivAD/P+c0eAP4Y\nr4mT8xzzZuDGEtf54ZlrJec3Xw44Bvgyy6cb4z4rAv8CPojXxeFZ5c8Cro1+fwJMBYbl/D4/j+f3\nQ+BSYJGs7d+Jv8ks4L/A2jllTwCeBVrjuo2jjdnAP4Bb852Lzv7XcAe6+h/5A/658SIcQAiyTwIn\nxW07xhv2t0APYFvgU2BIgeOXCvh3An3j8hKEoPWDuM+GMYCsEpf/BVwD9ATWB94D7ovb1gS+LGQb\n2JvwAFkV6A6cATyY48stwGLA0HgjbhG3HxDP07C4vHoMFEPiDbhoXN+TEJTWyvN9vw18WuK3KHXe\nCwX8YuW2iD5lvssKwGrx867ASvHzNoQgv3Y+e3HdidHOoPhd/wJcFbcdC9wU13eLv92iRa6JfbKW\nbwJuBBaNv8+rme2EQP0lcAjhraNXnuPNAvYqcW4Pz1wrWb/5fNoe+teTFUDjd3gG+Fm8XlYDZgKb\nx+1nAa3xvAm4ABiX8/tMiudqqfibnBy3bQK8DQyPZQ8lPIi7ZZV9IpbtRXigv0OokHQDfhDPiQd8\n/6vwBOcP+G8BW2Yt705bDXzHGBh6Zm2/HTihwPEfI9QSP4435oS4PhNkv5m174HAvTnl/0aoKWVu\n0BWztp1P+QH/wZwgs0i8aQZm+TIi5zsdGz+PBw4t8P0eAPaLn78HTCyw3yHAqyV+i1LnvVDAL1bu\nb8DvyrwW7gEOy2cvrnsV+FbW8srEhxhwJDAO+EYZdrJ/l56EN4khWduPBe6Onw8HZhQ5Vvf4222R\nte6EeK3NAS7MOk5uwP+awgF/C+CFHFunAX+Kn88C7sjaNgL4OOf3OSBr+TvAtPj5L8QHctb2mcBG\nWWX3ztq2PfByzv5P0QUDvmv4jWEwQRrI8DqwfNbyB2b2Zc725Yoc70dmtqSZDTCzUTnb3sr6PATY\nUtLH8W8W8N3oz+A8+79exnfJPvalmWMT5IMvCTXeDO9nfZ4LLB4/r0gIdvm4Btg/ft6PIHPk4yNC\nja0Ypc57NeVWJMgkCyFpd0lPSPoonuutCW0LhVgRuDvrHE6Ox1kSuAp4CLhF0huSfitJZfou4M0C\n/pOzrR1mNp8gqSybte58MxtAlFHK8CEfQ4CVc67Fn9L+N3wv63P29ZIh91rN3CNDgJNzjr007b9z\ndtnlcpahyDnpzHjAbwzvEi7KDEMIr6AZlpbUM2t5JcIrZyGK3fiW9flNQg1/yawHRF8zO4Fwcxkh\n6GTbzfAp0F1S9g0+OOvzm8DonGMvbmZTiviWXXbVAttuATaRtA6wA0HTzccEQJJ2KWKn1HkvxHtF\nyuX1XVIfgpRyOrB0DJDjaPutLLcMIehsk3MOFzOzj83sSzM71czWJtSO9yJID+X4/jXtf8uVaP+9\n8/mSzQOEikExPiW0M2RYNue4uTbeBKbnfNd+Zva9Enayyb5Wh9B2j7wJnJLnWvxXAX/epX3FJPfY\nXQYP+I3hBuBUSUtKWgY4mfY1157AryUtImkbYDtCI1JH+RcwQtJeknpI6inpm5JWM7MvCHr/6ZJ6\nSxpGqFFneIfQuLafpG6SjqJ9jenS6PMaAJIGSCoVJDJcCYyJNpG0uqTlAczs0+jX9QQN94N8BzCz\njwjtHpdJ+r/4HXpI2lXSb+Nupc57Ia4vUu5K4HBJoxRYQdJqBL28B+GcIWl3YKusY74PLCNpsax1\nlwHnSFohlllG0q7x87YxNVIEbXseIZAXJb4p/hM4U1IfSasCx5X5vTP8GthR0pmSls34RpD5Mkwl\nXFtrx4fdr3OO8T6wStbyhHic4yT1ir/VepJGFPEjt2JzrKTBkpYmtH/cENdfDhwjacNoY3FJu0nq\nXeC4DwGLSjpUUndJexHasLocHvDrT77a0ymEtLnnCK/tDwO/z9r+GuGGfo8QUEab2cwKjp93m5m1\nELTjgwm1mreA39D2Wn4Eodb+HvBnghaaKfs1ofHrNEIQWx6YmLX9BuBi4DZJLfF7bVfET8sqey2h\nUe4WSZ8QskL6Ze17NbAeQd4p/GXNzgR+Gb/TB4TX/MMI7QVQ+rzn9a9YOTObQDhvfyY0MP8HWCE+\ngH4G3EXIItkd+HeWr08DdwCvR9mhP6Fx+H7gQUmzCUExEwCXj9/jE0Jj511mdmMZvkPQ1xXPx3+A\ny62C9GAze56QfrkGMC3+vuMJ2WRnxH2ejf5PiOdqXM5hLgc2jt/1OjObB+wCbBr9eh+4hNCoX9CV\nnM83RDsvEDJyMr/Jo4R2isuinDMD2CerfO598TnhDeZYQlvY7sBY4IviZ6bzodhAUZ+DS70IT8+e\nhNrOLWZ2uqRTCTfi/+KuJ5vZ2Lo50omQtCNwsZmtkQJfDgf2NLMdGuzH6oRGtEHxTcRx6oqkqYT0\n30IP1U5Jj3oe3My+kLS1mc2NHRwekXRP3HyBmV1QT/tO5ydeNycQ8vE92Dt1QdJWhDe4WYSMr1UI\nb1tdiroGfAAzmxs/9or2Mq8U5WQYOE2MpAGE7JiXgZ0a7I7TtfkGbX0VXga+Y2YfN9al2lNXSQdA\nUjdCB4lVCTm2J0VJZzRB85xIyDGfXVdHHMdxmpy6B/wFhqS+hGyBYwgNah+amcUMimXN7IeJOOI4\njtOkJBbwAST9mtBz8IKsdUMII/sNy91/tdVWs9bWVt5/P/TXWXXVVVliiSWYOnUqAMOHDwfwZV/2\nZV9u+uVBg0KftUy8NLOFZfN6duMl9G7rFz8vSsjY2QUYnLXPT4HrCpS3Sjn11FMrLlNtubTbcv86\nj620+5ekrbT7l6Stav2LsXOhmFrvRttlgaujjt+NMEre3ZKukTSc0HFkJiFPeCEyT6xK+Pzzz6ty\ntJpyabfl/nUeW2n3L0lbafcvSVvV+leIeqdlTgM2yLP+wHradRzHcRam+2mnndZoHwry85///LRK\n/evRowdDhw6t2FY15dJuy/3rPLbS7l+SttLuX5K2qvXv9NNP57TTTjs9d32ijbaVIsnS7J/jOE4a\nkZS30TbVY+lkWqEroaWlpSpb1ZRLuy33r/PYSrt/SdpKu39J2qrWv0KkOuA7juM4tcMlHcdxnC5G\np5R0HMdxnNqR6oDvGn7yZZK0lXb/krSVdv+StJV2/5K01XQavis6juM4tSH1Gv5Pf2qcfz6UNV2z\n4ziOU1DDT33AB+NHP4JLLoHu3RvtkeM4TvrplI22w4cPp3dvuPxyOOggmDevdJm0a3JJ2nL/Oo+t\ntPuXpK20+5ekrabT8O+5BxZfHP7xD9hrL/jCJ7lzHMepitRLOmbG44/DzjtDSwvsuCPcdhv06dNo\n7xzHcdJJp5R0MmyyCYwbBwMHwr33huD/ySeN9spxHKdzkeqAn52HP3w4PPQQLLdc+L/ddvBxnimG\n067JJWnL/es8ttLuX5K20u5fkraaTsPPZq214OGHYehQeOop2GoriLN5OY7jOCXoFBp+Lm+9FWr4\nL7wAa6wBDzwAK6zQAAcdx3FSSKfW8HNZYYUg6wwbBi++CJtvDq+80mivHMdx0k2qA36xsXSWWSY0\n5G68McycCVtsAdOnp1+TS9KW+9d5bKXdvyRtpd2/JG01tYafy5JLwn/+E4L9O++E/y+91GivHMdx\n0kmn1PBzmTsX9twTxo6Ffv3gmWdgpZUScNBxHCeFdCkNP5c+feBf/wo1/NmzQ+B3HMdx2pPqgF/J\nePi9eoXMneHDW3j11cptuf6XvK20+5ekrbT7l6SttPuXpK1OpeFL6iXpCUlTJE2TdGpcP0DSfZJe\nkHSvpH61sLfyyuF/NQHfcRynq1N3DV9SHzObK6k78AhwLLAn8JGZnSvpRGCAmY3JU7aiOW0ffRQ2\n2wxGjgwdsxzHcZqRhmn4ZjY3fuwF9AAM+DZwdVx/NbBHLWytskr47zV8x3Gchal7wJfUTdIU4D3g\nfjN7ChhkZu8DmNl7wDL5ylY6p+2gQbDxxi18/HFovK0E1/+St5V2/5K0lXb/krSVdv+StFVrDb9H\nTY+WBzP7GhghqS/wT0nfINTy2+2Wr2zfvn0ZM2YMvXv3BmDkyJGMGjWK/v37A20nI7M8e3YLG23U\nypNP9ue112Do0Pbbc/fv6HJra2tV5TPU2h/3r/bLra2t7l8Hfq+u6F+S13u5/o0fP56xMT0xEy/z\nkWgevqRfA3OBQ4GtzOx9SYOBcWa2dp79K9LwAXbbDe66C269Fb773Zq47TiO06loiIYvaelMBo6k\nRYHtgenAHcDouNtBwO21spnJ1HnttVod0XEcp2tQbw1/WWCcpKnAE8C9ZnY3cA6wvaQXgG2Bs/MV\nrlTDBxg2LLzmVNpw6/pf8rbS7l+SttLuX5K20u5fkrY6lYZvZtOADfKs/xjYrh42l102/PcavuM4\nTnu6xFg62UybFoZNXnNNmDGjTo45juOkmEIafpcL+K2tsMQS0LMnfPYZdEv14BGO4zi1p1MOnlaN\nhj9vXgsDB8KXX8K775ZfzvW/5G2l3b8kbaXdvyRtpd2/JG3VWsNPdcCvFu9x6ziOszBdTtIB2Gcf\nuOEGuPpqOPDAOjjmOI6TYjqlpFMtXsN3HMdZmFQH/Go0/JaWlqoCvut/ydtKu39J2kq7f0naSrt/\nSdpyDb8MvLet4zjOwnRJDX/mzBD0l1sO3n679n45juOkmabJwweYNw9694b580MufpHB4xzHcboc\nnbLRtloNv0cPGDIkLM+cWX65amxVQ9r1P/cveVtp9y9JW2n3L0lbruGXiWfqOI7jtKdLSjoAP/oR\nXHEF/PGPcPTRNXbMcRwnxXRKSacjeA3fcRynPakO+NVq+FB5aqbrf8nbSrt/SdpKu39J2kq7f0na\ncg2/TLyG7ziO054uq+F/9BEsvXQYKnn2bNBCapbjOE7XpOk0/CWXDMF+zhz4+ONGe+M4jtN4Uh3w\nO6LhS5XJOq7/JW8r7f4laSvt/iVpK+3+JWnLNfwKyDTcuo7vOI7ThTV8gBNOgAsugLPOgjFjauiY\n4zhOimk6DR88U8dxHCebVAf8jmj4UFkuvut/ydtKu39J2kq7f0naSrt/SdrqVBq+pBUkPSjpOUnT\nJB0T158q6S1Jk+PfTvWw7zV8x3GcNuqq4UsaDAw2s6mSFgcmAd8G9gbmmNkFJcp3SMP//HNYdFHo\n3j187tGj6kM5juN0Ghqi4ZvZe2Y2NX5uBaYDy2d8qqdtCOPgL7dcGBf/rbfqbc1xHCfdJKbhSxoK\nDAeeiKt+LGmqpCsl9ctXpqMaPpQv67j+l7yttPuXpK20+5ekrbT7l6StWmv4iYgcUc65BTjOzFol\nXQKcYWYm6bfABcAPc8v17duXMWPG0DtOWTVy5EhGjRpF//79gbaTkb3c2trabvlb34IJE/rz2mv5\n9+/Icmtra1XlM9TaH/ev9su511Mz+1fN79UV/Uvyei/Xv/HjxzN27FiABfEyH3XPw5fUA7gLuMfM\nLsyzfQhwp5kNy7OtQxo+wGmnwemnw8knw+9+16FDOY7jdAoamYf/F+D57GAfG3MzfBd4tl7Gvbet\n4zhOoN5pmZsB+wHbSJqSlYJ5rqRnJE0FtgR+mq98LTX8Urn4rv8lbyvt/iVpK+3+JWkr7f4laatT\nafhm9gjQPc+msfW0m43n4juO4wS69Fg6AF9/DX36wBdfhKGSF1+8Rs45juOklKYcSwegWzcYOjR8\nLne6Q8dxnK5IqgN+LTR8KK/h1vW/5G2l3b8kbaXdvyRtpd2/JG3VWsNPdcCvFeU23DqO43RluryG\nD3D++fCzn8Exx8BFF9XAMcdxnBTTtBo+VDZMsuM4Tlcl1QG/Vhp+OamZrv8lbyvt/iVpK+3+JWkr\n7f4lacs1/CrIruGnWMFyHMepK02h4QMstRR8/DG8+y4MHlx6f8dxnM5KU2v44D1uHcdxUh3wa6Xh\nQ+mGW9f/kreVdv+StJV2/5K0lXb/krTlGn6VeA3fcZxmp2k0/Msvh8MPh9Gj4a9/rckhHcdxUknT\na/iei+84TrOT6oBfSw2/lKTj+l/yttLuX5K20u5fkrbS7l+StlzDr5KVVgojZ771Vhgq2XEcp9lo\nGg0fwjDJr78OL74Iq69es8M6juOkiqbX8MEzdRzHaW5SHfBrqeFD8YZb1/+St5V2/5K0lXb/krSV\ndv+StOUafgfwGr7jOM1MU2n4110H++0He+4Jt9xSs8M6juOkCtfw8ZmvHMdpblId8Gut4ReTdFz/\nS95W2v1L0lba/UvSVtr9S9JWp9LwJa0g6UFJz0maJunYuH6ApPskvSDpXkn96ulHhoEDoU8faGmB\nWbOSsOg4jpMe6qrhSxoMDDazqZIWByYB3wYOBj4ys3MlnQgMMLMxecrXVMMHWG89ePZZmDQJNtig\npod2HMdJBQ3R8M3sPTObGj+3AtOBFQhB/+q429XAHvX0I5tMaqZn6jiO02wkpuFLGgoMBx4HBpnZ\n+xAeCsAy+crUWsOHwg23rv8lbyvt/iVpK+3+JWkr7f4laavWGn6Pmh6tAFHOuQU4zsxaJeXqNHl1\nm759+zJmzBh69+4NwMiRIxk1ahT9+/cH2k5G9nJra2vR7eutB9CfV1/Nv72S5dbW1qrKZ+ioffev\nvv6Vcz01k3/V/F5d0b8kr/dy/Rs/fjxjx44FWBAv81Gxhi9pALCimT1T5v49gLuAe8zswrhuOrCV\nmb0fdf5xZrZ2nrI11/DvvBN23x123BHi+XEcx+lSdEjDlzReUl9JSwKTgSskXVCm7b8Az2eCfeQO\nYHT8fBBwe5nH6jDe29ZxnGalXA2/n5l9AnwXuMbMvglsV6qQpM2A/YBtJE2RNFnSTsA5wPaSXgC2\nBc7OV74eGv7QoeH/zJkwf3755aqxVcty7l/XtpV2/5K0lXb/krTVKA2/h6Rlgb2AX5Z7cDN7BOhe\nYHPJB0Y9WGwxGDQI3n8f3nkHVlyxEV44juMkT1kavqTvAacAE8zsKEmrAL83sz3r6lwdNHyATTeF\nxx6D8eNhyy1rfnjHcZyG0tE8/HfNbJiZHQVgZq8C5Wr4qcPnt3UcpxkpN+BfXOa6mlIPDR/yN9y6\n/pe8rbT7l6SttPuXpK20+5ekrUQ1fEnfAjYFBko6PmtTXwpr86nHe9s6jtOMFNXwJW0JbAUcAVya\ntWkOcKeZvVRX5+qk4Y8fD1tvHbT8Rx6p+eEdx3EaSiENv9xG2yFm9npdPCtuty4B/403YMgQGDwY\n3n235od3HMdpKB1ttO0l6fI4pPGDmb8a+7gQ9dLwl18eFlkE3nsP5s4tv1w1tmpVzv3r2rbS7l+S\nttLuX5K2GpWHfzNB0rkSmF9i39TTvXuo4b/8cuiAtc46jfbIcRyn/pQr6Uwysw0T8CfXbl0kHYAd\ndoD77w9j6+y6a11MOI7jNISOSjp3SjpK0rKSlsz81djHRPH5bR3HaTbKDfgHAT8HHiXMWjUJmFgv\npzLUS8OHhXPxXf9L3lba/UvSVtr9S9JW2v1L0lZDNHwzW7mmVlOA5+I7jtNslKvhH5hvvZldU3OP\n2tutm4Y/aRKMHBnmuH2mrJH9HcdxOgeFNPxys3Q2yvrcmzCk8WSgrgG/nmTX8M1AC50ax3GcrkVZ\nGr6ZHZP1dxiwAbB4fV2rr4Y/YAD06weffgoffuj6XyNspd2/JG2l3b8kbaXdvyRt1VrDr3YS80+B\nTq3rSz77leM4zUW5Gv6dtE003h1YG7jJzMbU0be6avgAe+4Jt90G110H++xTNzOO4ziJ0lEN/7ys\nz/OA183srZp41kA8F99xnGaiXA3/v8AMYAlgAPBlPZ3KUE8NH9o33Lr+l7yttPuXpK20+5ekrbT7\nl6Sthmj4kvYCngS+T5jX9ok47WGnxmv4juM0E+Vq+E8D25vZ/+LyQOA/ZrZ+XZ2rs4b/4ouw5pow\ndKgHfcdxug4dHUunWybYRz6qoGxqGTIkZOu88QZ89VWjvXEcx6kv5QbtsZLulTRa0mjg38Dd9XMr\nUG8Nv1evMDb+11/DSy+5/pe0rbT7l6SttPuXpK20+5ekrUQ1fEmrSdrMzH4OXAYMi3+PAZeXOrik\nqyS9L+mZrHWnSnpL0uT4t1MHv0OHyDTc+sxXjuN0dUrNaXsXcJKZTctZvx5wppntVvTg0iigFbjG\nzIbFdacCc8zsgpLO1VnDBxg9Gq6+Gi6/HA47rK6mHMdxEqFaDX9QbrAHiOuGljJqZhOAWfn8KVU2\nKby3reM4zUKpgN+/yLZFO2D3x5KmSrpSUr9CO9Vbw4fsXPwWXn65vrY6Us71ya5tK+3+JWkr7f4l\naSvp8fAnSjrMzK7IXinpUMIkKNVwCXCGmZmk3wIXAD/Mt2Pfvn0ZM2YMvXv3BmDkyJGMGjWK/v3D\ncyhzMrKXW1tbi27PXV5/fVhkkf68+CLstVcLW28NBx3Un2HDSpdvbW0tefx8yxnK3b/aZfev48uV\nXk9d2b9qfq+u6F+S13u5/o0fP56xY8cCLIiX+Sil4Q8C/knoWZsJ8COBnsB3zOy9goXbjjEEuDOj\n4Ze7LW6vu4YPIR//nHPgmmtg3rywbtdd4eST4Vvfqrt5x3GcmlJIwy+349XWwLpx8Tkze7ACw0MJ\nQX29uDw486CQ9FNgIzPbt0DZRAJ+hjfegPPPhyuugM8+C+u22ioE/u228zHzHcfpHHSo45WZjTOz\ni+NfJcH+OsI8uGtIekPSwcC5kp6RNBXYEvhpofJJaPjZ5VZaCS68EGbODEG+b18YPx522AE23hj+\n+c+Qs18LW2ktk6SttPuXpK20+5ekrbT7l6StRPPwO4qZ7Wtmy5lZLzNbycz+amYHmtkwMxtuZnuY\n2fv19KEallkGfve7UOM/80wYOBAmToTvfhfWXRf+/nfvmes4TuejLEmnUSQt6RRi7ly46ir4/e/h\nzTfDuqFDYf/9oUj7SF4WWwwOOACWWqrmbjqO4wAd1PAbRVoCfoYvvwyTpZx9NrzwQvXHWWst+M9/\nwrAOjuM4taZTBvwRI0bYlClTKirT0tKyIG2pXuXmz4fbbw+5+7NmVWbrjjugR48WZs/uzwMPtPUD\nqKV/HSmTpK20+5ekrbT7l6SttPuXpK1q/evojFdOFt27Bz2/pQUq/S1OOAGOOgpuvBE23zzU9Nda\nqz5+Oo7jZJPqGn7aJJ1a8cknsNtu8NBDoUH4vvugioQkx3GcvHR0PHynhvTtC/fcAzvuCB98AFtv\nDU880WivHMfp6qQ64Cedh5+krT59QjvAd74TpKHttgs5/2nxL61luqqttPuXpK20+5ekrU6Vh+8U\np1cvuOkm2G8/aG2FnXcONX/HcZx64Bp+Cpg/H448MgzpsMgicP31sOeejfbKcZzOimv4KaZ7d7js\nMvjpT0MP3r32Cr15HcdxakmqA35X1vBzkcLAbaecEsbrOfBAuPTS9PiXljJd1Vba/UvSVtr9S9KW\na/hdGAlOPz0M1QxB5jnvvMb65DhO18E1/JRyySVw9NHh86mnhj8fntlxnHLolEMrNHPAhzC5+iGH\nBInnhBPC4G0e9B3HKUWnbLRtJg0/HwcdBDfcAD16wAMPtHDUUe3H42+0f40o01Vtpd2/JG2l3b8k\nbbmG32R8//vwr3+FdM1LL4XRo9umYXQcx6kEl3Q6CQ8+CLvvDp9+GgZuu/566Nmz0V45jpNGXMPv\nAjz2WOiNO3t2+H/rrbDooo32ynGctOEafh3KJW3rW9+CceNg6aXDEAw77wxz5qTHvyTKdFVbafcv\nSVtp9y9JW67hNzkjRsB//wvLLhv+b789zJrVaK8cx+kMuKTTSXnlFdh2W3j9dVh//TCm/jLLNNor\nx3HSQKeUdJzCrLoqPPwwrLEGPP00bLklvP12o71yHCfNpDrgu4ZfvMyKK4ZZs9ZbD2bMCFMmvvZa\nevyrR5muaivt/iVpK+3+JWmrU2n4kq6S9L6kZ7LWDZB0n6QXJN0rqV89fejqDBoUJk7ZaKMQ7Dff\nPAR/x3GcXOqq4UsaBbQC15jZsLjuHOAjMztX0onAADMbU6C8a/hlkjtP7v33B23fcZzmoyEavplN\nAHJzSL4NXB0/Xw3sUU8fmoXceXK32srnyXUcpz2N0PCXMbP3AczsPaBgbolr+JWVyZ0n9yc/aeGU\nU+DDD9PhXy3KdFVbafcvSVtp9y9JW7XW8HvU9GjVUVCz6du3L2PGjKF3794AjBw5klGjRtG/f3+g\n7WRkL7cVDCRcAAAgAElEQVS2thbdXsvl1tbWqspnqJd/N93Un0MPhU8/beXOO+H88/tz+OFw5JEt\nDBzYeP/Sfv46ej11Vf+q+b26on9JXu/l+jd+/HjGjh0LsCBe5qPuefiShgB3Zmn404GtzOx9SYOB\ncWa2doGyruF3gEcegbPOgn//OywvskgYgfPEE2G11Rrrm+M49aORefiKfxnuAEbHzwcBtyfgQ1Oy\n2WZw110wZQrsvXcYZfPKK2HNNWGffeCZZ0ofw3GcrkO90zKvAx4F1pD0hqSDgbOB7SW9AGwbl/Pi\nGn5tygwfHsbVnzEDfvjDMGn6DTeELJ7ddguDsjXSP7eVfv+StJV2/5K01any8M1sXzNbzsx6mdlK\nZvZXM5tlZtuZ2ZpmtoOZ1fYbOQVZY41Qw3/lFTjuuDDS5l13waabwtZbh+EZXEFznK6Lj6XTxHzw\nAVx4Ifzxj2HIZYANN4STT4Y99oBuqe6H7ThOIXw8fKcgs2fDn/8Mf/gD/O9/Yd3aa8OYMUHrX2SR\nxvrnOE5ldMrB01zDT6ZMv34huM+cCRdfDDvs0ML06SGjZ/XV4ZJL4LPPGudfM9hKu39J2kq7f0na\n6lQavtO5WHRR+PGP4R//gL/9LWTzvP46HH00rLwynHNOGMLBcZzOiUs6TkHmzw8TqJ95JkyeHNb1\n7x8eCscdF2bechwnfbiG71SNWcjgOfPMMDgbhGEcfvQjOOEEWGGFxvrnOE57OmXAHzFihE2ZMqWi\nMi0tLQu6Hte7XNpt1cO/CRNC79277w7LiywCBx4IBxzQQq9eldnq0aOFDTboX3E2UFrORaPLdFVb\nafcvSVvV+lco4KdhLB2nEzFqVBiqYerUEPhvvhmuugomTQrrKmH4cPjiCzjpJPjBDzwbyHHqTapr\n+C7ppJ8XX4TzzqtumIY334R33gmfhw6FX/wCDj4Yioz95DhOGXRKSccDftfmyy/huuvg7LPhhRfC\nukGDQrvAEUfAEks01j/H6ax4Hn4dyqXdVtr9mzu3hdGj4bnn4JZbYMQIeP/9UNNfaSUKjuXfFc9F\n2v1L0lba/UvSlufhO12O7t1hzz1DO8A994R5eVta4De/gSFD4Pjj4e23G+2l43R+XNJxUkm+bKDR\no0Pt38fyd5ziuIbvdEqmTAka/803h/4A3bqF4R600KVcnCWXhCOPDNlAPTw3zeniuIZfh3Jpt9UV\n/BsxAm68EaZPh0MOCQF/0UVbmDGDiv7mzm3hgAPCENGXXgqff97Y71WLMl3VVtr9S9JWrTV8r+s4\nnYI11wz5/ueeC2+9BT17VlZ+yhQ4/fSQRnrkkeHzCSfA4Yd7NpDTPLik4zQN8+fDbbeFISIyncQG\nDIBjj4VjjoGllmqsf45TK1zDd5yIGYwdC7/7XZjoHWCxxULu//HHw3LLNdY/x+koruHXoVzabbl/\n+ctIsPPOIRPooYdgp53g00/h/PPDMNBHHAGvvlobW/Us01Vtpd2/JG25hu84NWTzzUPu/+TJIQ30\n1lvhssvgiitg773D9jlzKjvmmmvC//2fZwM56cMlHcfJYsaMMNHLtdfCvHnVH2flleHEE8OsYT42\nkJM0ruE7TgW8/jr8/e+Vz/D19ddwxx3w0kthefBgzwZykqdQwMfMUvs3fPhwq5RZs2ZVXKbacmm3\n5f41xtaHH86yG24wW399s9BEbDZggNmpp5p9+GHj/Uu7rbT7l6Stav0LoX3hmNqwRltJMyU9LWmK\npCcb5Yfj1Jru3YP+P2VKmDtg001h1qyQ+z9kCPzsZ23DQjtOkjRM0pH0KrChmc0qso81yj/HqRVm\n8PDDIf//3nvDup49w9j/v/gFrLJKY/1zuh6p0/AlvQaMNLOPiuzjAd/pUkyaFMYGuvXWtrGB9tkn\n6PzLL99o79LBoot6e0dHSZ2GD7wKTAaeAg7Lt49r+MmXSdJW2v2rp63p081Gjzbr0SNo/MOHz1qg\n91fyV025tNsaPnyW7bmn2cSJ6fitGmmr1hp+IzOFNzOzdyUNBO6XNN3MJmTv0LdvX8aMGUPvmNc2\ncuRIRo0atWBS30ynhOzl1tbWottrudza2lpV+QzuX7r9q/Z6Kse/tdaCP/yhhRNPhD/9qT/Tp8OW\nW4btzz8f9l9nndLLQ4e28vbb5e+fYeDA8vfPLK+/fiv9+tXfv9bW8Ab0yistbLQR7L9/f7bYoj7X\nU9rjRbn+jR8/nrFjxwIsiJf5SEVapqRTgTlmdkHOekuDf47jJMc778AFF4RRTT/9NKzbbDM4+eTQ\nQ7rSobGbkVQNrSCpj6TF4+fFgB2AZxvhi+M46WK55eC880JfiFNPDQPcPfJI6L08YgTcdFMYCM+p\nnEalZQ4CJkiaAjwO3Glm9+Xu5GPpJF8mSVtp9y9JW2n3L0lbmTJLLQWnnRYC/3nnhU5sTz8dUl7X\nXhv+8hf48svk/UvSVpeY09bMXjOz4WY2wszWM7OzG+GH4zjpZ4klQhbTa68FmWfllUNP5h/+EFZd\nFS66CObObbSXnYNUaPiFcA3fcZxc5s0Ls6CddRY891xYt/TSsNFGlev7gwbBj38MG2xQez8bSery\n8MvBA77jOIX4+mu4887Qoe3JDvbV32mn0Ci8+ea18a3RdMqAP2LECJsyZUpFZVpaWhakLdW7XNpt\nuX+dx1ba/UvSVqVlzGDiRPjooxbmz6+s3DPPtPC73/VfIAmNGhUC/047FX9bSOu5yFAo4PuI3Y7j\ndGqkIOe0tEClsXHUqDCS6UUXwcUXh0lxdtkFhg+Hk06CPfcMYyN1FVJdw3dJx3GcpJgzJ0x+c/75\n8N57Yd3qq8OYMbD//mH8o85Cp5R0POA7jpM0n38Of/tbmAhn5sywboUV4Oc/h0MPhT59GuldeXTK\ngO8afvJlkrSVdv+StJV2/5K0lRb/5s2DG24I2UDPPx/WDRwIxxwD663XwldfVWZrkUWqKzNiRH+G\nDKmomGv4juM4ldCjR5By9t03zGJ25pnw1FNwyilB4586tbLjVVvmhBOoOOAXItU1fJd0HMdJC2bw\n4INwzTXJdvQ65hjYYovKynRKSccDvuM4TuWkavC0cvGxdJIvk6SttPuXpK20+5ekrbT7l6StLjGW\njuM4jpM8Luk4juN0MTqlpOM4juPUjlQHfNfwky+TpK20+5ekrbT7l6SttPuXpC3X8B3HcZyqcA3f\ncRyni+EavuM4TpOT6oDvGn7yZZK0lXb/krSVdv+StJV2/5K05Rq+4ziOUxWu4TuO43QxXMN3HMdp\nchoW8CXtJGmGpBclnZhvH9fwky+TpK20+5ekrbT7l6SttPuXpK0uoeFL6gb8EdgR+Aawj6S1cveb\nM2dOxceeMGFCVT5VUy7ttty/zmMr7f4laSvt/iVpq1r/CtGoGv7GwEtm9rqZfQXcAHw7d6dXXnml\n4gNPnDixKoeqKZd2W+5f57GVdv+StJV2/5K0Va1/hWhUwF8eeDNr+a24znEcx6kTqW60HTRoUMVl\nPv/886psVVMu7bbcv85jK+3+JWkr7f4laata/wrRkLRMSZsAp5nZTnF5DGBmdk7Ofp6T6TiOUwWp\nmeJQUnfgBWBb4F3gSWAfM5ueuDOO4zhNQo9GGDWz+ZJ+DNxHkJWu8mDvOI5TX1Ld09ZxHMepHalu\ntHUcx3Fqhwd8x3GcJiF1AV/SceWsq5Gt7pKWk7RS5q+MMudL+kYVtkZJOjh+Hihp5QL7/T3+r/o7\nSxokadf4t0y1xynT1gBJG0vaIvNXT3tdBQVWbLQfxchci6XWNQpJ3y9nXY1t9qnn8euOmaXqD5ic\nZ92UEmUGAVcB98TldYAflihzDPAh8BwwLf49U4Z/hwKPAE8ARwD9yihzKnAn8GJcXg54pMC+z8ft\nTwMDgCWz/8qwtRfwOnA1cA3wGvC9Kn+Lg8s4F9OAWcA44DPgwTKOuymwL3Bg5q/E/scBfQHF33ky\nsEMZds7IWe4O/KPAvnOATwr9lWHrojx/vwG+XaTMtCp/FwH7A6fE5ZWAjWt5f8T9Jucs9wCeL1Hm\nFeAf8d74RgXfaTNgsfh5f+ACYEgl/hVal2efPsCvgSvi8urArmVcs88Db8Tl9YFLyrC1FHBxvGYn\nARcCS5VRrqJ7pOzzXIuD1MQR2IcQFGcBd2T9jQMeKFH2nhjons66MIveTMDL5Zz4IuXXBM4mBNfr\ngK2L7Ds13qRTstblfbgAxwLTgS+AV7P+XgNeLcOvp4FlspYHZs5LFd/xjRLbpwG9galxeS3gthJl\n/g48ClwSb4SLgYtKfaf4f0fgNsL4S+Xc2H8FToqfewG3E/p/FCvzG+AoYAnCQ+ZIch4cBcpdDjxE\nqEgcA4yP9u8A/l+BMlcDG1Xxu/wZ+BMwPS4PAJ4qsn9F9wdwEuEBOI/2D76PgLNK+NYL2AL4JXA3\n4QHwzzK+0zPxHlkfmAIcDfy3wL47x+vmfdo/YP8GPFmGrRuBXwDPxuU+mWu4SJkngBVz7uFny7B1\nP+HhsnL8+xXwn1rfI+X+NSQtswCPEnLylwbOz1o/h3AxFGNpM7tJ0kkAZjZP0vwSZd4EZlfjaOxH\nsFb8+5AQZI+XdLiZ/SBPkS/NzDIdySQtVujYZnYRcJGkPwOXEm4egIfM7Oky3OtmZv/LWv6IItKd\npELnVoSaYTE+N7PPJSGpl5nNkLRmiTIjgXUsXtllkulAsgvwdzN7TtJCnUrycAjwj3hdbA3cbWb/\nr0SZ3c1s/azlP0t6GjilRLlhwGZmNh8g/n4PA6MID8Z8fBPYX9JM4FPC9zQzG1bC1jfNbANJUwgF\nZknqWWT/iu4PMzsLOEvSWcC5wBqEBztAqd9tPvBV/P818L/4V4p58R75NvBHM7tK0g8L7PsOMBHY\nnVBrzjAH+GkZtlY1s70l7QNgZnPLuZ7M7M2c3UrFGIBlzew3Wcu/lbR3iTLV3CNlkZqAb2avA69L\n2g94x8w+B5C0KLACMLNI8U8lLUW8GGNP3lLB/FVgvKR/E2rTGT8uKFZI0h+AXYEHgTPN7Mm46RxJ\nLxQodpOky4D+kg4jBKIrSvg3A7iWUKMV8HdJV5jZxSXK3SPpXuD6uLw3oaZViEGEmvOsnPUiPISL\n8Zak/sC/gPslzSK88RTjWWAw4eFeLpMk3UeoIZ0kaQlCMMmLpA2yFi8ELiPIcA9J2sDMJhex9Wm8\nBm8gXE/7EIJxKQYAi9N23S1GkODmS/qiQJkdY7nN4/JDQDnj4X4VKx2Z630gRc4H1d0fEO6Rhwj3\n31RgE+AxYJsiZT4hPOAuIEgmH5VhB2BOfCDtD2wRR9RdJN+OseLztKR/mNm8Mo+fzZcxrmTOx6pk\nxYACvClpU8AkLUKQGcvpO3SfpB8AN8Xl7wH3lihTzT1SFqnLw5c0EdjUzL6Myz0JevdGRcpsQHjt\nWZdwsgYSdOuCbwaSTs233sxOL1JGhFeyC8xsoSAgqZ+Z5b2RJG0P7EAIpPea2f2F7MT9nwG+lbET\n3woeK1X7k3QO4fVzVFz1MLCJmeWdc0DSVcBfzWyhcVglXWdm+xazl7XvlkA/YGzmt8vZfifhBlsC\nGE7oXZ39oN29yLG7xTKvmllLDF7LF/p9JY0r4qqZWcGAJWko4SGxWfT3EeAnZjazyDGJtdFfEaQc\nEd7MziQ8eE8zs5/nKXMcoR0k81DfgxAkiz7U4wNpb2ADgiz0PeBXZnZzgf0rvj9iuWnARsDjZjY8\nDmF+ppl9t0iZbxOuvY2BLwmVhofM7IEStgYTNOunzOzhmECxlZldU6TMa+R54zCzVUrY2p7wW61D\n6Py5GTDazMYXKbM04brYjvBb3QccV+qBJmkO4eGfeRvoTlsFwsysb9a+Vd8j5ZLGgD/VzIbnrHs6\n5zU7X7keBF1dwAsWhl0ux97iAGbWWub+08xsvXL2zSpzPHCjmb1dQZlpBH0386bTm3AzFLUtabKZ\nbZCz7pkyZIK6Eh8IBTGz/+Yps1aUiTYoUKZYTT0xYkVgBYLmvXFc/ZSZvVOiXFUP9bjvWoShSURo\n4ypa26zm/pD0lJltJGkqQUb6QtJzZlYySy36tzPwE0Kb0qKlylRKfPBn6A18n/BWVUp+y5TdhHA+\nHjezD2vtX6VUc49USmoknSw+kLS7md0BC2oM5fwYGwNDCd9pA4U5HYvVDtYlNI4sGZc/JLSEP1fC\nzmRJG5nZU2X4lGEJwqvdx4QGo5vN7P0SZf4KPCHpn3F5D0KmRV4kHUlobFwlR5dfglBLbSiZi1XS\nOblvG/GtJN/FfDzwI9q36Sw4JMWlBST1I2RIZdpB/ktogC0oZ0R55DDarqWM/4cUKhO157vjw/j2\nYj7lmqO9DjyftvaKwoWCBPGamf1J0lbA9pLeNbO8cpBCquLY2PbxK8L98dsyHpgVS3aSbiU0vL5C\nkIMOJLxxFtp/gpmNijXh7Npnpj2jb4Gi5Kld/z9JkyjR3iJpM0Ij7b8l7Q+cLOnCKCsXKlPxdRHL\nPWBm25ZaF4+VuUdWBt7NkbUrHzo4nz8prOGvSkjrWp5wAbxFCMQvFynzd2BVgs6YuYHMzI4tUuZR\n4JdmNi4ub0V4Xd20hH8zgNUIF34lDW1IGkZ4Fd8TeMvMtiux/wZkSTNmNqXIvv0IevBZwJisTXPM\n7ONSviVFkm8gMfg8S5A9AA4A1i8hSTxKkMEmkRWMzezWErauJjQ2ll0RiG9+BwHZD/W/WYmG5Vjj\nHkkIPv8mZAJ9w8x2KbD/M2Y2TNIoQhbSeYSUzm9W4GtRyS5rv5GETJZyGjQ7RM6bXzfCOTmyDDXg\nGcJDaRihYnUVsJeZFaxhV3pdxDfyPoQsw61oe5D3JZzDhWb4yypbsaxdLqkL+BkqkVokTafCVu18\nMlGZ0tGQfOuL1Q6yyg4mvHb+AFii0TJLkmS/gRBqfxmWIFzM+5covykL164KvsHFMvnkwYXWVbK9\nSLkZhHzumVRQEajkoZ5VZrKFLJ1fAJ+Z2cWSppjZiAL7TzGzEQpZN9PM7Lpi+3cESRMIb1IPE37X\nyucpLd9WdlvNPMK5P8/MCiVPZMplzt8pwNsWMoIWqojklKnouojtMz8h9Kl5m7aA/wmhneaPldgq\nJzaVQ+okHUmDCI1dy5nZzpLWIeicBeUMqmvVflXSrwmyDoTsgFdLFcoEdoUerL1L7E7c9yhCHvRA\n4GbgMDN7vgJfuwLXEfLBK34DKfQGR+hYVozPJI2y2CAdX+U/K1HmLkm7mFmxzKZ8VJVxE2WVStsi\nvlJIKTwQ2C2uy5vREnlbIUtse0I2WS/q18v+AMI52BP4vUKG0sNmVk66ZEWY2dZVFi07IyiLiq4L\nM7sQuFDSsRZSrRcQz38xqpW1y3IsVX9U0EmE0FEr0zlrFiHdaUGnrRJ2BhA6a2RuuAuBAWX4tzvw\nEqEW9xohHe65EmXOAoY3+tw2+HftG/8vme+vRNnpxLfRCm0OJ/SRmEmQ4KYAw0qUmRN/088ItbE5\nlNfT9jhCOuLpwBmEviPH1OlcrhOv3X3i8srAiUX27wN8F1g9Li9LGT2VO+DfsoS32D8ReqeOrZOd\nfoT0z4nx73zK6/k+mNA+tHlcXonSvb2rvS4q7g1MqNw8DrxB6C/0KLBaLc5Z6iSdrMyABa+chV6n\noq4o4BxCz7kFm4BzrAKNsgL/niY0Fv7Hwmvy1sD+ZrZQJxFJfc3sE0lL5juWpUhbrzeS7jKzXdWW\nSpfdOGlWJJVO0s3AsWZWVV6ypL7RyCdl7r8kQZ5Z8AZnJTIk1IGMm3rRiOtP0iuE2uh1BFlnqpkV\n6yPQEVsVt9EkRZRvlyf0pdkva1Nf4FIrouFnHaOiDMJySJ2kQwWdRKytVXuR3BsytmwvhKT/Z2Y/\nUVvOa+4xS+W6fmVmH0nqJqmbmY2TVKiR7TpCJ61J5AlyBD27KTCzXePHR4gar5nNKFZG7fOSn5dU\nUV5ybpaOpHKydA4l1NazOxs9SkiBLGqOKjJuqiFKU6cBQwj3cKa9IPd6asT1dxGhTWIfYATwX0kP\nmdkrxYtVxapmtmfW8umxQbsoMaZcDKwN9CTkxreaWb88+1abGrwjMJpwHZ2XtX4OYeiKfH7tb2bX\nxsb87PUZW0U7hZZDGgP+8QRJZlVJjxA7ieTbUdWlImY0+/MKbC9FS3zyPkTotv8/CvTEzAQ5M8s7\nMmaTchVB4704ZmRNJgT/C/Psex5tb3B7ZK3PrCvFXwg1wL3i8gGErIxiNcDjaOtstLViZ6MybFWU\nRttBriIMIdAuYySXRlx/1qZdLw4cTHgwrUAIqrWmmjYagD8SJKebCZk9BxKGj8jHCYR0zIpSg83s\nauBqhbRPo33CwXq0ZWZlkxlyZYmS36BKUifpAGV3EulIKqKk43KDTL51ecotRriouhFe1foRRmAs\n1eNuedpqZACY2UPFynRVFIYF2Igwvs0RhEyTYmlqVaVyVpml05HORhVn3FSDpCcqkStVQS54DXw7\nj/BAX5wwDMPDhHNRMiGiClvDCXJOP0Ks+Bg4yEr3IJ5oZiOzr6E6Zi3dS2hfnEz7dM58D5C6k5oa\nvqRtzOxBSbm1rzUUBh37GJhgWfm98dV8NuH1sVIOIjTUZjM6z7psH7sDd1nIDviaNu2wKAodi/Ym\nNGBlZ5k0XcCX9AChJpMJBhtZ+8HesvftaGeyamqA1YwPBFSdcVMN4yT9njAkQ7bE1c622nLBl5Y0\ngPa54MvXybcjCG9fN5eS7DqKmU0F1q+0jQaYq5DbPlXSuYTsvrxZS3niUa4Pt5WwtbyZ7VimXxmb\nVXXyKofUBHxgS8KAZLsV2L4UYfyL7TtiJKaz7QusLOmOrE1LEB4qBbEwENbXKjJmTgH2ANY0s1ID\nNDUDzwAbEsZ1mU2QyB4zs3yBuOpUzsiRhNfqdjXAYgXM7Dvx42kKed79gLFl2EqSTO1+ZNa6fPLC\n4bTlgk+ifS54wTzwDrI74S0nI9lNIYylU/TNuRpiW9+p0Z4p9AE4o9TbNkHa6wb8mCCNrUhII81H\noXgE4ZyXCviPSlrPzAqNmJqP2wmVof9Q3oicZZNKSacQkq7Klw1T4TGGENLYFgoihDHqi46+J+l2\nQmPU/WRp91a8V+89wPdr2dre2VEY8XI08DNgsJmVyk3uiK1Ka4BdCknHWOlRVmtpryLJrgN27ie8\nJV8bV+1HGHCtYA/26Ns1ZrZfoX1q5Ns0wgOhByHj61XC21jJDnmlZMcO+ZW2gJ+bWUEZ458kiaS8\nNcTYSJO778WEH315QlfuB2j/Cl7wIdFVkfRjgsa7ISE/PqPxPlgHW+1qgEC5NcBUoyo6JyqMHbUO\n7VNNS3Vcq8a3XMluQiHJrga2njWzdXPWlRzcML4JbGNFhojIU6YX4S1gKO1lljMK7J+3R35WuWLj\n9vwWeNQq7/xXkjRJOhmqyayomAKpWZ9akcGaIAT2mPK5kpXowk3oDALhdfqOYjs2Eb0JnWUmlXqb\nqgE3EGqAmdf1/QiD1xUdw6gT8DfCPfHLuPwi4XvlDfgKQ4FvRQj4dxNGsZxA6Z7K1VCJZNdRqhlr\nHkJt+5Eo6Wa/pRdLe7yd8H0mUXrs/KIBvRBqP4DcyQq9lDP3iJWKTWXZSGENv+LMiirtTCRPapaZ\n5c2RzSq3GyFdsKeZrRwzBc4olhMeM3s+t7bZkLoDvcxsbm2+jZOPamuAaUcVdE6M26YRpw40s/Xj\nG8K1Ztah9rASPtZNsssKjGLhseZbSwVGVTcXxkLXUr2QdC2hovKwlRj2ulLSWMOvNre2YszsZUnd\nYyD+q8KUcUUDPiGveGPCRBeY2VRJpTqwPECoVWY0/EUJEygUHZnT6TDV1gDTTqUzWH1mZl9Lmhfb\nM/5HaKisOXkku78QpJ2aYWYL8tSVp1d0GeULBvYiVNP4Wi2ZvioXqXRflYpIY8A/ArgmavkQcliL\nZlZUSdmpWTl8ZWaz1X5uy1Jdx3tnN9iaWaukPhV77JRFTg3wJ7R1tutOeOj+rEGu1YqyOydGJsZU\n0ysIkkQrQWOvB4lJdqqyV7SkNQjXwFDa6/HF5lcYBRwsqezG12qx0Hv/Ido3fK9LkZTxcklVwFcY\ntW7N+NpZ78yKAwgBoJzUrGyek7Qv0F3S6sCxlJ779VNlzaUqaUPq9NbitNUA4/W0H7CymZ2hMG3e\nsg11rgaY2WSFcaTKmsHKzI6KHy+VNJYwkF3Rzkkd8K3aHuzVUG2v6JuBS4ErKT/tcWeqm3+4Yirp\nq1LxsVOo4U80s5Gl92wMsWb+S8L8tBAkgt8Uy7FXmBTiRuAdwg06GNjbzCbV2d2mRtKfCW9f25jZ\n2rHz0X1Wg4kkGomkowm9u1vi8gDCyJmXFNhfhAffKlkPvsFm9mRiTtcBVdkrWtIkM9uwQltVzT9c\nDZL+QJDEviB0MHyIMBBfhyuJaQz4ZxNG27uR9i3oNRnZLys/Ni+lXtEkfd9yJovOty5rWzfCq+ZT\nhBoZVDDnrlM9apvoIrtxsyYTSTSSAokNxSZA6aoPvn8Sxuv5CaHT2SxgESs881dm1NBjgQ9YuKdy\nwRijBoyGWo+G71RJOpG9CQH5qJz1tRrZLzNq49Hxf/YEKOU8/U4ivBKWWgdAbCz7U7wZn63QV6dj\nfBUzojKNmwMp3d7SGeguSRZra/E79iyy/zczDz4AM5sV2686NVZ5r+jcUUNPyNleLMYkORpq3Rq+\n0xjw1yEE+0xnmYcJeltNsLYZq7bPqRGdKGky7XvfLkDSzsAuwPKSsmew6UtbrmwhHpC0J3Cbpe2V\nqmtzEWFUwmUk/Y7QsPmrxrpUE8YCNyrMYgVhCIViga6rPvgWYCXmK4j7rAwQ+9FUGmOSHA21bg3f\naZR0biKM9fGPuGpfwiw2exUuVZWdqcDRZvZIXN4UuKRILvP6hBmUzgBOydo0BxhnZrOK2JpDaISZ\nB3xOWwt/hztSOMWJDXnbEs75A7XOa24EUSY8nLZslPuBK63AxOGS9iO8OW9AGPDve8CvCsmQXZ1q\nYz6lBVwAAAUsSURBVIwSGg21nqQx4D9vZuuUWlcDOxsSXpUyA2vNAg6xwhMaZMr1qOapmy9fuJxa\niePUgq744KuWpGJMGkmjpDNZ0iZm9jiApG/SNkRBzYgZMutn8v2txFg9km6KNYApCsM15x6v2GBI\n1c6i5DgLyFyDhRIP8l2DUcp5zsLgZXUdrrgTkUiMSSNprOFPJ2SzvBFXrQS8QJBDatbRQZUPhrSs\nmb2rAoMiWfHBkKbRli88PJMvbCmYe9PpPFR7DSqM8HqMmb2Rb3uzkVSMSSNprOHvlJCdSgdDejf+\nr3hQJMI4Op9LQlIvC3Nkrlm6mOO00YFrcAChw+CTtE91LjV/c1clqRiTOlIX8KsMqNWwgpmV/cOr\n/Uh27TZRugG26lmUHCdDB67B3rSlI2f2L2dO4C5JgjEmdaRO0kkKSZcDF1sygyFl292SmC9sFYzH\n7TjVoirnBHa6Hs0c8J8HVgNeo86DITlOI1DWnMDAK1mblgAeMbP9G+KY0zCaOeBX3PjqOJ2JmIE2\ngOrnBHa6GM0c8FfKt94zGRzH6ao0c8DP5DKL0Ki1MmFQs6Ij7TmO43RWUpelkxSWM81d7DadO2Cb\n4zhOl6Fpa/j5UBeY79RxHKcQTVvDl3R81mI3wsBS7zTIHcdxnLrTtAGfkJqWYR7wb+DWBvniOI5T\nd5pe0pG0OISJxRvti+M4Tj3p1mgHGoWkdeMMQM8RxhmZJGndRvvlOI5TL5o24AOXA8eb2RAzG0KY\n7uzyBvvkOI5TN5o54C9mZuMyC2Y2njArleM4TpekmRttX5X0a9pPYv5qA/1xHMepK01Xw5eUCfAP\nAwOB2+Lf0sAhjfLLcRyn3jRjDX9DScsBBwFbE0fJjNvUMK8cx3HqTDMG/EuBBwhDxmbPY5kJ/Ks0\nwinHcZx607R5+JL+bGZHNtoPx3GcpGjagO84jtNsNF2jreM4TrPiAd9xHKdJ8IDvOI7TJHjAd5oG\nSb+U9KykpyVNlrRRHW2Ni5PqOE5qaMa0TKcJkbQJsAsw3MzmSVoS6NlgtxwnUbyG7zQLywIfmtk8\nADP72Mzek/RrSU9IekbSpZmdYw39AklPSXpO0khJt0p6QdJv4j5DJE2XdK2k5yXdJKl3rmFJ20t6\nVNJESTdK6hPXnx3fOKZKOjeh8+A0MR7wnWbhPmAlSTMk/UnSFnH9xWb2TTMbBvSR9H9ZZb4ws42A\ny4DbgSOB9YDRkgbEfdYE/mhm6wBzyJkXWdJSwK+Abc1sJDAJOD6+YexhZuua2XDgt3X51o6ThQd8\npykws08J01j+CPgAuEHSgcA2kh6X9AxhqI1vZBW7I/6fBjxrZv8zsy+BV4AV47Y3zOzx+PlaYFSO\n6U2AdYBH4vwLBwIrAbOBzyRdKek7wGc1/LqOkxfX8J2mwUIvw4eAhyRNAw4n1Ng3NLN3JJ0KZEsy\nX8T/X2d9hjAER6F7J7cno4D7zGy/3B0lbQxsC3wf+HH87Dh1w2v4TlMgaQ1Jq2WtGg7MiJ8/jlNd\nfq+KQ68k6Zvx876EUVizeRzYTNKq0Y8+klaXtBjQ38zGAscDw6qw7TgV4TV8p1lYHLhYUj/CpPUv\nE+Sd2cCzwLvAk1n7FxtzJHvbC8DRkv5KmC7z0ux9zOxDSaOB6yX1iut/RdD7b89q5P1p9V/NccrD\nx9JxnCqRNAS4y8zWa7QvjlMOLuk4TsfwGpPTafAavuM4TpPgNXzHcZwmwQO+4zhOk+AB33Ecp0nw\ngO84jtMkeMB3HMdpEjzgO47jNAn/H6VaxR8ix5o2AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib\n", "%matplotlib inline\n", "tokenDist.plot(25, title=\"Top Frequency Collocates for \" + wrd2find.capitalize())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Explort all collocates and counts as a CSV\n", "\n", "This will create CSV file with the name of the target word with the counts." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'wrd2find' 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 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcsv\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mnameOfResults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwrd2find\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcapitalize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m\".Collocates.csv\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mtable\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtokenDist\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmost_common\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnameOfResults\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"w\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'wrd2find' is not defined" ] } ], "source": [ "import csv\n", "nameOfResults = wrd2find.capitalize() + \".Collocates.csv\"\n", "table = tokenDist.most_common()\n", "\n", "with open(nameOfResults, \"w\") as f:\n", " writer = csv.writer(f)\n", " writer.writerows(table)\n", " \n", "print(\"Done\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Next Steps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next utility example we will generate [Concordances](Concordances.ipynb) for a target word." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "---\n", "[CC BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) From [The Art of Literary Text Analysis](../ArtOfLiteraryTextAnalysis.ipynb) by [Stéfan Sinclair](http://stefansinclair.name) & [Geoffrey Rockwell](http://geoffreyrockwell.com). Edited and revised by [Melissa Mony](http://melissamony.com).
Created August 8, 2014 (Jupyter 4.2.1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 1 }