{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "Gl9SFGlaIgFk" }, "source": [ "https://tinyurl.com/zxyxa9ww Copy the notebook to your GDrive to edit." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "vKjNPo57FTJ8" }, "outputs": [], "source": [ "%reload_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1vac2ktq2ljA", "outputId": "16129211-6c97-4b36-d7c4-9d0e1fa222d9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: transformers in /usr/local/lib/python3.7/dist-packages (4.11.2)\n", "Requirement already satisfied: huggingface-hub>=0.0.17 in /usr/local/lib/python3.7/dist-packages (from transformers) (0.0.17)\n", "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.7/dist-packages (from transformers) (5.4.1)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from transformers) (2.23.0)\n", "Requirement already satisfied: sacremoses in /usr/local/lib/python3.7/dist-packages (from transformers) (0.0.46)\n", "Requirement already satisfied: tokenizers<0.11,>=0.10.1 in /usr/local/lib/python3.7/dist-packages (from transformers) (0.10.3)\n", "Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from transformers) (4.8.1)\n", "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.7/dist-packages (from transformers) (1.19.5)\n", "Requirement already satisfied: filelock in /usr/local/lib/python3.7/dist-packages (from transformers) (3.0.12)\n", "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.7/dist-packages (from transformers) (2019.12.20)\n", "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.7/dist-packages (from transformers) (4.62.3)\n", "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.7/dist-packages (from transformers) (21.0)\n", "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from huggingface-hub>=0.0.17->transformers) (3.7.4.3)\n", "Requirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging>=20.0->transformers) (2.4.7)\n", "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata->transformers) (3.5.0)\n", "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (1.24.3)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (2021.5.30)\n", "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (2.10)\n", "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (3.0.4)\n", "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from sacremoses->transformers) (1.15.0)\n", "Requirement already satisfied: click in /usr/local/lib/python3.7/dist-packages (from sacremoses->transformers) (7.1.2)\n", "Requirement already satisfied: joblib in /usr/local/lib/python3.7/dist-packages (from sacremoses->transformers) (1.0.1)\n" ] } ], "source": [ "!pip3 install transformers" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "y7aI_mECQqhS" }, "outputs": [], "source": [ "import torch\n", "import random\n", "import numpy as np\n", "\n", "from transformers import AutoTokenizer, BertForMaskedLM" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "JkmVtpi_MxEc" }, "outputs": [], "source": [ "def enforce_reproducibility(seed=42):\n", " # Sets seed manually for both CPU and CUDA\n", " torch.manual_seed(seed)\n", " torch.cuda.manual_seed_all(seed)\n", " # For atomic operations there is currently \n", " # no simple way to enforce determinism, as\n", " # the order of parallel operations is not known.\n", " # CUDNN\n", " torch.backends.cudnn.deterministic = True\n", " torch.backends.cudnn.benchmark = False\n", " # System based\n", " random.seed(seed)\n", " np.random.seed(seed)\n", "enforce_reproducibility()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "zrPfTMLb2ljC", "outputId": "24bb5a25-c2a7-4eb1-f028-57c34ea5e0ee" }, "outputs": [ { "data": { "text/plain": [ "device(type='cpu')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "device = torch.device(\"cpu\")\n", "if torch.cuda.is_available():\n", " device = torch.device(\"cuda\")\n", "device" ] }, { "cell_type": "markdown", "metadata": { "id": "MUeAr_bm2uL1" }, "source": [ "# Error Analysis and Explainability" ] }, { "cell_type": "markdown", "metadata": { "id": "tnVZ0TB62-xP" }, "source": [ "Error analysis involves **examining the errors made by a system and developing a classification of them**. (This is typically best done over dev data, to avoid compromising held-out test sets.) At a superficial level, this can involve breaking things down by input length, token frequency or looking at confusion matrices. But we should not limit ourselves to examining only labels (rather than input linguistic forms) as with confusion matrices, or superficial properties of the linguistic signal. Languages are, after all, complex systems and linguistic forms are structured. So a deeper error analysis involves examining those linguistic forms and looking for patterns. \n", "\n", "A good error analysis tells us something about **why method X is effective or ineffective for problem Y**. This in turn provides a much richer starting point for further research, allowing us to go beyond throwing learning algorithms at the wall of tasks and seeing which stick, while allowing us to also discover which are the harder parts of a problem. \n", "\n", "Error analysis: Does the project provide a thoughtful error analysis, which looks for **linguistic patterns** in the **types of errors** made by the system(s) evaluated and sheds light on either **avenues for future work or the source of the strengths/weaknesses** of the systems?\n", "\n", "Source : http://coling2018.org/error-analysis-in-research-and-writing/" ] }, { "cell_type": "markdown", "metadata": { "id": "1DFhmqqO4Hnv" }, "source": [ "Error analysis — the attempt to *analyze when, how, and why machine-learning models fail* — is a crucial part of the development cycle: **Researchers use it to suggest directions for future improvement, and practitioners make deployment decisions based on it. Since error analysis profoundly determines the direction of subsequent actions, we cannot afford it to be biased or incomplete.**\n", "\n", "\n", "\n", "![title](https://miro.medium.com/max/1400/1*r4RwXFD0vnNl5VNLin_4Zw.png)\n", "\n", "Source https://medium.com/@uwdata/errudite-55d5fbf3232e" ] }, { "cell_type": "markdown", "metadata": { "id": "z8hc6tVF5wA-" }, "source": [ "Error Analysis can include **everything that helps you understand how the model behaves**, what are it's strengths and weaknesses. \n", "\n", "When having **access to the model's decisions**, e.g. weights for each n-gram, and they are easily understandable, we say that the model is **interpretable by design** ([Chapter 4, Interpretable Models](https://christophm.github.io/interpretable-ml-book/simple.html)) For such models, we can explore what the model chose as important features and use that in our analysis." ] }, { "cell_type": "markdown", "metadata": { "id": "7qG2wDMu2ljF" }, "source": [ "## Motivation (Examples)" ] }, { "cell_type": "markdown", "metadata": { "id": "f5hJog3b2ljF" }, "source": [ "**Language Modeling:** Predict the likelihood of a sentence P(x)\n", "\n", "P(x) is **high**:   Barack Obama served as the 44th President of the UnitedStates.\n", "\n", "P(x) is **low**:   44th the of the President United States served Barack Obama as. *(syntax)*\n", "\n", "P(x) is **low**:   Barack Obama barked as the 44th President of the kennel. *(semantics)*\n", "\n", "P(x) is **low**:   Barack Obama served as the 44th President of the UnitedStates. *(facts)*\n", "\n", "P(x) is **low**:   Barack Obama reached a height of 50 feet tall. *(common sense)*\n", " \n", "Source https://www.youtube.com/watch?v=Oh2StnRQ3qE&ab_channel=3Blue1Brown" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 248, "referenced_widgets": [ "2093c38b163e46eab9f12ced393fc2fc", "98f7a98e7ea248a4b3fb022c50c4c5c1", "104146bccb374489a1356ffb703683f0", "dd98eac2f7804f9790ddbb9b9db4786f", "10da8d058cc349d3a51c414590e53b5d", "d506d5bb56204802ac2c053a80570f0f", "9ce5d90c3c60478990568410ba878c41", "fb7237f157394ca0ae88ed4d09fd260e", "ae496127596141d1abad06163541c9bb", "b15837ca1a6943c0ae12d7948a874536", "386027c2ac9e4747aef1473c6a8c7c9a", "2a780a1da14a44ac9b2cc82630aaebb9", "f278948f2a5841b79b26a0655bd687b7", "5bfb4a684de9499eb6f9f83cb14d5ff0", "ccb4260a49d94784b24fae55d14f217b", "c758f2e4573f442ab9050dd8d6dae4f3", "0770949e0d2d43c3a03e115722b6217f", "c674c95424b04998b1008c1689638b9c", "5630a8f6e59c4bac8c3c24f771d169d7", "be8f677f615b4e8a9bfde9d437e18627", "d00be50291c34a63bdf2dddc4c166b0a", "dcd743ea238f4b098139be5ee69c9d35", "fed23c96565e4687bddfd61a9fae1c9e", "a541816d712d45468898adbbc456542b", "1baac12007874948a620d9dcaa521924", "1ed2e71daa664bcfa103608a87fc61e3", "e53aa8ae1b4643eb9a98832036452867", "be8c55574eab4391af8aa23f37dcf696", "b0f531e392fd4dfeb773d2d60fd8a73f", "e021f5bf96c342bbb80d0209ebb5c651", "2cea439dcd3947b0958781be20e0437c", "4d836a0f07ad456b9fcfb493e9eb18c0", "9c61cca30436489eab22ef11ef37bbac", "2505cd08eda54d0a8d4a25e5accbfc1b", "b3c118fc77d24acca46d6cf681f4eb21", "946edd6929a5424eb2f40414452b3960", "24b8df33612d4fdf8ba4eb873dd611b1", "2e76ce3fac284ef4af5a3707e73419a1", "48698810950d4c9382d8c4a93a2eeb28", "6a1eed327c05467fb494e49844ad34a1", "bd6c071e2f8e4e6b9863f6a1f5f1a4ec", "d740488404a245ecb7a000228ed9e619", "6413045171934becab705a2bf85852b0", "4661cf0047474b99aa0016eaa44c2e83", "c3a98db9e24c4b39a616f52aa4728bde", "d1338cefece64847bcf6619752949521", "9015fc2ee49e4402b4f74796ef885c9f", "0c024f81874449a8a6136b15516ddb46", "030a5d95a58e478f93256878dc39aad7", "6e475a67098f4cebadbace16f6475672", "535e7faaafa1441aadf28286bc7fd963", "e66509a633b540bb883347f1265b5c8c", "5c16d2aab6434fffa9365f0081e65f35", "ff75493444d74093a3696474804a974c", "d38545e5dbd8407a99391894cee914e3" ] }, "id": "Q850xbjE2ljG", "outputId": "6c03c7d7-0ecb-4f02-e3ff-cd31994e3547" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2093c38b163e46eab9f12ced393fc2fc", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Downloading: 0%| | 0.00/29.0 [00:00\n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Saving train.tsv to train (1).tsv\n", "Saving valid.tsv to valid (1).tsv\n", "Saving test.tsv to test (1).tsv\n", "User uploaded file \"train.tsv\" with length 2408165 bytes\n", "User uploaded file \"valid.tsv\" with length 301556 bytes\n", "User uploaded file \"test.tsv\" with length 301118 bytes\n" ] } ], "source": [ "from google.colab import files\n", "\n", "uploaded = files.upload()\n", "\n", "for fn in uploaded.keys():\n", " print('User uploaded file \"{name}\" with length {length} bytes'.format(\n", " name=fn, length=len(uploaded[fn])))" ] }, { "cell_type": "markdown", "metadata": { "id": "Eqr1sIwdPLh8" }, "source": [ "# Read in the data" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "asJF7gERQalI" }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 289 }, "id": "JfJpXd03_59W", "outputId": "ba7c149d-3e20-4db6-f8b1-1e06c3905aba" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012345678910111213
02635.jsonfalseSays the Annies List political group supports ...abortiondwayne-bohacState representativeTexasrepublican01000a mailer
110540.jsonhalf-trueWhen did the decline of coal start? It started...energy,history,job-accomplishmentsscott-surovellState delegateVirginiademocrat00110a floor speech.
2324.jsonmostly-trueHillary Clinton agrees with John McCain \"by vo...foreign-policybarack-obamaPresidentIllinoisdemocrat70711601639Denver
31123.jsonfalseHealth care reform legislation is likely to ma...health-careblog-postingnone7193544a news release
49028.jsonhalf-trueThe economic turnaround started at the end of ...economy,jobscharlie-cristFloridademocrat15920192an interview on CNN
\n", "
" ], "text/plain": [ " 0 1 ... 12 13\n", "0 2635.json false ... 0 a mailer\n", "1 10540.json half-true ... 0 a floor speech.\n", "2 324.json mostly-true ... 9 Denver\n", "3 1123.json false ... 44 a news release\n", "4 9028.json half-true ... 2 an interview on CNN\n", "\n", "[5 rows x 14 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_data = pd.read_csv('./train.tsv', sep='\\t', header=None).fillna('')\n", "valid_data = pd.read_csv('./valid.tsv', sep='\\t', header=None).fillna('')\n", "test_data = pd.read_csv('./test.tsv', sep='\\t', header=None).fillna('')\n", "train_data.head()" ] }, { "cell_type": "markdown", "metadata": { "id": "R8I44E81-pZP" }, "source": [ "## Model 1: TF-IDF classifier" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "39Ycg392I2b0" }, "outputs": [], "source": [ "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import classification_report, confusion_matrix\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "i8BLPp-TVzp2", "outputId": "6ed2d24a-652f-4a48-9ee5-1ed3c0432519" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['veterans' 'you' 'really' 'community' 'know' 'department' 'your' 'like'\n", " 'them' 'there' 'out' 'to' 'of' 'our' 'are' 'has' 'the' 'equal'\n", " 'employees' 'entire' 'enough' 'energy' 'estimated' 'end' 'even' 'for'\n", " 'employee' 'else' 'every' 'elections' 'election' 'elected' 'either'\n", " 'eight' 'effect' 'education' 'economy' 'economic' 'earth' 'earned' 'earn'\n", " 'ever' 'fact' 'executive' 'feingold' 'food' 'florida' 'five' 'fiscal'\n", " 'first' 'fire' 'find' 'financial' 'fight' 'fewer' 'few' 'force'\n", " 'existing' 'fees' 'federal' 'fbi' 'favor' 'fastest' 'far' 'family'\n", " 'earmarks' 'failed' 'experience' 'expansion' 'families' 'due' 'early'\n", " 'currently' 'decades' 'decade' 'debt' 'debate' 'death' 'deal' 'days'\n", " 'day' 'david' 'data' 'cutting' 'cuts' 'cut' 'current' 'each' 'cruz'\n", " 'crist' 'crisis' 'criminal' 'crimes' 'crime' 'credit' 'creation'\n", " 'creating' 'created' 'create' 'coverage']\n", "['private' 'prison' 'primary' 'prices' 'previous' 'presidents' 'rape'\n", " 'rates' 'president' 'rating' 'residents' 'research' 'required' 'require'\n", " 'republicans' 'republican' 'representatives' 'report' 'rep' 'released'\n", " 'regulations' 'registered' 'refused' 'refugees' 'reform' 'reduced'\n", " 'reduce' 'recovery' 'record' 'recently' 'recent' 'received' 'receive'\n", " 'really' 'real' 'reagan' 're' 'presidential' 'premiums' 'officers' 'paul'\n", " 'passed' 'pass' 'party' 'part' 'parents' 'parenthood' 'paid' 'own'\n", " 'overseas' 'over' 'out' 'our' 'other' 'oregon' 'order' 'or' 'opposes'\n", " 'opposed' 'opponent' 'open' 'only' 'one' 'once' 'old' 'oil' 'ohio'\n", " 'officials' 'past' 'pay' 'power' 'paying' 'poverty' 'position'\n", " 'population' 'popular' 'poor' 'polls' 'poll' 'policy' 'policies' 'police'\n", " 'points' 'point' 'plant' 'plans' 'planned' 'plan' 'place' 'personal'\n", " 'person' 'perry' 'percentage' 'percent' 'per' 'people' 'pension' 'pelosi'\n", " 'pays' '000']\n" ] } ], "source": [ "n = 100\n", "\n", "vectorizer = TfidfVectorizer(max_features=1000)\n", "features = vectorizer.fit_transform(train_data.values[:, 2])\n", "# the raw/textual n-grams the vectorizer is using\n", "feature_array = np.array(vectorizer.get_feature_names())\n", "# TF-IDF scores of the words in each instance of the input datasets\n", "tfidf_sorting = np.argsort(features.toarray()).flatten()[::-1]\n", "\n", "# With a TF-IDF Vecotrizer, we can already tell the words that have high TF-IDF scores\n", "# Even before feeding them to the model:\n", "# Look-up of the top-n words at the indices with 1) highest and 2) lowest scores \n", "print(feature_array[tfidf_sorting][:n])\n", "print(feature_array[tfidf_sorting][-n:])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "J6vmdr7fRKoG", "outputId": "977fed78-a7d8-423c-d054-6fb8ff35fd0e" }, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=1000,\n", " multi_class='multinomial', n_jobs=None, penalty='l2',\n", " random_state=None, solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vectorizer = TfidfVectorizer(ngram_range=(1,2), max_features=1000)\n", "features = vectorizer.fit_transform(train_data.values[:, 2])\n", "# training a linear model, which is interpretable by design\n", "lr = LogisticRegression(penalty='l2', max_iter=1000, multi_class='multinomial')\n", "lr.fit(features, train_data.values[:, 1])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "eB1Pw8D6I9ic" }, "outputs": [], "source": [ "features_test = vectorizer.fit_transform(test_data.values[:, 2])\n", "preds_tfidf = lr.predict(features_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "-dS5-7oxTNBI" }, "outputs": [], "source": [ "features_valid = vectorizer.transform(valid_data.values[:, 2])\n", "preds_valid_tfidf = lr.predict(features_valid)" ] }, { "cell_type": "markdown", "metadata": { "id": "KrBXWEjWHUTz" }, "source": [ "## Model 2: BPE" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "GnM5tGthHTpJ" }, "outputs": [], "source": [ "from tqdm import tqdm\n", "import nltk" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "dVPzS7_lh41G", "outputId": "a5b6091c-b82c-4254-bda0-8d1d0d5237b9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: bpemb in /usr/local/lib/python3.7/dist-packages (0.3.3)\n", "Requirement already satisfied: sentencepiece in /usr/local/lib/python3.7/dist-packages (from bpemb) (0.1.96)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from bpemb) (2.23.0)\n", "Requirement already satisfied: gensim in /usr/local/lib/python3.7/dist-packages (from bpemb) (3.6.0)\n", "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from bpemb) (1.19.5)\n", "Requirement already satisfied: tqdm in /usr/local/lib/python3.7/dist-packages (from bpemb) (4.62.3)\n", "Requirement already satisfied: six>=1.5.0 in /usr/local/lib/python3.7/dist-packages (from gensim->bpemb) (1.15.0)\n", "Requirement already satisfied: smart-open>=1.2.1 in /usr/local/lib/python3.7/dist-packages (from gensim->bpemb) (5.2.1)\n", "Requirement already satisfied: scipy>=0.18.1 in /usr/local/lib/python3.7/dist-packages (from gensim->bpemb) (1.4.1)\n", "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->bpemb) (1.24.3)\n", "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->bpemb) (3.0.4)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->bpemb) (2021.5.30)\n", "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->bpemb) (2.10)\n" ] } ], "source": [ "!pip install bpemb" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "OEpReyRzh1Jy" }, "outputs": [], "source": [ "from bpemb import BPEmb\n", "\n", "# Load english model with 25k word-pieces\n", "bpemb_en = BPEmb(lang='en', dim=100, vs=25000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "G7kfbxF4RoCC" }, "outputs": [], "source": [ "def get_bpemb_features(dataset, bpemb):\n", " # With bpemb we can tokenize and embed an entire document using .embed(x)\n", " X = [bpemb.embed(x).mean(0) for x in tqdm(dataset[:,2])]\n", " y = dataset[:,1]\n", " \n", " return X,y" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "BMkRi8Y9KKSh", "outputId": "a724560e-4002-4708-c0b5-5dc6c2855bb4" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 10240/10240 [00:01<00:00, 7750.14it/s]\n", "100%|██████████| 1284/1284 [00:00<00:00, 7423.41it/s]\n", "100%|██████████| 1267/1267 [00:00<00:00, 7757.24it/s]\n" ] }, { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=1000,\n", " multi_class='multinomial', n_jobs=None, penalty='l2',\n", " random_state=None, solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train,y_train = get_bpemb_features(train_data.values, bpemb_en)\n", "X_valid,y_valid = get_bpemb_features(valid_data.values, bpemb_en)\n", "X_test,y_test = get_bpemb_features(test_data.values, bpemb_en)\n", "lr_bpemb = LogisticRegression(penalty='l2', max_iter=1000, multi_class='multinomial')\n", "lr_bpemb.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "qxkXejsbUQce" }, "outputs": [], "source": [ "preds_bpemb = lr_bpemb.predict(X_test)\n", "preds_valid_bpemb = lr_bpemb.predict(X_valid)" ] }, { "cell_type": "markdown", "metadata": { "id": "VKpLXN3WOncZ" }, "source": [ "## Classification Performance Comparison\n", "\n", "Looking at the **classification report and the confusion matrix** is the most basic step of performing error analysis - you can find which classes are confused with which other classes most often and compare the performance of the different classes. Differences in the performance allow for a founded model choice." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 328 }, "id": "-91N1CFZOc4M", "outputId": "c97dad7b-f48c-40f3-d7c2-8539c5be3d54" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
precisionrecallf1-scoresupport
barely-true0.1666670.0990570.124260212.000000
false0.2309860.3293170.271523249.000000
half-true0.2211980.1811320.199170265.000000
mostly-true0.2151520.2946060.248687241.000000
pants-fire0.0909090.0217390.03508892.000000
true0.1843320.1923080.188235208.000000
accuracy0.2083660.2083660.2083660.208366
macro avg0.1848740.1863600.1778271267.000000
weighted avg0.1973340.2083660.1965641267.000000
\n", "
" ], "text/plain": [ " precision recall f1-score support\n", "barely-true 0.166667 0.099057 0.124260 212.000000\n", "false 0.230986 0.329317 0.271523 249.000000\n", "half-true 0.221198 0.181132 0.199170 265.000000\n", "mostly-true 0.215152 0.294606 0.248687 241.000000\n", "pants-fire 0.090909 0.021739 0.035088 92.000000\n", "true 0.184332 0.192308 0.188235 208.000000\n", "accuracy 0.208366 0.208366 0.208366 0.208366\n", "macro avg 0.184874 0.186360 0.177827 1267.000000\n", "weighted avg 0.197334 0.208366 0.196564 1267.000000" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# TF-IDF model \n", "report = classification_report(y_test, preds_tfidf, output_dict=True)\n", "pd.DataFrame(report).transpose()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 328 }, "id": "RhoTZeiwL2TO", "outputId": "00b9fafd-b584-4812-b733-0b7379179e1e" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
precisionrecallf1-scoresupport
barely-true0.1743120.0896230.118380212.000000
false0.2417580.3534140.287113249.000000
half-true0.2346040.3018870.264026265.000000
mostly-true0.2516560.3153530.279926241.000000
pants-fire0.4516130.1521740.22764292.000000
true0.2333330.1346150.170732208.000000
accuracy0.2407260.2407260.2407260.240726
macro avg0.2645460.2245110.2246371267.000000
weighted avg0.2447140.2407260.2292601267.000000
\n", "
" ], "text/plain": [ " precision recall f1-score support\n", "barely-true 0.174312 0.089623 0.118380 212.000000\n", "false 0.241758 0.353414 0.287113 249.000000\n", "half-true 0.234604 0.301887 0.264026 265.000000\n", "mostly-true 0.251656 0.315353 0.279926 241.000000\n", "pants-fire 0.451613 0.152174 0.227642 92.000000\n", "true 0.233333 0.134615 0.170732 208.000000\n", "accuracy 0.240726 0.240726 0.240726 0.240726\n", "macro avg 0.264546 0.224511 0.224637 1267.000000\n", "weighted avg 0.244714 0.240726 0.229260 1267.000000" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# BPEmb model \n", "report = classification_report(y_test, preds_bpemb, output_dict=True)\n", "pd.DataFrame(report).transpose()" ] }, { "cell_type": "markdown", "metadata": { "id": "izVjBuRJUhVN" }, "source": [ "### Confusion Matrix Comparison" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KPoifWNVOUC_", "outputId": "e299406d-f45e-47a5-b3da-32bf2e3b20ae" }, "outputs": [ { "data": { "text/plain": [ "array([[19, 67, 42, 67, 2, 40],\n", " [32, 73, 53, 64, 4, 37],\n", " [19, 67, 50, 66, 0, 46],\n", " [25, 52, 54, 67, 7, 46],\n", " [ 8, 36, 25, 20, 2, 25],\n", " [17, 32, 43, 52, 2, 23]])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "confusion_matrix(valid_data.values[:, 1], preds_valid_tfidf)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qSUNUmNiUpgb", "outputId": "2609bd2d-c9b7-4f56-f182-ee48108f6256" }, "outputs": [ { "data": { "text/plain": [ "array([[20, 83, 74, 40, 5, 15],\n", " [28, 98, 67, 37, 12, 21],\n", " [17, 63, 86, 60, 4, 18],\n", " [16, 70, 53, 76, 2, 34],\n", " [13, 48, 23, 9, 14, 9],\n", " [10, 37, 39, 53, 1, 29]])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid_values = valid_data.values[:, 1]\n", "confusion_matrix(valid_values, preds_valid_bpemb)" ] }, { "cell_type": "markdown", "metadata": { "id": "grH1DgiuAO_s" }, "source": [ "Can you spot any insights?" ] }, { "cell_type": "markdown", "metadata": { "id": "viHHXjfS_EsC" }, "source": [ "## Model's Feature Weights\n", "\n", "We can now see what are the most importand words for each class by looking at the weights the model assigned to each feature in the input." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "pd_1JUgsPmL5", "outputId": "8b05316f-55ab-4157-af32-058737847d09" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "barely-true\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "false\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "half-true\n" ] }, { "data": { "image/png": "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l0l6L7Cz7QVZKItYt5LIRURERMRakfQjYCZlF24/4CeUM3ILm4wrojdL18qIiIiI6LauTpWSRgIv255m+wLgQsoQ8BmSDmgyxojeLIlcRERERHRbS5nkAOBQSVMlbW/7PtunAF8BftVchBG9W0orIyIiImKNSdoY+ChwDDAQuNX29JbXczYuYj1IIhcRERERq62lwckOwDDKDM75wPPAHwMnAffbntBgmBG9XhK5iIiIiOg2SbOAucA5wHdtf0HS5sCOwGu2n0034Ij1J2fkIiIiIqJbJB0EvGH7a8ATwI31pWOBF20/C5AkLmL9SSIXEREREd1l4B5J3wIetD1P0kBgArBRs6FFbBiSyEVEREREd90NbAsMBa6TtCNwCXCD7SWSksxFrGc5IxcRERERq9R11q0maNsDy4ClwGWUhG5bYJHts+r706kyYj3r03QAEREREdH2upKyKcAOwCDge8B5wKbAcqBrQHganET0gJRWRkRERMRK1cTMkgYAB1K6VB4PDAbuA063/QZlhy4NTiJ6SBK5iIiIiFiplsTsGGCu7V/bXmB7NHA+8ClJA5PARfSsnJGLiIiIiFWStC0wg1JWORmYDbzceg4uJZURPSuJXERERESskqTBth+WdBxwJrAA+A4w3/brzUYXsWFKaWVERERErJSkQ4AJks4GfgwcCTwFTAf2bTK2iA1ZduQiIiIiYqUk7QQMoyRtmwG3A7cCu9h+ssnYIjZkSeQiIiIi4nd0zYGTtJXtV+q1vYERwBjgHmC87ZeajDNiQ5bSyoiIiIj4HTWJ2x2YL+mieu0h21cADwAPJImLaFYSuYiIiIj4PbYXAeOAAyXdJek4SVsA+wM/gLJz12CIERu0lFZGRERExEpJ6kMZAH4psAi40/bEjBuIaFYSuYiIiIhYLZL62366/l3OF8mIxiSRi4iIiIiI6DA5IxcREREREdFhkshFRERERER0mCRyERERERERHSaJXERERERERIdJIhcREREREdFhkshFRERERER0mP8HQB84RxF6Mo4AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "mostly-true\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "pants-fire\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "true\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "top_features = 10\n", "# get the model's weights: n_classes x n_features - (? , ?)\n", "all_class_coef = lr.coef_\n", "\n", "for i, cls in enumerate(lr.classes_): # for each of the classes\n", " print(cls)\n", " # get the weights for the class\n", " coef = all_class_coef[i]\n", " # find the top negative and positive features for the class\n", " top_positive_coefficients = np.argsort(coef)[-top_features:]\n", " top_negative_coefficients = np.argsort(coef)[:top_features]\n", " # combine them in one array\n", " top_coefficients = np.hstack([top_negative_coefficients, top_positive_coefficients])\n", " # create plot - humans tend to understand better plot visualizations\n", " feature_names = vectorizer.get_feature_names()\n", " plt.figure(figsize=(15, 5))\n", " colors = ['red' if c < 0 else 'blue' for c in coef[top_coefficients]]\n", " plt.bar(np.arange(2 * top_features), coef[top_coefficients], color=colors)\n", " feature_names = np.array(feature_names)\n", " plt.xticks(np.arange(1, 1 + 2 * top_features), feature_names[top_coefficients], rotation=60, ha='right')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "DhvQand9AaQP" }, "source": [ "## Error classification \n", "\n", "We can now look at the predictions of the model to try and spot any problems or particular features of the model. \n", "\n", "We will look at instances the model classifies **in/correctly**, which in turn can be broken down to: **instances with high/ low/ medium confidence**. To do that, we'll use the **probability/confidence** of the model's prediction, which is available for all ML models." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "FTvP0zDQaX8m" }, "outputs": [], "source": [ "# get the probability of the model\n", "valid_pred_prob = lr_bpemb.predict_proba(X_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "D8K6YMkTXsn6" }, "outputs": [], "source": [ "from collections import defaultdict\n", "\n", "# collect correct and wrong predictions, keeping the confidence of the prediction\n", "errors = defaultdict(lambda: [])\n", "correct_preds = defaultdict(lambda: [])\n", "\n", "for (i, instance), pred, pred_score in zip(valid_data.iterrows(), preds_valid_bpemb, valid_pred_prob):\n", " # get the index/id of the gold class in the probability array (n_classes x 1)\n", " index_of_class = np.where(lr_bpemb.classes_ == instance[1])\n", " # get the index/id of the predicted class in the probability array (n_classes x 1)\n", " index_of_pred_class = np.where(lr_bpemb.classes_ == pred)\n", " # depending on whether the prediction is correct, collect the instances as errors or correct predictions\n", " if pred != instance[1]:\n", " errors[instance[1]].append((instance[2], pred_score[index_of_class], pred_score[index_of_pred_class], pred))\n", " else:\n", " correct_preds[instance[1]].append((instance[2], pred_score[index_of_class], pred_score, pred))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YmWrLxFkbWpM", "outputId": "367e1f67-ce1c-4d5d-c0dd-b84d0ec67466" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "barely-true\n", "High probability for correct class\n", "[('Just like Donald Trump, David Jolly wants to outlaw a womans right to '\n", " 'choose.',\n", " array([0.22251137]),\n", " array([0.23379486]),\n", " 'false'),\n", " ('Stimulus dollars paid for windmills from China.',\n", " array([0.22542609]),\n", " array([0.26144215]),\n", " 'half-true'),\n", " ('Obamacare is costing 2 million jobs.',\n", " array([0.22576654]),\n", " array([0.24788424]),\n", " 'half-true'),\n", " ('Gerry Connolly and his fellow Democrats went on a spending spree and now '\n", " 'their credit card is maxed out.',\n", " array([0.22596097]),\n", " array([0.24121691]),\n", " 'half-true'),\n", " ('Says Hillary Clinton has been saying lately that she thinks that I am, not '\n", " 'qualifiedto be president.',\n", " array([0.23431039]),\n", " array([0.24782692]),\n", " 'false'),\n", " ('Rick Scotts prison plan would cut Floridas prison budget in half, close '\n", " 'prisons, and release tens of thousands of prisoners early -- murderers, '\n", " 'rapists, sex offenders, armed robbers, drug dealers.',\n", " array([0.23454344]),\n", " array([0.23867524]),\n", " 'half-true'),\n", " ('Originally, Democrats promised that if you liked your health care plan, you '\n", " 'could keep it. One year later we know that you need a waiver to keep your '\n", " 'plan.',\n", " array([0.23811094]),\n", " array([0.24234747]),\n", " 'false'),\n", " ('DNC chair Debbie Wasserman Schultz denied unemployment went up under Obama.',\n", " array([0.24116964]),\n", " array([0.24564027]),\n", " 'false'),\n", " ('Says Gina Raimondos venture capital firm secured a secret no-bid contract '\n", " 'funded by taxpayers.',\n", " array([0.24315745]),\n", " array([0.30545336]),\n", " 'false'),\n", " ('Says his plan to end the toll on Ga. 400 fulfills his campaign promise to '\n", " 'commuters.',\n", " array([0.26012345]),\n", " array([0.27767736]),\n", " 'false')]\n", "Low probability for correct class\n", "[('Rhode Island is one of the worst states for income equality.',\n", " array([0.05065124]),\n", " array([0.28476863]),\n", " 'true'),\n", " ('Veterans can now download their electronic medical records with a click of '\n", " 'the mouse.',\n", " array([0.0535591]),\n", " array([0.25986084]),\n", " 'true'),\n", " ('Voted the best specialty plate in America',\n", " array([0.07670996]),\n", " array([0.46605402]),\n", " 'mostly-true'),\n", " ('The U.S. \"only ranks 25th worldwide on defense spending as a percentage of '\n", " 'GDP.\"',\n", " array([0.07743288]),\n", " array([0.32516985]),\n", " 'mostly-true'),\n", " ('In 2013, the United States accepted 67 percent of the worlds refugees.',\n", " array([0.07826386]),\n", " array([0.28742681]),\n", " 'mostly-true'),\n", " ('Nearly 25 percent of all automobile accidents are caused by texting while '\n", " 'driving.',\n", " array([0.07840081]),\n", " array([0.28705188]),\n", " 'mostly-true'),\n", " ('The Wisconsin Economic Development Corp. cannot account for creating one '\n", " 'single job.',\n", " array([0.08486728]),\n", " array([0.3132537]),\n", " 'false'),\n", " ('There are over 100 pipelines between the United States and Canada right '\n", " 'now.',\n", " array([0.08665623]),\n", " array([0.2982351]),\n", " 'true'),\n", " ('We have less Americans working now than in the 70s.',\n", " array([0.08870408]),\n", " array([0.3382231]),\n", " 'mostly-true'),\n", " ('Financed the largest parking expansion program without a rate increase.',\n", " array([0.09100782]),\n", " array([0.35659618]),\n", " 'half-true')]\n", "false\n", "High probability for correct class\n", "[('During the Monica Lewinsky scandal, the Clintons brought the Rev. Jeremiah '\n", " 'Wright to the White House for \"spiritual counseling.\"',\n", " array([0.23538899]),\n", " array([0.23926563]),\n", " 'pants-fire'),\n", " ('Says Charlie Bass forfeits right to equal cost for TV ads under FCC rules',\n", " array([0.23605398]),\n", " array([0.25696707]),\n", " 'half-true'),\n", " ('By advocating new requirements for voters to show ID cards at the polls, '\n", " 'Republicans want to literally drag us all the way back to Jim Crow laws.',\n", " array([0.23784883]),\n", " array([0.24978705]),\n", " 'half-true'),\n", " ('Says Bill White is for gay marriage.',\n", " array([0.24089753]),\n", " array([0.24428836]),\n", " 'pants-fire'),\n", " ('Says Robert Hurt supports the tax loopholes that send American jobs '\n", " 'overseas.',\n", " array([0.24317522]),\n", " array([0.25988972]),\n", " 'half-true'),\n", " ('Says U.S. Rep. Tom Price is sending letters both supporting and opposing '\n", " 'the small-business killing Internet Tax Mandate.',\n", " array([0.24392553]),\n", " array([0.25935293]),\n", " 'half-true'),\n", " ('Obama Makes Huge Move to BAN Social Security Recipients From Owning Guns',\n", " array([0.24778217]),\n", " array([0.31845966]),\n", " 'half-true'),\n", " ('The (State Board of Administration) transparency issue got a great airing '\n", " 'the last legislative session.',\n", " array([0.25825491]),\n", " array([0.2697218]),\n", " 'true'),\n", " ('Social Security is a Ponzi scheme.',\n", " array([0.28221914]),\n", " array([0.32342824]),\n", " 'barely-true'),\n", " ('On expanding Medicaid as part of the health care law',\n", " array([0.28621979]),\n", " array([0.30116083]),\n", " 'half-true')]\n", "Low probability for correct class\n", "[('The Atlanta Beltline paid nearly $3.5 million for less than a quarter-acre.',\n", " array([0.05157401]),\n", " array([0.40129265]),\n", " 'mostly-true'),\n", " ('Rhode Island has the highest percentage of lawyers per capita in the '\n", " 'country.',\n", " array([0.06375065]),\n", " array([0.3522662]),\n", " 'mostly-true'),\n", " ('Says most Texas schools spend 45 out of 180 school days in mandated '\n", " 'testing.',\n", " array([0.07274155]),\n", " array([0.29758186]),\n", " 'mostly-true'),\n", " ('More than 7,000 Americans lost their lives to climate change-fueled events '\n", " 'last year.',\n", " array([0.08237582]),\n", " array([0.32266697]),\n", " 'mostly-true'),\n", " ('The average federal employee makes $120,000 a year. The average private '\n", " 'employee makes $60,000 a year.',\n", " array([0.08437365]),\n", " array([0.36242032]),\n", " 'mostly-true'),\n", " ('Students at the University of Texas in Austin have been advised not to wear '\n", " 'cowboy boots or cowboy hats on Halloween.',\n", " array([0.08573882]),\n", " array([0.35872029]),\n", " 'pants-fire'),\n", " ('State employees in Wisconsin earn about 8 percent less than if they worked '\n", " 'in the private sector.',\n", " array([0.09202228]),\n", " array([0.33041181]),\n", " 'mostly-true'),\n", " ('My opponent supported policies that increased tuition by 18 percent.',\n", " array([0.09416232]),\n", " array([0.41780882]),\n", " 'half-true'),\n", " ('We have the highest tax rate anywhere in the world.',\n", " array([0.09905309]),\n", " array([0.35885587]),\n", " 'mostly-true'),\n", " ('Says the jurisdictions with the strictest gun control laws, almost without '\n", " 'exception have the highest crime rates and the highest murder rates.',\n", " array([0.1068676]),\n", " array([0.33978121]),\n", " 'mostly-true')]\n", "half-true\n", "High probability for correct class\n", "[('He voted twice for a budget resolution that increases the taxes on '\n", " 'individuals making $42,000 a year.',\n", " array([0.25026902]),\n", " array([0.31943667]),\n", " 'mostly-true'),\n", " (\"''Both Democrats and Republicans are advocating for the use of student test \"\n", " \"scores to measure teacher effectiveness.''\",\n", " array([0.25223047]),\n", " array([0.26439614]),\n", " 'mostly-true'),\n", " ('We lowered the business tax from 4 percent down to 1 percent.',\n", " array([0.25349313]),\n", " array([0.33560291]),\n", " 'mostly-true'),\n", " ('The violent crime rate in America is the same as it was in 1968, yet our '\n", " 'prison system has grown by over 500 percent.',\n", " array([0.25502656]),\n", " array([0.27662334]),\n", " 'mostly-true'),\n", " ('One out of two Americans are living either in or near poverty. That means '\n", " '150 million Americans, half of us.',\n", " array([0.26287953]),\n", " array([0.28627951]),\n", " 'mostly-true'),\n", " ('When I was governor, not only did test scores improve we also narrowed the '\n", " 'achievement gap.',\n", " array([0.26813932]),\n", " array([0.26906317]),\n", " 'mostly-true'),\n", " ('Georgias high school graduation rate topped 80 percent in 2010.',\n", " array([0.27016056]),\n", " array([0.33132616]),\n", " 'mostly-true'),\n", " ('The accuracy of the Obama tax calculator',\n", " array([0.27463433]),\n", " array([0.31739085]),\n", " 'false'),\n", " ('The lieutenant governor has the power to be an economic ambassador and '\n", " 'negotiate on economic development',\n", " array([0.2825785]),\n", " array([0.33883554]),\n", " 'false'),\n", " ('Violent crime is up since the last year of Sharpe James administration. '\n", " 'This year its higher. The unemployment rate is almost 15 percent. The high '\n", " 'school dropout rate is over 50 percent.',\n", " array([0.28397836]),\n", " array([0.29554822]),\n", " 'mostly-true')]\n", "Low probability for correct class\n", "[('President Obama is shrinking our military.',\n", " array([0.07725838]),\n", " array([0.68504352]),\n", " 'pants-fire'),\n", " ('New Jerseys once-broken pension system is now solvent.',\n", " array([0.0798887]),\n", " array([0.27843326]),\n", " 'false'),\n", " ('Ken Lanci is a lifelong Clevelander',\n", " array([0.08334688]),\n", " array([0.3849569]),\n", " 'pants-fire'),\n", " ('New Hampshire is currently the only state in the nation that does not have '\n", " 'a full-service veterans hospital or equivalent access.',\n", " array([0.10698837]),\n", " array([0.23691774]),\n", " 'true'),\n", " ('Limberbutt McCubbins (a five-year-old cat) is a candidate in the 2016 '\n", " 'presidential election.',\n", " array([0.11242005]),\n", " array([0.22600713]),\n", " 'false'),\n", " ('I waited until (the Trans-Pacific Partnership trade agreement) had actually '\n", " 'been negotiated before deciding whether to endorse it.',\n", " array([0.12169258]),\n", " array([0.37495618]),\n", " 'false'),\n", " ('If you dont buy cigarettes at your local supermarket, your grocery bill '\n", " 'wont go up a dime. The same is true of the sugary drink tax. If passed, you '\n", " 'can avoid paying the tax by not buying sugary drinks.',\n", " array([0.12245907]),\n", " array([0.26155051]),\n", " 'barely-true'),\n", " ('The new Ukrainian government introduced a law abolishing the use of '\n", " 'languages other than Ukrainian in official circumstances.',\n", " array([0.1248197]),\n", " array([0.24838289]),\n", " 'false'),\n", " ('Henry Kissinger \"said that we should meet with Iran guess what without '\n", " 'precondition.\"',\n", " array([0.12795797]),\n", " array([0.28149231]),\n", " 'false'),\n", " ('Each U.S. House member who voted to overhaul Social Security in 1983 was '\n", " 're-elected.',\n", " array([0.13381434]),\n", " array([0.27317548]),\n", " 'false')]\n", "mostly-true\n", "High probability for correct class\n", "[('Half the lottery directors across the country had not run a lottery before '\n", " 'they were hired.',\n", " array([0.2413346]),\n", " array([0.26183837]),\n", " 'true'),\n", " ('Texas had the worst voter participation in the country in the November 2014 '\n", " 'elections.',\n", " array([0.24289069]),\n", " array([0.29152506]),\n", " 'true'),\n", " ('The port provides more than 297,000 jobs directly to the state of Georgia.',\n", " array([0.24370102]),\n", " array([0.30201776]),\n", " 'half-true'),\n", " ('Says Marco Rubio has a 98 percent voting record with the Koch brothers.',\n", " array([0.24370212]),\n", " array([0.25260857]),\n", " 'true'),\n", " ('Says we have now more Border Patrol officers than weve had at any time in '\n", " 'our history.',\n", " array([0.24469714]),\n", " array([0.2686888]),\n", " 'true'),\n", " ('House Democrats have a two-to-one advantage money-wise against House '\n", " 'Republicans.',\n", " array([0.24724759]),\n", " array([0.27087822]),\n", " 'barely-true'),\n", " ('I think with the exception of the last year or maybe the last two years, we '\n", " 'were at 100 percent when it came to contributing to the Providence pension '\n", " 'fund.',\n", " array([0.25466793]),\n", " array([0.29151177]),\n", " 'true'),\n", " ('Says roughly two-thirds of (state) corporations didnt pay any income tax in '\n", " 'Virginia.',\n", " array([0.26660059]),\n", " array([0.30925857]),\n", " 'true'),\n", " ('Says 92 percent of Texas counties had no abortion provider in 2008.',\n", " array([0.26796873]),\n", " array([0.28335137]),\n", " 'true'),\n", " ('Says Texas has the fourth-lowest debt per capita of any state in the '\n", " 'nation, and we are the lowest of any of the big states.',\n", " array([0.27790649]),\n", " array([0.30700115]),\n", " 'true')]\n", "Low probability for correct class\n", "[('Barack Obama refuses to acknowledge Jerusalem as the capital of Israel.',\n", " array([0.06177102]),\n", " array([0.31776937]),\n", " 'false'),\n", " ('Says Nelson Mandela was a communist.',\n", " array([0.06902091]),\n", " array([0.2780403]),\n", " 'false'),\n", " ('A proposed ban on hollow-point bullets and bullets that expand upon impact '\n", " 'essentially bans deer hunting.',\n", " array([0.09091255]),\n", " array([0.28466038]),\n", " 'false'),\n", " ('Says Rick Perry supported a guest worker program to help people who would '\n", " 'otherwise be illegal aliens.',\n", " array([0.09571792]),\n", " array([0.25810736]),\n", " 'barely-true'),\n", " ('Says Ohios economic recovery started in February 2010.',\n", " array([0.095992]),\n", " array([0.40859184]),\n", " 'false'),\n", " ('Zika mosquitoes cant catch me.',\n", " array([0.09634855]),\n", " array([0.3119181]),\n", " 'false'),\n", " ('Congress will begin its recess without having allocated one penny to fight '\n", " 'Zika.',\n", " array([0.09879078]),\n", " array([0.27858522]),\n", " 'false'),\n", " ('Says that President Obama said in 2008 that his proposed greenhouse gas '\n", " 'regulations will bankrupt anyone who wants to build a new coal-fired power '\n", " 'plant.',\n", " array([0.10853077]),\n", " array([0.28406668]),\n", " 'false'),\n", " ('Says Barack Obama has pension investments that include Chinese firms, and '\n", " 'investments through a Caymans trust.',\n", " array([0.11133482]),\n", " array([0.22399151]),\n", " 'false'),\n", " ('Access for 12,000 women to use Planned Parenthood -- not for the right to '\n", " 'choose, but for basic health care -- was taken away by Wisconsin Gov. Scott '\n", " 'Walker and Lt. Gov. Rebecca Kleefisch.',\n", " array([0.11281116]),\n", " array([0.2662776]),\n", " 'false')]\n", "pants-fire\n", "High probability for correct class\n", "[('Blue Cross Blue Shield cancelled all their individual (health care) '\n", " 'policies in the state of Texas, effective Dec. 31.',\n", " array([0.18454858]),\n", " array([0.20862296]),\n", " 'half-true'),\n", " ('Says Ted Cruz said, There is no place for gays or atheists in my America. '\n", " 'None. Our Constitution makes that clear.',\n", " array([0.19096911]),\n", " array([0.22496935]),\n", " 'false'),\n", " ('Never mind that no red light camera, no speed camera, nor any radar gun has '\n", " 'ever stopped one accident from occurring.',\n", " array([0.19363173]),\n", " array([0.25798594]),\n", " 'false'),\n", " (\"Page 992 of the health care bill will establish school-based 'health' \"\n", " 'clinics. Your children will be indoctrinated and your grandchildren may be '\n", " 'aborted!',\n", " array([0.19934984]),\n", " array([0.23319877]),\n", " 'false'),\n", " ('Says Denzel Washington supports Donald Trump and speaks out against Barack '\n", " 'Obama.',\n", " array([0.19942185]),\n", " array([0.28598604]),\n", " 'barely-true'),\n", " ('Democratic Sens. Ed Markey, Al Franken and Jeanne Shaheen took Bribes From '\n", " 'Iran They Back Insane NUKE Deal.',\n", " array([0.20414693]),\n", " array([0.2669754]),\n", " 'barely-true'),\n", " ('Reporters rehearse questions with White House press (secretary).',\n", " array([0.20751695]),\n", " array([0.23709219]),\n", " 'true'),\n", " ('From Obama\\'s book: \"I found a solace in nursing a pervasive sense of '\n", " 'grievance and animosity against my mother\\'s race.\"',\n", " array([0.21706323]),\n", " array([0.21839428]),\n", " 'half-true'),\n", " ('Barack Obama is the first president to file lawsuits against the states he '\n", " 'swore an oath to protect.',\n", " array([0.23675977]),\n", " array([0.24826283]),\n", " 'false'),\n", " ('Michelle Nunns own plan says she funded organizations linked to terrorists.',\n", " array([0.26219134]),\n", " array([0.30099145]),\n", " 'barely-true')]\n", "Low probability for correct class\n", "[('In the past two years, Democrats have spent more money than this country '\n", " 'has spent in the last 200 years combined.',\n", " array([0.00941126]),\n", " array([0.30349954]),\n", " 'mostly-true'),\n", " ('The number of illegal immigrants in the United States is 30 million, it '\n", " 'could be 34 million.',\n", " array([0.02548566]),\n", " array([0.30411461]),\n", " 'mostly-true'),\n", " ('I never supported a state income tax for Texas.',\n", " array([0.02934045]),\n", " array([0.22741555]),\n", " 'mostly-true'),\n", " ('CNN did a poll recently where Obama and I are statistically tied.',\n", " array([0.0352685]),\n", " array([0.29207709]),\n", " 'mostly-true'),\n", " ('The last quarter, it was just announced, our gross domestic product was '\n", " 'below zero. Who ever heard of this? Its never below zero.',\n", " array([0.03689553]),\n", " array([0.24529246]),\n", " 'true'),\n", " ('The United States stood alone in the war in Iraq.',\n", " array([0.03703309]),\n", " array([0.28805474]),\n", " 'mostly-true'),\n", " ('Says President Barack Obama doubled the national debt, which had taken more '\n", " 'than two centuries to accumulate, in one year.',\n", " array([0.03879033]),\n", " array([0.25173286]),\n", " 'half-true'),\n", " ('Gov. Deal has the worst record on education in the history of this state.',\n", " array([0.04273135]),\n", " array([0.24002365]),\n", " 'true'),\n", " ('Medicare insurance premiums will be rising to $120.20 per month in 2013 and '\n", " '$247.00 per month in 2014.',\n", " array([0.04405389]),\n", " array([0.26876243]),\n", " 'mostly-true'),\n", " ('Out of 67 counties (in Florida), I won 66, which is unprecedented. Its '\n", " 'never happened before.',\n", " array([0.04427767]),\n", " array([0.29171739]),\n", " 'mostly-true')]\n", "true\n", "High probability for correct class\n", "[('In 1950, the average American lived for 68 years and 16 workers supported '\n", " 'one retiree. Today, the average life expectancy is 78 and three workers '\n", " 'support one retiree.',\n", " array([0.24255829]),\n", " array([0.30739337]),\n", " 'mostly-true'),\n", " ('The commission form of government is definitely losing favor in the United '\n", " 'States.',\n", " array([0.24277495]),\n", " array([0.25071386]),\n", " 'false'),\n", " ('Latinos are 17 percent of our countrys population but hold only 2 percent '\n", " 'of its wealth.',\n", " array([0.24416761]),\n", " array([0.29033684]),\n", " 'mostly-true'),\n", " ('Only five states, including Georgia, do not have a hate crimes law.',\n", " array([0.24666866]),\n", " array([0.27113862]),\n", " 'mostly-true'),\n", " ('Wisconsin still ranks first among the 50 states in manufacturing jobs per '\n", " 'capita.',\n", " array([0.26240926]),\n", " array([0.36058172]),\n", " 'mostly-true'),\n", " ('Georgia has had ʺmore bank failures than any other state.ʺ',\n", " array([0.2656559]),\n", " array([0.26706416]),\n", " 'mostly-true'),\n", " ('We spend more per student than almost any other major country in the world.',\n", " array([0.26705833]),\n", " array([0.34742938]),\n", " 'mostly-true'),\n", " ('In the last 50 years, (the federal government has) only balanced the budget '\n", " 'five times.',\n", " array([0.26994446]),\n", " array([0.31491449]),\n", " 'mostly-true'),\n", " ('More than half of all black children live in single-parent households, a '\n", " 'number that has doubled doubled since we were children.',\n", " array([0.28631034]),\n", " array([0.29431726]),\n", " 'mostly-true'),\n", " ('Says, Oregon has the third largest class size in the nation.',\n", " array([0.29808822]),\n", " array([0.31721509]),\n", " 'mostly-true')]\n", "Low probability for correct class\n", "[('Ronald Reagan did amnesty.',\n", " array([0.06374213]),\n", " array([0.36507979]),\n", " 'pants-fire'),\n", " ('Says Apple CEO Steve Jobs told President Obama that the company moved '\n", " 'factories to China because it needed 30,000 engineers.',\n", " array([0.07745747]),\n", " array([0.25274685]),\n", " 'half-true'),\n", " ('The Obama administration is allowing state waivers from welfare work '\n", " 'requirements only if they had a credible plan to increase employment by 20 '\n", " 'percent.',\n", " array([0.07835933]),\n", " array([0.23909043]),\n", " 'false'),\n", " ('Says Jeb Bush -- not Charlie Crist -- signed legislation that let Duke '\n", " 'Energy collect money for nuclear projects.',\n", " array([0.08510697]),\n", " array([0.3229992]),\n", " 'false'),\n", " ('John McCain and George Bush have \"absolutely no plan for universal health '\n", " 'care.\"',\n", " array([0.08515328]),\n", " array([0.30561856]),\n", " 'false'),\n", " ('Our trade deficit in goods reached nearly $800 billion last year alone.',\n", " array([0.0861052]),\n", " array([0.36136203]),\n", " 'mostly-true'),\n", " ('McCain \"said he was \\'stumped\\' when asked whether contraceptives help stop '\n", " 'the spread of HIV.\"',\n", " array([0.08706378]),\n", " array([0.29362644]),\n", " 'false'),\n", " ('Weare picking up oil with shovels and paper and plastic bags.',\n", " array([0.08975892]),\n", " array([0.29177719]),\n", " 'barely-true'),\n", " ('The House-passed budget proposal could cut funding for programs that help '\n", " 'keep local neighborhoods safe, slash more than $1.7 million in anti-terror '\n", " 'funds for Ohio.',\n", " array([0.09587181]),\n", " array([0.23432662]),\n", " 'half-true'),\n", " ('The Israelisgave up 1,000 terrorists in return for one sergeant.',\n", " array([0.09609552]),\n", " array([0.25524104]),\n", " 'half-true')]\n" ] } ], "source": [ "import pprint\n", "\n", "for cls in lr_bpemb.classes_:\n", " print(cls)\n", " print('High probability for correct class')\n", " # sort the errors by the probability of the gold class and look at the:\n", " # 1. instances where the gold class had a high probability\n", " pprint.pprint(sorted(errors[cls], key=lambda x: x[1])[-10:])\n", " print('Low probability for correct class')\n", " # 1. instances where the gold class had a low probability\n", " pprint.pprint(sorted(errors[cls], key=lambda x: x[1])[:10])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "IdWWxWdKcI9x", "outputId": "d9c4119b-c22b-40bb-b26f-b99f79cd9188" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " (0, 414)\t1.0\n", "['is']\n" ] } ], "source": [ "# We can check for some instances what were their TF-IDF scores (the input for the model)\n", "text = 'Ken Lanci is a lifelong Clevelander'\n", "print(vectorizer.transform([text]))\n", "text = 'Ken Lanci is a lifelong Clevelander'\n", "print([word for word in text.lower().split() if word in vectorizer.vocabulary_])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1lYCXmr2fPYn", "outputId": "42e4b10e-9cf6-4b63-f53d-95824d2b92f5" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "barely-true\n", "High probability for correct class\n", "[('Austin politicians want to cram more kids into classrooms so they dont have '\n", " 'to make the tough decisions to balance the budget.',\n", " array([0.26302518]),\n", " array([0.26302518, 0.18762024, 0.24028468, 0.15297156, 0.05470604,\n", " 0.10139231]),\n", " 'barely-true'),\n", " ('Rosalyn Dance voted against President Obamas Medicaid expansion.',\n", " array([0.27706225]),\n", " array([0.27706225, 0.27214181, 0.1821155 , 0.09545814, 0.11163969,\n", " 0.06158261]),\n", " 'barely-true'),\n", " ('Says Hillary Clinton was asked repeatedly to provide security in Benghazi '\n", " 'on several occasions, including direct cables.',\n", " array([0.28209335]),\n", " array([0.28209335, 0.2077499 , 0.16141698, 0.11435118, 0.1009411 ,\n", " 0.13344748]),\n", " 'barely-true'),\n", " ('Says Elizabeth Warren lied when she says I want to abolish the Federal '\n", " 'Minimum Wage.',\n", " array([0.28353144]),\n", " array([0.28353144, 0.21341335, 0.18486839, 0.15152536, 0.05881866,\n", " 0.1078428 ]),\n", " 'barely-true'),\n", " ('Michelle Nunn has praised the Occupy movement.',\n", " array([0.28617855]),\n", " array([0.28617855, 0.17698218, 0.22941991, 0.13742239, 0.08343846,\n", " 0.08655851]),\n", " 'barely-true'),\n", " ('The federal government now tells us which light bulbs to buy.',\n", " array([0.28647602]),\n", " array([0.28647602, 0.21257576, 0.15413087, 0.10254278, 0.15447978,\n", " 0.0897948 ]),\n", " 'barely-true'),\n", " ('Says Georgia Democratic Senate hopeful Michelle Nunn supports higher taxes.',\n", " array([0.29150981]),\n", " array([0.29150981, 0.19441539, 0.16508727, 0.15857091, 0.11708733,\n", " 0.07332929]),\n", " 'barely-true'),\n", " ('Says Congressman Jon Runyan has a plan to raise Medicare costs $6,400 a '\n", " 'year.',\n", " array([0.31599415]),\n", " array([0.31599415, 0.19356116, 0.17842892, 0.1420902 , 0.07725586,\n", " 0.09266971]),\n", " 'barely-true'),\n", " ('Says Russ Feingold voted to raise taxes on Social Security benefits for '\n", " 'seniors, he even tried to give Social Security benefits to illegal '\n", " 'immigrants.',\n", " array([0.33618429]),\n", " array([0.33618429, 0.21845278, 0.1865223 , 0.11323648, 0.08039732,\n", " 0.06520682]),\n", " 'barely-true'),\n", " ('Brendan Doherty wants to repeal Obamacare, increasing drug prices for '\n", " 'seniors.',\n", " array([0.42830558]),\n", " array([0.42830558, 0.19574949, 0.17069489, 0.08435248, 0.07753514,\n", " 0.04336243]),\n", " 'barely-true')]\n", "Low probability for correct class\n", "[('In the last 24 months, 10 rural Texas hospitals have been forced to shut '\n", " 'their doors because state leaders chose not to expand Medicaid.',\n", " array([0.19998145]),\n", " array([0.19998145, 0.19605453, 0.18811482, 0.19879774, 0.06443365,\n", " 0.15261781]),\n", " 'barely-true'),\n", " ('The brutal fact is, when it comes to education, America is slipping behind '\n", " 'other nations.',\n", " array([0.20643283]),\n", " array([0.20643283, 0.18887344, 0.20050828, 0.17323369, 0.12188373,\n", " 0.10906803]),\n", " 'barely-true'),\n", " ('Says that President Obama promised that with the stimulus plan, '\n", " 'unemployment would never go above 8 percent. He even said it would be 6 '\n", " 'percent by now.',\n", " array([0.21532266]),\n", " array([0.21532266, 0.18253056, 0.21468393, 0.19822653, 0.06827082,\n", " 0.1209655 ]),\n", " 'barely-true'),\n", " ('Says there are a half a trillion dollars in cuts to Medicare that are going '\n", " 'to go in place as a result of health care reform.',\n", " array([0.22312095]),\n", " array([0.22312095, 0.20618386, 0.17928683, 0.19845712, 0.06507634,\n", " 0.1278749 ]),\n", " 'barely-true'),\n", " ('John Boehner said the jobs of teachers and nurses and police officers and '\n", " 'firefighters are government jobs that werent worth saving.',\n", " array([0.22520183]),\n", " array([0.22520183, 0.19357467, 0.22196905, 0.13771429, 0.08113373,\n", " 0.14040644]),\n", " 'barely-true'),\n", " ('The U.S. Army had a training program that put evangelical Christians, '\n", " 'Catholics and Mormons in the same category of religious extremism as we do '\n", " 'al-Qaida.',\n", " array([0.22967826]),\n", " array([0.22967826, 0.18338401, 0.190708 , 0.15855762, 0.13616616,\n", " 0.10150596]),\n", " 'barely-true'),\n", " ('Some even advocate wiping out 401(k)s entirely and replacing them with '\n", " 'government-run accounts.',\n", " array([0.23115243]),\n", " array([0.23115243, 0.20258981, 0.16605986, 0.17082931, 0.10736821,\n", " 0.12200038]),\n", " 'barely-true'),\n", " ('When Peppers tax was finally voted down, Pepper laid off cops and closed '\n", " 'jails and let criminals run free in the streets.',\n", " array([0.24628683]),\n", " array([0.24628683, 0.18695458, 0.2315768 , 0.13769275, 0.0651632 ,\n", " 0.13232584]),\n", " 'barely-true'),\n", " ('Says Donald Trump has given more money to Democratic candidates than '\n", " 'Republican candidates.',\n", " array([0.25240317]),\n", " array([0.25240317, 0.12307927, 0.21806967, 0.22313041, 0.03756317,\n", " 0.14575431]),\n", " 'barely-true'),\n", " ('Says Gwen Graham was a Washington lobbyist.',\n", " array([0.25427718]),\n", " array([0.25427718, 0.19731912, 0.10562465, 0.18591881, 0.16743849,\n", " 0.08942174]),\n", " 'barely-true')]\n", "false\n", "High probability for correct class\n", "[('Signs letter saying Consumer Product Safety Commission is acting without '\n", " 'consultation or input from the company to stop the sale of Buckyballs.',\n", " array([0.31712839]),\n", " array([0.13331369, 0.31712839, 0.14417145, 0.11358885, 0.10241171,\n", " 0.18938591]),\n", " 'false'),\n", " (\"Obama nominee Dawn Johnsen called motherhood 'involuntary servitude.'\",\n", " array([0.31836704]),\n", " array([0.15713602, 0.31836704, 0.12322423, 0.05435816, 0.26798297,\n", " 0.07893158]),\n", " 'false'),\n", " ('On support for Trade Promotion Authority, calledfast-track',\n", " array([0.33002039]),\n", " array([0.15445088, 0.33002039, 0.2705143 , 0.09879464, 0.03093324,\n", " 0.11528656]),\n", " 'false'),\n", " ('No one questioned that she (Judge Sotomayor) was out of the mainstream.',\n", " array([0.33043471]),\n", " array([0.15803969, 0.33043471, 0.17683138, 0.11791864, 0.12958066,\n", " 0.08719492]),\n", " 'false'),\n", " ('One of the main functions of the Department of Homeland Securitys SAVE '\n", " 'database is checking voter registration citizenship status.',\n", " array([0.34409945]),\n", " array([0.10120187, 0.34409945, 0.12620345, 0.12804975, 0.13388489,\n", " 0.16656059]),\n", " 'false'),\n", " ('Minnick voted to let the government fund abortion under Obamacare.',\n", " array([0.35505905]),\n", " array([0.21344999, 0.35505905, 0.13388265, 0.07698283, 0.15895469,\n", " 0.06167078]),\n", " 'false'),\n", " ('On support of Gov. John Kasichs drilling tax plan',\n", " array([0.35588041]),\n", " array([0.16152847, 0.35588041, 0.20941763, 0.06896681, 0.10600024,\n", " 0.09820645]),\n", " 'false'),\n", " ('Ed Gillespie supports a personhood amendment.',\n", " array([0.37261171]),\n", " array([0.10623974, 0.37261171, 0.19255768, 0.12480286, 0.09520349,\n", " 0.10858452]),\n", " 'false'),\n", " ('Says Democratic Party created Planned Parenthood',\n", " array([0.38097574]),\n", " array([0.19667093, 0.38097574, 0.07340432, 0.03324059, 0.20444405,\n", " 0.11126436]),\n", " 'false'),\n", " ('On birthright citizenship for illegal immigrants.',\n", " array([0.44855039]),\n", " array([0.07032212, 0.44855039, 0.18433352, 0.09191186, 0.08787095,\n", " 0.11701116]),\n", " 'false')]\n", "Low probability for correct class\n", "[(\"The Z-visa that was offered in that Senate bill let everybody who's here \"\n", " 'illegally, other than criminals, stay here for the rest of their lives.',\n", " array([0.19679818]),\n", " array([0.16658818, 0.19679818, 0.18915559, 0.16522236, 0.09465374,\n", " 0.18758195]),\n", " 'false'),\n", " ('A major part of the climate change bill sponsored by Sens. John Kerry and '\n", " 'Joe Lieberman was essentially written by BP.',\n", " array([0.19737013]),\n", " array([0.18665663, 0.19737013, 0.16271615, 0.16618049, 0.15887357,\n", " 0.12820303]),\n", " 'false'),\n", " ('Every person on death row was a foster kid.',\n", " array([0.20258425]),\n", " array([0.11883106, 0.20258425, 0.15938342, 0.15787086, 0.16009893,\n", " 0.20123148]),\n", " 'false'),\n", " ('The ammunition used in the Orlando shooting is banned by Geneva Convention. '\n", " 'It enters the body, spins explodes.',\n", " array([0.20282816]),\n", " array([0.11077081, 0.20282816, 0.16049543, 0.14251996, 0.19267677,\n", " 0.19070888]),\n", " 'false'),\n", " ('Liberals have figured out a Facebook algorithm and all the people getting '\n", " 'banned from Facebook are somehow conservatives.',\n", " array([0.20584772]),\n", " array([0.1963959 , 0.20584772, 0.17838423, 0.12362139, 0.14751802,\n", " 0.14823273]),\n", " 'false'),\n", " ('Reporters have uncovered another Scott company accused of criminal acts. '\n", " 'But Scott wont come clean.',\n", " array([0.20629242]),\n", " array([0.17971584, 0.20629242, 0.18833269, 0.17972274, 0.10024639,\n", " 0.14568992]),\n", " 'false'),\n", " ('We dont allow filming inside of the City Hall unless there is a specific '\n", " 'reason.',\n", " array([0.20826226]),\n", " array([0.1833922 , 0.20826226, 0.13051615, 0.15941511, 0.15910828,\n", " 0.159306 ]),\n", " 'false'),\n", " ('The number of Americans who receive means-tested government benefits -- '\n", " 'welfare -- now outnumbers those who are year-round full-time workers.',\n", " array([0.20972645]),\n", " array([0.20289108, 0.20972645, 0.15929458, 0.20311458, 0.0534685 ,\n", " 0.17150482]),\n", " 'false'),\n", " ('In Mexico, they dont have birth certificates... they dont have registration '\n", " 'cards for voters. They have one national ID.',\n", " array([0.21030414]),\n", " array([0.1849648 , 0.21030414, 0.13818485, 0.1895959 , 0.11062751,\n", " 0.1663228 ]),\n", " 'false'),\n", " ('In his first meeting with University of Wisconsin System officials, '\n", " 'Republican Governor elect Scott Walker told them to prepare for cuts.',\n", " array([0.21111488]),\n", " array([0.20259171, 0.21111488, 0.18219824, 0.13625999, 0.12545277,\n", " 0.14238241]),\n", " 'false')]\n", "half-true\n", "High probability for correct class\n", "[('The planned expansion of Savannahs port is a jobs creating project.',\n", " array([0.32723884]),\n", " array([0.1342415 , 0.27495789, 0.32723884, 0.12055844, 0.04393291,\n", " 0.09907042]),\n", " 'half-true'),\n", " ('Banks paid Hillary Clinton over $1 million and are contributing millions '\n", " 'more to elect her.',\n", " array([0.33252706]),\n", " array([0.17663693, 0.14261079, 0.33252706, 0.18351365, 0.02794379,\n", " 0.13676779]),\n", " 'half-true'),\n", " ('Every dollar we invested in high-quality, early education programs can save '\n", " 'more than $7 later on by boosting graduation rates, reducing teen '\n", " 'pregnancy, even reducing crime.',\n", " array([0.33281229]),\n", " array([0.1811519 , 0.13526641, 0.33281229, 0.19585909, 0.02833078,\n", " 0.12657953]),\n", " 'half-true'),\n", " ('After losing 750,000 jobs a month before this administration, the U.S. '\n", " 'economy under Barack Obama has had 20 straight months of growth, has added '\n", " '2.8 million jobs in the private sector and added millions of jobs in '\n", " 'manufacturing.',\n", " array([0.33877502]),\n", " array([0.14704204, 0.13690981, 0.33877502, 0.22483682, 0.02994485,\n", " 0.12249147]),\n", " 'half-true'),\n", " ('Says Texas unemployment rate has doubled on Rick Perrys watch.',\n", " array([0.35578192]),\n", " array([0.12502519, 0.17926101, 0.35578192, 0.14677991, 0.07851097,\n", " 0.114641 ]),\n", " 'half-true'),\n", " ('Bill Clinton cut the military drastically.',\n", " array([0.35923936]),\n", " array([0.17264085, 0.1754223 , 0.35923936, 0.12168385, 0.06506992,\n", " 0.10594372]),\n", " 'half-true'),\n", " ('For each $1 billion in infrastructure investment, 42,000 jobs are created.',\n", " array([0.36015066]),\n", " array([0.16897203, 0.10566123, 0.36015066, 0.25186987, 0.01831252,\n", " 0.09503369]),\n", " 'half-true'),\n", " ('Georgia can substantially increase its funding for education by going after '\n", " '$2.5 billion in uncollected taxes.',\n", " array([0.36477485]),\n", " array([0.12987317, 0.1299191 , 0.36477485, 0.25847386, 0.03318873,\n", " 0.08377029]),\n", " 'half-true'),\n", " ('Over half of science, technology, engineering and mathematics students '\n", " 'receiving advanced degrees are not citizens of the United States of '\n", " 'America.',\n", " array([0.41276349]),\n", " array([0.08239517, 0.06830964, 0.41276349, 0.30943192, 0.02646618,\n", " 0.1006336 ]),\n", " 'half-true'),\n", " ('David Perdue led efforts to ship thousands of jobs overseas.',\n", " array([0.45944817]),\n", " array([0.10616967, 0.1811695 , 0.45944817, 0.13171546, 0.05535313,\n", " 0.06614408]),\n", " 'half-true')]\n", "Low probability for correct class\n", "[('I created the school choice program.',\n", " array([0.21036266]),\n", " array([0.17511044, 0.19106213, 0.21036266, 0.20476119, 0.09644064,\n", " 0.12226293]),\n", " 'half-true'),\n", " ('If Question 1 were to pass here in Nevada, we would have more restrictive '\n", " 'gun laws here in Nevada dealing with the transfer of firearms than they do '\n", " 'in California.',\n", " array([0.21339909]),\n", " array([0.14635815, 0.19714444, 0.21339909, 0.20312909, 0.04491439,\n", " 0.19505484]),\n", " 'half-true'),\n", " ('Under (Obamacare), you cant reward a person for better behavior. You cant '\n", " 'have incentives to be healthier.',\n", " array([0.21461677]),\n", " array([0.21150672, 0.20818181, 0.21461677, 0.16175092, 0.09431433,\n", " 0.10962944]),\n", " 'half-true'),\n", " ('Marco Rubio \"supported $800,000 for AstroTurf for a field where he played '\n", " 'flag football.\"',\n", " array([0.21503959]),\n", " array([0.15782732, 0.16778964, 0.21503959, 0.18418053, 0.08301532,\n", " 0.19214759]),\n", " 'half-true'),\n", " ('We caught (the Texas Commission on Environmental Quality) lying to us about '\n", " 'the results of air quality studies in the Barnett Shale.',\n", " array([0.21555044]),\n", " array([0.11739072, 0.18516556, 0.21555044, 0.1962633 , 0.09398897,\n", " 0.19164101]),\n", " 'half-true'),\n", " (\"He's leading by example, refusing contributions from PACs and Washington \"\n", " 'lobbyists.',\n", " array([0.21889862]),\n", " array([0.18373547, 0.15530994, 0.21889862, 0.17217476, 0.10096145,\n", " 0.16891976]),\n", " 'half-true'),\n", " ('The same federal government that offers some money for a program is walking '\n", " 'away from another health care program.',\n", " array([0.21980878]),\n", " array([0.21729909, 0.21384499, 0.21980878, 0.17316175, 0.06792889,\n", " 0.10795649]),\n", " 'half-true'),\n", " ('Americans who get their insurance through the workplace, cost savings could '\n", " 'be as much as $3,000 less per employee than if we do nothing.',\n", " array([0.22062537]),\n", " array([0.21731516, 0.14280924, 0.22062537, 0.21867927, 0.03842627,\n", " 0.16214468]),\n", " 'half-true'),\n", " ('40 percent of illegal immigrants had a visa and then became illegal, mostly '\n", " 'because they changed jobs.',\n", " array([0.22078109]),\n", " array([0.14852066, 0.21148064, 0.22078109, 0.21572661, 0.04314073,\n", " 0.16035027]),\n", " 'half-true'),\n", " ('Were talking right now about a $12 billion hole in our current, so-called '\n", " 'balanced state budget.',\n", " array([0.2220753]),\n", " array([0.1400699 , 0.22012587, 0.2220753 , 0.1993672 , 0.04721604,\n", " 0.17114569]),\n", " 'half-true')]\n", "mostly-true\n", "High probability for correct class\n", "[('We admit more than 100,000 lifetime migrants from the Middle East each '\n", " 'year.',\n", " array([0.35191719]),\n", " array([0.12078946, 0.0938687 , 0.22660249, 0.35191719, 0.0183323 ,\n", " 0.18848986]),\n", " 'mostly-true'),\n", " ('More than 70 percent of American adults have committed a crime that could '\n", " 'lead to imprisonment.',\n", " array([0.35193283]),\n", " array([0.09487863, 0.06720162, 0.29571508, 0.35193283, 0.01681881,\n", " 0.17345304]),\n", " 'mostly-true'),\n", " ('Georgia has more than 700 law enforcement agencies, and fewer than 20 '\n", " 'percent of them are state-certified.',\n", " array([0.3591597]),\n", " array([0.09898033, 0.06596579, 0.24559441, 0.3591597 , 0.01683088,\n", " 0.21346889]),\n", " 'mostly-true'),\n", " ('We borrow a million dollars every minute.',\n", " array([0.36444243]),\n", " array([0.14579341, 0.08223078, 0.18832413, 0.36444243, 0.01223192,\n", " 0.20697733]),\n", " 'mostly-true'),\n", " ('Worldwide credit card transactions, the credit card fraud rate is 0.04 '\n", " 'percent, compared to almost 8 percent, 9 percent, 10 percent of Medicare '\n", " 'fraud.',\n", " array([0.36818189]),\n", " array([0.09659597, 0.08410966, 0.26479411, 0.36818189, 0.01356806,\n", " 0.1727503 ]),\n", " 'mostly-true'),\n", " ('94 percent of winning candidates in 2010 had more money than their '\n", " 'opponents.',\n", " array([0.36915984]),\n", " array([0.1013368 , 0.061505 , 0.26146291, 0.36915984, 0.0077233 ,\n", " 0.19881216]),\n", " 'mostly-true'),\n", " ('University of Texas undergraduate student debt is less than $21,000 '\n", " 'probably one of the lowest debts across the nation.',\n", " array([0.37008317]),\n", " array([0.0715916 , 0.05839747, 0.21441318, 0.37008317, 0.01503068,\n", " 0.2704839 ]),\n", " 'mostly-true'),\n", " ('Ohios electricity rates are 10 percent below the national average.',\n", " array([0.3915675]),\n", " array([0.06960254, 0.08318926, 0.18605176, 0.3915675 , 0.01037493,\n", " 0.25921401]),\n", " 'mostly-true'),\n", " ('Americans work way more than an average of industrialized countries around '\n", " 'the world.',\n", " array([0.39783377]),\n", " array([0.08611268, 0.07676001, 0.31685375, 0.39783377, 0.01350048,\n", " 0.10893931]),\n", " 'mostly-true'),\n", " ('Russia has an economy the size of Italy.',\n", " array([0.46374061]),\n", " array([0.05623691, 0.1219714 , 0.19440037, 0.46374061, 0.02596335,\n", " 0.13768736]),\n", " 'mostly-true')]\n", "Low probability for correct class\n", "[('Unlike virtually every other campaign, we dont have a super PAC.',\n", " array([0.20859411]),\n", " array([0.20603525, 0.15023642, 0.15129618, 0.20859411, 0.12669266,\n", " 0.15714538]),\n", " 'mostly-true'),\n", " ('Says an illegal immigrant fraudulently claimed children who actually lived '\n", " 'in Mexico on income tax forms to collect more than $29,000.',\n", " array([0.21290631]),\n", " array([0.17591866, 0.1853713 , 0.18096353, 0.21290631, 0.09106108,\n", " 0.15377913]),\n", " 'mostly-true'),\n", " ('In a poll, 53 percent of young Republican voters . . . under age 35 said '\n", " 'that they would describe a climate [change] denier as ignorant, out of '\n", " 'touch or crazy.',\n", " array([0.22158575]),\n", " array([0.17223146, 0.15299953, 0.20275629, 0.22158575, 0.07266858,\n", " 0.17775838]),\n", " 'mostly-true'),\n", " ('Barack Obama will somehow manage to add more than $8 trillion to the '\n", " 'national debt, which is more debt than the 43 presidents who held office '\n", " 'before him compiled together.',\n", " array([0.22255775]),\n", " array([0.16181738, 0.13840224, 0.21825155, 0.22255775, 0.04476479,\n", " 0.21420629]),\n", " 'mostly-true'),\n", " ('When I talk about (raising the) minimum wage ... half of Republicansagree '\n", " 'with it.',\n", " array([0.22335972]),\n", " array([0.2005361 , 0.14035991, 0.19710784, 0.22335972, 0.02695197,\n", " 0.21168445]),\n", " 'mostly-true'),\n", " ('Between the year 2000 and 2006, (insurance) premiums in this country '\n", " 'doubled.',\n", " array([0.22349629]),\n", " array([0.14335926, 0.18787051, 0.16310565, 0.22349629, 0.08177795,\n", " 0.20039035]),\n", " 'mostly-true'),\n", " ('Says legislation pending in the House would effectively limit or eliminate '\n", " 'time-and-a-half for people who work overtime.',\n", " array([0.22616179]),\n", " array([0.18882889, 0.20120041, 0.19498199, 0.22616179, 0.02483301,\n", " 0.16399391]),\n", " 'mostly-true'),\n", " (\"And he's the only candidate who will fight for a national catastrophe fund \"\n", " 'to reduce insurance rates.',\n", " array([0.22731101]),\n", " array([0.17388294, 0.20250774, 0.17136885, 0.22731101, 0.08632988,\n", " 0.13859958]),\n", " 'mostly-true'),\n", " ('Says Donald Trump won more counties than any candidate on our side since '\n", " 'Ronald Reagan.',\n", " array([0.23124282]),\n", " array([0.19341058, 0.15751294, 0.20413876, 0.23124282, 0.05840977,\n", " 0.15528513]),\n", " 'mostly-true'),\n", " ('Says out of 588 school districts, we give 31 (former Abbott) districts 70 '\n", " 'percent of the aid.',\n", " array([0.23245719]),\n", " array([0.18717314, 0.13667077, 0.18528811, 0.23245719, 0.06039563,\n", " 0.19801516]),\n", " 'mostly-true')]\n", "pants-fire\n", "High probability for correct class\n", "[('The president is brain-dead.',\n", " array([0.26844632]),\n", " array([0.15402847, 0.25656952, 0.14715299, 0.08095951, 0.26844632,\n", " 0.09284319]),\n", " 'pants-fire'),\n", " ('Nobody covered the remarks of Patricia Smith, the mother of a Benghazi '\n", " 'victim, live, but almost everybody covered KhizrKhans, Mr. Khans remarks '\n", " 'live.',\n", " array([0.26948679]),\n", " array([0.21122634, 0.17606194, 0.10573763, 0.11362465, 0.26948679,\n", " 0.12386266]),\n", " 'pants-fire'),\n", " ('President Obama went around the world and apologized for America.',\n", " array([0.27453481]),\n", " array([0.13692896, 0.17150436, 0.20154439, 0.12943158, 0.27453481,\n", " 0.0860559 ]),\n", " 'pants-fire'),\n", " ('A friends sister died from Obamacare becauseBlue Shield completely just '\n", " 'pulled out of California.',\n", " array([0.27873331]),\n", " array([0.12850287, 0.1980285 , 0.13664032, 0.11336825, 0.27873331,\n", " 0.14472673]),\n", " 'pants-fire'),\n", " ('Says a rape kit can be used to clean out women, basically like dilation and '\n", " 'curettage.',\n", " array([0.29748012]),\n", " array([0.20915077, 0.17675712, 0.10787376, 0.13019329, 0.29748012,\n", " 0.07854493]),\n", " 'pants-fire'),\n", " ('Fidel Castro endorses Obama.',\n", " array([0.29803774]),\n", " array([0.29547501, 0.11488852, 0.2263122 , 0.01979901, 0.29803774,\n", " 0.04548753]),\n", " 'pants-fire'),\n", " ('Sheldon Whitehouse [got] a secret closed-door briefing, warning of the '\n", " '[2008 economic] crash.',\n", " array([0.31680957]),\n", " array([0.18420339, 0.21531583, 0.08773441, 0.09093313, 0.31680957,\n", " 0.10500367]),\n", " 'pants-fire'),\n", " ('Says President Barack Obama has said that everybody should hate the police.',\n", " array([0.32923461]),\n", " array([0.16983357, 0.22409941, 0.11541697, 0.06636785, 0.32923461,\n", " 0.0950476 ]),\n", " 'pants-fire'),\n", " ('Says Barack Obama is a Muslim.',\n", " array([0.3633849]),\n", " array([0.17930742, 0.16205863, 0.11749332, 0.10132006, 0.3633849 ,\n", " 0.07643567]),\n", " 'pants-fire'),\n", " ('His true name is Barak Hussein Muhammed Obama.',\n", " array([0.41112157]),\n", " array([0.08697252, 0.23778562, 0.08980858, 0.0237037 , 0.41112157,\n", " 0.15060801]),\n", " 'pants-fire')]\n", "Low probability for correct class\n", "[(\"Clinton's former pastor convicted of child molestation.\",\n", " array([0.21295808]),\n", " array([0.13307059, 0.20963104, 0.18046706, 0.081746 , 0.21295808,\n", " 0.18212723]),\n", " 'pants-fire'),\n", " ('You cannot build a little guy up by tearing a big guy down -- Abraham '\n", " 'Lincoln said it.',\n", " array([0.22148382]),\n", " array([0.16446767, 0.18909148, 0.20660855, 0.11339259, 0.22148382,\n", " 0.10495589]),\n", " 'pants-fire'),\n", " ('President Barack Obamas latest executive order mandates the apprehension '\n", " 'and detention of Americans who merely show signs of respiratory illness.',\n", " array([0.2646772]),\n", " array([0.15547019, 0.21085589, 0.16777896, 0.08752435, 0.2646772 ,\n", " 0.11369342]),\n", " 'pants-fire'),\n", " ('Says the Democrats told the Catholic Church that theyll use federal powers '\n", " 'to shut down church charities and hospitals if the church doesnt change its '\n", " 'beliefs.',\n", " array([0.26727142]),\n", " array([0.17626063, 0.23986723, 0.11014199, 0.11434114, 0.26727142,\n", " 0.09211758]),\n", " 'pants-fire'),\n", " ('The president is brain-dead.',\n", " array([0.26844632]),\n", " array([0.15402847, 0.25656952, 0.14715299, 0.08095951, 0.26844632,\n", " 0.09284319]),\n", " 'pants-fire'),\n", " ('Nobody covered the remarks of Patricia Smith, the mother of a Benghazi '\n", " 'victim, live, but almost everybody covered KhizrKhans, Mr. Khans remarks '\n", " 'live.',\n", " array([0.26948679]),\n", " array([0.21122634, 0.17606194, 0.10573763, 0.11362465, 0.26948679,\n", " 0.12386266]),\n", " 'pants-fire'),\n", " ('President Obama went around the world and apologized for America.',\n", " array([0.27453481]),\n", " array([0.13692896, 0.17150436, 0.20154439, 0.12943158, 0.27453481,\n", " 0.0860559 ]),\n", " 'pants-fire'),\n", " ('A friends sister died from Obamacare becauseBlue Shield completely just '\n", " 'pulled out of California.',\n", " array([0.27873331]),\n", " array([0.12850287, 0.1980285 , 0.13664032, 0.11336825, 0.27873331,\n", " 0.14472673]),\n", " 'pants-fire'),\n", " ('Says a rape kit can be used to clean out women, basically like dilation and '\n", " 'curettage.',\n", " array([0.29748012]),\n", " array([0.20915077, 0.17675712, 0.10787376, 0.13019329, 0.29748012,\n", " 0.07854493]),\n", " 'pants-fire'),\n", " ('Fidel Castro endorses Obama.',\n", " array([0.29803774]),\n", " array([0.29547501, 0.11488852, 0.2263122 , 0.01979901, 0.29803774,\n", " 0.04548753]),\n", " 'pants-fire')]\n", "true\n", "High probability for correct class\n", "[('Congress can tell [the Supreme Court] which cases they ought to hear. We '\n", " 'have that authority.',\n", " array([0.26751834]),\n", " array([0.17486497, 0.22588625, 0.09836713, 0.14207016, 0.09129315,\n", " 0.26751834]),\n", " 'true'),\n", " ('Three thousand felons voted in Rhode Island in 2008.',\n", " array([0.26954967]),\n", " array([0.07271338, 0.16109241, 0.20985999, 0.23901292, 0.04777164,\n", " 0.26954967]),\n", " 'true'),\n", " ('During my eight years as county executive, we cut the number of county '\n", " 'workers by 20 percent.',\n", " array([0.27345031]),\n", " array([0.14659243, 0.11406933, 0.18530768, 0.25706216, 0.02351809,\n", " 0.27345031]),\n", " 'true'),\n", " ('Biden is \"one of the least wealthy members of the U.S. Senate.\"',\n", " array([0.27752238]),\n", " array([0.12704761, 0.15308015, 0.13570624, 0.23677313, 0.06987049,\n", " 0.27752238]),\n", " 'true'),\n", " ('The Walton family, which owns Wal-Mart, controls a fortune equal to the '\n", " 'wealth of the bottom 42 percent of Americans combined.',\n", " array([0.30783847]),\n", " array([0.07833839, 0.12055671, 0.23069266, 0.2266383 , 0.03593547,\n", " 0.30783847]),\n", " 'true'),\n", " ('Theres actually 600 abortions done after the 20th week of pregnancy every '\n", " 'year in Ohio.',\n", " array([0.31190878]),\n", " array([0.11092438, 0.14964684, 0.13952456, 0.26394097, 0.02405447,\n", " 0.31190878]),\n", " 'true'),\n", " ('As a former federal prosecutor, I prosecuted over 4,000 cases.',\n", " array([0.31863488]),\n", " array([0.14044857, 0.15170702, 0.19081626, 0.17379286, 0.02460042,\n", " 0.31863488]),\n", " 'true'),\n", " ('Only 20 colleges and universities have athletic departments with revenue '\n", " 'exceeding expenses.',\n", " array([0.3364042]),\n", " array([0.10639138, 0.04657964, 0.19563749, 0.29993382, 0.01505347,\n", " 0.3364042 ]),\n", " 'true'),\n", " ('The United states is borrowing more than 40 cents of every dollar we spend.',\n", " array([0.33731897]),\n", " array([0.09510039, 0.10495588, 0.17639187, 0.27213754, 0.01409534,\n", " 0.33731897]),\n", " 'true'),\n", " ('I am now the No. 2 member of this House in terms of length of service.',\n", " array([0.40499398]),\n", " array([0.06856361, 0.18419065, 0.09427939, 0.18781724, 0.06015515,\n", " 0.40499398]),\n", " 'true')]\n", "Low probability for correct class\n", "[('We have a retiree that is collecting a $17,000 paycheck a month . . . tax '\n", " 'free.',\n", " array([0.20305376]),\n", " array([0.1844469 , 0.18360528, 0.17992862, 0.15924116, 0.08972429,\n", " 0.20305376]),\n", " 'true'),\n", " ('Says Ron Johnson likes to say there are too many lawyers in the Senate 57. '\n", " 'Hed be the 70th millionaire.',\n", " array([0.20788873]),\n", " array([0.18261734, 0.16861212, 0.17959899, 0.2072759 , 0.05400692,\n", " 0.20788873]),\n", " 'true'),\n", " ('Proposed fees for Rhode Island beaches will still be less than some of the '\n", " 'town beaches.',\n", " array([0.21294838]),\n", " array([0.14966726, 0.17734789, 0.21276733, 0.18705369, 0.06021546,\n", " 0.21294838]),\n", " 'true'),\n", " ('MikeHuckabee.com gets \"more hits than virtually any other presidential '\n", " 'candidate.\"',\n", " array([0.21579208]),\n", " array([0.13535892, 0.18388853, 0.21267974, 0.16788574, 0.08439499,\n", " 0.21579208]),\n", " 'true'),\n", " ('More black babies are aborted in NYC than born.',\n", " array([0.21602022]),\n", " array([0.13585434, 0.16637365, 0.20901227, 0.18271742, 0.09002211,\n", " 0.21602022]),\n", " 'true'),\n", " ('As governor, Ted Strickland left only 89 cents in Ohios rainy day fund.',\n", " array([0.21679789]),\n", " array([0.14982887, 0.2144718 , 0.1433054 , 0.19560797, 0.07998807,\n", " 0.21679789]),\n", " 'true'),\n", " (\"Since 1981, reconciliation has been used 21 times. Most of it's been used \"\n", " 'by Republicans.',\n", " array([0.2332101]),\n", " array([0.12069822, 0.19182052, 0.16291276, 0.22483058, 0.06652783,\n", " 0.2332101 ]),\n", " 'true'),\n", " ('I have filed every disclosure that has ever been required.',\n", " array([0.24174713]),\n", " array([0.12592984, 0.20429919, 0.12502129, 0.22504939, 0.07795317,\n", " 0.24174713]),\n", " 'true'),\n", " ('Pinellas County voters elected me as their chief financial officer (and) '\n", " 'elected me as (their) governor four years ago.',\n", " array([0.24206037]),\n", " array([0.16379328, 0.23483695, 0.1464253 , 0.14344739, 0.0694367 ,\n", " 0.24206037]),\n", " 'true'),\n", " ('There have been three people tried and convicted by the last administration '\n", " 'in military courts. Two are walking the street right now.',\n", " array([0.25299944]),\n", " array([0.15493046, 0.15993618, 0.1866245 , 0.19221128, 0.05329814,\n", " 0.25299944]),\n", " 'true')]\n" ] } ], "source": [ "# do the same for correct predictions\n", "for cls in lr_bpemb.classes_:\n", " print(cls)\n", " print('High probability for correct class')\n", " pprint.pprint(sorted(correct_preds[cls], key=lambda x: x[1])[-10:])\n", " print('Low probability for correct class')\n", " pprint.pprint(sorted(correct_preds[cls], key=lambda x: x[1])[:10])" ] }, { "cell_type": "markdown", "metadata": { "id": "eWxLaWJprp7y" }, "source": [ "# Error Analysis with a Transformer Model\n", "\n", "## Learning Curves\n", "Error analysis can start as early as fine-tuning the model. Observing different **learning curves** of the loss function of both the training and the development set can tell whether we need more data; we need a bigged dev set; we need a more complex model; whether the model is learning anything/overfitting, etc. \n", "\n", "http://mlwiki.org/index.php/Learning_Curves\n", "\n", "https://medium.com/uwaterloo-voice/error-analysis-in-deep-learning-6df3b3d335af\n", "\n", "\n", "Model Debugging can be made easy with external tools, too:\n", "\n", "https://wandb.ai/latentspace/published-work/The-Science-of-Debugging-with-W&B-Reports--Vmlldzo4OTI3Ng\n", "\n", "\"Those who don't track training are doomed to repeat it.\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Q0uLrNaJvP8S", "outputId": "ea564c74-8e58-4b05-be3f-4882315e6490" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: transformers in /usr/local/lib/python3.7/dist-packages (4.11.2)\n", "Requirement already satisfied: sacremoses in /usr/local/lib/python3.7/dist-packages (from transformers) (0.0.46)\n", "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.7/dist-packages (from transformers) (5.4.1)\n", "Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from transformers) (4.8.1)\n", "Requirement already satisfied: tokenizers<0.11,>=0.10.1 in /usr/local/lib/python3.7/dist-packages (from transformers) (0.10.3)\n", "Requirement already satisfied: huggingface-hub>=0.0.17 in /usr/local/lib/python3.7/dist-packages (from transformers) (0.0.17)\n", "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.7/dist-packages (from transformers) (2019.12.20)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from transformers) (2.23.0)\n", "Requirement already satisfied: filelock in /usr/local/lib/python3.7/dist-packages (from transformers) (3.0.12)\n", "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.7/dist-packages (from transformers) (21.0)\n", "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.7/dist-packages (from transformers) (4.62.3)\n", "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.7/dist-packages (from transformers) (1.19.5)\n", "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from huggingface-hub>=0.0.17->transformers) (3.7.4.3)\n", "Requirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging>=20.0->transformers) (2.4.7)\n", "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata->transformers) (3.5.0)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (2021.5.30)\n", "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (3.0.4)\n", "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (1.24.3)\n", "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (2.10)\n", "Requirement already satisfied: click in /usr/local/lib/python3.7/dist-packages (from sacremoses->transformers) (7.1.2)\n", "Requirement already satisfied: joblib in /usr/local/lib/python3.7/dist-packages (from sacremoses->transformers) (1.0.1)\n", "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from sacremoses->transformers) (1.15.0)\n" ] } ], "source": [ "!pip3 install transformers" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "svB69-y6vjoI" }, "outputs": [], "source": [ "import torch\n", "import random\n", "import numpy as np\n", "import pandas as pd\n", "\n", "from functools import partial\n", "from torch import nn\n", "from torch.utils.data import Dataset, DataLoader\n", "from torch.optim import Adam\n", "from typing import List, Tuple\n", "from tqdm import tqdm_notebook as tqdm" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "PeULFCpqkKsb" }, "outputs": [], "source": [ "from transformers import PreTrainedTokenizer\n", "from transformers import RobertaTokenizer\n", "from transformers import RobertaConfig\n", "from transformers import RobertaForSequenceClassification\n", "from transformers import AdamW\n", "from transformers import get_linear_schedule_with_warmup\n", "from typing import List, Tuple" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "GT36DVo260Hg" }, "outputs": [], "source": [ "def accuracy(logits, labels):\n", " logits = np.asarray(logits).reshape(-1, len(logits[0]))\n", " labels = np.asarray(labels).reshape(-1)\n", " return np.sum(np.argmax(logits, axis=-1) == labels).astype(np.float32) / float(labels.shape[0])\n", "\n", "def evaluate(model: nn.Module, valid_dl: DataLoader):\n", " \"\"\"\n", " Evaluates the model on the given dataset\n", " :param model: The model under evaluation\n", " :param valid_dl: A `DataLoader` reading validation data\n", " :return: The accuracy of the model on the dataset\n", " \"\"\"\n", " # VERY IMPORTANT: Put your model in \"eval\" mode -- this disables things like \n", " # layer normalization and dropout\n", " model.eval()\n", " labels_all = []\n", " logits_all = []\n", " losses_all = []\n", " # ALSO IMPORTANT: Don't accumulate gradients during this process\n", " with torch.no_grad():\n", " for batch in tqdm(valid_dl, desc='Evaluation'):\n", " batch = tuple(t.to(device) for t in batch)\n", " input_ids = batch[0]\n", " attention_mask = batch[1]\n", " labels = batch[2]\n", "\n", " loss, logits = model(input_ids, attention_mask, labels=labels, return_dict=False)\n", " labels_all.extend(list(labels.detach().cpu().numpy()))\n", " logits_all.extend(list(logits.detach().cpu().numpy()))\n", " losses_all.append(loss.detach().cpu().numpy())\n", " acc = accuracy(logits_all, labels_all)\n", "\n", " return acc, np.mean(losses_all)\n", "\n", "def train(\n", " model: nn.Module, \n", " train_dl: DataLoader, \n", " valid_dl: DataLoader, \n", " optimizer: torch.optim.Optimizer, \n", " n_epochs: int, \n", " device: torch.device,\n", " scheduler = None\n", "):\n", " \"\"\"\n", " The main training loop which will optimize a given model on a given dataset\n", " :param model: The model being optimized\n", " :param train_dl: The training dataset\n", " :param valid_dl: A validation dataset\n", " :param optimizer: The optimizer used to update the model parameters\n", " :param n_epochs: Number of epochs to train for\n", " :param device: The device to train on\n", " :return: (model, losses) The best model and the losses per iteration\n", " \"\"\"\n", "\n", " # Keep track of the loss and best accuracy\n", " losses = []\n", " best_acc = 0.0\n", "\n", " # Iterate through epochs\n", " for ep in range(n_epochs):\n", "\n", " loss_epoch = []\n", "\n", " #Iterate through each batch in the dataloader\n", " for i, batch in tqdm(enumerate(train_dl)):\n", " # VERY IMPORTANT: Make sure the model is in training mode, which turns on \n", " # things like dropout and layer normalization\n", " model.train()\n", "\n", " # VERY IMPORTANT: zero out all of the gradients on each iteration -- PyTorch\n", " # keeps track of these dynamically in its computation graph so you need to explicitly\n", " # zero them out\n", " optimizer.zero_grad()\n", "\n", " # Place each tensor on the GPU\n", " batch = tuple(t.to(device) for t in batch)\n", " input_ids = batch[0]\n", " attention_mask = batch[1]\n", " labels = batch[2]\n", "\n", " # Pass the inputs through the model, get the current loss and logits\n", " loss, logits = model(input_ids, attention_mask, labels=labels, return_dict=False)\n", " wandb.log({'loss': loss.item()})\n", " losses.append(loss.item())\n", " loss_epoch.append(loss.item())\n", " \n", " # Calculate all of the gradients and weight updates for the model\n", " loss.backward()\n", "\n", " # Optional: clip gradients\n", " #torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)\n", "\n", " # Finally, update the weights of the model\n", " optimizer.step()\n", " if scheduler is not None:\n", " scheduler.step()\n", " # CHANGED CODE -- as the Transformer model trains for a few epoch, \n", " # we might want to look at the learning curves each other step\n", " if i % 100 == 0:\n", " acc, val_loss = evaluate(model, valid_dl)\n", " wandb.log({'acc': acc, 'train_loss': np.mean(loss_epoch), 'val_loss': val_loss})\n", "\n", " # Perform inline evaluation at the end of the epoch\n", " acc, val_loss = evaluate(model, valid_dl)\n", " wandb.log({'acc': acc, 'train_loss': np.mean(loss_epoch), 'val_loss': val_loss})\n", " print(f'Validation accuracy: {acc}, train loss: {np.mean(loss_epoch)}')\n", "\n", " # Keep track of the best model based on the accuracy\n", " best_model = model.state_dict()\n", " if acc > best_acc:\n", " torch.save(model.state_dict(), 'best_model')\n", " best_acc = acc\n", " #gc.collect()\n", "\n", " model.load_state_dict(best_model)\n", " return model, losses" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "70AZ1M12uoXM" }, "outputs": [], "source": [ "def text_to_batch_transformer(text: List, tokenizer: PreTrainedTokenizer) -> Tuple[List, List]:\n", " \"\"\"Turn a piece of text into a batch for transformer model\n", "\n", " :param text: The text to tokenize and encode\n", " :param tokenizer: The tokenizer to use\n", " :return: A list of IDs and a mask\n", " \"\"\"\n", " input_ids = [tokenizer.encode(t, add_special_tokens=True, truncation=True) for t in text]\n", "\n", " masks = [[1] * len(i) for i in input_ids]\n", "\n", " return input_ids, masks\n", "\n", "class ClassificationDatasetReader(Dataset):\n", " def __init__(self, df, tokenizer):\n", " self.df = df\n", " self.tokenizer = tokenizer\n", "\n", " def __len__(self):\n", " return len(self.df)\n", "\n", " def __getitem__(self, idx):\n", " row = self.df.values[idx]\n", " # Calls the text_to_batch function\n", " input_ids, masks = text_to_batch_transformer([row[2]], self.tokenizer)\n", " label = label_map[row[1]]\n", " return input_ids, masks, label" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "fWmOYrWp7GXP", "outputId": "bf9fbae4-5481-44ae-eaf8-220fae2943ca" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'true': 0, 'barely-true': 1, 'false': 2, 'mostly-true': 3, 'pants-fire': 4, 'half-true': 5}\n" ] } ], "source": [ "label_map = {l:i for i,l in enumerate((set(train_data.values[:,1]) | set(valid_data.values[:,1]) | set(test_data.values[:,1])))}\n", "num_labels = len(label_map)\n", "\n", "print(label_map)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "-B-lCTIe6rgU" }, "outputs": [], "source": [ "def collate_batch_transformer(pad_id, input_data: Tuple) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:\n", " input_ids = [i[0][0] for i in input_data]\n", " masks = [i[1][0] for i in input_data]\n", " labels = [i[2] for i in input_data]\n", "\n", " max_length = max([len(i) for i in input_ids])\n", "\n", " input_ids = [(i + [pad_id] * (max_length - len(i))) for i in input_ids]\n", " masks = [(m + [pad_id] * (max_length - len(m))) for m in masks]\n", "\n", " assert (all(len(i) == max_length for i in input_ids))\n", " assert (all(len(m) == max_length for m in masks))\n", " return torch.tensor(input_ids), torch.tensor(masks), torch.tensor(labels)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hGL0COfOuZ-o", "outputId": "aaa5fd01-d5c3-4583-f0f6-38fa086513ca" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mkstanczak\u001b[0m (use `wandb login --relogin` to force relogin)\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# a few steps needed to initialize the project in WANDB\n", "!pip install wandb -qqq\n", "import wandb\n", "wandb.login()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 454 }, "id": "H6Y8YWnbueUM", "outputId": "749f4646-ee33-45e2-d4ba-20c5f90b05e3" }, "outputs": [ { "data": { "text/html": [ "\n", " Syncing run lunar-morning-5 to Weights & Biases (docs).
\n", "\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wandb.init(project=\"lab-5-roberta\",\n", " config={\n", " \"batch_size\": 8,\n", " \"learning_rate\": 5e-5,\n", " \"dataset\": \"LIAR\",\n", " })" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kAIJK5vtuqsw", "outputId": "2e9bdc93-a354-4b1f-f222-3a3c96be5ed3" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py:481: UserWarning: This DataLoader will create 8 worker processes in total. Our suggested max number of worker in current system is 2, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n", " cpuset_checked))\n", "Some weights of the model checkpoint at roberta-base were not used when initializing RobertaForSequenceClassification: ['lm_head.bias', 'roberta.pooler.dense.weight', 'lm_head.dense.weight', 'lm_head.layer_norm.bias', 'roberta.pooler.dense.bias', 'lm_head.decoder.weight', 'lm_head.layer_norm.weight', 'lm_head.dense.bias']\n", "- This IS expected if you are initializing RobertaForSequenceClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n", "- This IS NOT expected if you are initializing RobertaForSequenceClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n", "Some weights of RobertaForSequenceClassification were not initialized from the model checkpoint at roberta-base and are newly initialized: ['classifier.dense.bias', 'classifier.dense.weight', 'classifier.out_proj.weight', 'classifier.out_proj.bias']\n", "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n" ] } ], "source": [ "weight_decay = 0.01\n", "n_epochs = 2\n", "lr = 3e-5\n", "\n", "# Get the device\n", "device = torch.device(\"cpu\")\n", "if torch.cuda.is_available():\n", " device = torch.device(\"cuda\")\n", "\n", "# Create the tokenizer\n", "tokenizer = RobertaTokenizer.from_pretrained('roberta-base')\n", "vocabulary = tokenizer.get_vocab()\n", "\n", "# Create the dataset readers\n", "train_dataset = ClassificationDatasetReader(train_data, tokenizer)\n", "# dataset loaded lazily with N workers in parallel\n", "collate_fn = partial(collate_batch_transformer, 0)\n", "train_dl = DataLoader(train_dataset, batch_size=6, shuffle=True, collate_fn=collate_fn, num_workers=8)\n", "\n", "valid_dataset = ClassificationDatasetReader(valid_data, tokenizer)\n", "valid_dl = DataLoader(valid_dataset, batch_size=6, collate_fn=collate_fn, num_workers=8)\n", "\n", "config = RobertaConfig.from_pretrained('roberta-base', num_labels=6)\n", "model = RobertaForSequenceClassification.from_pretrained('roberta-base', config=config).to(device)\n", "\n", "# Create the optimizer\n", "no_decay = ['bias', 'LayerNorm.bias', 'LayerNorm.weight']\n", "optimizer_grouped_parameters = [\n", " {'params': [p for n, p in model.named_parameters() if not any(nd in n for nd in no_decay)],\n", " 'weight_decay': weight_decay},\n", " {'params': [p for n, p in model.named_parameters() if any(nd in n for nd in no_decay)], 'weight_decay': 0.0}\n", "]\n", "\n", "optimizer = AdamW(optimizer_grouped_parameters, lr=lr)\n", "scheduler = get_linear_schedule_with_warmup(\n", " optimizer,\n", " 200,\n", " n_epochs * len(train_dl)\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "background_save": true, "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "7d7d0e64f1554d68850a387ec1cb624a", "11adf0ea14524ff5abe02a88ffc62f24", "0d3e70aa972248ed8a0736cf60c6062e", "fe7d47a8a47b496b8dea2cf852f7d0de", "f1ff4d10826d46788cadcca23df364d9", "e94801f4b1854f8caf2d650ffb5df686", "7c252c82a4504fefab7472f963866b64", "738f501a988543a9bf8961c1fc18707e", "e462d1b404f542d3abf9fd78fae7744e", "619fbec59bba4030943dbabf5573ca4a", "0a20193b27c640b78bf57360619f3dbb", "c6cbbe78d229460eb77207cdea8565d5", "766213a349694ab38d837333a0cace82", "46e6c2c90a784652a633322217658d6d", "e877215b16f8495783d3c1f3148f1557", "497eec4c788a4e869740978da4c5b6cc", "49ca974c86ce4662b2c4642858295803", "184efad287f243e697355a3c340c0c08", "2219ad5b85254bb28caa0703f8d95a23", "6c72296047d84fd79b6588e9e26b8f28", "3388a7c01d614f90bb188b5e045dfdf2", "cf379cb8e2174abc8879ef7dd46f89d7", "067b808d586c42d5850d9e4d56539505", "32edfd9f480844609aafba1e32e0f64d", "c6f46c4fd6a64d52b43821cadef62509", "a3eb89ec897947cf864870316f5bae3c", "e046d23afdb3413f892a59a0b9191185", "d6ce7c3fec624ebcbde0aad9a7fe5fa6", "54aaea9a28b04836ae9593ee421be3b9", "7a2ad6f02493457fb81e0ecf8cd738c1", "120fce443bd34022892fb924ac9d08e5", "73b18df6f3ba444f9a596bea71084107", "7446ad1fce2544289a3e3eb0e2961b5b", "230f231ca5a9458dbcdd29e0ec471f0e", "1b1c2b6a04aa4525bbcd7ac8920e0851", "92a604fa7de640a6a73088e582ef0220", "ccd16cba443942918c673911284da6c2", "f58c3576a3b64cdcbbe0fdaba75b7d1e", "64eca4d10976471c8d51c035a368b39c", "61cf9d1ba1c54a089dd440e2c0979718", "0c39b8a1440f46aaa05027f49eb9f057", "e76a5b6db3b34c0aa180f7e0574635d6", "226e0d8373f440dbb02af6f496cd89e3", "6f39559549234ff3a83507171a183894", "80382c567bde43b29e0c8192b415f63f", "f19ffed748d54ac7b7682cdaaf7b1185", "a33cfad5bd6445c6968ef6635bf3b24f", "dcd0486bb9a44965a11619502d3a491d", "56a253e96cca4c77b30a1ac48bb9bdb8", "5b256a67c87f4e0e994618f4e27fe964", "a2739970be25437dbd8be91b808cddf5", "c60cfb3adff346558d05549920a66f5c", "2349e027d57e4b569647e9f879c8ce32", "dfb46cf3181242ce8b755333400d4e8b", "3a5f5fbfb96246b1a7e2445610394d9c", "fa01ca16563c421ba35b4cd41114713e", "085d385573a44344b1c4756bfad7b5d8", "a3f8944c51f649969fdfcdc007760d13", "449fa5887e604684a7cb16b0ee24de79", "82915dc9494a42c6b14fb52367e2be3a", "8426ff9eb63b4001969c5bc23f345010", "e46512aece804d288aaeae1813d46d2c", "9bf82b9918cc4df0b4711ddaa8e2bafc", "89a2c2c77b0b40b9b14d4f67ed14f6e2", "b04b836ac69a421e900dc2c86133dbed", "b17cb8a6e7054d6fb59fc37f6206b2b0", "7d1acddd7e8f4d0598ac252bf256fb6b", "f143402254fb4568b1808670dd08592c", "b9409173037d4976968631561f874d03", "e22a59edf51342c588eec89653bee766", "c98775d418c24819b659714e8cdbcfca", "5adb50a0c391485385aeefc724f7fb9e", "ef5554c66f8e4386bc3e1f363df2600f", "13b6e94eb3aa4c90a97417af9795e6ae", "36c800274dfe46b598d4988f2ec0853e", "d2ce6e30c3304c4d91310b1fcbfcd37e", "7288c7265c5b41ed904b8355c6be33c7", "f191d735ac954248ac58b551306b2562", "ef6d006a68e74f438a4f288489ded935", "e50bbc8cc513483d80d1b8c497592882", "5c10e692129f454a8e550aba5189f235", "7d137aa8c2604d6497e276cbc452ba30", "c8d1033f9a224d1eb1fb37332c362c37", "a0c4085e8ac0415b809a215fd3c05eb8", "30cf49ca0dcf4328a159f5859703d463", "865526b8a69b42a2800da8aa62a27550", "33785f595ddc4f039edb88d2393ee4b0", "53b8ba05c95944d78d9fc3c2999f7245", "5b56b3bd07854e16ab18e5c4438514bb", "5e9f13922210477ca4f0145212a2358f", "86eec121ad714ba5b146d3a86be0ae4d", "01ba2e57677d460e93a61c9b99680a07", "427f8e6bc5e54030b842f1e32be6b932", "754b1968e54e464bac6d1d86bdfec3f6", "8893f039329b420ca28f37dd19f1c555", "08afac440ab24f459dd33eb2bd5ff42f", "160b96288ccc42b09bc301eca6707b20", "9c7c2ec6b42141caad45b1079dc91cca", "8dad3152ed594aea93239395f638b5b3", "f6a848e9d31f4b608b592dd5103276b9", "0ec37e5625334b50b09d345af9174801", "6085582e3d064ea5bebdbee92bb3e009", "9bf7fd1a51c749cc83fa3098326709cf", "37d296e0f5454fdb80ca7c5f8fea254c", "5ce95f90a74f4e149a526c9217f8dea0", "dd5a175c28f84304ab732eaff2c2f093", "8722965813f248f6b8150984e23d15a7", "c959d32790614ba789a18c6608294389", "0a3461c5ec394a2d99f14a5fe2c91abe", "80c060b811f442c79fa8cf2a7114e97f", "4f1981665d00475cadd03084945a468f", "d0f1389dcd084d20b7e5baeb283a0cb7", "ee6b8e48e8f044f197a1f3d3d97293bd", "c7765b51f2774e15b85c5beeab4f5b9e", "acadb6527eb7404598ac5c73b9f8acd0", "194eddcb9832499d97f37a8c4445d610", "bedc8ae4807a4cec8e22780e02334598", "779f505225d241bdb588ecb0df87a612", "6fd38a827e1045a2b69ec4eaa5f47848", "a5060db99d7b46e8bcf295de1f0ef60e", "204985c3bbbe4fd7818b4a6364db86b0", "542ad20427ac42b5b49ef882fe8fde94", "e7d5d1159e9f462c9ba325b6fb280df2", "7c3b59a707a941919d10d40b31fb575c", "11699a1abfa34991ab9360e831314dac", "aa02844919844e3c95ac5669e3d60389", "ca5c10ab9b604670ad6658d701d600e5", "0c06a7e95689413f9f9f3dffb1128910", "138e08195b1d4b3798e53fed1b5412cb", "d779ea6464b648c3938622b4232782a0", "e37af51bab5e45859f4f0999d53dd1fb", "20f7c1e8f3bd411d8105965737a47e50", "7bc574db3e2140f2965136996ad5b46d", "0386671babb14f4184110b2de8a13dfc", "dca522d5351646dca284815c93798b87", "f6cfbf1a84344db399ffe3da941f2077", "0eaf4e1ed1354cd6b96eab6f58a2a902", "25bda73aa2164e15ac3cd3890dc64d2d", "112547fdd56d44fda9e73a641790fdff", "b9ecf97f76f34dd8bc05688cd029731c", "3bf2d3f95b884c9ebb302a06fc4c7a9f", "5236136758104f7c859180abe5014293", "5c07279eb1124bd183b21f63ad387a11", "72355fa090e54957bba4b376beca3d8d", "968346eff75c4a2c9dd2a04380157a1f", "418bc3db242843d89117c79a79345cb7", "e6516a9280ef4f2db7c373d257efe2c7", "51b3f97b751748c3ac545d6920e63224", "44492dac9b83417fbe3ce32acc1c2454", "e0ae31c6528d41ec897a56e7f75d8bbe", "099e58417aae430ab6b8e68a6dcbb297", "c5b632a7f6ff470290a1ac4a70f1aebe", "29481ed128e04350a85be14fe015a392", "1dfd69042b034e319149ca6a1ea3236a", "43c4ecfe3c50421e85876b4f46995b4f", "140c8a2262a14cba85781522dcc8b0a5", "88cd21cb03364d75aa598c8345969764", "1759ca8997a04415b1f567b7c79e46d2", "f1140e5962b448288a43c203cc24df6a", "6bcbc6d05d0e4468b820e644467a49e3", "fa3561b711b24c0ab0c377ed7eb81f9b", "b6fc9fc8bb384576bba189f70d615003", "2dc39140ca174668b9c45262ed2e675d", "340764f8a4194a568bde044871be1106", "29ae25891fdb4fe8880dedf336cdef08", "82487f2237da4bfe893e005ed6f14997", "c9e76618290d4cf194ecef86eee6d535", "6da33d2f9121427dbe5faaa5057acf28", "2a2dbf2a3d3444e7a7e9f95cc8732f34", "3575e8b8c0fe4e1281ce2db889a165b5", "1ca2b5f1e6444defa696b0d043cc96ab", "614152dc81854be6b49c7acc53ad3b85", "22f42447e5e643018a1281955cdac685", "d34931f534424226afc0fd7d0b780000", "81730d57bac74100bcc6b7d23d806d60", "8c2b711b3681497eaa7a9e78ee03a02b", "72051f141da749f4ada927fcbe2813c8", "a530936ceeba4210ae8a403e84557c9b", "85815b3cb6f3448388e606f038593fcc", "f2e2464104fe47c9996d58d9c514fb7f", "2f9f51a91f0b4b9facaad8b428fe5e97", "1877d874e5f648f3a377d77848e41d63", "3d339201143e426e97fae4340255909a", "36d118f9d8374d14b99d3f6de6d05183", "77de83a77dd643208b794a0f86b358a6", "31e46b5867f2431dae4bdb89807108b8", "05accba5966941af85ecaa0c141cc806", "a722993df3c54835973dae339ac25172", "2f27a1ab4778458893352d42892f69e9", "aca888a5c7a6489eb8239093e4ba10e9", "1667664ce898421aa47890a46ea02fa2", "757916b6a3044fcc9e6cc5692a479f2b", "f55e1cb95bf74867aa6739a3f8f78d6a", "c6f5d12e8f0d4a52a89c04bb18b55336", "0c2ee084a253474399e335efabac0a9d", "b781fa0b48a14295a9a60a09763c1e43", "fe34c090e4d64d2c801ff20a3ce7c621", "a50b899e305a4f08bbb94a7d8dbc2851", "78abb0de57844175a3b0faa81fbce8bd", "7ee24fa955e24dc9b2c100ee388a4589", "1014db9090aa4b94aa151dc00c490e52", "79ac414db93546599596a716aa981131", "7c928640c28f4b1ab6bc823cf1ca7b7e", "7ae9b846443741b2881ec85de21117c5", "3152367cc5f543ccbaf4f73105daf60c", "0d6d49c91cb14fd49e98a1dc5aa78dfc", "735d1b44189f467990a3bb8a211280bd", "b6a29191f57a4a5c9fac7b5463ac8a23", "2a2cac7de07e4de491124c0bbc507604", "6a1144517d35431183b2772db509dace", "0e68ce0bb9804d66ad8bec6e54ec21fa", "452b9c34a61a468f887cff6a0b77f3c9", "0278e6642eef494c9d5736011794a286", "cbde109266cb4d7ebc6bc0343ea4b366", "0aac2780f62c4fce8c2d144ea8993f49", "4e91936684504957948109d2fef721a5", "979c07ee51cd47369307bf4d1844cfce", "7288446713954fea8fab74e3f6cf6fe1", "60efa0e0782f4fe2beedd95bd014a296", "54d09f44108144d483386c5e07c45aa8", "30e2950b713641cdad111b179eec0ef5", "bf3b4f04facf4cd0add2c6548ef79f60", "42ef99145ca941a89effdccba3d6cb2f", "b5e2a6162a1942bc8b3be738d66bb9e7", "9e42ec976d50443b818759e7fa74dfa6", "e5b3afd92c6e486bbbc5ebce8bb18f21", "157ab1ba2eee468c8267e114091f9239", "56d570ecb616470b995cbbe0b2a6fb7c", "ec980b738d6f4696a06b9e985df52c7c", "9eef5a3fa5704ab4a40ebbc8f2d78541", "9d108bee8de342768e0018ab520d80a9", "4e0aa0e82da3430c80d4a5a938037e2e", "7574cbaaba724ba78caf589a50b08196", "6bb1f5546b6e4a1fada969df69850f5b", "012d238858c14f7c82666e45aa003394", "87405f7227fc4ac4b79bca183360c017", "2226933689d24566ad1a65d74a5aed53", "b4260552896d4c3085604b4727356ab6" ] }, "id": "6cbVuR3EvU7P", "outputId": "4d2af936-935e-4edd-8f38-14f427341013" }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py:481: UserWarning: This DataLoader will create 8 worker processes in total. Our suggested max number of worker in current system is 2, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n", " cpuset_checked))\n", "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:65: TqdmDeprecationWarning: This function will be removed in tqdm==5.0.0\n", "Please use `tqdm.notebook.tqdm` instead of `tqdm.tqdm_notebook`\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7d7d0e64f1554d68850a387ec1cb624a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:21: TqdmDeprecationWarning: This function will be removed in tqdm==5.0.0\n", "Please use `tqdm.notebook.tqdm` instead of `tqdm.tqdm_notebook`\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c6cbbe78d229460eb77207cdea8565d5", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Evaluation: 0%| | 0/214 [00:00