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

1382 lines
116 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": [
"X,y, Xt,yt = 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(X)\n",
"count_test_1 = count_vectorizer_1.transform(Xt)"
]
},
{
"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(X)\n",
"tfidf_test_1 = tfidf_vectorizer_1.transform(Xt)"
]
},
{
"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": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"score: 0.8611257233035244"
],
"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 0x7f722a724710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"clf = MultinomialNB()\n",
"clf.fit(tfidf_train_1, y)\n",
"pred = clf.predict(tfidf_test_1)\n",
"score = metrics.accuracy_score(yt, pred)\n",
"jupyter_print(\"score: \" + str(score))\n",
"cm = metrics.confusion_matrix(yt, pred, labels=[\"FAKE\", \"REAL\"])\n",
"plot_confusion_matrix(cm, classes=[\"FAKE\", \"REAL\"], title= \"TFIDF_Vecctorizer, Multinomial Naive Bayes\")"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"'score: 0.9079431877958969'\n",
"Confusion matrix, without normalization\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f722a39f3c8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"clf = MultinomialNB()\n",
"clf.fit(count_train_1, y)\n",
"pred = clf.predict(count_test_1)\n",
"score = metrics.accuracy_score(yt, pred)\n",
"pp(\"score: \" + str(score))\n",
"cm = metrics.confusion_matrix(yt, pred, labels=[\"FAKE\", \"REAL\"])\n",
"plot_confusion_matrix(cm, classes=[\"FAKE\", \"REAL\"], title= \"Count Vectorizer, Multinomial Naive Bayes\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* comparing to PassiveAggresiveClassifier"
]
},
{
"cell_type": "code",
"execution_count": 18,
"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.937\n",
"Confusion matrix, without normalization\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f722a42bbe0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"linear_clf = PassiveAggressiveClassifier(n_iter=50)\n",
"\n",
"linear_clf.fit(tfidf_train_1, y)\n",
"pred = linear_clf.predict(tfidf_test_1)\n",
"score = metrics.accuracy_score(yt, pred)\n",
"print(\"accuracy: %0.3f\" % score)\n",
"cm = metrics.confusion_matrix(yt, pred, labels=['FAKE', 'REAL'])\n",
"plot_confusion_matrix(cm, classes=['FAKE', 'REAL'], title= \"TFIDF Vectorite, PassiveAggressive Classifier\")"
]
},
{
"cell_type": "code",
"execution_count": 19,
"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, y)\n",
"# pred = nb_classifier.predict(tfidf_test_1)\n",
"# score = metrics.accuracy_score(yt, 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": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"| |0 |1 |2 |\n",
"|-------------------------------------------|\n",
"|**0** |FAKE |-5.70977337299286|2016 |\n",
"|**0** |FAKE |-4.512556633760219|october |\n",
"|**0** |FAKE |-3.6295306035551427|hillary |\n",
"|**0** |FAKE |-3.0340457171459647|november |\n",
"|**0** |FAKE |-2.819874077013394|share |\n",
"|**0** |FAKE |-2.7623053212356075|source |\n",
"|**0** |FAKE |-2.7214148226715196|article |\n",
"|**0** |FAKE |-2.4534476099285296|print |\n",
"|**0** |FAKE |-2.388396140700605|election |\n",
"|**0** |FAKE |-2.2568941057436316|com |\n",
"|**0** |FAKE |-2.1655159370672132|corporate |\n",
"|**0** |FAKE |-2.1133608887472195|establishment|\n",
"|**0** |FAKE |-2.07604835396886|mosul |\n",
"|**0** |FAKE |-2.0577194416512956|advertisement|\n",
"|**0** |FAKE |-1.8925782766097727|wikileaks |\n",
"|**0** |FAKE |-1.8832473236836753|email |\n",
"|**0** |FAKE |-1.881102989179076|26 |\n",
"|**0** |FAKE |-1.8675135507167282|snip |\n",
"|**0** |FAKE |-1.8197474865551224|oct |\n",
"|**0** |FAKE |-1.8083464542603256|photo |\n",
"|**0** |FAKE |-1.8002414368778707|watch |\n",
"|**0** |FAKE |-1.7981076057353746|stated |\n",
"|**0** |FAKE |-1.7448279759544274|corruption|\n",
"|**0** |FAKE |-1.7383401678959536|podesta |\n",
"|**0** |FAKE |-1.7269102752186034|uk |\n",
"|**0** |FAKE |-1.721327748835406|fbi |\n",
"|**0** |FAKE |-1.6998396770911|jewish |\n",
"|**0** |FAKE |-1.6545750206634504|28 |\n",
"|**0** |FAKE |-1.5951069834658342|ayotte |\n",
"|**0** |FAKE |-1.5774106942983317|video |\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.70977337299286|2016 |\n",
"|**0** |FAKE |-4.512556633760219|october |\n",
"|**0** |FAKE |-3.6295306035551427|hillary |\n",
"|**0** |FAKE |-3.0340457171459647|november |\n",
"|**0** |FAKE |-2.819874077013394|share |\n",
"|**0** |FAKE |-2.7623053212356075|source |\n",
"|**0** |FAKE |-2.7214148226715196|article |\n",
"|**0** |FAKE |-2.4534476099285296|print |\n",
"|**0** |FAKE |-2.388396140700605|election |\n",
"|**0** |FAKE |-2.2568941057436316|com |\n",
"|**0** |FAKE |-2.1655159370672132|corporate |\n",
"|**0** |FAKE |-2.1133608887472195|establishment|\n",
"|**0** |FAKE |-2.07604835396886|mosul |\n",
"|**0** |FAKE |-2.0577194416512956|advertisement|\n",
"|**0** |FAKE |-1.8925782766097727|wikileaks |\n",
"|**0** |FAKE |-1.8832473236836753|email |\n",
"|**0** |FAKE |-1.881102989179076|26 |\n",
"|**0** |FAKE |-1.8675135507167282|snip |\n",
"|**0** |FAKE |-1.8197474865551224|oct |\n",
"|**0** |FAKE |-1.8083464542603256|photo |\n",
"|**0** |FAKE |-1.8002414368778707|watch |\n",
"|**0** |FAKE |-1.7981076057353746|stated |\n",
"|**0** |FAKE |-1.7448279759544274|corruption|\n",
"|**0** |FAKE |-1.7383401678959536|podesta |\n",
"|**0** |FAKE |-1.7269102752186034|uk |\n",
"|**0** |FAKE |-1.721327748835406|fbi |\n",
"|**0** |FAKE |-1.6998396770911|jewish |\n",
"|**0** |FAKE |-1.6545750206634504|28 |\n",
"|**0** |FAKE |-1.5951069834658342|ayotte |\n",
"|**0** |FAKE |-1.5774106942983317|video |\n",
"|**0** |REAL |5.322933299139847|said |\n",
"|**0** |REAL |2.790330549605626|says |\n",
"|**0** |REAL |2.541838244691307|friday |\n",
"|**0** |REAL |2.4041029275409094|conservative|\n",
"|**0** |REAL |2.3379015148856777|say |\n",
"|**0** |REAL |2.3058613493064914|cruz |\n",
"|**0** |REAL |2.2887426111663176|secretary |\n",
"|**0** |REAL |2.2617040251028593|debate |\n",
"|**0** |REAL |2.2204462299693177|convention|\n",
"|**0** |REAL |2.2160423596688075|tuesday |\n",
"|**0** |REAL |2.072479294197218|marriage |\n",
"|**0** |REAL |2.05682789908255|conservatives|\n",
"|**0** |REAL |1.9925728148484634|candidates|\n",
"|**0** |REAL |1.870468668895461|coverage |\n",
"|**0** |REAL |1.8485006462469724|fox |\n",
"|**0** |REAL |1.8372440904167742|state |\n",
"|**0** |REAL |1.8043031340887994|held |\n",
"|**0** |REAL |1.7476811286181175|march |\n",
"|**0** |REAL |1.7257674048608471|religious |\n",
"|**0** |REAL |1.7017671404610129|islamic |\n",
"|**0** |REAL |1.683875315232089|labor |\n",
"|**0** |REAL |1.6823819757638732|attacks |\n",
"|**0** |REAL |1.6540393678833876|parties |\n",
"|**0** |REAL |1.6418060806659434|instead |\n",
"|**0** |REAL |1.6346583345825862|nomination|\n",
"|**0** |REAL |1.631777394058771|trade |\n",
"|**0** |REAL |1.6234498915175406|2013 |\n",
"|**0** |REAL |1.6111593480691713|foundation|\n",
"|**0** |REAL |1.6076198317793626|sen |\n",
"|**0** |REAL |1.6013924347146888|mcdonald |\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 b)\n",
"\n",
"* read data"
]
},
{
"cell_type": "code",
"execution_count": 21,
"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": 22,
"metadata": {},
"outputs": [],
"source": [
"X = df_2_train['statement']\n",
"y = df_2_train['label']\n",
"Xt = df_2_test['statement']\n",
"yt = df_2_test['label']\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"tfidf_vectorizer_2 = TfidfVectorizer(stop_words='english', max_df=0.7)\n",
"tfidf_train_2 = tfidf_vectorizer_2.fit_transform(X)\n",
"tfidf_test_2 = tfidf_vectorizer_2.transform(Xt)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* create Multinomial NB"
]
},
{
"cell_type": "code",
"execution_count": 24,
"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 0x7f722a5241d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"labels = [\"true\",\"false\"]\n",
"clf = MultinomialNB()\n",
"clf.fit(tfidf_train_2, y)\n",
"pred = clf.predict(tfidf_test_2)\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= \"TFIDF Vectorizer, Multinomial Naive Bayes\")"
]
},
{
"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
}