{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Counterfactual explanation for text classification" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An example of counterfactual explanation on sentiment analysis. The method implemented in the library is based on the Polyjuice model developed by Wu et al. Please cite the work: https://github.com/tongshuangwu/polyjuice if using this explainer." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# This default renderer is used for sphinx docs only. Please delete this cell in IPython.\n", "import plotly.io as pio\n", "pio.renderers.default = \"png\"" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import transformers\n", "import numpy as np\n", "from omnixai.data.text import Text\n", "from omnixai.explainers.nlp.counterfactual.polyjuice import Polyjuice" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# A transformer model for sentiment analysis\n", "model = transformers.pipeline(\n", " 'sentiment-analysis',\n", " model='distilbert-base-uncased-finetuned-sst-2-english',\n", " return_all_scores=True\n", ")\n", "idx2label = {\"NEGATIVE\": 0, \"POSITIVE\": 1}" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Build the prediction function, e.g., the outputs of the prediction function are the class probabilities.\n", "def _predict(x):\n", " scores = []\n", " predictions = model(x.values)\n", " for pred in predictions:\n", " score = [0.0, 0.0]\n", " for d in pred:\n", " if d['label'] == 'NEGATIVE':\n", " score[0] = d['score']\n", " else:\n", " score[1] = d['score']\n", " scores.append(score)\n", " return np.array(scores)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Initialize the counterfactual explainer based on Polyjuice\n", "explainer = Polyjuice(predict_function=_predict)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:polyjuice.polyjuice_wrapper:Setup Polyjuice.\n", "INFO:polyjuice.polyjuice_wrapper:Setup SpaCy processor.\n", "INFO:polyjuice.polyjuice_wrapper:Setup perplexity scorer.\n", "Asking to truncate to max_length but no maximum length is provided and the model has no predefined maximum length. Default to no truncation.\n" ] }, { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = Text([\n", " \"What a great movie! if you have no taste.\",\n", " \"it was a fantastic performance!\",\n", " \"best film ever\",\n", " \"such a great show!\",\n", " \"it was a horrible movie\",\n", " \"i've never watched something as bad\"\n", "])\n", "explanations = explainer.explain(x)\n", "explanations.ipython_plot()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.5" } }, "nbformat": 4, "nbformat_minor": 2 }