{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "' * Stately, plump Buck Mulligan came from the st'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import requests, numpy as np\n", "from nltk import word_tokenize\n", "\n", "chapter = 1\n", "url = 'http://faculty.georgetown.edu/jod/ulysses/ulys%d.txt' % chapter\n", "\n", "response = requests.get(url)\n", "raw = response.text\n", "\n", "raw[50:100]" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['[', '1', ']', '*', 'Stately', ',', 'plump', 'Buck', 'Mulligan', 'came']" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tokens = word_tokenize(raw)\n", "tokens[:10]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nqdm2bZv09ttvK403Zo5A984770x1BMVEzCxJYuYOxOd1IGbyhIiPv4iZJUnM3IH4vA7ETBMR8bGX\nJOb2J189rxVf2SsvLw/nz5/H+++/j++//x5vv/02RkZG5PPCNjU1Ye/evXL9M888g97eXjQ2NqKn\npwdnzpzBhx9+iLy8PLkmNzcXn332GU6dOoWenh4YjUZYLBYsX75cabx7JntR9Pb2TnUExUTMDIiZ\nOxCf14GYyRMiPv4iZgbEzB2Iz+tAzDQRER97gLn9yVfPa8UHKaSlpcFms8FoNMoXRKiqqpLPIWu1\nWtHX1yfXP/zww3j11Vdx+PBhnD59Gg899BBKS0vlU28BgMFgQHl5OY4dO4ajR49iwYIFqKys5Dlk\niYiIiGhMXh1tm52djezsbLc/Kysru2ftscceQ01NzbjbXLJkCZYsWeJNHCIiIiKagRQfWkBERERE\nFAiCt2/fvn2qQ/jaL3/5y6mO4BURc4uYGRAzdyBmDsRMnhAxt4iZATFzB2LmQMw0EREzA8ztT77I\nrOj0W0REREREgYKHFhARERGRkDjIEhEREZGQOMgSERERkZA4yBIRERGRkDjIEhEREZGQOMgSERER\nkZA4yBIRERGRkDjIEhEREZGQvBpkW1pasGnTJqxduxZVVVX4+uuvx6z96quv8Prrr+O3v/0t1q1b\nh4qKCphMpnvqLl68iIqKCqxduxaVlZX49NNPvYkGs9ns1e2mmoi5RcwMiJk7EDMHYiZPiJhbxMyA\nmLkDMXMgZpqIiJkB5vYnX2VWPMi2t7ejoaEBq1evxq5duxAbG4vq6moMDg66rX/ggQeQk5ODP/7x\nj9i9ezdWrlyJY8eO4fz583LNlStXsGfPHixbtgy1tbVITU1FbW0trl27pniH2traFN8mEIiYW8TM\ngJi5AzFzIGbyhIi5RcwMiJk7EDMHYqaJiJgZYG5/8lVmxYOsyWRCVlYWMjMzER0djZKSEsyePRut\nra1u6+Pi4pCWloaYmBjMmzcPGRkZSEpKwpdffinXnD59GsnJycjPz0dUVBTWrFmD+Ph4tLS0eL9n\nRERERDStKRpkHQ4HLBYLEhMT5TWVSoXExER0dXV5tI1vv/0WV69exeOPPy6vdXV1uWwTAJKSkjze\nJhERERHNPCFKim02G5xOJ7Rarcu6VqtFT0/PuLctLS3F4OAgnE4nVq1ahaefflr+mdVqRXh4uEt9\n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\nqqur77nNiy++iKeffhr//u//Lq99+umnePPNN9HY2Ai1Wo3CwkJs3rwZaWlpcs3Zs2dx/Phx/PnP\nf3abxWw2o62tzWVt4cKFWLFihae7QySUkydP4ssvv3RZS09PR0ZGxn29X/YazTTsNSL/8EmvSQrY\n7XbpP/7jP6T//d//dVnfu3evtGvXLre3+c///E/p0KFDLmutra1SUVGR/O/S0lLJZDK51Lz77rtS\nZWWlkniSJEnSiRMnFN8mELzzzjtTHUExETNLkpi5A/F5HYiZPCHi4y9iZkkSM3cgPq8DMdNERHzs\nJYm5/clXz2tFX/YKCQlBQkICOjo6fj4Io7OzE//6r+7fijcYDOjs7HRZ+/vf/w6DwTBuTUdHh0uN\np/7vZC+K3t7eqY6gmIiZATFzB+LzOhAzeULEx1/EzICYuQPxeR2ImSYi4mMPMLc/+ep5rfisBXl5\neTh//jzef/99fP/993j77bcxMjIinxe2qakJe/fuleufeeYZ9Pb2orGxET09PThz5gw+/PBD5OXl\nyTW5ubn47LPPcOrUKfT09MBoNMJisWD58uWT30MiIiIimpYUH22blpYGm80Go9EoXxChqqpKPoes\n1WpFX1+fXP/www/j1VdfxeHDh3H69Gk89NBDKC0tlc8hC/z0jmx5eTmOHTuGo0ePYsGCBaisrOQ5\nZImIiIhoTF59bSw7OxvZ2dluf1ZWVnbP2mOPPYaamppxt7lkyRIsWbLEmzhERERENAMFb9++fftU\nh/C1X/7yl1MdwSsi5hYxMyBm7kDMHIiZPCFibhEzA2LmDsTMgZhpIiJmBpjbn3yRWdHpt4iIiIiI\nAoXiL3sREREREQUCDrJEREREJCQOskREREQkJA6yRERERCQkDrJEREREJCQOskREREQkJA6yRERE\nRCQkDrJEREREJCQOskREREQkJK8G2ZaWFmzatAlr165FVVUVvv766zFrv/rqK7z++uv47W9/i3Xr\n1qGiogImk+meuosXL6KiogJr165FZWUlPv30U2+iwWw2e3W7qSZibhEzA2LmDsTMgZjJEyLmFjEz\nIGbuQMwciJkmImJmgLn9yVeZFQ+y7e3taGhowOrVq7Fr1y7Exsaiuroag4ODbusfeOAB5OTk4I9/\n/CN2796NlStX4tixYzh//rxcc+XKFezZswfLli1DbW0tUlNTUVtbi2vXrineoba2NsW3CQQi5hYx\n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\n5nUf0dXVBYvF4vXX/8iRI7hy5Qp27tw5al6Zt1/vqVBnAGvNm1hnzmGteY8vvP/u4E+1NmWmFmRn\nZ+PQoUOIjY2VlioZHBzE0qVLvZ2aQ1VVVXjhhRcQHh6O7u5u6PV6BAUFITU11dup2Rn5h2hER0cH\nWltbMWvWLMyZMwdZWVn4wx/+gLlz5yIiIgInT57E7Nmzx72y0hPGy3vWrFk4deoUfvCDH0CtVqO9\nvR2//e1vERUVhYSEBK/l/PHHH6OxsRHbtm3D9OnTpTlCwcHB0lIl3n69RaszgLXmrZxZZ4+GtTZ5\nWGue4alaU9hGFhybAs6dO4czZ85Ii0f/4z/+I5588klvp+XQvn37cOvWLVgsFoSGhuJ73/seXn/9\ndURERHg7NTtffPEFfv7zn48aT09Ph06nAwDo9XpcuHABfX19WLx4MX784x97/YYI4+W9bt06lJWV\nobW1Ff39/Xj88ceRkJCA1atXe3V9xtWrVzsc1+l0SE9Pl3729ustUp0BrLXJxDqbXKy1ycFa8wxP\n1dqUamSJiIiIyH9MiTmyREREROR/2MgSERERkZDYyBIRERGRkNjIEhEREZGQ2MgSERERkZDYyBIR\nERGRkNjIEhEREZGQ2MgSERERkZDYyBIRERGRkNjIEhEREZGQ2MgSERERkZDYyBIRERGRkP4/SESe\nnkE3OG8AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "plt.style.use('ggplot')\n", "\n", "f, axarr = plt.subplots(6,3,sharex=True,sharey=True,figsize=(8,10))\n", "\n", "for chapter in np.arange(1,19): #18 chapters in ulysses\n", " if chapter < 18: \n", " url = 'http://faculty.georgetown.edu/jod/ulysses/ulys%d.txt' % chapter\n", " else: \n", " url = 'http://faculty.georgetown.edu/jod/ulysses/ulys18dr.txt'\n", " \n", " response = requests.get(url)\n", " tokens = word_tokenize(response.text)\n", " word_len = [len(x) for x in tokens if x.isalpha()]\n", " #print(np.mean(word_len))\n", " axarr[int(np.floor((chapter-1)/3)),(chapter-1)%3].hist(word_len,normed=True, range=(0,20),bins=20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://bbengfort.github.io/tutorials/2016/05/19/text-classification-nltk-sckit-learn.html" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from nltk.corpus import stopwords as sw\n", "from nltk import wordpunct_tokenize\n", "from nltk import sent_tokenize\n", "from nltk import pos_tag\n", "import string\n", "import pandas as pd\n", "import numpy as np\n", "\n", "punct = string.punctuation\n", "stopwords = sw.words('english')\n", "\n", "for chapter in np.arange(1,19): #18 chapters in ulysses\n", " \n", " #get the book\n", " if chapter < 18: \n", " url = 'http://faculty.georgetown.edu/jod/ulysses/ulys%d.txt' % chapter\n", " else: \n", " url = 'http://faculty.georgetown.edu/jod/ulysses/ulys18dr.txt'\n", " response = requests.get(url)\n", " \n", " d = {'FW':[], \n", " 'ADJ':[], \n", " 'NOUN':[],\n", " 'ADVB':[],\n", " 'VERB':[],\n", " 'WORLEN':[],\n", " 'SENLEN':[]}\n", " \n", " for sent in sent_tokenize(response.text):\n", " FW,ADJ,NOUN,ADVB,VERB,SENLEN,WORLEN = 0,0,0,0,0,0,0\n", " for token, tag in pos_tag(wordpunct_tokenize(sent)):\n", " # Apply preprocessing to the token\n", " token = token.lower() \n", " token = token.strip() \n", " token = token.strip('_')\n", " token = token.strip('*') \n", "\n", " # If stopword, ignore token and continue\n", " if token in stopwords:\n", " continue\n", "\n", " #remove numbers\n", " if token.isdigit():\n", " continue\n", "\n", " # If punctuation, ignore token and continue\n", " if all(char in punct for char in token):\n", " continue\n", "\n", " #get word type (http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html)\n", " if tag[0]=='F':FW+=1\n", " elif tag[0]=='J':ADJ+=1\n", " elif tag[0]=='N':NOUN+=1\n", " elif tag[0]=='R':ADVB+=1\n", " elif tag[0]=='V':VERB+=1\n", "\n", " #sentence length\n", " SENLEN+=1\n", "\n", " #word length\n", " WORLEN+=len(token)\n", "\n", " #if the sentence was all stopwords or otherwise 0 meaningful words\n", " if SENLEN==0: \n", " continue\n", " #update data if there is data to update\n", " d['FW'].append(FW/SENLEN)\n", " d['ADJ'].append(ADJ/SENLEN)\n", " d['NOUN'].append(NOUN/SENLEN)\n", " d['ADVB'].append(ADVB/SENLEN)\n", " d['VERB'].append(VERB/SENLEN)\n", " d['WORLEN'].append(WORLEN/SENLEN)\n", " d['SENLEN'].append(SENLEN)\n", "\n", " temp_df = pd.DataFrame(d)\n", " temp_df['Chapter'] = np.ones((len(d['ADJ']),1))*chapter\n", " \n", " if chapter == 1:\n", " df = temp_df\n", " else:\n", " df = df.append(temp_df)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "(22446, 8)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.shape(df)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "Y = df.pop('Chapter')\n", "X = df.as_matrix()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight='balanced', dual=False,\n", " fit_intercept=True, intercept_scaling=1, max_iter=100,\n", " multi_class='ovr', n_jobs=1, penalty='l2', random_state=None,\n", " solver='liblinear', tol=0.0001, verbose=0, warm_start=False)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn import linear_model\n", "\n", "logreg = linear_model.LogisticRegression(class_weight='balanced')\n", "logreg.fit(X, Y)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.14942528735632185" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import accuracy_score\n", "y_pred = logreg.predict(X)\n", "accuracy_score(Y, y_pred)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAecAAAGeCAYAAACuIMldAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XtcVHX+P/DXOTMMw8Aww0VQQAPEwUiM0i4qeUvCFi3J\nXN10Ey1MzaLdclc3Xa3NwrLsou6S9UuUKC03LxGC5iXxkm0GKIqKiEYopDiAosAw5/cHXybHmTmf\nM8NtJt/PHjweeT7v8zmfc5vPuX0+H04QBAGEEEIIcRp8VxeAEEIIIeaociaEEEKcDFXOhBBCiJOh\nypkQQghxMlQ5E0IIIU6GKmdCCCHEyVDlTAghhDgZqpwJIYQQJ0OVMyGEEOJkqHImTmPx4sXgeR7f\nffed2XSe5zFy5MguKpW59PR08DyPtWvXdnVRHFZZWYmpU6eiZ8+ekMvlkMlkqK2t7dBl7tmzBzzP\n49VXX+3Q5dxKzp49C57nMX369K4uCukAVDl3MZ7nwfM8wsLC0NjYaDUmNDQUMpkMRqOxk0vXuTiO\nA8dxkqd3FWcqiyOmTp2KTz/9FMOHD8fChQuxePFiKJXKDl+us+3HrtYeF3q0TX+/5F1dANJygp07\ndw7vvvsu/va3v1lNv5UdP34cKpWqq4vxu9DU1IQdO3YgLi4O69at67Tl3nfffTh+/Dj8/f07bZmu\noC3ndnBwMI4fPw6NRtOOJSLOgu6cnYCPjw98fX2RmpqK6urqri6O09HpdAgJCenqYvwunD9/Hkaj\nET169OjU5SqVSuh0Ovj6+nbqcp1ZW8ccksvl0Ol0CAwMbKcSEWdClbMTUKlUWLhwIfR6PV555RW7\n5t2wYQOGDh0KrVYLlUqF/v37IzU11eoj8tDQUISHh6Ourg5//etfERYWBoVCYXoPeOM7388++wwD\nBw6Ep6cngoOD8eKLL5ry3LlzJ0aMGAGNRgNfX188+eSTVi8qdu/ejRkzZuCOO+6ARqOBSqVCdHQ0\nXn31VTQ0NEhex5vfObe+vxT7u/m99YkTJ5CUlIRevXrB3d0d3bt3x+TJk3Hy5Emryzx9+jQmTJgA\nX19feHl5YciQIfjmm28A2P+jajQa8Z///AexsbGm/dSnTx8kJyfj9OnTZrG1tbWYP38++vbtCw8P\nD/j6+mL06NH49ttvLfK98T1uQUEBEhIS4OPjA09PTwwfPhwHDhwwiw8LC0NoaCg4jsOaNWtM26r1\nnaWtd/6A7febVVVVeOmll9C3b194eXnBx8cHffv2xbRp01BWVma1rDcrKSnBk08+iZCQELi7uyM4\nOBhTp05FSUmJReyNZfzyyy9x3333wdPTE35+fvjTn/6EiooK2zviJjc+Vt6+fTuGDh0KtVqNgIAA\nTJ8+HTU1NQCAn376CWPHjoWvry/UajUeffRRnD171iK/w4cPIyUlBTExMfDz84OHhwd0Oh1eeukl\n6PV6s9gRI0aYtmVSUpJpX8hkMpw7d85iXTMzM3H//fdDrVYjPDzc5j45dOgQ3N3dERERgbq6OrNl\nXrhwAYGBgfD29rZ53BPnQY+1ncSzzz6LDz74AGlpaXj++efRu3dv5jz/+Mc/kJqaim7dumHy5Mnw\n8vJCdnY2/vGPfyA3Nxe5ubmQy3/bxRzHobGxESNHjsTly5cRHx8Pb29vhIWFmdI5jsP777+Pbdu2\nYdy4cRgxYgRyc3OxfPlyVFdX49FHH8WkSZMwZswYPPPMM9i/fz8yMjJw6dIlZGVlmZVv6dKlOHHi\nBAYPHowxY8bg+vXr2LdvHxYvXow9e/Zgx44dDj3WCw0NxeLFiy2mNzU14e2330ZDQ4PZY/Bt27Zh\n/PjxMBgMGDt2LCIiIlBeXo7//ve/yMrKwu7duxETE2OKLykpwf3334/Lly/jD3/4A+68806UlJQg\nMTERo0ePtqvMTU1NSEhIwI4dO9CrVy9MnjwZ3t7eKCsrw6ZNm/DAAw+Y9nVNTQ0GDx6M4uJi3HPP\nPXjsscdw8eJFbNiwAQ899BD+85//IDk52WIZP/zwA5YuXYrBgwcjOTkZ586dw5dffolRo0YhPz8f\nffr0AQD85S9/QVlZGd59913ExMRg3LhxAGBad3vfX167dg2DBw/GmTNnEBcXh0ceeQSCIODs2bPY\nsmULJkyYgNDQUNE8fvjhB4waNQpXr17FI488gqioKBQXFyMjIwObN2/Gt99+iwEDBpjiW8u4cuVK\nbN26FY888giGDx+O77//HuvXr0dhYSHy8/Ph5uYmaR04jsPmzZvx9ddfY+zYsZg1axb279+PNWvW\n4OzZs3j99dfx4IMPYujQoXj66adx5MgRbN26FWfOnEFhYaFZXqtXr8amTZswbNgwxMXFwWg04scf\nf8Q777yDbdu24fvvv4enpycAYNq0afDx8cHmzZsxbtw4s32g1WrN1nXZsmXYsWMHxo4di5EjR5ou\nGqy599578cYbb+Cll15CcnIyPv/8cwAtF5RPPPEELl68iPT0dOh0Oknbh3QhgXQpjuOEnj17CoIg\nCF9++aXAcZwwfvx4s5jQ0FCB53mhubnZNO3AgQMCx3FCaGioUFVVZZre3NwsjB07VuB5XnjjjTes\n5vPQQw8J9fX1FmVZvHixwHGcoNVqhRMnTpimNzQ0CHfccYcgk8kEf39/Ye/evWbzxcXFCTzPCwUF\nBWbTz5w5Y3Wd//nPfwo8zwsbNmywWD7P88KePXssttGIESOs5nWjqVOnCjzPCy+++KJp2uXLlwWt\nVisEBAQIxcXFZvFFRUWCl5eXMGDAAKvr88EHH5hN37Jli8BxnMDzvJCens4sjyAIwvz58wWO44Rx\n48YJjY2NZmmNjY3CxYsXTf+eMWOGwHGcMGvWLLO4kpISQaPRCEqlUjh79qxp+u7du03lWbt2rdk8\naWlpAsdxwrPPPms2vaysTOA4Tpg2bZpFWW1tf1vzbd26VeA4zmx7t2pqahKuXLliUdZXXnnFLK5v\n374Cz/PCZ599ZjZ9w4YNAsdxwu23325RRo7jBI1GIxQVFZmlPfHEEwLP88IXX3xhUR5r1qxZI3Ac\nJ7i5uVk9pjmOE/z8/CzK9tRTTwk8zwtbtmwxm37u3DnBaDRaLOf//b//J3AcJ7z55psWyxc7llrX\n1cvLy+LcEgTxfZmQkCDwPC98+OGHZnlZiyXOiR5rO5Hx48dj0KBB+Oqrr7B//37R2I8//hgcx2HB\nggXo1q2baTrP83j77bfBcRw++ugjq/O+/fbb8PDwsJl3SkqK2ZW1QqHAxIkTYTQaMWbMGMTGxprF\nT5kyBQBQUFBgNt3WXVNKSgoEQUBOTo7oOtrj1Vdfxdq1azFu3DgsW7bMND09PR21tbVYvHgxIiMj\nzeaJiopCcnIyfvrpJxQXFwMAfvnlF+zYsQNhYWF49tlnzeLHjh2LYcOGSS6T0WjEv//9b6hUKvz7\n3/+2uJtzc3ODn58fgJY77E8//RRqtRqvv/66WVzv3r3x/PPPo7Gx0eqXvbGxsfjzn/9sNm369OmQ\ny+U4dOiQ5PI6ytqX3nK53HSXaMv+/ftNT1YmTZpkljZhwgTExsbixIkTyMvLs5g3JSUFUVFRZtOS\nk5MhCILd6/zEE09YHNOt2zM6OtqibE8++SQEQUB+fr7Z9J49e1p98pCUlARvb2+Hj/dnnnkG/fv3\nt2ue9PR0BAUF4YUXXsCqVavw2muv4fbbb8fKlSsdKgPpfFQ5O5m3334bgiDgpZdeEo376aefALS8\nu7pZnz59EBISgjNnzli8d1IqlejXr5/NfDmOM3uM2CooKAgAcPfdd1ukBQcHQxAElJeXm02vr6/H\n66+/jnvvvRdarRYymQw8z8Pf3x8cx+GXX34RXUepPv30UyxevBj33nsvPv30U7O0gwcPAgDy8/Px\nyiuvWPy1vns7fvw4gN+2a2xsrNUf2uHDh0suV3FxMWpqatC/f390795dNPbEiROor6/HnXfeaXqs\neaORI0dCEART+W5kbX/J5XIEBgbi8uXLkstrr2HDhiE4OBipqal4+OGH8cEHH+Dw4cOSm/wdPnwY\ngPVjGIDpO4Ob19nWMdqzZ08AsHudHTneAVgc7waDAStWrMADDzwAPz8/yOVy03vk2tpah453juNw\nzz332D2fn58fMjMz0djYiDlz5kChUGD9+vWiF+XEudA7Zydz//334/HHH8fGjRvxxRdfYMKECVbj\nWt872frqtkePHvj555+h1+uhVqtN0wMCAphlsNY0Qy6Xg+M4m2lAy91fK4PBgBEjRuCHH34w3X10\n69bNdPe4ePFiuz4Ks2XPnj146qmnEBYWhq1bt1rcxV26dAmCINh8itDqypUrAH7brra+gGVVsjdq\n/Qio9cdcjJT9eWOeN7JWmQMt+6W5uVlSWR2hVqvx/fffY9GiRdiyZQtyc3MhCAL8/f0xe/ZsLFiw\nwOybh5vV1NSA4zjRdRYEQfI6ty7LnnVmHdNSj3cA+OMf/4hNmzahd+/eGDduHLp37w53d3cAwPLl\nyx0+3u055m507733olevXigrK8OIESNEL8qJ86HK2Qm98cYb2Lx5M+bPn2/6aOdmrT8aFy5cMH3Q\ndaPz58+bxbXqrDbTmzdvxg8//IDp06dbVIwXLlyw+kGXvYqLi5GYmAhPT0988803Zo/3W2k0GnAc\nh8LCQtxxxx3MPFu3V2VlpdX0CxcuSC5fawUi5Y7pxv1pja392Z54vuVBmsFgsEizVkECLXeYq1ev\nxurVq3H8+HHs3LkTK1euxKuvvgpBEERbH2g0GgiCILrOtipPZ/Pjjz9i06ZNeOihh/DNN9+YtiXQ\n8jHW0qVLHc7b0XP2+eefx5kzZ9CtWzdkZ2fjs88+w5/+9CeHy0E6Fz3WdkK9e/fG7NmzcebMGXzw\nwQdWY+666y4ALc2Vbnb69GmUl5cjLCwM3t7eHVlUm0pKSsBxHBITEy3SrJXZXhcvXkRCQgLq6+ux\nceNGi/fJre6//34IgmC1eZA1rds1Ly/PapOpXbt2SS5j3759odVqUVhYyKzUIyMjoVKpUFBQYLUr\nzZ07dwKw/pi1vfj4+AAAfv75Z4u0H374gTn/7bffjmeffRa5ubkAgE2bNonGix3DQOesc3tpbfY1\nduxYs4oZAL7//ntcu3bNYh6ZTAZBEDrk6caGDRuwevVqDB8+HIcPH4a/vz9mzpxp0XSPOC+qnJ3U\nP//5T2g0GixZssT0yPVG06dPhyAIeO2113Dx4kXTdKPRiBdffBGCIODpp5/uzCKbCQ0NhSAIFj+8\npaWlmDdvXpvu4BsaGjB27FiUlZXhww8/FH0PPG3aNGi1WrzyyitWKxhBELBnzx7Tv4ODgxEXF4cz\nZ85gxYoVZrGbN2+WXMkDLXeis2fPRn19PWbOnGnR9rypqcm079zc3DB58mTU1tZi4cKFZnGnT5/G\n+++/D4VCYfHhV3u69957IQgCPvnkE7MK4+eff8a//vUvi3127NgxVFVVWeTTeiHC+iBsyJAhiIyM\nRF5eHjZu3GiW9uWXXyIvLw+RkZEWH2s5o9aPH28+3quqqjBnzhyr87R+DNjarrm9lJaWIjk5Gd26\ndUNmZiaCg4ORnp6OK1euYOLEiRaP44lzosfaTsrHxwf/+Mc/TN153vzDOGjQIPztb3/DW2+9hX79\n+uHxxx+Hp6cnsrOzUVRUhAceeID5UZm9rN1J2tLanvidd95BYWEh7rrrLpw9exZZWVkYM2aMqf2l\nI9577z18//336N27N86cOWP10em0adPQq1cv+Pr64ssvv8Rjjz2G+++/Hw8++CDuuOMOcByHn3/+\nGQcOHEB1dTXq6+tN865cuRKDBg3CCy+8gJycHFM7502bNuGRRx7Bli1bJJd10aJFOHToELZu3Qqd\nTocxY8ZArVbj3Llz2L59O5YtW4Ynn3wSAJCamoq9e/dixYoVOHToEEaMGIFff/0VX3zxBa5cuYKV\nK1fitttuc3i7sdx7770YOnQo9u7di3vvvRcjR45EZWUltm7ditGjR2P9+vVm8du3b8fcuXMxaNAg\n6HQ6BAQEoLy8HJs3b4ZMJsPcuXOZy0xPT8dDDz2EiRMn4tFHH0Xfvn1RXFyMzZs3Q6PRdPgAI/Yc\n02LuueceDBkyBP/9738xZMgQxMbGorKyEtnZ2ejbt6/pA7MbDRo0CCqVCu+++y4uXrxoerf8/PPP\nm30nYg+DwYBJkybhypUr+Oyzz0x5jh49Gi+++CKWLVuGF198Ee+//77jK0s6R2e22yKWOI4TevXq\nZTWtoaFBCA8PF3ieF2QymVk751br168XHnjgAcHb21vw8PAQ+vXrJ7zxxhtCQ0ODRWxoaKgQHh5u\nsyxi7VzF2mTu3r1b4HleePXVV82ml5eXC1OmTBFCQkIElUol9OvXT1i2bJlgMBgEnueFkSNHSlr+\nzbGtcWJ/N+dx9uxZ4bnnnhN0Op3g4eEhaDQa4fbbbxeefPJJi/aqgiAIp0+fFiZMmCD4+PgIXl5e\nwuDBg4Xs7Gxm21RrmpubhZUrVwr33XefoFarBS8vL0Gn0wkzZ84UTp8+bRZbU1MjzJs3T9DpdIJS\nqRR8fHyE+Ph4YceOHRb52trurazt77KyMoHneWH69OlW56mpqRFmzJghBAYGCkqlUoiOjhY++ugj\nq/MdP35cePHFF4V77rlHCAgIEJRKpRAWFib88Y9/FA4cOCC5rCdPnhSefPJJISgoSFAoFEJQUJDw\n5JNPCidPnrSIZbXFFlu3mzlyTIst5/Lly8Kzzz4rhIWFCR4eHkJERISwYMEC4dq1azbPvZycHGHw\n4MGCWq02HbutbdnF1tVWOV588UWB53nhL3/5i0V8U1OTcN999wk8zwubNm0S3ziky1Hl3EFu7tSA\n8qF8OjMPyofycZZ8iGPonXMH2bdvH+VD+XRZHpQP5eMs+bi648ePY+nSpXjmmWcwceJE/O9//2PO\nU1RUhL///e+YPHkyUlJSHPoIlipnQgghxIaGhgaEhoZK/sC2qqoKqampiI6OxltvvYWHH34YaWlp\nFn2xs9AHYYQQQogNMTExZgPjsOTm5iIwMNDUrXFQUBCKi4uRlZVlVzesdOdMCCGEtJNTp04hOjra\nbFpMTIzdw3RS5dxB2msAdMrn1svHmcpC+VA+xD56vd6iVzuNRoP6+nq72phzgtBODf0IIYSQDnT1\nWgM8Pdwdnr+5uRlpaWkWAwK1tk1nmThxIubOnYuBAwfajElJScGIESPMul7+6aefkJqaioyMDMlj\njdM7Zwf9WtcIQ7Pt6xqtpxz6q5Z9FN/I14t9kMl5wCBtkB+nyUfK9Z6bDGhi9FpoMLLzcZdzaDCI\nx7nJ2A+IOnO9WLlIyQMAWH2sSc3n52rLriVv1EOjwPmaRtGYluWJlyhA7YaqOvadg0Yl/uPlqeBx\ntZF9MHu4yUTTpW6fsotXRdODte74Rc8e1KKbWvx8V7vLUNfALtD1JvF19/WUo5rx2wMA/ozysM4J\nDoCik2sQTw93TPvHGhSfkd7Hfau+Yd3xyetJmD17dgeU7DdardY0kE2rmpoaqFQqyRUzQJWzwwzN\nAhpFKmdBgGg6wP6RtjfOWfJpr/WSUDdLimuv8nTmekmJ4SX0gCqlzKwfe6PAjmmJE78IMgpgXkgB\nQDPrIklCTGtce8RcY1wIGAV2DCDh4k9CDMD+XTFK+O1pXV57xHS24rIq5J+osH9GrnPe4up0Ooux\nvgsKCqDT6ezKh945E0IIcR0c5/ifA65fv46ysjKUlZUBaBmxrqyszNQvfmZmplk//HFxcaisrERG\nRgYqKiqQk5ODgwcPIiEhwa7luuSd8/Hjx7FlyxaUlpZCr9cz3wEALY3C165di/Lycvj7+yMxMVF0\nwARCCCHOiHfwLtixe9HS0lKz/vtb+3sfNmwYZs+eDb1ej0uXLpnSAwICMG/ePKSnpyM7Oxt+fn6Y\nNWuWXc2oABetnFsbhY8cORLLli1jxrc2Co+Pj0dKSgoKCwuRlpYGX19fuzcYIYSQW0dUVJTFoC83\nsvYOOyoqqk1jeAMuWjl3VaNwQgghXYyDY4+oHR+ltkvcEu+c26tROCGEkC7G8Y7/uRCXvHO2F6tR\nuD2ftxNCCOlCjn7c5eAHYV3llqicHZWXl2cxMktgYCCSkpKg9ZRDrNmrQs6jm1q80neTcCHHc9Li\nXDEfhXgzVMgltBWS8YCHm3iclCZHnblerOYpPAe4SzgzWaslpSwAcJufUjTdQ8EzY1qXJ0bpxiNY\nq2Dm4yYX3xFynoNaKa3tuhip2ye8m4doukohY8YAgJLR7lou46D1YBfIy118xdzlPAIYvz0A+3iX\nek6sWbMGlZWVZtOkdurhEI5z7C6YKmfn42ij8NjYWJsHmP6qQbQtYTe1G35ldLgQqGGfiG48IKGJ\nqVPlI6XPOYUMaGT0t9Akoa2mhxuHa03icQo5+6TszPVitWF2lwMN7D4kmJWhlLIAwNlL10XTb/NT\nMmOAlgtSMcFaBX7Rszsz8fMSr8DVSh5119kHs6e7+PkldfuU/ireSUt4Nw9mDAAE+YhX4FoPGfTX\n2AWqZxRaamcvPbSMTloY5wSHlovjpKQk5rKI/W6Jyrm9GoUTQgjpao62WXatO2fXekP+f7qqUTgh\nhJAuRh+EOa+uahROCCGki9EHYc6rqxqFE0IIIZ3BJStnQgghtyj6WpsQQghxMvRYm4iR8RzkIk1i\nOEhrp/t71CxhvEOB55hxUjYfJzGuPUgZxlGQECeluFJiWE27BAkxAGBkFFgQ2DEA+3jnOE7SOWGU\nUGhpMeLpUvYVADQw2tg1C+wYoKUdsxiOY8cQOP5xF30QRgghhHQUBx9rU1MqQgghhLQF3TkTQghx\nHTzn2LssF3vNSJUzIYQQ10HvnJ3XV199hUOHDqGiogIKhQI6nQ6TJ09GUFCQ6HxFRUVYu3YtysvL\n4e/vj8TERAwfPrxzCk0IIaTtbpHxnF2yci4uLsbDDz+M8PBwGI1GZGZmYsmSJVi+fDkUCuud5ldV\nVSE1NRXx8fFISUlBYWEh0tLS4OvrSz2FEUKIy3C0K066c+5w8+fPN/v37NmzkZycjNLSUvTt29fq\nPLm5uQgMDMSUKVMAAEFBQSguLkZWVhZVzoQQQpyKa11K2FBfXw8A8PLyshlz6tQpREdHm02LiYnB\nyZMnO7RshBBC2lFrJySO/LkQl7xzvpEgCFizZg369u2LkJAQm3F6vR4ajcZsmkajQX19PZqamkTH\ndSaEEOIkqPtO1/DRRx+hvLwc//rXv9o977y8POzbt89sWmBgIJKSkuDtIRPtfUkh5+HrKb553SQc\nXzwnLc6Z8pFLOAl4HlDK236ySMlHyjkpab0k7i/3Np5VPAco2uHMlJpPqL+HaLpKwTNjAHbvVu5y\nHt011r8JsScfOc9B4yFj5iNj7C+p+0rXw1M03ctdxoxpiRMvkJznoGbEAIBSLn4j4S7nEaBm32yw\njnepvxlr1qxBZWWl2bQhQ4YgNjaWPbMjuqD7zm3btmHr1q3Q6/UIDQ3FtGnTEBERIRqfk5ODX3/9\nFd26dUNiYiKGDh1q1zJdunL++OOP8dNPP+HVV1+Fj4+PaKxWq0VNTY3ZtJqaGqhUKpt3zbGxsTYP\nsNprzWhqtl07+3rKUX3VIFomPzX7B8aNByT0DOhU+RhEtksrpZzDdYOEvhPbIR8pXSJKWa9mCdvP\nXQ40iO925kejCjnQyMhDCqn5lF28Jpoe6u/BjAEAL6X4z0l3jQIXahqZ+ag9xPPReMhQc62ZmY8n\no+aVsq8A4OT5q6Lpuh6ezBgA6NPD9ms3AFC786hrYB9ktdfECx2gdkNVXRMznx5a8d8f1jnBoeUC\nKCkpibmsdtXJTan279+PdevWYcaMGYiIiEBWVhaWLFmC9957D97e3hbxubm5+PzzzzFz5kyEh4ej\npKQEaWlp8PLywt133y15uS77zvnjjz/G//73PyxatAj+/v7MeJ1Oh6NHj5pNKygogE6n66giEkII\ncXFZWVkYNWoUhg0bhuDgYCQnJ8Pd3R27du2yGr93716MGjUK999/PwICAjB48GA8+OCD2Lx5s13L\ndcnK+aOPPkJeXh6ef/55uLu7Q6/XQ6/Xo7Hxt6vyzMxMrFixwvTvuLg4VFZWIiMjAxUVFcjJycHB\ngweRkJDQFatACCHEIY5+DGb/Y22DwYDS0lKzj4k5jkN0dLTNj4mbmposmvQqFAqUlJTAaJT++NIl\nH2tv374dALB48WKz6bNnz8awYcMAtHwAdunSJVNaQEAA5s2bh/T0dGRnZ8PPzw+zZs2iZlSEEOJK\nOvGDsLq6OhiNRqsfE1dUVFid584778S3336LgQMHIjw8HKdPn8bOnTthMBhQW1sLrVYradkuWTmv\nX7+eGTN79myLaVFRUVi6dGlHFIkQQkhnaOMHYR39Adv48eNRU1ODBQsWQBAEaLVaDB8+HJs3bwbP\nS7+ocMnKmRBCyC2qjR+E2fMBm1qtBs/zVj8mtnUHrFAoMHPmTMyYMQN6vR4+Pj7Yvn07PDw8rH5A\nZotLvnMmhBBCOppcLkd4eDiOHDlimiYIAo4ePYrIyEjReXmeh6+vLziOw/79+zFgwAD7lu1QiQlk\nPAdB5AMDnuMgZzW0bCeCWINrszjxdK6dGunzUvLh2HHNxvZZr/YiZcQ5TmIcK4/22BVS85Gy+aTE\n8BJWXEqMjFFoTkJMa1x7xFxvFm+2ZRQEZgzAbmIoCNKaIUo5L6SeOy6pkzshSUhIwKpVqxAeHm5q\nStXQ0GAaNCkzMxPV1dWYM2cOAOD8+fMoKSlBnz59cOXKFXz99df4+eefTelSUeVMCCHEhTjaFadj\nlfPgwYNRV1eHDRs2mDohefnll02PqG/++NhoNOLrr79GRUUF5HI57rjjDrz22muSmvzeiCpnQggh\nrqMLxnOOj49HfHy81bSbPz4ODg5ulw+PqXImhBDiOm6R8ZzpgzBCCCHEybjknXNubi62b9+Oqqoq\nAEDPnj3x+OOPIyYmxuY8RUVFWLt2LcrLy+Hv74/ExETTC31CCCEuogsea3cFl6yc/f39MXnyZHTv\n3h0AsHuhFiiVAAAgAElEQVT3brz55pt48803rQ4bWVVVhdTUVMTHxyMlJQWFhYVIS0uDr68v9RBG\nCCGupAtGpeoKLlk53zyyx6RJk5Cbm4tTp05ZrZxzc3MRGBiIKVOmAACCgoJQXFyMrKwsqpwJIcSF\ncOAcavbJudhLZ9e6z7fCaDRi3759aGhosDnC1KlTp8w6LgeAmJgYmx2XE0IIIV3JJe+cAeDcuXNY\nsGABmpqaoFQqMXfuXAQHB1uN1ev1Vjsur6+vR1NTk83xnAkhhDgXjnPwzpkea3eO4OBgvPXWW6iv\nr8fBgwexYsUKvPLKKzYraEfk5eVh3759ZtMCAwORlJQEtbtMtNckuYyD1kN8MHO5hOcWPNcy6Hlb\n8RygEC+O5HxY5REkrpeCdfQJUnqcAjzcGD1KSTgnnWk7t+e+kpJPmL+HaLpKwTNjgJZjXoy7nEeA\nmn0h7MbIR85zUCvZO4s1xoCkYxBAv2C1aLpaKWfGAIDanfF7IOE3AwC83MVXzF3Oo4dGIRoDsI93\nqedERw8kYcGx0R9drimVy1bOMpkMgYGBAICwsDCUlJTgm2++QXJyskWsVqu12nG5SqUSvWuOjY21\neYDVNTTDIDI0p9ZDBv018S79NCr2ke/GA02MIUCldF+pkAGNjB4GpVRiUsojZchShRxoNIjHSOmC\n0MONw7Um8Tg3OXvFOnM7d0Ye9uRz5uI10fQwfw9mDABoVOIVb4DaDVV1Tcx8vJXiP0tqJY+66+yD\nzINxZSLlGASAo7/Uiab3C1YzYwDg9h7igx5I+c0AgLrr4oXuoVHgfE2jaAwAhPiKX3CxzgkOgIy3\nbyCJdsE5eBdMlXPXEAQBTU3WT3ydTof8/HyzaQUFBTbfURNCCHFOt8pjbZf8ICwzMxPHjx/Hr7/+\ninPnziEzMxPHjh3D0KFDTekrVqwwxcfFxaGyshIZGRmoqKhATk4ODh48iISEhK5aBUIIIcQml7xz\nrq2txcqVK3H58mWoVCrcdtttWLBgAfr16wfAsiPygIAAzJs3D+np6cjOzoafnx9mzZpFzagIIcTF\n3CpNqVyycp45c6Zo+s0dkQNAVFRUu3RGTgghpOvcKo+1XbJyJoQQcouir7UJIYQQ50J3zkRUs1GA\nodl22xqjwMPQLKFNUTuQetB11rFplNLmSOCYcVLL23nrxY4RJMTx7VReKftdahtvVh5SyswKkXrD\nw9rMgoQYgL3uUkceZB7OgrRmdqx24BzHjgGk7Yv2OsZI16HKmRBCiOugds6EEEKIc6GvtQkhhBAn\nQ++cCSGEEGdDX2u7jk2bNuGzzz7DH/7wB0ydOtVmXFFREdauXYvy8nL4+/sjMTERw4cP77yCEkII\nIRK4fOVcUlKCHTt24LbbbhONq6qqQmpqKuLj45GSkoLCwkKkpaXB19eXegojhBAXQY+1XcD169fx\nwQcfYObMmdi4caNobG5uLgIDAzFlyhQAQFBQEIqLi5GVlUWVMyGEuIiuqJy3bduGrVu3Qq/XIzQ0\nFNOmTUNERITN+L1792LLli24cOECVCoVYmJi8Oc//xleXl6Sl+mSA1+0+uijjzBgwABTn9piTp06\nhejoaLNpMTExOHnyZEcVjxBCSAdoraDt+XPU/v37sW7dOvzxj3/Em2++idtuuw1LlixBbW2t1fji\n4mKsXLkSDz74IN555x389a9/RUlJCdLS0uxarstWzvv27cPZs2fxxBNPSIrX6/XQaDRm0zQaDerr\n620ONUkIIcTJcG34c0BWVhZGjRqFYcOGITg4GMnJyXB3d8euXbusxp86dQoBAQEYPXo0unXrhsjI\nSMTFxaGkpMSu5brkY+1Lly5hzZo1WLhwIeTyjluFvLw87Nu3z2xaYGAgkpKS4O0hE+0VSCHn4esp\nXjY3CZdGPCctzpnykUu4SuV5QClv+zsgKflI7SWLuV4S95c745BkFYfnAIWMvSwpZZGyz0P9PUTT\nPRQ8MwYA5IxuqRRyHgFqN2Y+MkYvWXKeg1rJXjHW/pK6naOD1aLpag85MwYA1O7iBZLzHDMGAJRy\nhWi6u5xHoLd4DMA+NqQeP2vWrEFlZaXZtCFDhiA2NpY9s5MzGAwoLS1FYmKiaRrHcYiOjrb51FWn\n0+Hzzz/HTz/9hLvuugt6vR4HDhzA3XffbdeyXbJyLi0tRW1tLf7+97+bphmNRhw7dgzbtm1DZmam\nxWMMrVaLmpoas2k1NTVQqVRwc7P+gxEbG2vzAKu91owmke47fT3lqL5qEF0PPzX7l8GNB5raoRfQ\nzsxHrFvTVko5h+sGKZ0wtj0fKV0iSlkvKb2xusuBBvHdzuxaUSEDGpvZy2JddEjd52UXr4mmh/p7\nMGMAwNtDvOINULuhqo79lMpLKf6zpFbyqLvOXjFPd/HzS+p2PvJLnWh6dLCaGQMA/XtqRNPV7jzq\nGtjrVVMvvg0DvRWorG1k5hPkI37BxTp+OAAyHkhKSmIuqz115jvnuro6GI1Gq09dKyoqrM4TGRmJ\n5557Du+++y4aGxthNBoxYMAAPPXUU3Yt2yUr5+joaLz99ttm01auXIng4GCMGzfO6k7Q6XTIz883\nm1ZQUACdTtehZSWEENJ+2lo5d/Sdfnl5OT755BNMmDAB/fv3h16vx7p16/Dhhx8yhzu+kUtWzkql\nEiEhIRbT1Gq1aXpmZiaqq6sxZ84cAEBcXBxycnKQkZGBkSNH4siRIzh48CDmz5/f6eUnhBDimLZW\nzvbc6avVavA8b/Wpq1artTrPpk2bEBkZiTFjxgAAevXqhaeeegqLFi3CpEmTbM53M5f9IIxFr9fj\n0qVLpn8HBARg3rx5OHLkCObOnYusrCzMmjWLmlERQogLae1b2+4/B74Ik8vlCA8Px5EjR0zTBEHA\n0aNHERkZaXWehoYGyGTmr1R43v6q1iXvnK1ZtGiR2b9nz55tERMVFYWlS5d2VpEIIYS4uISEBKxa\ntQrh4eGIiIhAVlYWGhoaTL1L3vyUdsCAAfjwww+Rm5uLmJgYVFdXIz09HX369JF81wz8jipnQggh\nt4BO7lt78ODBqKurw4YNG0ydkLz88svw9vYGYPmUdvjw4bh+/TpycnKwbt06eHp6ol+/fpg8ebJd\ny6XKmRBCiOvogvGc4+PjER8fbzXN2lPa0aNHY/To0Y4vEFQ5O4znOMhEXiNwHAcZq80MESXWjtyR\nuLaSujdZcUZGeQUJMQDAgx0kZdtcZ7S3ajYKzBgA8FKKL6xlvdgFar8Y8XSp21nNaLje0j5Zwk+p\nlOO0k45lV3ar9K39u/0gjBBCCHFVdOdMCCHEZdwqd85UORNCCHEtrlXPOoQqZ0IIIS6D7pyd2Bdf\nfIEvv/zSbFpQUBCWL19uc56ioiKsXbsW5eXl8Pf3R2JioqmdGiGEENdAlbOT69mzJ/75z39C+L+v\nNm/ukeVGVVVVSE1NRXx8PFJSUlBYWIi0tDT4+vpSD2GEEEKcjstWzjKZzNQInCU3NxeBgYGYMmUK\ngJa77OLiYmRlZVHlTAghrqQL2jl3BZetnM+fP49nnnkGCoUCffr0wRNPPAF/f3+rsadOnUJ0dLTZ\ntJiYGKSnp3dGUQkhhLQTeqztxPr06YPZs2cjKCgIer0eX3zxBRYtWoS3334bSqXSIl6v11sdj7O+\nvh5NTU02x3MmhBDiZDq5+86u4pKVc0xMjOn/e/XqhYiICMyePRsHDhzAiBEj2m05eXl52Ldvn9m0\nwMBAJCUlQa2UiXbm4ybjoFWJb143CV3A8Jy0OGfKRy7hCpXnAaW87WcLzwMebuL5SLlglrJegsT9\npWjjWcVzgJQOp1irxXOAwvanGCZ9AlWi6Z7uMmYMACjk4hvIXc4j0FvBzEcuE18zOc9B48FeMbEe\n/ADp2zkigL19WDEAoHIXL5Cc56BWsg8ypZv4NpS6nVnHu9TfjI4eH/lmraNSOTKfK3HJyvlmKpUK\nPXr0wIULF6yma7Vaq+NxqlQq0bvm2NhYmwdY3fVmGET6/tOq5NDXG0TLrfWUdgJJ6DnRqfIxNLP7\nIFTKOVw3MLp7lNCVoYcbh2tN4oFuEi4CpKyXUcL2U8iBRvHdzuyh0V0ONDDyAFp+PEXLIgMam9n5\nnKqsF03vE6hixgCAv1r8eA70VqCytpGZj5dS/GdJ4yFDzTX2inkyal6p27mkSnzdIwJUzBgACOvm\nKZquVvKou84+yGquNYmmS93OQT4eoumsc4JDywWQPeMjE+l+F913Xr9+HRcuXICPj4/VdJ1Oh6NH\nj5pNKygogE6n64ziEUIIaScOjeXs4HvqruSSlfO6detw7Ngx/Prrrzhx4gTeeustyOVyDBkyBEDL\n+JorVqwwxcfFxaGyshIZGRmoqKhATk4ODh48iISEhK5aBUIIIQ7gOMf/XIlLPta+dOkS3n//fdTV\n1cHb2xt9+/bFkiVLoFarAViOrxkQEIB58+YhPT0d2dnZ8PPzw6xZs6gZFSGEuBpH74JdrHZ2ycr5\nhRdeEE23Nr5mVFQUli5d2lFFIoQQ0gkcvQt2sbrZNR9rE0IIIb9nLnnnTAgh5NbEwbEORVzsxpkq\nZ0c1C4JoUyqBkU7YjBLaUgngJMW1B6lLYcVJ+ZHozB8SOaNNFsexYwBpTd86aVcBAGSs9QK7LbQz\n4hkVEychxpXdKo+1qXImhBDiMjieAy/hYtHafK6EKmdCCCEug+6cCSGEEIJt27Zh69at0Ov1CA0N\nxbRp0xAREWE1dtWqVdizZ4/F9JCQELz99tuSl0mVMyGEEJfR2X1r79+/H+vWrcOMGTMQERGBrKws\nLFmyBO+9957VYYunTZuGyZMnm/7d3NyMuXPnYtCgQXYt12Ur5+rqanz66afIz89HQ0MDevTogVmz\nZiE8PNzmPEVFRVi7di3Ky8vh7++PxMREDB8+vPMKTQghpE06+7F2VlYWRo0ahWHDhgEAkpOTcfjw\nYezatQuPPvqoRbyHhwc8PH7rt/zQoUO4evWq3XWNS1bOV69excKFCxEdHY2XX34ZarUa58+fh5eX\nl815qqqqkJqaivj4eKSkpKCwsBBpaWnw9fWlnsIIIcRFdOZ4zgaDAaWlpUhMTDTLJzo6GidPnpSU\nx65duxAdHQ1/f3+7lu2SlfOmTZvg7++PmTNnmqZ169ZNdJ7c3FwEBgZiypQpAICgoCAUFxcjKyuL\nKmdCCHEVndh9Z11dHYxGIzQajdl0jUaDiooK5vyXL19Gfn4+UlJS7F62S1bOP/74I2JiYvDOO+/g\n+PHj8PX1xUMPPYQHH3zQ5jynTp1CdHS02bSYmBikp6d3dHEJIYQ4ic4cf3r37t3w9PTEPffcY/e8\nLlk5V1ZWIjc3F2PGjMFjjz2GkpISfPLJJ3Bzc8PQoUOtzqPX661e/dTX16OpqUl0XGdCCCHOoa3v\nnO0Zf1qtVoPnedTU1JhNr6mpgVarZc6/e/duDB06FDKZzJ6iAnDRylkQBPTu3RuTJk0CAISGhuLn\nn3/G9u3bbVbOjsjLy8O+ffvMpgUGBiIpKQkaD5lob0cKOQ8/T/HN6yahdyKekxbnTPnIJZw5PA8o\n5eJxgoSvK2U8oFKIF0hK3wOS1kvi/nJv41nFc4BCQh6s1eI5QCHhNyE8wEM03VMhY8YAgBujuy13\nOY/uGgUzH7lMfM3kPAeNB3vFWPtL6jkREaASTfd0lzFjAEDlLr4wOc9BrWQXyINxI6GQ8whQs282\nWOsudft05p0o0Lndd8rlcoSHh+PIkSMYOHAggJb65+jRo3j44YdF5y0qKsKFCxcwcuRIB5bsopWz\nj48PgoODzaYFBwfj0KFDNufRarVWr35UKpXNu+bY2FibB1jNtWY0Nduunf085bh01WAzHQD81ewf\nGDceaDIyw5wqH4PIdmmllHO4bhCPa5bQ/alKwaO+UbxA7m7ts52bJWw/dznQIL7bmT8SCjnQyMgD\nYN89KGRAYzM7n9Kqa6Lp4QEezBgA0KjEK4TuGgUu1DQy81F7iP8saTxkqLnGXjFvD/GaReo5UVJV\nL5oeEaBixgBAWDdP0XS1kkfddXaB6q6LHxwBajdU1TUx8+muFT8vWNuntftTe+5E20Nnf62dkJCA\nVatWITw83NSUqqGhwfT1dWZmJqqrqzFnzhyz+Xbu3Ik+ffogJCTEoeW6ZOUcGRlp8TK+oqJC9Gs4\nnU6H/Px8s2kFBQXQ6XQdUkZCCCGub/Dgwairq8OGDRtMnZC8/PLLpjbOer0ely5dMpunvr4ehw4d\nwrRp0xxerktWzgkJCVi4cCG++uorDBo0CCUlJdi5cyeeeeYZU8zNVzNxcXHIyclBRkYGRo4ciSNH\njuDgwYOYP39+V60GIYQQO3VmU6pW8fHxiI+Pt5o2e/Zsi2kqlQrr1q1zeHmAi1bOvXv3xksvvYTM\nzExs3LgRAQEBSEpKwpAhQ0wxN1/NBAQEYN68eUhPT0d2djb8/Pwwa9YsakZFCCGuxMHH2q42ZqRL\nVs4AcPfdd+Puu++2mW7taiYqKgpLly7tyGIRQgjpQF1x59wVXLZyJoQQcutp+VrbsflciQsONU4I\nIYT8vtGds4N4jhNtP8txHHgXe4zibOSMdrNAyxW0lLj2IHVvutpeZx2mUu9UWE3fBEGQ1DxOxmiY\nzkmIaV0eO4YZgquM9mgGQWDGANK2oZQYVpEFCTGujB5rE0IIIU6ms9s5dxWqnAkhhLiOThz4oitR\n5UwIIcRl3Cp3zvRBGCGEEOJkXPLO+dlnn8XFixctpsfHx2P69OlW5ykqKsLatWtRXl4Of39/JCYm\nmvpGJYQQ4ho6c+CLruSSlXNqaiqMxt96ZD937hxee+01DBo0yGp8VVUVUlNTER8fj5SUFBQWFiIt\nLQ2+vr7UQxghhLiQW+WxtktWzmq12uzfP/74I7p3747bb7/danxubi4CAwMxZcoUAEBQUBCKi4uR\nlZVFlTMhhLiQW6Uplcu/czYYDNi7dy9GjBhhM+bUqVOIjo42mxYTE4OTJ092dPEIIYS0o9bK2ZE/\nV+LylfOhQ4dQX18v+v5Yr9dDo9GYTdNoNKivr0dTE3vcU0IIIaQzueRj7Rvt2rULd911F7Rabbvn\nnZeXh3379plNCwwMRFJSEryVMtFeeNxkHHw9xTevm4RLI56TFudM+cglXKHyPKCUS+iaSkJ53BlH\nsZTrZSnrJUjcX4o2nlVS82CtF88BChk7n/BuHqLpKoWMGQOwe+1SuvEI0iqY+Sjk4htaznNQu7N3\nBqvjOKnb545gL9F0tVLOjAEAL0aZ5TzHjAEAd7kbI51HgFo8BmAf71J/M9asWYPKykqzaUOGDEFs\nbCx7ZkfQqFTO7+LFizhy5Ajmzp0rGqfValFTU2M2raamBiqVCm5utg/i2NhYmwdY7fVmNDXbrp59\nPeWovmoQLZevF/uHyo0HmozMMKfKxyCyXVop5RyuG8TjpDyGcpcDDeKbmfkjDUhbL6OE7aeQA42M\n8rRXHqzNo5ABEnqVROmv10TTw7t5MGMAwJNxlRSkVaBC38jMx08tfl6o3XnUNbB3hopR80rdPkW/\nXBFNvyPYixkDANEh3qLpXu48rkhYr5pr4gdHgNoNVXXsJ4I9tOLbh3VOtHSjCiQlJTGX1Z44OPjO\n2cVqZ5eunHfu3AmNRoO77rpLNE6n0yE/P99sWkFBAXQ6XUcWjxBCSDu7Vb7Wdtl3zoIgYM+ePRg+\nfDh43nw1MjMzsWLFCtO/4+LiUFlZiYyMDFRUVCAnJwcHDx5EQkJCZxebEEJIG9wqH4S57J3zkSNH\ncPHiRatfaev1ely6dMn074CAAMybNw/p6enIzs6Gn58fZs2aRc2oCCGEOCWXrZz79++P9evXW02b\nPXu2xbSoqCgsXbq0o4tFCCGkA90qj7UlVc5vvPGGQ5nPnz/fofkIIYQQazgO4B3qhKQDCtOBJFXO\nV66wv0QkhBBCOlpL39qOzeeobdu2YevWrdDr9QgNDcW0adMQERFhM95gMOCLL75AXl4e9Ho9fHx8\n8Pjjj9s1noOkynnJkiWSM7xVcGhpByiGlf57JenDC44dZzSym2RB4JhxrPa3t7oGRhuyZoEdAwC+\nXuLfl/I8B3cJDWdZ+1OQENOePNzEmxzJOI4ZA0g5L6R9tNQsYd2lxLiqzu6+c//+/Vi3bh1mzJiB\niIgIZGVlYcmSJXjvvffg7W29edw777yD2tpazJo1C927d8fly5chCPbtE5d950wIIYR0tKysLIwa\nNQrDhg0DACQnJ+Pw4cPYtWsXHn30UYv4/Px8HD9+HCtWrICnpycAwN/f3+7lOlw5C4KAH374AUVF\nRaipqcH48ePRs2dP1NfXo7i4GBERETavKgghhBBHtLxzdmw+exkMBpSWliIxMfGGfDhER0fbHJvh\nf//7H3r37o3Nmzfju+++g7u7OwYOHIiJEydCoWB3PNXKocr52rVrSE1NRXFxMeRyOQwGA0aNGoWe\nPXvC3d0daWlpGDFiBCZNmuRI9oQQQohVnflYu66uDkaj0erYDBUVFVbnqaqqwvHjx+Hm5oa5c+ei\nrq4Oq1evxpUrVzBr1izJy3aocs7MzERpaSnmzp2LPn36YMaMGaY0mUyG++67D4cPH+6wytloNGLD\nhg1mL9uHDx+O8ePHi85XVFSEtWvXory8HP7+/khMTLTrBT0hhJCu1damVB3dF7ggCOB5HikpKVAq\nlQCAqVOn4p133sHTTz8t2mX0jRyqnL///nuMHj0aAwcORF1dnUV6UFAQ9u7d60jWkmzatAk7duzA\nnDlzEBISgtOnT2PVqlXw9PTE6NGjrc5TVVWF1NRUxMfHIyUlBYWFhUhLS4Ovry91RkIIIbcIe/oC\nV6vV4Hne6tgMtgZb0mq18PX1NVXMABAcHAxBEHDp0iV0795d0rId6r7z6tWrCAwMtJluNBphMLSx\n938RJ0+exMCBAxETEwN/f3/cd9996N+/P0pKSmzOk5ubi8DAQEyZMgVBQUEYPXo07rvvPmRlZXVY\nOQkhhLQvrg3/2UsulyM8PBxHjhwxTRMEAUePHkVkZKTVeSIjI1FdXY2GhgbTtIqKCvA8Dz8/P8nL\ndqhyDggIwNmzZ22mHz16FMHBwY5kLUlkZCSOHj2K8+fPAwDKyspw4sQJ0QEwTp06hejoaLNpMTEx\nNl/qE0IIcT6tzVjt/XO0QWVCQgK+/fZb7NmzB7/88gtWr16NhoYG0yvRm8dyiI2NhVqtxqpVq1Be\nXo5jx44hIyMDI0aMkPxIG3DwsfaIESOwfv169O/fH3379jVNb25uxldffYUff/wRTz/9tCNZSzJu\n3Dhcu3YNL7zwAniehyAImDRpEoYMGWJzHr1eb/Wlfn19PZqamuzaaIQQQrpGZ7dzHjx4MOrq6rBh\nwwZTJyQvv/yyqTXSzWM5KJVKLFiwAJ988gnmz58PtVqNwYMHY+LEiXYt16HKecyYMTh79iyWLVtm\nKuCqVatQV1eHxsZGDBs2DHFxcY5kLcn+/fuRl5eHF154ASEhISgrK8OaNWvg6+uLoUOHdthyCSGE\ndK2u6Fs7Pj4e8fHxVtOsjeUQFBSEl19+2fEFwsHKmed5PPfccxg2bBgOHjyICxcuQBAE9O/fH4MG\nDcKdd97ZpkKxZGRkIDExEYMGDQIA9OzZE7/++iu++uorm5WzVqu1+lJfpVLZvGvOy8vDvn37zKYF\nBgYiKSkJaqUMYv29uMk4aFXim1dCZ0ngOWlxzpSPXOJ6ubOOPoF9NvE84OEmHiflpJSyXoLE9VK0\nsWsfqXmwVovnAAW74yroeniKpnu5y5gxAKBkbECFnEc3NfsJFatHNznPwduDvWKs41Dq9ukTqBJN\n93SXMWMAwFMhXiA5z44BAIVGvK2su5xHD0YMwD7epf5mdPTXz7eqNv2M9O/fv0u+dG5sbLQYw5nj\nONHu0XQ6HfLz882mFRQUQKfT2ZwnNjbW5gFWd70ZBpEu8rQqOfT14h/FaT2lnUASek50qnyaJSzH\nXQ40ML4ZlNJFo4cbh2tN4nFucnbtLGW9jBLWSyEHGtv4LaTUPFgXHQoZ0NjMzufk+aui6boenswY\nAOjhoxRN76Z2w691Tcx8VIwa09tDhtpr7BXzUor/vEndPqcq60XT+wSqmDEA0Ke7l2i6p4LH1Ub2\nQXbpSqNoeg+NAudrxGMAIMTXQzSddU5wAGS8fV8/twfewYEvXK0X3zZVzteuXUNRURGqqqoAtHwo\nFhUVBZWKfRXZFgMGDMDGjRvh6+uLnj174syZM8jKysLIkSNNMZmZmaiursacOXMAAHFxccjJyUFG\nRgZGjhyJI0eO4ODBgzRyFiGEuBIHH2u3aeSLLuBw5bxp0yZs3LgRjY3mV2gKhQKJiYl47LHH2lw4\nW6ZPn47169fj448/Rm1tLXx8fPDQQw+ZdUJy80v6gIAAzJs3D+np6cjOzoafnx9mzZpFbZwJIcSF\ndPYHYV3Focp506ZN+OyzzxAdHY34+Hj06NEDQEtbrpycHKxfvx48z2PcuHHtWthWSqUSU6dOxdSp\nU23GWHtJHxUVhaVLl3ZImQghhHS8rhgysis4VDnn5OQgJibG4pFwSEgI7rnnHrzxxhvYtm1bh1XO\nhBBCyO+ZQ9/vXrlyBQMGDLCaxnEcBgwYgKtX2R+QEEIIIfbgOc7hP1fi0J1znz59UFpaajO9tLRU\n9CtoQgghxFGuVc06xqHKOTk5Ga+//joyMzMRHx9v6i/00qVL2LZtG44dO9bmBtjOzgigWaQFj8BI\n/z2TeuIw2+lKafvASYz7HRJpOdiSLiEGAHy9xJv0KWQcM0ZKeSBIK49cJv5AjwPHjGlPNQ3izZIM\nRiUzBoBoU8//i5AQA1y9Lt7OzuDlxoxxZfRB2A2eeuopixVramrC5s2bsXnzZlMnHk1NLW0YlUol\nFi5ciNWrV7dzcQkhhNzKWvvKdmQ+VyKpcr55wAhCCCGEdBxJlfMLL7zQ0eUghBBCmOixtpO7fv06\nPrhH9WcAACAASURBVP/8c/zwww+oqalBWFgYkpKS0Lt3b5vzFBUVYe3atSgvL4e/vz8SExNNw34R\nQghxDS5WzzqkTZVzbW0tysrKUF9fD6OVjocHDx7cluxF/fvf/0Z5eTmee+45+Pj44LvvvsO//vUv\nLF++HD4+PhbxVVVVSE1NRXx8PFJSUlBYWIi0tDT4+vpSL2GEEOIi6M5ZhMFgwH/+8x/s27fPaqXc\nqqMq58bGRhw6dAh///vfTeNJT5gwAT/++CNyc3OtjpuZm5uLwMBATJkyBUDLkF7FxcXIysqiypkQ\nQlwEfRAm4vPPP0deXh7Gjx+PyMhILFmyBM888ww0Gg2++eYbXLlyBc8880x7l9XEaDTCaDRCLjcv\nvkKhQHFxsdV5Tp06ZfFhW0xMDNLT0zusnIQQQogjHGoseODAAQwbNgwTJkxAWFgYgJaBJQYMGIAF\nCxZAqVRi9+7d7VlOM0qlEjqdDhs3bsTly5dhNBrx3Xff4eTJk9Dr9Vbn0ev10Gg0ZtM0Gg3q6+tN\nTcAIIYQ4N4777dG2fX9dXXL7OFQ56/V69OnTB0DL3SoANDQ0AGjZaIMGDcKBAwfaqYjWPffccwCA\nmTNnYvLkycjJyUFsbKzLvVcghBBiH86BP1fj0GNtb29vU9/Z7u7uUKlUOH/+vCn9+vXrFkNJtreA\ngAAsWrQIjY2NqK+vh1arxbvvvouAgACr8VqtFjU1NWbTampqoFKpTJ2o3CwvLw/79u0zmxYYGIik\npCR4K2UQ68tHIePg6ym+ed0kXBrxnLQ4Z8pHkLheinZoK8BzgDsjHyknpjOtV3tuGyn5BGnFe/9S\nuvHMmJbliW9phZxHgNr6uXYjVu9fch7wVLB3BqsTMZ4DFDJmNogJ8RZN9/aQM2MAwMudtV4cMwYA\nQv09RNNVCp4ZA7CPd6m/GWvWrEFlZaXZtCFDhiA2NpY9swMc7Sf7luhbOyIiAidOnDD9+6677sLW\nrVvh7+8PQRCQlZWFiIiIdiukGIVCAYVCgStXrqCgoAB//vOfrcbpdDrk5+ebTSsoKBDtAzw2Ntbm\nAVZ7vRlNIv1z+nrKUX1VvAs9PwldIrrxQJPtb+4k68x8RL4RNFHIgUZGD4NSej91lwMNjHyk9PTY\nmevVGXnYk0+FXvxCOkirYMa0LE98Qweo3VBVx36FpFGJV+CeCh5XG9k7Q8moWRQyoLGZmQ3yy2tF\n02NCvJkxADCgl2Urkht5ufO40sBer58vXRNND/X3QNlF8RgAiAxSi6azzgkOLedWUlISc1nt6VYZ\nMtKhe6n4+HhotVrTu9pJkybBzc0Ny5cvx7vvvguFQtHhO6ygoAD5+fmoqqpCYWEhXn31VYSEhJja\nLWdmZmLFihWm+Li4OFRWViIjI8M07vTBgweRkJDQoeUkhBBC7OXQnXO/fv3Qr18/078DAgLw3nvv\nobS0FDzPo1evXjYfFbeX+vp6ZGZmorq6Gl5eXrj//vsxadIk8HzL9YZer8elS5fMyjhv3jykp6cj\nOzsbfn5+mDVrFjWjIoQQF9IV7Zy3bduGrVu3Qq/XIzQ0FNOmTbP5dPjYsWN45ZVXLKZ/+OGHFh8l\ni2m3HsJkMpnpI7HOMGjQIAwaNMhm+uzZsy2mRUVFYenSpR1ZLEIIIR2Jc7CHMAfr5v3792PdunWY\nMWMGIiIikJWVhSVLluC9996Dt7ftbw3ee+89eHj89u7fnooZkFg5l5SU2JVpq85670wIIeTW0Nkf\nhGVlZWHUqFEYNmwYgJYhkw8fPoxdu3bh0UcftTmft7c3VCqVQ8sEJFbOjo7NvH79eofmI4QQQrqa\nwWBAaWkpEhMTTdM4jkN0dDROnjwpOu/f/vY3NDU1oWfPnpgwYQIiIyPtWrakynn+/Pl2ZUoIIYR0\nBM7Bx9qOzFNXVwej0Wi1A6uKigqr82i1WiQnJ6N3795oamrCt99+i8WLF+ONN95AaGio5GVLqpxj\nYmIkZ3irkHGAINJZK4+Wdou3IqMgoRGUwDHjpGQDgYPRKB4ou0X3g1QGxvYTJMQAANcs3gzICAFN\njBgAMDBiBHDMGAAQGE27BEg8xtoJaxMKEmIAQOsp/rGtm5xjxrgyDg5+ENZJjamCgoIQFBRk+rdO\np0NlZSW+/vprzJkzR3I+LjtkJCGEkFsPB8faALdWzfZ0mqJWq8HzvNUOrLRareRl39w3iBRUORNC\nCHEZrX1rOzIfYF+nKXK5HOHh4Thy5AgGDhwIABAEAUePHsXDDz8sOZ+ysjK7KnOAKmdCCCHEpoSE\nBKxatQrh4eGmplQNDQ1mHV5VV1ebHll/8803CAgIQEhIiOmdc1FRERYsWGDXcp2ycj5+/Di2bNmC\n0tJS6PV6zJ0713TV0mr9+vXYuXMnrl69isjISCQnJ6N79+6i+R44cAAbNmxAVVUVgoKC8MQTT+Cu\nu+7qyFUhhBDSjjp7POfBgwejrq4OGzZsMHVC8vLLL5vaON/c4ZXBYMDatWtx+fJlKBQK3HbbbVi4\ncCGioqLsWq5TVs4NDQ0IDQ3FyJEjsWzZMov0TZs2Ydu2bZgzZw66deuGzz//HEuWLMHy5cstxnhu\ndeLECbz//vuYPHky7r77buzduxdvvfUW3nzzTYSEhHT0KhFCCGkHnIOVc1vGvYiPj0d8fLzVtJs7\nvHrkkUfwyCOPOL6w/9MO4xS1v5iYGEycOBH33HOP1fTs7GyMHz8eAwYMQK9evTBnzhxUV1fj0KFD\nNvPMzs5GTEwMxowZg6CgIEycOBFhYWHYtm1bR60GIYSQdubYWM6OfeHdlRyunC9fvow1a9Zg7ty5\nmDFjBoqLiwG0tAvLyMjA2bNn262QN6qqqoJer0d0dLRpmkqlQp8+fUQbhZ88edJsHgC48847mQ3J\nCSGEOA8evz3atuuvqwtuJ4fKW1FRgblz52LXrl3w8vJCTU0NDIaWsenUajUKCgo67I5Ur9cDsOyn\nVKPRmNJszXfz13JarVZ0HkIIIaQrOFQ5Z2RkQKFQYPny5fjLX/5ikX733Xfj2LFjbS4cIYQQcqPW\nHsIc+XMlDn0QduzYMSQmJsLX1xd1dXUW6d26dUN1dXWbC2dN693vzY3Aa2pqRLtGs3aXbO1u+kZ5\neXnYt2+f2bTAwEAkJSVB7S6DWGc+chkHrYdMJAJgdGAEoOVxDGPMeEk6Mx+5hLOA5wGlvO1nC88D\nHm7i+Ug5KaWslyBxfyna+Jlle+RhTz49fd1F0z3c/j977x5XVZU+/r/P4XC4yD2EwBsSncw00KxM\nUSz0o6KO+umCqaWW5Oik9fkW376T88mYqWnSqc9kVNNtxqEJia4flXRMU0e8ZN4SFEU7YmMICASC\nCHI5vz/4ecYj5+y9z+HiIZ+3L14vz1rPfvaz9ln7PHutvdbz6FVlQP06exv0RAQZVfV4eihfaINe\nR4DKvQWgokbz9Ynr7TjzEECAj0FVBsDfW71dajIAvkbl6F9Gg56e/uoRwtT6u9bfDGeCenQEOhcT\nX3S3d84u/QQ0Nzfj7e3tsL62ttbhqun2EhYWRlBQEHl5efTr1w9oze18/Phxh6vpoDWEWn5+PklJ\nSdayvLw8TCaTw2Pi4+MddrCahmaaFCIIBvl4UHWhWbEtgb7qPd9TD43qkQrdSk9Ts3oMQm+Djvqm\n9ofv9PHUcaFRWdBTw0OAlna1aLh+RgNcbFKX62wdzuj5V2WDYn2fEC9VGQBPD+XrHBFk5EzVRVU9\nQb7KjiXAx4NzKvcWQA8v5d8grdfn4OlzivVxvQNUZQCG9AlWrPf31lNTr97JzjcoG93T35OzNY2q\nesIDlR9w1O4JHa0PQM4E9egI9Lg25XtNvHOOioriu+++s1vX0tLCzp0725Uusr6+nqKiIoqKigAo\nLS2lqKiI8vJyAJKSkvjss8/Yu3cvP/zwA+np6Vx33XU2q7vT09PJzMy0fk5KSuLgwYOsW7eO4uJi\nsrOzMZvNTJgwwWU7BUEQhK5FprUVmDp1KitWrGDVqlWMHDkSaB0tHz16lE8//ZQffvjB6Wgol2M2\nm0lLS7N+zsjIACAhIYFFixYxdepUGhoaePfddzl//jw333wzzz77rM1ovaKiAr3+388eJpOJJUuW\nkJWVxerVq4mIiCA1NVX2OAuCIAhuh85icS0vy+bNm8nIyKC+vt6m3MvLi3nz5nH33Xd3iIHuSkVt\nYwdMa2t7L9T9prXVT9S109od8/pALfsVdM9p7aLyOsX6a31ae8f35Yr13Xda2/GrSdA2ra1yiTuF\nN3f+wJlz6v3xSiICvFg0om8nWNQ5uHxpExMTueuuu9i/fz8lJSVYLBbCw8MZOnQofn5+HWmjIAiC\nIACtDwUu5XPucEs6l3Y99/j6+nbaijxBEARBuJKujq19tXDJOV+Z29IRVwYKEQRBEIT2IFupFHjs\nscc0yX300UeuqO8WNLdYFLcMtVj0mt69/hzRuopBTU6LGotGuY5A63nU5DrqJ0KvMhTQ0boPXI3v\nK2oV60P8DKoyAHG9lPPVeuh0eHuq70/W8iOqTUalXoMMQKiv8h5vo4deVQbU38nrdTpVmUtySug0\nyAjuj0vO+dFHH21zc7S0tHD27Fm2b99OSEgI99xzT4cYKAiCIAiXcHVbVHd7XnHJOf/Hf/yHw7r/\n/M//ZOnSpbi4CFwQBEEQHHKtvHPu8KApvr6+3H333axdu7ajVQuCIAgCOhf+dTc6ZZeaTqdrV2zt\ngoIC1qxZg9lspqqqitTUVIYNG2at37NnD1999RVms5na2lqWL19uDeWpxK5du8jOzqasrIzIyEhm\nzpzJkCFDXLZTEARB6FoupYx05bjuRIfa29TUxKFDh1i7dq0mZ+mIhoYGoqKimD9/vt36+vp6BgwY\nwKxZszTrPHbsGCtXriQxMZEVK1YwbNgwVqxYwenTp122UxAEQRA6A5dGzrNmzbK7WrKxsTUqTVBQ\nEI888ojLRsXFxREXF+ewfvTo0QCcPXtWs87169cTFxfH5MmTAUhOTubQoUNs2LDB4UOAIAiC4F5c\nK++cXXLOSUlJdp2zn58f4eHh3HbbbZ2WlcpVCgsLrY75ErGxsezdu/cqWSQIgiA4jU7n2p7lbrZc\n2yUPmpycjF6vt0ks4e7Yy91sL8ezIAiC4L7IyNkBFy9e5OGHH2bGjBlMmzatM2xyG3Jzc9mxY4dN\nWXh4OHPnziXAx0MxiIbRoCekh/Ll1ZLIXGvCc3fSY/DUEEhB35q0Qgktm/E8NOjRclNqapfG76u9\nyQD0utakDGqoNUvrd357P+XgIUE+BlUZgEBvtUQTekL91BumFlzFoNfh763eMLXvS68Do3pMFKJ7\n+ijW+xo9VGVa5ZQN8tCrywAYPTrmOqv1Da39Z9WqVZSWltqUjRw5UkI7txOnf0aMRiOBgYEYjcbO\nsKfTsDdKtjeavpz4+HiHHezchWYaFSKEhfQwUHleOXvMdf7qvwzdMStVo0q2KdCWTUqLc9aix2hQ\n985a2qUl4JuXAVSSBqk6Va3ZktQmrrR+59+eUp49ur1fkKoMqEcIC/UzUF6r3jAfFY+pNXtTDy9l\nPUYPuKie3Arz2QuK9dE9fVRlAKLDeijW+xr11F1Ub9e5C8rXUOt17hmgfH20ZKXy0MPcuXNVz9WR\nXI0gJBs2bGDt2rVUVVURFRXFvHnziImJUT3u6NGjpKWl0bdvX15++WWnzunSWGrUqFHk5ubS3Kyh\nZ7sJJpOJ/Px8m7K8vDxMJtNVskgQBEFwFh2tsbWd/XN1r/POnTv54IMPeOCBB6zbdl988UXOnVNO\nE1pXV8cbb7zB4MGDXTqvSxNwJpOJAwcOkJqayt13303Pnj3tjqSHDh3qklH19fWUlJRYP5eWllJU\nVISfnx+hoaHU1tZSXl5u3Uv9448/YrFYCAoKso6E09PTCQkJYebMmUDrIrbnn3+edevWMXToUHJz\nczGbzSxYsMAlGwVBEISup6vfOefk5DB27FgSEhIASElJYf/+/WzZsoWpU6c6PO6dd95h1KhR6HQ6\nlxYeu+ScX3nlFev///73vzuUczXxhdlsJi0tzfo5IyMDgISEBBYtWsTevXt56623rPWvvfYaAPff\nfz/33XcfABUVFTYL1kwmE0uWLCErK4vVq1cTERFBamoqvXv3dslGQRAEoevpymntpqYmzGYz06dP\nv0yPjsGDB1NYWOjwuC1btnD27FmWLFnCp59+6vyJcdE5//rXv3bpZFoZOHCgomMfM2YMY8aMUdSx\nbNmyNmXDhw9n+PDh7TVPEARBuAaoqamhpaWlTfrjwMBAiouL7R5z5swZVq9ezW9/+9t27WjS7JyP\nHDlC7969CQgIUAwQIgiCIAidhQ4dehfeH19659yZq8tbWlpYuXIlDzzwANdffz2Ay0mgNDvntLQ0\nFi9eLMvjBUEQhKtGe6e1nVld7u/vj16vp7q62qa8urra7k6f+vp6zGYzRUVFvP/++0CrwwZ48MEH\n+c1vfsMtt9yi6dzuFcZLEARBEBToygVhBoOB6Oho8vLyrMmXLBYL+fn5TJw4sY28j4+PzZosaN2G\ndfjwYZ566inCwsK0n9t5cwUAg4fy45ter8NTS9SKnyEeWu4CnUY5NTW61qAUXYHGZrU7EpEObSMD\nLdNlWmbUevkrB9DwNuhVZQBKq+sV6/29fFVlQH0/sNZr3Nyiso9er1OVATSEinQxnKSLXFDZnN3c\n4qEq0525tJXKleNcYdKkSbz55ptER0cTExNDTk4ODQ0N1nVPmZmZVFZW8vjjj6PT6dosMr4UF8TZ\nxcfinAVBEATBASNGjKCmpobs7GxrEJKlS5cSEBAAtAazqqio6PDzOuWcX3/9dV5//XVNsjqdjqys\nLJeMEgRBEAR7XI0IYePHj2f8+PF26xYtWqR47P3338/999/v9Dmdcs633norERERTp9EEARBEDqC\n1nfOznvan3Xii4SEhC5ZrV1QUMCaNWswm81UVVWRmppqfRnf3NzM6tWrOXjwIKWlpfj6+jJ48GBm\nzZpFcHCwot5du3aRnZ1NWVkZkZGRzJw5kyFDhnR6ewRBEISO4WqMnK8GbrliqaGhgaioKObPn2+3\n7tSpU9x3330sX76c1NRUzpw5w/LlyxV1Hjt2jJUrV5KYmMiKFSsYNmwYK1as4PTp053VDEEQBKGD\n0dHquJz962a+2T0XhMXFxTkMdOLr68vSpUttyh555BGeffZZKioquO666+wet379euLi4pg8eTLQ\n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\nIj8/32Y7mqv9R7CPbKVygfr6ek6fPk1VVRWbNm0iJiYGo9FIU1MTvr6+ZGZmsm3bNuv7n+uvv57P\nP/+c8+fPExoays6dO1mzZg0tLS08/fTTBAUFUV9fT319PXq93rqVSquecePGERwcTEVFBTk5OeTm\n5vLQQw8RFhamSceXX37JggULuPHGGwkICCAgIIAdO3YQHh5uHRlq0bNu3Tr69u1rff95+vRp3n33\nXWpqakhJScHLy0uznhkzZrBlyxb0ej3BwcEcPHiQTz75hBkzZlh/hLTqmjdvHp999hmjR49uk/Bc\ni479+/djsVjo3bs3BoOBw4cPk5WVRXx8vHVRjFZbEhISaGhoQK/X8/333/P6668TEhLCvHnz0Ol0\ndvV89tln1sVoO3fupKKigsmTJxMYGIivry8tLS188cUX9OrVy7qlpampiUceecS6lSo9PZ2jR49a\n30Vv2rSJqqoq6urqMBgMbN26lV27dvGLX/yC2tpaduzYwcCBA2lubgawjnzV9Hz99dfs2LEDo9HI\n008/jaenp7VvGwwGzfZs2rSJXbt2MWnSJHx9fSkpKWH16tUcP36cuXPnWqe11fTs3LmTb7/9liee\neILevXsTEBDA+vXrufXWW60jRWft8fHxwWw28+c//xlfX18eeughp67z4cOHrbMmvr6+5Obmsn79\nelJSUqyr2bXo2b17N/PmzePDDz9k+vTpdvf/q+nJzc21vrbp168fFouFb7/9ls8//5zJkydbdaan\np3PixAlrfw8JCSErKwsvLy/8/PxYv349u3fvZuHChbKVqoOQlJEucOTIEdLS0tqUJyQksGjRIt58\n803Onj3LsmXLbI7529/+xunTp7nuuusoKSmxOyJdtGiRdZSpRc+lFaQ//fQTvr6+1v2wl6ajtOi4\n77772kzPpqWlERUVZQ1ColXP/v37OXr0KDU1NQQEBDBgwAAefPBB67StM/bs37+fzMxMSkpKCAsL\nY/Lkydxzzz3W47TqCgoK4sUXX+S1115rE5hDi46pU6dy+vRp9uzZw7lz5wgODiY+Pp57773X+iCl\n1RZPT08yMzOprKzEz8+P4cOHM2PGDOtIyp6eL7/8klWrVlk/X+o3l/obQHZ2Nps3b+b8+fPcfPPN\nPProozZtTUtLw9PTk++++86m/RaLBZ1OR58+fbj11lvJycnhSu6//37rqFNNT0REBMXFxXb79rJl\nyxg4cKAmPb1798bX15fy8nLOnTuHv78/N9xwA/fee6+NE9LSrtmzZ9tsfXz88cdJSkqyGfVpscfT\n05OKigrq6uoIDg4mNjaW5ORkG2ek1Z6qqio+//xzKisriYyM5IEHHrDZtqRVT3l5OX/729945513\n7O6T16Jn+vTpHDp0iEOHDlFbW0toaCjjxo1rc3169uxp7W8Au3fvJisri7NnzxIREdHmOgvtQ5yz\nIAiCILgZss9ZEARBENwMcc6CIAiC4GaIcxYEQRAEN0OcsyAIgiC4GeKcBUEQBMHNEOcsCIIgCG6G\nOGdBEARBcDPEOQuCIAiCmyHOWRAEQRDcDHHOgtABHDlyhOTkZI4cOWIte+ONN/jVr351Fa2yxZ6N\n9ti6dSvJycmUl5c7fY7nn3+ep59+2lUT7fKrX/2KN998s0N1CoK7I1mphG7P1q1beeutt6yfDQYD\noaGhxMbGcu+991oTcXQ1Op3OmhDBGT7//HN69+7N7bff3glWdS72YmoLguA84pyFnw3JycmEhYVx\n8eJFjh49ysaNGzlw4ACvvPIKRqOxy+355S9/qZh2zxGff/45w4cP75bOWRCEjkGcs/CzIS4uzpqx\n6J577sHPz4+cnBz27t3LiBEj7B7T0NCAl5dXp9ij1+tdGjkLgiCIcxZ+tgwaNIicnBzKysqAf09/\nL1u2jJ07d/LNN9/Q3NzMX/7yFwAqKyvJysriwIED1NXVcf311zN58mTuvvtuG72VlZW899575OXl\n4e3tTXx8vN1UeW+88QZHjhzhjTfesJZZLBbWr1/P119/zZkzZ/Dx8SE6OpoZM2YQHR1NcnIyANu2\nbWPbtm2AbWrIjrZRK3v37mXTpk2cPHmS2tpaQkJCGDNmDNOnT7f7AGI2m/nrX//KyZMnCQoKYurU\nqYwbN85Gpqmpic8++4zc3FwqKioICAhg5MiRzJgxA4NBfpqEaxu5A4SfLSUlJQD4+fnZlL///vsE\nBARw33330dDQAEB1dTVLly5Fr9czceJEAgICOHDgAH/+85+5cOGCNbftxYsXSUtLo7KykokTJxIc\nHMw///lP8vPz25xfp9O1eQf71ltvsW3bNoYMGUJiYiLNzc0cPXqU48ePEx0dzeLFi3nrrbe48cYb\nGTt2LADh4eGdZqNWtm7dire3N1OmTMHb25v8/Hyys7O5cOECs2fPtpGtra3lD3/4A3fddRcjR45k\n165dvPfee3h6ejJmzBig9SHl5Zdf5tixY4wdO5ZevXrxww8/kJOTQ0lJSYcvKhOE7oY4Z+FnQ11d\nHTU1NTQ2NnL06FE+/fRTjEajTRJ7AH9/f5577jkbx7l69WosFgvLly+nR48eAIwdO5bXXnuNjz/+\nmHHjxuHp6cmmTZsoKSnh//yf/8Odd94JQGJiIqmpqar25efns23bNpKSkpgzZ461fPLkydb/x8fH\n88477xAWFkZ8fLzN8V1hoyOeeOIJPD09rZ/Hjh1Ljx492LhxY5uR7k8//cScOXOsDwtjx45l6dKl\nZGZmMnr0aPR6Pdu3byc/P5+0tDRMJpP12D59+vDuu+9SWFhoUy4I1xryQkz42fC73/2O+fPns3Dh\nQl577TV8fX1JTU0lODjYRi4xMbHNiPabb77htttuo6WlhZqaGutfbGwsdXV1nDx5EoADBw4QHBxs\ndXoARqORxMREVfu++eYbdDod9913n0vt6wobHXG5Y66vr6empoYBAwbQ0NBAcXGxjayHh4d11A+t\nq+fHjh1LdXU1ZrMZgN27d9OrVy8iIiJs2nLLLbcAcPjwYZdtFYSfAzJyFn42zJ8/n4iICPR6PUFB\nQURGRtqV69mzp83nc+fOUVdXx6ZNm9i0aZPdY6qrqwEoLy/n+uuvb1Pv6FyXU1ZWRnBwsHXU6wxd\nZaMjTp8+zerVqzl8+DAXLlywqaurq7P5HBwc3GZ1fEREBNB6DWJiYigpKeHHH39k/vz5im0RhGsV\ncc7Cz4YbbrjBulpbiSsdx6XtTqNGjbK+E72Svn37ttu+9nA1bayrq2PZsmX4+voyY8YMwsLCMBqN\nmM1mPvzwQ5e2i1ksFvr27WszvX851113XXvNFoRujThn4ZonICAAb29vWlpaGDRokKJsaGgop0+f\nblN+5dSuPcLDw/nuu+84f/684ujZXiCPrrLRHocPH6a2tpbU1FQGDBhgLb+04O5KfvrpJy5evGjz\nEHTp3GFhYUDrtTh16pRqWwThWkXeOQvXPHq9njvvvJNvvvmGf/3rX23qz507Z/3/kCFDqKysZPfu\n3dayhoYGNm/erHqeO++8E4vFwscff6wo5+Xl1WaquKtstMelrVIWi8Va1tTUxMaNG+3KNzc329Q1\nNTWxadMmAgICrDMbd911F5WVlXan6C9evGhdRS8I1yoychYEYNasWRw5coRnn32WxMREevfuTW1t\nLWazmcOHD/P+++8DrSuP//GPf5Ceno7ZbCYoKIjt27drCmRyyy23MGrUKNavX8+ZM2eIi4vDYrFQ\nUFDAoEGDGD9+PADR0dHk5eWxbt06QkJCCAsLIyYmpktstMdNN91Ejx49SE9PZ+LEiQBs377dYajO\n4OBg1qxZw9mzZ4mIiGDnzp2cOnWKBQsWWB396NGjrVusDh8+zE033URLSws//vgju3fvZunSpZpe\nUQjCzxVxzoIABAYG8vvf/55PPvmEb7/9lq+++go/Pz/69OnDrP+vfftXbRAI4Dj+6xJBDG7OgQgu\nDr6ACFl9hICLm9nFyc2nEG7Rxd3B6YaseaMs7RaaNtCp9Cjfz3wcxy1fuD/n82PcbrdT3/cyxmjb\nNnmepzzPlWWZhmH4Nu/XgF0uFx0OB1lrNc+zfN/X8XhUkiSPMVVVaRxHLcui+/2uoigUx/GvrfEn\nQRCo6zpN06RlWRQEgfI8V5qmL+fb7/dqmkbGGFlrFYah6rrW6XR62pe2bbWuq67Xq263mzzPUxRF\nKsvy6fHaq//iwH/39v75rAoAAPw57pwBAHAMcQYAwDHEGQAAxxBnAAAcQ5wBAHAMcQYAwDHEGQAA\nxxBnAAAcQ5wBAHAMcQYAwDHEGQAAxxBnAAAc8wH1f9h1jNyo4wAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import confusion_matrix\n", "\n", "cm = confusion_matrix(Y, y_pred)\n", "\n", "def plot_confusion_matrix(cm, Y, title='Confusion matrix', cmap=plt.cm.Blues):\n", " plt.imshow(cm, interpolation='nearest', cmap=cmap,vmin=0.0, vmax=1.0)\n", " plt.title(title)\n", " plt.colorbar()\n", " tick_marks = np.arange(len(np.unique(Y)))\n", " plt.xticks(tick_marks, np.unique(Y))\n", " plt.yticks(tick_marks, np.unique(Y))\n", " plt.tight_layout()\n", " plt.ylabel('True label')\n", " plt.xlabel('Predicted label')\n", "\n", "cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", "plot_confusion_matrix(cm_normalized, Y, title='Normalized confusion matrix')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, so that wasn't the best. I am going to try a neural network instead. I am using this guide to start - https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "all_text = []\n", "for chapter in np.arange(1,19): #18 chapters in ulysses\n", " \n", " #get the book\n", " if chapter < 18: \n", " url = 'http://faculty.georgetown.edu/jod/ulysses/ulys%d.txt' % chapter\n", " else: \n", " url = 'http://faculty.georgetown.edu/jod/ulysses/ulys18dr.txt'\n", " response = requests.get(url)\n", " \n", " all_text.append(response.text)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using Theano backend.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Found 30137 unique tokens.\n" ] } ], "source": [ "from keras.preprocessing.text import Tokenizer\n", "\n", "MAX_SEQUENCE_LENGTH = 1000\n", "MAX_NB_WORDS = 40000\n", "EMBEDDING_DIM = 300\n", "VALIDATION_SPLIT = 0.2\n", "\n", "tokenizer = Tokenizer(nb_words=MAX_NB_WORDS)\n", "\n", "tokenizer.fit_on_texts(all_text)\n", "word_index = tokenizer.word_index\n", "print('Found %s unique tokens.' % len(word_index))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "punct = string.punctuation\n", "\n", "sequences, ch_label = [], []\n", "for chapter in np.arange(1,19): #18 chapters in ulysses\n", " \n", " #get the book\n", " if chapter < 18: \n", " url = 'http://faculty.georgetown.edu/jod/ulysses/ulys%d.txt' % chapter\n", " else: \n", " url = 'http://faculty.georgetown.edu/jod/ulysses/ulys18dr.txt'\n", " response = requests.get(url)\n", " \n", " for sent in sent_tokenize(response.text):\n", " sent_words = []\n", " for token in wordpunct_tokenize(sent):\n", " \n", " # Apply preprocessing to the token\n", " token = token.lower() \n", " token = token.strip() \n", " token = token.strip('_')\n", " token = token.strip('*') \n", "\n", " #remove numbers\n", " if token.isdigit():\n", " continue\n", "\n", " # If punctuation, ignore token and continue\n", " if all(char in punct for char in token):\n", " continue\n", " \n", " if token:\n", " sent_words.append(token)\n", " \n", " if len(sent_words)>0:\n", " sequences.append(tokenizer.texts_to_sequences(sent_words))\n", " ch_label.append(chapter)" ] }, { "cell_type": "code", "execution_count": 155, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape of data tensor: (23038, 1000)\n", "Shape of label tensor: (23038, 18)\n" ] } ], "source": [ "from keras.preprocessing.sequence import pad_sequences\n", "from keras.utils.np_utils import to_categorical\n", "\n", "num_chapters = len(np.unique(ch_label))\n", "\n", "hold_data = np.array([pad_sequences(sent) for sent in sequences])\n", "\n", "data, chapter_label = [],[]\n", "for chapter,sent in zip(ch_label,hold_data):\n", " if np.shape(sent.T)[0] == 1:\n", " hold = np.zeros((1000,))\n", " if len(sent) > 1000: sent = sent[:1000]\n", " hold[-len(sent):] = np.squeeze(sent)\n", " data.append(np.array(hold))\n", " hold = np.zeros((num_chapters,))\n", " hold[chapter-1] = 1\n", " chapter_label.append(hold)\n", " else:\n", " continue\n", "\n", "data = np.array(data)\n", "chapter_label = np.array(chapter_label)\n", "#chapter_label = to_categorical(np.asarray(ch_label)) \n", "\n", "print('Shape of data tensor:', data.shape)\n", "print('Shape of label tensor:', chapter_label.shape)" ] }, { "cell_type": "code", "execution_count": 156, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# split the data into a training set and a validation set\n", "indices = np.arange(data.shape[0])\n", "np.random.shuffle(indices)\n", "data = data[indices]\n", "chapter_label = chapter_label[indices]\n", "nb_validation_samples = int(VALIDATION_SPLIT * data.shape[0])\n", "\n", "x_train = data[:-nb_validation_samples]\n", "y_train = chapter_label[:-nb_validation_samples]\n", "x_val = data[-nb_validation_samples:]\n", "y_val = chapter_label[-nb_validation_samples:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "http://nlp.stanford.edu/projects/glove/" ] }, { "cell_type": "code", "execution_count": 157, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 400000 word vectors.\n" ] } ], "source": [ "import os\n", "\n", "BASE_DIR = '.'\n", "GLOVE_DIR = BASE_DIR + '/glove.6B/'\n", "#I would like to use one of the larger ones given the huge vocab of this book, but i don't have the ram\n", "\n", "embeddings_index = {}\n", "f = open(os.path.join(GLOVE_DIR, 'glove.6B.300d.txt')) \n", "for line in f:\n", " values = line.split()\n", " word = values[0]\n", " coefs = np.asarray(values[1:], dtype='float32')\n", " embeddings_index[word] = coefs\n", "f.close()\n", "\n", "print('Found %s word vectors.' % len(embeddings_index))" ] }, { "cell_type": "code", "execution_count": 158, "metadata": { "collapsed": true }, "outputs": [], "source": [ "embedding_matrix = np.zeros((len(word_index) + 1, EMBEDDING_DIM))\n", "for word, i in word_index.items():\n", " embedding_vector = embeddings_index.get(word)\n", " if embedding_vector is not None:\n", " # words not found in embedding index will be all-zeros.\n", " embedding_matrix[i] = embedding_vector" ] }, { "cell_type": "code", "execution_count": 159, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from keras.layers import Embedding\n", "\n", "embedding_layer = Embedding(len(word_index) + 1,\n", " EMBEDDING_DIM,\n", " weights=[embedding_matrix],\n", " input_length=MAX_SEQUENCE_LENGTH,\n", " trainable=False)" ] }, { "cell_type": "code", "execution_count": 160, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 18431 samples, validate on 4607 samples\n", "Epoch 1/2\n", "18431/18431 [==============================] - 1015s - loss: 2.5881 - acc: 0.1924 - val_loss: 2.5284 - val_acc: 0.1988\n", "Epoch 2/2\n", "18431/18431 [==============================] - 1058s - loss: 2.4116 - acc: 0.2431 - val_loss: 2.3563 - val_acc: 0.2529\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 160, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from keras.layers import Dense, Input, Flatten\n", "from keras.layers import Conv1D, MaxPooling1D\n", "from keras.models import Model\n", "\n", "\n", "sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')\n", "embedded_sequences = embedding_layer(sequence_input)\n", "x = Conv1D(128, 5, activation='relu')(embedded_sequences)\n", "x = MaxPooling1D(5)(x)\n", "x = Conv1D(128, 5, activation='relu')(x)\n", "x = MaxPooling1D(5)(x)\n", "x = Conv1D(128, 5, activation='relu')(x)\n", "x = MaxPooling1D(35)(x) # global max pooling\n", "x = Flatten()(x)\n", "x = Dense(128, activation='relu')(x)\n", "preds = Dense(num_chapters, activation='softmax')(x)\n", "\n", "model = Model(sequence_input, preds)\n", "model.compile(loss='categorical_crossentropy',\n", " optimizer='rmsprop',\n", " metrics=['acc'])\n", "\n", "# happy learning!\n", "model.fit(x_train, y_train, validation_data=(x_val, y_val),\n", " nb_epoch=2, batch_size=128)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 1 }