nlp-lab/Jonas_Solutions/Task_02_JonasWeinz.ipynb
2018-05-13 10:35:15 +02:00

1394 lines
113 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# NLP-LAB Exercise 02 by Jonas Weinz (2571421)\n",
"## links:\n",
"\n",
"* Article: https://miguelmalvarez.com/2017/03/23/how-can-machine-learning-and-ai-help-solving-the-fake-news-problem/\n",
" * corresponding code: https://github.com/kjam/random_hackery/blob/master/Attempting%20to%20detect%20fake%20news.ipynb\n",
"\n",
"* Tutorial on Datacamp: https://www.datacamp.com/community/tutorials/scikit-learn-fake-news\n",
"\n",
"* liar dataset paper: https://www.cs.ucsb.edu/~william/papers/acl2017.pdf\n",
" * dataset: https://www.cs.ucsb.edu/~william/data/liar_dataset.zip"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dependencies for this Notebook:\n",
"* library [rdflib](https://github.com/RDFLib/rdflib)\n",
" * install: `pip3 install rdflib`\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import itertools\n",
"import sklearn.utils as sku\n",
"from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, HashingVectorizer\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.linear_model import PassiveAggressiveClassifier\n",
"from sklearn.naive_bayes import MultinomialNB\n",
"from sklearn import metrics\n",
"import matplotlib.pyplot as plt\n",
"import os"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tools used later"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def plot_confusion_matrix(cm, classes,\n",
" title,\n",
" normalize=False,\n",
" cmap=plt.cm.Blues):\n",
" fig_1, ax_1 = plt.subplots()\n",
" \"\"\"\n",
" See full source and example: \n",
" http://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html\n",
" \n",
" This function prints and plots the confusion matrix.\n",
" Normalization can be applied by setting `normalize=True`.\n",
" \"\"\"\n",
" plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
" plt.title('Confusion Matrix for: ' + title)\n",
" plt.colorbar()\n",
" tick_marks = np.arange(len(classes))\n",
" plt.xticks(tick_marks, classes, rotation=45)\n",
" plt.yticks(tick_marks, classes)\n",
"\n",
" if normalize:\n",
" cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
" print(\"Normalized confusion matrix\")\n",
" else:\n",
" print('Confusion matrix, without normalization')\n",
"\n",
" thresh = cm.max() / 2.\n",
" for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
" plt.text(j, i, cm[i, j],\n",
" horizontalalignment=\"center\",\n",
" color=\"white\" if cm[i, j] > thresh else \"black\")\n",
"\n",
" plt.tight_layout()\n",
" plt.ylabel('True label')\n",
" plt.xlabel('Predicted label')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from pprint import pprint as pp\n",
"from IPython.display import display, Markdown, Latex\n",
"import collections\n",
"import traceback\n",
"\n",
"def jupyter_print(obj, cell_w = 10, headers=None, p_type=True, ret_mdown=False, index_offset=0, list_horizontal=False):\n",
" try:\n",
" ts = \"**Type:** \" + str(type(obj)).strip(\"<>\") + \"\\n\\n\"\n",
" if type(obj) == str:\n",
" display(Markdown(obj))\n",
" elif isinstance(obj, collections.Iterable):\n",
" if isinstance(obj[0], collections.Iterable) and type(obj[0]) is not str:\n",
" # we have a table\n",
" \n",
" if headers is None:\n",
" headers = [str(i) for i in range(len(obj[0]))]\n",
" \n",
" if len(headers) < len(obj[0]):\n",
" headers += [\" \" for i in range(len(obj[0]) - len(headers))]\n",
" \n",
" s = \"|\" + \" \" * cell_w + \"|\"\n",
" \n",
" for h in headers:\n",
" s += str(h) + \" \" * (cell_w - len(h)) + \"|\"\n",
" s += \"\\n|\" + \"-\" * (len(headers) + (len(headers) + 1) * cell_w) + \"|\\n\"\n",
" \n",
" #s = (\"|\" + (\" \" * (cell_w))) * len(obj[0]) + \"|\\n\" + \"|\" + (\"-\" * (cell_w + 1)) * len(obj[0])\n",
" #s += '|\\n'\n",
" \n",
" row = index_offset\n",
" \n",
" for o in obj:\n",
" s += \"|**\" + str(row) + \"**\" + \" \" * (cell_w - (len(str(row))+4))\n",
" for i in o:\n",
" s += \"|\" + str(i) + \" \" * (cell_w - len(str(i)))\n",
" s+=\"|\" + '\\n'\n",
" s += ts\n",
" display(Markdown(s))\n",
" return s if ret_mdown else None\n",
" else:\n",
" # we have a list\n",
" \n",
" \n",
" if headers is None:\n",
" headers = [\"index\",\"value\"]\n",
" \n",
" index_title = headers[0]\n",
" value_title = headers[1]\n",
" \n",
" s = \"|\" + index_title + \" \" * (cell_w - len(value_title)) + \"|\" + value_title + \" \" * (cell_w - len(value_title)) + \"|\" + '\\n'\n",
" s += \"|\" + \"-\" * (1 + 2 * cell_w) + '|\\n'\n",
" i = index_offset\n",
" for o in obj:\n",
" s_i = str(i)\n",
" s_o = str(o)\n",
" s += \"|\" + s_i + \" \" * (cell_w - len(s_i)) + \"|\" + s_o + \" \" * (cell_w - len(s_o)) + \"|\" + '\\n'\n",
" i+=1\n",
" s += ts\n",
" #print(s)\n",
" display(Markdown(s))\n",
" return s if ret_mdown else None\n",
" else:\n",
" jupyter_print([obj])\n",
" except Exception as e:\n",
" print(ts)\n",
" pp(obj) \n",
"\n",
"jp = jupyter_print\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"| |0 |1 |2 |\n",
"|-------------------------------------------|\n",
"|**0** |1 |2000 |3 |\n",
"|**0** |4 |5 |6 |\n",
"**Type:** class 'list'\n",
"\n"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"jp([[1,2000,3],[4,5,6]])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate/Download Datasets we are working on\n",
"\n",
"* running bash script to download all needed data and store it into the `data` subfolder"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"================================================================================\n",
"checking whether unzip is installed\n",
"================================================================================\n",
"UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.\n",
"\n",
"Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;\n",
"see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.\n",
"\n",
"Compiled with gcc 6.3.0 20170415 for Unix (Linux ELF).\n",
"\n",
"UnZip special compilation options:\n",
" ACORN_FTYPE_NFS\n",
" COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)\n",
" SET_DIR_ATTRIB\n",
" SYMLINKS (symbolic links supported, if RTL and file system permit)\n",
" TIMESTAMP\n",
" UNIXBACKUP\n",
" USE_EF_UT_TIME\n",
" USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)\n",
" USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)\n",
" UNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)\n",
" LARGE_FILE_SUPPORT (large files over 2 GiB supported)\n",
" ZIP64_SUPPORT (archives using Zip64 for large files supported)\n",
" USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version 1.0.6, 6-Sept-2010)\n",
" VMS_TEXT_CONV\n",
" WILD_STOP_AT_DIR\n",
" [decryption, version 2.11 of 05 Jan 2007]\n",
"\n",
"UnZip and ZipInfo environment options:\n",
" UNZIP: [none]\n",
" UNZIPOPT: [none]\n",
" ZIPINFO: [none]\n",
" ZIPINFOOPT: [none]\n",
"================================================================================\n",
"successfully finished action: checking whether unzip is installed\n",
"================================================================================\n",
"================================================================================\n",
"downloading and unpacking https://www.cs.ucsb.edu/~william/data/liar_dataset.zip if not already existing\n",
"================================================================================\n",
"================================================================================\n",
"successfully finished action: downloading and unpacking https://www.cs.ucsb.edu/~william/data/liar_dataset.zip if not already existing\n",
"================================================================================\n",
"================================================================================\n",
"downloading and unpacking https://raw.githubusercontent.com/GeorgeMcIntire/fake_real_news_dataset/master/fake_or_real_news.csv.zip if not already existing\n",
"================================================================================\n",
"================================================================================\n",
"successfully finished action: downloading and unpacking https://raw.githubusercontent.com/GeorgeMcIntire/fake_real_news_dataset/master/fake_or_real_news.csv.zip if not already existing\n",
"================================================================================\n",
"================================================================================\n",
"downloading Helper script: script_dataset3.py\n",
"================================================================================\n",
"================================================================================\n",
"successfully finished action: downloading Helper script: script_dataset3.py\n",
"================================================================================\n"
]
}
],
"source": [
"%%bash\n",
"./Task_2_gen_data.sh"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----\n",
"## configuration 1"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"df_1 = pd.read_csv('data/fake_or_real_news.csv').set_index('Unnamed: 0')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* display first 10 entries"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(6335, 3)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>title</th>\n",
" <th>text</th>\n",
" <th>label</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Unnamed: 0</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>8476</th>\n",
" <td>You Can Smell Hillarys Fear</td>\n",
" <td>Daniel Greenfield, a Shillman Journalism Fello...</td>\n",
" <td>FAKE</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10294</th>\n",
" <td>Watch The Exact Moment Paul Ryan Committed Pol...</td>\n",
" <td>Google Pinterest Digg Linkedin Reddit Stumbleu...</td>\n",
" <td>FAKE</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3608</th>\n",
" <td>Kerry to go to Paris in gesture of sympathy</td>\n",
" <td>U.S. Secretary of State John F. Kerry said Mon...</td>\n",
" <td>REAL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10142</th>\n",
" <td>Bernie supporters on Twitter erupt in anger ag...</td>\n",
" <td>— Kaydee King (@KaydeeKing) November 9, 2016 T...</td>\n",
" <td>FAKE</td>\n",
" </tr>\n",
" <tr>\n",
" <th>875</th>\n",
" <td>The Battle of New York: Why This Primary Matters</td>\n",
" <td>It's primary day in New York and front-runners...</td>\n",
" <td>REAL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6903</th>\n",
" <td>Tehran, USA</td>\n",
" <td>\\nIm not an immigrant, but my grandparents ...</td>\n",
" <td>FAKE</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7341</th>\n",
" <td>Girl Horrified At What She Watches Boyfriend D...</td>\n",
" <td>Share This Baylee Luciani (left), Screenshot o...</td>\n",
" <td>FAKE</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>Britains Schindler Dies at 106</td>\n",
" <td>A Czech stockbroker who saved more than 650 Je...</td>\n",
" <td>REAL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4869</th>\n",
" <td>Fact check: Trump and Clinton at the 'commande...</td>\n",
" <td>Hillary Clinton and Donald Trump made some ina...</td>\n",
" <td>REAL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2909</th>\n",
" <td>Iran reportedly makes new push for uranium con...</td>\n",
" <td>Iranian negotiators reportedly have made a las...</td>\n",
" <td>REAL</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" title \\\n",
"Unnamed: 0 \n",
"8476 You Can Smell Hillarys Fear \n",
"10294 Watch The Exact Moment Paul Ryan Committed Pol... \n",
"3608 Kerry to go to Paris in gesture of sympathy \n",
"10142 Bernie supporters on Twitter erupt in anger ag... \n",
"875 The Battle of New York: Why This Primary Matters \n",
"6903 Tehran, USA \n",
"7341 Girl Horrified At What She Watches Boyfriend D... \n",
"95 Britains Schindler Dies at 106 \n",
"4869 Fact check: Trump and Clinton at the 'commande... \n",
"2909 Iran reportedly makes new push for uranium con... \n",
"\n",
" text label \n",
"Unnamed: 0 \n",
"8476 Daniel Greenfield, a Shillman Journalism Fello... FAKE \n",
"10294 Google Pinterest Digg Linkedin Reddit Stumbleu... FAKE \n",
"3608 U.S. Secretary of State John F. Kerry said Mon... REAL \n",
"10142 — Kaydee King (@KaydeeKing) November 9, 2016 T... FAKE \n",
"875 It's primary day in New York and front-runners... REAL \n",
"6903 \\nIm not an immigrant, but my grandparents ... FAKE \n",
"7341 Share This Baylee Luciani (left), Screenshot o... FAKE \n",
"95 A Czech stockbroker who saved more than 650 Je... REAL \n",
"4869 Hillary Clinton and Donald Trump made some ina... REAL \n",
"2909 Iranian negotiators reportedly have made a las... REAL "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(df_1.shape)\n",
"display(df_1[:10])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* create test dataset"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def create_training_and_test_set(dset, cutoff=0.7):\n",
" shuffled = sku.shuffle(dset) # shuffle dataset\n",
" y = shuffled.label\n",
" shuffled = shuffled.drop('label', axis=1)['text']\n",
" size = int(cutoff * shuffled.shape[0])\n",
" return shuffled[:size], y[:size], shuffled[size:], y[size:]\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"X1,y1, Xt1,yt1 = create_training_and_test_set(df_1)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"count_vectorizer_1 = CountVectorizer(stop_words='english')\n",
"count_train_1 = count_vectorizer_1.fit_transform(X1)\n",
"count_test_1 = count_vectorizer_1.transform(Xt1)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"tfidf_vectorizer_1 = TfidfVectorizer(stop_words='english', max_df=0.7)\n",
"tfidf_train_1 = tfidf_vectorizer_1.fit_transform(X1)\n",
"tfidf_test_1 = tfidf_vectorizer_1.transform(Xt1)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"#jupyter_print(count_vectorizer.get_feature_names()[0:10])\n",
"#jupyter_print(count_vectorizer.get_feature_names()[-10:])\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"#jupyter_print(tfidf_vectorizer.get_feature_names()[:10])\n",
"#jupyter_print(tfidf_vectorizer.get_feature_names()[-10:])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"#count_df = pd.DataFrame(count_train.A, columns=count_vectorizer.get_feature_names())\n",
"#tfidf_df = pd.DataFrame(count_train.A, columns=tfidf_vectorizer.get_feature_names())\n",
"#diff = set(count_df.columns) - set(tfidf_df.columns)\n",
"#pp(count_df.equals(tfidf_df))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"score: 0.849026827985271"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Confusion matrix, without normalization\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4c9f545978>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"clf = MultinomialNB()\n",
"clf.fit(tfidf_train_1, y1)\n",
"pred = clf.predict(tfidf_test_1)\n",
"score = metrics.accuracy_score(yt1, pred)\n",
"jupyter_print(\"score: \" + str(score))\n",
"cm = metrics.confusion_matrix(yt1, pred, labels=[\"FAKE\", \"REAL\"])\n",
"plot_confusion_matrix(cm, classes=[\"FAKE\", \"REAL\"], title= \"TFIDF_Vecctorizer, Multinomial Naive Bayes\")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"'score: 0.9021567596002105'\n",
"Confusion matrix, without normalization\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEmCAYAAACj7q2aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xe8HFX9//HX+yYkhARIwwBJICBVUAKELgoEkCpFaSIBBAJIUeGrYvnZC1aKqBQpAaV3qSJFAWkBQpMWahICKUAghJbk8/vjnA2b693ZvTd7s7e8n3nMIzNnZmfO7Mydz5yyM4oIzMzM2qKp0RkwM7POy0HEzMzazEHEzMzazEHEzMzazEHEzMzazEHEzMzarKFBRFIfSX+XNEvSZYuwnv0l/aOeeWsESTdKOrCNn/2ZpBmSXq13vqztOvu5KelFSdsWzG/zObsoWrPdavuwiPnYUtLT7bHuTiMiqg7Al4DxwGxgKnAj8OlaPltlvQcA9wM9F3Vd7TEAWwEBXNUsfb2cfkeN6/kR8Nd2zOdKwLvAx9pxGwKOBR4H3gEmA5cBn2znYzAif9ctniPAvsCLgJql9wSmAbsswrYPAu5anOdcHb+3O/L3tl6z9Kty+lY1rudFYNs83q7ncTt+Fwv2oYV55+XvY+OytNXSpbGhef4R8GG+5s4GngS+0OjvsqWhaklE0nHAycAvgCH5gvUnYLdqn63BysAzETG3DutqL9OBzSQNKks7EHimXhtQsiilwpWAmRExrQ3b7lnjoqcAXyMFkoHAGsDVwM6t3WadXQ30Bz7bLH0H0sXhpsWeo6wV3217rfcZYEzZ5wYBm5HOafvI68DPGp2JFlwSEf0ioh/wdeCvkoY0OlP/o0o0XJYUBfcqWKY3Kci8koeTgd553lakO9bjSXeFU4GD87wfAx/wUbQ9hGZ3OjS7CyXdGT4PvA28AOxfln5X2ec2Bx4AZuX/Ny+bdwfwU+DuvJ5/AIMr7Fsp/6cDR+W0HsAU4AeUlURIF9lJwFvAg8CWOX2HZvv5SFk+fp7z8S7p7ucO4NA8/8/AFWXr/xVwK/97x71t/vz8vP7zcvrngSeAN/N61252Z/Zt4FHgfaqUBIHVgXmU3a1VOFfOJ12gXgK+DzSV3VUVHdeKxwR4OS9buiPbrIVtnwmc0yztUuCksuldgAn5+/gP8KmyecOBK3PeZwKnAWsD7+X9ng28WcN+HpT34aS8np9Rdm4C3yrbj9n5nDivbL1nk/5GpuTP9qi03hruZO8gnaOTy9ZzNOm8mkwuiZDuxH9W9rmtgMnNzpVtKT6PDy3L513Ab4E3SH+jO5ata0XgWtJFeyJwWNm8H5FKtn/N58BjpBuV75CuHZOA7ZvtX2m7Hwduy9/NDOBvQP/m+1DhezoP+D3wKvDZnLZQSQQ4mFQSeJt0/Tm8pe+L9Dd1ebP1nwKcWu0Yt5CvH9Gs1Je/h83z+ADgOtJ5+EYeH5bn7QU82OyzxwHXlF2zf0v623qNdH3rk+cNzut6Mx+nO8nnd8VzrcqJuAMwl4KLDPAT4F7gY8BypD/Qn5Z9wXPzMksAOwFzgAEVLi7Np0eQLzZAX9IFes08bwVgnfKTN48PzF/qAflz++XpQWUn33OkE7RPnj6xwr5tRfqD2xy4L6ftBNwMHMrCQeTLwKC8zeNJJ+WSBSfEHfkgrpM/swQL/2EsRbqTPAjYkvTHMawon2XTa5CqnLbL6/0W6Y+2V9kf1QTSxbN08vwJ+FOF9R8BvFTlXDkfuAZYOh+3Z4BDqh3Xasek+bIVtr1FPjdK+7IsKbCOzNPrk/4ANyHdBByYv4PeefoR0gW6L7AkuaqWFqqzquznQaTz/Zh8TPu0tI687HDSTdeOefoq4Iych4+RqnkPr7TeomNR9p0eSgrIpW3cTyqJtDqIVDmPy4PIh8Bh+Xs9Mu+j8vx/k86zJYGRpAvgNmXrfg/4XN7H80lB6Hukc/gw4IUK212NdK73Jl2D/g2c3NI+tPA9nUe6mB/LR9eQ5kFkZ1KgEqnEOwfYoPn3RapZmQMsnad7kALGptWOcQv5WvBd5+3uTLqw989pg4AvkK4TS5MC8NV5Xm9SACi/cXyYXB1GOtevJV0rlwb+Dvwyz/slKagskYctaXbj2nyoVoUyCJgRxdVN+wM/iYhpETGdVMI4oGz+h3n+hxFxA+kuZs0q261kPrCupD4RMTUinmhhmZ2BZyPigoiYGxEXAU8Bu5Ytc25EPBMR75LuWEcWbTQi/gMMlLQmqXrg/BaW+WtEzMzb/B3pQFbbz/Mi4on8mQ+brW8O6Xv8Penu7JiImFxlfSX7ANdHxC15vb8lXdA2L1vm1IiYlL8DIuKrEfHVCusbRPpjaJGkHqS2ie9ExNsR8SLwOxY+D6pp1TEpFxF3k+6o9shJe5OqSSfk6bHAGRFxX0TMi4hxpBLYpsDGpDvkb0bEOxHxXkTctQj7+UpE/CEf03crrKcPqRrulIi4MVdR7AR8PedhGukPfd/WrLeC84ExktYiXYDuacVn2+KliDgrIuYB40g3e0MkDScF+2/n73gC8BfKqtuAOyPi5ny9uYwUEE7M5/DFwAhJ/ZtvMCIm5nP9/XwN+j3/W71ZzRnASpJ2bGH910fEc5H8ixSYt2xhuZeAh/joPNwGmBMR99Z4jJvbW9KbpGvmtcAvIuLNvK2ZEXFFRMyJiLdJtRqfzfPeBy4h3dgiaR3SDc91kkT6e/hGRLyeP/uLsnx8SDpmK+dr9p2Ro0sl1YLITGBwlTrYFUnF+pKXctqCdTQLQnOAflW2+z8i4h3SxfEIYKqk6/MfRrX8lPI0tGy6vAdTrfm5gFQdsDXpjmIhkv5P0pO5p9mbpLvhwVXWOaloZkTcRyo+i3RhrdVC30FEzM/bKv8OCrfdzEzSiVXJYNJdS/PzYGjLi7eoLcek3Pl8dEE6gIUD/crA8ZLeLA2kksCK+f+XqtwoldSyn7V8r2cDT0fEr8rytwTpvC7l7wzS3Wpr1tuSK0kXs6NJ53B7W3Ac840QpGO5IlC6aJU0/+5eKxt/l3QDO69surSuhUgaIuliSVMkvUW66ar2t7eQfOH9aR6ar39HSfdKej0fm50K1n8hqfYDUoekC/N4Lce4uUsjon9E9CWVhMZIOjznaSlJZ0h6Ke/zv4H++UYHUgD/Ug4aB+R1vU8KzEsBD5bl46acDvAbUq3FPyQ9L+mEgvwB1YPIPaQ7tt0LlnmF9AWVrJTT2uId0g6WLF8+M9+lbEe6oD0FnFVDfkp5mtLGPJVcAHwVuKHsjwNI3fxIVUZ7k6rq+pPaY1TKeoV1FkZ4SUeRSjSv5PXXaqHvIJ9Iw1n4OyjcdjO3AsMkjaowfwbpDqb5eVDaXuFxraLWfF4AjJa0GamE8beyeZOAn+c/yNKwVC6lTiLdgbZ0o9R829X2s2p+8x/lGqQ2wPL8vU9qByrlb5mIWKfW9VaSz9UbSVVLLQWR1hybNuUhe4VUml+6LK0ef5eQ7qSD1FNwGdIduIo/0qJzSZ009iwlSOoNXEEqzQ/Jf9s3FKz/MmArScNIJZJSEKnlGFeUS7038lGNyvGkmo5N8j5/ppTlvPy9pDasLUnBrHTsZ5AC8jpl+Vg2UuM9uYR9fESsSmpXPU7S6KK8FQaRiJhFapz7o6Tdc/RbIkfmX+fFLgK+L2k5SYPz8n+t4XtpyQTgM5JWkrQsqVENWHC3sZukvqSDMZtUvdXcDcAakr4kqaekfYBPkBqL2iwiXiAVF7/XwuylSXXW04Gekn4ALFM2/zVSUbzmHliS1iDV1X6ZdCfxLUm1VvFcCuwsabSkJUgn3Puk9qpWi4hnSXXZF0naSlIvSUtK2lfSCflu8VLg55KWlrQyqSGvdB5UPK41mE46zqtWyeOLpEbdi4BbIqK8ZHMWcISkTXJPuL6Sds4XtPtJVXUn5vQlJW2RP/caKXj2ytuotp+FclXJscAe5VVSETGVVEXyO0nLSGqS9HFJFatkJI2QFJJG1LDp75IajV9sYd4EYCdJAyUtT+oFVEmrz+OSiJhEOv9+mb/jT5ECaVuvFeWWJl0PZkkaCnyzLSvJpdEfkhrIS3qRbuSmA3PzMdy+YB3TSe0155LacJ7M6a0+xuVyUNqB1FkG0j6/C7wpaWDOd3PnkzqJfFiqos21EmcBJ0n6WF73UEmfy+O7SFot33jOInUsaek6u0DVkyFS/f5xpF4o00kR9WhSnS6kC914Uk+fx0h1gm3qLhcRt5Dq8h4l9XAqv/A35Xy8Qmo0+izp7qr5OmaSeuIcT6qG+RbptwIz2pKnZuu+KyJaKmXdTCoSPkMqor/HwtUPpR9SzpT0ULXt5LvivwK/iohH8kX8u8AF+c6oWj6fJgWfP5DuPHYFdo2IDwq2ebqk0wtWeyzphPwjqYHvOdKd1t/z/GNId7XPky7mFwLn5PwUHddq+zKH3IstF783LVh8HKmUsFCbVUSMJzXMnkbqZDGR1AhcCgy7khpTXyY1Ou+TP3ob6Y/2VUml86fiftZgH1K1wZOSZueh9J2PIV2w/pvzeDnFVYjDSeda1Tv5iHilUjsP6Q71EVLj8z9Ix6mSVp3HLdiPVDf/CqlK+IcR8c82rKe5HwMbkC5615Oq8NrqIsra/3L127Gkm4c3SHf111ZZx4WkHm0XNktv7THep3SekHqZ3k3aV0i9YPuQ/r7vpeWu7BcA6/K/gfrbpL+Be3NV2D/5qP129Tw9m1QT9aeIuL1oZ0u9JsysE5H0fWB6RJzR6LxYx6TUgWMaqSfZs+22HQcRM7OuR+mH4rtExDbtuZ12+UWtmZk1jqQXSY3sRZ2i6rMtl0TMzKyt/Ch4MzNrM1dnLWbq1TfUZ2Cjs2Gt8KmPF/0ezDqiSS+/xMwZM9ryW5GF9Fhm5Yi5tT0gIN6dfnNE7LCo2+xsHEQWM/UZSO/Njmt0NqwVbr38mEZnwVpp9Gc2qct6Yu679F5z75qWfW/CH1v1K/muwkHEzKwiwSK9paHrcxAxM6tEQFOPqot1Zw4iZmZFtMhNK12ag4iZWUWuzqrGQcTMrIhLIoUcRMzMKhEuiVThIGJmVpFcEqnCQcTMrIh7ZxVyEDEzq8gN69U4iJiZVSJcnVWFg4iZWRGXRAo5iJiZVeTqrGocRMzMijS5OquIg4iZWSV+dlZVDiJmZhW5OqsaBxEzsyLunVXIQcTMrIhLIoUcRMzMKpEfe1KNg4iZWRGXRAo5iJiZVST3zqrCIdbMrEipSqvaUHU1+oakJyQ9LukiSUtKWkXSfZImSrpEUq+8bO88PTHPH9HOe9lmDiJmZpWU3idSy1C0GmkocCwwKiLWBXoA+wK/Ak6KiNWAN4BD8kcOAd7I6Sfl5TokBxEzs4pUlyCS9QT6SOoJLAVMBbYBLs/zxwG75/Hd8jR5/mipY7bwO4iYmRWpQ3VWREwBfgu8TAoes4AHgTcjYm5ebDIwNI8PBSblz87Nyw+q+77VgYOImVmRph61DTBY0viyYWxpFZIGkEoXqwArAn2BHRqyP3Xm3llmZpWoVY89mRERoyrM2xZ4ISKmp9XqSmALoL+knrm0MQyYkpefAgwHJufqr2WBmW3ci3blkoiZWZH69M56GdhU0lK5bWM08F/gduCLeZkDgWvy+LV5mjz/toiIuu5XnbgkYmZWoB7t2RFxn6TLgYeAucDDwJnA9cDFkn6W087OHzkbuEDSROB1Uk+uDslBxMysgvR23Pp0ioqIHwI/bJb8PLBxC8u+B+xVlw23MwcRM7NKlAeryEHEzKwi0dTkpuMiDiJmZgU66G/8OgwHETOzAg4ixRxEzMwqcZtIVQ4iZmYVCLkkUoWDiJlZAQeRYg4iZmYF3DurmIOImVklbhOpykHEzKyAq7OKOYiYmVXghvXqHETMzAo4iBRzEDEzK+IYUshBxMysErl3VjUOImZmBVydVcxBxMysAjesV+cgYmZWxDGkkCv7rCbH7LE+D54xhvGnH8C4E3ak9xI9OPdbO/DIXw5k/OkHcPo3tqNnj49Op98duRWPn3Mw9//5y4xc7WMNzHn3deyRh7LWKivy6Y1HLki75qrL2WKj9VhumV48/ND4BemXXXIhW22+4YJhuWV68dijExqR7Y5FqTqrlqG7chCxqlYc1Jev7rY+WxzzN0YdcQE9mprYa6s1ufj2p1jv0HGMOuIC+vTuycE7rAvA5zYawcdX7M+6XzmXo0/5J6cevU2D96B72nf/A7nkqusWSlt77XU472+XstkWWy6Uvtc+X+KO/zzIHf95kD+ddR4rj1iFT35qJFafICJpTUkTyoa3JH1d0kBJt0h6Nv8/IC8vSadKmijpUUkbLJadbQMHEatJzx5N9OnVkx5Nok/vnkydOZubH3hxwfzxT7/K0MH9ANhls49z4a1PAnD/U6+ybL/eLD+wbyOy3a1t/uktGTBg4EJpa6y1NquvsWbh56687BL2+MLe7Zm1TkVNqmkoEhFPR8TIiBgJbAjMAa4CTgBujYjVgVvzNMCOwOp5GAv8uZ12b5E5iFhVr8x8h5Mvf5BnLjiUFy4cy1vvvM+tD728YH7PHk3sN3ptbhn/EgArDurH5OlvL5g/ZfpsVhzUb7Hn29rm6isvY8+99ml0NjqMdqjOGg08FxEvAbsB43L6OGD3PL4bcH4k9wL9Ja1Qr32qp24XRCTNa1asHFE272RJUyQ1laUdJOm0PN4kaZykc3Jx80VJj5Wt69TFv0ftr3+/3uyy2aqsfdA5rLr/WfRdcgn23WatBfNPOXob7n5sCnc/MaWBubR6ePCB++jTpw9rf2LdRmelQ6g1gOQgMljS+LJhbIXV7gtclMeHRMTUPP4qMCSPDwUmlX1mck7rcLpj76x3c5FyITlw7EE6cJ8Fbm82X8DpwBLAwRER+cTZOiJmtHuuG2ib9VfixdfeYsasdwG4+u6JbLr2ilx821N8d/9NWW7ZPuxz6j8XLP/KzNkMW27pBdNDl+vHKzNnL/Z8W+tdecWl7PnFfRudjQ6lFaWMGRExqsq6egGfB77TfF6+pkTrc9hY3a4kUmAr4AlS3eN+Lcw/FRgEjImI+YsxXw03adrbbLzWCvTpne45th65Ek9Pep2DdliX7TZcmTEn3kCUnfrX3/s8Xxq9NgAbr7U8b73zAa++/k4jsm6tMH/+fK658nL2+KLbQ8rVuTprR+ChiHgtT79WqqbK/0/L6VOA4WWfG5bTOpzuWBLpI6nUd/GFiNgjj+9HKmJeA/xC0hIR8WGe9yXgSWCriJjbbH23S5qXx8dFxEnNN5iLtalou+SA+u3JYvLA069y1Z3Pcs9p+zN33nweeW46Z9/4GDOvPpqXX3uLO05Kd67X3D2RX154Hzfd/wKf22gET5xzMHPen8vhv/9Hg/egezrs4C9z953/4vWZM/jkmiP49nd/wIABAznhm19n5ozpfOmLu7Hup9bjsqtvAOA/d9/J0KHDGLHKqg3OecdSrdG8lUrXmZJrgQOBE/P/15SlHy3pYmATYFZZtVeHoohOV3paJJJmR0S/Zmm9gBeAtSLibUlXAudExHWSDgK+DKwF7BMRd5d97kVgVGuqs5qWHR69NzuuDntii8vky49pdBaslUZ/ZhMmPPTgIl/9ey+/egzbv7amzud/v9ODRdVZkvoCLwOrRsSsnDYIuBRYCXgJ2DsiXs/V56cBO5B6ch0cEeNbXnNjdceSSEs+B/QHHsvF0qWAd4FSJ/ungB8Al0r6XEQ80ZBcmtliJaBevyOMiHdIVeLlaTNJvbWaLxvAUfXZcvtym0iyH3BoRIyIiBHAKsB2kpYqLRAR/wGOBK6TtFJjsmlmi1eremd1S92+JJIDxQ7AEaW0iHhH0l3AruXLRsTfJQ0GbpJU+slveZvIoxExZnHk28wWj24cH2rS7YJI8/aQiJgDDGxhuT3LJs8rSz8XODdPjqh/Ds2sI+nOpYxadLsgYmZWKwl69HAQKeIgYmZWwAWRYg4iZmYFXJ1VzEHEzKwSuSRSjYOImVkF6XcijiJFHETMzCrq3r8BqYWDiJlZgab6Pjury3EQMTOrxG0iVTmImJlV4DaR6hxEzMwKOIYUcxAxMyvgkkgxBxEzswKOIcUcRMzMKpDcO6saBxEzs4r8O5Fq/FIqM7MCUm1D9fWov6TLJT0l6UlJm0kaKOkWSc/m/wfkZSXpVEkTJT0qaYP23s+2chAxMytQxzcbngLcFBFrAesBTwInALdGxOrArXkaYEdg9TyMBf5c7/2qFwcRM7NKaiyFVIshkpYFPgOcDRARH0TEm8BuwLi82Dhg9zy+G3B+JPcC/SWt0A57uMgcRMzMKhDQ1NRU0wAMljS+bBhbtqpVgOnAuZIelvQXSX2BIRExNS/zKjAkjw8FJpV9fnJO63DcsG5mVqAV7eozImJUhXk9gQ2AYyLiPkmn8FHVFQAREZKizRltEJdEzMwK1KlNZDIwOSLuy9OXk4LKa6Vqqvz/tDx/CjC87PPDclqH4yBiZlZJndpEIuJVYJKkNXPSaOC/wLXAgTntQOCaPH4tMCb30toUmFVW7dWhuDrLzKwC1fd3IscAf5PUC3geOJh0I3+ppEOAl4C987I3ADsBE4E5edkOyUHEzKxAvWJIREwAWmozGd3CsgEcVZ8tty8HETOzAj382JNCDiJmZhWk9g4HkSKdLohIWqZofkS8tbjyYmZdnwsixTpdEAGeAIL0O6CS0nQAKzUiU2bWNbkkUqzTBZGIGF59KTOz+nAMKdapfyciaV9J383jwyRt2Og8mVnXIXI33xr+dVedNohIOg3YGjggJ80BTm9cjsysy5Ho0VTb0F11uuqsMptHxAaSHgaIiNfzj3jMzOrG1VnFOnMQ+VBSE6kxHUmDgPmNzZKZdSUCmhxFCnXa6izgj8AVwHKSfgzcBfyqsVkys66mXm827Ko6bUkkIs6X9CCwbU7aKyIeb2SezKzrcRffYp02iGQ9gA9JVVqduVRlZh1Qdy9l1KLTXnglfQ+4CFiR9Kz9CyV9p7G5MrOupodU09BddeaSyBhg/YiYAyDp58DDwC8bmisz61JcnVWsMweRqSyc/545zcysLlLvrEbnomPrdEFE0kmkNpDXgSck3ZyntwceaGTezKyLqe3Vt91apwsiQKkH1hPA9WXp9zYgL2bWxTmGFOt0QSQizm50Hsys+3BJpFinCyIlkj4O/Bz4BLBkKT0i1mhYpsysSxH1e7OhpBeBt4F5wNyIGCVpIHAJMAJ4Edg7It5QilynkN6zPgc4KCIeqktG6qzTdvEFzgPOJR3nHYFLSQfDzKxuVONQo60jYmRElN61fgJwa0SsDtyapyFd01bPw1jgz4u6H+2lMweRpSLiZoCIeC4ivk/64s3M6kJKz86qZWij3YBxeXwcsHtZ+vmR3Av0l7TCou1N++i01VnA+/kBjM9JOgKYAizd4DyZWRfTivgwWNL4sukzI+LMsukA/iEpgDPyvCERUfppwqvAkDw+FJhU9tnJOa3D/YyhMweRbwB9gWNJbSPLAl9paI7MrMtpRcP6jLJqqpZ8OiKmSPoYcIukp8pnRkTkANOpdNogEhH35dG3+ejFVGZmdSPq98KpiJiS/58m6SpgY+A1SStExNRcXTUtLz4FKH8V+LCc1uF0uiCSv/yK0Toi9lyM2TGzrqxOD2CU1Bdoioi38/j2wE+Aa4EDgRPz/9fkj1wLHC3pYmATYFZZtVeH0umCCHBaozOwKNZfbQh3X/eNRmfDWmHARkc3OgvWSu8/Pan6QjWq0+9EhgBX5XX1BC6MiJskPQBcKukQ4CVg77z8DaTuvRNJXXwPrkcm2kOnCyIRcWuj82Bm3Uc9urBGxPPAei2kzwRGt5AewFF12HS763RBxMxscRH+xXo1DiJmZgX8FN9inT6ISOodEe83Oh9m1vVI9XvsSVfVaX+xLmljSY8Bz+bp9ST9ocHZMrMupkm1Dd1Vpw0iwKnALsBMgIh4BNi6oTkysy6n9J71akN31Zmrs5oi4qVmjV7zGpUZM+t60psNu3GEqEFnDiKTJG0MhKQewDHAMw3Ok5l1MZ25umZx6MxB5EhSldZKwGvAP3OamVnduCBSrNMGkYiYBuzb6HyYWdcl1e/ZWV1Vpw0iks6ihWdoRcTYBmTHzLoox5BinTaIkKqvSpYE9mDh5++bmS0SN6xX12mDSEQs9CpcSRcAdzUoO2bWRTmGFOu0QaQFq/DRW8HMzBZdN/8hYS06bRCR9AYftYk0Aa/z0UvuzczqQjiKFOmUQUTpF4br8dGbvubnRyebmdWNgJ7+oUihTvn15IBxQ0TMy4MDiJm1C0k1Dd1Vpwwi2QRJ6zc6E2bWdaXeWX4AY5FOF0Qklarg1gcekPS0pIckPSzpoUbmzcy6mBofvlhrQURSj3ytui5PryLpPkkTJV0iqVdO752nJ+b5I9prFxdVZ2wTuR/YAPh8ozNiZl1fnX8n8jXgSWCZPP0r4KSIuFjS6cAhwJ/z/29ExGqS9s3L7VPPjNRLpyuJkEqYRMRzLQ2NzpyZdR31rM6SNAzYGfhLnhawDXB5XmQcsHse3y1Pk+ePVgdteOmMJZHlJB1XaWZE/H5xZsbMujLRo/Zr92BJ48umz4yIM8umTwa+BSydpwcBb0bE3Dw9GRiax4eSn8AREXMlzcrLz2j9PrSvzhhEegD9wJ23zax9iVb9Yn1GRIxqcT3SLsC0iHhQ0lb1yV3H0BmDyNSI+EmjM2Fm3UD9el5tAXxe0k6kZ/0tA5wC9JfUM5dGhvHRb9+mAMOBybkz0bLkt7h2NJ22TcTMbHFokmoaikTEdyJiWESMIL3C4raI2B+4HfhiXuxA4Jo8fm2eJs+/raP+Hq4zBpHRjc6AmXUPpeqsdnzH+reB4yRNJLV5nJ3TzwYG5fTj6MCPdOp01VkR8Xqj82Bm3Ue9X0oVEXcAd+Tx54GNW1jmPWCvum64nXS6IGJmtriIzlldszg5iJiZVSK69XOxauEgYmZWwCGkmIOImVkFfj1udQ4iZmYFHEKKOYiYmVUkmrrzc95r4CBiZlaBe2dV5yBiZlbAvbOKOYiYmRVwCCnmIGJmVol/J1KVg4iZWQVuE6m60sJLAAAS50lEQVTOQcTMrIB/J1LMQcTMrIBjSDEHETOzClJ1lqNIEQcRM7MCLokUcxAxM6tIyCWRQg4iZmYFXBIp5t5rZmYVSNBDqmkoXo+WlHS/pEckPSHpxzl9FUn3SZoo6RJJvXJ67zw9Mc8f0e4720YOImZmBer0jvX3gW0iYj1gJLCDpE2BXwEnRcRqwBvAIXn5Q4A3cvpJebkOyUHEzKyAavxXJJLZeXKJPASwDXB5Th8H7J7Hd8vT5Pmj1UF/Ou82EWuTN998kyMPP5T/PvE4kjj9zHNYaqmlOOaoI3hn9mxWHjGCc8//G8sss0yjs9ptHbP/1hy0x+ZEBE9MfIWxP/wrm663Kr/8xh70WqIHDz85iSN+/DfmzZvPlhuuzmUnjeXFV2YCcM1tE/jlmTc1eA8aL72Uqk7rknoADwKrAX8EngPejIi5eZHJwNA8PhSYBBARcyXNAgYBM+qTm/pxScTa5P++8TW2334HHnn8Ke5/8BHWWnttjjz8UH72ixMZP+ExPr/bHpz0u980Opvd1orLLctX9/ssW+z/a0bt9Qt6NDWxz46j+MtPDmDMCecyaq9f8PLU1/nyrpss+MzdDz/HpvueyKb7nugAUqYVJZHBksaXDWPL1xMR8yJiJDAM2BhYqwG7U3cOItZqs2bN4q67/s1BX0nVt7169aJ///5MfPYZPr3lZwDYZtvtuPqqKxqZzW6vZ48e9Om9BD16NNFnyV7MefcDPvhwLhNfngbAbfc+xe6jRzY4lx1fK9pEZkTEqLLhzJbWFxFvArcDmwH9JZVqhIYBU/L4FGB42r56AssCM9tvL9vOQcRa7cUXXmDw4OUYe8jBbDpqfY4ceyjvvPMOa39iHf5+7TUAXHn5ZUyeNKnBOe2+Xpk+i5PPv5VnbvwpL9zyc96a/S6X/+MhevbswQafWAmAPbYdybAhAxZ8ZpNPrcJ9l5zA1acdydqrLt+orHcoom69s5aT1D+P9wG2A54kBZMv5sUOBK7J49fmafL82yIi6rt39dHtgoikeZImSHpc0t/LDuwISe/meaVhTNnnRkoKSTs0W9/s5tvo6ubOncuEhx/isMOP5N7xD7NU37789tcncsZZ53Dm6X9i8403ZPbst+nVq1ejs9pt9V+6D7ts9UnW3uWHrLr99+jbpxf77rQRY044l18fvyd3XvB/vP3O+8ybPx+ACU9NYs2d/h+b7HMif774X1x60tgqW+guaq3MqtpwsgJwu6RHgQeAWyLiOuDbwHGSJpLaPM7Oy58NDMrpxwEntMvu1UF3bFh/N9dLImkccBTw8zzvudK8FuwH3JX/79YVxkOHDWPosGFsvEmqT9/jC1/kd78+kR/++Kdcd+M/AHj2mWe48YbrG5nNbm2bTdbixVdmMuONdI9z9W2PsOl6q3DxDQ+w7SEnAzB607VYfeWPAfD2O+8t+OzNd/2XU77Tg0H9+zLzzXcWf+Y7ktq671YVEY8C67eQ/jypfaR5+nvAXou+5fbX7UoizdzDR70hKspd6/YCDgK2k7RkO+erQ1t++eUZNmw4zzz9NAB33HYra639CaZNS3Xt8+fP58Rf/IzDxh7RyGx2a5NefZ2NP7kKfZZcAoCtN16Tp194jeUG9AOg1xI9Of6g7Tjr8rsAGDJo6QWfHbXOyjRJDiCZahy6q+5YEgEWdLcbzUfFR4CPS5pQNn1MRNwJbA68EBHPSboD2BmoudU499IYCzB8pZUWNesdwu9P/gMHj9mfDz74gBGrrsqZfzmXv11wPmec/kcAdtt9T8YcdHCDc9l9PfD4S1z1z4e558JvM3fefB55ajJnX3E3PzpqF3bccl2amsRZl93Jvx54BoA9tl2fw/bakrnz5vHeex8y5jvnNngPOobUxbc7h4jq1EHbatqNpHnAY6QSyJPA1hExLz9W4LqIWLeFz5wGPBIRZ0n6PDAmIr6Y582OiH61bn/DDUfF3feNr8Oe2OIyYKOjG50Fa6X3n76U+XOmLfLVf+1Prh/nXn17TctuttqAByNi1KJus7PpjtVZpTaRlUk3GkcVLZxLLF8AfiDpReAPpEcWLF30OTPrGurUsN5ldccgAkBEzAGOBY4v66fdktHAoxExPCJGRMTKpKqsPRZHPs2sser07Kwuq9sGEYCIeBh4lNTjCnKbSNlwbJ53VbOPXlH2maUkTS4bjls8uTezxcEN68W6XcN68/aLiNi1bLJPjeu4lvRjICKiWwdisy6vO0eIGnS7IGJmVqtUynAUKeIgYmZWier3FN+uykHEzKyIg0ghBxEzs4q6d/fdWjiImJkV6M7dd2vhIGJmVkF3775bCwcRM7MijiKFHETMzAr4AYzFHETMzAo4hBRzEDEzq8SNIlU5iJiZFXAX32J+7pOZWQWiPk/xlTRc0u2S/ivpCUlfy+kDJd0i6dn8/4CcLkmnSpoo6VFJG7T7zraRg4iZWYE6PcV3LnB8RHwC2BQ4StIngBOAWyNideDWPA2wI7B6HsYCf67bDtWZg4iZWQFJNQ1FImJqRDyUx98mvVV1KLAbMC4vNg7YPY/vBpwfyb1Af0krtMf+LSq3iZiZFWhFD9/BksrffX1mRJz5v+vTCGB94D5gSERMzbNeBYbk8aHApLKPTc5pU+lgHETMzAq0oll9RrV3rEvqR3qp3dcj4q3yEkxEhKRoYzYbxtVZZmZF6tQoImkJUgD5W0RcmZNfK1VT5f+n5fQpwPCyjw/LaR2Og4iZWQWll1LV8q9wPanIcTbwZET8vmzWtcCBefxA4Jqy9DG5l9amwKyyaq8OxdVZZmaV1O+lVFsABwCPSZqQ074LnAhcKukQ4CVg7zzvBmAnYCIwBzi4LrloBw4iZmZF6hBEIuKugjWNbmH5AI5a9C23PwcRM7OK/FKqahxEzMwK+CG+xRxEzMwq8PMXq3MQMTMr4ihSyEHEzKyAX0pVzEHEzKyAQ0gxBxEzs0pqeMx7d+cgYmZWyFGkiIOImVkFpZdSWWUOImZmBRxDijmImJkVcO+sYg4iZmZFHEMKOYiYmRVwDCnmIGJmVoHcxbcqBxEzswJ+im8xBxEzsyKOIYUcRMzMCtTpzYZdlt+xbmZWUa1vWK8eaSSdI2mapMfL0gZKukXSs/n/ATldkk6VNFHSo5I2aMedXCQOImZmFZR+sV7LUIPzgB2apZ0A3BoRqwO35mmAHYHV8zAW+HMddqddOIiYmS0GEfFv4PVmybsB4/L4OGD3svTzI7kX6C9phcWT09ZxEDEzK1DHkkhLhkTE1Dz+KjAkjw8FJpUtNzmndThuWDczK9CKLr6DJY0vmz4zIs6s9cMREZKiVZnrABxEzMwqkFrVO2tGRIxq5SZek7RCREzN1VXTcvoUYHjZcsNyWofj6iwzsyKqcWiba4ED8/iBwDVl6WNyL61NgVll1V4diksiZmYF6vWLdUkXAVuRqr0mAz8ETgQulXQI8BKwd178BmAnYCIwBzi4LploBw4iZmYF6vXsrIjYr8Ks0S0sG8BR9dly+3IQMTMr4B+sF3MQMTMrID/Gt5CDiJlZBX7HenVKVW+2uEiaTmpA62oGAzManQlrla58zFaOiOUWdSWSbiJ9T7WYERHNH2vS5TmIWF1IGt+GPvLWQD5mVg/+nYiZmbWZg4iZmbWZg4jVS83PCLIOw8fMFpnbRMzMrM1cEjEzszZzEDEzszZzELF2IWlQo/NgZu3PQcTqTtL2wMmSBsjPjOjwfIxsUTiIWF3lAPIb4OyIeAM/WqczGAQgydcDazWfNFY3knYgBZDDI+IOScOB70qq9bERthjlFx59DHhJ0ucjYr4DibWWTxirp02ApSLiXknLAVcB0yKiqz6fqVOLZBrphUfnStqpFEgk9Wh0/qxzcFWDLTJJWwCfjYgfS1pV0j2kG5QzIuKssuWGR8SkhmXUWhQRl0r6ALhY0n4RcX2pRCJp17RIXNfYXFpH5ZKItVlZ1cf2wLIAEXEg8G9gQLMAsj9wqqSlF3tGbSGSdpD0A0mbl9Ii4mpSieRiSbvkEsnhwOnAU43Kq3V8LonYolgWeAN4D1hQ/RER35a0nKTbI2JrSV8AvgGMiYi3G5RX+8hngCOBHSQ9DvwReD4irsg9tc6TdB2wMbBTRExsYF6tg3NJxNpE0irALyWtCrwGLJ3T+wBExFeA5yVNBb5LCiD/bVR+bSF/B/4J7AnMAfYBLpC0akRcDuwNfB74UkQ80rhsWmfgkoi11ZLANOBw4GNAqa2jt6T3cqPtIZL+D7jBAaSxJK0FvB8RL0TEPZJ6A1+PiK9L+hJwAtBP0hTgZGD5iPigkXm2zsEPYLQ2k7Qu8DngGGAl4FpgfeAV4ANgNrB7RHzYsEwaknYC/h9wQKlqStJqwFjgaVJJ8VDScdscuCMiXmhQdq2TcUnEaiZpK9I5c2dEvB8Rj0v6EOgLrA2cBzwG9CNVb013AGksSZ8jBZAfRcRESf2AAGaSAv9RwI4R8e+8/DPhO0trBZdErCaSlgWuA1YFTgHmRcTv8rxVgX2BFYALIuL+hmXUFpD0SeARYNuIuE3Sx4EzgOMi4tE8fxywV0Q818i8WuflhnWrSUTMIgWRD4BngB0lnSdpD2A6qYfPG8Dekpb085gap+y7f5H0g8+9JY0gvYTq5hxAmiLiMVJ37K3840JrKwcRKyRp+bKL0u+BG4G3I2JboFdO+zfw2fz/LyLiPVeJNFQvgNyden9S9eJzwNUR8ZscQOZLGkmq1ropIuY1LrvWmTmIWEWSdiY1lg8u+2Hha8DIXIW1KXAQqTfPnsDDEfF6I/JqSX4A5sWSfiRpz4h4j9SD7kJgM4AcQA4BTgXOiogpjcuxdXZuE7EW5Ycpfg/4eUTcJKlXRHyQH6o4ntRwvnfpcRiSloqIOQ3McreXj9mPgfNJ3a5XBH4dEc/mJwX8idSo/g/gCOCIiHi8Ufm1rsFBxP6HpIHADGDPiLg6N8j+APhmREyTdBiwXkQcXQouDc2wlR+z3SLi75KGAT8HTo+Ie/IyvYBLSI+p2ci/3bF6cHWW/Y9cJbUr8ANJnyI1yD6cn/gKqcfPNpLWcADpGMqO2YmSlomIycBg4DeSTpZ0HKkr9iHAag4gVi/+nYi1KD/JdR4wAfhuRJwsqUdEzIuI+yVd1Og82sLyMZsPPCjpJtJN4u+A5Ug/JlwH+IbbrayeXJ1lhSRtB/wB2CQiZknqHRHvNzpfVpmkbUntHitExGs5rQkY6He7WL25OssKRcQtpCfw3i9poANIxxcR/wR2Bm7Pby4kIuY7gFh7cHWWVRURN+ZG2X9KGkV+KV6j82WVlR2zmySNioj5jc6TdU2uzrKaSeoXEbMbnQ+rnY+ZtTcHETMzazO3iZiZWZs5iJiZWZs5iJiZWZs5iJiZWZs5iFiHImmepAmSHpd0maSlFmFdW0kqPSDy85JOKFi2v6SvtmEbP8rvka8pvdky50n6Yiu2NUKSH5hoHYqDiHU070bEyIhYl/QCrCPKZypp9XkbEddGxIkFi/QHWh1EzLo7BxHryO4EVst34E9LOh94HBguaXtJ90h6KJdY+kF6HLqkpyQ9RHrHCTn9IEmn5fEhkq6S9EgeNgdOBD6eS0G/yct9U9IDkh6V9OOydX1P0jOS7gLWrLYTkg7L63lE0hXNSlfbShqf17dLXr6HpN+UbfvwRf0izdqLg4h1SJJ6AjsCj+Wk1YE/RcQ6wDvA90nvDt+A9H6T4yQtCZxFeprthsDyFVZ/KvCviFgP2AB4AjgBeC6Xgr6ZX+60OrAxMBLYUNJnJG1Iep/8SGAnYKMadufKiNgob+9J0pN0S0bkbewMnJ734RBgVkRslNd/mKRVatiO2WLnx55YR9NH0oQ8fidwNunlSi9FxL05fVPgE8Dd+c29vYB7gLWAFyLiWQBJfwXGtrCNbYAxAPm1sLMkDWi2zPZ5eDhP9yMFlaWBq0ov4JJ0bQ37tK6kn5GqzPoBN5fNuzQ/kuRZSc/nfdge+FRZe8myedvP1LAts8XKQcQ6mncjYmR5Qg4U75QnAbdExH7Nllvoc4tIwC8j4oxm2/h6G9Z1HrB7RDwi6SBgq7J5zR8ZEXnbx0REebBB0og2bNusXbk6yzqje4EtJK0GIKmvpDWAp4AR+U2MAPtV+PytwJH5sz0kLQu8TSpllNwMfKWsrWVofiLuv4HdJfXJr5zdtYb8Lg1MlbQEsH+zeXtJasp5XhV4Om/7yLw8ktaQ1LeG7Zgtdi6JWKcTEdPzHf1Fknrn5O9HxDOSxgLXS5pDqg5buoVVfA04U9IhwDzgyIi4R9LduQvtjbldZG3gnlwSmg18OSIeknQJ6e2O04AHasjy/wPuA6bn/8vz9DJwP7AM6Z3n70n6C6mt5CGljU8Hdq/t2zFbvPwARjMzazNXZ5mZWZs5iJiZWZs5iJiZWZs5iJiZWZs5iJiZWZs5iJiZWZs5iJiZWZv9f2FaIDS45VPsAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4c9f4a0048>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def model_a(labels,title,X,Xt,y,yt):\n",
" clf = MultinomialNB()\n",
" clf.fit(X, y)\n",
" pred = clf.predict(Xt)\n",
" score = metrics.accuracy_score(yt, pred)\n",
" pp(\"score: \" + str(score))\n",
" cm = metrics.confusion_matrix(yt, pred, labels=labels)\n",
" plot_confusion_matrix(cm, classes=labels, title=title)\n",
"model_a(labels=[\"FAKE\",\"REAL\"], title=\"Count Vectorizer, Multinomial Naive Bayes\", X=count_train_1, Xt=count_test_1, y=y1,yt=yt1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* comparing to PassiveAggresiveClassifier"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jonas/.local/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:117: DeprecationWarning: n_iter parameter is deprecated in 0.19 and will be removed in 0.21. Use max_iter and tol instead.\n",
" DeprecationWarning)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"accuracy: 0.935\n",
"Confusion matrix, without normalization\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4c9f313400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"linear_clf = PassiveAggressiveClassifier(n_iter=50)\n",
"\n",
"linear_clf.fit(tfidf_train_1, y1)\n",
"pred = linear_clf.predict(tfidf_test_1)\n",
"score = metrics.accuracy_score(yt1, pred)\n",
"print(\"accuracy: %0.3f\" % score)\n",
"cm = metrics.confusion_matrix(yt1, pred, labels=['FAKE', 'REAL'])\n",
"plot_confusion_matrix(cm, classes=['FAKE', 'REAL'], title= \"TFIDF Vectorite, PassiveAggressive Classifier\")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"#clf = MultinomialNB(alpha=0.1)\n",
"#last_score = 0\n",
"#for alpha in np.arange(0,1,.1):\n",
"# nb_classifier = MultinomialNB(alpha=alpha)\n",
"# nb_classifier.fit(tfidf_train_1, y1)\n",
"# pred = nb_classifier.predict(tfidf_test_1)\n",
"# score = metrics.accuracy_score(yt1, pred)\n",
"# if score > last_score:\n",
"# clf = nb_classifier\n",
"# print(\"Alpha: {:.2f} Score: {:.5f}\".format(alpha, score))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* try to get most important features"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"| |0 |1 |2 |\n",
"|-------------------------------------------|\n",
"|**0** |FAKE |-5.288437174814149|2016 |\n",
"|**0** |FAKE |-4.173273952371509|october |\n",
"|**0** |FAKE |-3.1422466009406578|election |\n",
"|**0** |FAKE |-3.0941004148189317|hillary |\n",
"|**0** |FAKE |-3.057544511024138|article |\n",
"|**0** |FAKE |-2.895415419748362|november |\n",
"|**0** |FAKE |-2.71535929690965|advertisement|\n",
"|**0** |FAKE |-2.5250775142313033|share |\n",
"|**0** |FAKE |-2.4821900429193917|print |\n",
"|**0** |FAKE |-2.293722835404013|source |\n",
"|**0** |FAKE |-2.224201011195553|mosul |\n",
"|**0** |FAKE |-2.219293536986114|fbi |\n",
"|**0** |FAKE |-2.154063293310608|28 |\n",
"|**0** |FAKE |-2.093787619812607|snip |\n",
"|**0** |FAKE |-2.0371567984631045|oct |\n",
"|**0** |FAKE |-2.0091297136096937|podesta |\n",
"|**0** |FAKE |-1.9792915407008016|uk |\n",
"|**0** |FAKE |-1.9700803192787941|email |\n",
"|**0** |FAKE |-1.94935091960633|donald |\n",
"|**0** |FAKE |-1.8823901751085903|watch |\n",
"|**0** |FAKE |-1.8573641352169936|establishment|\n",
"|**0** |FAKE |-1.85656476829781|kelly |\n",
"|**0** |FAKE |-1.8051549969069207|daesh |\n",
"|**0** |FAKE |-1.7994528991778074|photo |\n",
"|**0** |FAKE |-1.7940036317806896|jewish |\n",
"|**0** |FAKE |-1.769790301111315|com |\n",
"|**0** |FAKE |-1.7628662406412126|just |\n",
"|**0** |FAKE |-1.7588784544047598|ayotte |\n",
"|**0** |FAKE |-1.7586722326248487|obamacare |\n",
"|**0** |FAKE |-1.7183468795344152|wikileaks |\n",
"**Type:** class 'list'\n",
"\n"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"| |0 |1 |2 |\n",
"|-------------------------------------------|\n",
"|**0** |FAKE |-5.288437174814149|2016 |\n",
"|**0** |FAKE |-4.173273952371509|october |\n",
"|**0** |FAKE |-3.1422466009406578|election |\n",
"|**0** |FAKE |-3.0941004148189317|hillary |\n",
"|**0** |FAKE |-3.057544511024138|article |\n",
"|**0** |FAKE |-2.895415419748362|november |\n",
"|**0** |FAKE |-2.71535929690965|advertisement|\n",
"|**0** |FAKE |-2.5250775142313033|share |\n",
"|**0** |FAKE |-2.4821900429193917|print |\n",
"|**0** |FAKE |-2.293722835404013|source |\n",
"|**0** |FAKE |-2.224201011195553|mosul |\n",
"|**0** |FAKE |-2.219293536986114|fbi |\n",
"|**0** |FAKE |-2.154063293310608|28 |\n",
"|**0** |FAKE |-2.093787619812607|snip |\n",
"|**0** |FAKE |-2.0371567984631045|oct |\n",
"|**0** |FAKE |-2.0091297136096937|podesta |\n",
"|**0** |FAKE |-1.9792915407008016|uk |\n",
"|**0** |FAKE |-1.9700803192787941|email |\n",
"|**0** |FAKE |-1.94935091960633|donald |\n",
"|**0** |FAKE |-1.8823901751085903|watch |\n",
"|**0** |FAKE |-1.8573641352169936|establishment|\n",
"|**0** |FAKE |-1.85656476829781|kelly |\n",
"|**0** |FAKE |-1.8051549969069207|daesh |\n",
"|**0** |FAKE |-1.7994528991778074|photo |\n",
"|**0** |FAKE |-1.7940036317806896|jewish |\n",
"|**0** |FAKE |-1.769790301111315|com |\n",
"|**0** |FAKE |-1.7628662406412126|just |\n",
"|**0** |FAKE |-1.7588784544047598|ayotte |\n",
"|**0** |FAKE |-1.7586722326248487|obamacare |\n",
"|**0** |FAKE |-1.7183468795344152|wikileaks |\n",
"|**0** |REAL |5.096605047307298|said |\n",
"|**0** |REAL |3.1397974848991046|says |\n",
"|**0** |REAL |2.818912641958379|gop |\n",
"|**0** |REAL |2.57537492151748|marriage |\n",
"|**0** |REAL |2.5177436576284276|conservative|\n",
"|**0** |REAL |2.354337198374282|friday |\n",
"|**0** |REAL |2.3385922083327895|tuesday |\n",
"|**0** |REAL |2.2569380543369473|debate |\n",
"|**0** |REAL |2.2556129553493736|cruz |\n",
"|**0** |REAL |2.0914301251998175|continue |\n",
"|**0** |REAL |2.0725206776570992|rush |\n",
"|**0** |REAL |2.023007202992292|cnn |\n",
"|**0** |REAL |1.964077452159713|monday |\n",
"|**0** |REAL |1.9351283039486071|attacks |\n",
"|**0** |REAL |1.9103078111895166|jobs |\n",
"|**0** |REAL |1.9070984286838095|2013 |\n",
"|**0** |REAL |1.9033167532673034|say |\n",
"|**0** |REAL |1.888898000457345|convention|\n",
"|**0** |REAL |1.8787265215846798|gay |\n",
"|**0** |REAL |1.855658720921873|fox |\n",
"|**0** |REAL |1.8532683881897454|saturday |\n",
"|**0** |REAL |1.8357678493688905|2012 |\n",
"|**0** |REAL |1.833777119624796|candidates|\n",
"|**0** |REAL |1.8239594739918263|state |\n",
"|**0** |REAL |1.8239506711142206|march |\n",
"|**0** |REAL |1.7444175658575831|isn |\n",
"|**0** |REAL |1.7311078065383732|religious |\n",
"|**0** |REAL |1.7224487358895095|strategy |\n",
"|**0** |REAL |1.6450903626621578|reform |\n",
"|**0** |REAL |1.6171148546777458|paris |\n",
"**Type:** class 'list'\n",
"\n"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def most_informative_feature_for_binary_classification(vectorizer, classifier, n=100):\n",
" \"\"\"\n",
" See: https://stackoverflow.com/a/26980472\n",
" \n",
" Identify most important features if given a vectorizer and binary classifier. Set n to the number\n",
" of weighted features you would like to show. (Note: current implementation merely prints and does not \n",
" return top classes.)\n",
" \"\"\"\n",
"\n",
" class_labels = classifier.classes_\n",
" feature_names = vectorizer.get_feature_names()\n",
" topn_class1 = sorted(zip(classifier.coef_[0], feature_names))[:n]\n",
" topn_class2 = sorted(zip(classifier.coef_[0], feature_names))[-n:]\n",
" \n",
" l = []\n",
" \n",
" for coef, feat in topn_class1:\n",
" l.append((class_labels[0], coef, feat))\n",
"\n",
" jupyter_print(l)\n",
"\n",
" for coef, feat in reversed(topn_class2):\n",
" l.append((class_labels[1], coef, feat))\n",
" \n",
" jupyter_print(l)\n",
"\n",
"\n",
"most_informative_feature_for_binary_classification(tfidf_vectorizer_1, linear_clf, n=30)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----\n",
"## configuration 2\n",
"\n",
"* read data"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"----\n",
"#### Train Data:"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>label</th>\n",
" <th>statement</th>\n",
" <th>subjects</th>\n",
" <th>speaker</th>\n",
" <th>job</th>\n",
" <th>state</th>\n",
" <th>party</th>\n",
" <th>#barely_true</th>\n",
" <th>#false</th>\n",
" <th>#half_true</th>\n",
" <th>#mostly_true</th>\n",
" <th>#pants_on_fire</th>\n",
" <th>context</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2635.json</td>\n",
" <td>false</td>\n",
" <td>Says the Annies List political group supports ...</td>\n",
" <td>abortion</td>\n",
" <td>dwayne-bohac</td>\n",
" <td>State representative</td>\n",
" <td>Texas</td>\n",
" <td>republican</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>a mailer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1123.json</td>\n",
" <td>false</td>\n",
" <td>Health care reform legislation is likely to ma...</td>\n",
" <td>health-care</td>\n",
" <td>blog-posting</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>none</td>\n",
" <td>7.0</td>\n",
" <td>19.0</td>\n",
" <td>3.0</td>\n",
" <td>5.0</td>\n",
" <td>44.0</td>\n",
" <td>a news release</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>12465.json</td>\n",
" <td>true</td>\n",
" <td>The Chicago Bears have had more starting quart...</td>\n",
" <td>education</td>\n",
" <td>robin-vos</td>\n",
" <td>Wisconsin Assembly speaker</td>\n",
" <td>Wisconsin</td>\n",
" <td>republican</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>5.0</td>\n",
" <td>1.0</td>\n",
" <td>a an online opinion-piece</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>5947.json</td>\n",
" <td>false</td>\n",
" <td>When Mitt Romney was governor of Massachusetts...</td>\n",
" <td>history,state-budget</td>\n",
" <td>mitt-romney</td>\n",
" <td>Former governor</td>\n",
" <td>Massachusetts</td>\n",
" <td>republican</td>\n",
" <td>34.0</td>\n",
" <td>32.0</td>\n",
" <td>58.0</td>\n",
" <td>33.0</td>\n",
" <td>19.0</td>\n",
" <td>an interview with CBN News</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>620.json</td>\n",
" <td>true</td>\n",
" <td>McCain opposed a requirement that the governme...</td>\n",
" <td>federal-budget</td>\n",
" <td>barack-obama</td>\n",
" <td>President</td>\n",
" <td>Illinois</td>\n",
" <td>democrat</td>\n",
" <td>70.0</td>\n",
" <td>71.0</td>\n",
" <td>160.0</td>\n",
" <td>163.0</td>\n",
" <td>9.0</td>\n",
" <td>a radio ad</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id label statement \\\n",
"0 2635.json false Says the Annies List political group supports ... \n",
"3 1123.json false Health care reform legislation is likely to ma... \n",
"5 12465.json true The Chicago Bears have had more starting quart... \n",
"12 5947.json false When Mitt Romney was governor of Massachusetts... \n",
"16 620.json true McCain opposed a requirement that the governme... \n",
"\n",
" subjects speaker job \\\n",
"0 abortion dwayne-bohac State representative \n",
"3 health-care blog-posting NaN \n",
"5 education robin-vos Wisconsin Assembly speaker \n",
"12 history,state-budget mitt-romney Former governor \n",
"16 federal-budget barack-obama President \n",
"\n",
" state party #barely_true #false #half_true #mostly_true \\\n",
"0 Texas republican 0.0 1.0 0.0 0.0 \n",
"3 NaN none 7.0 19.0 3.0 5.0 \n",
"5 Wisconsin republican 0.0 3.0 2.0 5.0 \n",
"12 Massachusetts republican 34.0 32.0 58.0 33.0 \n",
"16 Illinois democrat 70.0 71.0 160.0 163.0 \n",
"\n",
" #pants_on_fire context \n",
"0 0.0 a mailer \n",
"3 44.0 a news release \n",
"5 1.0 a an online opinion-piece \n",
"12 19.0 an interview with CBN News \n",
"16 9.0 a radio ad "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"----\n",
"#### Test Data:"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>label</th>\n",
" <th>statement</th>\n",
" <th>subjects</th>\n",
" <th>speaker</th>\n",
" <th>job</th>\n",
" <th>state</th>\n",
" <th>party</th>\n",
" <th>#barely_true</th>\n",
" <th>#false</th>\n",
" <th>#half_true</th>\n",
" <th>#mostly_true</th>\n",
" <th>#pants_on_fire</th>\n",
" <th>context</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>11972.json</td>\n",
" <td>true</td>\n",
" <td>Building a wall on the U.S.-Mexico border will...</td>\n",
" <td>immigration</td>\n",
" <td>rick-perry</td>\n",
" <td>Governor</td>\n",
" <td>Texas</td>\n",
" <td>republican</td>\n",
" <td>30</td>\n",
" <td>30</td>\n",
" <td>42</td>\n",
" <td>23</td>\n",
" <td>18</td>\n",
" <td>Radio interview</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11685.json</td>\n",
" <td>false</td>\n",
" <td>Wisconsin is on pace to double the number of l...</td>\n",
" <td>jobs</td>\n",
" <td>katrina-shankland</td>\n",
" <td>State representative</td>\n",
" <td>Wisconsin</td>\n",
" <td>democrat</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>a news conference</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11096.json</td>\n",
" <td>false</td>\n",
" <td>Says John McCain has done nothing to help the ...</td>\n",
" <td>military,veterans,voting-record</td>\n",
" <td>donald-trump</td>\n",
" <td>President-Elect</td>\n",
" <td>New York</td>\n",
" <td>republican</td>\n",
" <td>63</td>\n",
" <td>114</td>\n",
" <td>51</td>\n",
" <td>37</td>\n",
" <td>61</td>\n",
" <td>comments on ABC's This Week.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5962.json</td>\n",
" <td>true</td>\n",
" <td>Over the past five years the federal governmen...</td>\n",
" <td>federal-budget,pensions,retirement</td>\n",
" <td>brendan-doherty</td>\n",
" <td>NaN</td>\n",
" <td>Rhode Island</td>\n",
" <td>republican</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>a campaign website</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7070.json</td>\n",
" <td>true</td>\n",
" <td>Says that Tennessee law requires that schools ...</td>\n",
" <td>county-budget,county-government,education,taxes</td>\n",
" <td>stand-children-tennessee</td>\n",
" <td>Child and education advocacy organization.</td>\n",
" <td>Tennessee</td>\n",
" <td>none</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>in a post on Facebook.</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id label statement \\\n",
"0 11972.json true Building a wall on the U.S.-Mexico border will... \n",
"1 11685.json false Wisconsin is on pace to double the number of l... \n",
"2 11096.json false Says John McCain has done nothing to help the ... \n",
"5 5962.json true Over the past five years the federal governmen... \n",
"6 7070.json true Says that Tennessee law requires that schools ... \n",
"\n",
" subjects speaker \\\n",
"0 immigration rick-perry \n",
"1 jobs katrina-shankland \n",
"2 military,veterans,voting-record donald-trump \n",
"5 federal-budget,pensions,retirement brendan-doherty \n",
"6 county-budget,county-government,education,taxes stand-children-tennessee \n",
"\n",
" job state party \\\n",
"0 Governor Texas republican \n",
"1 State representative Wisconsin democrat \n",
"2 President-Elect New York republican \n",
"5 NaN Rhode Island republican \n",
"6 Child and education advocacy organization. Tennessee none \n",
"\n",
" #barely_true #false #half_true #mostly_true #pants_on_fire \\\n",
"0 30 30 42 23 18 \n",
"1 2 1 0 0 0 \n",
"2 63 114 51 37 61 \n",
"5 1 2 1 1 0 \n",
"6 0 0 0 0 0 \n",
"\n",
" context \n",
"0 Radio interview \n",
"1 a news conference \n",
"2 comments on ABC's This Week. \n",
"5 a campaign website \n",
"6 in a post on Facebook. "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"----"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"names = [\n",
" \"id\",\n",
" \"label\",\n",
" \"statement\",\n",
" \"subjects\",\n",
" \"speaker\",\n",
" \"job\",\n",
" \"state\",\n",
" \"party\",\n",
" \"#barely_true\",\n",
" \"#false\",\n",
" \"#half_true\",\n",
" \"#mostly_true\",\n",
" \"#pants_on_fire\",\n",
" \"context\"\n",
"]\n",
"\n",
"df_2_train = pd.read_csv(\"data/train.tsv\", delimiter='\\t', names=names)\n",
"df_2_test = pd.read_csv(\"data/test.tsv\", delimiter='\\t', names=names)\n",
"\n",
"# use only 'False' and 'True' statements\n",
"\n",
"df_2_train = df_2_train[df_2_train['label'].isin([\"false\",\"true\"])]\n",
"df_2_test = df_2_test[df_2_test['label'].isin([\"false\",\"true\"])]\n",
"\n",
"jp(\"----\\n#### Train Data:\")\n",
"display(df_2_train.head())\n",
"jp(\"----\\n#### Test Data:\")\n",
"display(df_2_test.head())\n",
"jp(\"----\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### tdidf vectorizer on new dataset\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"X2 = df_2_train['statement']\n",
"y2 = df_2_train['label']\n",
"Xt2 = df_2_test['statement']\n",
"yt2 = df_2_test['label']\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"tfidf_vectorizer_2 = TfidfVectorizer(stop_words='english', max_df=0.7)\n",
"tfidf_train_2 = tfidf_vectorizer_2.fit_transform(X2)\n",
"tfidf_test_2 = tfidf_vectorizer_2.transform(Xt2)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"def model_b(labels, title, X, Xt, y, yt):\n",
" clf = MultinomialNB()\n",
" clf.fit(X, y)\n",
" pred = clf.predict(Xt)\n",
" score = metrics.accuracy_score(yt, pred)\n",
" pp(\"score: \" + str(score))\n",
" cm = metrics.confusion_matrix(yt, pred, labels=labels)\n",
" plot_confusion_matrix(cm, classes=labels, title=title)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"'score: 0.6192560175054704'\n",
"Confusion matrix, without normalization\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4c9f4c8fd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model_b(labels=[\"true\", \"false\"], title=\"configuration 2\", X=tfidf_train_2, y=y2, Xt=tfidf_test_2, yt=yt2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----\n",
"## configuration 3"
]
},
{
"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.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}