{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sentiment Analysis using Airline Tweets\n", "Author: Matthew Huh\n", "\n", "## Introduction\n", "\n", "Social media is a treasure trove of textual data. It’s a free and easy way for users to express themselves and share whatever they want to say, get attention, and even start movements. \n", "\n", "It’s a powerful way for companies to get an idea of what users think about them, understand how their brands may be perceived, and identify ways to improve business by analyzing the concerns that users have with their products or services. And that is what I aim to accomplish in this project, by analyzing mentions of a few airlines and determining how people perceive their options, and evaluate what concerns people are mentioning. \n", "\n", "\n", "## About the Data\n", "\n", "The data for this project has been obtained from two sources. The first data set is a collection of data pre-compiled from crowdflower, and is freely available on Kaggle. The second data set has been obtained using Twitter’s API (tweepy to be precise) \n", "\n", "The first data set has far more information as the data has been reviewed by people to determine the sentiment, and the rationale behind negative comments. The tweets have been evaluated by people and for the sake of simplicity, we will be assuming that those results are correct. The data set contains data from February 2015 and only mentions 6 different airlines ('American', 'Delta', 'Southwest', 'US Airways', 'United', 'Virgin America'). \n", "\n", "Our second data set is more recent, November 2018, and has both the same airlines in our training set, but also a few more airlines that aren’t. This is done in order to introduce data that we haven’t trained with yet. In theory, the models developed in this project should be able to do just that.\n", "\n", "## Research Question\n", "\n", "How accurate of a model can we build to determine a tweet's sentiment?\n", "\n", "## Sources\n", "\n", "https://www.kaggle.com/crowdflower/twitter-airline-sentiment (Pre-compiled Kaggle data)\n", "\n", "http://nbviewer.jupyter.org/github/mhuh22/Thinkful/blob/master/Bootcamp/Unit%207/Twitter%20API%20%40Airline%20Tweets.ipynb (Tweepy Script)\n", "\n", "
\n", "Note: The visuals for this project do not render correctly on Github; if you would like to view the presentation the way it was meant to be viewed, please click on the following link.\n", "\n", "http://nbviewer.jupyter.org/github/mhuh22/Portfolio/blob/master/Sentiment%20Analysis%20with%20Airline%20Tweets/Airline%20Sentiment%20Analysis%20using%20Twitter%20Data.ipynb\n", "
\n", "\n", "## Packages" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\mhuh22\\Anaconda3\\lib\\site-packages\\sklearn\\ensemble\\weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n", " from numpy.core.umath_tests import inner1d\n" ] }, { "data": { "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Necessary imports\n", "import os\n", "import time\n", "import timeit\n", "import numpy as np\n", "import pandas as pd\n", "import scipy\n", "import sklearn\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from sklearn.utils import resample\n", "%matplotlib inline\n", "\n", "# Modelling packages\n", "from sklearn import ensemble\n", "from sklearn.feature_selection import chi2, f_classif, SelectKBest \n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import adjusted_rand_score, classification_report, confusion_matrix, silhouette_score\n", "from sklearn.model_selection import cross_val_score, GridSearchCV, train_test_split\n", "from sklearn.neural_network import MLPClassifier\n", "from sklearn.preprocessing import normalize\n", "\n", "# Natural Language processing\n", "import nltk\n", "import re\n", "import spacy\n", "from collections import Counter\n", "from nltk.corpus import stopwords\n", "from nltk.stem import WordNetLemmatizer\n", "from sklearn.datasets import fetch_rcv1\n", "from sklearn.decomposition import NMF, TruncatedSVD, LatentDirichletAllocation as LDA\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.pipeline import make_pipeline\n", "from sklearn.preprocessing import Normalizer\n", "from nltk.corpus import stopwords\n", "from wordcloud import WordCloud, STOPWORDS\n", "\n", "# Clustering packages\n", "import sklearn.cluster as cluster\n", "from sklearn.cluster import KMeans, MeanShift, estimate_bandwidth, SpectralClustering, AffinityPropagation\n", "from scipy.spatial.distance import cdist\n", "\n", "# Plotly packages\n", "import cufflinks as cf\n", "import ipywidgets as widgets\n", "import plotly as py\n", "import plotly.figure_factory as ff\n", "import plotly.graph_objs as go\n", "from plotly import tools\n", "from scipy import special\n", "py.offline.init_notebook_mode(connected=True)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
0570306133677760513neutral1.0000NaNNaNVirgin AmericaNaNcairdinNaN0@VirginAmerica What @dhepburn said.NaN2015-02-24 11:35:52 -0800NaNEastern Time (US & Canada)
1570301130888122368positive0.3486NaN0.0000Virgin AmericaNaNjnardinoNaN0@VirginAmerica plus you've added commercials t...NaN2015-02-24 11:15:59 -0800NaNPacific Time (US & Canada)
2570301083672813571neutral0.6837NaNNaNVirgin AmericaNaNyvonnalynnNaN0@VirginAmerica I didn't today... Must mean I n...NaN2015-02-24 11:15:48 -0800Lets PlayCentral Time (US & Canada)
3570301031407624196negative1.0000Bad Flight0.7033Virgin AmericaNaNjnardinoNaN0@VirginAmerica it's really aggressive to blast...NaN2015-02-24 11:15:36 -0800NaNPacific Time (US & Canada)
4570300817074462722negative1.0000Can't Tell1.0000Virgin AmericaNaNjnardinoNaN0@VirginAmerica and it's a really big bad thing...NaN2015-02-24 11:14:45 -0800NaNPacific Time (US & Canada)
\n", "
" ], "text/plain": [ " tweet_id airline_sentiment airline_sentiment_confidence \\\n", "0 570306133677760513 neutral 1.0000 \n", "1 570301130888122368 positive 0.3486 \n", "2 570301083672813571 neutral 0.6837 \n", "3 570301031407624196 negative 1.0000 \n", "4 570300817074462722 negative 1.0000 \n", "\n", " negativereason negativereason_confidence airline \\\n", "0 NaN NaN Virgin America \n", "1 NaN 0.0000 Virgin America \n", "2 NaN NaN Virgin America \n", "3 Bad Flight 0.7033 Virgin America \n", "4 Can't Tell 1.0000 Virgin America \n", "\n", " airline_sentiment_gold name negativereason_gold retweet_count \\\n", "0 NaN cairdin NaN 0 \n", "1 NaN jnardino NaN 0 \n", "2 NaN yvonnalynn NaN 0 \n", "3 NaN jnardino NaN 0 \n", "4 NaN jnardino NaN 0 \n", "\n", " text tweet_coord \\\n", "0 @VirginAmerica What @dhepburn said. NaN \n", "1 @VirginAmerica plus you've added commercials t... NaN \n", "2 @VirginAmerica I didn't today... Must mean I n... NaN \n", "3 @VirginAmerica it's really aggressive to blast... NaN \n", "4 @VirginAmerica and it's a really big bad thing... NaN \n", "\n", " tweet_created tweet_location user_timezone \n", "0 2015-02-24 11:35:52 -0800 NaN Eastern Time (US & Canada) \n", "1 2015-02-24 11:15:59 -0800 NaN Pacific Time (US & Canada) \n", "2 2015-02-24 11:15:48 -0800 Lets Play Central Time (US & Canada) \n", "3 2015-02-24 11:15:36 -0800 NaN Pacific Time (US & Canada) \n", "4 2015-02-24 11:14:45 -0800 NaN Pacific Time (US & Canada) " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Import the data\n", "tweets = pd.read_csv(\"airline_tweets/Tweets.csv\")\n", "\n", "# Preview the dataset\n", "tweets.head()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(14640, 15)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# View the size of the dataset\n", "tweets.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This dataset has a bit more information than we actually need for this project. We definitely need the text information since that is what we are evaluating, the sentiment since that is what we are trying to measure, and the reason to determine what clusters of complaints people are encountering. As for the rest, they could have some impact on the outcome, but they are not what we are trying to measure so, we'll drop the rest before continuing in order to improve our runtimes." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Condense dataframe to only include what we want\n", "tweets = tweets[['airline_sentiment', 'negativereason', 'airline', 'text']]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['American', 'Delta', 'Southwest', 'US Airways', 'United', 'Virgin America']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print unique airlines in the dataset\n", "sorted(tweets['airline'].unique())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "airline_sentiment 3\n", "negativereason 10\n", "airline 6\n", "text 14427\n", "dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Describe unique occurences for each categorical variable\n", "tweets.nunique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Visualization" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "labels": [ "negative", "neutral", "positive" ], "type": "pie", "uid": "f1ffdb71-7d4c-4c53-995d-d3319f78fc07", "values": [ 9178, 3099, 2363 ] } ], "layout": { "autosize": false, "height": 400, "title": "Tweet Sentiment", "width": 500, "yaxis": { "title": "Number of tweets" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# View distribution of tweets by sentiment \n", "# (Changing colors to red/gray/green would be nice)\n", "trace = go.Pie(labels=tweets['airline_sentiment'].value_counts().index, \n", " values=tweets['airline_sentiment'].value_counts())\n", "\n", "# Create the layout\n", "layout = go.Layout(\n", " title = 'Tweet Sentiment',\n", " height = 400,\n", " width = 500,\n", " autosize = False,\n", " yaxis = dict(title='Number of tweets')\n", ")\n", "\n", "fig = go.Figure(data = [trace], layout = layout)\n", "py.offline.iplot(fig, filename='cufflinks/simple')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the sentiment values in our dataset, it appears as though practically ⅔ of the tweets aren’t too happy about their choice of airline, while only ⅙ mention it in a positive way. We do have to keep in mind that these are tweets, not reviews, so they are mostly a form of expression, or expressing a concern/complaint more so than thinking about the experience as whole. " ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "opacity": 0.7, "text": [ 4220, 2280, 1771, 1269, 915, 852, 837, 698, 240, 134 ], "textposition": "outside", "type": "bar", "uid": "6f6f29de-ce95-4dc3-9ad0-fc8b3c04af42", "x": [ "Customer Service Issue", "Late Flight", "Can't Tell", "Cancelled Flight", "Lost Luggage", "Flight Booking Problems", "Bad Flight", "Flight Attendant Complaints", "longlines", "Damaged Luggage" ], "y": [ 4220, 2280, 1771, 1269, 915, 852, 837, 698, 240, 134 ] } ], "layout": { "title": "Negative Tweets by Reason", "yaxis": { "title": "Number of tweets" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plots the complaint reasons, and their frequency\n", "# (It might be nice to somehow show how common each reason is for each airline)\n", "\n", "# The input is the number of negative tweets by reason\n", "data = [go.Bar(\n", " x = tweets.negativereason.value_counts().index,\n", " y = tweets.negativereason.value_counts(),\n", " opacity = 0.7,\n", " text=tweets.negativereason.value_counts(),\n", " textposition='outside'\n", ")]\n", "\n", "# Create the layout\n", "layout = go.Layout(\n", " title = 'Negative Tweets by Reason',\n", " yaxis = dict(title='Number of tweets')\n", ")\n", "\n", "fig = go.Figure(data = data, layout = layout)\n", "py.offline.iplot(fig, filename='cufflinks/simple')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Out of the 9000 negative tweets in our dataset, the reasons have been distilled into 10 categories, with the most common reason for it has being related to customer service. Let’s take a look at what those complaints look like." ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15 @united @CheerTymeDad So I can buy tix 3 days before flight but can't transfer the tix. Flawed security logic. Flawed customer service\n", "16 @united I did start a claim but 8-10 weeks is unrealistic, am I really supposed to go that long with out a car seat for my child.Ridiculous!\n", "25 @united beginning of Feb I called United they said they would send another voucher by mail. Never got anything. #tiredofwaiting\n", "26 @United the internet is a great thing. I am emailing executives in your company, maybe they will respond to me in a timely manner.\n", "32 @united I am trying to book awards for September and need flights on @aegeanairlines but they will not show even w/ many award seats availab\n", "Name: text, dtype: object" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tweets.loc[tweets['negativereason']=='Customer Service Issue']['text'].head()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgba(200,0,0,.7)" }, "name": "Negative", "type": "bar", "uid": "2422b61d-e296-45e2-9fe1-8056d7805a91", "x": [ "American", "Delta", "Southwest", "US Airways", "United", "Virgin America" ], "y": [ 1960, 955, 1186, 2263, 2633, 181 ] }, { "marker": { "color": "rgba(150,150,150,.7)" }, "name": "Neutral", "type": "bar", "uid": "921d525a-6a78-49cd-b32d-7c2bbfc328a5", "x": [ "American", "Delta", "Southwest", "US Airways", "United", "Virgin America" ], "y": [ 463, 723, 664, 381, 697, 171 ] }, { "marker": { "color": "rgba(0,200,0,.7)" }, "name": "Positive", "type": "bar", "uid": "1b55df28-1606-4f2f-bbb6-d8d6908d3ea1", "x": [ "American", "Delta", "Southwest", "US Airways", "United", "Virgin America" ], "y": [ 336, 544, 570, 269, 492, 152 ] } ], "layout": { "barmode": "group", "title": "Airline Sentiment (Total Tweets)", "yaxis": { "title": "Number of tweets" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Show distribution of texts\n", "\n", "trace1 = go.Bar(\n", " x = sorted(tweets['airline'].unique()),\n", " y = tweets[tweets['airline_sentiment'] == 'negative'].groupby('airline')['airline_sentiment'].value_counts(),\n", " name = 'Negative',\n", " marker = dict(color='rgba(200,0,0,.7)')\n", ")\n", "\n", "trace2 = go.Bar(\n", " x = sorted(tweets['airline'].unique()),\n", " y = tweets[tweets['airline_sentiment'] == 'neutral'].groupby('airline')['airline_sentiment'].value_counts(),\n", " name = 'Neutral',\n", " marker = dict(color='rgba(150,150,150,.7)')\n", ")\n", "\n", "trace3 = go.Bar(\n", " x = sorted(tweets['airline'].unique()),\n", " y = tweets[tweets['airline_sentiment'] == 'positive'].groupby('airline')['airline_sentiment'].value_counts(),\n", " name = 'Positive',\n", " marker = dict(color='rgba(0,200,0,.7)')\n", ")\n", "\n", "data = [trace1, trace2, trace3]\n", "layout = go.Layout(\n", " title = 'Airline Sentiment (Total Tweets)',\n", " barmode='group',\n", " yaxis = dict(title='Number of tweets')\n", ")\n", "\n", "fig = go.Figure(data=data, layout=layout)\n", "py.offline.iplot(fig, filename='stacked-bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "For the above visual, please hover over the bars to see the actual values, and feel free to toggle the sentiment categories on the right.\n", "
\n", "\n", "First impressions say a lot, and the one you might be getting with this chart is that there are a lot of tweets about American, US Airways, and United, and it doesn’t look very good. Granted, they are some of the largest airlines in the world, but it seems like people have just as much to say.\n", "\n", "### Class Imbalance\n", "\n", "Based on the number of total tweets above, we can see that certain airlines don't have the same presence as others, namely Virgin America, which is a much smaller airline than the others in our dataset. In order to fix this issue, I will be upsampling the data so that all of the airlines will have an equal number of tweets and look at the ratio of tweet sentiments rather than the absolute numbers." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "airline\n", "United 3822\n", "US Airways 2913\n", "American 2759\n", "Southwest 2420\n", "Delta 2222\n", "Virgin America 504\n", "dtype: int64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Count # of tweets for each airline\n", "tweets.groupby(['airline']).size().sort_values(ascending = False)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "airline\n", "American 3822\n", "Delta 3822\n", "Southwest 3822\n", "US Airways 3822\n", "United 3822\n", "Virgin America 3822\n", "dtype: int64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create temporary dataframe for all airlines to upsample and concatenate\n", "tweets_united = tweets[tweets.airline=='United']\n", "sample_size = len(tweets[tweets['airline']=='United'])\n", "\n", "# Upsample all other airlines\n", "tweets_usairways = resample(tweets[tweets.airline=='US Airways'], \n", " replace=True, n_samples=sample_size)\n", "tweets_american = resample(tweets[tweets.airline=='American'], \n", " replace=True, n_samples=sample_size)\n", "tweets_southwest = resample(tweets[tweets.airline=='Southwest'], \n", " replace=True, n_samples=sample_size)\n", "tweets_delta = resample(tweets[tweets.airline=='Delta'], \n", " replace=True, n_samples=sample_size)\n", "tweets_virgin = resample(tweets[tweets.airline=='Virgin America'], \n", " replace=True, n_samples=sample_size)\n", "\n", "# Concatenate the individual dataframes\n", "tweets = pd.concat([tweets_united, \n", " tweets_usairways, \n", " tweets_american, \n", " tweets_southwest,\n", " tweets_delta,\n", " tweets_virgin])\n", "\n", "tweets = tweets.reset_index(drop=True)\n", "\n", "# Count # of tweets for each airline to verify\n", "tweets.groupby(['airline']).size()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgba(200,0,0,.7)" }, "name": "Negative", "type": "bar", "uid": "c565e91d-d9d5-45da-9dfb-460cec80b277", "x": [ "American", "Delta", "Southwest", "US Airways", "United", "Virgin America" ], "y": [ 0.7087912087912088, 0.4330193615907902, 0.4869178440607012, 0.7846677132391419, 0.6889063317634746, 0.3555729984301413 ] }, { "marker": { "color": "rgba(150,150,150,.7)" }, "name": "Neutral", "type": "bar", "uid": "d62aac71-c2c9-4c54-a059-43106b6c24bb", "x": [ "American", "Delta", "Southwest", "US Airways", "United", "Virgin America" ], "y": [ 0.1698063840920984, 0.31998953427524857, 0.27341705913134484, 0.12663526949241236, 0.18236525379382523, 0.3362114076399791 ] }, { "marker": { "color": "rgba(0,200,0,.7)" }, "name": "Positive", "type": "bar", "uid": "8d43e555-adee-4c1e-bd86-3660d70a332d", "x": [ "American", "Delta", "Southwest", "US Airways", "United", "Virgin America" ], "y": [ 0.12140240711669283, 0.24699110413396128, 0.23966509680795395, 0.08869701726844584, 0.12872841444270017, 0.3082155939298796 ] } ], "layout": { "barmode": "group", "title": "Airline Sentiment (Percentage)", "yaxis": { "title": "% of tweets" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Show distribution of texts\n", "\n", "trace1 = go.Bar(\n", " x = sorted(tweets['airline'].unique()),\n", " y = (tweets[tweets['airline_sentiment'] == 'negative'].groupby('airline')['airline_sentiment'].value_counts().values) / (tweets['airline'].value_counts().sort_index().values),\n", " name = 'Negative',\n", " marker = dict(color='rgba(200,0,0,.7)')\n", ")\n", "\n", "trace2 = go.Bar(\n", " x = sorted(tweets['airline'].unique()),\n", " y = (tweets[tweets['airline_sentiment'] == 'neutral'].groupby('airline')['airline_sentiment'].value_counts().values) / (tweets['airline'].value_counts().sort_index().values),\n", " name = 'Neutral',\n", " marker = dict(color='rgba(150,150,150,.7)')\n", ")\n", "\n", "trace3 = go.Bar(\n", " x = sorted(tweets['airline'].unique()),\n", " y = (tweets[tweets['airline_sentiment'] == 'positive'].groupby('airline')['airline_sentiment'].value_counts().values) / (tweets['airline'].value_counts().sort_index().values),\n", " name = 'Positive',\n", " marker = dict(color='rgba(0,200,0,.7)')\n", ")\n", "\n", "data = [trace1, trace2, trace3]\n", "layout = go.Layout(\n", " title = 'Airline Sentiment (Percentage)',\n", " barmode='group',\n", " yaxis = dict(title='% of tweets')\n", ")\n", "\n", "fig = go.Figure(data=data, layout=layout)\n", "py.offline.iplot(fig, filename='stacked-bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "For the above visual, please feel free to toggle the sentiment categories on the right.\n", "
\n", "\n", "After balancing the number of tweets for each airline, we can get a better idea of what people think about their choice of airline. Virgin America seems to fare the best with an almost equal number of positive and negative tweets, followed by Delta and Southwest. \n", "\n", "## Text Cleaning\n", "\n", "There’s only so much that you can fit into 140 characters or less (the training set is from 2014, before Twitter updated their character limit), and it’s not as if most of these tweets have as much post-processing put into them as an academic essay, so there are going to be quite a few components that need to be cleaned up before modelling. To keep it short, this is the process for how what needs to happen first\n", "\n", "* Remove special characters\n", "* Remove excess spaces\n", "* Remove stopwords like ‘like’, ‘the’ ‘and’ \n", "* Reduce words to their lemmas (base forms)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def text_cleaner(text):\n", " # Visual inspection identifies a form of punctuation spaCy does not\n", " text = re.sub(r'\\n',' ',text)\n", " text = re.sub(r'\\t',' ',text)\n", " text = re.sub(r'--',' ',text)\n", " text = re.sub(\"[\\[].*?[\\]]\", \"\", text)\n", " text = ' '.join(text.split())\n", " return text" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 @united thanks\n", "1 @united Thanks for taking care of that MR!! Happy customer.\n", "2 @united still no refund or word via DM. Please resolve this issue as your Cancelled Flightled flight was useless to my assistant's trip.\n", "3 @united Delayed due to lack of crew and now delayed again because there's a long line for deicing... Still need to improve service #united\n", "4 @united thanks we filled it out. How's our luck with this? Is it common?\n", "Name: text, dtype: object" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Remove non-essential punctuation from the tweets\n", "pd.options.display.max_colwidth = 200\n", "tweets['text'] = tweets['text'].map(lambda x: text_cleaner(str(x)))\n", "tweets['text'].head()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# Reduce all text to their lemmas\n", "lemmatizer = WordNetLemmatizer()\n", "\n", "for tweet in tweets['text']:\n", " tweet = lemmatizer.lemmatize(tweet)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, the last part before modelling, converting the sentiment from text to numbers. Computers don’t really like working with characters, so we have to remap these values before continuing." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# Modify values of sentiment to numerical values\n", "sentiment = {'negative': -1, 'neutral': 0, 'positive': 1}\n", "tweets['airline_sentiment'] = tweets['airline_sentiment'].map(lambda x: sentiment[x])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Natural Lanuage Processing\n", "\n", "Now that we’ve reached the end of the course, it’s time to pull out all the stops for natural language processing. We’ll be trying out a few methods and combine them to generate the most useful factors for sentiment analysis prediction. We’ll try a few simpler methods like extracting the types of words used in each tweet using spacy, looking at the characteristics of each tweet, and finally extracting the most useful words in the dataset using tf-idf vectorization." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# Identify our predictor (tweets) and outcome (sentiment) variable\n", "X = tweets['text']\n", "y = tweets['airline_sentiment']\n", "\n", "# Instantiating spaCy\n", "nlp = spacy.load('en')\n", "X_words = []\n", "\n", "# Create list of dataframes that we'll combine later\n", "nlp_methods = []" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "# Count parts of speech\n", "\n", "for row in X:\n", " row_doc = nlp(row) # Processing each row for tokens\n", " sent_len = len(row_doc) # Calculating length of each sentence\n", "\n", " advs = 0 # Initializing counts of different parts of speech\n", " verb = 0\n", " noun = 0\n", " adj = 0\n", " \n", " for token in row_doc:\n", " # Identifying each part of speech and adding to counts\n", " if token.pos_ == 'ADV':\n", " advs +=1\n", " elif token.pos_ == 'VERB':\n", " verb +=1\n", " elif token.pos_ == 'NOUN':\n", " noun +=1\n", " elif token.pos_ == 'ADJ':\n", " adj +=1\n", " # Creating a list of all features for each sentence\n", " X_words.append([row_doc, advs, verb, noun, adj, sent_len])\n", "\n", "# Create dataframe with count of adverbs, verbs, nouns, and adjectives\n", "X_count = pd.DataFrame(data=X_words, columns=['BOW', 'ADV', 'VERB', 'NOUN', 'ADJ', 'sent_length'])\n", "\n", "# Change token count to token percentage\n", "for column in X_count.columns[1:5]:\n", " X_count[column] = X_count[column] / X_count['sent_length']\n", "\n", "# Normalize X_count\n", "X_counter = normalize(X_count.drop('BOW',axis=1))\n", "X_counter = pd.DataFrame(data=X_counter)\n", "\n", "nlp_methods.append(X_counter)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# Track tweet composition\n", "\n", "# Create new dataframe to track tweet characteristics\n", "tweet_characteristics = pd.DataFrame()\n", "\n", "# Track characteristics of each tweet\n", "tweet_characteristics['word_count'] = tweets['text'].apply(lambda x: len(str(x).split(\" \")))\n", "tweet_characteristics['char_count'] = tweets['text'].str.len()\n", "tweet_characteristics['stop_count'] = tweets['text'].apply(lambda x: len([x for x in x.split() if x in stopwords.words('english')]))\n", "tweet_characteristics['special_count'] = tweets['text'].apply(lambda x: len([x for x in x.split() if x.startswith('#')]))\n", "\n", "# Preview the tweet characteristics\n", "tweet_characteristics.head()\n", "\n", "nlp_methods.append(pd.DataFrame(normalize(tweet_characteristics)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tf-idf Vectorization\n", "The first types of features that we are going to add are the most useful words in our dataset. Now how are we going to determine which words are deemed the most \"useful\"? With TF-IDF vectorizer, of course.\n", "\n", "TF tracks the term frequency, or how often each word appears in all articles of text, while idf (or Inverse Document Frequency) is a value that places less weight on variables that occur too often and lose their predictive power. Put together, it's a tool that allows us to assign an 'importance' value to each word in the entire dataset based on frequency in each row and throughout the database." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "# Parameters for TF-idf vectorizer\n", "vectorizer = TfidfVectorizer(max_df=0.5, # Throw out words that occur in over half of tweets\n", " min_df=3, # Words need to apper at least 3 times to count\n", " max_features=1200, \n", " stop_words='english', # Ignore stop words\n", " lowercase=True, # Ignore case\n", " use_idf=True, # Penalize frequent words\n", " norm=u'l2',\n", " smooth_idf=True # Add 1 to df in case we have to divide by 0\n", " )\n", "\n", "#Applying the vectorizer\n", "X_tfidf=vectorizer.fit_transform(X)\n", "\n", "#splitting into training and test sets\n", "X_train_tfidf, X_test_tfidf, y_train_tfidf, y_test_tfidf = train_test_split(X_tfidf, y, test_size=0.25, random_state=42)\n", "\n", "#Removes all zeros from the matrix\n", "X_train_tfidf_csr = X_train_tfidf.tocsr()\n", "\n", "#number of paragraphs\n", "n = X_train_tfidf_csr.shape[0]\n", "\n", "#A list of dictionaries, one per paragraph\n", "tfidf_bypara = [{} for _ in range(0,n)]\n", "\n", "#List of features\n", "terms = vectorizer.get_feature_names()\n", "\n", "#for each paragraph, lists the feature words and their tf-idf scores\n", "for i, j in zip(*X_train_tfidf_csr.nonzero()):\n", " tfidf_bypara[i][terms[j]] = X_train_tfidf_csr[i, j]\n", "\n", "# Normalize the dataset \n", "X_norm = normalize(X_train_tfidf)\n", "\n", "# Convert from tf-idf matrix to dataframe\n", "X_normal = pd.DataFrame(data=X_norm.toarray())\n", "\n", "# Append tf-idf vectorizer to our list of nlp methods\n", "nlp_methods.append(X_normal)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "## Creating tf-idf matrix\n", "synopsis_tfidf = vectorizer.fit_transform(tweets['text'])\n", "\n", "# Getting the word list.\n", "terms = vectorizer.get_feature_names()\n", "\n", "# Linking words to topics\n", "def word_topic(tfidf,solution, wordlist):\n", " \n", " # Loading scores for each word on each topic/component.\n", " words_by_topic=tfidf.T * solution\n", "\n", " # Linking the loadings to the words in an easy-to-read way.\n", " components=pd.DataFrame(words_by_topic,index=wordlist)\n", " \n", " return components\n", "\n", "# Extracts the top N words and their loadings for each topic.\n", "def top_words(components, n_top_words):\n", " n_topics = range(components.shape[1])\n", " index= np.repeat(n_topics, n_top_words, axis=0)\n", " topwords=pd.Series(index=index)\n", " for column in range(components.shape[1]):\n", " # Sort the column so that highest loadings are at the top.\n", " sortedwords=components.iloc[:,column].sort_values(ascending=False)\n", " # Choose the N highest loadings.\n", " chosen=sortedwords[:n_top_words]\n", " # Combine loading and index into a string.\n", " chosenlist=chosen.index +\" \"+round(chosen,2).map(str) \n", " topwords.loc[column]=chosenlist\n", " return(topwords)\n", "\n", "# Number of words to look at for each topic.\n", "n_top_words = 200\n", "\n", "# Number of possible outcomes (3 = positive, neutral, negative)\n", "ntopics = tweets['airline_sentiment'].nunique()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# Parameters for LSA\n", "svd= TruncatedSVD(ntopics)\n", "lsa = make_pipeline(svd, Normalizer(copy=False))\n", "\n", "# Time and run LSA model\n", "start_time = timeit.default_timer()\n", "synopsis_lsa = lsa.fit_transform(synopsis_tfidf)\n", "elapsed_lsa = timeit.default_timer() - start_time\n", "\n", "# Extract most common words for LSA\n", "components_lsa = word_topic(synopsis_tfidf, synopsis_lsa, terms)\n", "topwords=pd.DataFrame()\n", "topwords['LSA']=top_words(components_lsa, n_top_words)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# Parameters for NNMF\n", "nmf = NMF(alpha=0.0, \n", " init='nndsvdar', # how starting value are calculated\n", " l1_ratio=0.0, # Sets whether regularization is L2 (0), L1 (1), or a combination (values between 0 and 1)\n", " max_iter=200, # when to stop even if the model is not converging (to prevent running forever)\n", " n_components=ntopics, \n", " random_state=0, \n", " solver='cd', # Use Coordinate Descent to solve\n", " tol=0.0001, # model will stop if tfidf-WH <= tol\n", " verbose=0 # amount of output to give while iterating\n", " )\n", "\n", "# Time and run NNMF model\n", "start_time = timeit.default_timer()\n", "synopsis_nmf = nmf.fit_transform(synopsis_tfidf)\n", "elapsed_nmf = timeit.default_timer() - start_time\n", "\n", "# Extract most common words for NNMF\n", "components_nmf = word_topic(synopsis_tfidf, synopsis_nmf, terms)\n", "topwords['NNMF']=top_words(components_nmf, n_top_words)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Top positive words: \n", "\n", " LSA NNMF\n", "0 flight 863.54 flight 42.82\n", "0 southwestair 824.93 southwestair 30.41\n", "0 united 761.71 americanair 29.94\n", "0 americanair 739.49 united 28.63\n", "0 usairways 687.61 usairways 26.72\n", "0 jetblue 562.68 cancelled 19.22\n", "0 thanks 484.34 thanks 15.63\n", "0 virginamerica 452.83 thank 12.26\n", "0 http 424.11 flightled 12.0\n", "0 just 324.94 help 10.99 \n", "\n", "\n", "Top neutral words: \n", "\n", " LSA NNMF\n", "1 jetblue 755.76 jetblue 83.23\n", "1 http 226.13 http 26.59\n", "1 fleek 105.45 fleek 13.72\n", "1 fleet 103.5 fleet 13.46\n", "1 rt 43.34 thanks 12.68\n", "1 jfk 30.73 thank 10.1\n", "1 love 26.45 flight 9.42\n", "1 wall 22.44 just 5.21\n", "1 blue 21.41 great 5.0\n", "1 ceo 20.18 rt 4.92 \n", "\n", "\n", "Top negative words: \n", "\n", " LSA NNMF\n", "2 virginamerica 749.26 virginamerica 73.34\n", "2 http 192.65 http 21.2\n", "2 love 53.64 thanks 18.15\n", "2 virgin 51.36 flight 10.85\n", "2 website 50.33 flights 5.86\n", "2 site 46.05 love 5.82\n", "2 thanks 45.6 guys 5.53\n", "2 carrieunderwood 44.49 flying 5.37\n", "2 ladygaga 41.73 website 4.89\n", "2 flying 41.38 airline 4.75\n" ] } ], "source": [ "# View top words identified by LSA and NNMF\n", "print('Top positive words: \\n\\n', topwords[:10], '\\n\\n')\n", "print('Top neutral words: \\n\\n', topwords[200:210], '\\n\\n')\n", "print('Top negative words: \\n\\n', topwords[400:410])" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123401230...1190119111921193119411951196119711981199
00.0000000.0000000.2357020.2357020.9428090.1414210.9899490.0000000.0000000.0...0.00.00.00.00.00.00.00.00.00.0
10.0000000.0118310.0177470.0059160.9997550.1668990.9847020.0500700.0000000.0...0.00.00.00.00.00.00.00.00.00.0
20.0014790.0059170.0103540.0044380.9999180.1664700.9843450.0579030.0000000.0...0.00.00.00.00.00.00.00.00.00.0
30.0054860.0096010.0068580.0013720.9999140.1709840.9831590.0641190.0071240.0...0.00.00.00.00.00.00.00.00.00.0
40.0030860.0092580.0061720.0092580.9998900.1904280.9793430.0680100.0000000.0...0.00.00.00.00.00.00.00.00.00.0
\n", "

5 rows × 1209 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 0 1 \\\n", "0 0.000000 0.000000 0.235702 0.235702 0.942809 0.141421 0.989949 \n", "1 0.000000 0.011831 0.017747 0.005916 0.999755 0.166899 0.984702 \n", "2 0.001479 0.005917 0.010354 0.004438 0.999918 0.166470 0.984345 \n", "3 0.005486 0.009601 0.006858 0.001372 0.999914 0.170984 0.983159 \n", "4 0.003086 0.009258 0.006172 0.009258 0.999890 0.190428 0.979343 \n", "\n", " 2 3 0 ... 1190 1191 1192 1193 1194 1195 1196 \\\n", "0 0.000000 0.000000 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "1 0.050070 0.000000 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "2 0.057903 0.000000 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3 0.064119 0.007124 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "4 0.068010 0.000000 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "\n", " 1197 1198 1199 \n", "0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 \n", "2 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 \n", "\n", "[5 rows x 1209 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create final training dataset\n", "X_train = pd.concat(nlp_methods, axis=1)\n", "\n", "# Review the data that we are placing into our models\n", "X_train.head()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Generates a wordcloud of the most common words in negative tweets\n", "df=tweets[tweets['airline_sentiment']==-1]\n", "words = ' '.join(df['text'])\n", "cleaned_word = \" \".join([word for word in words.split()\n", " if 'http' not in word\n", " and not word.startswith('@')\n", " and word != 'RT'\n", " ])\n", "\n", "wordcloud = WordCloud(stopwords=STOPWORDS,\n", " background_color='black',\n", " max_words = 100\n", " ).generate(cleaned_word)\n", "\n", "plt.figure(1,figsize=(12, 12))\n", "plt.imshow(wordcloud)\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Modelling Phase\n", "\n", "So, the tweets have been parsed and prepared for our models. We're trying to determine if it's possible to predict sentiment (a binary variable) so that means that we will require some classification models. As for which models to test, we will be using \n", "* Logistic Regression\n", "* Random Forest Ensemble\n", "* Gradient Boosting Ensemble\n", "* Neural Networks\n", "\n", "These four models differ fundamentally in how they operate, and range from least to most complex, meaning that logistic regression will almost always take the least amount of time, but the latter three will likely be more accurate." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "# Create dataframe to track runtime and scores\n", "models = ['Logistic regression' , 'Random forest', 'Gradient Boosting', 'Neural Networks']\n", "runtime = []\n", "train_score = []\n", "test_score = []" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "def run_model(model):\n", " \n", " # Train the model\n", " train_set = cross_val_score(model, X_train_tfidf, y_train_tfidf, cv=5, n_jobs=-1)\n", " \n", " # Test and time the model\n", " start_time = timeit.default_timer()\n", " test_set = cross_val_score(model, X_test_tfidf, y_test_tfidf, cv=5, n_jobs=-1)\n", " elapsed_time = timeit.default_timer() - start_time\n", " \n", " # Append the scores and runtime to our dataframe\n", " train_score.append(train_set.mean())\n", " test_score.append(test_set.mean())\n", " runtime.append(elapsed_time)\n", " \n", " # Fit the model to the data\n", " model.fit(X_train_tfidf, y_train_tfidf)\n", " \n", " # Store the predicted values in a dataframe\n", " y_pred = model.predict(X_test_tfidf)\n", " \n", " # Print scores and runtime\n", " print(str(model), '\\n\\nTrain score: {:.5f}(+/- {:.2f})\\n'.format(train_set.mean(), train_set.std()*2))\n", " print('Test score: {:.5f}(+/- {:.2f})\\n'.format(test_set.mean(), test_set.std()*2))\n", " print('Runtime:', elapsed_time, 'seconds\\n')\n", " \n", " # Generate and print the confusion matrix\n", " print('Confusion matrix:\\n\\n', confusion_matrix(y_test_tfidf, y_pred))\n", " \n", " # Print the model's statisitcs\n", " print('\\nClassification Report:\\n\\n' + classification_report(y_test_tfidf, y_pred))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, max_iter=100, multi_class='multinomial',\n", " n_jobs=1, penalty='l2', random_state=None, solver='lbfgs',\n", " tol=0.0001, verbose=0, warm_start=False) \n", "\n", "Train score: 0.81918(+/- 0.01)\n", "\n", "Test score: 0.77256(+/- 0.02)\n", "\n", "Runtime: 9.902313456999991 seconds\n", "\n", "Confusion matrix:\n", "\n", " [[2997 223 56]\n", " [ 449 808 99]\n", " [ 155 104 842]]\n", "\n", "Classification Report:\n", "\n", " precision recall f1-score support\n", "\n", " -1 0.83 0.91 0.87 3276\n", " 0 0.71 0.60 0.65 1356\n", " 1 0.84 0.76 0.80 1101\n", "\n", "avg / total 0.81 0.81 0.81 5733\n", "\n" ] } ], "source": [ "f" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RandomForestClassifier(bootstrap=True, class_weight='balanced',\n", " criterion='gini', max_depth=None, max_features='auto',\n", " max_leaf_nodes=None, min_impurity_decrease=0.0,\n", " min_impurity_split=None, min_samples_leaf=1,\n", " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", " n_estimators=60, n_jobs=1, oob_score=True, random_state=None,\n", " verbose=0, warm_start=False) \n", "\n", "Train score: 0.88278(+/- 0.02)\n", "\n", "Test score: 0.79628(+/- 0.03)\n", "\n", "Runtime: 19.516328983999983 seconds\n", "\n", "Confusion matrix:\n", "\n", " [[3099 131 46]\n", " [ 260 1025 71]\n", " [ 109 48 944]]\n", "\n", "Classification Report:\n", "\n", " precision recall f1-score support\n", "\n", " -1 0.89 0.95 0.92 3276\n", " 0 0.85 0.76 0.80 1356\n", " 1 0.89 0.86 0.87 1101\n", "\n", "avg / total 0.88 0.88 0.88 5733\n", "\n" ] } ], "source": [ "# Setting up grid search to return the best results for the random forest model\n", "rfc = ensemble.RandomForestClassifier(n_jobs=-1)\n", "param_grid = {'n_estimators' : [10, 20, 40, 60],\n", " 'class_weight': ['balanced', 'balanced_subsample'],\n", " 'oob_score': [True, False]}\n", "\n", "# Run grid search to find ideal parameters\n", "rfc_grid = GridSearchCV(rfc, param_grid, cv=5, n_jobs=-1)\n", "\n", "# Fit the model to the data\n", "rfc_grid.fit(X_train_tfidf, y_train_tfidf)\n", "\n", "# Run the model with the best parameters\n", "rfc_2 = ensemble.RandomForestClassifier(**rfc_grid.best_params_)\n", "run_model(rfc_2)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GradientBoostingClassifier(criterion='friedman_mse', init=None,\n", " learning_rate=0.1, loss='deviance', max_depth=3,\n", " max_features=None, max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", " min_weight_fraction_leaf=0.0, n_estimators=100,\n", " presort='auto', random_state=None, subsample=1.0, verbose=0,\n", " warm_start=False) \n", "\n", "Train score: 0.75435(+/- 0.01)\n", "\n", "Test score: 0.72929(+/- 0.03)\n", "\n", "Runtime: 27.98217151499989 seconds\n", "\n", "Confusion matrix:\n", "\n", " [[3122 82 72]\n", " [ 735 526 95]\n", " [ 338 99 664]]\n", "\n", "Classification Report:\n", "\n", " precision recall f1-score support\n", "\n", " -1 0.74 0.95 0.84 3276\n", " 0 0.74 0.39 0.51 1356\n", " 1 0.80 0.60 0.69 1101\n", "\n", "avg / total 0.75 0.75 0.73 5733\n", "\n" ] } ], "source": [ "# Gradient Boosting Model\n", "gbc = ensemble.GradientBoostingClassifier()\n", "run_model(gbc)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", " hidden_layer_sizes=(100, 10), learning_rate='constant',\n", " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", " nesterovs_momentum=True, power_t=0.5, random_state=None,\n", " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", " verbose=False, warm_start=False) \n", "\n", "Train score: 0.88162(+/- 0.01)\n", "\n", "Test score: 0.77378(+/- 0.02)\n", "\n", "Runtime: 59.17632372000003 seconds\n", "\n", "Confusion matrix:\n", "\n", " [[3057 151 68]\n", " [ 183 1103 70]\n", " [ 87 63 951]]\n", "\n", "Classification Report:\n", "\n", " precision recall f1-score support\n", "\n", " -1 0.92 0.93 0.93 3276\n", " 0 0.84 0.81 0.83 1356\n", " 1 0.87 0.86 0.87 1101\n", "\n", "avg / total 0.89 0.89 0.89 5733\n", "\n" ] } ], "source": [ "# Neural Network Model\n", "mlp = MLPClassifier(hidden_layer_sizes=(100,10))\n", "run_model(mlp)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Scores: \n", " Model Train_score Test_score Runtime\n", "0 Logistic regression 0.819176 0.772555 9.902313\n", "1 Random forest 0.882784 0.796281 19.516329\n", "2 Gradient Boosting 0.754346 0.729295 27.982172\n", "3 Neural Networks 0.881621 0.773777 59.176324 \n", "\n" ] } ], "source": [ "# Create dataframes for the models and the scores\n", "results = pd.DataFrame({'Model': models,\n", " 'Train_score': train_score,\n", " 'Test_score': test_score,\n", " 'Runtime': runtime})\n", "\n", "# Print out the results\n", "print('Scores: \\n', results, '\\n')" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "name": "Test Score", "type": "bar", "uid": "cc59c46a-c562-450d-9401-a6c186cb0988", "x": [ "Logistic regression", "Random forest", "Gradient Boosting", "Neural Networks" ], "y": [ 0.7725552381082571, 0.7962808542825767, 0.7292947657649036, 0.7737773342628917 ] }, { "name": "Runtime", "type": "bar", "uid": "f946d8c0-83ec-424c-8089-b176e5e05991", "x": [ "Logistic regression", "Random forest", "Gradient Boosting", "Neural Networks" ], "y": [ 9.902313456999991, 19.516328983999983, 27.98217151499989, 59.17632372000003 ] } ], "layout": { "barmode": "group", "title": "Results" } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# (Heavily consider separating the two later)\n", "\n", "trace1 = go.Bar(\n", " x = results.Model,\n", " y = results.Test_score,\n", " name = 'Test Score'\n", ")\n", "\n", "trace2 = go.Bar(\n", " x = results.Model,\n", " y = results.Runtime,\n", " name = 'Runtime'\n", ")\n", "\n", "data = [trace1, trace2]\n", "layout = go.Layout(\n", " title = 'Results',\n", " barmode = 'group'\n", ")\n", "\n", "fig = go.Figure(data=data, layout=layout)\n", "py.offline.iplot(fig, filename='stacked-bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model Comparison\n", "\n", "So, after running all 4 types of models it seems as though logistic regression took the least time, but random forests fared almost as well due to parallelization and forgiving parameters, and is also the most accurate of the 4. While it was prone to overfitting, it still behaves well enough for the training set\n", "\n", "## Clustering\n", "\n", "Now, it's time to determine if we can identify any trends with our data through unsupervised machine learning. The way that we'll be doing that is through clustering, to determine if there are groups of tweet with a similar tf-idf score" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123401230...1190119111921193119411951196119711981199
00.0000000.0000000.2357020.2357020.9428090.1414210.9899490.0000000.0000000.0...0.00.00.00.00.00.00.00.00.00.0
10.0000000.0118310.0177470.0059160.9997550.1668990.9847020.0500700.0000000.0...0.00.00.00.00.00.00.00.00.00.0
20.0014790.0059170.0103540.0044380.9999180.1664700.9843450.0579030.0000000.0...0.00.00.00.00.00.00.00.00.00.0
30.0054860.0096010.0068580.0013720.9999140.1709840.9831590.0641190.0071240.0...0.00.00.00.00.00.00.00.00.00.0
40.0030860.0092580.0061720.0092580.9998900.1904280.9793430.0680100.0000000.0...0.00.00.00.00.00.00.00.00.00.0
\n", "

5 rows × 1209 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 0 1 \\\n", "0 0.000000 0.000000 0.235702 0.235702 0.942809 0.141421 0.989949 \n", "1 0.000000 0.011831 0.017747 0.005916 0.999755 0.166899 0.984702 \n", "2 0.001479 0.005917 0.010354 0.004438 0.999918 0.166470 0.984345 \n", "3 0.005486 0.009601 0.006858 0.001372 0.999914 0.170984 0.983159 \n", "4 0.003086 0.009258 0.006172 0.009258 0.999890 0.190428 0.979343 \n", "\n", " 2 3 0 ... 1190 1191 1192 1193 1194 1195 1196 \\\n", "0 0.000000 0.000000 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "1 0.050070 0.000000 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "2 0.057903 0.000000 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3 0.064119 0.007124 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "4 0.068010 0.000000 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "\n", " 1197 1198 1199 \n", "0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 \n", "2 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 \n", "\n", "[5 rows x 1209 columns]" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.head()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Size of graph\n", "X_train.dropna(inplace=True)\n", "plt.rcParams['figure.figsize'] = [8,5]\n", "\n", "# k means determine k\n", "distortions = []\n", "K = range(1,10)\n", "for k in K:\n", " kmeanModel = KMeans(n_clusters=k).fit(X_train)\n", " kmeanModel.fit(X_train)\n", " distortions.append(sum(np.min(cdist(X_train, kmeanModel.cluster_centers_, 'euclidean'), axis=1)) / X_train_tfidf.shape[0])\n", "\n", "# Plot the elbow\n", "plt.plot(K, distortions, 'bx-')\n", "plt.xlabel('k')\n", "plt.ylabel('Distortion')\n", "plt.title('The Elbow Method showing the optimal k')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col_0012
airline_sentiment
-1769010301220
02132971924
11635896701
\n", "
" ], "text/plain": [ "col_0 0 1 2\n", "airline_sentiment \n", "-1 7690 1030 1220\n", " 0 2132 971 924\n", " 1 1635 896 701" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Calulate predicted values\n", "kmeans = KMeans(n_clusters=3, init='k-means++', random_state=42, n_init=20)\n", "y_pred = kmeans.fit_predict(X_train)\n", "\n", "pd.crosstab(y_train_tfidf, y_pred)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAFpCAYAAACReS/IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3XeYlOX18PHv/Uzb2d7pvSsoIE1ERGwYC7YoltglFmJMNEZ/yWuPMSYaNdHYQuyCXVSwIoiI9N57L9v71Od+/5hl2TKzdXZnd+d8rsvLnaeeAXbOPHc7SmuNEEKI6GVEOgAhhBCRJYlACCGinCQCIYSIcpIIhBAiykkiEEKIKCeJQAghopwkAiGEiHKSCIQQIspJIhBCiCgniUAIIaKcNdIBhJKenq579uwZ6TCEEKJNWb58ebbWOqMh57TaRNCzZ0+WLVsW6TCEEKJNUUrtbug50jQkhBBRThKBEEJEOUkEQggR5SQRCCFElJNEIIQQUU4SgRBCRLmwJAKl1CSl1Gal1Dal1H1B9l+vlMpSSq0q/+/mcNxXCCFE0zV5HoFSygI8D5wF7AOWKqVmaa03VDt0ptZ6WlPvJ4QQIrzC8UQwCtimtd6htfYAM4DJYbiuEEKIFhCORNAF2Fvp9b7ybdVdqpRao5T6QCnVLQz3FUIIEQbhSAQqyDZd7fVnQE+t9QnAt8DrQS+k1FSl1DKl1LKsrKwwhCaEEKIu4UgE+4DK3/C7AgcqH6C1ztFau8tfvgKcFOxCWuuXtdYjtNYjMjIatGaSEEKIRgpHIlgK9FNK9VJK2YEpwKzKByilOlV6eSGwMQz3FUIIEQZNHjWktfYppaYBXwEWYLrWer1S6hFgmdZ6FnCnUupCwAfkAtc39b5CiMgxtWbW5k28t34NptZcetxgLh54HFajft8td+Xn8eqKZczbuYMDJcU19r98znmcOWBguMMWISitqzfntw4jRozQsgy1EK3TtDmf8f3OnZT5vAA4rVZGd+3Gfy+4GKWCdRses/rQQa7++H1Kvd5aj/vu6uvplZYWtpijhVJqudZ6REPOkZnFQogGWX34EN/v3FGRBADKfD6W7N/H4v376jz//837rs4kAHDG2681IUrREJIIhBANsnjfXrymWWN7mdfLz/v21Hqu3zRZf+Rwc4UmGkkSgRCiQZJjYrAblhrbHVYrKU5nrecaShFjbbWFEaOWJAIhRINM6tufYN0AhlJc0L/2Dl6lFJcfPwSHpe5k0DcpqbEhigaSRCCEaJBEh4PXL7qM9NhY4mw24mx2UmJiePWCi0l1xtZ5/n2njOe0Hj2x1zHC6OvrZG3KliKjhoQQjeI3TdYdOYypNUM6dKz30NGj9hcWsqsgj4MFBdw795uK7a+dewHj+/UPd7hRozGjhqSxTgjRKBbD4MSOneo+MIQuiYl0SUyEbnDZ4BPCGJloKGkaEkKIKCeJQAghopwkAiGEiHKSCIQQIspJIhBCiCgniUAIIaKcJAIhhIhykgiEECLKSSIQQogoJ4lACCGinCQCIYSIcpIIhBAiykkiEEKIKCeJQAghopwkAiGEiHKSCIQQIspJIhBCiCgniUAIIaKcJAIhhIhykgiEECLKSSIQQogoJ4lACCGinDXSAQghRChrDh3iyg9nUub3VWy7avAQHpt4dgSjan/kiUAI0SqtPHiAi957u0oSAHhn3VrunP15hKJqnyQRCCFapT9882XIfZ9v24zWugWjad8kEQghWqVdBfm17i90u1ookvZPEoEQolVyWmvvwoy12VsokvZPEoEQolX67aiTQ+5LsNmxWSwtGE37JolACNEq3TR8BJN696mx3aoUi276dQQiar9k+KgQolVSSvHC+RdR6vXy8rLFbMjK4vaRoxjaqUukQ2t3JBEIIVq1WJuNu04eF+kw2rWwNA0ppSYppTYrpbYppe6r5bjLlFJaKTUiHPcVQgjRdE1OBEopC/A8cC5wHHClUuq4IMclAHcCi5t6TyGEEOETjieCUcA2rfUOrbUHmAFMDnLco8CTgAz+FUKIViQciaALsLfS633l2yoopYYB3bTWMi9cCCFamXAkAhVkW8Xcb6WUAfwTuLvOCyk1VSm1TCm1LCsrKwyhCSGEqEs4EsE+oFul112BA5VeJwCDgXlKqV3AGGBWsA5jrfXLWusRWusRGRkZYQhNCCFEXcKRCJYC/ZRSvZRSdmAKMOvoTq11gdY6XWvdU2vdE/gZuFBrvSwM9xZCCNFETU4EWmsfMA34CtgIvKe1Xq+UekQpdWFTry+EaPt8psn6I4fZkZcrq4a2QmGZUKa1ng3MrrbtgRDHTgjHPYUQbcPcnTu455s5eP0mfm3SNSGRly64iF7JKZEOTZSTtYaEEM1mV34e0+Z8Rr7LRYnXg8vnY3teLld9+B5+04x0eKKcJAIhRLOZuX5tjQ98DRR7PPy0b09kghI1SCIQQjSbg0VFeIN889dockpLIxCRCEYSgRCi2Yzv0ZNYq63G9jKvl8cWzOPGTz9i3ZHDEYhMVCaJQAjRbM7rN4BuSUnEVCsio4HcsjLm7d7JFR/MYPWhg5EJUACSCIQQzchhtfLh5Vdx5+ixDExLx2bU/Mgp8/n4648/RCA6cZQkAiFEs4q12bh1xChmXDaFUDMI1mdJ81AkSSIQQrSIWJsNuxG8znBGbFwLRyMqk0QghGgRVsPgVycOxWmtOo/VabUybdSYCEUlQEpVCiFa0D0nj8Pj9/PuujUoFIZS3DlqDJcMOj7SoUU11VrX/RgxYoRetkzWpROiPSrzesktKyMjLg67JXhzkWgcpdRyrXWDygHLE4EQosU5bTa62GrOLxCRIX0EQggR5SQRCCFElJOmISFEs9qem8OLy5ewMTub4zMy+fVJI+mdkhrpsEQlkgiEEE3i9vn4aON6vty+FY/fj1KKVKeTiwceR2qMk2s+fh+P349fazZnZ/PF1s28c8nlnNChY6RDF+UkEQghGs3t83HZ+++yIy+XMp+vyr55O3dit1qqbPdrk1KvycPz5/Lh5Ve1dLgiBEkEQohG+2jj+qBJAKDU56XU5w163prDh5o7NNEA0lkshGi0r3ZsC5oE6hJvtzdDNKKxJBEIIRotNcaJqmW/RSms1VYcjbFaue7EYc0bmGgQSQRCiEa75oShOKyhW5ithsFZvftit1hIsNuxWyyc328A00ad3IJRirpIH4EQotGGd+rMvWNP5W8LF2CoQG0BRWDmsAKenXQ+E3v1Jqu0hD0F+fRISiE9NjbSYYtqJBEIIZrk+qHDuWTQ8aw4eACHJTBKSCk4uWs3YsrLVGbExslS062YJAIhRJMlOhxM6NmrXseWer18vmUTLq8Xi2HQOSGRU3v0rNGXIFqOJAIhRIt5dvEinl38U43tNsPCn089jccXzMdt+mvsX3TDLXRISGyJEKOSpGAhRItYdmB/0CQA4DX9PDh/btAkAHDy/15pztCiniQCIUSLeGrRj006/+F5c8MUiahOEoEQokXklJY26fyvtm8NUySiOkkEQogWcUavPk06f0hmhzBFIqqTRCCEaBF3jRlLXBOqkv3nvAvDGI2oTBKBEKJFOKxWfrpxKr/o258Yi7Vi+Yl0Zyz3nDyOp8+aFPLc/5x7AYYML202UrxeCNFqaK3Zm5/PD7t3sjM3l0uOO57jO3aKdFhtihSvF0K0aUopuqekcE1KSqRDiSqSCIQQUWl/USFfbtuKqU3O7N2XXsnRm3wkEQghQtqVn8dfFszjh9278JsaQylGdunC/xt/OgPTMyIdXqO9u24Nj8yfiybQHPX0ooVMGzWGO0aOiXRoESG9L0KIoLJKSrho5tt8t3MHXtPEROPTJov27eWy999ld35+pENslEPFRTwyfy5uvx+P34/XNHH7/Ty/dDFbcrIjHV5ESCIQIoqYWrO/qJBCt6ti28GiIvYU5FN94Mhrq1dQ5vEEvU6p18vFM99q1libyzc7tqNUzXI6Xr+fOdu2RCCiyAtL05BSahLwLGABXtVaP1Ft/63AHYAfKAamaq03hOPeQoj6+X7XDu7/9msKPW5MrRnesTN5rjJ25eehlCI9NpZnzjmP4Z06k1dWxjtr1+CtZVRhvttN7+eeYkByCnOuvbEF30nzaa2jKJtbk4ePKqUswBbgLGAfsBS4svIHvVIqUWtdWP7zhcDtWuvQg4aR4aNChNPG7Cwue++dOusLx9lsfH/dzdz82cesPXyI+n46XNJ/AIsPHsRn+jm5azdGdOrK8ZmZnNgKh34eLCpi4hv/xe2vusBdjNXKx1dczYC09AhFFh6RGj46Ctimtd5RHsQMYDJQkQiOJoFycVDvf19CiDCYvmJZjQ++YHymyX+WLWZrTnaDfkk/2rK54udPNm/ik82bAEhyOPh0yjV0T0puaMjNplNCAn8+dQKPLZiPqU00YFEGt40Y1eaTQGOFIxF0AfZWer0PGF39IKXUHcDvATswMQz3FULU066CfMx6PP27/X6+27E9bN/UCtxuJs94i5W/nhamK4bH1ScM5bSevZizbQt+U3N2n770TkmNdFgRE45EULPXJcg3fq3188DzSqmrgD8D19W4kFJTgakA3bt3D0NoQggIlI1ce+Qwnno8FewpLAjrvQvcblYfOhi0mSjfVcbLy5fy9fZtJDgc3DB0OBf0Hxi0MzfcuiYmccvwkc1+n7YgHKOG9gHdKr3uChyo5fgZwEXBdmitX9Zaj9Baj8jIaLtjlIVoba47cTjxdjuWSh+whlJYVcsMHNxVEBhq6jNNVh48wIcb1rHu8GEuePctpq9awY78PFYfPsT9333D4wvmt0hM4phwPBEsBfoppXoB+4EpwFWVD1BK9dNaH11M/DxAFhYXogWlxcby2ZRf8czin/hh9y6SHA6uP3EYLr+fd9auZltebtDzDKWwGxZc/to7metyWveefL1tK9O+/ByfaYY8rszn5c21q7jlpBFkxsU36Z6i/pqcCLTWPqXUNOArAsNHp2ut1yulHgGWaa1nAdOUUmcCXiCPIM1CQojm1Skhgb+deU6N7VMGD+GEF/8d9AM6yRHD8qm319j+4LxveW/9unp1QPdKSub6Tz5gTdaResVpt1hYe/gwZ/SWRNBSwjKPQGs9G5hdbdsDlX7+bTjuI4QIvxirjVFdurJ43178lTqU7YaFyQMG1Thea837G9bXKwkA7Cxo2AxkU2sy4uIadI5oGplZLITgyTPPITMunjibHathEGez0S8tjd+ffEqNYzXgrmM+QmNZlKJLQqJUI2thsuicEILOCYnMu+4mvtu5g72F+QxMy+CU7j0wgozeMZTihA4dWX34UNju77RaMbXmuIxMXvjFhS0yakgcI4lACAGAzWJhUt9+9Tr2gfGnM+XDmfhMs8lzDi7sP4DbR44hwe6gU0JCE68mGkMSgRCiQdYePsTlH8yo0p/QWNNGjOb3Y8eFISrRFNJHIIRokF99/EHQJOCwWII2JdXm5pMatCSOaCaSCIQQ9bY5K4tCjzvoPo/fT7Ijpt7XynDGcqCoKFyhiSaQpiEhRAWv38+S/XuZv3sXG44cYfXhg5T4fKQ5YjirT19mbFgX8lwN5LrK6n2vrLJSfvHOG4zo3IU3L7oMh1U+jiJF/uSFEAAs3Lubm2d9HHR+QI7bVWsSgEDzQqg5w1alUBC0vsGyA/v5x6If+dOpExocswgPaRoSQpBbVsrNnwZPAvVlt1hC7vNpXWuRmxnr1jT6vqLpJBEIIfh8y2a8tawBVB+DMxo/CawpCUg0nSQCIQSFbjdNmRHgtFqZNmoMneMbNw/g5K7d6j5INBtJBKLdKXS7KA5RdF0Ed0q37tiM0E07dXH5fAzv1Jkfb5zKExPPpn9qGtZ6DiV1Wq08NOGMRt9bNJ0kAtFubM7J5oJ332TEK/9h+MvPc/VH73GoWIYn1sfQjp04u0+fRp+vgYfnzwXg8sFD+PKa6/nlcUNqPadDXDxjunRlSGYHnvrpR7blZjf6/qJpmly8vrlI8XrREAUuF+Nfe5WiSmPcDaXonJDA99fehMWQ7zx1MbXms82beHLhDxwsKW7UNWZf+SsGZmQCkFNayuhX/xN0JNGZPXuzMSeb/UWFVbbfffIp3DFyDHsLCnh28U8s3r+XjNh4bhsxirP69G1UTNGmMcXr5bdDtAsfb9qA16za4WhqTV6Zix/27IpMUG2MoRSTBw5i4U2/5pULLsJptTb4A+L8d9+sWJk0LTaWH264hR6VCtdblGLqsBH0TEmtkQQAnlq0kE3ZR7jg3Tf5ZPNG9hcVserwQe766gumr1zelLdXYVN2Fg9+/y2/mfM5H2xY12wrqbYlMo9AtAs78/NwBfmF9pl+9haEtwZve5dbVspv5nwe9M+zLiYw+r8vctWQE1m0dw9ev5/JAwZS6PaweP9euiQkMrF3H6bN+SzkNe777mtKvB7MSq0VZT4fT/+8kKuGnECM1daYt4XWmvu/+5r3N6xHl3eMf7F1M39ZMI9PrriGHsnJdVyh/ZJEINqFYR078eHG9ZR6vVW2W5TBYFnbvkHu+nJ2o5LAUYVuNy8uW1LxekN2VsXPG7OzWLB7JzZL6I+evQUFQdcyUih25eczMD1Qz9xnmry8fClvrFlJicfD2G7duX/cafRMTgl63bm7dvDRpg0VSeCoArebO7/8nE+nXNOg99meSNOQaBfO7duf9NhYbJX6AhwWC4MzMxnWsVMEI2tbbvv8E37cu7tZ7+E2TYq9oUd19U9LD7rda/pJjz1WuewP33zJv5f+zJGSEkq8Xr7buYOLZr7NkRD9G+9vWBeyXvKGrCPkldV/eYz2RhKBaBccVisfX341lx8/hFSnk8y4OG4eNoLXLrpUipzUk9vn46sd21vsfsE+fP4wdhx3jByDs9q6Q3aLhdN69CQ9NhaA/UWFfLltS5UnF1NrXD4fr69eGfR+/lomzCmlwrKsdlslTUOi3UhxOnn09DN59PQzIx1Km/TCkp9b9H4m8MD4iczdtZ1kRwx3jR5L79RUAB46bSJ/+XE+PtPEZ5qc0as3T545qeLcrTk52C2WGjOSPX4/qw4dDHq/iwcez/zdu4I+FfROTqlIMtFIEoEQArfPx3+WL23x+56Qmcn1Q4dVvDa15khxMWf37svkAYPYX1xEaoyTpJiqy1t3T0oKuiSGVSn6pqYFvdekvv2YsKkX3+3cXqWXwGm18uy554fl/bRVkgiEELy6chk+3bS1ho6Ktdnw+ny1LjJ31OUfzGBS3/48POEMHp43l8+3ba6y/zejxnDX6LE1zuudksrwjp1ZdnA/nkpPBTaLhRuGDg96L0MpXjp/Mj/v38uba1aRX1bG+B49uWrIUBIdjga+y/ZFJpQJESWK3G7eWLOSXXl5nNqjF+f3H4ChFIv27uHqj99v8vXthoXvrr2BLolJ/OGbOXy4cUO9zrMZBrE2GwXu4AVv/jzuNG4cXnN+VInHw4PzvuPzrZvxmyZ9UlN5fOLZDO/UuUnvo61rzIQySQRCtFFbc3J4ffUK9hQUMLZbd64cfEKNJpSj5u7YztQvPq0yNj/ZEcOcq6/lwnffIqustMnxxNpsfHblr+iVnMI327dx11dfUBaGyVqxVitrb7szZKe/1+/H4/cTZ7c3+V7tQWMSgTQNCdEGzdu1kztmz8Lj9+PXmmUH9vPa6hV8duWvyKg0xBIC35xvmz2rShIAyHe7OOvN/1Fcbe5FY/lNk3RnoMN1Yq/eDMnswJID+5t83VKfD4/fH7KCmc1iwVZLLQRRNxk+KkQbY2rNH7/9kjKfr2LIo8vvI6+sjOeXLq5x/PzdO0OOnw9XEoixWLmg/0ASytvaLYbBmxf/km4JiU2+doLdUWvRG9F0kgiEaGP2FRYEXWbba5p8F2QegNvnb0Klgfo5q1fvGsN2bRYL719+JbFNrEX8wPgJMhekmUnTkBBtTJzNHnLyU0KQdvJTe/TEUKpG01A4fbZtC1NPGkWhx81Ly5ewJSeHOLudc/v2Y+51N7Fk3z7eWLOSlBgnC/fsptQfvO+gct1jq1I8dvqZXHrc4GaLWwRIIhCijUmLjWVEpy4sObCvSpOP02rjhmEn1Tg+PTaWu08+hb//9GOzxnXlRzPxmuaxSV4l8PzSxby1djWzplzD+QMGAvDgvO+YuW4NniDNVZnx8dx3ynguHDCoWWMVVUnTkBBt0LOTzmNAWjpOq414ux27xcIvjzueywYdH/T4iwcex/2njCezWkdyOBV7vTVm+mog3+XirwvmV2y75+Rx9ElNq7Iu1FGHiou566vZPL2oeZOWqEqGjwrRhm3IOsLB4iIGZ3SgQ3x8jf1aax6eP5eZ69dis1gwtcY0Na4QTTPNxQBW3fob4subrlw+Hye9/HzI4aWGUqy/7c6QI4VEaFKYRogoc1xGJmf06hM0CUCgYM/7G9bh9vsp9ngo9XpbPAlAoN3/ucWLKl7vLsjHqKUD2NSabbk5LRCZAEkEQrRrr61aEZZJXeHw6eaNFT+nxMSEHNJacYzT2dwhiXKSCIRox4qCDDONlMoPAJlx8Yzo3CXksR3j4ukchjkIon6kAU6IdsJvmvx76c+8tmoFRR4Pg9IzOKFDBw4UFQZdqbMl2S0WLqo2EujvZ03inDdfo6hakZqUmBg+uvyqlgwv6kkiEFHlUHERm7Oz6ZaURO+U1EiH0yhlXi9bcrJJdcbSLSmpYvtD8+fy4cb1FcVa1mcdYXtuDskxTorc7oj0DQDE2Wz0TE7hN6NOrrL9xlkf1UgCALeNGE3HhISWCk8giUBECb9pcv93X/PZlk3YLRa8psnQjp14+fyLKkaytAVvrl7JEwsXYDEUXr/J4MxMXjxvMlbD4IPyTuHKPKbJ8I6dOKlzFxbu3c0Pu3c1+yzjys7v159LBw2umNR21K78PDZlZwc959nFP3FzkNVG68vUGrfPR4zVKjOS60kSgYgK/1u1gi+2bsbt91d8WK44eIA/z/2GZyad1+Trb8/N4dnFi1h16CDdk5K4Y+QYTu7WvcnXrWzh3t08sfCHKp2/qw8f4tYvPuXB0yZiC1Kxy9SabXm5/Of8ydw8fAR9nnsqrDHV5hd9+/PcuRcE3bczPy/keSVeL9Nmf8bW3BwGZ3bg9hGj6BOi2ExlftPk6Z8X8vrqlbh9PjrGJ/DgaadzZu++jX4P0SIsncVKqUlKqc1KqW1KqfuC7P+9UmqDUmqNUuo7pVSPcNxXiPp6bXXN0TMev58527bibuKoms052Uye+Tazt21hX1EhP+3by02ffcxnWzY16brVvbpiWY334DNN1h05goHCWy0JQGA8/sD0QDH4pQf2hTWe2tw5agx3jx1HodsFBJaK3pKdxcasI/hNkzhb7U9hX27fytbcHGZt3sjkmW+z7sjhOu/52IJ5vLZqBaVeL36t2V9UyJ1ffsGS/S33vtuqJj8RKKUswPPAWcA+YKlSapbWunJVipXACK11qVLqNuBJ4Iqm3luI+gq2SBuAJlDwvCkTl/6+cAFlXm+VJheXz8ejP3zPef0G1DpeviGOlJQE3W6zGHhMP5cdN7hKHwGAw2LhjpFjAPhgw/oWaRbKjI1j+qoVvLx8KW6/H8Wx9YPq6+i6SH6tKfV6eeyHecy4LPRHRonHw4x1a3FX6wdx+Xw8u/gn3r7k8gZGEF3C8UQwCtimtd6htfYAM4DJlQ/QWn+vtT5a+eJnoGsY7itEvY3r1iPoB3L3xKSQxVzqa8WhA0E/YIvcbnLCUPDlqAk9ewVdjtlvagakpfPQaROZOnwkSQ4HCjg+I5PXL7qMgekZAOwtyA9bLLU5UlpCsceDyx9Y9TQc45VWHw5ekP6orNISLEbwhFtbM5QICEcfQRdgb6XX+4DRtRx/EzAnDPcVot7+eMp4Fu7dQ5nPi8fvx6IUdouVx884u8nXzoiNI9/lCrov0R6+Wrg3Dj2JDzesJ9/tqqjT67RaufeUcThtNgDuGjOWu8bUrPEL0CEu+OzjtiDJUXuy7hSfQKjVcjrFJ6K1lo7jWoTjiSDYn27QvxKl1DXACODvIfZPVUotU0oty8rKCkNoQgR0S0ri62uu5+ZhJzG6S1emDD6Bz668hlFdmv5wevvI0TirNS3FWKxcMuj4sK6VkxYbyxdXXctNw05iUHoGp/XoyUvnX8R1JwYv1l6dEfRXtfWzGwZ9UlK4+qP3uf6TD3ln7Wqqr5HmsFq5dcTIGn8PABuzj3DeO29QECJZizAsOqeUOhl4SGt9Tvnr+wG01n+tdtyZwL+A07TWR+q6riw6J9qSl5Yt4bklP2OoQIGY8/sN4C8Tz2o1i6a5fD6Oe+HZSIfRKIqa3yxTY5wsuPEWnFZbxTatNTPXr+UvC+ZRUq3yms0wOK/fAJ4+5xfNH3CERaR4vVLKCmwBzgD2A0uBq7TW6ysdMwz4AJiktd5an+tKIhBtjcvnZX9hIRlxcSTW0ZTR0m785APm7dkd6TDC6rx+A/jXuefX2H78C89R5qtZgtNmWNh0x2/bfRNRRIrXa619SqlpwFeABZiutV6vlHoEWKa1nkWgKSgeeL/8L2GP1vrCpt5biNYkxmqr13j3lpZbVtrukgDAdztrluUE8Ovg3dOhtoswTSjTWs8GZlfb9kCln8+scZIQokU8tWhhpENoFqEaM8b36MncHTswKzUoGUpxSrce7f5poLFaRwOmEKJJ3D4fzy1ZxHvr1+L2+zm9Z29+M2oMf/z2K1Yeqn3oZWvgsFgwlGrQktkTevQMuv2h0yay6tBBSjxeynxenFYrTpuNx06X76OhSIUyIZqZ2+djzrat7MjLoV9aOmf37hv2TuTrPvmAJfv3V0yoOjocsDU2hliUwl991I/Fwqwp13DjrI/ZX1QIBIrXpzhjKXC58JhVZ00n2B0svHFqyHWiij0ePt28kQ1ZRxiUnsHkAYNIcIRvKG9rFpE+AiFEaIeKi7h45jsUedyUer3E2mw8uXABH11xFRlhqh+8MesISw/srzKrtjUmAAjMe0hyxJDvdlXMgHZardw5+mT6paWz4IZbKHK7KHR76JyQgF9r5u7czo979rDmyCGsSnFm777cMnwEliA1j4+Kt9u5esjbPsVXAAAgAElEQVSJLfW22jxJBEI0o//3/Xdkl5ZUfAMu9Xrx+Hw8Ov97ngsy4qUxNmVnh20Zi4Y5+q2+fvd2Wq0MTM9g+oWX8NGm9Xy5bSspTifXnjCMsZUW6EtwxBBntaJ9OzCMzpzdpx9n9+nXDPGLoyQRCNFMtNbM27WjRjOIT2u+2bEtbPfpnpyEqTUp9jLGZB6gxGdj0ZEueE0LgQ/rUHM+m5Y8LJhYDI3HDP4xYjMM7h07nsX791Ls9XB+vwFcWj7J7oahJ3HD0JOCnmfm3ADeYx3cgaeb7qj06ShreFd0FQGSCIRoRkqpoMNbwjl6ZXjHztw8YC23DlyI1ww0l/hMgxt/+AXr89KwKPDq6msUBU8OdsOPzzQwMbAqPz5dvfklcJ7T4mVgcjYrczqFjMtnmuzIz+XlCy6q93sx8+6ukgSO2YPOPhcyfkBZWt8Q3bZOEoEQzUQpxZm9+vDtzu1VCrXbDINz+/YP2320dzV3DFqEzfATYznWqTp9/GwmfH4lPRIK2VmUTJnfis0wy5NFzURgoHn39E/YWpjGqpwO9IgvYFLXHazLS2dtbjoZjjIK/Q6e33ASfxr6EytzMlmd0wGz2ko1MRYvF/XYwvcHezJ353YCCxPXk/vzWnZ60SVvoxLvrP/1RL1IIhCiGT18+hlsyD5CTmkp7vLlrjPj4vnzqRPCd5OCP2JVNWfSWg2T0ZkHeXzEfHYUpzD/YDcSrG7e3n48B8uqloK0YHJxz02cmJbDiWk5XNZrS8W+bvHFnNttFwClPisOw8/FPbdwXEoOX+zti8t/LBEoTJLsbv409CfuPWEJv/v5DMxD/QEnxP0WFX89StW2xFkdoxi9S+v60xCNIMNHhWhmPtPk+5072J6XS7+0NCb06FXriJeG0J7V6NwrCDZOqMRrZUdREkNSc6ps//lwJ2758Vy8poFPW3BYfMRZvcw/722c1prFbaor8xo4rCaGgne2DeLx1WOxKj8aRaLNw/TxX9AvKR9Tw8HSOLrEVaqj4LgQI+UfIa9tHhoY9L1UcF6HkfSnOmOMZhFZa6i5SCIQom5m0TNQ8kLQfVpDsK4IrWF3cSKvbx3MjqJkRqYf5Oq+60lxBC/eU9d1i7w2VuZ0IN7qZWjaYSqXBagZg0KlfxOy09csfApKXwpxZwOV/i3KKuVMaiPzCISINiqW4OtzBk8CR7f3TCjkweE/Ne6W1a6bYPMyvmPwcpA1Y9Bo9wLQJ4KlN8qIrbLXSLwbU3uhbHq182Ih5TVJAs1EngiEaMO0/wA662ygft/mWwcrFZ3V8XdhxN8S9CjT9IF5GEjEsCYEPUbU1JgngvA0VAohIkJZOkPSX2lbD/c+wBv4r/jvmEXPBz3KMKwY1i6SBFqAJAIh2jjDeQEqczHYaqsQ24qVPIs2w1fbWTScJAIhIkh7N2AW3IeZez1m8X/RZnHjLmQeBu+q8AYXTrbaV/7Urm9bKBARjCQCISLELPsCnTMFyj4Bz09Q/Cw650K0WdDga2nXfAJNLq2RAUmP1n6Izm+ZUERQkgiEiACtPVD4AODi2Lh5F/iPoEtea9i1zFwoeQmoew5AZJhQeD8YXULsVyjHuBaNSFQliUCISPBtI/jEKQ+4vm7QpXTx86Ab2aTUUjw/QsorBP3IcUxCWXu3eEjiGEkEQkSCSgAd4hu8kdywa7m+pXU0C9X2cWJi2PpC+lywTwSVBEY3SPgLKvmZFotQBNeWxpwJ0W4oaze0tS/4NlK1SceJiru2gRcLT4GbJkv9BHIvJmgTlXUIAIa1M6S+WOelTPdCcH0H1p6o2CkoFbwSmQgPeSIQIkJUygtg6QXEgooHHBB3PTjObtiFYn8FOMMfYEMV3A3xdwfZYYOUZ+t1Ca3LMLMmQt4NUPYWFD2GPnwipkcmlzYneSIQIkKUpSOkfwG+DWBmge0ElJHaoGto7QFlB+xAWbPEWW/+rYF1j1LehOJXwTwAjtEQ/3sMI75el9D5d4O/+nIVfsi9Ht1hNUpVr6sgwkESgWiVtHczunQ6+HaDfRQq9lqUJT3SYYWdUgpsx9d6jNYavCvBzAXb0Io/B6096NxrwLuZiCeBo3QxuL/HSHulcee7vw+xwwPe5WAf1ejQRGiSCESro90/oPOmEVg/xwTvOnTpTEj/OLCkQhTRvr3ovOvBzAEM0B503M0YCXeB6/PWlQSOcv9YY5PpPwSlbwE2iLsOI2SHeOglqLVZ0sTimiIUSQSiVdFaowv+RGB8/VEe0H500bOo5L9FKrQWp7VG5/0a/Pup8gFZ8j+07QS062taXRIA8O/EPHQC2Iajkp9EF/8Hyt4+tr/k+UrvJh4yvsY4+rRn6RtoYqpBoewja2zVru/RhQ8HmqEAMMBxISQ9gRGmmg/RQP6kROtiHgYz2CxTP3gWtHg4EeXfXjMJAFCGLnkdvNsiEVU9eAEXeH9CZ42rmgRqKIascWhdnviTnwGC9APE3YWq1s9gls1B50+rlAQATHB/AnkNHHkV5SQRiNZFxROyeUAltWgoEWeWQKjOUd92MPe0bDzNxkSXvAuAYesHGfMh5nwwOoF1KKS8hZFwW83Tiv5GIOkE4V2C6c9uvpDbGWkaEq2KMuLRjgngnk+VNfaVE2Kvj1BUEWIbRPAavg7QDV+PqFXzzANuAMCwZELy07UerrUPzIO1X9O7Ciy1L3YnAuSJQLQ6KukJsJ0IxJQ/IdjB+UtU7OWRDq1FKWWHxEeAGI79qjrB0oWQ34TbKmvtI6dqstT9hGgd0Ohwoo08EYhWRxkJqLS30b6d4D8A1oEoS1qkw4oIw3kB2toXXfoO+A+DYwIq9mJ0zhXg2xTp8MJGxU9t2PFKoeNvhaKnCJoULT0wrN3CE1wUkEQgWi1l7QXWXpEOo8VoszgwmcrSCWUc+7arbINQ1ZZx1o5z204iiH8UzP1Q+j/AXW2ngpR3UQ1dXwlQsTcEmoiKn6NKM6JlAKTNaErEUUcSgRARprVGF/0DSt8AZQvMFXBORiU+jFI1f0W1/2BgBm+bYIGSZyHuRlSHVYBGu9aCdz04TsNwNP5bu1IKFT8VHXcT2l8YmMxmScMwYsMXfpSQRCBEhOnSN8onW7lBl39jLpuFVkmoxHtrHl/2GcE7kVsjP+hsKH4S7Z6LSn0bwzkMnMPCdgelLChrCpAStmtGG+ksbmbauwFd8ga6bDZaV38sFtVpfzbasxTtPxTpUFpOyavUnBjmhtLX0TrIUFpdTJvsLPYuB68sHtcayRNBM9Haj87/ffnaKWbgkb/wQUh9C2WT0QzVae1DFz4AZbNAOQLNI44JqOSn2v8SxEEn0AF40b7NKNugKluVYwK65GXazlPBURrtWhh0hrCILHkiaC5lH4N7HoGlEjygS0AXoPNvDywiJqrQJS9D2ecE/qyKADe456OLnox0aM3P0in0viDVyrRlALWtydOqWRq2uqpoGZIImokum0HQdWD82YGlA0RVJW9QdX0hAq9L32v/iTOmlvoDwZoTfRubL5ZmZUU5z490ECKIsCQCpdQkpdRmpdQ2pdR9QfaPV0qtUEr5lFKXheOerZ4OUTpQqdD7opkuCbHDTesow9h8VOxVgC3IHieqPEloXYb2Z2P6DkH+r1s0vvBQkPJig+stiJbR5ESgApUingfOBY4DrlRKHVftsD3A9cA7Tb1fm+G8iMCM0GpUHFj7t3g4rZ49xCgS6wCUCvYh2X4oS2eI/y3HZhArwAnOi8HaHzP/bvThkeisCZBzLuhWuOJoXazjMBzjAzUU3PPQrjloMzfSUYly4egsHgVs01rvAFBKzQAmAxuOHqC13lW+r402bDacir0S7foSvJuAUsAByoJKfgalpEWuOpXwf+jcKaA9BJ4ALIAdlfhghCNrGUb8VLTj1PKhoV5UzCSwDUfnTQXPIiomTGlPbZdpvXwLMAv/ESg/qcs42tGtYy7HSH4ssrGJsCSCLsDeSq/3AaPDcN02TSkHpL4N7h/Qnp/ByEQ5J7fLKlvhoGwDIe0zdMmr4F0Htv6ouJtR1j6RDq1JtGtuoCPcfwQco1Hx01CWLkGPVbZBVUYIaf8B8PxMlVmzbVnpyzW3ud7DLOqKkXBry8cjKoQjEQQrGtSo3j2l1FRgKkD37t2bElOroJQFYk5HxZwe6VDaBGXthkp6ONJhhI1Z8joUPU3FoIGyg2jXN5A+q36V1vwHiIrxHCX/BkkEERWOf2X7gMrzxLsCB0IcWyut9cta6xFa6xEZGRlhCE2IyNDaBcX/pOrIMT/oUnTxi/W7hnsRrbICWdh5gk+cEy0mHE8ES4F+SqlewH5gCnBVGK4rRFBauwKFWYxUVLUx+Np/AF36AZgHUfZTIObssE1I0/4D6MInApXSVAw4r0DF3x78+r5dBH9Y9pU399RxL7MISoI0pbRZitANBUr6zSKsyYlAa+1TSk0DviLQwzdda71eKfUIsExrPUspNRL4mMBiIBcopR7WWjd0AXIhMEvehuK/Eyjk7kXbhqJS/oUyktHun9B5txKYbOVBl80JfJimzkA1cSEybeajsy8uLwhjBoa7lkxH+zahUoJ8wzfSQYdYBiJEs5DW/vIVRRXaf6RJ8bY+tbQW28a3XBgiqLAsMaG1ng3MrrbtgUo/LyXQZCREo2n3Qih6kirNJd4V6LzfQOpr6IK7qToprRR8O9Glb6Limzb2XpfOLB/tUrkJwwXun9C+7TU6tZUlHe0YB+4fqdrZG4OKq7n2vvYsReffCdoF2iQwfyIamksyIeXZSAcR9eR5TLQorX3o0g8wc6Zg5lyBLn0/sKZ8fc4t+S8128y94F2F9iwKMb7eDa7PGh+vWYCZ/zsofpqaM58J1BT2Bq8LoJKeAsdpgB1ULKgESHwA5Rhb7R656LxbwMwpn1hXPeG0Q7ZTIOl5VIf5smx0KyCLzokWo7VG598B7p85+oGuvZvA/Q0kv4RSwdrUKzFDNJcoW/laTqGK3geZ2FffeHOvBd82QjdtmGDtEfy2Rhwq5Xm0mQdmLtroiPL8iC7+N1h6Huu/KPsidOztlXcZWH6LLnwcjQsVcw7YT63734BoFpIIRMvxLi/vKK38zb0MPIsD++wjaj/fPg58O6m5BLMf5RiPtnQtX8ep0oe2cpYv4dCYeFeAf3eQ+x1lA0s/lG1wrZdRRgoaDTkXoc1s0KWBJ4SiJyHtPbSZQ9CnjXbNDbnHalDrsk/BcQYkPyPJIAKkaUi0HM/S4IuoaXdgXx1U3M1gJFJ1XR4nxN+DUk5UyvOBTloVF9iOA2ImQcxFjYvXt6u2aMBxFip1er0upQufAP/+8qYfHfi/mYUueABlHxVIDFHNA+654FkY6UCikjwRNBOtdfk3P0fQcoNRyUgprzVQrS1fOQL76qAs6ZA2KzD72L0ALJmB2ceOcYH91l6QMR88PwZWebUPR1l7Nz5eW3+CNwnFQPzvMOJvqP+13F9Tc/E8P3gWoJNfANtQ8K5sm+sIhY0b7fqq4u9TtBz5hGoG2v0juvDB8pmhNrTzMlTife2/wEpdYn4BRX8LssMI7KsHZclAJd4P3B98v7KCY0KjQ6zCOhisx4N3LceKrhtgxKFifxmeexCovUvKK4H5D66PAAvEXAilr4F/L+AP271avah/MooMaRoKM+1dh867vdIvsAvKPkAX/F+kQ4s4ZSSiUqaDkVE+iiYWjAxUyn9RRmKd52szH7PkdcyCx9Bln6ObeQE2pRQq9b8QOwVUIhATaA5K+whlxDfsYjHnUPN7lwUc4wM1d5UNI+5KjLT3MdJmYMRdhUr/ApKeAttIAk1d0N5/ZZXz4lr3m6aJabbvZckjQbXWoh8jRozQy5a1vfqmZt5vypsBqv+5OlCZ82U9dggsJ3C0uIp1UL1mlWrvRnTuNeWTtFxALFg6otLeq1cSiTRt5qFzpgRGPukyUE5QiYH4LR3qdw3tReffDe4vmznaCHGcixFiToHpOwJ514B/V/mWWHBeiLKPAMfEhifmdkwptVxrXcfIi6qkaSjcQg01VLZAZ6EkgsAHv61hE8t1/j3lJSyPKgX/XnTxC6jEGrWQWh1lpED6F4Hypb6tYO0JjjMqmgu1ZwW66Onyfd1R8b+t0VaulA2cF6PbYiJIeAQjbkqglnfhP6BsOsd+TxTE3oBR299jziTQxZU2lELZDHTZJ6AMSHlFaiE3gTwRhJlZ8MdAAfYa7boOVOZPKCMhEmG1adqfHSjKEmw5ZqMDRuaClg4prLRnCTr3ZqoOIY2BpL9jOM+pcqzp2QK5bbHcox2j47qKV1qbaLMEcINKxTCqPhWargVQ+H/lc0cs1FmlTiWgMhdJPxyNeyJo3w2OEaDibguMgqnCCbHXSBJoLGUh9ISulqtepl1fYmafj3l4JGbu9Wjv2vBct/AJgtZrLvprRb1m0/UN5pHT22gSAPBgHjkX07MSCDwVGpYEDEt6zSRQNg/ybwLzMIG/9/r0Ceh6DUEWwUkiCDNl7YlKnQH2seWdoZ0h4W5Uwr2RDq3NUkYK2AZT859rDMRe2ujrau1D+4/Uq9PZLHkbnf9H8G0JLDzn+Qmdcw3au77R96/g2xripocAD2bJW5A/Dcz9Tb9XJJnbIXcKpuu7Gru0exFm3m2Yh8+EgpprMdVLW63e1gpIH0EzULaBqNTXIh1Gu6KSnw50tupi0D7AAPtQVNwtjbqeWfJuYP0g7QIUOvZKVMIfgs750NoXpLYAQBm66OnAyKKKYz3gmhNY+8johIr9Zd1FaCzpgf6j6lQcWlM+5LZ1NuE2nIaC+9GOnysGCZgl/4Wi52hS7QXtB3vUF0ZsNEkEok1Qli6QMRfcPwQ+NG0ngO3ERi1HoF1fQdFfqdIcU/ouGgOV+MeaJ5jZob9t+o49EWizGJ17RfkM4lLAhi6ZDikvoRxjQgcUdwcUPVptMpkT4m5C+Xej29s8Al0EZhZYOqDNQih6hmPzNBrKBlgg6fEmLzUezSQRiDZDKRvEnNHk6+jifxO0Tb70HXTC72p2OBophPxGbhyrP6xLXwPfHo59qHkBb2B57IwFIYfJKuelaF0Ixc8HEo4yIPYGVNytYOaGvndbpsqHe3rXlC8aWM9EkLkSpWLB8zPa/X1gCK5zMsrare5zRUiSCET08R8MtQPMIrCkVdmqlAMdOwVKZ1I1gThR8dOOvSz7gqDfbHUJ+HeAtW/QuyqlUHE3omN/BWYeGMnHkpElHW0fWa+qZm2G4wyUERf42UimIUtuG0fPc5yMcpwc/tiilHQWi+gTag6Digu55pFK+CPEXgnEEKgvkBKoLRBzeqWDQix3rc3y82qnlA1lyazxRKKSnwdL/zrPbxMsAyFu6rEaxdbjwcis57mnNl9cUU4SgYg6KuEean4wx0DCvaGbb5QVI/F+VIdlqIz5qMxFGNVHLMVeybGlII4ywNoTZW18gT5lJGBkfA6xd9PmH+L9myD3avSRUZiueYGnoZTpx5qKamOGGF0lmkwSgYg6yjYElfY22E8JfLO3Ho9KfqbmB3uwc5UdZUkLmjCU8zKIORtwAM7yJ4wMVPK/wxK3kfhrVOYiMNp61Vc36ELIn4pZ/FogSSY8Uo/z5OOqubTxrxdCNI6yDUGl/i+811QGKvnvaN+t4FkFlgywjw3rMuTKSIKkx9F5NxG6YE4bUvwk2nEyynkWutBKrZPH4m9usbCijaRYIcJMWfugYi9FOcbXKwlorTFL3sHMmoh5eBhm7g2BEp6hru8Yg0p5CSx9AQNUEtBWl1bwoUtnopQDkl8i5EeS0Qsj7poWjSyaSCIQIsJ00VOBSWP+fYERRp6F6NwpaN+OkOcoxziMjNmozGUQeyNB12FqK8xsAIyYU1GZSyDudrAOBZUJln6Q9DRG5lcRDrJ9k6YhISJIm8VQ+jo1hp1qN7r4RVTyk7WcW4TOubiW4bBthH1CxY/KSEQl3AUJd0UunigkTwRCRJJ/T2BCVc0dgclWtdClb4L/MA3pK9Aa/K2trkvxU5hmO+jvaMMkEQgRSZaOIZavUIGaBbVxfUddSzN4XIEP/7ISg3/e05ULeg/hvB4n8Nvz+rJ9Xd1zG1qEzoLiZyIdRVSTpiEhIkgZqeiYc8H1FVVnLTsCS5rXJsTkN4Ccw1YevbkHm1fF0a1v4Lr7dzrweQLf/TatjOXuS/ryyrzNZHRuBd/GXZ+SVXgjq75fR1xSLCPOGYrd0XJLjEc7SQStkNaaNfM3sPzb1SSmJnD6leNI6xT6l160bSrpL2iVAGUfAL5ACc7EB1H2E2s/L+46tGcp1VftXPtzHPdc0ufoUezeXH2SW2C7162Y9b80bvrToSa/h5U/xvHqo50pKbIwcFgpV911mO79an9aObLfxvP/15ll8xLxeRVwa5X9f5/7EEMnNKySnWgcqVDWyvj9fh6+9B+s/G4trhI39hgbyjB48MN7GHnO0EiHJ5qR1r7Astgqrt6rqprFL1N88N/YbC7sDigrUVwyYEhg+WrqvsaI0wv5y9s764gL0OD3g8UKJUUGcQkmR0Nc8EUif5vWA69bAQrDMLHHaJ76eBt9h1Rf3C9g7zYHt57Zr/wJJXScj8/5k/y7byCpWdwOzJ/5U0USAPC4Ao/tf5nyT94//Co2uzwu12b/toN88NRnbFu5k37De/PLey6kU+/6FYePNKWs9VtqodymJVt5YPIS8g4PQClNp55uDuyyly9WWp9Eouk50IXWgQ97pcA0wVViMOfdVMZOKiA5zc/BPTbuv6IPBTlWAhdXnHpBPpfffgSLDZ7+XXe87mPdjaZp4CrV/OHSPlhtmj5Dyrjrb/vo2ONYE9RLD3eqMwkAPHDRE3yS+zoOZ/WqfyKc5Imglblv0mMs/3p1je2xiU4e+fSPnHiaPCqHsnnZdu6Z+BBelwe/z8RitWCPsfH0/EfoO6xXpMMLq/zsAi7veAvabMjvb+BDvDKrzWTipbk44zQbl8eSc8hOfrYVvx/iEvz0GuRi3eK4Guc17H4apeDcq3Po0NXL2EkFTJvUD7fLUucVlAGPfnofo887qRH3j07yRNAOWCwhBnLpWvYJAP417VVcxceaIvw+P2XFfv5953SeWfBoBCMLv+duf7WBSQCCfZj7vAZfz0gPenRJoZV1i+v/hBL6fgqtNbPfCizv/frfO6JU/WK32q34vO2sME8rJJ8srcykGycSE1fzMdhqtzJoTDtZirgZaK3ZsnR70H0bf97SwtE0vxXf1D7HoPVRFf+ZfoXfV7+PHkMZDDtjSLNGJuSJICIKsgv55s35HNqZxZBxAxl70ciKtv9xl4zm58+XM//9nzB9Jha7BYXi4Y//gMVa96N0tFJKERPvoKyoZudkbEKwUTNtm6u0saUd25bfv3prWP/+9m05wPJv1hCb6KTfSb1ZM28DhsVg7OQRpHaM3pF50kfQwjYv2869ZzyM3+fHXebBGR9DZo8Mnl34GHGJx2qubl+9i5XfrSUhNZ5xl4yusk8E9/K9bzDr+a9wlx2boOVw2rnkrvO48S9XRTCy8Lui61RyD+RFOowmsztt9D6hBzvX7cFdEvh7U1a47sErmHjVqXTqFZ6Ofq01L93zOp+9+A1ojTY1Xo8Pm92KYTXQpua3L07l7GsnhOV+kSR9BK2c1ponrnmW0qJj477Lil0c2HaIGU98wk2PH/uw6nNiT/qc2DMCUbZdNzx2JUf25rDo06XYHDY8Li+nXDyKax+6PNKhNUlJYSnFeSWkd03FYrHgKnUxfOJgvn1rQaRDazK/zyT3YD7PLXyc3if0qPN4n9fHjx8tZvEXK0jukMS5N51B94GV6kZrzaGdR7A5rKR3OVZydMW3a/ji5W/xlFWdxe31+CrW63v21pc56awTo3LOjjwRtKCsfTlc3/83FUNCK+vQM4O3drwQgajan6x9OezfepCu/TtV+TBoa8pKXDx9y4ss/HgJhkVhd9rp2DOTrctDr0raVtmdduKT4zD9fk69dAzXPzqFxNSEKsd43F7uOf0hdq7dg6vEhcVqwWqzcM/025lwxSms/2kzf736WfKzCjBNTY9BXXng/bvp1LsDf77gryz+YkWtMTicdn79j2u54LZzmvOtNjt5ImjlLFaDUHnXapO/inDJ6JpGRte2mwCO+tu1/2LpnJV43YEvDu5SD0U5xRGOqnl4yjzkln9bn/PfuSz/ejWvrPtnlWUmvn5tHjvW7MZd3j/i9/nx+/w8fcuLDBzVl/vOeQxXybE+ou2rd/G70x7gja3/YsW3a+uMQWuN32eG+Z21DTJqqAWldkyh15BuKKPqMD6H084vbj4jQlGJpijKK2bX+r2UlQSfQdtYeUcKWDJ7ZdCnx/bO5/GRd7iABR/8XGX7vJkLK5JAZcpQvPPXjzH9VYeZalNTWljKjL99gs9XvyVXx1wQnfMVwpIIlFKTlFKblVLblFL3BdnvUErNLN+/WCnVMxz3bYv+POP3pHZMxpkQgz3GRkycgyHjj+Pi3/4i0qGJBvB6vPzjphe4ovNU7hz7J37Z4WbefOR9wtXUmnMgF5sjep8Sy4pdbFxcddivMz74aqna1BRmFwVNmqbf5OCOI2h/3X8v1z0yhY49MxsXcBvX5H9pSikL8DxwFrAPWKqUmqW13lDpsJuAPK11X6XUFOBvwBVNvXdb1Kl3B97a+QJLZq8ka18OA0f1ZcDIvpEOq1U5vDuL4vwSehzXNaJNZrmH8ti7+QBd+nas0dfw0j1vMG/GQrxub0XTzcwnPyW9Syrn3lT7053Wml3r9uBxeek7rFfQYcFxic4qo5+ijSPWTpd+napsO//XZ7Hq+3UVy68cFZ8cx6mXjWH5t2uqTCg8atwlo/j2rfnlS28El5yZxOX3XBiW2NuicPyWjQK2aa13ACilZgCTgcqJYDLwUPnPHwD/Vkop3Vp7qpvI4/Lw7hMf8+X07/H7Ap1f1z18eUXnlzf+D3kAACAASURBVNVmZezkkRGOsvXJPpDLw5f+gx2rd2GxWbBYLNz14lROu3xsi8bh9/n5569fYu47P2KPseF1exl9/knc9+ad7N96kO2rd/HFK9/ic1dtbnCXupn5t09qTQS71u/lgclPkHe4AMMwsFgt3PfWnYw6d1iVY+4c+3+Y/uhsr4bA78iZ14yvsm3UL4Zz4e3n8Mm/5mCxWlCGwuaw8Zcv7qfrgM68+9ePObDtUEVidsTaGXHOUE6ZPIpR5w5jyeyVIe9372t3NOv7ae2aPGpIKXUZMElrfXP5618Bo7XW0yods678mH3lr7eXH5Md6rptddSQ1po/nPkwGxdtqXhUtdqtZHZP55U1T2GPaatFxpvX5mXb+cMZD1NWVHVJZUesnWcWPNaiawW99dgHzHjiY9ylx76R22JspGQmUZBViGExKAvyzRMgNjGWT/NfD7rP6/FyZbdbKcgqrLGv7/DeWG0W/F4/21btbMTyEW1cebeZ1Wqh5+Du3PvaHfQaEnw46ZG92ayZv4GE1HhOOuuEiqfG0qIy3vv7p3z/7kLsMTZ+MfVMLrztHCxWC6Zp8vQtL/LV/76vcq30bmnc+9o0hp0+uFnfXkuK1KihYKtRVf9XXJ9jUEpNBaYCdO/evemRRcDGxVvZvGRblfZKn8dH3qF8fvjg5xrfcgSs+n4d/3fe43iDtPF6XV4+fm42f/hfy31j+/Tfc6okgaNxHNkT8ntLhUGjQzfzLf1yVdD3CPz/9s47PKqii8PvbN8UEiD0DgIC0ouKgkhTsKEgHQQEFUREPgUEC8UGIiiKBURFEAQs2OlVBCFAAJESQif0nrZ1vj92iYTdTd0km+y8z7MPu/fO3PvLZfeeO3POnMPB7YUvJDRLSDCY9Ezf9FaG62dKVojy+jsKCTfTb0J3+k3o7rFPo9Hw4uwhPPfRk8TFHCG8WBgVapbzaBes+MNZfAKocMPn8kC8rzZCCB0QAVy8+UBSyplSyiZSyiYlSpTwg7S8J3bbIZxeHFPenF8KFzOe/8LnDdLplJm6AXsjJcnC8jlr+WLsfNYt+gubNXMROIlXkjNu5IOeYzv73Hfl3NWgnu7JCJ1Bl+tRUkazkdp31lRG4Cb8MSLYClQXQlQBTgLdgZvX8/8MPAFsAroAqwurf6B05RJo9dq0VQdxO79ucTm/7DY7axZsZM23f2IMMdJxUNugLb7hdDo58s9xn/uNZgNNO2T92pw+cpZhd44hOTGFlAQL5jATs8fM58PNbxERVSTdvnWa1yBmzZ4sn9Ng0nMw5jAVa5VDp9cRFhmaZv9td9+K1RJ84aCZxWF3Uvm2Chk3VPidHI8IpJR2YCiwDNgLLJJS7hFCTBBCXHfDzwaKCyEOAiMAjxDTwkKT+xoQXiwUzU0po3V6HW37tMThcPDy/W8y/dlZbF0aw58//M2ELlP4fPQ8rClW5k5YTO+qQ+hZ8Rk+f3lemnQUhRGNRkNohO88ShElivDAoLZZPu57Az/hyrmrpCS4IkySE1I4d/w8M0fOzbDv4Gn9MYeZspzkz5piY+74xfSo8AyPlx7IS23GcT7+v4Hv6cNnyWThsaBDb9LTb2J3zKHeQ0QVuYtKMZELnDl2jpFtxxN/8AwAoREhjJk/nGYdGvLXT1t5u890jzA3vVFHtfqVObTraOrwWG/UU75GGT7ZNrlQZR6VUhKz5h82/RJNaEQI1y4msPSLNWkWCwkhqNeqNq8t/p9HqoGMsNvsPBDSy+s0TEi4mZ+ufJ3hMU4dOsOiKT8TvSyG04fPZun819FoNZSuXIIv909Ho9HwZs/3Wfvtxmwdq7BTpmpJuo55hJ1r9vLQoLbUa6kKMGUXlWIiQFg4aQkX4i+nfk6+lsw7faYze880Nv0a7TXW2WaxcyA6DucN0SI2i43Th8+y6Zdo7n709jzRnts4nU7e6DaNrUt3kJJocYeJaqjZ7Bb2bo5F547wePjZ+xk0qTcaTTYHrT6evG9e1e2LIlFhxKzezaUzlzNu7AOnw8mls1fYujSGqHLFPCKiFP9x6tBZPhg4C4C13/wJwIwdk6lRv3BVlgtUVIoJP3Px9CWPp1unU5KSmMKP038noni4z6d7p5eQweSEFPZtOZhrevOazb9uSzUCAA6bA2uKjd3r96I3aHFKJyUqRFGsTFGerPMCj0X159VHJnH0X99+hJvR6XU0aV/fc3rOoOPeHnel2zclycLvn6+kW9mnOXHglEf0UFaxWeyM6/wuI+55jW3Ld6qpoSzwbMOR2G2ZSw2RE+LjTvNIZB/aaR6nneZx2mu7snDyklw/byChDIGfObz7GAaTZ4F5m8XOynnrcdgdWSo5aQoxUqpSwYyg8saaBRs9VoZeJznBgjXZxsmDp5g1ci4n9sdz7WICf/8azXN3juHkwVMZHv/UoTO80/dDDu444srYadKj1Wkxh5moULMsA9/u5bPvd9N+pUvJAUx76jOvOW2yg91qx26xk3Q1GbvN4TPpoMI7A+uOwGHPvVKVKckWnqj+HElX/xulSyn5fPQ3LPtqTTo9CxfKEPgZU5iJxKtJXvedO36BJR8txeFwZroWuM6go/VNT7FH957g7d7TGVB7OOO7TOHgjsM5lZ0nSCmJjzudiYakWVAlpSvz5oK3f0y32+kjZxnceCRr5m/g4qlL2K0OpJQ0ua8+ry4awac73iU0ItRr302/RPPVq99magSgM6gZ1bwiPu40f/64JdeOP/vlb3zu+3Do7Fw7b6ChDIGfmTVybro5TexWu+sJx0cboRFodVr0Rj1V6lZk6rrxaW5e+6PjGNpsNGu//ZPj+06y8cctDG/xCjtWZ5xmN79ZNOVnYrO5cMrpcPLvX/s5e+wc8yZ+x0fDZrPpl2gcN2ScnP/WD6QkptzkZ7Gzc+0e6t1TO11/w8LJP2U8ChBQtUFlur74EHovoz6F/5EOycYluWcIdq71HSbsr1FhQUA92viRs8fP56hoiFanIapccd5Z9gpOp5OKt5b3aPPJC1+lmVqRUmJJsvLRc7OZvef9bJ87t7FabHwz8bscpU5ITkhhQO3hOO1ObFY7f8xehTnURLEyRanbohY7Vu32mk9eo9FwMvZ0uhWwLp7KuOxjeNEwXlkwnM9Hf4NWqyGjFQEarUDeNLpRZA2NVkOR4mG5dvxq9StzeNcxr/uCaeSnRgR+JOFSIppshnlqtIK6LWsTWSqCQXVH8HSDlxjceKSHk/RAdJzX/sf3xeeJYy27XIi/mOMUzedPXsSSZHWVFwSsyTaunL/G4d3H+HXmCp8rkG1WO06nk2uXfBd1adS2rk8nvlanpdadNVgYP5O4mCNsX7nLw8+huTkaSYDeoHetR9AXntDfvEZv0NFxYNbXkWSWIe/387mvoJc4zQrKEPiRirXKZckRfCM/XJzDif3xxEbHYbc5sFvtxMUcZniLV9P4HMKLep/jNoYYA3qtQWTJCK+pN/yF0+7E6XB6iRRyZal8vvlYupUZxKj2E7l09opH/55jOxNSxJzmpi2EoFTlEgz7eBDT1k9Ab9CzYu56r85uj4gvCZZkKzaLjTJVS1GhZlnqtqyFThmFLPHs9AGZqmWcXcKLhjNp5atotGkNeZs+Legx+tFcO2+goQyBH9HpdQz7eGCWC4qUqVaK7St2kXg1Kc0NRUqXT2HNgv8WIXUZ8RDGkLQZTI1mAw8Pbo8I4NhEc6iJjoPaYDDnbvZVrV5LWNFQTKFGdAYdTofEmmzFmmLDZrWzc90eRref6DE6KVkhipk7p/Dg0+2oWLs8Te6rz+SVrzHv0Md0HNgGrdZ1A8/qWgCbxc654+fp/0YPpq6dQP83e2IMMfrt7y3slKpUghnPf8Gc17/NVNRYdmjUuh7LbItYdGYWXx74gGX2hYyeMyxXzhWoBM8kWB7RukcLyt1Shq/HL+KfjftIykQCs/99PpjYbYewWTyndlISLWkibTqPeJDzJy/w62cr0Bl02K12WnW/i/5v9vDr35EbPPPeExhMen6asRRrii1X5s6NJj3fnZnNmaPn+G7qL/z++Sq4IfrQYXMQH3eaA9sOUbNJtTR9o8oVZ+j0J9M9/tUL17KsyZJk5beZK2jR+Q66vvgwWp2G2aO/wW53RTWlF1wQzFRrUInXH52cuvBw8ZRfGD7zadr2yp0MvkVLRFK0RGSuHDvQUSOCXKBm01t489cxVK6TcSrt4Z89Rf176lC9cVWvzilzmIlbm/2X2lij0TB4Wn8Wxs9iyupxLDj+GS/OHpKvlbwyi1anZdCkPvx0+WumrB6HOdz/eWVKViqBVqelbLXSnD1+AYfNMwZdo9VkO6PpuRMXctTvyvmrfPXaQmxWu8sQKiPggRDQd3w3TsaeTrPw0JJs5f2nPkuTf+vssXP8NnMFK+etJ/FKYn5JLvAoQ5CLXLvo2zmp02t5empfHhjUDoB6LWtTtV6lNIvRhEag1WspXcWzjmpYZCjVG1WlSPGs5eEJBLQ6LXWa18wV41X7zhqp7+vfUxujl6kou9VO9UbZS11QsmJUtvoVLeV60lyzYGOuLpAqDDz5dm+O/nPMhy/GSczqfwD45s3v6X/r83wy4iumD5lFt3JPs3VZTF7LLRQoQ5CLNH+4CXofIWh17rqVTs92SP0shGDyild5bPiDqT4G6ZQkXkliRMvXmP/2j7zWaRIdjN3paO7JO30/5OrFrE9TBApanZZRXz/n9/nyZh0apb7vOLANYUVD0ziAjSFG7unWPNtFyvu+3tVDs9AIDyf1jWg0gmYPuHQd3XvCZ+0FhYsixcPQ6LxfT5vFTvyh0+zbEsuCt3/AmmLDkmQlOSEFS5KFCV2mkJzovXqcwjfKEOQiXV96hMhSERjM/z3la3Qauo9+lMkrX/N4IjaajdRoXDVN9I90SizJVr4cO5/Nv27DbnNgs9hYt3AjI1q+htNZcAud3N6xEbN2vUfxckX9dszG7eunvg+NCOWTbZPpOLANxcsWo0LNsgya1IsXZw/J9vFbdL6DIe/3o0jxMPRGPaZQI91GPsLH0ZN46ctniYgKT5vYToC5iJn7+98LwMYf/872uYMBIeDi6cuUrlLKZ5uj/55gxdx1XovYaDQaopeqUUFWCfyJ5QJMkeLhzNz5Hr9+toLoZTGUrBTFY8MeSLf+7rrvNvnMxXOjc9Vuc3D22Hm2rdhVoIvalKlaiv4Te/DRc7N9/t2ZJbJkEQzGtCt+i5aKZNiMQQybMShHx76RjgPbcl//e0m4lEhoREiqQa9WvzJNOzTkvYGfEL0sBqTklkZVeXH2EIoUC2ffllgunfEMXQXXVKHTKYO+gpmUMOe1hek+otpSbAi8L9STUqYWr1dkHmUIcpmwyFC6j+pE91GdMtXeHGZCCJGpxVd2m53je08WaEMA0LZPS7b8sYO/f9uO0+EARJZ/zHqjjgFv3lwYL/fQarVeK50VLRnBGz+PxppixeFwpim0siGd0YAhxEjLLnewdPZqn22ERqDRCK+rpwsTUso0kV43YwwxoDfqMZoNWJLT5oZy2B00KeC/h/xAGYIAo8OA1qxZ8Gemk59VqFXwa69qtVpeXTiC2O2H2L1+L+YiJma+NJfEy4mp2TqFwGvmTq1Og95koMfoTtw/oHXeCk8Hg8nTSa3T+l5MVqNxVRq3rc+yL9f4DKuNLBlBjSbV2Pr7dq8py4OF32etQm/S4bA50Og0SIcTjVaLVq91T9sVvACK/EYZggCj9p016fPa48wZtwidTosQwvUkqNOSeDkxdepAp9dSonxxGrerB8ClM5dZt3gTliQrzTo0oErd3FuNmVtUb1SV6o2qAlCn+a1MfuIj4mJcmVVvvaM6bXu35PupvxIfd4bIkhH0eb0LDVvXJapcMa833kDjrkeb8d3UXzzmtoWAZz8YQInyxdDqtNitnutJ9EY9n26fTLHSRVk89Re+GDPfa7tgwZbi+tsNJh11W99GzSa30KZ3SyreWvAfjPIDVaoyQLl4+hI7Vv2DOcxEk/vqc+X8NT4c+jlbft+BRquhRZc7ePaD/hQpFs7GJVt4q9cHCMBud6DTabn/ydY8+8GAgF5tnBkSLiciNILQIr7rGvsbKSXRy2JY/90mjCFG7ut3b6qByimfvPAlv81aiSXZigC0eh1PjOtKd3c6g1HtJ7B9pWcm2ZAiZl5ZOIKm9zVASskHQ2axYs5anE4Z1AYBoM5dNXl/wxv5LSNgyE6pSmUICjjJCck8XnqQR8pcU6iRiT+PpsG9t/nse/ncFf74fBVxMUeo3rgqHZ5sU6CH1VJK9m05SFzMEcpULUnDNnWzXOpSSskb3aex5fftpCRa0GgEepOeJ8Z34/H/PewXnfu2xLLh+81odVru7X5XmtHbxG5TWb94k0efkHAzIz4fzD2P35m67fj+k+xc+y9LPvydo/+e8Iu2gkiNJtWYseUdr/v+/OFvvh6/iGuXEmnWsSFPv9uHkPC8e6jID1TN4iAkevkutF5iri1JFlbOW+/TEBzff5Jhd47FarFhTbay+ddtLJz8Ex9ufotyt5TJbdl+x5JsYUzHtzgQHYeUEo1WQ9FSkby/YWLqYq7MEL18Z6oRAFcyOUuSlS9f/ZbWPVtQvEzOQ11vbVadW5tV97rv7kdv5+/ftnsYdrvNTv1WtdNsq1CzHBVqlmPtoo1BawiMIQba9Grhdd/7g2fy22crUj//PnMlv89cCbii1T6NeZeQMHOe6Ax01DqCwoCXQV1GefCnP/s5iVeSsLqjLizJVhIuJzJj2Je5pTJXmTfxO/b9HUtKosW1wOhaCmeOnOPdAR9n6Tgbf/zbaxirVqdl2/Kd/pLrk9JVSmBL8QwUePT5jkSWiPDaJ7urnQsSQiOo26IWxhAjeneIsDnMRNV6lXnw6XYe7S+fu5LGCNzMqUNn6Bw1IMep0QsLakRQwGncrp6r9OVNmEKNtOntPTmXlJKda/d4/AikU7Jj1a5c0ZnbLPtyjYcT1mF3sGPlLizJFozmzK1gNoWa0Gg1HvH8Qog8yRo6fcjnHhFBQsDJA75LfJatWjq3ZeU70inZv/UgU9aOJ2b1bi6cvEijtvW5/YFGXtOvr/pmQ4bHtFvt/PLpch4efF9uSC5QqBFBASck3MyoOUMxmA0YTHo0Wg3GEANt+9xDw9a+/QO+Ul/ojQWzBKPd6j3wXEqyFHff/olW3q+NlDTr2DC78jKFJdnCoV1HvZ2a6BW+RyPrv9/sc5/OoKVCrXJecy4VNHQGHedPXKTH6McY+uFAmj/S1GcNDkMmS4lu+M73tQsmlCEoBLTofAdzYj/kybd60XdcV6atn8jzHw/yGTEkhKB1zxYedRP0Rj3tnrgnLyT7nbsebepRCUwIqNagMiHhmZ8HrlqvEgMn9cZg0mMONxESbsYcZmL8kpFpFoflBjq9zmfOIlM6o5EzR856P55Bx8L4WXyx532e/XCARx2LgobT4aRkheKZatv+iVaZalf5tgo5UFR4UFNDhYSossV4bPgDmW4/eFo/ju07QVzMUTQagdPppGbTWxj4Tu9cVJl7DHirF9tX7ubqhWukJFowmg3oDDpe/CLreYU6De1Aq27N2bZ8Fwazgab3N0j3RuwvtDotLbvcyYbvN6WpTWEwG7zOg1+nUu3y7N0c67E9JNxEWKSrol2HAW1IuprMzJfmFtg0FuYwEzVuqiHhC6PZyN2db+fP79PP7TTg7V7+kFbgUYYgSAkJN/PBn29yYFscx/fFU6l2+XRzIAU6RUtGMPvf91n77Ub2bYmlfM2ytH+iFUWKZT0cVkpJfNwZrl1KoFSREj6n0XKDYR8P5Oyxc8RuP4xWp8Fuc9D0/gb0HPuYzz5Pvt2LsR3fSpNuwRhipN/E7mnCZxu1rYfBpM9xTqf84tLZK8THnc50VNsr377A230/YN0Cz3BcIWDiL6Mxq2pxgFpHoFCkwWqxMfaBt9j3dyxOhxOtXkdohJn3N7xBqUol8kzHoV1HOXnwNFXqVqR89YxvfDtW72bmyLkc33uS4uWK0ff1rh5hlVJKnqzzAsf3ncwt2blO/zd70PNl30bRG9YUK1uW7mT/1gOEFw2jRpNqNGjl239W0FELyhSKHDJv4mIWvLMkNawWXBXNat1RvVCsXj195CxDmoxKt2hSINN3fFf6vPp4fssIaLJjCJSzWFHoSLicyJKP/uCjYbNZOW89Vi9x+b5Y+sWaNEYAXE7K/VvjCnQhoOuUrlyS+cc+oUrdiv9F1hSQLCRCI7i7U7P8llEoUT4CRaHi6L/HGd7iVWwWO5YkC8vD1vL1uEV89PfbmUqfYfdRRlKIrIWhBjKmEBOf7niXHat2s2/LQUqUL47eqGPqoE8D2n/QecSDBTKZYkFAjQgUhYrJ/WaQeDkxNUVDckIK546f54uxCzLVv1XXO9F5cQ6Xq16WoiW9r+wtiGg0Ghq3q0+vsZ1p/0QrWnW7i05DO3j92/MboRH0f7MHT0/um99SCi3KECgKDYlXk4jbecSjboHd5mDDD5lbONT71ccpXaUk5jDXmgFjiIGQImZGfT3U33IDCiEET77dizmxHwZcxlrpdK2E7111CC93eIMD2+LyW1KhI/DMv0KRTdIrIO9rBerNhEWGMnPnFP78YQt7/tpP2VtK0bZ3y2yFoRZESlaIokbTauzfcjC/paRh+wpX6pMzR86xfcUuxswfzj1dm+ezqsKDGhEoCg3mUBP1Wtb2MAgGk577+rXK9HH0Bj33dr+LodMH8NiwB4LGCFxn+KdPYQwN3Ph6p1Py7oAZOHz4cxRZRxkCRaFi5FfPUqJCcczhJgwmPaZQIzWaVKP3q13yW1qB4ZYGVfhy7wdERAWuAbQm2zgReyq/ZRQa1NSQolARVa44c2I/JHrZTk4fPku1BpWp07xmwM17Bzolyhdn+qa3eKHla1w6czndlOb5gZQyNX2GIufkyBAIIYoBC4HKwBGgq5Tykpd2S4E7gD+llA/m5JwKRUZotVpu79gov2UUeMpWK838Y5+wfcUudq3fy/aVu4jdfiggjIIpzOiXIkEKFzmdGhoNrJJSVgdWuT97412gTw7PpVAo8hitVkvT+xvy5Fs9OXvsvHcjkA+Dre4vP+p1+8GYw0x96lPGPPAWP328lOTElDxWVjDJ6dTQI0Ar9/s5wFpg1M2NpJSrhBCtbt6uUCgKDr5qGmh1WoQQ2K12r/tzgwefbu+xbfWCDUwd9Ck2ix2nw8mudXtYMv13ZmydlKVU5MFITkcEpaSUpwDc/5bMuSSFQhGIPPh0Ow9joNVradj6NiYsGUleumGeafgSVy9eY+W89fw2cwUnY+P54JlZWJKsqWm2LUlWzh47z88zluadsAJKhiMCIcRKwFstvLH+FiOEeAp4CqBixYr+PrxCocgBXf73EPu2HiR6aUxqiG7JilHcdnctxj32LhqdFoctb0I6zx+/QOcSA9DqtDidTqRDIrw81lpTbKz/fjPdR3ufSlK4yNAQSCnb+tonhDgjhCgjpTwlhCgDeC+VlEmklDOBmeDKPpqTYykUiuxxePdR9m6OpXi5YjRpXz91MZ5Or2Pc9y9xdO8JDm4/TKlKUUSWiuTpBi961IvOEyRpDI/0kQpKRRdlTE59BD8DTwDvuP/9KceKFApFvuCwO3ij+zS2Lt0BuBzFIRFmpq6bQJkqpVLbVapVnkq1ygPw7aQlOAN4YZcp1Ein5zrkt4yAJ6c+gneAdkKIWKCd+zNCiCZCiM+vNxJCbAAWA22EECeEEPfl8LwKhcLP/PzJMrYu3YElyYolyUrStWQuxl/ija5TffaRTumR2ykQ0Bl0GEx6HnvhQZo/3DS/5QQ8ORoRSCkvAG28bI8GBt7wucXNbRQKRWDx22crsCTdVIvBKTmy5zjnT14gqpxn4fi7Hm3GvDe+y3S6B71Rh9PpxGHzndJbaAXSkTPr0qBVHUZ+/VxqxtjYHYeZ9tQnxO08ikaj4Y6HGjPmm+fRG/Q5Ok9hQaWYUCgUgKtMpzeERmCzeA8NrXhrOXqNfQyD2YBWp0038R+4EgPqdN6fPzVagTHEQPOHmzJz13sYfdQT1um1CG36IUqdRzyUagRmj5nPkMYjid12GKfdid1q58/v/+aBkF4kXC6Yldr8jTIECoUCgHu73YXe6PmEHFkygtJVfEeG9xzTmY+jJ9F33OP0m9CdKatfp/kjTREaz5u1dEpe/+FFyt5SGoNZj86go2ipSPq89jiDp/Xn/Q1vMO77l6hyW0Umr3iVag0qI4TAaDbw8JD7+C3pG35JmEe9FrXRGbxnlG3Y+jYat6sHwIkD8SycvMRrO+mUvNR2QmYuTaFH1SxWKBSAq57DsDvHcPb4eVISLBhMejRaLe8se4U6zWtm6VhSSt7u/QGbfo4mJdGCRiPQm/T0ee1xuo3shJSSU4fOIISgdJWS6eaCstvsqYvWruNwONj0czQr565j75ZYkq4mExlVhL7ju9O2d4vUtoun/MzMkXN9HlsIWO5YnKW/LdBRxesVCkWOsFpsbPhuMzvX7aF05ZLc1//ebOf0kVISvXwn6xf/hTHESLu+rajZpJqfFXsSH3eaKQM/4Z8NezPMiyQ0guX2RbmuKS9RhkChUBR4nE4nezbu5+yx8zidTsKLhlG/VW3MYRmniTi69wTPNHwp0+kubru7JtPWv5FTyQFFdgyBSkOtUCgChrPHzvFSm/FciL+EJdkVwaTVa9HqNPxv9hBad7873f6zRs3LUs6jib/4ypMZXChnsUKhCBjGd3mP00fOpRoBcK0etibbeO/JTzh16Ey6/f/ZsDdL5/v10xXZ0lnYUCMChUIREJw5eo4j/xxLTRp3M067gxVz19H39a5sX7mLbyct4fi+kzidTvQGHY3bNyA0MoTEK0mZPufuDXvpPkrlIVKGQKFQBATJCSlodFrA+3oGu81B4uVE/pi9ihnPf4klyZJmBoVmMQAABvVJREFU/9IvVqMzZO2WVqVupezKLVSoqSGFQhEQVLi1LCYfNQ8ATKEmmtzfkE//N8fDCAA4Ha7FYpXrVsjcCQX0HPtYduUWKpQhUCgUAYFWq+Wlr4ZiDDF4rCswhhho3L4eJSsUJ71IR6fDic1iZ8nlOYyaO5ROwzrw0OD2HovbjGYDM/5+h5BMRCIFAyp8VKFQBBQnDsTzy6fL2b81DpvVRlTZorTt04q7OjXl6oVr9Kz4jM+UFwAN7r2Nd1e9nmablJKrFxO4fO4yxUpFEl40PLf/jHxDhY8qFIoCT/kaZRk8tZ/XfZElImjcvgHblsd4NQbGECPdRnXy2C6EIKJ4OBHFC68ByAlqakihUBQoXp43jEbt6qM36tHqXLcwnVFHSBEzz0x9gibt6+ezwoKHGhEoFIoCRUi4mTd+Hs3F05e4dOYKYZGhJCekuBLZeUmap8gYZQgUCkWBpFjpohQrnb08SIq0qKkhhUKhCHKUIVAoFIogRxkChUKhCHKUIVAoFIogRxkChUKhCHKUIVAoFIogRxkChUKhCHKUIVAoFIogRxkChUKhCHKUIVAoFIogRxkChUKhCHKUIVAoFIogRxkChUKhCHKUIVAoFIogJ2BLVQohzgFH8+HUUcD5fDhvRgSirkDUBIGpKxA1QWDqCkRNEJi6vGmqJKUskZWDBKwhyC+EENFZrfeZFwSirkDUBIGpKxA1QWDqCkRNEJi6/KVJTQ0pFApFkKMMgUKhUAQ5yhB4MjO/BfggEHUFoiYITF2BqAkCU1cgaoLA1OUXTcpHoFAoFEGOGhEoFApFkBNUhkAIcb8QYr8Q4qAQYrSX/dOEEDHu1wEhxGX39ntv2B4jhEgRQnTKT03ufZOFEHuEEHuFENOFEMIfmvyga5IQ4h/3q1seaqoohFgjhNghhNglhOh4w76X3f32CyHu85emnOgSQhR3b08QQnwUIJraCSG2CSF2u/9tHSC6mt3wfdsphHg0vzXdtD9BCPGivzTlRJcQorIQIvmG6/VphieTUgbFC9ACcUBVwADsBGqn0/454Asv24sBF4GQ/NQENAc2uo+hBTYBrfL7WgEPACsAHRAKRANF8kITrvnSwe73tYEjN7zfCRiBKu7jaPPqWqWjKxS4G3gG+Cgvv+vpaGoIlHW/vw04GSC6QgCd+30Z4Oz1z/ml6Yb93wOLgRcD5FpVBv7JyvmCaUTQDDgopTwkpbQC3wKPpNO+B7DAy/YuwB9SyqR81iQBE64viRHQA2f8oCmnumoD66SUdillIq4v8P15pEkCRdzvI4B49/tHgG+llBYp5WHgoPt4/iDbuqSUiVLKP4EUP2nxh6YdUsrr120PYBJCGANAV5KU0u7ebnK3y1dNAO6ZgUO4rpU/yZGurBJMhqAccPyGzyfc2zwQQlTC9eS42svu7ng3EHmqSUq5CVgDnHK/lkkp9+a3Llw3/g5CiBAhRBRwL1AhjzSNA3oLIU4Av+MaqWS2b37oyi38pakzsENKaQkEXUKI24UQe4DdwDM3GIZ80SSECAVGAeP9oMNvutxUcU8ZrRNCtMjoZMFkCLzNn/t6qugOfCeldKQ5gBBlgLrAsvzWJIS4BagFlMf1BWkthGiZ37qklMtxfSn/wmUwNwH++MFmRlMP4CspZXmgIzBXCKHJZN/80JVb5FiTEKIOMAl4OlB0SSn/llLWAZoCLwshTPmsaTwwTUqZ4Acd/tR1CqgopWwIjADmCyGKkA7BZAhOkPbJtDy+h1K+nvq7Aj9KKW0BoOlRYLOUMsH9RfwDuCMAdCGlfFNK2UBK2Q7XFzo2jzQ9CSxya9iEawohKpN980NXbpEjTUKI8sCPQF8pZVyg6LqOe+SbiMuHkZ+abgcmCyGOAMOBMUKIoX7QlCNd7inQC+7t23D5GmqkezZ/OTcC/YXLeXkI1zTGdedLHS/tagJHcK+xuGnfZuDeQNAEdANWuo+hB1YBDwWALi1Q3P2+HvAP/nHqZagJlzHs535fy/3DEUAd0jqLD+E/Z3G2dd2wvx/+dRbn5FpFutt39pceP+mqwn/O4kru7VGB8P/n3j4O/zqLc3KtSlz/fuNyNp8EiqV7Pn//ZwfyC9fw6QAuCznWvW0C8PBN/6HveOlb2X1BNYGgCdcN9zNgL/AvMDVAdJncev7FZTgb5JUmXI7qje4fTQzQ/oa+Y9399gMd8vJaZaDrCK4otARcT4E+o7PyQhPwCq6n7ZgbXiXz+1oBfXA5ZGOA7UCn/NZ00zHG4UdDkMNr1dl9rXa6r1WGD4hqZbFCoVAEOcHkI1AoFAqFF5QhUCgUiiBHGQKFQqEIcpQhUCgUiiBHGQKFQqEIcpQhUCgUiiBHGQKFQqEIcpQhUCgUiiDn/0KknY+Pu3GKAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(6,6))\n", "\n", "# We are limiting our feature space to 2 components here. \n", "# This makes it easier to graph and see the clusters.\n", "svd= TruncatedSVD(2)\n", "\n", "# Normalize the data.\n", "X_norm = normalize(X_train)\n", "\n", "# Reduce it to two components.\n", "X_svd = svd.fit_transform(X_norm)\n", "\n", "# Calculate predicted values.\n", "y_pred = KMeans(n_clusters=3, random_state=42).fit_predict(X_svd)\n", "\n", "# Plot the solution.\n", "plt.scatter(X_svd[:, 0], X_svd[:, 1], c=y_pred, cmap='viridis')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Comparing k-means clusters against the data:\n", "airline_sentiment -1 0 1\n", "row_0 \n", "0 8680 2918 2414\n", "1 122 284 231\n", "2 1138 825 587\n" ] } ], "source": [ "# Check the solution against the data.\n", "print('Comparing k-means clusters against the data:')\n", "print(pd.crosstab(y_pred, y_train_tfidf))" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Adjusted Rand Score: 0.07606666\n", "Silhouette Score: 0.003654095\n" ] } ], "source": [ "# View clustering score\n", "print('Adjusted Rand Score: {:0.7}'.format(adjusted_rand_score(y_train_tfidf, y_pred)))\n", "print('Silhouette Score: {:0.7}'.format(silhouette_score(X_train, y_pred, sample_size=60000, metric='euclidean')))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Testing Set\n", "\n", "Finally, we get to open the testing set. What if we decide to look at more recent tweets from the same airline, or how about we also decide to look at other airlines that weren't even in our dataset? \n", "\n", "Enough with the hypotheticals. The next dataset is a collection of recent tweets containing the testing data that we want and while we won't be able to assess its accuracy since we don't have the correct values, we should be able to get a good idea of measuring sentiment analysis for more recent tweets targetting the airlines in our dataset, as well as other airlines that actually aren't in our model. \n", "\n", "What this will demonstrate is how useful our models are for predicting sentiment analysis for tweets that our model has not seen yet." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
airlinetext
0@AlaskaAirRT @AlaskaAir: Happy birthday to our Chief Football Officer, @DangeRussWilson! We hope your thirties are as fly as you! 🎂 https://t.co/XfTm…
1@AlaskaAir@AlaskaAir My monthly+ flughts in and out of Montana will have to be with another airline if these flights after 9pm aren't possible.
2@AlaskaAirRT @ChrisEgan5: UW #Husky fans fired up for @pac12 championship game! Leaving #Seattle on @AlaskaAir on plane filled with @UW_Football @uw…
3@AlaskaAir@ChrisEgan5 @mcclainfan59 @pac12 @AlaskaAir @UW_Football @UW That's a Virgin Plane. 🤣
4@AlaskaAir@AlaskaAir Stupid, stupid decision!!
\n", "
" ], "text/plain": [ " airline \\\n", "0 @AlaskaAir \n", "1 @AlaskaAir \n", "2 @AlaskaAir \n", "3 @AlaskaAir \n", "4 @AlaskaAir \n", "\n", " text \n", "0 RT @AlaskaAir: Happy birthday to our Chief Football Officer, @DangeRussWilson! We hope your thirties are as fly as you! 🎂 https://t.co/XfTm… \n", "1 @AlaskaAir My monthly+ flughts in and out of Montana will have to be with another airline if these flights after 9pm aren't possible. \n", "2 RT @ChrisEgan5: UW #Husky fans fired up for @pac12 championship game! Leaving #Seattle on @AlaskaAir on plane filled with @UW_Football @uw… \n", "3 @ChrisEgan5 @mcclainfan59 @pac12 @AlaskaAir @UW_Football @UW That's a Virgin Plane. 🤣 \n", "4 @AlaskaAir Stupid, stupid decision!! " ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Import the training dataset\n", "tweets_test = pd.read_csv(\"airline_tweets/test_set.csv\", usecols=[1,2])\n", "\n", "# Preview the data\n", "tweets_test.head()" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(18000, 2)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# View size of the testing dataframe\n", "tweets_test.shape" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['@AlaskaAir',\n", " '@Allegiant',\n", " '@AmericanAir',\n", " '@Delta',\n", " '@FlyFrontier',\n", " '@HawaiianAir',\n", " '@JetBlue',\n", " '@SouthwestAir',\n", " '@SpiritAirlines',\n", " '@united']" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print unique airlines in the test dataset\n", "sorted(tweets_test['airline'].unique())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the original dataset was obtained in February 2015, two of the airlines in the dataset no longer operate under the same name, 'US Airways' and 'Virgin' which have since merged with 'American' and 'Alaska' respectively. Due to this, we can only compare the remaining 4 airlines in the original dataset with 6 other major airlines currently in service in the United States." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "# Remove non-essential punctuation from the tweets\n", "pd.options.display.max_colwidth = 200\n", "tweets_test['text'] = tweets_test['text'].map(lambda x: text_cleaner(str(x)))\n", "\n", "# Reduce all text to their lemmas\n", "for tweet in tweets_test['text']:\n", " tweet = lemmatizer.lemmatize(tweet)\n", " \n", "# Specify the new test input\n", "X = tweets_test['text']\n", "\n", "# Apply the vectorizer to the test data\n", "X_tfidf_2 = vectorizer.fit_transform(X)\n", "\n", "# Predict the results using our best model\n", "tweets_test['airline_sentiment'] = rfc_2.predict(X_tfidf_2)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "# Modify values of sentiment to numerical values\n", "sentiment = {-1:'negative', 0:'neutral', 1:'positive'}\n", "tweets_test['airline_sentiment'] = tweets_test['airline_sentiment'].map(lambda x: sentiment[x])" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "labels": [ "negative", "neutral", "positive" ], "type": "pie", "uid": "185fd559-5bf9-4a10-91c0-7882cdb4ce8d", "values": [ 15681, 1369, 950 ] } ], "layout": { "autosize": false, "height": 400, "title": "Tweet Sentiment (Nov 2018)", "width": 500, "yaxis": { "title": "Number of tweets" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# View distribution of tweets by sentiment \n", "# (Changing colors to red/gray/green would be nice)\n", "trace = go.Pie(labels=tweets_test['airline_sentiment'].value_counts().index, \n", " values=tweets_test['airline_sentiment'].value_counts())\n", "\n", "# Create the layout\n", "layout = go.Layout(\n", " title = 'Tweet Sentiment (Nov 2018)',\n", " height = 400,\n", " width = 500,\n", " autosize = False,\n", " yaxis = dict(title='Number of tweets')\n", ")\n", "\n", "fig = go.Figure(data = [trace], layout = layout)\n", "py.offline.iplot(fig, filename='cufflinks/simple')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we apply the random forest model to our testing dataset, the results do look a bit more ... negative. Now, the differences in our dataset could be due to a number of things, so let's take a look at the data and see what our model spit out." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
airline@AlaskaAir@Allegiant@AmericanAir@Delta@FlyFrontier@HawaiianAir@JetBlue@SouthwestAir@SpiritAirlines@united
airline_sentiment
negative1728169216931239156617101566139614891602
neutral5472107184909018039410890
positive1836037714405410203108
\n", "
" ], "text/plain": [ "airline @AlaskaAir @Allegiant @AmericanAir @Delta @FlyFrontier \\\n", "airline_sentiment \n", "negative 1728 1692 1693 1239 1566 \n", "neutral 54 72 107 184 90 \n", "positive 18 36 0 377 144 \n", "\n", "airline @HawaiianAir @JetBlue @SouthwestAir @SpiritAirlines \\\n", "airline_sentiment \n", "negative 1710 1566 1396 1489 \n", "neutral 90 180 394 108 \n", "positive 0 54 10 203 \n", "\n", "airline @united \n", "airline_sentiment \n", "negative 1602 \n", "neutral 90 \n", "positive 108 " ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Pivot table of airline sentiment\n", "tweets_test.pivot_table(index=['airline_sentiment'],columns='airline', aggfunc='size', fill_value=0)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "scrolled": true }, "outputs": [ { "ename": "ValueError", "evalue": "operands could not be broadcast together with shapes (8,) (10,) ", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 17\u001b[0m trace3 = go.Bar(\n\u001b[0;32m 18\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msorted\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtweets_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'airline'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0munique\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 19\u001b[1;33m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtweets_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtweets_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'airline_sentiment'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'positive'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgroupby\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'airline'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'airline_sentiment'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtweets_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'airline'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msort_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 20\u001b[0m \u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'Positive'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 21\u001b[0m \u001b[0mmarker\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'rgba(0,200,0,.7)'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mValueError\u001b[0m: operands could not be broadcast together with shapes (8,) (10,) " ] } ], "source": [ "# # Show distribution of texts\n", "\n", "# trace1 = go.Bar(\n", "# x = sorted(tweets_test['airline'].unique()),\n", "# y = (tweets_test[tweets_test['airline_sentiment'] == 'negative'].groupby('airline')['airline_sentiment'].value_counts().values) / (tweets_test['airline'].value_counts().sort_index().values),\n", "# name = 'Negative',\n", "# marker = dict(color='rgba(200,0,0,.7)')\n", "# )\n", "\n", "# trace2 = go.Bar(\n", "# x = sorted(tweets_test['airline'].unique()),\n", "# y = (tweets_test[tweets_test['airline_sentiment'] == 'neutral'].groupby('airline')['airline_sentiment'].value_counts().values) / (tweets_test['airline'].value_counts().sort_index().values),\n", "# name = 'Neutral',\n", "# marker = dict(color='rgba(150,150,150,.7)')\n", "# )\n", "\n", "# trace3 = go.Bar(\n", "# x = sorted(tweets_test['airline'].unique()),\n", "# y = (tweets_test[tweets_test['airline_sentiment'] == 'positive'].groupby('airline')['airline_sentiment'].value_counts().values) / (tweets_test['airline'].value_counts().sort_index().values),\n", "# name = 'Positive',\n", "# marker = dict(color='rgba(0,200,0,.7)')\n", "# )\n", "\n", "# data = [trace1, trace2, trace3]\n", "# layout = go.Layout(\n", "# title = 'Airline Sentiment (Percentage)',\n", "# barmode='group',\n", "# yaxis = dict(title='% of tweets')\n", "# )\n", "\n", "# fig = go.Figure(data=data, layout=layout)\n", "# py.offline.iplot(fig, filename='stacked-bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "For the above visual, please feel free to toggle the sentiment categories on the right. For example, toggle negative and neutral off to view only positive tweets.\n", "
\n", "\n", "The model predicted so few positive results that these bars do look a bit off. Wasn't 'American' one of the most poorly received in the training set? You would be correct, but that doesn't appear to be the case here. \n", "\n", "* The training set was acquired in February 2015, and our test set in November 2018\n", "* We didn't capture enough characteristics / words in our original model, and require a larger data set." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
airlinetextairline_sentiment
0@AlaskaAirRT @AlaskaAir: Happy birthday to our Chief Football Officer, @DangeRussWilson! We hope your thirties are as fly as you! 🎂 https://t.co/XfTm…negative
1@AlaskaAir@AlaskaAir My monthly+ flughts in and out of Montana will have to be with another airline if these flights after 9pm aren't possible.negative
2@AlaskaAirRT @ChrisEgan5: UW #Husky fans fired up for @pac12 championship game! Leaving #Seattle on @AlaskaAir on plane filled with @UW_Football @uw…negative
3@AlaskaAir@ChrisEgan5 @mcclainfan59 @pac12 @AlaskaAir @UW_Football @UW That's a Virgin Plane. 🤣negative
4@AlaskaAir@AlaskaAir Stupid, stupid decision!!negative
\n", "
" ], "text/plain": [ " airline \\\n", "0 @AlaskaAir \n", "1 @AlaskaAir \n", "2 @AlaskaAir \n", "3 @AlaskaAir \n", "4 @AlaskaAir \n", "\n", " text \\\n", "0 RT @AlaskaAir: Happy birthday to our Chief Football Officer, @DangeRussWilson! We hope your thirties are as fly as you! 🎂 https://t.co/XfTm… \n", "1 @AlaskaAir My monthly+ flughts in and out of Montana will have to be with another airline if these flights after 9pm aren't possible. \n", "2 RT @ChrisEgan5: UW #Husky fans fired up for @pac12 championship game! Leaving #Seattle on @AlaskaAir on plane filled with @UW_Football @uw… \n", "3 @ChrisEgan5 @mcclainfan59 @pac12 @AlaskaAir @UW_Football @UW That's a Virgin Plane. 🤣 \n", "4 @AlaskaAir Stupid, stupid decision!! \n", "\n", " airline_sentiment \n", "0 negative \n", "1 negative \n", "2 negative \n", "3 negative \n", "4 negative " ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Preview the top tweets for @AlaskaAir to see the correlation between tweets and predicted results\n", "tweets_test.loc[tweets_test['airline']=='@AlaskaAir'].head()" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
airline_sentimentnegativereasonairlinetext
7644-1Customer Service IssueAmerican@AmericanAir I've been on hold for 55 mins about my Cancelled Flighted international flight. Am out of country, so can't leave a call back #. Help?
7645-1Customer Service IssueAmerican“@AmericanAir Thanks for info on super large passengers- the extra seat Mr. Big needed was the one i was sitting in already #customerservice
7646-1Customer Service IssueAmerican@AmericanAir Been trying to call all day, get hung up on every time. Your guys are horrible!
7647-1Late FlightAmerican@AmericanAir Hey so I'm very disappointed with my time traveling with you! I've had the worst experience and both times the flight delayed!
76480NaNAmerican@AmericanAir Any way that we could look at other options for today?
\n", "
" ], "text/plain": [ " airline_sentiment negativereason airline \\\n", "7644 -1 Customer Service Issue American \n", "7645 -1 Customer Service Issue American \n", "7646 -1 Customer Service Issue American \n", "7647 -1 Late Flight American \n", "7648 0 NaN American \n", "\n", " text \n", "7644 @AmericanAir I've been on hold for 55 mins about my Cancelled Flighted international flight. Am out of country, so can't leave a call back #. Help? \n", "7645 “@AmericanAir Thanks for info on super large passengers- the extra seat Mr. Big needed was the one i was sitting in already #customerservice \n", "7646 @AmericanAir Been trying to call all day, get hung up on every time. Your guys are horrible! \n", "7647 @AmericanAir Hey so I'm very disappointed with my time traveling with you! I've had the worst experience and both times the flight delayed! \n", "7648 @AmericanAir Any way that we could look at other options for today? " ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Preview the top tweets for 'American' in our test set\n", "tweets.loc[tweets['airline']=='American'].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "\n", "For this project, I aimed to build the best model that I could for performing sentiment analysis based on a fairly small training set, and apply the model to a more recent, equally sized testing set. Based on the training, and validation steps of the process, the model was able to do fairly well within the dataset, but when tasked to apply the same model on external data, the model wasn't able to hold up quite as well.\n", "\n", "## Next Steps\n", "\n", "Granted, the project may not achieved an ideal outcome, it has a sufficient framework for performing the task, and would likely stand to benefit from inputting more data, in the training phase, and incorporating a larger vocabulary, or testing it with an expansive word2vec model." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }