diff --git a/README.md b/README.md index 66a1d6b31..105fb5381 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,16 @@ You can check out the following LangTest articles: | [**Evaluating Large Language Models on Gender-Occupational Stereotypes Using the Wino Bias Test**](https://medium.com/john-snow-labs/evaluating-large-language-models-on-gender-occupational-stereotypes-using-the-wino-bias-test-2a96619b4960) | In this blog post, we dive into testing the WinoBias dataset on LLMs, examining language models’ handling of gender and occupational roles, evaluation metrics, and the wider implications. Let’s explore the evaluation of language models with LangTest on the WinoBias dataset and confront the challenges of addressing bias in AI. | | [**Streamlining ML Workflows: Integrating MLFlow Tracking with LangTest for Enhanced Model Evaluations**](https://medium.com/john-snow-labs/streamlining-ml-workflows-integrating-mlflow-tracking-with-langtest-for-enhanced-model-evaluations-4ce9863a0ff1) | In this blog post, we dive into the growing need for transparent, systematic, and comprehensive tracking of models. Enter MLFlow and LangTest: two tools that, when combined, create a revolutionary approach to ML development. | | [**Testing the Question Answering Capabilities of Large Language Models**](https://medium.com/john-snow-labs/testing-the-question-answering-capabilities-of-large-language-models-1bc424d61740) | In this blog post, we dive into enhancing the QA evaluation capabilities using LangTest library. Explore about different evaluation methods that LangTest offers to address the complexities of evaluating Question Answering (QA) tasks. | -| [**Evaluating Stereotype Bias with LangTest**](To be published soon) | In this blog post, we are focusing on using the StereoSet dataset to assess bias related to gender, profession, and race.| +| [**Evaluating Stereotype Bias with LangTest**](https://medium.com/john-snow-labs/evaluating-stereotype-bias-with-langtest-8286af8f0f22) | In this blog post, we are focusing on using the StereoSet dataset to assess bias related to gender, profession, and race.| +| [**Unveiling Sentiments: Exploring LSTM-based Sentiment Analysis with PyTorch on the IMDB Dataset**](To be Published) | Explore the robustness of custom models with LangTest Insights.| +| [**LangTest Insights: A Deep Dive into LLM Robustness on OpenBookQA**](To be Published) | Explore the robustness of Language Models (LLMs) on the OpenBookQA dataset with LangTest Insights.| +| [**LangTest: A Secret Weapon for Improving the Robustness of Your Transformers Language Models**](To be Published) | Explore the robustness of Transformers Language Models with LangTest Insights.| + + + + + + > **Note** diff --git a/demo/tutorials/benchmarks/OpenbookQA_benchmarks.ipynb b/demo/tutorials/benchmarks/OpenbookQA_benchmarks.ipynb new file mode 100644 index 000000000..932bc2c5d --- /dev/null +++ b/demo/tutorials/benchmarks/OpenbookQA_benchmarks.ipynb @@ -0,0 +1,22506 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![image.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/benchmarks/OpenbookQA_benchmarks.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation and fairness test categories.\n", + "\n", + "Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Getting started with LangTest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:44:12.911787Z", + "iopub.status.busy": "2023-11-28T14:44:12.911409Z", + "iopub.status.idle": "2023-11-28T14:44:15.492907Z", + "shell.execute_reply": "2023-11-28T14:44:15.492344Z", + "shell.execute_reply.started": "2023-11-28T14:44:12.911770Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "!pip install \"langtest[openai,ai21,transformers]\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Harness and Its Parameters\n", + "\n", + "The Harness class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results.Harness can be imported from the LangTest library in the following way." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:44:15.493891Z", + "iopub.status.busy": "2023-11-28T14:44:15.493714Z", + "iopub.status.idle": "2023-11-28T14:44:20.531726Z", + "shell.execute_reply": "2023-11-28T14:44:20.530913Z", + "shell.execute_reply.started": "2023-11-28T14:44:15.493876Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from langtest import Harness" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Initial Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:44:20.533062Z", + "iopub.status.busy": "2023-11-28T14:44:20.532540Z", + "iopub.status.idle": "2023-11-28T14:44:20.536063Z", + "shell.execute_reply": "2023-11-28T14:44:20.535546Z", + "shell.execute_reply.started": "2023-11-28T14:44:20.533043Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import random\n", + "pd.set_option('display.max_colwidth', None)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:44:20.538932Z", + "iopub.status.busy": "2023-11-28T14:44:20.538677Z", + "iopub.status.idle": "2023-11-28T14:44:20.621170Z", + "shell.execute_reply": "2023-11-28T14:44:20.620455Z", + "shell.execute_reply.started": "2023-11-28T14:44:20.538917Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "os.environ[\"AI21_API_KEY\"] = \"\"\n", + "os.environ[\"OPENAI_API_KEY\"] = \"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It imports the Harness class from within the module, that is designed to provide a blueprint or framework for conducting NLP testing, and that instances of the Harness class can be customized or configured for different testing scenarios or environments.\n", + "\n", + "Here is a list of the different parameters that can be passed to the Harness function:\n", + "\n", + "
\n", + "\n", + "\n", + "| Parameter | Description | \n", + "| - | - | \n", + "|**task** |Task for which the model is to be evaluated (question-answering or summarization)|\n", + "| **model** | Specifies the model(s) to be evaluated. This parameter can be provided as either a dictionary or a list of dictionaries. Each dictionary should contain the following keys: |\n", + "| **data** | The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys: |\n", + "| **config** | Configuration for the tests to be performed, specified in the form of a YAML file. |\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model J2-Jumbo-Instruct" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T18:05:09.217288Z", + "iopub.status.busy": "2023-11-18T18:05:09.216994Z", + "iopub.status.idle": "2023-11-18T18:05:09.311278Z", + "shell.execute_reply": "2023-11-18T18:05:09.310829Z", + "shell.execute_reply.started": "2023-11-18T18:05:09.217273Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"model_parameters\": {\n", + " \"temperature\": 0.2,\n", + " \"maxTokens\": 64\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\",\n", + " model={\"model\": \"j2-jumbo-instruct\", \"hub\":\"ai21\"},\n", + " data={\"data_source\" :\"OpenBookQA\",\n", + " \"split\":\"test\"}\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T18:05:10.104756Z", + "iopub.status.busy": "2023-11-18T18:05:10.104323Z", + "iopub.status.idle": "2023-11-18T18:05:10.111581Z", + "shell.execute_reply": "2023-11-18T18:05:10.111049Z", + "shell.execute_reply.started": "2023-11-18T18:05:10.104738Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'evaluation': {'metric': 'QAEvalChain',\n", + " 'model': 'gpt-3.5-turbo-instruct',\n", + " 'hub': 'openai'},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase': {'min_pass_rate': 0.75},\n", + " 'titlecase': {'min_pass_rate': 0.75},\n", + " 'add_typo': {'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap': {'min_pass_rate': 0.75},\n", + " 'add_abbreviation': {'min_pass_rate': 0.75},\n", + " 'add_slangs': {'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo': {'min_pass_rate': 0.75},\n", + " 'add_ocr_typo': {'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap': {'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap': {'min_pass_rate': 0.75}}}}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.configure(\n", + "{\n", + " \"evaluation\": {\"metric\":\"QAEvalChain\",\"model\":\"gpt-3.5-turbo-instruct\",\"hub\":\"openai\"},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase':{'min_pass_rate': 0.75},\n", + " 'titlecase':{'min_pass_rate': 0.75},\n", + " 'add_typo':{'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.75},\n", + " 'add_abbreviation':{'min_pass_rate': 0.75},\n", + " 'add_slangs':{'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo':{'min_pass_rate': 0.75},\n", + " 'add_ocr_typo':{'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap':{'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap':{'min_pass_rate': 0.75}\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generating the test cases" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T18:05:12.821348Z", + "iopub.status.busy": "2023-11-18T18:05:12.820985Z", + "iopub.status.idle": "2023-11-18T18:06:35.920738Z", + "shell.execute_reply": "2023-11-18T18:06:35.920307Z", + "shell.execute_reply.started": "2023-11-18T18:05:12.821331Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 8050.49it/s]\n", + "WARNING:root:[W009] Removing samples where no transformation has been applied:\n", + "[W010] - Test 'add_typo': 21 samples removed out of 500\n", + "[W010] - Test 'dyslexia_word_swap': 85 samples removed out of 500\n", + "[W010] - Test 'add_abbreviation': 60 samples removed out of 500\n", + "[W010] - Test 'add_slangs': 193 samples removed out of 500\n", + "[W010] - Test 'add_ocr_typo': 2 samples removed out of 500\n", + "[W010] - Test 'adjective_synonym_swap': 133 samples removed out of 500\n", + "[W010] - Test 'adjective_antonym_swap': 193 samples removed out of 500\n", + "\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seed_value = 42\n", + "random.seed(seed_value)\n", + "harness.generate()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T18:06:35.921969Z", + "iopub.status.busy": "2023-11-18T18:06:35.921633Z", + "iopub.status.idle": "2023-11-18T18:06:36.567603Z", + "shell.execute_reply": "2023-11-18T18:06:36.567117Z", + "shell.execute_reply.started": "2023-11-18T18:06:35.921953Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-A person wants to start saving money so that t...-A PERSON WANTS TO START SAVING MONEY SO THAT T...
1robustnessuppercase-There is most likely going to be fog around:\\n...-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A...
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni...-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D....
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is p...-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P...
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. ...-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS...
.....................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spen...-A woman, with a pale complexion, wants to spen...
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the wa...-Pasta may be raw in water when\\n\\nA. the water...
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on ...-A decrease in diseases\\n\\nA. has no impact on ...
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what ...-When soil is viewed in a unscientific way, wha...
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their sk...-Some animals use a gaseous coming from their s...
\n", + "

4813 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question perturbed_context \\\n", + "0 A person wants to start saving money so that t... - \n", + "1 There is most likely going to be fog around:\\n... - \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni... - \n", + "3 Oak tree seeds are planted and a sidewalk is p... - \n", + "4 An electric car runs on electricity via\\n\\nA. ... - \n", + "... ... ... \n", + "4808 A woman, with a pale complexion, wants to spen... - \n", + "4809 Pasta may be cooked in water when\\n\\nA. the wa... - \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... - \n", + "4811 When soil is viewed in a scientific way, what ... - \n", + "4812 Some animals use a liquid coming from their sk... - \n", + "\n", + " perturbed_question \n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT T... \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A... \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D.... \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P... \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS... \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spen... \n", + "4809 Pasta may be raw in water when\\n\\nA. the water... \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... \n", + "4811 When soil is viewed in a unscientific way, wha... \n", + "4812 Some animals use a gaseous coming from their s... \n", + "\n", + "[4813 rows x 6 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving testcases" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T18:09:59.273398Z", + "iopub.status.busy": "2023-11-18T18:09:59.272831Z", + "iopub.status.idle": "2023-11-18T18:09:59.416652Z", + "shell.execute_reply": "2023-11-18T18:09:59.416145Z", + "shell.execute_reply.started": "2023-11-18T18:09:59.273379Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "harness.save(\"saved_test_configurations/OpenBookQA\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T18:11:39.944027Z", + "iopub.status.busy": "2023-11-18T18:11:39.943560Z", + "iopub.status.idle": "2023-11-18T20:12:56.106580Z", + "shell.execute_reply": "2023-11-18T20:12:56.106104Z", + "shell.execute_reply.started": "2023-11-18T18:11:39.944009Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 4813/4813 [2:01:16<00:00, 1.51s/it] \n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving model reponse (expected_result and actual_result)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T20:13:14.108026Z", + "iopub.status.busy": "2023-11-18T20:13:14.107604Z", + "iopub.status.idle": "2023-11-18T20:13:14.327386Z", + "shell.execute_reply": "2023-11-18T20:13:14.326836Z", + "shell.execute_reply.started": "2023-11-18T20:13:14.108009Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "harness.save(save_dir=r\"ai21/j2-jumbo-instruct-OpenBookQA\", include_generated_results =True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T20:13:15.830885Z", + "iopub.status.busy": "2023-11-18T20:13:15.830369Z", + "iopub.status.idle": "2023-11-18T20:25:22.764291Z", + "shell.execute_reply": "2023-11-18T20:25:22.763757Z", + "shell.execute_reply.started": "2023-11-18T20:13:15.830868Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T20:25:22.765873Z", + "iopub.status.busy": "2023-11-18T20:25:22.765446Z", + "iopub.status.idle": "2023-11-18T20:25:22.775263Z", + "shell.execute_reply": "2023-11-18T20:25:22.774770Z", + "shell.execute_reply.started": "2023-11-18T20:25:22.765849Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDSB. quit eating lunch outB. QUIT EATING LUNCH OUTTrue
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERTA marshC. THE PLAINS\\n Explanation: PLAINS are flat and open areas, and fog is often formed on flat and open areas.True
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASSB. humansLIONSFalse
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APARTA. roots may be splitA. ROOTS MAY BE SPLITTrue
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUELB. a power stationA POWER STATIONTrue
..............................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in spaceA. UV rays are harmfulD. the sun is in spaceFalse
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very saltyA. the water is warmC. water is bubbling from applied warmthFalse
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visitsC. leads to less sick peopleB. leads to more well peopleFalse
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebblesB. tiny lifeforms in dirtB. tiny lifeforms in dirtTrue
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidityhumidityheat\\nD. humidityFalse
\n", + "

4813 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \\\n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " expected_result \\\n", + "0 B. quit eating lunch out \n", + "1 A marsh \n", + "2 B. humans \n", + "3 A. roots may be split \n", + "4 B. a power station \n", + "... ... \n", + "4808 A. UV rays are harmful \n", + "4809 A. the water is warm \n", + "4810 C. leads to less sick people \n", + "4811 B. tiny lifeforms in dirt \n", + "4812 humidity \n", + "\n", + " actual_result \\\n", + "0 B. QUIT EATING LUNCH OUT \n", + "1 C. THE PLAINS\\n Explanation: PLAINS are flat and open areas, and fog is often formed on flat and open areas. \n", + "2 LIONS \n", + "3 A. ROOTS MAY BE SPLIT \n", + "4 A POWER STATION \n", + "... ... \n", + "4808 D. the sun is in space \n", + "4809 C. water is bubbling from applied warmth \n", + "4810 B. leads to more well people \n", + "4811 B. tiny lifeforms in dirt \n", + "4812 heat\\nD. humidity \n", + "\n", + " pass \n", + "0 True \n", + "1 True \n", + "2 False \n", + "3 True \n", + "4 True \n", + "... ... \n", + "4808 False \n", + "4809 False \n", + "4810 False \n", + "4811 True \n", + "4812 False \n", + "\n", + "[4813 rows x 9 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T20:25:22.776297Z", + "iopub.status.busy": "2023-11-18T20:25:22.775861Z", + "iopub.status.idle": "2023-11-18T20:37:37.798164Z", + "shell.execute_reply": "2023-11-18T20:37:37.797644Z", + "shell.execute_reply.started": "2023-11-18T20:25:22.776275Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T20:37:37.799667Z", + "iopub.status.busy": "2023-11-18T20:37:37.799288Z", + "iopub.status.idle": "2023-11-18T20:37:37.805900Z", + "shell.execute_reply": "2023-11-18T20:37:37.805483Z", + "shell.execute_reply.started": "2023-11-18T20:37:37.799651Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase20829258%75%False
1robustnesslowercase18531563%75%False
2robustnesstitlecase19930160%75%False
3robustnessadd_typo12635374%75%False
4robustnessdyslexia_word_swap14227366%75%False
5robustnessadd_abbreviation18325758%75%False
6robustnessadd_slangs12618159%75%False
7robustnessadd_speech_to_text_typo11039078%75%True
8robustnessadd_ocr_typo24625251%75%False
9robustnessadjective_synonym_swap13922862%75%False
10robustnessadjective_antonym_swap12018761%75%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 208 292 58% \n", + "1 robustness lowercase 185 315 63% \n", + "2 robustness titlecase 199 301 60% \n", + "3 robustness add_typo 126 353 74% \n", + "4 robustness dyslexia_word_swap 142 273 66% \n", + "5 robustness add_abbreviation 183 257 58% \n", + "6 robustness add_slangs 126 181 59% \n", + "7 robustness add_speech_to_text_typo 110 390 78% \n", + "8 robustness add_ocr_typo 246 252 51% \n", + "9 robustness adjective_synonym_swap 139 228 62% \n", + "10 robustness adjective_antonym_swap 120 187 61% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% False \n", + "1 75% False \n", + "2 75% False \n", + "3 75% False \n", + "4 75% False \n", + "5 75% False \n", + "6 75% False \n", + "7 75% True \n", + "8 75% False \n", + "9 75% False \n", + "10 75% False " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "report" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving report and generated_results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T20:37:37.806502Z", + "iopub.status.busy": "2023-11-18T20:37:37.806366Z", + "iopub.status.idle": "2023-11-18T20:37:37.960314Z", + "shell.execute_reply": "2023-11-18T20:37:37.959801Z", + "shell.execute_reply.started": "2023-11-18T20:37:37.806490Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results.to_csv('ai21/j2-jumbo-instruct-OpenBookQA.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-18T20:37:37.961122Z", + "iopub.status.busy": "2023-11-18T20:37:37.960972Z", + "iopub.status.idle": "2023-11-18T20:37:37.973091Z", + "shell.execute_reply": "2023-11-18T20:37:37.972649Z", + "shell.execute_reply.started": "2023-11-18T20:37:37.961107Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report.to_csv('ai21/j2-jumbo-instruct-OpenBookQA-report.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model J2-Grande-Instruct" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T02:52:50.406145Z", + "iopub.status.busy": "2023-11-19T02:52:50.405784Z", + "iopub.status.idle": "2023-11-19T02:52:50.499232Z", + "shell.execute_reply": "2023-11-19T02:52:50.498796Z", + "shell.execute_reply.started": "2023-11-19T02:52:50.406131Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"model_parameters\": {\n", + " \"temperature\": 0.2,\n", + " \"maxTokens\": 64\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\",\n", + " model={\"model\": \"j2-grande-instruct\", \"hub\":\"ai21\"},\n", + " data={\"data_source\" :\"OpenBookQA\",\n", + " \"split\":\"test\"}\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T02:52:50.499994Z", + "iopub.status.busy": "2023-11-19T02:52:50.499751Z", + "iopub.status.idle": "2023-11-19T02:52:50.537221Z", + "shell.execute_reply": "2023-11-19T02:52:50.536795Z", + "shell.execute_reply.started": "2023-11-19T02:52:50.499979Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'evaluation': {'metric': 'QAEvalChain',\n", + " 'model': 'gpt-3.5-turbo-instruct',\n", + " 'hub': 'openai'},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase': {'min_pass_rate': 0.75},\n", + " 'titlecase': {'min_pass_rate': 0.75},\n", + " 'add_typo': {'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap': {'min_pass_rate': 0.75},\n", + " 'add_abbreviation': {'min_pass_rate': 0.75},\n", + " 'add_slangs': {'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo': {'min_pass_rate': 0.75},\n", + " 'add_ocr_typo': {'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap': {'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap': {'min_pass_rate': 0.75}}}}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.configure(\n", + "{\n", + " \"evaluation\": {\"metric\":\"QAEvalChain\",\"model\":\"gpt-3.5-turbo-instruct\",\"hub\":\"openai\"},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase':{'min_pass_rate': 0.75},\n", + " 'titlecase':{'min_pass_rate': 0.75},\n", + " 'add_typo':{'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.75},\n", + " 'add_abbreviation':{'min_pass_rate': 0.75},\n", + " 'add_slangs':{'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo':{'min_pass_rate': 0.75},\n", + " 'add_ocr_typo':{'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap':{'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap':{'min_pass_rate': 0.75}\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generating the test cases." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T02:52:58.776662Z", + "iopub.status.busy": "2023-11-19T02:52:58.776231Z", + "iopub.status.idle": "2023-11-19T02:54:21.640101Z", + "shell.execute_reply": "2023-11-19T02:54:21.639624Z", + "shell.execute_reply.started": "2023-11-19T02:52:58.776644Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 8867.45it/s]\n", + "WARNING:root:[W009] Removing samples where no transformation has been applied:\n", + "[W010] - Test 'add_typo': 21 samples removed out of 500\n", + "[W010] - Test 'dyslexia_word_swap': 85 samples removed out of 500\n", + "[W010] - Test 'add_abbreviation': 60 samples removed out of 500\n", + "[W010] - Test 'add_slangs': 193 samples removed out of 500\n", + "[W010] - Test 'add_ocr_typo': 2 samples removed out of 500\n", + "[W010] - Test 'adjective_synonym_swap': 133 samples removed out of 500\n", + "[W010] - Test 'adjective_antonym_swap': 193 samples removed out of 500\n", + "\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seed_value = 42\n", + "random.seed(seed_value)\n", + "harness.generate()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T02:54:21.641296Z", + "iopub.status.busy": "2023-11-19T02:54:21.640964Z", + "iopub.status.idle": "2023-11-19T02:54:22.267412Z", + "shell.execute_reply": "2023-11-19T02:54:22.266940Z", + "shell.execute_reply.started": "2023-11-19T02:54:21.641280Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-A person wants to start saving money so that t...-A PERSON WANTS TO START SAVING MONEY SO THAT T...
1robustnessuppercase-There is most likely going to be fog around:\\n...-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A...
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni...-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D....
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is p...-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P...
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. ...-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS...
.....................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spen...-A woman, with a pale complexion, wants to spen...
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the wa...-Pasta may be raw in water when\\n\\nA. the water...
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on ...-A decrease in diseases\\n\\nA. has no impact on ...
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what ...-When soil is viewed in a unscientific way, wha...
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their sk...-Some animals use a gaseous coming from their s...
\n", + "

4813 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question perturbed_context \\\n", + "0 A person wants to start saving money so that t... - \n", + "1 There is most likely going to be fog around:\\n... - \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni... - \n", + "3 Oak tree seeds are planted and a sidewalk is p... - \n", + "4 An electric car runs on electricity via\\n\\nA. ... - \n", + "... ... ... \n", + "4808 A woman, with a pale complexion, wants to spen... - \n", + "4809 Pasta may be cooked in water when\\n\\nA. the wa... - \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... - \n", + "4811 When soil is viewed in a scientific way, what ... - \n", + "4812 Some animals use a liquid coming from their sk... - \n", + "\n", + " perturbed_question \n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT T... \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A... \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D.... \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P... \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS... \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spen... \n", + "4809 Pasta may be raw in water when\\n\\nA. the water... \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... \n", + "4811 When soil is viewed in a unscientific way, wha... \n", + "4812 Some animals use a gaseous coming from their s... \n", + "\n", + "[4813 rows x 6 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T05:16:16.321434Z", + "iopub.status.busy": "2023-11-19T05:16:16.320877Z", + "iopub.status.idle": "2023-11-19T05:17:03.000175Z", + "shell.execute_reply": "2023-11-19T05:17:02.999676Z", + "shell.execute_reply.started": "2023-11-19T05:16:16.321415Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 4813/4813 [00:46<00:00, 103.12it/s] \n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving model reponse (expected_result and actual_result)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T05:18:22.077170Z", + "iopub.status.busy": "2023-11-19T05:18:22.076627Z", + "iopub.status.idle": "2023-11-19T05:18:24.134010Z", + "shell.execute_reply": "2023-11-19T05:18:24.133499Z", + "shell.execute_reply.started": "2023-11-19T05:18:22.077151Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "harness.save(save_dir=r\"ai21/j2-grande-instruct-OpenBookQA\", include_generated_results =True)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T05:18:24.135027Z", + "iopub.status.busy": "2023-11-19T05:18:24.134874Z", + "iopub.status.idle": "2023-11-19T05:28:33.160576Z", + "shell.execute_reply": "2023-11-19T05:28:33.160046Z", + "shell.execute_reply.started": "2023-11-19T05:18:24.135013Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T05:28:33.161660Z", + "iopub.status.busy": "2023-11-19T05:28:33.161231Z", + "iopub.status.idle": "2023-11-19T05:28:33.169835Z", + "shell.execute_reply": "2023-11-19T05:28:33.169426Z", + "shell.execute_reply.started": "2023-11-19T05:28:33.161643Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDSB. quit eating lunch outC. BUY LESS WITH MONOPOLY MONEY\\n\\nThe best way to save money in this situation is to buy less with Monopoly money. Making more phone calls or quitting eating out will not directly result in saving money. Having lunch with friends is not a cost-effective way to save money, as eating out is typically more expensive than preparing meals at home.False
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERTa marshA MARSHTrue
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASSC. bunniesLIONSFalse
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APARTC. parts may break the concrete\\nD. ROOTS MAY FALL APARTFalse
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUELC. electrical conductorsA POWER STATIONFalse
..............................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in spaceA. UV rays are harmfulD. the sun is in spaceFalse
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very saltythe water is on the stoveC. water is bubbling from applied warmthFalse
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visitsC. leads to less sick peopleB. leads to more well peopleFalse
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebblesC. small mammals living thereB. tiny lifeforms in dirtFalse
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidityB. waterheatFalse
\n", + "

4813 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \\\n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " expected_result \\\n", + "0 B. quit eating lunch out \n", + "1 a marsh \n", + "2 C. bunnies \n", + "3 C. parts may break the concrete \n", + "4 C. electrical conductors \n", + "... ... \n", + "4808 A. UV rays are harmful \n", + "4809 the water is on the stove \n", + "4810 C. leads to less sick people \n", + "4811 C. small mammals living there \n", + "4812 B. water \n", + "\n", + " actual_result \\\n", + "0 C. BUY LESS WITH MONOPOLY MONEY\\n\\nThe best way to save money in this situation is to buy less with Monopoly money. Making more phone calls or quitting eating out will not directly result in saving money. Having lunch with friends is not a cost-effective way to save money, as eating out is typically more expensive than preparing meals at home. \n", + "1 A MARSH \n", + "2 LIONS \n", + "3 \\nD. ROOTS MAY FALL APART \n", + "4 A POWER STATION \n", + "... ... \n", + "4808 D. the sun is in space \n", + "4809 C. water is bubbling from applied warmth \n", + "4810 B. leads to more well people \n", + "4811 B. tiny lifeforms in dirt \n", + "4812 heat \n", + "\n", + " pass \n", + "0 False \n", + "1 True \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "4808 False \n", + "4809 False \n", + "4810 False \n", + "4811 False \n", + "4812 False \n", + "\n", + "[4813 rows x 9 columns]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T05:28:33.171106Z", + "iopub.status.busy": "2023-11-19T05:28:33.170828Z", + "iopub.status.idle": "2023-11-19T05:38:33.872288Z", + "shell.execute_reply": "2023-11-19T05:38:33.871755Z", + "shell.execute_reply.started": "2023-11-19T05:28:33.171091Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T05:38:33.873084Z", + "iopub.status.busy": "2023-11-19T05:38:33.872925Z", + "iopub.status.idle": "2023-11-19T05:38:33.879434Z", + "shell.execute_reply": "2023-11-19T05:38:33.879026Z", + "shell.execute_reply.started": "2023-11-19T05:38:33.873069Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase23726353%75%False
1robustnesslowercase22028056%75%False
2robustnesstitlecase20929158%75%False
3robustnessadd_typo10137879%75%True
4robustnessdyslexia_word_swap14227366%75%False
5robustnessadd_abbreviation16227863%75%False
6robustnessadd_slangs11219564%75%False
7robustnessadd_speech_to_text_typo8241884%75%True
8robustnessadd_ocr_typo22827054%75%False
9robustnessadjective_synonym_swap12823965%75%False
10robustnessadjective_antonym_swap13017758%75%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 237 263 53% \n", + "1 robustness lowercase 220 280 56% \n", + "2 robustness titlecase 209 291 58% \n", + "3 robustness add_typo 101 378 79% \n", + "4 robustness dyslexia_word_swap 142 273 66% \n", + "5 robustness add_abbreviation 162 278 63% \n", + "6 robustness add_slangs 112 195 64% \n", + "7 robustness add_speech_to_text_typo 82 418 84% \n", + "8 robustness add_ocr_typo 228 270 54% \n", + "9 robustness adjective_synonym_swap 128 239 65% \n", + "10 robustness adjective_antonym_swap 130 177 58% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% False \n", + "1 75% False \n", + "2 75% False \n", + "3 75% True \n", + "4 75% False \n", + "5 75% False \n", + "6 75% False \n", + "7 75% True \n", + "8 75% False \n", + "9 75% False \n", + "10 75% False " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "report" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving report and generated_results" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T05:38:33.880259Z", + "iopub.status.busy": "2023-11-19T05:38:33.879966Z", + "iopub.status.idle": "2023-11-19T05:38:34.647325Z", + "shell.execute_reply": "2023-11-19T05:38:34.646791Z", + "shell.execute_reply.started": "2023-11-19T05:38:33.880245Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results.to_csv('ai21/j2-grande-instruct-OpenBookQA.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-19T05:38:34.648122Z", + "iopub.status.busy": "2023-11-19T05:38:34.647973Z", + "iopub.status.idle": "2023-11-19T05:38:34.659467Z", + "shell.execute_reply": "2023-11-19T05:38:34.659072Z", + "shell.execute_reply.started": "2023-11-19T05:38:34.648108Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report.to_csv('ai21/j2-grande-instruct-OpenBookQA-report.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model text-davinci-003" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T06:35:15.430303Z", + "iopub.status.busy": "2023-11-20T06:35:15.430073Z", + "iopub.status.idle": "2023-11-20T06:35:15.549985Z", + "shell.execute_reply": "2023-11-20T06:35:15.549533Z", + "shell.execute_reply.started": "2023-11-20T06:35:15.430288Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"model_parameters\": {\n", + " \"temperature\": 0.2,\n", + " \"max_tokens\": 64\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\",\n", + " model={\"model\": \"text-davinci-003\", \"hub\":\"openai\"},\n", + " data={\"data_source\" :\"OpenBookQA\",\n", + " \"split\":\"test\"}\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T06:35:15.550674Z", + "iopub.status.busy": "2023-11-20T06:35:15.550507Z", + "iopub.status.idle": "2023-11-20T06:35:15.585769Z", + "shell.execute_reply": "2023-11-20T06:35:15.585327Z", + "shell.execute_reply.started": "2023-11-20T06:35:15.550659Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'evaluation': {'metric': 'QAEvalChain',\n", + " 'model': 'gpt-3.5-turbo-instruct',\n", + " 'hub': 'openai'},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase': {'min_pass_rate': 0.75},\n", + " 'titlecase': {'min_pass_rate': 0.75},\n", + " 'add_typo': {'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap': {'min_pass_rate': 0.75},\n", + " 'add_abbreviation': {'min_pass_rate': 0.75},\n", + " 'add_slangs': {'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo': {'min_pass_rate': 0.75},\n", + " 'add_ocr_typo': {'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap': {'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap': {'min_pass_rate': 0.75}}}}" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.configure(\n", + "{\n", + " \"evaluation\": {\"metric\":\"QAEvalChain\",\"model\":\"gpt-3.5-turbo-instruct\",\"hub\":\"openai\"},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase':{'min_pass_rate': 0.75},\n", + " 'titlecase':{'min_pass_rate': 0.75},\n", + " 'add_typo':{'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.75},\n", + " 'add_abbreviation':{'min_pass_rate': 0.75},\n", + " 'add_slangs':{'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo':{'min_pass_rate': 0.75},\n", + " 'add_ocr_typo':{'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap':{'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap':{'min_pass_rate': 0.75}\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generating the test cases." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T06:35:15.587087Z", + "iopub.status.busy": "2023-11-20T06:35:15.586781Z", + "iopub.status.idle": "2023-11-20T06:36:39.295026Z", + "shell.execute_reply": "2023-11-20T06:36:39.294579Z", + "shell.execute_reply.started": "2023-11-20T06:35:15.587072Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 9118.05it/s]\n", + "WARNING:root:[W009] Removing samples where no transformation has been applied:\n", + "[W010] - Test 'add_typo': 21 samples removed out of 500\n", + "[W010] - Test 'dyslexia_word_swap': 85 samples removed out of 500\n", + "[W010] - Test 'add_abbreviation': 60 samples removed out of 500\n", + "[W010] - Test 'add_slangs': 193 samples removed out of 500\n", + "[W010] - Test 'add_ocr_typo': 2 samples removed out of 500\n", + "[W010] - Test 'adjective_synonym_swap': 133 samples removed out of 500\n", + "[W010] - Test 'adjective_antonym_swap': 193 samples removed out of 500\n", + "\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seed_value = 42\n", + "random.seed(seed_value)\n", + "harness.generate()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T06:36:39.295770Z", + "iopub.status.busy": "2023-11-20T06:36:39.295598Z", + "iopub.status.idle": "2023-11-20T06:36:39.734507Z", + "shell.execute_reply": "2023-11-20T06:36:39.733968Z", + "shell.execute_reply.started": "2023-11-20T06:36:39.295755Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-A person wants to start saving money so that t...-A PERSON WANTS TO START SAVING MONEY SO THAT T...
1robustnessuppercase-There is most likely going to be fog around:\\n...-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A...
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni...-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D....
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is p...-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P...
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. ...-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS...
.....................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spen...-A woman, with a pale complexion, wants to spen...
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the wa...-Pasta may be raw in water when\\n\\nA. the water...
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on ...-A decrease in diseases\\n\\nA. has no impact on ...
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what ...-When soil is viewed in a unscientific way, wha...
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their sk...-Some animals use a gaseous coming from their s...
\n", + "

4813 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question perturbed_context \\\n", + "0 A person wants to start saving money so that t... - \n", + "1 There is most likely going to be fog around:\\n... - \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni... - \n", + "3 Oak tree seeds are planted and a sidewalk is p... - \n", + "4 An electric car runs on electricity via\\n\\nA. ... - \n", + "... ... ... \n", + "4808 A woman, with a pale complexion, wants to spen... - \n", + "4809 Pasta may be cooked in water when\\n\\nA. the wa... - \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... - \n", + "4811 When soil is viewed in a scientific way, what ... - \n", + "4812 Some animals use a liquid coming from their sk... - \n", + "\n", + " perturbed_question \n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT T... \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A... \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D.... \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P... \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS... \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spen... \n", + "4809 Pasta may be raw in water when\\n\\nA. the water... \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... \n", + "4811 When soil is viewed in a unscientific way, wha... \n", + "4812 Some animals use a gaseous coming from their s... \n", + "\n", + "[4813 rows x 6 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T06:38:30.993535Z", + "iopub.status.busy": "2023-11-20T06:38:30.993027Z", + "iopub.status.idle": "2023-11-20T07:29:52.999095Z", + "shell.execute_reply": "2023-11-20T07:29:52.998603Z", + "shell.execute_reply.started": "2023-11-20T06:38:30.993513Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 88%|████████▊ | 4221/4813 [45:04<06:15, 1.58it/s] WARNING:urllib3.connectionpool:Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2396)'))': /v1/completions\n", + "Running testcases... : 100%|██████████| 4813/4813 [51:21<00:00, 1.56it/s]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving model reponse (expected_result and actual_result)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:29:53.000222Z", + "iopub.status.busy": "2023-11-20T07:29:52.999758Z", + "iopub.status.idle": "2023-11-20T07:29:53.220890Z", + "shell.execute_reply": "2023-11-20T07:29:53.220340Z", + "shell.execute_reply.started": "2023-11-20T07:29:53.000205Z" + } + }, + "outputs": [], + "source": [ + "harness.save(save_dir=\"openai/text-davinci-003-OpenBookQA\", include_generated_results =True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:29:53.222446Z", + "iopub.status.busy": "2023-11-20T07:29:53.222083Z", + "iopub.status.idle": "2023-11-20T07:35:25.379760Z", + "shell.execute_reply": "2023-11-20T07:35:25.379096Z", + "shell.execute_reply.started": "2023-11-20T07:29:53.222429Z" + } + }, + "outputs": [], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:35:25.380605Z", + "iopub.status.busy": "2023-11-20T07:35:25.380427Z", + "iopub.status.idle": "2023-11-20T07:35:25.389696Z", + "shell.execute_reply": "2023-11-20T07:35:25.389263Z", + "shell.execute_reply.started": "2023-11-20T07:35:25.380588Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDSB. quit eating lunch outB. QUIT EATING LUNCH OUTTrue
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERTA. a marshA. A MarshTrue
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASSA. lionsA. LionsTrue
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APARTC. parts may break the concreteC. PARTS MAY BREAK THE CONCRETETrue
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUELC. electrical conductorsC. ELECTRICAL CONDUCTORSTrue
..............................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in spaceA. UV rays are harmfulB. sunlight will be funFalse
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very saltyC. water is bubbling from applied warmthC. Water is bubbling from applied warmthTrue
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visitsC. leads to less sick peopleB. leads to more well peopleFalse
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebblesB. tiny lifeforms in dirtD. a lot of tiny pebblesFalse
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidityC. HeatD. humidityFalse
\n", + "

4813 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \\\n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " expected_result \\\n", + "0 B. quit eating lunch out \n", + "1 A. a marsh \n", + "2 A. lions \n", + "3 C. parts may break the concrete \n", + "4 C. electrical conductors \n", + "... ... \n", + "4808 A. UV rays are harmful \n", + "4809 C. water is bubbling from applied warmth \n", + "4810 C. leads to less sick people \n", + "4811 B. tiny lifeforms in dirt \n", + "4812 C. Heat \n", + "\n", + " actual_result pass \n", + "0 B. QUIT EATING LUNCH OUT True \n", + "1 A. A Marsh True \n", + "2 A. Lions True \n", + "3 C. PARTS MAY BREAK THE CONCRETE True \n", + "4 C. ELECTRICAL CONDUCTORS True \n", + "... ... ... \n", + "4808 B. sunlight will be fun False \n", + "4809 C. Water is bubbling from applied warmth True \n", + "4810 B. leads to more well people False \n", + "4811 D. a lot of tiny pebbles False \n", + "4812 D. humidity False \n", + "\n", + "[4813 rows x 9 columns]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:35:25.390571Z", + "iopub.status.busy": "2023-11-20T07:35:25.390288Z", + "iopub.status.idle": "2023-11-20T07:40:50.893022Z", + "shell.execute_reply": "2023-11-20T07:40:50.892439Z", + "shell.execute_reply.started": "2023-11-20T07:35:25.390555Z" + } + }, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:40:50.893982Z", + "iopub.status.busy": "2023-11-20T07:40:50.893827Z", + "iopub.status.idle": "2023-11-20T07:40:50.900246Z", + "shell.execute_reply": "2023-11-20T07:40:50.899834Z", + "shell.execute_reply.started": "2023-11-20T07:40:50.893967Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase8341783%75%True
1robustnesslowercase7742385%75%True
2robustnesstitlecase7742385%75%True
3robustnessadd_typo4743290%75%True
4robustnessdyslexia_word_swap8133480%75%True
5robustnessadd_abbreviation8435681%75%True
6robustnessadd_slangs10020767%75%False
7robustnessadd_speech_to_text_typo6143988%75%True
8robustnessadd_ocr_typo7342585%75%True
9robustnessadjective_synonym_swap10526271%75%False
10robustnessadjective_antonym_swap10320466%75%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 83 417 83% \n", + "1 robustness lowercase 77 423 85% \n", + "2 robustness titlecase 77 423 85% \n", + "3 robustness add_typo 47 432 90% \n", + "4 robustness dyslexia_word_swap 81 334 80% \n", + "5 robustness add_abbreviation 84 356 81% \n", + "6 robustness add_slangs 100 207 67% \n", + "7 robustness add_speech_to_text_typo 61 439 88% \n", + "8 robustness add_ocr_typo 73 425 85% \n", + "9 robustness adjective_synonym_swap 105 262 71% \n", + "10 robustness adjective_antonym_swap 103 204 66% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% True \n", + "1 75% True \n", + "2 75% True \n", + "3 75% True \n", + "4 75% True \n", + "5 75% True \n", + "6 75% False \n", + "7 75% True \n", + "8 75% True \n", + "9 75% False \n", + "10 75% False " + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "report" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving report and generated_results" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:40:50.900875Z", + "iopub.status.busy": "2023-11-20T07:40:50.900734Z", + "iopub.status.idle": "2023-11-20T07:40:51.086946Z", + "shell.execute_reply": "2023-11-20T07:40:51.086532Z", + "shell.execute_reply.started": "2023-11-20T07:40:50.900862Z" + } + }, + "outputs": [], + "source": [ + "generated_results.to_csv('openai/text-davinci-003-OpenBookQA.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:40:51.093515Z", + "iopub.status.busy": "2023-11-20T07:40:51.093240Z", + "iopub.status.idle": "2023-11-20T07:40:51.105301Z", + "shell.execute_reply": "2023-11-20T07:40:51.104858Z", + "shell.execute_reply.started": "2023-11-20T07:40:51.093499Z" + } + }, + "outputs": [], + "source": [ + "report.to_csv('openai/text-davinci-003-OpenBookQA-report.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model gpt-3.5-turbo-instruct" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:44:19.774099Z", + "iopub.status.busy": "2023-11-20T07:44:19.773588Z", + "iopub.status.idle": "2023-11-20T07:44:19.803565Z", + "shell.execute_reply": "2023-11-20T07:44:19.803075Z", + "shell.execute_reply.started": "2023-11-20T07:44:19.774075Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"model_parameters\": {\n", + " \"temperature\": 0.2,\n", + " \"max_tokens\": 64\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\",\n", + " model={\"model\": \"gpt-3.5-turbo-instruct\", \"hub\":\"openai\"},\n", + " data={\"data_source\" :\"OpenBookQA\",\n", + " \"split\":\"test\"}\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:44:19.804859Z", + "iopub.status.busy": "2023-11-20T07:44:19.804540Z", + "iopub.status.idle": "2023-11-20T07:44:19.852053Z", + "shell.execute_reply": "2023-11-20T07:44:19.851628Z", + "shell.execute_reply.started": "2023-11-20T07:44:19.804843Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'evaluation': {'metric': 'QAEvalChain',\n", + " 'model': 'text-davinci-003',\n", + " 'hub': 'openai'},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase': {'min_pass_rate': 0.75},\n", + " 'titlecase': {'min_pass_rate': 0.75},\n", + " 'add_typo': {'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap': {'min_pass_rate': 0.75},\n", + " 'add_abbreviation': {'min_pass_rate': 0.75},\n", + " 'add_slangs': {'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo': {'min_pass_rate': 0.75},\n", + " 'add_ocr_typo': {'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap': {'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap': {'min_pass_rate': 0.75}}}}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.configure(\n", + "{\n", + " \"evaluation\": {\"metric\":\"QAEvalChain\",\"model\":\"gpt-3.5-turbo-instruct\",\"hub\":\"openai\"},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase':{'min_pass_rate': 0.75},\n", + " 'titlecase':{'min_pass_rate': 0.75},\n", + " 'add_typo':{'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.75},\n", + " 'add_abbreviation':{'min_pass_rate': 0.75},\n", + " 'add_slangs':{'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo':{'min_pass_rate': 0.75},\n", + " 'add_ocr_typo':{'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap':{'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap':{'min_pass_rate': 0.75}\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generating the test cases." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:44:19.852737Z", + "iopub.status.busy": "2023-11-20T07:44:19.852590Z", + "iopub.status.idle": "2023-11-20T07:45:44.856119Z", + "shell.execute_reply": "2023-11-20T07:45:44.855564Z", + "shell.execute_reply.started": "2023-11-20T07:44:19.852724Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 8719.97it/s]\n", + "WARNING:root:[W009] Removing samples where no transformation has been applied:\n", + "[W010] - Test 'add_typo': 21 samples removed out of 500\n", + "[W010] - Test 'dyslexia_word_swap': 85 samples removed out of 500\n", + "[W010] - Test 'add_abbreviation': 60 samples removed out of 500\n", + "[W010] - Test 'add_slangs': 193 samples removed out of 500\n", + "[W010] - Test 'add_ocr_typo': 2 samples removed out of 500\n", + "[W010] - Test 'adjective_synonym_swap': 133 samples removed out of 500\n", + "[W010] - Test 'adjective_antonym_swap': 193 samples removed out of 500\n", + "\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seed_value = 42\n", + "random.seed(seed_value)\n", + "harness.generate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:45:44.865346Z", + "iopub.status.busy": "2023-11-20T07:45:44.865184Z", + "iopub.status.idle": "2023-11-20T07:45:45.296356Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-A person wants to start saving money so that t...-A PERSON WANTS TO START SAVING MONEY SO THAT T...
1robustnessuppercase-There is most likely going to be fog around:\\n...-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A...
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni...-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D....
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is p...-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P...
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. ...-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS...
.....................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spen...-A woman, with a pale complexion, wants to spen...
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the wa...-Pasta may be raw in water when\\n\\nA. the water...
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on ...-A decrease in diseases\\n\\nA. has no impact on ...
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what ...-When soil is viewed in a unscientific way, wha...
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their sk...-Some animals use a gaseous coming from their s...
\n", + "

4813 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question perturbed_context \\\n", + "0 A person wants to start saving money so that t... - \n", + "1 There is most likely going to be fog around:\\n... - \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni... - \n", + "3 Oak tree seeds are planted and a sidewalk is p... - \n", + "4 An electric car runs on electricity via\\n\\nA. ... - \n", + "... ... ... \n", + "4808 A woman, with a pale complexion, wants to spen... - \n", + "4809 Pasta may be cooked in water when\\n\\nA. the wa... - \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... - \n", + "4811 When soil is viewed in a scientific way, what ... - \n", + "4812 Some animals use a liquid coming from their sk... - \n", + "\n", + " perturbed_question \n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT T... \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A... \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D.... \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P... \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS... \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spen... \n", + "4809 Pasta may be raw in water when\\n\\nA. the water... \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... \n", + "4811 When soil is viewed in a unscientific way, wha... \n", + "4812 Some animals use a gaseous coming from their s... \n", + "\n", + "[4813 rows x 6 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T07:49:16.846577Z", + "iopub.status.busy": "2023-11-20T07:49:16.845999Z", + "iopub.status.idle": "2023-11-20T08:23:02.916915Z", + "shell.execute_reply": "2023-11-20T08:23:02.916388Z", + "shell.execute_reply.started": "2023-11-20T07:49:16.846555Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 4813/4813 [33:46<00:00, 2.38it/s]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving model reponse (expected_result and actual_result)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T08:27:23.709354Z", + "iopub.status.busy": "2023-11-20T08:27:23.708791Z", + "iopub.status.idle": "2023-11-20T08:27:23.927011Z", + "shell.execute_reply": "2023-11-20T08:27:23.926451Z", + "shell.execute_reply.started": "2023-11-20T08:27:23.709336Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "harness.save(save_dir=\"openai/gpt-3.5-turbo-instruct-OpenBookQA\", include_generated_results =True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T08:27:25.468206Z", + "iopub.status.busy": "2023-11-20T08:27:25.467641Z", + "iopub.status.idle": "2023-11-20T08:33:02.936068Z", + "shell.execute_reply": "2023-11-20T08:33:02.935510Z", + "shell.execute_reply.started": "2023-11-20T08:27:25.468188Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T08:33:02.937461Z", + "iopub.status.busy": "2023-11-20T08:33:02.937043Z", + "iopub.status.idle": "2023-11-20T08:33:02.946325Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDSB. quit eating lunch outB. QUIT EATING LUNCH OUTTrue
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERTA. a marshA. A MARSHTrue
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASSA. lionsA. LIONSTrue
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APARTC. parts may break the concreteC. PARTS MAY BREAK THE CONCRETETrue
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUELB. a power stationC. ELECTRICAL CONDUCTORSFalse
..............................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in spaceA. UV rays are harmfulD. the sun is in spaceFalse
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very saltyC. water is bubbling from applied warmthC. water is bubbling from applied warmthTrue
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visitsC. leads to less sick peopleB. leads to more well peopleFalse
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebblesB. tiny lifeforms in dirtD. a lot of tiny pebblesFalse
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidityC. heatC. heatTrue
\n", + "

4813 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \\\n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " expected_result \\\n", + "0 B. quit eating lunch out \n", + "1 A. a marsh \n", + "2 A. lions \n", + "3 C. parts may break the concrete \n", + "4 B. a power station \n", + "... ... \n", + "4808 A. UV rays are harmful \n", + "4809 C. water is bubbling from applied warmth \n", + "4810 C. leads to less sick people \n", + "4811 B. tiny lifeforms in dirt \n", + "4812 C. heat \n", + "\n", + " actual_result pass \n", + "0 B. QUIT EATING LUNCH OUT True \n", + "1 A. A MARSH True \n", + "2 A. LIONS True \n", + "3 C. PARTS MAY BREAK THE CONCRETE True \n", + "4 C. ELECTRICAL CONDUCTORS False \n", + "... ... ... \n", + "4808 D. the sun is in space False \n", + "4809 C. water is bubbling from applied warmth True \n", + "4810 B. leads to more well people False \n", + "4811 D. a lot of tiny pebbles False \n", + "4812 C. heat True \n", + "\n", + "[4813 rows x 9 columns]" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T08:33:02.958460Z", + "iopub.status.busy": "2023-11-20T08:33:02.958196Z", + "iopub.status.idle": "2023-11-20T08:38:38.126397Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T08:38:38.131630Z", + "iopub.status.busy": "2023-11-20T08:38:38.131495Z", + "iopub.status.idle": "2023-11-20T08:38:38.138094Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase6543587%75%True
1robustnesslowercase6044088%75%True
2robustnesstitlecase7342785%75%True
3robustnessadd_typo5042990%75%True
4robustnessdyslexia_word_swap8533080%75%True
5robustnessadd_abbreviation9334779%75%True
6robustnessadd_slangs10320466%75%False
7robustnessadd_speech_to_text_typo4645491%75%True
8robustnessadd_ocr_typo10339579%75%True
9robustnessadjective_synonym_swap11625168%75%False
10robustnessadjective_antonym_swap10420366%75%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 65 435 87% \n", + "1 robustness lowercase 60 440 88% \n", + "2 robustness titlecase 73 427 85% \n", + "3 robustness add_typo 50 429 90% \n", + "4 robustness dyslexia_word_swap 85 330 80% \n", + "5 robustness add_abbreviation 93 347 79% \n", + "6 robustness add_slangs 103 204 66% \n", + "7 robustness add_speech_to_text_typo 46 454 91% \n", + "8 robustness add_ocr_typo 103 395 79% \n", + "9 robustness adjective_synonym_swap 116 251 68% \n", + "10 robustness adjective_antonym_swap 104 203 66% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% True \n", + "1 75% True \n", + "2 75% True \n", + "3 75% True \n", + "4 75% True \n", + "5 75% True \n", + "6 75% False \n", + "7 75% True \n", + "8 75% True \n", + "9 75% False \n", + "10 75% False " + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "report" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving report and generated_results" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T08:38:38.143320Z", + "iopub.status.busy": "2023-11-20T08:38:38.143188Z", + "iopub.status.idle": "2023-11-20T08:38:38.286181Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results.to_csv('openai/gpt-3.5-turbo-instruct-OpenBookQA.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-20T08:38:38.291391Z", + "iopub.status.busy": "2023-11-20T08:38:38.291264Z", + "iopub.status.idle": "2023-11-20T08:38:38.303232Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report.to_csv('openai/gpt-3.5-turbo-instruct-OpenBookQA-report.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model Mistral-7B-Instruct-v0.1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-21T15:53:52.725765Z", + "iopub.status.busy": "2023-11-21T15:53:52.725616Z", + "iopub.status.idle": "2023-11-21T15:54:44.445706Z", + "shell.execute_reply": "2023-11-21T15:54:44.445029Z", + "shell.execute_reply.started": "2023-11-21T15:53:52.725752Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "84290b95081b4c3481326755bdfe430d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Loading checkpoint shards: 0%| | 0/2 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-A person wants to start saving money so that t...-A PERSON WANTS TO START SAVING MONEY SO THAT T...
1robustnessuppercase-There is most likely going to be fog around:\\n...-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A...
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni...-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D....
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is p...-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P...
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. ...-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS...
.....................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spen...-A woman, with a pale complexion, wants to spen...
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the wa...-Pasta may be raw in water when\\n\\nA. the water...
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on ...-A decrease in diseases\\n\\nA. has no impact on ...
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what ...-When soil is viewed in a unscientific way, wha...
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their sk...-Some animals use a gaseous coming from their s...
\n", + "

4813 rows × 6 columns

\n", + "" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question perturbed_context \\\n", + "0 A person wants to start saving money so that t... - \n", + "1 There is most likely going to be fog around:\\n... - \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni... - \n", + "3 Oak tree seeds are planted and a sidewalk is p... - \n", + "4 An electric car runs on electricity via\\n\\nA. ... - \n", + "... ... ... \n", + "4808 A woman, with a pale complexion, wants to spen... - \n", + "4809 Pasta may be cooked in water when\\n\\nA. the wa... - \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... - \n", + "4811 When soil is viewed in a scientific way, what ... - \n", + "4812 Some animals use a liquid coming from their sk... - \n", + "\n", + " perturbed_question \n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT T... \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A... \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D.... \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P... \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS... \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spen... \n", + "4809 Pasta may be raw in water when\\n\\nA. the water... \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... \n", + "4811 When soil is viewed in a unscientific way, wha... \n", + "4812 Some animals use a gaseous coming from their s... \n", + "\n", + "[4813 rows x 6 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving model reponse (expected_result and actual_result)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-21T23:00:12.314773Z", + "iopub.status.busy": "2023-11-21T23:00:12.314620Z", + "iopub.status.idle": "2023-11-21T23:00:12.552418Z", + "shell.execute_reply": "2023-11-21T23:00:12.551826Z", + "shell.execute_reply.started": "2023-11-21T23:00:12.314759Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "harness.save(save_dir=\"mistralai/Mistral-7B-Instruct-v0.1-OpenBookQA\", include_generated_results =True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-21T23:00:12.553308Z", + "iopub.status.busy": "2023-11-21T23:00:12.553130Z", + "iopub.status.idle": "2023-11-21T23:16:59.986809Z", + "shell.execute_reply": "2023-11-21T23:16:59.985790Z", + "shell.execute_reply.started": "2023-11-21T23:00:12.553293Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-21T23:16:59.987716Z", + "iopub.status.busy": "2023-11-21T23:16:59.987561Z", + "iopub.status.idle": "2023-11-21T23:16:59.997060Z", + "shell.execute_reply": "2023-11-21T23:16:59.996556Z", + "shell.execute_reply.started": "2023-11-21T23:16:59.987701Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-A person wants to start saving money so that t...-A PERSON WANTS TO START SAVING MONEY SO THAT T...BCFalse
1robustnessuppercase-There is most likely going to be fog around:\\n...-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A...AATrue
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni...-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D....AATrue
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is p...-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P...BBTrue
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. ...-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS...BBTrue
..............................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spen...-A woman, with a pale complexion, wants to spen...ACFalse
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the wa...-Pasta may be raw in water when\\n\\nA. the water...BAFalse
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on ...-A decrease in diseases\\n\\nA. has no impact on ...CBFalse
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what ...-When soil is viewed in a unscientific way, wha...BBTrue
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their sk...-Some animals use a gaseous coming from their s...BDFalse
\n", + "

4813 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question perturbed_context \\\n", + "0 A person wants to start saving money so that t... - \n", + "1 There is most likely going to be fog around:\\n... - \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunni... - \n", + "3 Oak tree seeds are planted and a sidewalk is p... - \n", + "4 An electric car runs on electricity via\\n\\nA. ... - \n", + "... ... ... \n", + "4808 A woman, with a pale complexion, wants to spen... - \n", + "4809 Pasta may be cooked in water when\\n\\nA. the wa... - \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... - \n", + "4811 When soil is viewed in a scientific way, what ... - \n", + "4812 Some animals use a liquid coming from their sk... - \n", + "\n", + " perturbed_question expected_result \\\n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT T... B \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A... A \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D.... A \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS P... B \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GAS... B \n", + "... ... ... \n", + "4808 A woman, with a pale complexion, wants to spen... A \n", + "4809 Pasta may be raw in water when\\n\\nA. the water... B \n", + "4810 A decrease in diseases\\n\\nA. has no impact on ... C \n", + "4811 When soil is viewed in a unscientific way, wha... B \n", + "4812 Some animals use a gaseous coming from their s... B \n", + "\n", + " actual_result pass \n", + "0 C False \n", + "1 A True \n", + "2 A True \n", + "3 B True \n", + "4 B True \n", + "... ... ... \n", + "4808 C False \n", + "4809 A False \n", + "4810 B False \n", + "4811 B True \n", + "4812 D False \n", + "\n", + "[4813 rows x 9 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T18:53:57.757922Z", + "iopub.status.busy": "2023-11-28T18:53:57.757668Z", + "iopub.status.idle": "2023-11-28T18:53:57.778723Z", + "shell.execute_reply": "2023-11-28T18:53:57.778308Z", + "shell.execute_reply.started": "2023-11-28T18:53:57.757908Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase22627455%75%False
1robustnesslowercase20629459%75%False
2robustnesstitlecase23027054%75%False
3robustnessadd_typo5642388%75%True
4robustnessdyslexia_word_swap6435185%75%True
5robustnessadd_abbreviation8535581%75%True
6robustnessadd_slangs7523276%75%True
7robustnessadd_speech_to_text_typo6443687%75%True
8robustnessadd_ocr_typo13836072%75%False
9robustnessadjective_synonym_swap8228578%75%True
10robustnessadjective_antonym_swap8122674%75%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 226 274 55% \n", + "1 robustness lowercase 206 294 59% \n", + "2 robustness titlecase 230 270 54% \n", + "3 robustness add_typo 56 423 88% \n", + "4 robustness dyslexia_word_swap 64 351 85% \n", + "5 robustness add_abbreviation 85 355 81% \n", + "6 robustness add_slangs 75 232 76% \n", + "7 robustness add_speech_to_text_typo 64 436 87% \n", + "8 robustness add_ocr_typo 138 360 72% \n", + "9 robustness adjective_synonym_swap 82 285 78% \n", + "10 robustness adjective_antonym_swap 81 226 74% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% False \n", + "1 75% False \n", + "2 75% False \n", + "3 75% True \n", + "4 75% True \n", + "5 75% True \n", + "6 75% True \n", + "7 75% True \n", + "8 75% False \n", + "9 75% True \n", + "10 75% False " + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "report " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving report and generated_results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results.to_csv('mistralai/Mistral-7B-Instruct-v0.1-OpenBookQA.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "report.to_csv('mistralai/Mistral-7B-Instruct-v0.1-OpenBookQA-report.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model HuggingFaceH4/zephyr-7b-beta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading checkpoint shards: 100%|██████████| 8/8 [01:01<00:00, 7.66s/it]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"evaluation\": {\n", + " \"metric\": \"QAEvalChain\",\n", + " \"model\": \"gpt-3.5-turbo-instruct\",\n", + " \"hub\": \"openai\"\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 0.65\n", + " },\n", + " \"robustness\": {\n", + " \"uppercase\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"titlecase\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"dyslexia_word_swap\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_abbreviation\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_slangs\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_speech_to_text_typo\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_ocr_typo\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"adjective_synonym_swap\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"adjective_antonym_swap\": {\n", + " \"min_pass_rate\": 0.75\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\", \n", + " model={\"model\": \"HuggingFaceH4/zephyr-7b-beta\", \"hub\": \"huggingface\"},\n", + " data={\"data_source\" :\"OpenBookQA\",\n", + " \"split\":\"test\"},\n", + " config={\n", + " \"evaluation\": {\"metric\":\"QAEvalChain\",\"model\":\"gpt-3.5-turbo-instruct\",\"hub\":\"openai\"},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase':{'min_pass_rate': 0.75},\n", + " 'titlecase':{'min_pass_rate': 0.75},\n", + " 'add_typo':{'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.75},\n", + " 'add_abbreviation':{'min_pass_rate': 0.75},\n", + " 'add_slangs':{'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo':{'min_pass_rate': 0.75},\n", + " 'add_ocr_typo':{'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap':{'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap':{'min_pass_rate': 0.75}\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generating the test cases." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL
.....................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity
\n", + "

4813 rows × 6 columns

\n", + "" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + "[4813 rows x 6 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving model reponse (expected_result and actual_result)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "harness.save(save_dir=\"HuggingFaceH4/zephyr-7b-beta-OpenBookQA\", include_generated_results =True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:urllib3.connectionpool:Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NameResolutionError(\": Failed to resolve 'api.openai.com' ([Errno 11001] getaddrinfo failed)\")': /v1/completions\n", + "WARNING:urllib3.connectionpool:Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NameResolutionError(\": Failed to resolve 'api.openai.com' ([Errno 11001] getaddrinfo failed)\")': /v1/completions\n" + ] + } + ], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDSBTheFalse
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERTAATrue
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASSAATrue
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APARTCAFalse
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUELBBTrue
..............................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in spaceAATrue
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very saltyCAFalse
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visitsCBFalse
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebblesBBTrue
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidityDDTrue
\n", + "

4813 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \\\n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " expected_result actual_result pass \n", + "0 B The False \n", + "1 A A True \n", + "2 A A True \n", + "3 C A False \n", + "4 B B True \n", + "... ... ... ... \n", + "4808 A A True \n", + "4809 C A False \n", + "4810 C B False \n", + "4811 B B True \n", + "4812 D D True \n", + "\n", + "[4813 rows x 9 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase24026052%75%False
1robustnesslowercase26823246%75%False
2robustnesstitlecase23626453%75%False
3robustnessadd_typo8139883%75%True
4robustnessdyslexia_word_swap5935686%75%True
5robustnessadd_abbreviation10533576%75%True
6robustnessadd_slangs8022774%75%False
7robustnessadd_speech_to_text_typo8941182%75%True
8robustnessadd_ocr_typo18231663%75%False
9robustnessadjective_synonym_swap7329480%75%True
10robustnessadjective_antonym_swap9421369%75%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 240 260 52% \n", + "1 robustness lowercase 268 232 46% \n", + "2 robustness titlecase 236 264 53% \n", + "3 robustness add_typo 81 398 83% \n", + "4 robustness dyslexia_word_swap 59 356 86% \n", + "5 robustness add_abbreviation 105 335 76% \n", + "6 robustness add_slangs 80 227 74% \n", + "7 robustness add_speech_to_text_typo 89 411 82% \n", + "8 robustness add_ocr_typo 182 316 63% \n", + "9 robustness adjective_synonym_swap 73 294 80% \n", + "10 robustness adjective_antonym_swap 94 213 69% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% False \n", + "1 75% False \n", + "2 75% False \n", + "3 75% True \n", + "4 75% True \n", + "5 75% True \n", + "6 75% False \n", + "7 75% True \n", + "8 75% False \n", + "9 75% True \n", + "10 75% False " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "report " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving report and generated_results" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "generated_results.to_csv('HuggingFaceH4/zephyr-7b-beta-OpenBookQA.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "report.to_csv('HuggingFaceH4/zephyr-7b-beta-OpenBookQA-report.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model Intel/neural-chat-7b-v3-1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading (…)l-00001-of-00002.bin: 100%|██████████| 9.94G/9.94G [28:32<00:00, 5.81MB/s]\n", + "c:\\Users\\priks\\anaconda3\\envs\\ge\\lib\\site-packages\\huggingface_hub\\file_download.py:137: UserWarning: `huggingface_hub` cache-system uses symlinks by default to efficiently store duplicated files but your machine does not support them in C:\\Users\\priks\\.cache\\huggingface\\hub. Caching files will still work but in a degraded version that might require more space on your disk. This warning can be disabled by setting the `HF_HUB_DISABLE_SYMLINKS_WARNING` environment variable. For more details, see https://huggingface.co/docs/huggingface_hub/how-to-cache#limitations.\n", + "To support symlinks on Windows, you either need to activate Developer Mode or to run Python as an administrator. In order to see activate developer mode, see this article: https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development\n", + " warnings.warn(message)\n", + "Downloading (…)l-00002-of-00002.bin: 100%|██████████| 4.54G/4.54G [12:52<00:00, 5.88MB/s]\n", + "Downloading shards: 100%|██████████| 2/2 [41:26<00:00, 1243.32s/it]\n", + "Loading checkpoint shards: 100%|██████████| 2/2 [01:27<00:00, 43.68s/it]\n", + "Downloading generation_config.json: 100%|██████████| 111/111 [00:00<00:00, 37.0kB/s]\n", + "Downloading tokenizer_config.json: 100%|██████████| 953/953 [00:00<00:00, 477kB/s]\n", + "Downloading tokenizer.model: 100%|██████████| 493k/493k [00:00<00:00, 5.60MB/s]\n", + "Downloading tokenizer.json: 100%|██████████| 1.80M/1.80M [00:01<00:00, 1.68MB/s]\n", + "Downloading (…)cial_tokens_map.json: 100%|██████████| 145/145 [00:00<00:00, 72.4kB/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"evaluation\": {\n", + " \"metric\": \"QAEvalChain\",\n", + " \"model\": \"gpt-3.5-turbo-instruct\",\n", + " \"hub\": \"openai\"\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 0.65\n", + " },\n", + " \"robustness\": {\n", + " \"uppercase\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"titlecase\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"dyslexia_word_swap\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_abbreviation\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_slangs\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_speech_to_text_typo\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"add_ocr_typo\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"adjective_synonym_swap\": {\n", + " \"min_pass_rate\": 0.75\n", + " },\n", + " \"adjective_antonym_swap\": {\n", + " \"min_pass_rate\": 0.75\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\", \n", + " model={\"model\": \"Intel/neural-chat-7b-v3-1\", \"hub\": \"huggingface\"},\n", + " data={\"data_source\" :\"OpenBookQA\",\n", + " \"split\":\"test\"},\n", + " config={\n", + " \"evaluation\": {\"metric\":\"QAEvalChain\",\"model\":\"gpt-3.5-turbo-instruct\",\"hub\":\"openai\"},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase':{'min_pass_rate': 0.75},\n", + " 'titlecase':{'min_pass_rate': 0.75},\n", + " 'add_typo':{'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.75},\n", + " 'add_abbreviation':{'min_pass_rate': 0.75},\n", + " 'add_slangs':{'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo':{'min_pass_rate': 0.75},\n", + " 'add_ocr_typo':{'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap':{'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap':{'min_pass_rate': 0.75}\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generating the test cases." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL
.....................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity
\n", + "

4813 rows × 6 columns

\n", + "" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + "[4813 rows x 6 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving model reponse (expected_result and actual_result)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "harness.save(save_dir=\"Intel/neural-chat-7b-v3-1-OpenBookQA\", include_generated_results =True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDSBBTrue
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERTAATrue
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASSAATrue
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APARTCCTrue
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUELCAFalse
..............................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in spaceABFalse
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very saltyBAFalse
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visitsCBFalse
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebblesBBTrue
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidityDDTrue
\n", + "

4813 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \\\n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " expected_result actual_result pass \n", + "0 B B True \n", + "1 A A True \n", + "2 A A True \n", + "3 C C True \n", + "4 C A False \n", + "... ... ... ... \n", + "4808 A B False \n", + "4809 B A False \n", + "4810 C B False \n", + "4811 B B True \n", + "4812 D D True \n", + "\n", + "[4813 rows x 9 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase10639479%75%True
1robustnesslowercase6044088%75%True
2robustnesstitlecase9240882%75%True
3robustnessadd_typo5242789%75%True
4robustnessdyslexia_word_swap5835786%75%True
5robustnessadd_abbreviation7136984%75%True
6robustnessadd_slangs6124680%75%True
7robustnessadd_speech_to_text_typo6843286%75%True
8robustnessadd_ocr_typo13436473%75%False
9robustnessadjective_synonym_swap7429380%75%True
10robustnessadjective_antonym_swap9021771%75%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 106 394 79% \n", + "1 robustness lowercase 60 440 88% \n", + "2 robustness titlecase 92 408 82% \n", + "3 robustness add_typo 52 427 89% \n", + "4 robustness dyslexia_word_swap 58 357 86% \n", + "5 robustness add_abbreviation 71 369 84% \n", + "6 robustness add_slangs 61 246 80% \n", + "7 robustness add_speech_to_text_typo 68 432 86% \n", + "8 robustness add_ocr_typo 134 364 73% \n", + "9 robustness adjective_synonym_swap 74 293 80% \n", + "10 robustness adjective_antonym_swap 90 217 71% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% True \n", + "1 75% True \n", + "2 75% True \n", + "3 75% True \n", + "4 75% True \n", + "5 75% True \n", + "6 75% True \n", + "7 75% True \n", + "8 75% False \n", + "9 75% True \n", + "10 75% False " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "report " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving report and generated_results" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "generated_results.to_csv('Intel/neural-chat-7b-v3-1-OpenBookQA.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "report.to_csv('Intel/neural-chat-7b-v3-1-OpenBookQA-report.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model gpt-4-1106-preview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:44:20.622319Z", + "iopub.status.busy": "2023-11-28T14:44:20.621904Z", + "iopub.status.idle": "2023-11-28T14:44:20.741369Z", + "shell.execute_reply": "2023-11-28T14:44:20.740588Z", + "shell.execute_reply.started": "2023-11-28T14:44:20.622303Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"model_parameters\": {\n", + " \"temperature\": 0.2,\n", + " \"max_tokens\": 64\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\",\n", + " model={\"model\": \"gpt-4-1106-preview\", \"hub\":\"openai\"},\n", + " data={\"data_source\" :\"OpenBookQA\",\n", + " \"split\":\"test\"}\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:44:20.742136Z", + "iopub.status.busy": "2023-11-28T14:44:20.741984Z", + "iopub.status.idle": "2023-11-28T14:44:20.803916Z", + "shell.execute_reply": "2023-11-28T14:44:20.803244Z", + "shell.execute_reply.started": "2023-11-28T14:44:20.742122Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'evaluation': {'metric': 'QAEvalChain',\n", + " 'model': 'gpt-3.5-turbo-instruct',\n", + " 'hub': 'openai'},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase': {'min_pass_rate': 0.75},\n", + " 'titlecase': {'min_pass_rate': 0.75},\n", + " 'add_typo': {'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap': {'min_pass_rate': 0.75},\n", + " 'add_abbreviation': {'min_pass_rate': 0.75},\n", + " 'add_slangs': {'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo': {'min_pass_rate': 0.75},\n", + " 'add_ocr_typo': {'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap': {'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap': {'min_pass_rate': 0.75}}}}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.configure(\n", + "{\n", + " \"evaluation\": {\"metric\":\"QAEvalChain\",\"model\":\"gpt-3.5-turbo-instruct\",\"hub\":\"openai\"},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase':{'min_pass_rate': 0.75},\n", + " 'titlecase':{'min_pass_rate': 0.75},\n", + " 'add_typo':{'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.75},\n", + " 'add_abbreviation':{'min_pass_rate': 0.75},\n", + " 'add_slangs':{'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo':{'min_pass_rate': 0.75},\n", + " 'add_ocr_typo':{'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap':{'min_pass_rate': 0.75},\n", + " 'adjective_antonym_swap':{'min_pass_rate': 0.75}\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generating the test cases." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:44:20.938360Z", + "iopub.status.busy": "2023-11-28T14:44:20.937994Z", + "iopub.status.idle": "2023-11-28T14:45:43.700124Z", + "shell.execute_reply": "2023-11-28T14:45:43.699516Z", + "shell.execute_reply.started": "2023-11-28T14:44:20.938341Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 6502.80it/s]\n", + "WARNING:root:[W009] Removing samples where no transformation has been applied:\n", + "[W010] - Test 'add_typo': 21 samples removed out of 500\n", + "[W010] - Test 'dyslexia_word_swap': 85 samples removed out of 500\n", + "[W010] - Test 'add_abbreviation': 60 samples removed out of 500\n", + "[W010] - Test 'add_slangs': 193 samples removed out of 500\n", + "[W010] - Test 'add_ocr_typo': 2 samples removed out of 500\n", + "[W010] - Test 'adjective_synonym_swap': 133 samples removed out of 500\n", + "[W010] - Test 'adjective_antonym_swap': 193 samples removed out of 500\n", + "\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seed_value = 42\n", + "random.seed(seed_value)\n", + "harness.generate()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:45:43.701265Z", + "iopub.status.busy": "2023-11-28T14:45:43.701099Z", + "iopub.status.idle": "2023-11-28T14:45:44.139425Z", + "shell.execute_reply": "2023-11-28T14:45:44.138863Z", + "shell.execute_reply.started": "2023-11-28T14:45:43.701249Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL
.....................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity
\n", + "

4813 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + "[4813 rows x 6 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T14:45:44.140403Z", + "iopub.status.busy": "2023-11-28T14:45:44.140247Z", + "iopub.status.idle": "2023-11-28T18:45:08.674969Z", + "shell.execute_reply": "2023-11-28T18:45:08.674369Z", + "shell.execute_reply.started": "2023-11-28T14:45:44.140388Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 4813/4813 [3:59:24<00:00, 2.98s/it] \n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### saving model reponse (expected_result and actual_result)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T18:45:08.676280Z", + "iopub.status.busy": "2023-11-28T18:45:08.675814Z", + "iopub.status.idle": "2023-11-28T18:45:09.007067Z", + "shell.execute_reply": "2023-11-28T18:45:09.006501Z", + "shell.execute_reply.started": "2023-11-28T18:45:08.676255Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "harness.save(save_dir=\"openai/gpt-4-1106-preview-OpenBookQA\", include_generated_results =True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T18:45:09.008337Z", + "iopub.status.busy": "2023-11-28T18:45:09.007874Z", + "iopub.status.idle": "2023-11-28T18:53:57.184392Z", + "shell.execute_reply": "2023-11-28T18:53:57.183856Z", + "shell.execute_reply.started": "2023-11-28T18:45:09.008312Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T18:53:57.185552Z", + "iopub.status.busy": "2023-11-28T18:53:57.185098Z", + "iopub.status.idle": "2023-11-28T18:53:57.194355Z", + "shell.execute_reply": "2023-11-28T18:53:57.193961Z", + "shell.execute_reply.started": "2023-11-28T18:53:57.185533Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends-A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDSB. quit eating lunch outB. QUIT EATING LUNCH OUTTrue
1robustnessuppercase-There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert-THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERTA. a marshA. A MARSHTrue
2robustnessuppercase-Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass-PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASSC. bunniesC. BUNNIESTrue
3robustnessuppercase-Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart-OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APARTC. parts may break the concreteC. PARTS MAY BREAK THE CONCRETETrue
4robustnessuppercase-An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel-AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUELB. a power stationB. A POWER STATIONTrue
..............................
4808robustnessadjective_antonym_swap-A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space-A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in spaceA. UV rays are harmfulB. sunlight will be funFalse
4809robustnessadjective_antonym_swap-Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh-Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very saltyC. water is bubbling from applied warmthA. the water is coolFalse
4810robustnessadjective_antonym_swap-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits-A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visitsC. leads to less sick peopleB. leads to more well peopleFalse
4811robustnessadjective_antonym_swap-When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles-When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebblesB. tiny lifeforms in dirtB. tiny lifeforms in dirtTrue
4812robustnessadjective_antonym_swap-Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity-Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidityC. heatD. humidityFalse
\n", + "

4813 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + "... ... ... ... \n", + "4808 robustness adjective_antonym_swap - \n", + "4809 robustness adjective_antonym_swap - \n", + "4810 robustness adjective_antonym_swap - \n", + "4811 robustness adjective_antonym_swap - \n", + "4812 robustness adjective_antonym_swap - \n", + "\n", + " original_question \\\n", + "0 A person wants to start saving money so that they can afford a nice vacation at the end of the year. After looking over their budget and expenses, they decide the best way to save money is to\\n\\nA. make more phone calls\\nB. quit eating lunch out\\nC. buy less with monopoly money\\nD. have lunch with friends \n", + "1 There is most likely going to be fog around:\\n\\nA. a marsh\\nB. a tundra\\nC. the plains\\nD. a desert \n", + "2 Predators eat\\n\\nA. lions\\nB. humans\\nC. bunnies\\nD. grass \n", + "3 Oak tree seeds are planted and a sidewalk is paved right next to that spot, until eventually, the tree is tall and the roots must extend past the sidewalk, which means\\n\\nA. roots may be split\\nB. roots may begin to die\\nC. parts may break the concrete\\nD. roots may fall apart \n", + "4 An electric car runs on electricity via\\n\\nA. gasoline\\nB. a power station\\nC. electrical conductors\\nD. fuel \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the bright, sunny day at the beach. She makes sure that she stops at the store to pick up some sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmful\\nB. sunlight will be fun\\nC. the sun is close\\nD. the sun is in space \n", + "4809 Pasta may be cooked in water when\\n\\nA. the water is warm\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very fresh \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more sick people\\nC. leads to less sick people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a scientific way, what is seen and viewed is actually\\n\\nA. insects like big beetles\\nB. tiny lifeforms in dirt\\nC. small mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a liquid coming from their skin to adjust to\\n\\nA. cold\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + "... ... \n", + "4808 - \n", + "4809 - \n", + "4810 - \n", + "4811 - \n", + "4812 - \n", + "\n", + " perturbed_question \\\n", + "0 A PERSON WANTS TO START SAVING MONEY SO THAT THEY CAN AFFORD A NICE VACATION AT THE END OF THE YEAR. AFTER LOOKING OVER THEIR BUDGET AND EXPENSES, THEY DECIDE THE BEST WAY TO SAVE MONEY IS TO A. MAKE MORE PHONE CALLS B. QUIT EATING LUNCH OUT C. BUY LESS WITH MONOPOLY MONEY D. HAVE LUNCH WITH FRIENDS \n", + "1 THERE IS MOST LIKELY GOING TO BE FOG AROUND: A. A MARSH B. A TUNDRA C. THE PLAINS D. A DESERT \n", + "2 PREDATORS EAT A. LIONS B. HUMANS C. BUNNIES D. GRASS \n", + "3 OAK TREE SEEDS ARE PLANTED AND A SIDEWALK IS PAVED RIGHT NEXT TO THAT SPOT, UNTIL EVENTUALLY, THE TREE IS TALL AND THE ROOTS MUST EXTEND PAST THE SIDEWALK, WHICH MEANS A. ROOTS MAY BE SPLIT B. ROOTS MAY BEGIN TO DIE C. PARTS MAY BREAK THE CONCRETE D. ROOTS MAY FALL APART \n", + "4 AN ELECTRIC CAR RUNS ON ELECTRICITY VIA A. GASOLINE B. A POWER STATION C. ELECTRICAL CONDUCTORS D. FUEL \n", + "... ... \n", + "4808 A woman, with a pale complexion, wants to spend the dull, sunny day at the beach. She makes sure that she stops at the store to pick up no sunblock before she begins to enjoy her day filled with sand and surf. She applies the sunblock carefully and thoroughly, because she knows that\\n\\nA. UV rays are harmless\\nB. sunlight will be fun\\nC. the sun is distant\\nD. the sun is in space \n", + "4809 Pasta may be raw in water when\\n\\nA. the water is cool\\nB. the water is on the stove\\nC. water is bubbling from applied warmth\\nD. the pasta is very salty \n", + "4810 A decrease in diseases\\n\\nA. has no impact on a population\\nB. leads to more well people\\nC. leads to less well people\\nD. leads to an uptick in emergency room visits \n", + "4811 When soil is viewed in a unscientific way, what is seen and viewed is actually\\n\\nA. insects like small beetles\\nB. tiny lifeforms in dirt\\nC. big mammals living there\\nD. a lot of tiny pebbles \n", + "4812 Some animals use a gaseous coming from their skin to adjust to\\n\\nA. hot\\nB. water\\nC. heat\\nD. humidity \n", + "\n", + " expected_result \\\n", + "0 B. quit eating lunch out \n", + "1 A. a marsh \n", + "2 C. bunnies \n", + "3 C. parts may break the concrete \n", + "4 B. a power station \n", + "... ... \n", + "4808 A. UV rays are harmful \n", + "4809 C. water is bubbling from applied warmth \n", + "4810 C. leads to less sick people \n", + "4811 B. tiny lifeforms in dirt \n", + "4812 C. heat \n", + "\n", + " actual_result pass \n", + "0 B. QUIT EATING LUNCH OUT True \n", + "1 A. A MARSH True \n", + "2 C. BUNNIES True \n", + "3 C. PARTS MAY BREAK THE CONCRETE True \n", + "4 B. A POWER STATION True \n", + "... ... ... \n", + "4808 B. sunlight will be fun False \n", + "4809 A. the water is cool False \n", + "4810 B. leads to more well people False \n", + "4811 B. tiny lifeforms in dirt True \n", + "4812 D. humidity False \n", + "\n", + "[4813 rows x 9 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T18:53:57.194975Z", + "iopub.status.busy": "2023-11-28T18:53:57.194823Z", + "iopub.status.idle": "2023-11-28T18:53:57.293778Z", + "shell.execute_reply": "2023-11-28T18:53:57.293351Z", + "shell.execute_reply.started": "2023-11-28T18:53:57.194962Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T18:53:57.294390Z", + "iopub.status.busy": "2023-11-28T18:53:57.294249Z", + "iopub.status.idle": "2023-11-28T18:53:57.361810Z", + "shell.execute_reply": "2023-11-28T18:53:57.361408Z", + "shell.execute_reply.started": "2023-11-28T18:53:57.294377Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase3246894%75%True
1robustnesslowercase3346793%75%True
2robustnesstitlecase2947194%75%True
3robustnessadd_typo3044994%75%True
4robustnessdyslexia_word_swap4037590%75%True
5robustnessadd_abbreviation5838287%75%True
6robustnessadd_slangs8722072%75%False
7robustnessadd_speech_to_text_typo3446693%75%True
8robustnessadd_ocr_typo3945992%75%True
9robustnessadjective_synonym_swap9327475%75%False
10robustnessadjective_antonym_swap10919864%75%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 32 468 94% \n", + "1 robustness lowercase 33 467 93% \n", + "2 robustness titlecase 29 471 94% \n", + "3 robustness add_typo 30 449 94% \n", + "4 robustness dyslexia_word_swap 40 375 90% \n", + "5 robustness add_abbreviation 58 382 87% \n", + "6 robustness add_slangs 87 220 72% \n", + "7 robustness add_speech_to_text_typo 34 466 93% \n", + "8 robustness add_ocr_typo 39 459 92% \n", + "9 robustness adjective_synonym_swap 93 274 75% \n", + "10 robustness adjective_antonym_swap 109 198 64% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% True \n", + "1 75% True \n", + "2 75% True \n", + "3 75% True \n", + "4 75% True \n", + "5 75% True \n", + "6 75% False \n", + "7 75% True \n", + "8 75% True \n", + "9 75% False \n", + "10 75% False " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "report" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Saving report and generated_results" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T18:53:57.362482Z", + "iopub.status.busy": "2023-11-28T18:53:57.362330Z", + "iopub.status.idle": "2023-11-28T18:53:57.569765Z", + "shell.execute_reply": "2023-11-28T18:53:57.569305Z", + "shell.execute_reply.started": "2023-11-28T18:53:57.362468Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "generated_results.to_csv('openai/gpt-4-1106-preview-OpenBookQA.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-28T18:53:57.570591Z", + "iopub.status.busy": "2023-11-28T18:53:57.570311Z", + "iopub.status.idle": "2023-11-28T18:53:57.587896Z", + "shell.execute_reply": "2023-11-28T18:53:57.587445Z", + "shell.execute_reply.started": "2023-11-28T18:53:57.570576Z" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "report.to_csv('openai/gpt-4-1106-preview-OpenBookQA-report.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing the Report" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-22T05:29:17.033355Z", + "iopub.status.busy": "2023-11-22T05:29:17.032979Z", + "iopub.status.idle": "2023-11-22T05:29:18.626250Z", + "shell.execute_reply": "2023-11-22T05:29:18.625706Z", + "shell.execute_reply.started": "2023-11-22T05:29:17.033334Z" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: plotly in /opt/conda/lib/python3.10/site-packages (5.13.1)\n", + "Requirement already satisfied: pandas in /opt/conda/lib/python3.10/site-packages (1.5.3)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /opt/conda/lib/python3.10/site-packages (from plotly) (8.2.1)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /opt/conda/lib/python3.10/site-packages (from pandas) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.10/site-packages (from pandas) (2022.7.1)\n", + "Requirement already satisfied: numpy>=1.21.0 in /opt/conda/lib/python3.10/site-packages (from pandas) (1.21.6)\n", + "Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.10/site-packages (from python-dateutil>=2.8.1->pandas) (1.16.0)\n" + ] + } + ], + "source": [ + "!pip install plotly pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-22T05:34:48.726069Z", + "iopub.status.busy": "2023-11-22T05:34:48.725650Z", + "iopub.status.idle": "2023-11-22T05:34:48.981905Z", + "shell.execute_reply": "2023-11-22T05:34:48.981455Z", + "shell.execute_reply.started": "2023-11-22T05:34:48.726051Z" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Test Type=%{x}
Pass Rate=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "textposition": "auto", + "type": "bar", + "x": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "xaxis": "x", + "y": [ + 58, + 63, + 60, + 74, + 66, + 58, + 59, + 78, + 51, + 62, + 61 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "height": 700, + "legend": { + "tracegroupgap": 0 + }, + "shapes": [ + { + "line": { + "color": "red", + "width": 2 + }, + "type": "line", + "x0": -0.5, + "x1": 10.5, + "y0": 75, + "y1": 75 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Pass Rate by Test Type
Hub - ai21
Model - j2-jumbo-instruct" + }, + "width": 1000, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "title": { + "text": "Test Type" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Pass Rate" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "test_type=%{label}
fail_count=%{value}", + "labels": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 208, + 185, + 199, + 126, + 142, + 183, + 126, + 110, + 246, + 139, + 120 + ] + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Fail Count
Hub - ai21
Model - j2-jumbo-instruct" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Test Type=%{x}
Pass Rate=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "textposition": "auto", + "type": "bar", + "x": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "xaxis": "x", + "y": [ + 53, + 56, + 58, + 79, + 66, + 63, + 64, + 84, + 54, + 65, + 58 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "height": 700, + "legend": { + "tracegroupgap": 0 + }, + "shapes": [ + { + "line": { + "color": "red", + "width": 2 + }, + "type": "line", + "x0": -0.5, + "x1": 10.5, + "y0": 75, + "y1": 75 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Pass Rate by Test Type
Hub - ai21
Model - j2-grande-instruct" + }, + "width": 1000, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "title": { + "text": "Test Type" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Pass Rate" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "test_type=%{label}
fail_count=%{value}", + "labels": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 237, + 220, + 209, + 101, + 142, + 162, + 112, + 82, + 228, + 128, + 130 + ] + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Fail Count
Hub - ai21
Model - j2-grande-instruct" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Test Type=%{x}
Pass Rate=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "textposition": "auto", + "type": "bar", + "x": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "xaxis": "x", + "y": [ + 87, + 88, + 85, + 90, + 80, + 79, + 66, + 91, + 79, + 68, + 66 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "height": 700, + "legend": { + "tracegroupgap": 0 + }, + "shapes": [ + { + "line": { + "color": "red", + "width": 2 + }, + "type": "line", + "x0": -0.5, + "x1": 10.5, + "y0": 75, + "y1": 75 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Pass Rate by Test Type
Hub - openai
Model - gpt-3.5-turbo-instruct" + }, + "width": 1000, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "title": { + "text": "Test Type" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Pass Rate" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "test_type=%{label}
fail_count=%{value}", + "labels": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 65, + 60, + 73, + 50, + 85, + 93, + 103, + 46, + 103, + 116, + 104 + ] + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Fail Count
Hub - openai
Model - gpt-3.5-turbo-instruct" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Test Type=%{x}
Pass Rate=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "textposition": "auto", + "type": "bar", + "x": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "xaxis": "x", + "y": [ + 83, + 85, + 85, + 90, + 80, + 81, + 67, + 88, + 85, + 71, + 66 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "height": 700, + "legend": { + "tracegroupgap": 0 + }, + "shapes": [ + { + "line": { + "color": "red", + "width": 2 + }, + "type": "line", + "x0": -0.5, + "x1": 10.5, + "y0": 75, + "y1": 75 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Pass Rate by Test Type
Hub - openai
Model - text-davinci-003" + }, + "width": 1000, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "title": { + "text": "Test Type" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Pass Rate" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "test_type=%{label}
fail_count=%{value}", + "labels": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 83, + 77, + 77, + 47, + 81, + 84, + 100, + 61, + 73, + 105, + 103 + ] + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Fail Count
Hub - openai
Model - text-davinci-003" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Test Type=%{x}
Pass Rate=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "textposition": "auto", + "type": "bar", + "x": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "xaxis": "x", + "y": [ + 94, + 93, + 94, + 94, + 90, + 87, + 72, + 93, + 92, + 75, + 64 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "height": 700, + "legend": { + "tracegroupgap": 0 + }, + "shapes": [ + { + "line": { + "color": "red", + "width": 2 + }, + "type": "line", + "x0": -0.5, + "x1": 10.5, + "y0": 75, + "y1": 75 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Pass Rate by Test Type
Hub - openai
Model - gpt-4-1106-preview" + }, + "width": 1000, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "title": { + "text": "Test Type" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Pass Rate" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "test_type=%{label}
fail_count=%{value}", + "labels": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 32, + 33, + 29, + 30, + 40, + 58, + 87, + 34, + 39, + 93, + 109 + ] + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Fail Count
Hub - openai
Model - gpt-4-1106-preview" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Test Type=%{x}
Pass Rate=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "textposition": "auto", + "type": "bar", + "x": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "xaxis": "x", + "y": [ + 55, + 59, + 54, + 88, + 85, + 81, + 76, + 87, + 72, + 78, + 74 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "height": 700, + "legend": { + "tracegroupgap": 0 + }, + "shapes": [ + { + "line": { + "color": "red", + "width": 2 + }, + "type": "line", + "x0": -0.5, + "x1": 10.5, + "y0": 75, + "y1": 75 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Pass Rate by Test Type
Hub - huggingface
Model - mistralai/Mistral-7B-Instruct-v0.1" + }, + "width": 1000, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "title": { + "text": "Test Type" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Pass Rate" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "test_type=%{label}
fail_count=%{value}", + "labels": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 226, + 206, + 230, + 56, + 64, + 85, + 75, + 64, + 138, + 82, + 81 + ] + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Fail Count
Hub - huggingface
Model - mistralai/Mistral-7B-Instruct-v0.1" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Test Type=%{x}
Pass Rate=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "textposition": "auto", + "type": "bar", + "x": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "xaxis": "x", + "y": [ + 52, + 46, + 53, + 83, + 86, + 76, + 74, + 82, + 63, + 80, + 69 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "height": 700, + "legend": { + "tracegroupgap": 0 + }, + "shapes": [ + { + "line": { + "color": "red", + "width": 2 + }, + "type": "line", + "x0": -0.5, + "x1": 10.5, + "y0": 75, + "y1": 75 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Pass Rate by Test Type
Hub - huggingface
Model - HuggingFaceH4/zephyr-7b-beta" + }, + "width": 1000, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "title": { + "text": "Test Type" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Pass Rate" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "test_type=%{label}
fail_count=%{value}", + "labels": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 240, + 268, + 236, + 81, + 59, + 105, + 80, + 89, + 182, + 73, + 94 + ] + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Fail Count
Hub - huggingface
Model - HuggingFaceH4/zephyr-7b-beta" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Test Type=%{x}
Pass Rate=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "textposition": "auto", + "type": "bar", + "x": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "xaxis": "x", + "y": [ + 79, + 88, + 82, + 89, + 86, + 84, + 80, + 86, + 73, + 80, + 71 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "height": 700, + "legend": { + "tracegroupgap": 0 + }, + "shapes": [ + { + "line": { + "color": "red", + "width": 2 + }, + "type": "line", + "x0": -0.5, + "x1": 10.5, + "y0": 75, + "y1": 75 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Pass Rate by Test Type
Hub - huggingface
Model - Intel/neural-chat-7b-v3-1" + }, + "width": 1000, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "title": { + "text": "Test Type" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Pass Rate" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "test_type=%{label}
fail_count=%{value}", + "labels": [ + "uppercase", + "lowercase", + "titlecase", + "add_typo", + "dyslexia_word_swap", + "add_abbreviation", + "add_slangs", + "add_speech_to_text_typo", + "add_ocr_typo", + "adjective_synonym_swap", + "adjective_antonym_swap" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 106, + 60, + 92, + 52, + 58, + 71, + 61, + 68, + 134, + 74, + 90 + ] + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Fail Count
Hub - huggingface
Model - Intel/neural-chat-7b-v3-1" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import plotly.express as px\n", + "\n", + "def plot_report(path: str, hub: str, model: str):\n", + " report = pd.read_csv(path)\n", + " report['pass_rate'] = report['pass_rate'].str.rstrip('%').astype(float)\n", + " report['minimum_pass_rate'] = report['minimum_pass_rate'].str.rstrip('%').astype(float)\n", + "\n", + " unique_categories = report[\"category\"].unique()\n", + "\n", + " category_data = report[report[\"category\"] == \"robustness\"]\n", + "\n", + " # Bar Plot: Pass Rate by Test Type for the Robustness Category\n", + " bar_fig = px.bar(category_data, x=\"test_type\", y=\"pass_rate\",\n", + " labels={\"pass_rate\": \"Pass Rate\", \"test_type\": \"Test Type\"},\n", + " title=f\"Pass Rate by Test Type
Hub - {hub}
Model - {model}\")\n", + "\n", + " # Add a horizontal line at the 75 percent threshold\n", + " bar_fig.add_shape(\n", + " type='line',\n", + " x0=-0.5,\n", + " x1=len(category_data[\"test_type\"]) - 0.5,\n", + " y0=75,\n", + " y1=75,\n", + " line=dict(color='red', width=2)\n", + " )\n", + "\n", + " bar_fig.update_xaxes(tickangle=45)\n", + " bar_fig.update_layout(width=1000, height=700)\n", + " bar_fig.show()\n", + "\n", + " # Pie Chart: Distribution of Fail Count for the Robustness Category\n", + " pie_fig = px.pie(category_data, names=\"test_type\", values=\"fail_count\",\n", + " title=f\"Distribution of Fail Count
Hub - {hub}
Model - {model}\")\n", + "\n", + " pie_fig.update_layout(\n", + " title=f\"Distribution of Fail Count
Hub - {hub}
Model - {model}\",\n", + " width=800,\n", + " height=600\n", + " )\n", + "\n", + " pie_fig.show()\n", + "\n", + "report_paths = [\n", + " (\"ai21/j2-jumbo-instruct-OpenBookQA-report.csv\", \"ai21\", \"j2-jumbo-instruct\"),\n", + " (\"ai21/j2-grande-instruct-OpenBookQA-report.csv\", \"ai21\", \"j2-grande-instruct\"),\n", + " (\"openai/gpt-3.5-turbo-instruct-OpenBookQA-report.csv\", \"openai\", \"gpt-3.5-turbo-instruct\"),\n", + " (\"openai/text-davinci-003-OpenBookQA-report.csv\", \"openai\", \"text-davinci-003\"),\n", + " (\"openai/gpt-4-1106-preview-OpenBookQA-report.csv\", \"openai\", \"gpt-4-1106-preview\"),\n", + " (\"mistralai/Mistral-7B-Instruct-v0.1-OpenBookQA-report.csv\", \"huggingface\", \"mistralai/Mistral-7B-Instruct-v0.1\"),\n", + " (\"HuggingFaceH4/zephyr-7b-beta-OpenBookQA-report.csv\", \"huggingface\", \"HuggingFaceH4/zephyr-7b-beta\"),\n", + " (\"Intel/neural-chat-7b-v3-1-OpenBookQA-report.csv\", \"huggingface\", \"Intel/neural-chat-7b-v3-1\")\n", + "]\n", + "\n", + "for path, hub, model in report_paths:\n", + " plot_report(path, hub, model)\n", + "\n", + " " + ] + }, + { + "attachments": { + "openbook.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACGQAAAyjCAYAAAABbDBpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAP+lSURBVHhe7N0FnBtF/8fxKU6R4lrc3R/c3aEt7u4ODxS3P+5OH6C4S3F3K66FIgWKO7RQpEj++U5m7vb2Zje7scvdfd6v17bJZpNLVkZ/O9OjUGQAAAAAAAAAAAAAAABQM2O4/wEAAAAAAAAAAAAAAFAjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAQCc1evRo8++//7pnAAAAAAAAAJpJj0KRewwAQN1899135qijjnLPWi288MJm9913d88AoLy33nrLXHjhhe5Zq9VXX9307dvXPUNWQ4cONccdd5x54403zPjjj2/69OljDjnkEDPOOOO4LdAs/v77b3PnnXeau+++2zzzzDPmm2++Mb/++qt9rVevXmaOOeYwyy+/vNl6663NoosuatcDQGf1+++/mwMOOMA9azXrrLOa//73v+5Z41EOAdBVDBw40LzwwgvuWasjjzzS9O7d2z0DAABAtQjIAAA0xIcffmg7iuI23HBDM2jQIPcMAMq75557zPrrr++etTrooIPMGWec4Z4hiw8++MAGxv32229uTcl6661nO/3RPJ577jmz2267mbffftutSdajRw/z2GOPmZVWWsmtAYDO5+effzaTTjqpe9ZqySWXNIMHD3bPGo9ySNf3+eef2xsKfvnlFzPWWGOZiSee2Mw000xmookmclsAXYOCeK+77jr3rNVrr71m6wiNogC8jz/+2IwcOdL8+eefZsIJJzRTTDGFmXHGGW25FgAAoLMjIAMAmshLL71kdthhB/csm3HHHdfeFTvNNNOYxRZbzKy88spNeVcsARlAuosuusgutaLG49dff90961roCKmdXXbZxVx22WXuWVsvv/yyzVfQ8dTxuMoqq9jG6izGG28825Gkxuw8ktKhzTbbLDjKFYBk5fL1jTbayJx44onuWX4ayej+++93z9pT2r7UUku5Z50TARloFI04deONN9pj++KLL9pO4RB1Dis/1vWr4NUxxxzTvYJGmn/++d2j7FQ2mmqqqczUU09tVlhhBXv8ppxySvdq99VRARnqjnj00UfNHXfcYR5++GEzbNiw4BR8PXv2NIsssog9XptvvrmZeeaZ3Su1MWrUKLPccsuZv/76y61pa4wxxjBPPPGEmWyyydya+lA7oNoDs1A9X3mjvpMWXQ/6DTpepEkAADQxBWQAAJrD448/riC5qpclllii8PTTT7tPbQ4ffPBB8LtuuOGGbgugezvmmGOC10ily5hjjuk+ueu5++67g7/5oIMOclsgqxVXXDG4L7XceOONbit0pNGjRxemn3764DFKWtZff3337nyS0qHddtvNbQEgq3L5+hRTTFH466+/3Nb5/PHHH4VevXoFP9cvDz/8sNu68/rpp5+Cv23JJZd0W3QMyiFdx3fffVfYddddC+OOO27wmKYtM888c+Gyyy4r/Pvvv+7T0Cih45F3GWOMMeyxVzrTnW211VbB/fPaa6+5LWrv9ttvL8w333zBv5u2qH672WabFT755BP3SdW77rrrgn8rugwYMMBtXT9pdbKsy4QTTljYaaedCkOHDnWfCgAAmskYxQwbANDFKLK+WKEzZ599tluDzmzEiBH2LsArrrjCHHzwwWafffZxrwDo7nQnmUYg0vQip556qtluu+3MU0895V4tT/PwJ5llllncI3SkW265xXzxxRfuWVu6C06jTy2xxBL2jk9v4403do8ANKvvv//ePPLII+5ZPhoZQ+VDAJXTaBhzzz23GTBggJ0iIa9PPvnE7LzzznbEDI1Khc5FZWgd+wUXXDCxnIXa+vXXX02/fv1Mnz59zJAhQ9za7P755x9z00032REhrrzySre2OhoZp5ws2zQD7d/LL7/czDPPPGbTTTc1P/74o3uludC+VX/K095880177h5zzDFmk002odwIAE2AgAwA6KLUwKBhc2+77Ta3Bp2NGhymn356M8kkk5ill17a7LTTTubMM880jz/+uNsCQHd2zjnnmAkmmMB2yG+wwQbmsMMOM1dffbX59ttv3RblHXjggWacccZxz1pp+qv//Oc/7hk6UlKaP+ecc9qGtvfff98Or/7111+bt956y+y99972fADQ/Crt5OksnUNAs1JHoKYd+eGHH9yaymk6g2WWWcZ89tlnbg06Ex03TYcxevRotwb1oOCAlVZaqSbtUwo80BQfJ598sltTGU2L9eCDD7pnyXSNq5zdWRQKBRvQramMNQVls6B9qzEUfKE2goUWWshsscUW5vjjjze33npr4rQ8AIDGISADALowVcQOOOAA88cff7g16Ex0/L788kv3DADa0t3V1abvusPsmWeeMWuttZaZZppp7IgZulPprrvuclugow0fPtw9auuMM84w8847r3tWouN5/vnnm8knn9ytQbO69tpr7d2dusMa6dQJ8n//93+2Q6SrlWk1d37eO/N/++03e2c/gMo8/PDDZtddd7Wdg7Wi0coUDKnrEx1HnbwaKTS+KMh40kkndVu19/rrr5urrrrKPUOt/f3333ZkjFdeecWtqY3DDz/cXH/99e5ZfgoOyRKIo5udbr75Zves81AdYoUVVjCvvfaa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HHFEYfLJJw9+TnQpVhAKxcpooVhhcO9O98EHHwQ/Z8MNN7Sv//rrr4W99967UKw4BbfTUqxAFQ499NDC77//bt+T5phjjgl+xi233OK2SLbkkksG36v9k6ZYYS2svfbahR49egTfH12KFbfCPffc497Z6qCDDgpun3U5++yz3Se12mqrrdptN+6447pXC4W33367sMQSS7TbJrrMOeechYcffti9I7ti5bWwzTbbFMYZZ5zg50aXxRdfvHDHHXe4d5ZXi/0d99dffxXOOeecwpRTThn8nOii83GvvfYqfP/99+7d1Uk6Z3fbbTe3ReXuv//+4Gdrv+Sx5ZZbBj9n0KBBbou2dM3oms2yP8cee+zCFltsUfj666/du5Pdfffdwc/Q9ZMm9J755pvPvZosaf/tt99+botkuga038Ybb7zgZ0SXSSaZxKbBo0ePdu9u65dffgm+L+vSq1cv90mtyqXNWTzyyCOFlVdeOfg58WWFFVaw+zOrjky/sqpH3rnmmmsG35910blSiXqmQ3E6JiuuuGKmNHzWWWctXHPNNe6d6TrqnNG1tO6666aWY7RMO+209vtE12288cbuU9rS/olu55fvvvvObRGmclLofQsttJDbItnff/9duPjiiwtzzz138DPiy7LLLlt46aWX3Luz+eeffwrnnntuYbrppgt+pl90bsw000xt1invfe6559wnpdMxXGmlldq8P7To7+gYvPbaa+6dtZF0PYWW66+/3r0r3ZVXXhl8f2jJcw4rr9p2220zlddmn332wkUXXWTLTHl99dVXhe222y71OtF3OO6442xeqPQ1tI3K6lnVoyxaaTlElP6r/JilXDDVVFPZcmlSuaAa9ci7vKSyxcknn2xfVxqg62PCCScMbqdlrLHGsnnPqFGj7Htq4YQTTgj+LZ2PlVz/u+yyS/DzlMYn7aty5S5dV0ceeaRN60LbadG5c+CBB1a0b+pVN5t++unbvV9lGe+2224r9O7du9020WW11VYrDBs2zL0jXej9WpTGZKFyRfy9StvyqGf5N67RZW0tSdfE0KFDCxNNNFG77VWXe/HFF91WJTpHJ5544nbbaunbt6/bKrsPP/wwMe08+OCD3VbZqPwS/wxdFz///HPhlVdeafealizlqEollfluuOEGt0U2t956a/BztGQpz9e6HFiP9i2vlvXskHvvvde2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HX300ebjjz92z+qnmfKuww47zD0K+89//uMetVVN3i2///67e9RWz5493aPK6FpOkvQ3k1RTJx48eHC7OnEzXA/KVyaccEL3rL1ZZ53Vpj1x1R7vrLSP9ttvP7s/HnvsMbe2vUaWf5ulrC0nnXSSuffee92zVssuu6w5/fTT3bOwtPO/XtdduWvujTfeMO+++6571mr55Zc3U089tXvWaumllzbTTz+9e9bqs88+s/lbM0u67tKurXqWA2upnvXsUH6tdO+cc84JlmeySrqud9llF/coWaicOmrUKPPhhx+6ZwCAzoKADADoYlRhLFdRlw8++MCMHDnSPWul9y+yyCLuWTJV9meffXb3rNWff/5p3nrrLfesPDX0qFGonDXXXDNY2dJv+Prrr92zxlPlPeT66683vXv3Nptvvrm5+OKLbYezGkObyRprrOEeJUsK6tFxjlMDf4jOJx2jtEUBAWqcj/v+++/do5J67e/Q5/7yyy/23FTnoRqr77777mCjZmez7bbbukdtaR+GqHMo1PhQriNFDW3jjTeee9bW6NGjbTDVwQcfbBt8mjHwoBbSguKUdqmBc4sttjA77LCDW9v81HAdsv7667tH6dZbbz33qK2kz01S6/Qrq2bJOzu7UOeL9+WXX5qrr77aLLPMMmbgwIFubfXqcc4o34kbPny4+euvv9yzttTIHaKG5Wagzr5JJ53UPWtLHX3qxDjzzDPNAgsskPt8De0rSWtMDu2vpH2VVAaZb775guWO6JKUV8XLILWm9D/umWeeMV988YV7VqKOn+eee849K5l55pnNUkst5Z7lk5TeKmipXPCKJKXj6hyJdwiHOr5E1+MYY5RvjsobkNGIsmgl1Nkb6ux78803bb6w+uqrm1NPPdUGOKiTpdaaJe9S+rL44ou7Z2H1yLtFwUQh1ZZB0zqAk/5mSC3qxAqijmqG66HSvFd1hUZS2UP7NqmTuZHl32Ypa59xxhnmmGOOcc9aKS27+eabzVhjjeXWhI0zzjjuUXv1uu7KBXokBT327dvXPWpL5aKkfCjps5pFUrBcWoBUPcuBtVavenZSe9MBBxxgZpllFrPnnnua6667zgwbNsy9kk0oPVaZS+W5UBocXZKCl+tdTgUA1B4BGQDQxZx77rn2joWff/7ZrQlLagBX5SorNXKHqNEvqwUXXDBTg6way3UHTYga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a0PnTDNTI3z8rkJdIwpC0/U59dRT26XSY1tJWeb9998PjlSUJnRs0o6L8ro8gWqeOkPjZVJdE9NOO60dXWG66aZL/M3lqAM09J11jLKMiqUgTpVBFEDw1FNPubWNs/nmm7tHyZT31WLOdo3+FboDW+mXyuRpFHiZFOy6wQYbuEetFGwy7rjjumetFLx53HHHuWdht9xyS2KekaRRZdFKyiG6E1/5h87VcoFCs846a3DUoErKCh55V2mEAAW8hNx333024CnLndQq86ijOmm/HXTQQe5RPkceeWRqh5mCmPLUiRt1PXRGqu8ooCBEN3zER2VqZPm32craGtVq1VVXdc9aaR/qmlEAahqlMaH8WTcy6LdmyaOVtipo6rrrrnNr2tL5r/wmREFnoY51pQcabSbrovxPZZU4pRmVlIlqScdCI9EtscQSZvjw4W5tW0qzFl98cfesrUaVA6tt32pUPVvXkUZF1fn566+/urVhWdublF+GKLCvXNCbvoOuNZUVVYZIOsZeR7QRAAAyKmaiAIAmoTnKlTTHl2Jl0W2RTvNNh96fNM/8m2++Gdxey1prrRWcg/Wbb74pFCvzwfdoef75592WbSXNl+uXYuXRbhOnuUWXSpgXXEuxgu22bOvee+8Nbj/mmGMWbr75ZrdVK80Jueaaawbf45effvrJbd3qiy++KMwyyywt2xQrP4XLL7/czm8Zcvjhh7f5TL/873//c1u0Ne+88wa311zHf/75p9uqNF/86aef7p611cj59PUdQtsXK8l2zvJiZdJt2eqPP/6wc2cXK+ht3qN5VONzv9drf//f//1fm9eLFd3Cp59+6l5t68svv7Rz1Ea31zL99NO7LSqTNNf81ltvbedDrWTRPP1pRo0aZeeSDf3d+KL54kPXQJT2Wei92jehY6+5hzfYYIPge3Q+jBw50m3Z1pNPPhl8j9KKNEpnQu9beeWVC99//73bqtVNN91UGH/88YPv0bLffvu5LVtdffXVwW032mgjt0Vb+ruheW216PumUVoWet+EE05YePnll91Wpfn+r7nmGjtPfVwl87z37ds3+B7tK81BHKI55ieYYILg+5T2Jmlk+pVVI/NOOfvss4PvScrbq1HrdOiXX35xn1wo7LjjjsHPPuecc9wWbT333HOJc/Mfcsghbqv2GnnOHHTQQe221dz+H374oduiOvqd8c/Xojmn33rrLbdVq9dff71NHhlfFlpoIbdlW5rrOrR90j5Lyuu1qPwVovQ8tP2RRx4ZnM+8Euuuu27wb0w88cQ2DQzNd//dd98VNt988zbbq8yic2HEiBFuq8okXU+hNGLIkCHBbaOL8qqQI444Irj9ww8/7LZo7/zzzw++R8uhhx5qy2ZxOr/mnHPO4HsmnXRSW6YIScoztBx77LGF0aNHuy1bXXvttbbcEXqPliWXXNJt2V69y6KStxzy119/tTk/9XeUfvz2229ui7ZUv4l+rl+UvlWqGep9Webs1/cIvVfHohaUPqedW0pflS999NFH7h0lOoY67jvttFO78yS69OnTx70jLEudOJSHqE68zDLLBN+j5cEHH3RbttWI60FU1o9uq0X1tCzU1hF/r5Y0oe21hM7jKOUDzzzzjP0tofdr2WOPPdzWbTWy/NtsZe2vv/66MM000wS369evn9sq2c477xx8r1823XRTew7H8x7V/S+99NLCbLPNFnyfFl3PSeelbLPNNsH3qZ0grx122CH4WarPVivpnDzvvPPs9R9d3n333cKzzz5rz4W99tqrMOOMMwbf6xddi2n7qBHlQK+a9q1G1LMfe+yxwrjjjtuyndIn7esQ5QsrrLBCm8/1S7xtU+0yU0wxRXBb/Y3Bgwe7LdtS+TDezqvrXPlUqFwre+65Z5vt/bLwwgvba9lTOfeMM84ItoMAAOqDgAwAaCLVBmQcf/zxwfevssoqbov2kirgWlThV+Ph/vvvXzjggANsg1zPnj2D22rZeOON3ae2V67xSYs6XtZYYw3797SocXCcccYJbqtlgQUWSKyEqFKR1li2/PLLF/bZZx/biL3JJpvYDszQdtEl3hn9ww8/FOabb77gtjPPPLPtSLniiisKd955pw0A0P4JbasGsXijn5fWeDH11FPbxvn555+/MNZYY9l177zzjntnq0Z2TqlRL61BYJJJJrH74cADD7THWA04k002WXBbLdp3Xr329yWXXBLcTufjeuutZyu7t956a+HGG2+0HQehBkctakSoRlLHTTXLHXfc4T49WVLDUnxRQ1k5apRIupZ0basD0V+zr776qr3GQ9v6Zemll7ZBD2eeeaZ9j6eGqND2WlZbbTV7bp1yyilu61b77rtv8D1a1ECy5ZZb2jRB2yUFuEWXUECGGlNC22pROqqAHlEH1D333JPYueUX7Xddh/fff799X5Q6vEPv0aLgs0UWWcQ2Ek055ZR2XegYVtJpooahpI5yLfpNSrv++9//FnbZZZfC3HPPHdxOi76nzoUkjUy/8mhU3inNEJBR6RJtSNU1GdpGjYpqbPcBWD///LP9bWnBYtqfamxUI7uug6hGnjOHHXZYcHuVP9S4rcZeXYNK63SclcbsvvvuhaOPPtrmKZ9//rn7pLDbb789+PladA3qOtV1pvxv1VVXTS33aEkKyEhKi2effXbbQfKnayBX0J3yb+Wjoe21qAyg817XfpQaopPep7KB0lx1Nup3KO9VerX99tvbTmtdA2oMVx6TRmmJ0pTQ39CiRnmdM9pf6nBT8GVSOVPnpU+vK5UnIEPK5TtJwbuVBGToeOj4ht6nRfnGFltsYfeVOnuWW2651PPr3HPPdZ/cXlLwgl+mnXZae1x0Lu+6666JnbPRJS0go55lUS9POURBw7r2Q9uqk0zBakrzBg0aZDubtL+T8oyBAwfaz6xUR9f7miEgQy666KLg34gvKtOqjqFz1Ne10hYFc5RLN7LWidWBruOgsqYep9WJlXYk1YkbcT1IswRk6LNUXwwtSvOSAhb8on2fFFTZyPJvM5a11VGdlA+oHJdGZby0PMcv+q5TTTWVLUMpmDK0TXRRuUL1/yTK65LKk6+88orbKjvV3UKfpevzpzI3LpSTFiRUzaJ9dNddd7m/EtaIcqBXTftWvevZL730UuL58p///MfexHPdddfZ8rnaiBZbbLHgtso3QjcMKbgmtL1fVHfX99F1rbJB2o1piy66aOJNSQpqDb1Hi/K1ZZdd1tZRfHqoPBEA0BgEZABAE6k2IEOVldD7VbHVHU4hujMwKWo8z6JGmLQGqCyNT3kWVQLTGpplnXXWCb43bVEDtCpbodfilew33nijTfR8pUtag+YTTzwRfE/SojtN4xrdofnII49karQst8TvMKvX/o7fGVvJosapLPszTUcFZCSlO/Gl3N0uXtJd8H7RMYwfRzW8RZ/HF3VoxiUFxvhFjdNxL774YnDbcos6B0PrQwEZUq7BUY0f8U7DcvtAHbghK620UnD70KLOluiIBVJpp0nanVF5FgUSpml0+pVVo/JO6SoBGcOHDy8bMKBG0Ggjrzoj1FkU3Sa+qIMgqpHnTLmO5nKL9ofKKrrTMUQdCaERmcotiy++eDBNSQrISLrj0C/6nvFgOx2XtM4ivSceQKFG9tC2WRd1dipAL6njUY477rjge/MuajSvVt6AjJNPPjm4vRbt6x9//NFt2VYlARmiu8TTOnmzLquvvnrqMRGVvULvLbcklfvSAjKkXmXRqKzlEHWIp93dnXXR30saUSOrjq73NUtAhqhTMfR3Kl0UfKDOvHLqUSeO54NxHXU9dERARrWL8pA0jSr/SjOWtZPyWNUxFESSRoEu6nAPvb+SRef+hRde6D49TDdVhN6r0cQqocAEndehz9SondWoR0CG6pxJI6pENaocKNW2b9Wznp10o07eJSlIVWUlBW2G3pNnUdktLb9RAFSWgCa/KOgWANAYBGQAQBOpNiBD5plnnuBnpEU9K5CjXKNi2qLhK9VZniap8Umjdxx88MHB19KWUOBBnCopeRufNAVAaAhyLfGADFGEfFpFtNwyxxxz2OlS0pQbRSC6qME3riM6NDU0eDX7RRH7oaHC67G/dTd22hDAWRZ1mFarowIydGeF7uIIvd8vajzLOqT80KFDy959Fl3UQKIOAt25FnpdS+i8PuGEE4Lb+kWNRCHqDAhtn7ToThWNzhJ6LSkgI+2ulNCihhnd5Z92bmuI7BB1qMUbndIWXZtR1XSaVNuZobuAy2nWgAxpRN4pXSUgQ9Luigstus6TpubxS/ycbvQ5ozvyQu/Js6gjI+lvJB3/pEUNsOr0CN21lxSQocAP3Y0Y3z5pUSeIglGShkT2S3z0Eg2XXa5RPMuiILm00TI0+kXofVkXnQe1kDcgI23UBY1WkKTSgAzREPfVBGVoJCuVo8pRPp83KEHnyttvvx18rVxAhtSrLOrlKYdouhCNshDaLsuiNELTONVCR9b7mikgQxQElacMlbQoyEXHOIukfaP6vs650Gtpi87DLOp9PXSFgAzlaVk0ovzrNVtZWx3KCsILba/RS1WeSKN8rtxoUFmWGWaYwQYalaMRX0LvV/tTpZL2l/ZLNWodkKG6tfLQLBpVDvSqad+qdz1b10xom6yLAtfSglR/+umn1JEvyi0KdInXfULSgnzji46nAucBAPVHQAYANJFaBGQcddRRwc/QXdRpNGx2noqRX1TByVJ4T2uYU4ewhqUOvR5fVAHRtBFZKcpd7wl9VnxRpUXyBGTI008/nasC6xeNxJE0VUmUAgg032PoM0JL/O6UjurQVCVdARCh96ctajjxQ9eH1GN/qxFCDV55Gyo1Z63m3ayFjgrIkKR0wy/aN3nobqQso5noThs/57WGCk0KoFJHRJzmGE4azcYvofNInUJZryfdgaOhWTWqROj1pIAMSUpH4ov+hk9DkzrVtGho/STqmM/aoaApmqKq6TQR3Q2WdKdY0qJRELIGEzRzQIbUO++UrhSQobu7NWVYaNv4oqHz1emuYLCk+Zm1aJ77qI44Z7Je72mLpk0KdXapjJQ0/3l8UTCc76DIE5Ah7733nh2BIv6e+KJGWw3ZLEofk+aU1/LCCy/Y7aJ0zeS5ay9p8d8hicp/ef+O0tETTzwxcQjovPIGZIgCHELvSbvDtZqADNF0MEkdokmLytZ77713rhEbPvnkk8z5rwJBFYCgsnfo9SwBGVKvsqjkLYfoekkacStt0XX50EMPuU+pjY6s95XTyIAMUQB/ueOYtKisq7JgfPSxNGn7RgHAWTurVWY+7bTT3KdmU8/roTMHZGh6DAWn5VHv8m9Us5W1NfJqUoCZAiLL+fPPP217TnzEhSyL0kPl01kCAXVdqg4Z+pznn3/ebZVf0nRyKkMkjUqbRa0CMpQ/qi5ebuSquEaVA6Xa9q1617M1RZzK5aFt05att966bFCSaBtNn5y1ndIvmk5KU7Fkkaf+oKXcaDMAgNogIAMAmkgtAjJ0x1LoM1TY//rrr91WydR4qwahpMqrFnVCq0HRz7WYRZaGOc2nrjsrQtup0UmdM5pyIC/t12VSRkBQ43d0Ooa8ARmiDqObbrrJfkftn9D7teg46Luokpenkjxq1Cg7Ksikk04a/Fwt+h133323e0erjuzQVGO15nXVMIhpo5XoNd1VkvWcqtf+HjZsWKF///62YS70eX7RXZuamkPb10pHBmQkXZ9+ef31192W2b311luFNdZYIxgooOOi+bDjd+3o+KsRKbqt7tzVkP6hu6E1DLjuYkkK/tBoHSFqVD7ssMMSO+t0V6sa2P01X0lAhqjBLqlhXR2nuhsnnq5oPtr4iCX6PuVGBXrqqadSG/L8b1Jjf1S1ARmiIBcNYVyukV+NYhoSNk9jZbMHZHj1yjulKwVkiNJvNeQmNfpq/UknndQmzdY1u++++7brkNBdybfddpvbqqRR54x+hzr9NYqOGqdD78u76PoPUaPqgAED7BDbofcpmFB35EXn2c4bkCFKH5S3JXWS6P3xfEXprP52NI/X/tDc1tE0WA392267be5OpaRFU7mUy9eVNunu8aTR4/yijis1WidNHVOpSgIyQvOL9+zZ0+Z3SaoNyBB1kKnTT2XJtA4C7XeNdJP1rts4lQsVyJo0bYbyxh122KGlzqI8MrRd1oAMqVdZVCoph2hkK11n6lgJvccvmvteeX+5jvBqdGS9L0mjAzI8DaOvc6/clApK35S+Km3JUreOK7dvdL7quCd1BupcU3Bt1hE54up1PXSWgAzlb71797a/XyNc6ffl7bj26ln+jWu2srbKRUnB4IMHD3ZbpdM0XMoPNFpAWmC5bsQ49NBD7bEaPXq0e3d5GkUg9Hk6V6sJvFQgYtJokBdccIHbKr88ARnaX8qPdT4oP1SeMnDgQDtCWjXqWQ6Mq6Z9S+pdz1bQj6Ye0ehAaeUildE0ilm5qaNCVG5XEFO5EbQ0IozaLuL1+CyU3qelG2r3Ul0zbeQ5AEDt9NA/xQQYAIA2/vjjD/PWW2+ZDz74wIwYMcKu69WrlylW8s0CCyxgxh9/fLuuHt577z3z7rvvmq+//toUK5tmxhlnNMWKkJlsssncFpX56quvzIsvvmi+++47U6yEm+mmm87MPffc9jfV0t9//22GDBliihViU6zI2X1ZrDCbqaaayhQrjWaKKaZwW+b3zz//mFdffdW8//779rPHG288M80005jFF1/cTD311G6r5jRy5Ejz9ttvm48++sg+loknntgUK8V2v+hxJeq1v3WevP766+bbb7+118C4445rP7N3795moYUWMsWKudsSabT/XnnlFXv96bqbfvrp7f7T9ZdEx/DLL7+06YzO63L7WufT888/bz777DN7PuiY62/MMcccboswbfvyyy+bYcOG2WM86aST2uOr66mWaZyuV5+m9ezZ0+4DpWkTTTSR26I9fR/tO53LedI+veeFF14w33zzjRk9erSZZJJJzFxzzWWvhbHHHtttVT+ffvqpvc51vH/77Tf7e5VGzT///GammWZyW3VdHZl3djZKD5Q2fPzxx+aHH36w57ny+//85z827w9R1VVps675aaed1kwwwQTulcb666+/zHrrrWceeught6ZkkUUWMYccckhL2vPrr7+aX375xf6vRb9T58dtt91m/vzzT7tN1AYbbGDuvPNO9yxMaYk+48cff7RlAKUnCy+8sJlyyindFtX7/fffzeDBg80XX3xhv7eu4TnnnNPMO++8bov2lJ7qulc5Ren7OOOM414x5oEHHjB9+vSxn+spPTrggAPMmmuuadO5UaNGtdlXevz555+bu+++27zzzjvuXW2pPKR9noW+m9Im/5v09336qN8V/b7dnc6tN9980wwfPrxlX+n6nGeeeWy5Oen6zEPXsspu/lxWOunz3wknnNBtVXv1KotWWg5R+UPnt/aB9rX+vq5lvW+22WZzW9UfeVcrnZsqy+i4qEyl4zLWWGPZY6NyzHzzzWf3TaVUXwmdFxtuuKEZNGiQe1aq87300kvmk08+sXmHjsGss85qFltssdTyYx71uh66o0aWf7tiWVu/47rrrjO77rqrW9PqqKOOMscff7x7hkaodTkwTbXtW42oZ6uMqnYhlUv1HUV5tb7foosuWpM8Uvmvfoe+l/a/PlN/Q/tceXGPHj3clpXRfnrjjTdsfqLP0m/PUk4BANQWARkAAAAAAGR0yimnmP79+7tnJeqAVUdblo66e+65x6y//vruWSt1tClIrCtRQ74699QAHPV///d/5vDDD3fPkqmBf7nllrOBZnEK1lBgDAB0FlkDMoDuRvm9gm2///57t6ZEncdHH320LTMQPAkAADozbu0EAAAAACCjm266yT1qpZEast41vdZaawXvdNNdgl3No48+2i4YQ1ZaaSX3KJ3uTF999dXds7a64v4CAKA7Un5/4IEHumetdB/pcccdZ0dN2HLLLc2RRx5pTj75ZHPQQQeZVVdd1Y4WAgAA0BkQkAEAAAAAQEYaTjhO061lDRDQVA2hgSq74rQ+oX0l2gdZJXW2dIdpkAAA6C72339/OzVWyE8//WRuuOGGlhG2zjrrLPPYY4/ZqTUAAAA6AwIyAAAAAADISHdpxmlO9+2339788ssvbk2Y5ofefPPN3bO2dKdnVxPaV3LYYYfZjpQ0f/31lznxxBODw/hPNdVUZoEFFnDPAABAZzf++OPbPF/TwGX15ptvukcAAADNrUchdGsOAAAAAABo56ijjrKBAiGatmTNNde0wQIKGtAQ3L///rv57LPPzIsvvmiefPJJ8++//7qtW00++eTmww8/NJNMMolb0zWMHDnSTDfddGbUqFFuTVuLLrqoWWGFFcwss8xiJpxwQjuHvO6CHTp0qHnooYfM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6iqz7bbburVAc5p++unNl19+aYYOHWrmmmsutxadSf/+/c0pp5xi/z/ppJPcWgCdwcCBA82OO+5o+vXrZ2655Ra3FjDmtNNOM4ceeqjZY489zEUXXeTWAmhWutGqV69e9nE37toEmlrfvn1tnzsjZLTFbYsAAAAAAAAAAAAAAAA1RkAGAAAAAAAAAAAAAABAjRGQAQAAAAAAAAAAAAAAUGMEZAAAAAAAAAAAAAAAANQYARkAAAAAAAAAAAAAAAA1RkAGAAAAAAAAAAAAAABAjRGQAQAAAAAAAAAAAAAAUGMEZAAAAAAAAAAAAAAAANQYARkAAAAAAAAAAAAAAAA1RkAGAAAAAAAAAAAAAABAjRGQAQAAAAAAAAAAAAAAUGMEZAAAAAAAAAAAAAAAANQYARkAAAAAAAAAAAAAAAA1RkAGAAAAAAAAAAAAAABAjRGQAQAAAAAAAAAAAAAAUGMEZAAAAAAAAAAAAAAAANQYARkAAAAAAAAAAAAAAAA1RkAGUGd//fWXOeOMM+zy7rvvurXZvf766/a9Z511llsDoCvg2u6cCoWCufjii82ZZ55p/vzzT7c2Hce69j766KOWvPXXX391a5Nde+21dtuHHnrIrUHck08+affR5Zdf7tbU1g8//NByzL744gu3trYquT67inofP5Tk2c/V1gHKUXqmz1b6Vo7SSf9dlH42m59++smceOKJ5sYbb3Rrauedd94xRx11lHn++efdmu6hWfLJu+++237uLbfc4tYgj2ZKczqDPOkiUE/UVZAklK7XsxyUVTN8B6DZhNLyZmhz6M7tHkCnV7yAu60PP/ywoF2w8cYbuzXoas4777zCmmuuaZc999zTrW1vt912a9nummuucWtr45dffrHnmZZKPvv888+37x1zzDHdGnRHjz/+uD0PFltsMbcGzej666+3x2ndddd1a5JxbXeM559/3u73+eabz63J584777Tv13LSSSe5tem627H2+2fUqFFuTe3dfffdLX/ns88+c2uTKe3UtjvttJNb0zUdd9xx9ncecMABbk12Bx10kH3vbLPN5tbU1ltvvdVyzJ5++mm3trYquT67inofv2a10UYb2d991VVXuTX1lWc/V1sHKEfpmT47S9lQ6aT/Lko/m43SLP/9nnvuObe2NhZZZBH7uRNMMEFh9OjRbm3HmG666ex3GTp0qFtTP82ST/bt29d+7qqrrurWdG6HHXaY/T39+/d3a+qrmdKcziBPuoju54orrrDnR79+/dya+qGu0rmceuqpdv/vsccebk39hNL1epaDsmqG7wBkNWLEiJbztZ5CaXkztDl053YPdB59+vSx5+gdd9zh1kAYIQNd2pAhQ8yDDz5oF0UOfv755+6VVsOHDzeXXnppy3YffvihewUA0F0dfPDBZp111ml3R2fv3r3NmGOOaR/POuus9n95/PHHzXbbbWffg64j6TxAc0q6PgE0t5lnntn+P8EEE5hpppnGPs7jf//7n9lkk01M//793ZpW/rNnmmkmM/bYY9vHAJBFWtpSa40sc1bzt9R+tueee5qVVlrJfPzxx24tUEKduDLVloOySjs+jfoOQGfXqDaHtPy2q7d7kJegKyMgA91GoVAwN910k3vWiuHYAABxGvrv/vvvt9MsRC266KLmgw8+sENBb7bZZm5taejRq6++2rz66qtuDbqCpPMAzSnp+gTQ3Pbdd1+bfyowfpZZZnFrs7vuuuvMrbfeGuwcVF1v8ODB5oUXXnBr0N0svvjiNk/4559/3Bogm7S0pdYaWeas5m9pX+hmJ9V9GCYdcdSJK1NtOSirtOPTqO8AdHaNanNIy2+7ersHeQm6MgIy0K2Egi9CQRpR//77r7n++uvNFltsYaMS+/btay655BLz+++/uy1ajR492px//vlmvfXWM6ussoo59thjzahRo9yr7Y0YMcKcddZZZsMNNzQrrrii2Wabbcy9997rXk33yy+/mNNOO82su+669r1bbbWVuf32292r6K40r93uu+9uBg4c6NaU6JzVep2fnuYp1bqTTz7Z/Pjjj+aQQw6x5+3GG29sz/mon3/+2W6r5a233jL33HOPvRa0/f77728+/fRTt2UrXTs33HCD2Xzzze05qs/V99D8xl70c1XYVIFryy23tHN9e/ocXaf+GuzTp4/9Hb/99pvbouSVV16x32X11Ve32+22227mjTfecK+W6LPUsKY7nVZYYQWz0UYb2c/6448/3BYl1VybtaD9or+v77fyyiubbbfd1tx1113u1ZLjjjvO7rdnn33WrTG2sKp1Bx10kFtTomOs9dHOiCzH58UXX7Tv22effew+OuGEE+z20fNj5MiR5pxzzmn5rltvvbW57bbb3Kut9P132GEHe2x0jA4//HDz7bffuldLsqZr9Tw+apzceeed3bPSdaLnWtRoqWNz6qmn2t+sa0H22GOPluOj/eG3j1+HIXl+y3PPPWfPa1132ke6TuIjP2W5DuTpp582O+64o91mrbXWMkceeaT56quv3KslWc6RamQ5J+Sbb76xr2kb/e5y+/Xuu++2lVJ9rs7fTz75xL2SXdp58Pbbb9vP1aL9HaXgT+1/vabPkDxprafjo2O36qqr2t+s6/3LL790r1ZP58Suu+5qr1ntq6eeesq90kp3Jeh76/zWtRmlfer3wbBhw1rWKe1ZbbXV7PfW3Rwvv/yyfa2ccueaGhr839P+97SPtU4NiCqDha5PL+v5lkTfT38rev5pHln/vb744gu31tg0UOuuueYat6b0G7OUJ7Oku1mOX1Zpx03nt75L/M7g448/3q7XOeJpf2tdNP/WPtH3V7l4+eWXt981npdVUr6oVtZzIc9+zlsHKCdrWu7p+x944IH2u+r6KRdwrrxV2+m76n2fffaZe6XEp1v6TToG++23ny2fRdM8zal82GGH2TxEn7P33nu3uT4vuugi+xknnXSSW9NKjWx6ba+99rL7Tue9RizUfos2OOr60HXSr18/W25bf/31zbnnntuSNug7KF1+77337POXXnqpJa1Wnik333yzvW6jZWAvS1obPUe1L+677z77fXRstF++/vprt2XtNXM+KVnL1SHljq1Usu+ff/55s9NOO9nfps9U+qbzVueVv5OwkfXoLL/T66g0J8txPProo+1xUP6m69yXIVVH0T4PeeaZZ+zv0fdTOqHv+N1337lXW2UtC+t7ZqkTevrcI444wl7f+m3Kx7PKkraIztFydbZyytU9vHL76c4777THSOlqtGyh803rfRBGlr+VROWr008/3T0zNs/Xe5UXKM/312uW8nEl51S9y8dxzZ4GS9bypVeuPpkl/0+SVifOU6+opGyYdz9Uq9ZlyaRykJQrb3nl0shybRbx76D97I/Dm2++abeJUp1Wrw0aNMitqV07TVpbRaXnUtZyRNZ03adhjzzyiB2dW2UPbb/99tvbPMPTPtV2Sq/iHnroIfua6rIKGo1+X42OcNVVV9kRAlRP+7//+z9bdtDxPOaYY+w6ned58jYvbf9WW+fNUofx9V0t+j3nnXeeWXPNNe13OeWUUxLz9UrVOi3XcUpqc6hVmSYtv5X4d6jketV3SGuDySprWTfrNVMurfJqXY9TnUHbha6pCy64wL6m3yU+r1R9V5+r76HjqPzSt6Xo+2nf6vvpGs9bZyxXX9Hv1XeotE8gy3VRSVkNGWjeku7qww8/tPPYFBMctwZdTTFBtMd4xhlnLPTo0cM+1nH33n//fbtu8sknL0w00UT2cbFg414tFP744w87363Wx5cFFlig8N1337ktC4Vi4alQTMDabbfooou2PI7O5VosVBdmmWWWNtv6pZjRuq0KhWKGbNeNOeaYbk3pe+nvx9+npVhIc1uhKylWOuzxLTcf7rLLLmu3K2bUbk1JsTBo1xcLuW5N6xy7s846a2G++eazj6PLwQcf7LZsO/d4sXDVZjstU001lT2nvWIFLng9aCkWuArFgpndLvq5xYy95fHyyy9vXx89enShWChvWR9dtC90LYi+q7/Go4vmC49+r1122aXdNlr0Xb2s12bI9ddfb7crFpjcmmSha1uURs0888xt/q5fioW7QrHQbLfTY60rFiLtcylWfFq2fffdd+06pU0TTjihXVesCNl1WY+P0iytG2eccew55bfx++Hjjz+2c5/69dFl7733ttsUKySJ6eiCCy7YMp971nStmuMjxUKj3VbnfEixoNruc/2i3xs9Z+928/CPO+64bbbzy3bbbWdfTzrWeX7L8ccfHzzHp5hiipZjnfU6KFYe2m2jRZ+l4yVZz5EQv92oUaPcmraynhNSrPAXZphhhnbbRfNWP5ennHDCCW2206I5+6eZZhr7OOu8zGnnQfS4FSuP7h0lTz31VMt2/nrLk9bKEUcc0W4bLZNNNlnZ+XyLlTK7reYATvLwww+3O2fHGmssu+/12M9nrN/pz6crr7zSrvN0Pmq90n6dC++8805h4oknbvk8v4wxxhiFZ555xr7nrbfeallfrJzadZLlXFM6ttBCC9l1a6+9tn2f0gyV77TOpzeh6zPP+ZZmwIAB9j36Ht6gQYNaPuviiy92awst+Vaxwm6f5ylPlkt3sx6/LModN19O1nnw448/2vf88MMPNi3T+s0228yuk1NOOcWu8/Wqm2++udCzZ8+Wz4wuN910k91G8pYv4jbaaCO73VVXXeXWJMtzLuTZz3nrAOVkTct92tK7d2+bvsS3P+yww9yWbffziiuu2GY7LVNPPXVh+PDhbuvWz1a5cs4552zZ7tFHH7Wv33PPPfb7+PV+0Xl733332W0uuugiu07n01dffWXXeeutt559TcdD/Hmv5ZdffrHrhgwZUphpppla1keXPdwc7z5PDy0DBw602/jfEi9DZ01ro/tuzz33bLOtFn1HXx4tR/mR3jN06FC3Jqwz5JOSpVzdt29fu84fa8lybCXvvle646+d8cYbr+Xx3HPPXfj111/tNlnLm0l0XWnb/v37uzXJsv5O6cg0J8tx9OX9VVZZpd21r++p/DDq6KOPbrONX3Suffrpp26r7GVhnfNZ6oTRMpcvN0SXSy+91G5XTpa0JWudrZxydQ/Jsp90vYw//vh23amnnmrXvf322zYN1rpbb701099Ko7aE0Ht1nuv35ikf5z2nqikfe1dccYV9T79+/dyasM6SBucpX0qW+mS5/D9NWp04T70imvZnKRvm3Q8huma0fTxtjqtXWTJUDpIs5S3JkkamHR+Jf4e///67pdyiPDjq5ZdfbtnW1+uypufllGurqPRcylKOyJOu+zRs2223bWlv84uOs+q+ojxD6/Sd4+ms0j+95utP0e/ry0/RRX0ca6yxRrv11113nX1/FuX2bzV13qx1mOi5FrrGl156aXv80ui7+u2T1Cstjx4n3+YgWa+BLNdrWn4r8e+Q93qtpr0vKk9ZN+s1Uy6tknrU4/T5WqdjGPXbb7+1fF9/rvu8cvHFF2/3+9UGouvet5n4ZZ555rHHKQt9p3L1lUr7BPJcF3nLanF9+vSx295xxx1uDYSAjOJJQUBG1+UDMtQ5usIKK9jHJ554onu1teNCDfk+AY0GZEQTeG2jBESNCyr8al20IVoFQb+tOgtuueWWwllnndWmoTvaMKIOZ61TQv/II48UPvjgg5aEU5VmX1ALdeTddtttdp2CSB577LHCm2++WTjttNNsxq2GcnQ99QzI0KKCgc5PncdzzDGHXafz0DcYRwsxKmAfeOCB9nrYZ599Wgrc0b+pwqbWqSClTpJhw4bZz/YFkquvvtpuF/1cLcsss4wtTFxyySX2dV2P/jUV5u68807bkKTPVYFCBUtRJq/r8thjjy289NJLdn9NO+209n26ZkUVcf9dL7zwQtsRdcMNN9jf7j9Hsl6bIbUIyPDHUL9P1/Xtt99e2Gabbew6Lb4C5Ds6llpqKftc5pprrpbtzjzzTLtO6YOe9+rVyxbEJOvxiVaUtO9UKVQhVo1q4jt1VOBUI8Zdd93V0qirgps65FWZV/qq43H55ZcXXnvttTaVQKVhkjVdq+b4SLmADHVA6tzWNlp23313+1yLfk+o8qXfrfxA6yaZZJKW7V955RX7etKxzvpbtD+0Tstqq61m8xftSx9s6M+JLNeB+IL9DjvsYAvpaizSeRdtpM56joTodS1JARlZzwlRg67W6Xfuu+++dr9qH/lrWYuOiahcp0qB1ikd0/fW94xeF1kbOcudB778oDz+999/d+8q2HRK61Vx9/KktToWflul1+pc0vH1jbQ65qo8JykXkKFGJN9xq2vtjDPOsA30SrP83402DqoyrnXRThnR79B65QWivEDPdb3qeA4ePNj+7q233rql4SopICPruRbdN0qDzj77bPtYv+Pbb7+124SuzzznWxrlGdpe38t37PlyphY1JnkK9NU6nwbkKU+mpbt5j185WY6bOuq1zQMPPGCfK9/0f2vSSSdtaVTwlW2f95x33nn2uT7riSeesPmsb3RUmdzLW76IyxOQkfVcyLufdb769VnqAOVkTctDaYv2g09bdK4qX5HQflb5Qumq389qHPOin63fsfPOO9v0+KeffrJ5svI6vaZG4ddff93m2T690L4TBfHoutY633glev/YY49t14fKGzpOoutHabrKOWrsUQOS0jZto/VqLNLf0Pnig92WW265lrTaB5j43xItQ+dJa6P7Tvv00EMPteVR7RO/XudHFr6htFxARmfIJ7OWq0MBGVmOreTd9wq80Dq9rjKv9rMPDPPBgdXWo/MEZGT9nR2Z5mQ9jvr7/rOV3+n7nX766fb7ap06MXw9Q2Vav+0hhxxiy1Ta1woe0zoF4XtZy8JZ64TRtEuNyrpudI77a1vrssiStmSts5VTrswpWfeTL2+oQ+Lnn39uaQPw9cUsfyuNOjmiAQUXXHCBfe+DDz5oX89TPs5zTlVbPvayBmR0hjRY8pQv9Z39tmn1ybT8v5xydeKs9YpQmUWfk1Q2zLMfkmQNyKhXWTJUDspa3pIsaWS54xP6DkrD9XzKKads00GrY6L10d9QbTuNl6WtopJzKUs5Ik+6Hk3DVNZR+ULHWX9H63QuiuqNPl2LBn4qWFn7Ret1bCT6fRVgp/NSxygaYKiy5GWXXWaDMHRctC7azltOuf1bTZ03ax0meq6pnfKcc86xaVI0SOF/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nzfVnh956hUd0faUZ4SMWho5cmTh999/L+y555727/fq1cu90jXVIu3tbHXUzz//3H7X4cOH22kc9X01qlXWkX3yiO7L0NIs+U3aaCxZjRiRbYSMWho9enTh559/tvma/9uvvfaae7Xr6SztCbXywQcf2OOrY+qnct19993dq7WjETni+zK6KJ1oFtWW1RghI6x+t38AAAAATUijVaQtSXegi6LT5513XnunwwYbbGDvmlxppZXMpptu6rboGh5++GF7p5vufNCdwKL//R1rXU3oPIguaedEM9Ld96Hf4Zc8dw2iNnTnSehY+GXhhRd2WwIdL3SORpdmSxNXX311+/+ll15qR0HbcMMNzaqrrmof//333/ZOxj59+thtugvSnGSNzCNDnx9dmuVaqvZ86S7l40YJHYPo0ujzptrzo7vVK7LSHcc6ln5UjrXXXtv+31XVIu3tbOeSRl/Rd9VIRLfddpsd5UAjdtV6lAMJ7dPo0tnqs83mmWeesSMlbL755va5ypbK97qq7taeoNEcdHwXWWQRO8Keft9xxx3nXq2d6aabLrg//aIRldHFucCMbokRMgB0FvUYIUNzhk0//fR2XrxyvvrqK7utlkceecStRRwjZDQ/RsioP+1fLc08QkY1FDHv7/obb7zxCttss429GzBJnrS2WrUcIeOSSy6xc6Xr83TX2/HHH1+XO3nQvVVbvuhMI2QAnWmEjM7mjz/+sHecad73McYYw+5nLdNMM01h5513tneo1kJnGiGjlpZbbjmbTms+aiAkb/m4I86pzjRCRleTp17REW1PHTVChh8ZY+yxxy6svfba9rcjXWero2611Vb2u2pRGYU7xQuF22+/veUar7TNqCNGyNDIGCpj9ujRozD//PMXBg8e7F5BZ/fPP/8UZpxxRns+6fiusMIKhSFDhrhXu69qy2qMkBHWQ/8Ud0y3pDlwNBeO5h7WfDYA0KyeeOIJs/LKK9toyZdfftmtRbO54YYbzJZbbmnWXXddc88997i1aCbFSpNZeuml7R2Tb7/9tluLWvJ3e4Tmv+0qVHzWfKeaw7FW81TWwvHHH2+OOeYYc8ABB5izzjrLra2c5vzUcSw3jz3QUVSPGzRokLnqqqta5t4GmtX0009v5+odOnSovesM9fHXX3+1lEGqmbc6RHfhnnLKKfb/k046ya0FIM1aPvYGDhxodtxxR9OvXz9zyy23uLVolGauV2gUg0MPPdTsscceLaNVNIr2ybjjjmvGGmsstwbldLY66p9//mm/c1dtG+kII0eONL169bKPG9m1OXr0aHssGW2ka9LoXqo71Lr+0F1p1BH1ud9xxx1mo402cmvBlCUAAABADgo6UQNQMzY215KGVCUYAwDQmYw99th2yGEaU4HG6i7lY1SGekXYBBNMQDBGTp3tXFLADcEYXYPKlgRjdF0KKKX+gHqjlAwAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZAAAAAAAAAAAAAAAANUZABgAAAAAAAAAAAAAAQI0RkAEAAAAAAAAAAAAAAFBjBGQAAAAAAAAAAAAAAADUGAEZANAJFAqFNv+jOXGcmh/HqL7+/vtv94h93BE4v9HdcM6jM+F87fw4hkDnxfWLJJwbQOfCtQqgsyIgAwAAAAAAAAAAAAAAoMYIyAAAAAAAAAAAAAAAAKgxAjIAAAAAAAAAAAAAAABqjIAMAAAAAAAAAAAAAACAGiMgAwAAAAAAAAAAAAAAoMYIyAAAAAAAAAAAAAAAAKgxAjIAAAAAAAAAAAAAAABqjIAMAAAAAAAAAAAAAACAGutRKHKPu51hw4aZ2Wef3T0DAAAAAAAAAAAAAACVuuOOO8xGG23knoERMgAAAAAAAAAAAAAAAGqMETJmn90sv/zy5vjjj3drAaD5vP766+aAAw4wc845p7n00kvdWjSbRx991Jx44olmqaWWMieffLJbi2byzjvvmL322svMPPPMZuDAgW4tauWff/4xq622mn38wAMPmHHHHdc+RmNcffXV9rzeZJNNzJ577unWAl3XkUceaZ599lnTv39/s8Yaa7i1QHPq16+f+eGHH8xVV11lZpxxRrcWncmAAQPMDTfcYLbaaiuz8847u7UAOoP777/fnHbaaWaFFVYwxx13nFsLGHPjjTfadrYNN9zQ7L///m4tgGb122+/mXXXXdc+fvzxx+3/AJrL0UcfbZ5++mlz++23m4033titBQEZs89uTwidGADQrFTAXGWVVcyiiy5qXnnlFbcWzeb666+3DbTrrLOOuffee91aNJPnn3/eLLPMMmbeeec1Q4YMcWtRK3///bcZe+yx7eNff/3VTDDBBPYxGkONy8cee6xtSDz77LPdWqDr0tCXd955p7nyyivNdttt59YCzWm66aYzX331lXn33XfN3HPP7daiMznssMPMqaeeav8n+BroXK644gqz0047mb59+5pbb73VrQVMS7q+++67m4svvtitBdCsRowYYSaZZBL7uBt3bQJNTeUt9bkzZUlbTFkCAAAAAAAAAAAAAABQYwRkAAAAAAAAAAAAAAAA1BgBGQAAAAAAAAAAAAAAADVGQAYAAAAAAAAAAAAAAECNEZABAAAAAAAAAAAAAABQYwRkAAAAAAAAAAAAAAAA1BgBGQAAAAAAAAAAAAAAADVGQAYAAAAAAAAAAAAAAECNEZABAAAAAAAAAAAAAABQYwRkAAAAAAAAAAAAAAAA1BgBGQAAAAAAAAAAAAAAADVGQAYAAAAAAAAAAAAAAECNEZABAAAAAAAAAAAAAABQYwRkAAAAAAAAAAAAAAAA1BgBGQAAAAAAAAAAAAAAADVGQAYAAAAAAAAAAAAAAECNEZCBzN555x1z1FFHmeeff96tqY16fW4eDz30kDnjjDPMtdde69bUX6FQMBdffLE588wzzZ9//unWAgAAAAAAAAAAAAC6gh4F9Qp3U8OGDTOzzz672Xjjjc3tt9/u1iLJoosual577TUzwQQTmJ9++smMPfbYdv2jjz5q/ve//5khQ4bYwIJZZpnFbLnllmbbbbc1PXr0sNukSfrcRtp5553N5ZdfbhZbbDHz8ssvu7X1ddddd5kNN9zQPj7ppJNM//797WMg5PHHHzerrLKKvV5eeeUVt7aDPfywMYMGuScB//d/xkwyiXtSNHSoMdddZ8y77xozerQx001nzJprmuKFYMwYkfjAYnpgBgww5ptvjJlzTmP228+Yaad1LzoKnlIQ1xJLGLP99m5lx7v++uvNVlttZdZZZx1z7733urVNongOFRMeYz791Jh//zVm5pmNWW89Y1Zd1W3gDB5sipmiMR99pMix0r5fay1j1l7bmDHHdBsVaRt93m+/GbPUUsbsuacx443nXizS3zjhBGO+/dYUMwVjll3WvdCxFPy3zDLLmHnnndfmWw3x3XfG3HijKWYwxvz4ozG9ehmz+OLGbL21MVNM4TaKeOYZY+64w5hPPildG7PNZky/fqX3RH39tTHnnmvMe+8ZM9VUyszab/PCC8ZcfbUxk05qzIknupX18/fff7fk47/++qvN2xtq4MDSfk6y/PLGbL65exJx6qml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Y/7805gaNYxp3dqYLbZwb4ZWrjTmjjuM+eknYy680IQHH/fGxjdgwADTpEkTU7duXfP666+70o0o03UkP/9szKBBxnz4oTG//mrMdtsZU62aCQ96xuy8s5spVEjXkwLfatasaSpXrmymTZvmStejTNeBlnm/ftHyX7rUmB12MOEPNubii43Zems3U+iHH4x56CFjZs40ZpddjGnePFpPce+9Z8wzz0SfceedrnD9WrFiReIcpvOmzmsb0oXhtvarlmE+VI85/vjj7fNPP/00XIQPhYv6w3Az/tPst99+5oILLjCXXHJJeEhadUz666+/TJcuXWydZ8sttwxXWVNz5ZVXuncjP4Tro1mzZjaQ9cknnzR77LGHe2fD6tq1q/2tbdu2NT179nSlSFt4rrXHtblzo2OY6rRnnGHMySe7GWL+/tuYV14xZuxYY3780ZhSpYw58EATbkTGVKrkZgqF9TvzxBPRPBUrGnPttdH5L+6553RwMqZ6dWMuvdQVIh0NGjQww4YNCw+b/ey+iSTpbtPFoI6WC3bffXd77azg/krx40SuUeeDF180ZsYMY/74w5iyZU148jTmnHOiY10qL78cHQ8lud6h42Xv3sZMnhz9/ZlnRp8Vt2iRTmLR806dorpNDmrfvr3p0aOHfezWrZsrRS5Ru4rqQB999FG46f1t26fOP/98c/nll5tNNkndJ23JkiX2HOI7IV133XWmTp069rlMnDjR3H777WbevHnmsMMOs9tAuXLl3LuRBx54wLz55pv2mv3mm292pcglffv2tfX1xo0bm8GDB7vSQizcTs0//7gXSXT92KSJe5Ek3H5tvUB0HRqvPxWh43Um/HG9VatWtlMicky6112jR0fz5eeuu4zZfvvoOXXaQu23334LV2W0Lovxrc3cksn+J7rOeP756LpD57LwOimsfBmj+5Dx+hrtKYWW6lu65z506FDbboMIGTKwRnvuuWfipoRuVMiM8ICpi1BldJg0aZKZPXu2+eSTT2yAhsqznT2iOPBBLLqoX5/BGAqY0Y3il156yZVsXLn2e5AhXYirwpPfpBv73n33RRc4b70VNfZ/+210kX/bbXkbbEeNil7r/b/+iipV99zj3nSefdaYYcOM+eUXY446yhUipUzWkXzxhTHnnWfM008b8/nnxnz/vVL4RDf1L7/cmP/+i+ZjPaUvk3Ww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K61aGfPhh+6NmPfei/42B9oKUPhlUg8cM2aMPZ4dcsghpmLFiqZOnTrhJtw/vDxddX3KuRw5Ld1rd3UOGzo0un7UfOF2H27YqtC6GRzaY5BjVB+9JNwWDz74YHvNdcopp5innnrKrFy50s2Rl+rBjcI6R+XKle2xXcf4t99+2727Csd2YD1I95wkv/6qm3TGXHSRMWeeaYzuoz7xxOptnzJkiDGXXhp9Xni9ab8nTseDrl2j64lJk1whkKPCC41iK7wg01VW0LBhQ1eSngMOOMD+XePGjV1JXk2aNLHvlytXzpVsXGElI9htt93sb7ryyitd6foxcOBA+z35TeEFrptz4wkvxu1v2WmnnVxJXk8++WTi93777beuNC//GX7S3+QnrNzZee644w5XsvGUL1/e/pYbbrjBlWw8ZcuWzbMMkydtS5Kt3/zss88mPvv33393petuzpw5dr86/vjjg9mzZ7vS7Bs7dqz97VWqVHElOWDlyiA44oj8p65d3YyhBx5IPY+m+HzaT1RWt24QnHBC9Py119ybztVXR+XdurmC3PH888/b9RResLmSHDJvXhDUqLFqudeu7d6IWbxYJ7FV88Sn6tWD4LvvovkWLAiCI4+Mys45J3q/QYMg+Pff6H357LMgqFo1CGrWDIL5813hxjd58mS7jsILdFeynmWyn4waFS3XVPOpzvH339F8Obz8/w1/gz/WLlu2zJVuWKpr+N8Qn7bZZptg2rRpbq4gGDRoUFCqVKmU8x500EG2/iQ6zmu+zTffPDjkkEPs+6oL6n/13n333WDTTTcNtt566/V6LlibLl262N/Xtm1bV4J0/PTTT8Fee+2VZxvw08EHHxz8+eefbs6I6n2bbbZZyvmbNm3q5gqCli1b2rJ99tnH1jv1XPWRuHr16tnyNm3auBJkon79+nb59evXz5WgV69edpnkN+n45f38889BtWrVUs5XsmTJ4KuvvrLzFabjYC7z1+TTp093JTmmXbvV6x/x6c473YwxqrvE57nlFvdGaMWKIGjUKCo/++yo3qJJdVJv6dKoTqp5Ro92hbmrXbiMtA7bt2/vSpBr0q0H3njjjSnn09S8eXM3F+fyoqRPnz52PeXXllvopHvt/scfQXD55ann0zR8eDSfFPL2mILq3r273TZatWrlSpALxo8fb+ujWjfJ0+XappPcdNNNKefV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Z6tfv75p27atKwWQq/78809Tr149+3zcuHH2EUBuue2228yECRPIkJGEgIwKFewGoQ0DAHKVKpgnnXSSqVKlipk6daorRa4ZMGCAbaCtW7euef31110pcsmUKVNMzZo1TeXKlW36NGTXihUrTMmSJe3zZcuWmdKlS9vn2DDUuNylSxfbkNizZ09XChRd6mkxbNgw069fP9O0aVNXCuQmpUJfuHChHd5Ow+yg8Gnfvr3p0aOHfST4Gihc+vbta5o1a2YaN25sBg8e7EoBkziut2rVyvTq1cuVAshVv/32m9l+++3t82J8axPIaapv6Z47GTLyYmBvAAAAAAAAAAAAAACALCMgAwAAAAAAAAAAAAAAIMsIyAAAAAAAAAAAAAAAAMgyAjIAAAAAAAAAAAAAAACyjIAMAAAAAAAAAAAAAACALCMgAwAAAAAAAAAAAAAAIMsIyAAAAAAAAAAAAAAAAMgyAjIAAAAAAAAAAAAAAACyjICMHPfll1+aTp06mSlTpriS3DF8+HBz3333mZdeesmVZGbkyJGma9euZt68ea4kr++++85+/v3332/+++8/V7pu1vadG9O6Lk8AAAAAAAAAAAAAQO4gICPHXXTRRebOO+80p556qvn3339daW7o37+/uemmm0zv3r1dSfp+/fVXc9ZZZ5kuXbqY5s2bu9K8nn76afv5gwYNMptuuqkta9GihTnttNPslN/3Ll261Jx++umJ+T777DNbns53bkyZLM8RI0Yk/r9Uk5aTLF68OOX7Wg5XX321ef/99+186fLL/6677nIlAAAAAAAAAAAAAIBUCMjIcfvss499LFeunClZsqR9ng5ll2jdurU54YQTzLfffutKc8dWW21lypQpY5+XL1/ePiZ75ZVX7GP9+vXto0yYMMG88cYbdlLmjFSGDh1qRo0alZhPgRiSznfmZ9y4caZp06ambt26rmTjmjt3buL/SzVpOcny5ctTvq9sHI8++qipUaOGDXhJl1/+H3/8sStZP5588klzzjnnmA4dOriSjSvXfg8AAAAAAAAAAACA3EdARo7TzfJ3333XvPfee64kPQrC6NWrlxk/fry9KZ9rtthiC/PFF1+YDz74wDzyyCOudJU5c+aYTz/91D5v0KCBfUz29ddfm6lTp7pXq+QXYLC271wTLcdnnnnGfPTRR65k41KgjYIEkicfaLLNNtvYx7hbbrnFfP7553Z69dVXzV577WWCIDC33367myN3PP/882bw4ME5E0yUa78HAAAAAAAAAAAAQO4jIGM9WrJkiWnVqpWdlLFCQ1Iow8Ipp5xih3zQECR//vmn6dy5sy1r3LixGThwoPvryIsvvmiH7kgOIFCmgssvv9zemNcQEh07djQLFy607z344IPm3nvvtc+lU6dOdoiO9u3b29fx36UbzAo0uPDCC+18ngId2rZta4dK0XdcccUViQCJdOiG/2WXXWb/Vp+hYICffvrJvRvR73zqqacSmTDihg0bZh8VYHDwwQfb56kkB1/88ssv5q233nKvVpfqO1euXGlvuCsDwnHHHWcDQLS8//77b/v+lVdeaf8f0XAoWpaatF5Ew35oWWoIEP3NHXfcYc4//3wzYMAA+76kszwyUalSpcTv8JOGadF2JhdffLF9jNttt93sstR05plnJoY1+eGHH+xjQcW3J2Xu0HAqZ599tv0/r7322tU+//fffzf33HOPqVevnjn++ONNkyZNzJAhQ+x7s2fPtv/LzJkz7WsFz/j/b/Lkybbsueees9+ldaTv03do+9U2O2PGjMRv+fnnn+38Mn/+/ER5clCFXivzhZaf9kNlltH3Sjq/BwAAAAAAAAAAAABSCoqxb775JtAiaNiwoSvJrnnz5tnP19S4cePEcz9dccUVQe3atVcrf/75590nBEGzZs1sWdWqVV1JEDz33HOr/Y2mnXfeOfjtt9+COnXqpHy/XLly9u/jv+vyyy9PPK9Vq5Z9/8YbbwxKlCiRKPdT6dKlg9mzZ9t5xP9PJ598sisJ7PfrdfLfajr00EODf/75x80ZBOXLl7flN9xwgytZ5YQTTrDvXX/99a4kcsABB9hy/S963HvvvYOVK1e6d4Ogd+/etnyfffaxj5rGjRvn3k39nS1atEjMG59OPfVU+36pUqVSvt+0aVP7/rPPPmtfb7755kGTJk0S73fq1Cmj5ZFqeWbi1ltvtX+v9bRkyRJbtnDhwsT3PfLII7bM0+9XeaNGjVzJ2vnlr9/qxben1q1bJ577Sevq77//tvPq8ZBDDlltHk133XVXMGXKlJTvaXr66aftZ/h94phjjgkqVqyYeH/MmDHB6NGjE6+//vprO798/PHHiXJ9hzdixIhg6623Trznp0033TQYNGhQWr9nQxk7dqz93ipVqrgS5CIdv7We6tat60qQayZPnmzXUeXKlV0Jsunff/9NHCeXLVvmSrGhdOnSxS77tm3buhKgaKtfv77d5vv16+dKgNy122672e11+vTprgSFTbt27ew6bN++vSsBUFj06dPH7r/x9ixAunfvbreNVq1auRIAuUz3PbTPagKQm3TPUfvo0KFDXQmEDBkbiLIG9OjRw4QboDnssMNsWe/eve0QGsrYoAwNZcqUseXKWLEm+hxRxoXp06eb0aNHm2OOOcZm3dh2221txg1lafAeffRR+71PPPGEK1mlb9++pmbNmjbLgDIViLIClCxZ0nTp0sVmBBg3bpzNrvDHH3+Yfv362Xnys8kmm5hvvvnGzh9e7JiPP/7YZjSQzz77zEycONE+X5Nff/01MV9+w5Xof99qq61shoR4pgKfMeOqq66yj2uzaNEiu/zlscceM19++aXNUnLggQeabt262fKXXnrJnHfeefb59ttvb5elpmuuucaWef/884/NihFe3NksC8oQsa7LQ8OLaJ74NGvWLPfuKvpu/38oW8R2221nn8dpu7rooovsVKtWLZuxRev+8ccfd3MYuzyTvy+TYVq0Tbdr185mOFEWCVHWjtdee80+f/311+3/pCFVxo4da5eBsmVUrVrVZq844IAD7LI96KCD7PzHHntsYnmfdNJJtsybNGmSzb6h77n00ktNlSpV3Dvp0XambX7ZsmVm3333tRlPNCyJsqT8999/9n9Y2+/57bffVltempT9BgAAAAAAAAAAAEDxRkDGBqKb9zfffLMNMLjuuutcqbHDLjRr1szeRNeNfNFN8TXRMCeioIm9997bDrOgm8AtW7a05UcffbS9ceydfPLJ9ntr167tSlbRe/pbDeWhYUmkV69e5t1337WBHdWqVTPVq1e3gR4yZ84c+5ifrbfe2g4/8cknn9ghVQ4//HD79yVKlLDvr+3vRTfvV6xYYXbeeWcbaJJK6dKlzVlnnWWf+yCMH3/80YwfP97+Vg2HkQ4NMRIECtYyZssttzQVK1a0w40oMENBAqLhPTREiJQqVcouS02pAgAUxKKb+gruUNDDui4PDYOiz4lP8eFoPAWN6P8XBYOkouAaBf5o0joXDdcRH/ZFATrJ36dtM10KjujevbtdN9qOtLzEB5H4bVf/v4JGDjnkEHPTTTeZDz/80Oy4445mhx12sMtW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OLyevOSSS2z7lrbNU045xbadxNvD0t3eqQMiZ+la0F8rppqmTo3mU4ew8BxuLrssusYPt2PTvbsxCxZE73u0wyDHqCNk8rE5eVInUm/IkCHmjDPOMAcccIA9ZiuLtDJVJ6NOC6wH6Z6T4tQ597rrVs3jOoQn0O6Joigoxr755huNPxA0bNjQlWTXvHnz7OdrGj58uCsNgpdeeilR/vPPP7vSIAgrAbasfPnyriQIwgqALatataorCYK33347OP7444MSJUokPqdcuXLBK6+84uaIjB07Nthjjz0S8+y3337BwoUL8/1d3gsvvBBsv/32iXnOOecc+zfhxax9fcghh9j5fv311+DII49MzPfRRx/Z8ptuuinYbLPNbFmpUqWCe++91/7mnXfe2ZZdffXVdj79n3qt/1smTJhgX2+66abBokWLbFmysFJl59Fnetdcc40t22effVxJEHz77be2TNO4ceNc6erfKeGFeVCxYsXE/JqOPvroYNq0aW6OyEMPPRRsueWWiXlOP/10W/7ss88myn7//XdbFpfu8shveebnv//+s/+z5j3rrLNcaV5a3/7z4pO2nR133DGoV69eMHnyZDf32vnl37hxY1eS/3YuZcuWteWdO3e2r5ctWxbccsst9rv935QsWTK44IILgt9++83OI//8809wySWXJObRNnH33Xfb91LtE3FvvfVWsOuuuyb+9qijjrLL0r+eMmWKmzMIVqxYEdx+++2JdaGpdOnSwa233mqXr7em37OhaH/Wd1epUsWV5IAPPgiCI47If3rtNTdjqFev1PP46YcfovkWLAjCHSEIqlcPwoNP9F6DBkHw77/R+/LZZ0G4AQRBzZpBMH++K8wNzz//vF1PdevWdSUbWSbrSMvy5JNTz6djTOx8FYwcGZUfd1wQnHFG9LxrV/em069fVH7eeXnX30amY57WUeXKlV3JepbJOogbNSrvfOGxMyE8dgWNGkXlZ58d7S+awuNxwtKlQVC7djTP6NGucP37N1zX/lipY/6G9tNPPwV77bVX4jfEJ9Vj/vzzTzdn+vPOmTPHnr8333xzWwfS+zof6n/13n33XXtu2HrrrYPZs2e70g2vS5cu9ve1bdvWlSBdderUybMN+GmbbbbJUydUvTLVfH5SvVBUx9BxRmXanrT9aJo1a5Z9XxYvXpyoq+v6AJmrX7++XX79dM5BHulu07fddlvi2OanO+64w70bGTBggC3fYYcd7DWlnqtOHnfPPffY8sMPP9zWnbG63XbbzS6j6dOnu5Lc4q/d8psGDhzo5gyCJ598MnGNmzw1bdrUzRUELVu2tGW6bt1pp53sc3+c9HRNqvI2bdq4ktzVrl07+1vbt2/vSpBrxo8fb9sYtJ6Sp8svv9zNld72XpjqgFi7Pn362HUYb88q1PK7dveTrie1TZ52Wur3jz02el8KeTvMuurevbvdNlq1auVKkAtUX/LH5PwmtXuL2mhTva+pf//+dh6hTls0LFmyJLF+kSPSOSclu/POvPMMGeLeCOVwuyfS0yhcf9pHhw4d6kogBGSEG8X6CshY3/76669g5syZwXfffedKVrdy5Up7Eamb5nqerr///ttWfH788UdXEonfyBB95ty5c/M0LotOjF9++WV4XAwPjI7m1W/Ojw9IUbDJxuB/s27Q5Gf58uXBV199lW/ASH7SXR75Lc+iSJVmLZNUQSye3tM2/scff7iS9CiYQkE5a9o34nTTRPNrua+psl3Q35MNORmQMXFiVOmpVSuqNCVP4bac8OCD0bwXX5x6Xr8vPP10NF/fvtFrNczq9dSp0WvNp4YBlQ0eHJXlkJwLyMhkHV17bTRvtWpB8MQTilwIgt69owqvytu1czOGrroqKvv0U50wos/XfKowi45hvkEnPGbmkg0ekJHJOvB0rki+mIkHZHz+eVTWunX0WvuLXmu9eR07RmUb+IbBxg7I6Natm/1uBR7qhs/3338f3H///YnfFG+MSXfeHj162NeaX0477TT7+p133rGvVTfyAYu9tc9sRARkFIyCNbXcNCnQd/78+cEbb7xhb66o7LLLLnNzBsGIESNsmYKXdUMyedL1hbz33nt2Pt0UF9/Qq0BQ7+LwnKgyBaaiYAjISC2TbXq77bazZfFg/+SADAWiq1yfq+sXbf+64ak6tCjAw9+0/Ew3bJBSrgdkqB6bfEy77rrrEtvFay6IVOvY3/A+6KCDgmeeecYeG2+88UYb8BPfBrbaaiu7jWm70Y1r/c1JJ53k3l11g7RChQob5RorUwRk5D4fjKZOGpMmTbJtAjrPqkzHObWPSTrbe2GqA2LtilxARnjcXe3a8r77Vl0/ajsNt2H7XDesFFQXHofDi5zomj9+rVjI22HWFQEZuUlt6cnHaU1qb9P6UjCc5lEbhK/jHnfccbbdXnURH0i37777uk+kTltUaL1rPWpCjkjnnBT38cer3vOT/sbL4XZPpIeAjNQYsqQQ07ATGqJBQ2vkJ7zgNOXKlTN77rmnfZ6usPJhh+bYZZddXEnED2fi6TP32msvm+Y7TsM/KD3YNtts40qief3QJ6mEF8Y2lWlTpcjfCPxvLlOmjCtZXVghM/vvv7/ZaaedXEl60l0e+S3PokhDiWiZhJVmV7I6vadtfKuttnIl6dHwMhrKZ037RlxYibfza7mHFXFXurqC/p4iy6cj3nZbYxo2XH0Kt+WE5cujR23bqeb1+8KPP0aPft35R1+u4TSUJrZmTWMaN47KkL9019GKFauGFTnrLGNatDDm6KONadlS4wlF5Ur16IdxUNo4Cc8v4QnDmN12iz5DQ57o8bbbjPn33yjlaXjMLNYy2U+8Bx+MlqWWb6rzgd8f9H780a8XDYvw+uvG7LxzlG62GPGpzg844ABz0UUX2aGrNDSWzsOitKdeuvPOmzfPPur4H3/05Rr2yw9j0VL7DAqdeIr8W265xQ5NpvTkJ598si2Lbzd//fWXfdxhhx1M8+bNV5s0NISsbbsZNmyYefbZZ8PD527m0UcftWVAtmSyTWuIyoceeihPWbL49qzrF9Wx/w3P8z+G56MV4Xlf12/Lw7qehic85JBD7LwofDSEQ/Ix7U+Xxrts2bJ26CXRsAxa/7o2euedd+yQSxrW9N5777Xbit8GNASn/l7bi2+7EL89aTjW6667zl679evXj2ssZIU//mlI1JrhNaO2Pz/cbBAEiffT2d7jx774oy+nDoiNSsNJJ19b+mvPHXc0pkYNY9q2NaZOnWioEQ1VctRRxlxyicZljub76qvokXYY5CBdlycfpzV9++239n0Nxa15NNyoH6q6devWtt1edZHLL7/clsXruPHjOnVaIIvSOSd5aje+887oubs+XQ3tniiiCMhAzhg8eLD55JNPzGUa1xBA7vNBFrohr5vvb7xhTN++xowcqTtW0Xuer4RpXo3xGO7vdtxRjQ8XG8s3vJqKHv2Nf413KirXeHMa01xBPLrhj7VLdx1p3L7//oueJwcI7LNP9Kj3Z8yInievJ/+ooAN9/pdfmvDqNWrsKe4y2U/ko4+MGTo0et6pkzGxQL4Ev/yXLIke/X6y/fZR2R13RK+1n/h5i4mj1MgYUkOLb3D/7LPPwkUULSONX++lO68PwtSNJflVwTIhlWt88Ycffjhc9NvbsclROFWtWtUGZ8q7775rH38Pj4vaHiS+3fiADAUp//PPP2bQoEGmW7duZsCAAeaPP/6w78matptFixYlbtxou9lRDRRAFmWyTT/xxBPmmmuuWS0QPy7V9qxAcm27d999t/nwww/tZ9500032fRQNusHxnG7ihXQDRJ0TVob19tfV+Blq3LixPf+NGzfOHsuGDx9u5/F0k0TboT/+xY+DujGuGyU652r89mOOOca+B6wrX7/7KKxT6yabTJw40T4qiOiggw6yz5Ol2t7XdC6nDoicoxvS7vhsb4Sps5GOyWE91SR3PHPbsr1+l+Tre9phkKPeeustM336dPtcwRei+miFChXsc1/vVT1jstobQ/F6L3VaYANJdU7ynn7amNmzozbM/IIpaPdEEUVABgCgYHyQhR4VSNWhgzHq5Xvrrcacc44xCxZE74ufV5Hs6lERXuiYhx825qqroknRsXLkkdGjblg/9JAxY8caU7q0Mfvua0znztF77doZs4abBohJdx2pIcZXjsML0DymTHFPQj//HD369XT77dH000/GHHZYtH7VIKngA5W7m0HFWib7iRqN77oreq7MJFWqRM+TVaoUNYhp/9B+oosZ0XrR3yvoSX9/7LFReTHSpEkT06JFC3tjXFmYdFNSDfNqkLktvFA76aST3Jzpz+sfddO9XXj8GTJkSLjLbGsziSmIVPM/8sgjtgc6CidlydJNaWXJ0g3GKuG+t2943lHvqzp16tgesJ7vPatH3UC84IILbAYCbU/qRaWMb3LEEUfYmzTaXrTddO/e3ZYrQ8GVV14ZHjZ/Ms2aNTN169a15UA2ZbJNp8MfB3XM1I1K9TRUz3M1iN955502QKl///6JIBAUDU+H9QudI7Ver7jiClumGxiLVc8I6bx3wgkn2O1D24Z6qirj4AcffGDf32yzzcxxxx1ngx51vvSBaDoOPvbYY2bMmDH25vgdvkEVyAJlcDkyrBO///77RtliDz30UHP11VfbYAwFT/pMaMlSbe/UAVGoDBsWXXNussmas1i89JIxn34aPa9XL3qkHQaFhM8sqAwXPvObAioGDhxosxs9+OCD9hit+shL4bau7IV9tV071GmBDSS/c9Lcucb06RM9v+GG/IMp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DhkyxLz99tvhbrrSjhWswAvPz6MbMJ07dzbNmjWzNxc17/vvv5/Ybg4Lz2dqDIz77rvv7HjFGr++f//+ZquttmK7wXqV7jatm97aBjXFG6r/DOtuvnyF6mwx7cI62VdffWVOP/1001zj9obYnouW//3vf3ab0bFKNyqS6Wa0TJgwwQabLV++3N6ouOWWW2y5jnU1VG+J0Xak8dk1r7bDg1yQr7adf//91yxdujQRCKlz75puigP58cc+6RRe0yxevNjeaBs8eHB4WRNe14Ti88jatnePOiBylsbpVxCbrgPPOssVOgo2UnuMhHVRO26/gij8pM4DyWiHQQ567LHH7GPNmjUTgaGeP67PnTvXPPTQQ7Y+obqs6iV6LsnHfqFOC6wHazonqV00uc3zySfdmyHVw1R21FGuwKHdE0WJzZNRTDFkCYDCIieHLHnnnWgMUZ9aLHmKp8J+6KHU82g67rhomIu4X3+NxirV+xq71Pv++yCoXj0IatUKgp49o3n0G8LjeS7IuSFLMllHSiEWf++oo1Y9P+WUIPjhBzdjzPvvR+9rHWosP2/EiKhc49Tec0/0/LTTgiDF8A8b2gYfsiSTdZDKpZdG86UaT12p/5SuU+9rH/NUrjTiKr/rrmgIFD1/8UU3w/qzMYcskeuvvz7x/Zo222yzPK976rjhZDKv/BRu4xovXO9pTFpPadY1Zu12221nx8/XPEqN+sUXX7g5NhyGLCmYYcOGBSVKlEis++RtQcNieK+99loi9a2m+N9p0mfFrQz3xxPDc5XeU6p7T+UHHHCALdfY9j6V+v/+9z83B9LBkCWppbtN//zzz3nKU00aS9tTfVSfu8MOO4RVsrBO5vj6j86t1157rZ1Hw04sX77czQEpDEOW/Pnnn8GOO+5of2fz5s1daV7/hPW5qlWrJraR5OPgNUpTnKRz5872vZo1a9phmjylHVf56aefbttl9Pzcc8917+YehizJbdq2qofXilpHflIqev9cw9G9++67bu70tncpDHVArF2RHLJEQ4768fS7dnWFMXfeGb2X36RrzbhC2g6zrhiyJLfpuK31o+m5555zpatoqBHVTf08Og7H6yblypWzQ1zEUact3BiyJEet7ZyUyr//rjonDRniCmNysN0T6WHIktTIkAGsI0XbPv744+aUU06xKc2qVatmrr76avP111+7OdZu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3960a9fO/PDDDy61Ysr2OJk6dWrGde+nsWPHupzGBuB17tzZHif77bdfxrL71VdftZ87/vjjXUr5p/NU7969za677mrXdcuWLc3VV19tfv/9d5ejOG2bu+66yx4TOlc1a9bMnHXWWearr75yOYqwzsu3ESNGmIMPPtjUr1/fbuNOnTqZ1157zS0tLpf6EOc0rCq51NHknXfesfuo9sWhQ4e61CL33nuv3ed32mknc/7555uFCxe6JRHVKU466ST7+RdffNGlomB98YUxV11lzLHHmrCxacwpp+ipBmP8gwZh2WZ69Ch5Cs+91qJFxtx6qwkbgiasjBozfHiUHjd3rglPvtEUlq/Aisi23SPZ5uVcjqTKtv6abTuf9g4SJ9v6hvfJJ8ZcfHG0LFN9NCz3zRlnGHP44VG+H390C2JU39HnH3zQJQDIiur9w4YZc+qpOvEYc9RRxvTpY8yUKS5DmuW1N7zwXGdOPDH6Pt1j09+JU71N36Pj9u23XSKQUEEF9vXXXwdaBR07dnQpyNa3334bnHHGGcFee+0VTJ8+3aWuPOeff35w0EEHBU8++aRLWTFNmza12/6kk05yKfn3wQcfBKuvvrr9O8OGDXOp+ffXX38FW2yxhf072ibZuvDCC+1nMk3XX3+9y1VkypQpQc2aNTPmr1evXhA23FzOIPjzzz+DPffcM2NeTQ8//LDLiWy9/vrrdt1p302SAw44YKntq2m99dYLPvvsM5crCM4999yM+TR169bN5YrKlipVqgSVK1cOdtxxR7u8fv36wb///utyBMGECRPssVW1atUyKX9y8fjjj9vf3L59e5ey6r3xxhvBmmuuWWyd+ym+7pcsWRKsttpqGfNpipeXp556qk3bZpttgo033tjOP/LII25pROtA6T169HApyfDOO+/Y39WoUSOXsvJle5z447ykya/j//77L2jYsKFN22GHHezxomnatGl2ufz2229BjRo1bJ7hw4e71LLhf++CBQtcStlQeVC9evXU349PdevWDX788UeXM6Lfp3pMpvzaNq+99prLmfx17l111VX27/fs2dOlIBv9+vVLbfv06aGHHnK5IrnUhwr9nFYIOnToYNdr+nZC9ueeK664IrV/+qlv375uacTXbzbccMNgu+22s/Pp7agBAwbY9MaNGwf//POPS0XclltuadeRypFEGzEiCJo1C4Jddll6uvzyKI/Oc5mW+yk8Ni3tS3rfrl0Q7L13ND9qVLTMO+usKP2661xCcl188cV2G/bu3dulIEmybfdItnk5l5cfDzzwgN1+nTp1cimFLdv6a7bt/EJp76wMugaq/1Mu11RRRrKtbwwaFARHHll82T33RMu8WbOCYNddg6B586K8+nysPA8++UQ3DYKgVasg+P57l4ik+f3331NlGBIiPD8EXboUPwb9pGNuxgyX0cmmvSFjxkRprVsHwcEHR/NXXeUWOg8+GKUffXTx4xmr1OGHH26P0WeeecalQOghA6XyzTff2Ceiw0bsSh+OQzTsh4bl+OWXX1xK8jVp0sQ+YfvFF1/YniFWlrXWWstMnjzZvP/+++b22293qcumngpuuOEGO6+o9+eee848/fTTZrfddrNperp44sSJdl7CssI+8fb999+bdddd1z79oe/o27evWXPNNc2XX35peigK0dGTo5999pnZYIMNzKBBg8wnn3xiwsLXbLTRRna5ticK34QJE8xLL71k588++2y7f+h91apVzZ9//mmHBRI9ofm///3PVKpUyfYY88EHH9ieUvQkujz44IO2pxd54oknbJmiIXi03+jJC/UaoKc2RT0znHDCCbZXDe1H2267rU1HyfTU9r///ms233xz8/bbb9snuo5V9HFoyJAhqSe8Fi1aZI91ufbaa+2TsPHpREUjOxr2qVq1arZ8Gz16tE3Td3kPPPCATdeTZhX9KbFsjxPR/i0qO9PXvyb19iA6hj7//HNzwAEHmE8//dT2AKHj7LHHHrPLRX9LPZNoW+tJqYrgnHPOMT/99JNZY4017DrRelZZovOUzsfnnnuuyxm55pprbD1G1CuG8uupyC233NJuGz0xOX/+fLucdV5+/ffff7acFPUkoDqNzj/qOUzUA5mXa32IcxpWlVzOPbfeeqst11ZbbTWXsjT1aCbqXc/X8R9++OFUL2cqHy+//HJTuXJlm67jAQVKPURdd526OzRmu+2iJ0/VxtST0OusE71K06Ym3OhLTzVrRsvDMtIK95lwx4uebLvttigtbHumjBwZPf1aq5YJT9QuESidbNs9km1ezuVIolzqr9m282nvIJGyrW+od7cSeoFLUd04LPdtDxnqMbtVKxMW9lGvGqKn7q+4Inra/rzzjKlRI0oHsHz9+6tRGM2rvXDHHVGvFXXqGLP//sZstVW0TLJtb4i75myXP/VU1K4YNSr6rEyfbsygQcassYYxfftGr0CShZWyCoseMkrn5ptvDtq1a2fXnSZFlyuiulevXi5HRFHUStPTWW3atLFPSYeVerc0CEaOHBmcdtppQffu3YOFCxe61CC45ZZbbPqNN94YvPDCC/a7/d/afffd7XtNc+fOdZ9Ytueeey446qij7FOw+t5vvvmmxB4yJk6cGJxzzjlB27ZtbX49Bf7xxx+7pUHwyiuv2O84/fTTi/1mmTVrll2mSU+dKXLcvw8bRjZPPC1s4AejR48OjjjiCPv3wobNUk/viqI+tc4PO+ywYO+99w66dOkSPPXUU25p5PLLL7ffmZ5eEr/9tt1222JPsOlv6ck3LTvhhBNcahC89957qW0QNthcakRP0PllWrfe+PHjg3fffde9i2hbK1+tWrVcCrKVxB4ytL/5bT979myXGth9VWn77befSwns8kcffdS9i6jHG/95/9TFmWeead8//fTT9r2OC71/7LHH7Hsdn3p/4IEH2vdJk8QeMvR0i36Tyi3vo48+smma3n77bZv2yy+/pNJUPpVEZa/y6Akx+fXXX+179UAg+uz6668fVKpUKXjrrbdsWpKUdQ8ZuRwn2u+VprJ5Wfx3nqUnSkMjRoyw70855RT7XudXvVfvSdquZU1/W1NZ9pChpxTXWGONYuvB05NOStdyvz6Uv1q1ajZd59U4nb/8/2HIkCE2Lenr3KOHjNz5Mk1TvEcz1b2UpqdnvVzrQ4V+TisE9JCRWS7nHpVjt956a/DDDz+kPpPeQ4avS/jybaeddrLv9RmVp82aNbPvryuAHg5WpYLoIePSS6MnzPRk6Lx5LtH58083U4Kffip60i2sE9sn5TSvp1AlbGva94ceGr3Xk6p77BEETZqochqlJRw9ZCRbtu0eyTYv5/Lyozz1kJFL/TXbdn6htHdWBnrIKDDp9Q25+upofs6cKF1Teg8Z/ftH6a++Gr1X79B6/8IL0fsBA6L3CevlFUujh4yE+e67ouPu9ttdorNoURD8/bd74+TS3tA5W3l9vqOOit7rWFdvGL5XjvAcj2Shh4zM6CEDOdOYwHo6ygsr7eb+++83YSPApSh4bbQdXzis1NqnsV5//XVz5513mqZNm9qeLkTzeoJKPSj4nh30xNV5551n7r77brPNNtuYSZMm2e/29OSC3mvS013Lo6dfDz30UPPkk0/ap2D1vbvvvruN6E534YUXmubNm9unxDQmovLfc889Nr96BJGaNWva79B486MUjRfz+OOP22V61VMReqpW7zX5pyviaVo37du3tz1T6O/ddtttpkWLFsV6HPn2229tTxs9e/Y0zz77rB2/UdHpikTX07ye/9v+KY1lUSS9toeEBWOxJ9jWX399+5vEP1UnL7/8sn3Vk3NHabyuGP8UicQ/o/HUNYa/p3FYFbEvWobCp2N49dVXt/N6ElN0XPrtrP3Zq169uunSpYt7F9GYvVKrVi2z9dZb2/mNN97YvoYNfPvqe85Quo5JHSd6KlNPsSM7vuebDz/80D4FJhoHWfSkbKNGjey8751B1l57bTN27FhbTqlsmTVrlltibM8Y2u5+28S3UVivMN26dTN//PGHHV9e5WdFl8tx4reB1r+eRtJ59brrrrNl/IIFC+wyWdZxMnfuXHOqxmsM6TjxPROVd7/99ps9v4l6ZonTmMqi5ToO5N133zVhI97OayzwOJ2jdL4Xf15jnZdf2l5+n/HHqMoy9ewk8WM01/rQsvYbzmlYmXI596i9oydeN9tsM5eytEz7so4DHT96Qlc96+k71Z5CAdMToePHR/P77mvMeusZ8/77xjzzjAkLreU/cTZ8ePS02lprGXPIIdETbJUqmfCEGy33r2G5Fxa00VNzqt/oKbjGjaNlwArItt0j2eblXI4kyqX+mm07f1n7Ou0dJEp6fUPUa4baYxtuGL3PpFq16NXXR/74I3pV+gcfRL1sqO6iXjIAZO/NN91M6PDDjfn556iXvOefN0b34CpXdgtDubY30o9b/7r++uqeOeqVQ71Dde0apQNJp6iMiooeMkonrOAXewrwjjvusJFOL730kl0eVt6DsEFql+2///62hwn1EKFeMpSmcYe9Sy+91KaFlflg3rx5qae2wsaDXf7ll1/a71aaJj29oPea9OStorv1JGt8+uCDD+xntX3907J6cltPzj388MN2vE//ffEeMhS1pfERr7zyyuD999+3PRIo8lv5NLay17x5c5uWvt80adLEpvvxRjWGuP87zz///FJpGmNUPYg8++yzwcknn5xKV1S658e2X2eddWzEtnr7UHS60mrXrm3XgWheaeeff759r3WZvl40qTeM+NNvd911l80fF9+2vvcM/zc333xz+z6dX8+XXHKJS4no9+nJ42OPPTZo0KCBzbPbbrsFcxTFiJwksYcMuf/+++3TF9qfd9lllyBsrNvfqZ5x0nuREe0j2if23HNPm0/H2IQJE9zSaCxfpauHgIsuusju++ptQWP3Kk3LHnnkEZc7eZLYQ4bK5F133TW1vv3Yx1WrVrVliqfyVumajjzyyNS8Jm0H9Vjk+fL8xBNPDPbZZx87r/L89ttvt/PqfWKRoqATqKx7yJBsj5N77rnHpm+zzTapp439pP3fP3WvMl7n2bXWWsseJ3Xq1LF51IuTnvjSfHoPUGXJ/+ay7CHjv//+s+N76++mP6F40EEHpX6Tf4peTzX6tExPKu+77752WStF7IeSvs49esgoHdX7qlevbted6ok6BjWv+tVXX33lcuVeHyr0c1ohoIeMkuVaR1NPF1quKb2HDF+2qG2isk7z6rnwww8/tH9j7bXXDqZOnepyoySJ7yHj11+jJ8w06ek2tWv9e01t2wbB5Mkucxq1G8Nzp82np1Q9PVmtNLWnTz01mr/jjiAYOjSaP+KIpZ+aSzB6yEi2bNs9km1ezuXlR3nqIUOyrb9m284vlPbOyqDrrfr/0UNGASipvuHpiXkt05TeQ4buFyhd1+tuuSUIWraMeupSj11K07JRo1xmJBk9ZCRMv37R8dO8eRDo/mBYv0odh5rCtmSwZEmUN9f2xt13R+k6/+h7NH/iiUHwxRfR39M9xLBOhuShh4zM6CEDOdMY9vEeDvbdd1/ToUMHs7/GgwoNHz7chBV5+1SWenPYeeed7TiG/TWWVGj69Om25we5+OKL7Zidirw++uijbS8QMmDAAPtat25d+92evkvvNYUNBxM2qMyee+5ZbOrcubPNq+/yT8uGB74dC/744483zz//vKmkJ3XSDB482EaW9+nTxzRr1sz2lqEeI8T/XtH4oKJeQvzTtRqv0T9165cvz8knn2zXiXrw0N+uUqWKTZ82bZp91Xj3euJC9IR02CAyhxxyiH2K7Y477rC9C2gdZKJl6etFkyLdtW08PfmRbj1FJjp64lj8ZzLlF5/u83t+vMmhQ4eaL774wqbp//mzIiVRLmib61jXmLna77SPSXh+ybid1XuO9onxLhpW+8OcOXPsvGj80yuuuMJ89913thxQDy4aw1djnaqnmo4dO5rGjRvbY0FPhGh80/cVSYsSaZus4SKMf/zxRzserGi76b0Xf3JGvRHpaVk9Aa7ycuHChbbnC1+mqmejhg0bmgcffNA+YdOuXTvb406vXr3s31IvRhpDeZdddrHl/2WXXWbLg4oq2+PEbwOdc5RXPUap7Bbt/xdccIGdVy8lWvd6wknHic6rvXv3tseSeq1SjzNa56eccorZfvvt7Xn7kUcesZ8tr7R+VT6IevLae++97XlT60+9UHl+HWd7LvTnNdZ5+aZjUucb0bjwvt6n8ixeTuZaH+KchlUp1zrasuh8pP1UbROd49XzkHo4VLtHT5arTaOeDtVGrFevnm1zzZ49230aBSN2bjRPPBGN79ymjQkrfVGa9qHw3BpWCKP3ca+8osepo/l4D0LhudJsu230hJzKN/Wets8+xtx2m07eJmx8m/CEqe6qjDnySGPuvDMa3x0ohWzbPZJtXs7lSKps66/ZtvNp76AglFTfyEaTJibcgU1YSTXmoYeiJ/GvvFLdvhij3mJU51HvmuecY8yhhxrTvbu68nYfBlAi34bQ81k6purWNWavvaLeL2TkSN2oi+ZzbW8cd5wqY+rSLPoe9bDdq1fUk43yhOc0o3tp//d/xhx2mAlPVMbMnRt9FkgiRWVUVPSQUXr+aX1NXygiLUbjDSo9bBgEO++8c2pq2LBh6jOK5Pb8E8F+OtSPKRvjlw0ePNilRG666aagRo0axSY9uSXdu3e3n9l0003t+zj10qFl6dHdGhtcT3mrZ4/11lsv9Xfj48uHjR7bk4bSFWEv6kFD7xWRvsRF/C2vh4xHH33Upnk+sr1Pnz72vcYo9Xknl/QkkpPeQ4Z6MUlfL5rUM0XYSEt9r56cS6exn/1y/3SznoLX+1q1atn36fxTyRdeeKFLiaiHDd+jyZ133pmKsNc2UTQrspfEHjJuu+02+5tWW221IGyY26eH9NR52FC36WEj3T61Hjd27Fi7P+hJ1rZt29p8lSpVsj24xGnf01MdelpzzJgxqf1m2rRpwWabbWY/o6eYVl99dfuEksZQTYKk9ZAxf/58e9zqN2m8d5Ur2pf05IfSNGmbicqG448/3pbB33//vU2Ta665JpX3zTffdKmR7777Lvj555+DxYsX254ElEdlmH/CROWayh7Np/egs6qUdQ8ZuRwn6mnqmGOOsecm7fuexvpXXpW18XTN6zjRdp41a5btbUp/57XXXkv1CqEeovz57OWXX3afXLn0tzSVZQ8Z8uOPP9r16f++Jj21rfOPf+/HWH7wwQdTaSpX0ukJci1Tr1hxSV3nHj1k5G7ixIm2zqr1pgh+PQWoJwXjvZT5pwxLWx8q1HNaIaCHjMxKU0fT/qllmtJ7yPC0b6q+oPaOevpT3r333jt1btXx4sth9aCB4hLfQ4bqf/7pND0xOn26WxC6+eaiZbG2fErXrtGyE05wCWnCc3Tw229BWGmM8iiv2vZDhkTzeto1bIPb+fSxpxOEHjKSK5d2Ty55Pc7lha889ZCRS/0113Z+0ts7KwM9ZBSQ5dU3wv3XLteU3kOG99dfupgV5X3rrShvmza6aB8E++yjLrCD4Mgjg0DXX1UfUv0FiUIPGQlz+eVFx12855qffgqC1q2jdH8PrrTtDR2H6s1G991uvTXKc/LJQTBpUjSvHm90j1fz6kEDqxw9ZGRGDxnIOx99rUhtjaXpp7CxasLGgX1qdZNNNrF5ZN1113VzEUVjZ0tPa4UNimLTuHHj7LJFixbZ10y9SKT/TTn33HPNrrvuasdBVqS5xkfU702nsRLbt29v5zWuv6gHCFEvHGFDxc4vj6LPlyUexV5STxglUaR6+nrRpG2g8aH9b1RaOp+mpzz9361evbp9/emnn1Ljq3oaS/Lvv/+28z6fp33A92jSvXt3M2zYMJuup/LUUwkKm3pqET0N1LdvX/v0kHqoufXWW236lClTUuPwem3atLH7g46VUaNG2fFIlyxZYh5SdHqM9j09YTR//nzbm4zcdddd5uOPP7ZPaOjJS42DftZZZ5k//vgj1bsOinvuuefMzJkz7byedlEvFiqD1cOFeq+Qe++9177qiZeHH37YrssaNWrYNNFTXt4PGvsvplatWrY8v/HGG+14tU2aNLFPzTz66KN2uXod0nbS0zcV9emZXI4T9TSl84nG5fVP7InvgUplrcpcT3l0nOicpuNEvU2deeaZtjepMWPGmG233dZ+v1/35X0bqMct9Val/Vg9cKl3Ke1/22yzjcthzJZbbmlf4+erZZ0L089rrPPyRz2PqW6j85HqKW3btjUHHXSQ7V1NZZeeHHzsscds3tLWhzinoayVpo6WDR0nqi/o/K5zv3oTUv3Ct4nuvPNO2yuenhbXU7h6uhYFJGznpjRvHvVs4bVr52ZCeoo0Tj0hut4FzNFHR6/pwnO02WADE56kTVjgGbP99uoyMhpfWpT+5JMmbKiqS70oDchBLu2eXPJ6nMuRJLnUX3Nt59PeQWJlU9/Ixlpr6WKWLrwbc/XVUdqll6qrGXUxZ4yu+atOot67Fiwwxt1nAFCCDTd0M6H4sbnZZsY0axbN+56bStveUDtiiy2iMkDtBt2z0vH74ovR8osvNmbECGPq1TNm0iRd1IvSgYQhIAOlEg86COzDsEX8zQ555ZVXbICEn9SN+Ouvv566OaIL15eq0hNq1aqVfX0yrPT44T/Spf+tZfEXw9VV3wJVoBz9Td+Vn/f111+nLlDqZtjEiRPtRcaSgib8sCT6v+im8lfqXimkm8z5UrNmTTcXdT8Yp7+pRn9pKOCladOmdl7bJ07r16f5bvLFz2vIgTfffNPOey+99JKbK8qnIQz22WcfezMsTjfLvPhNRRQmvw8q4CpOQUuegpt0fJx44onm4IMPdqkRDVeyoau0lbQ/qOGviwNdunSxF8r8hTN1hy26UCA+HcXFy4n07eTXvbaRqGzUMFDqgjcuPrSDbrykUxfl6sZX21MXenQBR9tDAVkq67U/aNJ2zKUMLy+yPU5EwWpXhw2Kd9991773lrcNFMChYbQ0zJe6jffBBDo+dEGuIh0nkydPtjcedf5RUIb+76p7iM5/Go5MFLjog17Sz4XqktoPsxU/F8axzssPf4zqorPKLU/Hmt9H/DGaa30oHec0lJVczj25UtC46nUaCmXgwIH2Rg/7cjmhByPcNjRuaM6U+fPdTCj94QYXdG8vxrZtG81nou6EBw9W1L4xfftGXYWr23C96hqC2t6atP9WwDojVkwu7Z5c8qbjXI4kyKX+Wtp2Pu0dJE629Y1shfu10TB+Bx2k8dgVdR+la0gEUdCG+HQAmblgVis+JIn4NoRvP5S2vSF6+FpDlSxZYsz550cBGn6YTI5bFAgCMlAq6mnBe+edd+xNNgU1SDsXzaaIbN0M0ViEonE0dXNOT2npAp5o7GEFRyiqWzdMmjVrZr9L4xTG+b+np7HEB0Asi27IiC6a64ltPYWv6fLLLzd//vmnXebFxzj2wSIad1lPfEu8twrR/1FPhev/4YMwdt99d1O7dm07nw8KUPE9iVx11VWpxpR+07HHHmsbP19++aVNy9VxGn8rpCfjNDakGmjaXr169Up9p88jCq7wgTYab9IHiGg8ar+tNJa0tp8MHz7cBqtoXFU9faLIfa1PrXuvQYMGbg6Fans92RYaMWKEDbjS8aVjSTeUPeVRgJV6wBg9erS55ppr7FNF2uf0RJEvNzLtD3q6Q091aN9TWSEqK8QHcPjjIt7rDor4bSQ6/nQcqtzSGLAaB158Hm2bk046yR7juvCislsXV67U+H8hXdhRL0JxyqMANW1PbfdGjRrZdG0nHfd6OkxlsMpc3QTKtgeh8iTb40R0UbdPnz52OyjQRXnfe+89+wSU6KkkXXSLmzFjhu0tSuNd6zjT03sV9TjR+Vj7qPZJ9WAgOgf59XfkkUeatfQ0TEgBlz5I7JZbbrE301X/mDVrln0STOu+cuXK9jPpWOfliz/+FIij4FyVWaoTXXLJJXZefJ5c60NxnNNQlrI996jc0/6nye9/omPAp/u2nOfbC3oS1z8lzr5cjvgn08JyLSy41JiOLnS6XldMpUrG7LRTNC+66OoD0jp2jIItMtF+pAuo6l3ojDNM2HCO0nUzXMt0AVbL9CCFgjIqYJ0RK8aXe7K8dk8ueeM4lyMp/P6ZTf21NO182jtInGXVNxTEqeWa4jd4dfPWp6fVZ83YscaMGaMbDqrcRmn+oUzlF/9daYF7ANK0aBEFSonaDArg0zE3apRuCEbpjRtHr5Jre8O77Tad+HQTLioHxB+fHLcoFEEF9vXXX+uxi6CjxhdCTv7++++gRo0adv1pqly5clCzZs0gbMTa5ccee2xqWVhxT42Xq6l169Z23OGw8h5suOGGNq1///72cy+++GIqn8Yn9I488shUuv6WXqdOneqWZhY2MoJddtkl9bn11lvPTvq8XpWmcfolbIDbceaVpt+qv6f/n/5PStN4iQceeKDN65111lmp79Z0T9rYdGEDJ7Xs+eefLzHNq169uk3v06ePSwmCRx55JJU/bCQFW2yxRep9ixYt7HqU2rVr27Tzzz/fvl+ef//9N9htt91S31WpUiX7f/TvNXZ+umeeecaOh+rz6Pf4ea1TjbnqabzJsLGWWh7/bk1NmjRZatxqLJvWr9ZdU41hmBDPPvtssW0b3yc0HXbYYTbfokWLgrCBX2xZ/HPVqlULvvnmG5vXmzNnjh2TV8tfeOEFlxrYfGuuuab9jMboVx7tv5MnT3Y5Vq3HH3/c/ub27du7lFVLZXLz5s1T61pT/DjWsTthwgSb97vvvgs22WST1LL04/a8886z+eJUXmlZq1atUuW/nHLKKTZdY8zqHKv5o446yi1dtfw4940aNXIpK1e2x4mMGjXK7s9+Wfo20HfF6RzQpk0bu0xj+XtKr1+/vk3XOLj+XDho0CCXY+Xyv1djbZel+++/P/W3Na211lqp+c0339yeg+OmT59e7FyVvm369evnchZJ6jr3rrrqKvt3e/bs6VKwPBpX29dHNaXXibbeeutg3rx5Lndu9SGvUM9phaBDhw52vT700EMuBZLtuefnn38ulp5p0nnTGzt2rP1eHTM//PCDSw2Cxx57zOZt2LBhcM4559g8tWrVsm1GFPFt4ilTpriUBNJ46p07F43fnD5df73L6DzwQJSuNorGdS7J4MFRPo35Hqsz2nGmlX7mmUFY2YzmL7rILUyeiy++2G7D3r17uxQkRS7tnlzyepzLC98DYXml7depUyeXUrhyqb/m2s5PentnZbg+PLf5/xcSaln1jd9+i5Yta5o0yWUO/fprEO7kUfpbb7nEkOq24bkh2HPPILj55ihPkya6geQyICl+//13e8xqQkK88kp0vKQfe5p0TH3/vcsYyrW9Ie+9Fy1r3VqVMpcYUp1M6YcfHgQDBkTzuof3zz8uA1aVw8NtomNU19BQhICMcKcgIKN0dEEuHpSx3XbbBT/++KNd9k9Y6F122WXFKv1qpB533HH2pCm6WaD0zTbbLJg/f75Nkz3DQlrpaiB7akAoAMF/lxq7L7/8sltasu/Dwn6vvfZKfW6jjTYKnnzySXtTW+99QIY88cQTwQYbbJDKq6AM3bzZYYcd7Psdd9zR5YxMnDgxlVc3feIX6yUfARny1FNPpRo9mtR40o3NuXPnuhy5B2SI1rkaG+uuu27qu7Ve9R0lXTwdM2ZM0Lhx41R+Tdou48ePdzmKfPrpp8HBBx9c7Oaigl60D+hiBnKTxIAM0UnVHyN+0oUBNerjx7UCsLS/KUDL59O+oQCtDz/80OUqon1ceXRjP929996b+h5dLBs4cKBbsuolLSBDVFaorKtatWpq3ascUZDMuHHjXK7IJ598Euy3336pfJpURl977bVLBVFNChu0usGjbfHll1+61Mjs2bNTZbkm7bczZsxwS1etsg7IkGyPE1Fe3dCK523QoEHGCqwufmm5vluBT3H6f2611Vap7+gcNnZ0bi4L/m+WdUCG3HHHHcWCF7Wv63hUnS8T7bvt2rUrdq7aZpttbDmTSVLXuUdARumozqKyL/1mjNoI6QGDkkt9SAr1nFYICMgoWTbnnlwCMhYuXGhv8ChNARhxurl56qmnpm7yqF0TD65HpCACMuTPP3VCCYLddiu6MLrPPkFw33166sFlCimwIjyH2uXnnusSM9CDFM2aBUHLlkFYIXSJjtq03boV/R1dnF1WYMcqRkBGsuXS7sklr3AuL3zlKSBDcqm/5tLOT3p7Z2UgICPhllffyDUgQ4GfSlNQaLoRI6L6ipbrvsQjj7gFSBICMhJK9acjjih+7IVtxOCrr1yGmGzbG/LXX0VlQCwo1lL50Ldv0Xfsu28QvPuuW4hViYCMzFbTP+GKqZCmTZtmh30IK6u2O1fkTruPusgLGwCmRo0aS3VHv3jxYjvOoLqzr1mzpu3mbkVonER1fa+xitdw4yJmQ12Xa3zEbbfd1nZBXhL9zrDhYrvWDxsnLjUaskRjz69K6mY4rHCYWrVqrfB6jFN3htpGlSpVstsom/Wqrgl//vlns/nmmy815mo6//1Lliyx3++7i0du1N10mzZtTNOmTc3EiRNdanJon9DxqX1T21llQibaDzQkwPz5880WW2xhhw0oDe1XKnuStk8NHTrUdO7c2bRv396MUtdsCaJ1pvGOVc4t79hVd6c6brVuVbaXtD2XR+WWzgP6jqTQ0FctW7a0w6tMnjzZpZaNbI8TUdfJWn86H1WvXt2l5kbnaA0LtuGGGy63rM4nXxdYsGBBXs9X2dL/W+tOQ+ZoPacP85KJfqv2+fXXX98eH+n1mWytqnXuaTgCDXvTs2dPM3DgQJeKbOncpHOU6kQqt5ZX98ulPrQsST2nFQK140aOHGm70/bDCKK4XM49K0rtNP0tDQG5Mv9OoVK5ojJmypQpdnijxAvLJtt9sLoFV9t4ZW5TdYEfthPs30kwDU/Vv39/+9qvXz+XiqTJpd2TS95l4VyefEOGDDHdunUznTp1ssPslhe51F/z0c5f1e2dlUFDOWtItjPOOMMMGjTIpaLC0hBqqv+oTlKliktEkuhaj7+erDIJCfPrr9HQIRoSqGpVl1iCfLU3NOyh/q6GmKUdmghHHHGEvef+zDPPmA4dOrhUVHKvQKnohoWCI9TozHTzQpV7La9Xr15ebsooSKJ27do5BWOIbmbpoteygjGkSljR0jiL8WAMWdXBGKKLA/o/5PvmltbJdtttZy+cZrteNXak1lM2jS///Qp+4sJE+aV9okGDBvZ4X1aj3gf+aP8pbTCGaL9in8qN1pmC0rI5dlXOqNzeaqutSnWRxlO5laRgjFUt2+NEdIFLeUsbjCE6L2ubl5cLZdnS/1sBXzpnZhOMIcqn/PpcaYMxpKKu8/KiatWqtuzT+SWbul8u9aFl4ZyGlSmXc8+KWm+99WxbbWX/HZSRsGwKK4MmPDmu/Aubm2yS+GAMFI5c2j255F0WzuVYVXKpv+ajnU97B+WebgzXqkUwBlBaG21kwhPF8oMxJF/tDV3703FLOxQJR0AGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAAAAAAAAAAAAAAAOQZARkAAAAAAAAAAAAAAAB5RkAGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAAAAAAAAAAAAAAAOQZARkAAAAAAAAAAAAAAAB5RkAGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAAAAAAAAAAAAAAAOQZARkAAAAAAAAAAAAAAAB5RkAGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAAAAAAAAAAAAAAAOQZARkAAAAAAAAAAAAAAAB5RkAGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAAAAAAAAAAAAAAAOTZakHIzVc406ZNM3Xq1DGbbLKJadSokUsFgOSZN2+emTRpkqlatapp2rSpS0XSzJkzx3zxxRdmo402MjvuuKNLRZL88ccf5qOPPjLrrLOOad68uUtFvqha+eabb9r5Pffc01SqROxvWZoxY4b59ttvTc2aNU3t2rVdKlB+TZ482fzyyy9m++23N9WrV3epQDK98cYb9lX1D9VDUHimT59uZs6cabbaaiuz7bbbulQAhWD27Nlm6tSpXAPGUlSuq3zfcsstTd26dV0qgKRavHixeeutt+z8XnvtZV8BJMtnn31m5s6da0aMGGE6duzoUkFARp067h0AAAAAAAAAAAAAACitZ555xnTo0MG9AwEZderYJzivvvpqlwoAyfPxxx+bnj17mnr16pm7777bpSJpXnvtNXPNNdeYFi1amOuuu86lIkk+//xz06NHD7PNNtuYIUOGuFTki55UaNu2rZ1/8cUXTZUqVew8ysbDDz9s9+sjjzzSdO/e3aUC5ddll11m3n77bdO7d2+z//77u1QgmTp16mR7dHnooYdsDwsoPPfcc48ZOnSo6dKlizn55JNdKoBCMGbMGDNgwADTunVrc9VVV7lUwJhhw4bZ62yHHXaYOffcc10qgKRauHChad++vZ1//fXX7SuAZLniiivM+PHj6SEjDQEZderYHUI7BgAk1bhx40ybNm3scCUTJ050qUgaXaDt3LmzbRiMGjXKpSJJJkyYYFq2bGm7qVVX98i/1VZbzb4uWLCALtnLmAKM+/TpYwP4Bg4c6FKB8kvtuJEjR9ob3F27dnWpQDLVqFHDzJo1y0yZMsXUr1/fpaKQKPirf//+9rVfv34uFUAhUNByt27dbHDc8OHDXSpgbKBOr169zBlnnGEGDRrkUgEklYYirlatmp2vwLc2gUQ74ogj7D13esgojoG9AQAAAAAAAAAAAAAA8oyADAAAAAAAAAAAAAAAgDwjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIMwIyAAAAAAAAAAAAAAAA8oyADAAAAAAAAAAAAAAAgDwjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIMwIyAAAAAAAAAAAAAAAA8oyADAAAAAAAAAAAAAAAgDwjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIMwIyAAAAAAAAAAAAAAAA8oyADAAAAAAAAAAAAAAAgDwjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIMwIykJOPP/7Y3HjjjWbgwIEuZWlvvfWWzTN06FCXUj788ssv9v+l6YcffnCp+XH//ffb733jjTdcSrLNnz8/tS6mT5/uUgEAAAAAAAAAAAAAHgEZBeC3334zBx54oJ2ef/55l7pqKNjiwgsvNBdddJFLWdpll11m83z44YcupXz48ccf7f9L0zfffONS8+O6666z37uqt+/333+f2tdKmrQ/zps3L7UuPv/8c/fplW/KlCmmR48epkmTJqZu3bpm7733Ntdee635/fffXY7sKKBE61z/n/bt27tU5Kpz585L7R/xKR5gNGnSJNOtWzez0047mTp16pj999/fDBkyxCxevNjliPz111+mV69eZueddzYtWrQwgwcPdkuKzJ492263du3a5T04qrwaMWKEOfjgg039+vVNgwYNTKdOncxrr73mlhaXTV62U+4++ugj07VrV7PDDjvYY6Bt27bmvvvuM0uWLHE5IlOnTjVnnnmmadasmaldu7Zp1aqVueaaa8yCBQtcjsi9995rl+mYOv/8883ChQvdkoi+96STTrLH4osvvuhSK4Zs17VQNsGbM2eOueCCC0zTpk3NdtttZ3bbbTfTp0+fEusYqufqGFOdRPtOmzZtzM0332wWLVrkcrDfYNXK5dzv3XPPPal63PHHH+9Si3DuKd/++ecfW461bt3a1kFUdp122mnm66+/djmKU7l5xRVX2H1C5eAee+xh+vXrZ9uK6XQdQedY7YvHHHOMmTFjhltSRA99aN8ZMGCASwFyl2vZN3LkSNOhQwfTsGFDs/3225vDDjvMPP30025pZObMmbbtq+/bb7/9zLhx49ySIq+++mqJZSeQdz/9ZEyPHsue/vgjyqvXu+825sQTjTn0UBM2lHQRUhcAo+VeWCc1vXsbc/jhxpx+ujETJ7oFMe++G333ZZe5BGDlyqVtLy+88EK4Cx9uy/Qdd9zR1jkyldm004CVQOeQ9HNRfPrgA5cxpHbkAw9E6Wed5RJjOCehvAoqsK+//jrQKujYsaNLSaYff/zR/k5Nt99+u0vN3fnnnx8cdNBBwZNPPulScqe/r9+x+uqru5Ti5s6da5cpz/jx411q+fDpp5+mtkO+/2+1a9e236ttlE+5bvMvvvgi9X8sadL+OHPmzNT7559/3n165Ro2bFhQpUqVYr/FT40aNQrCyrTLWbL3338/CCvmwXrrrZf6bEn7ctK8/vrr9vc2bdrUpax61atXT63HTNPQoUNtvpEjRwZrrrlmxjyHHnposHjxYptPTj31VJu+zTbbBBtvvLGdf+SRR9zSSNggsuk9evRwKcnx+OOP29+m35gU/fr1s78p0/TQQw+5XJFs8xbydnrnnXfs71K5UVbeeOONEo+Bbt26uVxBMHz48GCttdbKmG/nnXcOFixYYPP5/WzDDTcMtttuOzt/0kkn2WXegAEDbHrjxo2Df/75x6WWDf+b/e8tS9muaymPZdNVV11lf0PPnj1dCrIxZ86coFatWnbdpU877LBDsHDhQpczcu+99wZrrLFGxvwnnHCCy1X457RC0KFDB7v+0s9nFV0u535v2rRpwdprr53KV6NGDbckkvRzTyHYcsst7fqZMmWKS0mWAw44wP6+9Eltp88++8zliuj/ULNmzYz569WrZ9uL3rfffmvbcZUrVw523HFHm6d+/frBv//+63IEwYQJE2y7rGrVqsH06dNdavJcfPHF9vf37t3bpSBJcin7lixZEpx44okZ82oaMmSIzffff/8FDRs2tGmqE2g/1qQy0/vtt99smak8qs8jmR544AG7jTp16uRSCpjKyV12Wfb0889Rvv33z7y8VatouYT7eXD44VG61k/z5tEUK8uDP/4o+q5XXnGJ5cP1119v940zzjjDpSAJcmnby4UXXpgxryZt4zjaaYXt999/T21bJMi++xY/z6RPL74YhI0K3bAKgt13L0pPv9dRwc9J5YXuwekYfeaZZ1wKhICMcKeoKAEZ/jsGDx7sUnK3vIAMNVq1fLPNNit2I6M8KMSADP97s93m8+bNszcZ0qd27drZ79F2V55VEZBx7rnn2r93yCGH2OCEjz76KOjatWvqd2RTuN98882p/Kuttpp9JSCj9B577LGl9hXdBPTreNSoUcGiRYuCTTbZxL7ffPPNg/vuuy944YUXguOOOy6VL75/rrPOOkG1atVsgI0uzGr5Pvvs45YGwf3332/T6tSps0pu9i5P0gIydKFbF7b1m1q3bh18+eWXwSeffJK6GL7tttu6nLnlLeTttCoCMvwNDh0Db7/9djBjxozg2GOPtWkqi3SjQheFd9ppJ5u26667Bo8++mjw0ksvBSeffLJN03TXXXfZ71Ognd7r/6JtsMEGG9gLFbpgLLpp4m98aBuWNf97V8W2z2ZdS3ktmwjIKJ3rrrvOrjftI7oQ98MPPwQ33XSTTdMUv4mjY8pfGFQ58vDDD9t954ILLrA3LePHXKGf0woBARlLy+V8Hpd+Mz49ICPp555CkOSADF8/0nT22WcH33//va2H+H3p//7v/1zO6Eb27rvvbtPXXXfdYODAgcErr7wS9O3bN1U+KrDR8ze6VNbKgQceaN+/+eab9r2C3hSgobS7777bpiUVARnJlWvZp3qe0jUddthhNlD3qaeestcHGzRoEPz5558237vvvmvzqIyU/v372/dXX321fS/HH3+8TVOdE8lVrgIytH+OGLH0dOaZRTe3lOe116L3RxwRzX/1VRBWdqM0TQMGRN/36afR++7do/fhurLv77knei+XXRalheVgeUNARjJl27aXl19+2aZr2m+//YLnnnsuePrpp4PddtvNplWqVMk+pOfRTitsBGQk1AsvLH1euvHGonOO6v6PPlr03k/p9zoq+DmpvCAgIzMCMsKdolADMnTB+LTTTgvuvPPO4Ndffw0uuuiioE2bNsGRRx5pbwp6ukisp5f8d+jiid5rUo8Wnm606+KzLp6oAaubErqhGre8gAx/UTT+tJQasPqd55xzjg3SuO2222ylSjcs9QTD33//7XIW0dMGvXr1svn0f1I0qgIiPH2PvlPTW2+95VIjugmh9BcVdef4daW/rQqcLjKpEjdx4kS7XBeB1CA/Imyk7LnnnsHBBx8c3HLLLcWe7CptQIZ+q3p3OOaYY4K99trL7m/6HfEKXTwgY+rUqcEpp5wS7L333jbgIF5h9PS7tT7btm1rv1ORvR9//LFbmv02z5YuSOh7/LGSHpChSq62vbaV1v93331n8y2P9l1tl2uvvdalFBk3bpxd1j08+Wof0cXeW2+91V4A9PREq/8dqiwvjyrk+n2vvvpqcMkll9jPEZCRX9pm+p3qPUPbzf9uTQrg8LQddSNL6U2aNLFp2jf1XhfNROWa3tetW9e+17G7/vrr24ZU+nGfFEkLyPDrVJPKIc8HJ+miuZdt3kLfTqsiIENP0+lvnn766S4lsEFlStOkiwuiJ0J17o2fe3Ss+Cc2/AUi/32//PKLfe8DOXQTWRejmzVrZt/7Gx9lTX9b06q4cJHtui6vZRMBGaVz5pln2vW2/fbbu5SILtIpPV5P8UE7uunjj0FPdWmvPJzTCgEBGUvL5dzvqRzUMgVUqB2k+fSAjKSfewpBkgMydCNav03T7NmzXWpgb1QrTTc3vPfeey+VVwHZcQrK8Mu++eYbm+bLWLUZRW1xvffnX7Vr9V6BGklHQEZy5Vr2+Z6xdK0kfo1B4udzf2ycddZZ9v2IESPse12zEQVy6P0WW2yxVL0AyVKuAjJK4p8oPu88lxB69lnt1O6N4/Pphpa8+mr03vci4AM5fOBR2Hay73UuSP+ucoCAjGTKtm0v/kFCBd/Fr6foxr16d9My35Mh7bTCR0BGAbnmmuj8od4zdGyOGxcFabz7rm40RsvS73VU8HNSeUFARmYEZIQ7RaEGZPgb7gogUCXC5/GTf7LTP/WXafIXSXQTSJWWTHkuv/xym0eWFZChoAZFmGq5bnx7CoZQmrrA1ZM1/nv9dPTRR7ucEQWB6Emb9Hx62kqBBqKLfj49/SKQv3gevxjo15Ua2+pC1X/2tbBA19NcW2+9dSotPsUr46UJyFAl0D8BlD7pxrqe0BUfkLFveHJSpS+eT11ix7uI1ROYvneH+KR15rt3zWabZ0tPO/nPal7iARkKCPHzftLNeFVgl2fQoEE2vyq52s/j/MVgrZOS6Kkt/3kNt5KLSy+91H6WgIz80YUrf+xq/YqGy9F7TQrOivM3UbQNFJWu41rz/gaAL6NbtGhhL5JpX9B7dUOYVEkLyNB6U0S/fpN6mfFpCtxTms4fXrZ5C307rYqADH8OUs8X/uKAP5/qpm78om+6+fPn2/Of8vrjype7evJP1GW4zgs6jvwNeW0P/9RyWdPf17QqAjKyXdfltWwiIKN0fF1V5zA9FS6TJk1K1bdUXxQF2cYv6On92LFjbV1Udd/40Cbl4ZxWCAjIWFq253NPNxDVu6GW6YlvX0dOD8hI+rmnECQ5IENtRJVZ+n26wSx//PFH6hpB/JrANddcY9O0/XVBPM6XdZp8z159+vSx7+9xT7X5wDY9QKEgfH2Pelzx5W+SEZCRXLmUffEbeurlVXVWXSxWj2nqIl+f83w7vHPnzva98ui99oWff/45VX6OHj3aLkdylfuAjAkTohtUmjRfkt9+C4I99ojyPfVUlKYHwfTel226eaL3t90W5VfPAXpfzoam9gjISKZs2/Zqd/lh9zL1PO3rHeppQ2inFT4CMgqEempq2TI6f9xxh0uMUZqWpd/rqODnpPKCgIzMCMgId4pCD8jQpCeU1L25Lij7Cz2KJBVdNNOO7/MqslTvNfmbJWqcapkuuKj3gK+++io1RIRudvub+MsKyPBPBuhiti7Mef4ityY95aveIfS3fTenugCjhqzogqAuxih9//33t70+qJtJ9bygNI1XLKo8+e/MJSBDkwIe1AW8xgvVWJ8ffPCBDXpQxUv/B12A140M5VW6r/RlCshQ5U/z6ZP/jL/4pEkV+2effdb+Lj19psqj76HDB2RoUmGlp4c0BrPWvdL0FJGn5bo5d+WVV9reM3SBQE9jKN8VV1xh8yxvmytYIv03az1k4p+KUiCLvzARD8jQ9jvvvPPskyL6nXqvdPXuIctaR4pC1rpQfvV+4Wk/8N3dqivwOO1PXbp0sQEbvlvk+D6Q7f+NgIz8808faZ36XlIUTa40TfFjUvuFGkN+mQ/g8ce6jk91F6h5bStf9ugmug9kSqKkBWSIygkFSel3qTtojZGpeZU7Kuvjss1byNtpVQRkqEzTRQT9XZXXPohS54F4AGM6net08Vd5dT6aPHmyTfc3vnRzzJ/fdE798MMPbdmpixHqbWlV0e/RtCoCMrJd1+W1bCIgo3RUv9GTrlp3GnZEvaOstdZa9r2vW0m8Zy71tOXrz37SvqMnx71CP6cVAgIyMsvl3K8xuLVMPeKpdzNfR04PyEj6uacQJDkgQ9TjoLal6vK77LJLqocu9VoZDzjz5aW/sZFOdRYtVzkpusGt97rWoF499RCH2uTqatwHfKiNVwgIyEi2bMu+eGCuriWovPPvNaku6a9RqW6oa1SqF2j/9UEfelhFN/Y1rzIRyVfuAzIUiKQbVIcdpsqtS3T0kJfK5AsuKBrjPzyvB4vdUNO6aaagpd12C4JbbgkCDTulPArs0Gd8/nKKgIxkyrZtr97alK7JB4PGxXvv8tfraacVNgIyCoQfnkT3MtIexLVKCsio4Oek8oKAjMwIyAh3ikIPyNAFj/gQEb6ioQsdcf474mOiiy4I+WW6qe7p6SZdlFa6nhoQXzHJdBPb936hgy0uHpAxdOhQl6ogtvGpdP90qipOeq/v9w1g8eN2alJwyIoEZOiCUDoFofhKmeg7fX7f60SmgIx4l+fxyff24C+6pe9j6vYyfkHAB2Soq2w9ben5CmL85u5PP/1kL3x6enpaFxuUzwdBeErTlL7N44EiftJ3pNONKG0LLdcQLl48IEMXceP8RQltB/1flreOfH6N6+f5/UCVbP3/4nyXtn5SHjWefLBItv83f7E5076cREkPyND6V/d++o26OeLpWNUTlEpXgJGGClIAj/Z5H3SjyV+YVk8nDRs2TKWr20EF1Kg8U1mnsR3VdXzjxo1t0Jm2Y6Zhj1aVJAZk6OlDvw3ik44LP3a3l23eQt5OqyIgQ0FyrVq1Sq0vP6mcLGmsdJ3X4zd742WwxrQ+5JBDUsu0fXRe8BcoFOCm87lulOm41BMh6b0QrUz+d62KgIxs13V5LZsIyCgd1TV0Mc5vXz8pyFTBpv5i3Oeff55appuJ2q9Ux2vevHkqXTd/tH9JoZ/TCgEBGZllez73vRNo8u0bX0dOD8hI+rmnECQ9IOPGG29MBaPFJz0o4QMUxfc4oBvTmfgHLOI3thTc5tuVKjv1AIIP7FA5qra2Au51Htbfiwe3JQkBGcmWbdnne+rUpPO5zt0avlYPAPl0lWGeHtzxPWSp3qjt74d6Um+rukZ18skn27+jB33SHypBMpTrgIxZs6IbWrpJFRuOMWXs2GhZfLryyuiml/f660HQunW0TEM36klk9VKs92EdNvjhh+gGmK736Nrj88+7DxY+AjKSKdu2vXqV9sv0sGo6XUvxy3VNXWinFTYCMgqA7tP4QIqSrk+VFJAhFficVF4QkJEZARnhTlHoARnpF0J0893nj/Np6TfndTHEL9OTUTvvvHNq8t2k33DDDTZvSQEZuvG+6aab2mXpF0TjARnxbkhV+fHputksGpdT73UzJP474pUkPfVQ2oAMRdRmou5Y9USQLsbH/5YmHziRKSDjf//7n71YmT7pCUpF8vr8d2TqlinGB2SoER+n4VyUrifR4nSBSpVBXazyQTOa1HNEnE9P3+Y33XTTUr85/W+Iv+CkCql6E/HiARnxIBvx+4gmBdUsax2Jopp9/mnTptm01uEJV+/9+H5x6jFFBbnGhVVjyX+2X79+dnm2/zd/sZmAjPzQxS+/LV5++WWXGlEQVPpQPHoaTl0f+/fxsapFN6O1/6hs8Q0wBdv4hrKefNK21bx/+i4JkhaQoV54/M1lVYT0JJeGftIxoTQd276MyyWvV4jbqawDMnSj149Rrd6sdM7V8Rwvv/wY6p6C9vzNDK33TBcVRGOf6ulSBUT16tXL5t97771T/0d9VoF+mtcNsrKiv6eprAMycl3X5bFsIiCjdHxDcaONNrIX93TTRvUJf2PSjxOvIF2916R9RwEanrq09ct8vdYr1HNaISAgY2nZns8VaKSbh0o79dRT3adLDsjwknruKQRJDshQL5b6bQrOueyyy+w5UudMP7SntqkfjsYHsOmcm4nvATG9q2/VC7TvqS0/ZswYm0fXENQG1LAPutGtAB+1z1TGal9LGgIykiuXtoy/Ma9JvcEo4Ex0s03lltK1H8efjtZ+q8+rvjlr1ixbZ9DxomHNDjroIPsZBaP56zPpbWKseuU6IEM3qnSTSl3D//GHS4zR9TcFZWhcfg0fpfOz8qcHICioOKy3BuoVSZ/RtTTl00N0Z54ZzesGm/98eO4vDwjISJ5c2vaql/o0XdtPp/sDfnn6NQraaYWJgIwC8Pbb0XliWeeKZQVkSAU9J5UX/jobARnFEZAR7hSFHpCRfoM214AM3ejxy1T5UIM1ffIHTkkBGbpw7dMViBD3SCwgwzd0JVNAhgIS9F6N5Uy/Qxf7ltdDhoZMUXqmgAxFtqbTxXQ/5Ie6ZdWF3Xh3Zr7RnikgY1kUfOLzq+G3LD4gI32su0wBGb6HCDX+te31GS1XWrYBGdnQxYdNNtnEft7fiPDiARnp3e3HL24o3/JoW/pxVzUesT6j/5vea1z25dGTVMpb0hNaJSEgI7/8dogPbROnckwXetXN65133mmHq/E3rxT4pf0gE98IUvfxyuOfwlQ5oLJGF25Luhi8KiQtIEM3WPR7VLbFewHS+te60zINfyS55E1XSNuprAMy/D6hKd67kegCsNJ1bvPi5x8d7zpXLo8C31SW6QKwLkb44Ebfu5XOfXrvg95WNv/7yzogI9d1LeWtbCIgI3e6qaJ1pmngwIEuNeKH79O+oHJRFwZ93nhvUKIh7/wyf+ylK7RzWiEgIGNp2Z7Pn3/+eTuvSfVonXM0+XaRbmzqvZ4azyRp555CkOSADNXh9dsO1UXNGD8sqSb1qCI+EMeXjXG6qeHzq8eNTBTo729u6AaLf0DEB+P7sjfTTZVVjYCM5MqlLTNq1Cj7XlO8FzpRbz9+mc7PmehJai1XuafAIc0rqFc39Pwxc/zxx7vcSIpyG5Chp/bbtIluRl19tUtcDvXiovyaXI8BS/E3u8L6qx2zX/O6zhHu54Gu4er9ZZe5zIXN19EJyEiOXNr2GlbNX0dWezhdjx497DL1sFwS2mmFhYCMAqDh93WeyDSMlre8gIy4CnROKi8IyMisUrhSUMGE293NRbbccks3Z8wNN9xgxo0bl5pefPFF+9qhQweXI7Ow0Wlf99xzT7PRRhvZ+dKI/5ZXXnllqd/y+uuvm2222caEFS2Xy5j//vvPzRkzZ84cs2DBAvduaauvvrqbK3LttdeaH3/80TRu3Nh8//33JiwkTPv27d3S0qtevbpZc8017fzUqVPtq/fBBx+YTz75xL3L3tdff21uvfVWOz906FAzceJEc+ONN5pq1arZtJKkb/NsDBs2zMydO9fOd+/e3b5mMmXKFDcX+eqrr+xrWFk1m266qZ1fljXWWMN07tzZzuv/pEm/d6uttjJh5dqmz5s3z1xxxRWmTp06S23fzTff3L7634qyFzZQzAsvvGDnwwZsseNTlixZYvfV008/3YSNHLs/bbjhhuall16yy3fffXe7H6T77LPP7HavUqWKefjhh22emTNn2uNK5YDKGk0//PBDqfbxikBloqy77rqp8kjWW2+91DoPG5f2NZe8cWynZfPrVTbYYAM3F9FxIH69jho1ylx++eV2vkePHmbChAlm++23t+9L8tdff5kTTzzRLF682AwcONBsvfXWdv1LvXr17KvKTvHp5VUu61oomyDL2m+0HeWff/4xf/75py0fVV+U9PLw999/d3PGrL/++m6uCPsNykq25/N4G0ptDLVPNKldJP/++699P3nyZPs+jnNP+eP3m5LKQfHlntr8orLxzTfftPOeP4eKz5fuzDPPtGVdly5dzOGHH86+g7zItuyTli1bpq4N5Xo+v++++2zbt27duqZ///72GpJov9U1EPZflDmVu/PmRfNHHRW9StjWMc88Y4yu506a5BKdjTd2MyH/2Th97u23jalVy5izz9YBFqXrfbif21eZPTt6BfIsl7b92muvbZo2bWrndS8hTu0qn1ZSvYR2GpBn4bFi3normj/ySGPS7hPkjHMSyhECMioQf3NcN3jE3zhv1apVqnJz6aWXml9//dXOzw4LMd2M0M1yX8lZa6217KtuYvh88uyzz9rX5QVuLE+7du3s68KFC83FF1+culD4/vvv20pQ37597YU/NZ43dg2IsWPH2t+jvPr9udL/U3Rj3///dFPM0wVH8cvk559/dnMlUwXuoIMOsvNqtPsADF3k1AXMXXbZxTz22GM2LVv+t4rWh/z222/mf//7n533v9UraZtn484777Sv2j/8zYdMbrvtttT3Kjjj/vvvt/O6yKHKbDa6du1qX1UJvu666+z88ccfn7qxr/2hX79+Ztq0aTavKsHa5m+FJ/ennnrK5mnQoIF9XRYFcyhwQ1N8Xfm0P/74w6UgF4MGDbLbY5111rH7dtyiRYvstjnkkEPMRRddZN/r4m2fPn1Sx4S2dTodzyeccIL5+++/zdVXX20aNWpk03Xc6waBtpW/QaaGUXoQCCL+Zv53331ng7m0znQ8XXLJJXZefJ5c8npsp+WLrzMFW6jM1nlMZdcbb7xh032ewYMH21cFpOkcqDJfF3n9lKmM6tWrl/nyyy/t+ebkk0+2af786APV/Dl8k002sa/lVS7rmrIJ3rbbbpuqr9xyyy32xrRMmjTJ3HPPPXZe9SltT9ENRBk/fryt32lf0AU7lZWiOmqLFi3svMd+g7Lky7nlnc9bt25t9+P0ydfLtd/r/eOPP27fx3HuKX/8fjNixAj7MITq9qqHqMzyfJ599tkn9SDF2WefnXr44KOPPjK9e/e28/Xr1zfNmjWz83F6+EFtYH3+9ttvt2nsO8iHbMs+0bn2wAMPtPOqf+u6guqM7777buo6iOqJ/tzvzZgxw5x33nn2XP/QQw/Z9i/7L1a5J56IXnfaSYVvNC+6SfXIIzooTFiY60mxKEhDQUT+3K7gpdiDcZYCM2+6Kfp83766GGqMfwjMB2/4wKW0G+VAvvjyWpbXtpfjjjvOvqo8HzBggG136Rzg66zi88TRTgNWgiefVDRUdP449FCX6Oh+jM4lmsLjLsWnzZ/vEhzOSShvggqsog1ZcuSRR6bS1b2oXqdOnWqXabxsv2zNNdcMatasGayxxhr2fVgJSY2hHlZsUvk0ruuzzz5bbCiPTF065jJkiRx77LGpdA1d4rt21dS6devUcAjqZtCnh5UiO1SJhr7YwI27n2nIkvR1Jb7bUU377befnTRUhx83vFq1anb8z7BylhoOpUqVKll1U6r/o/+Mps033zw1rql+8/fff2/zZTtkibp3XXvttW2a1ou2qbp71fZSWlgxDA488ECbV5a1zZdlwoQJqc9pSJt0M2NDluj/p7+rcfX06tPVDXIufHdwfkr/nX6oFj/F/5YmdXW7PL6bupKmAw44wOVMnqQOWRI2cOy+rN+mIYcyUXetfh2vvvrqqWNAk47psFHlchbRmI1armGU4ss1fI7SNU6vym7NH3XUUW7pqpe0IUvUhfiGG25of5MmdbMYP3Y0Lvi8efNyzusV4nYq6yFLtF6aN29u/6afdBz4eZXNKnPFj+Vf0qShluI0rJO2kbbbDz/84FIDO5aq8jds2NCWncqj7jV1HisL/veW9ZAluaxrKY9lE0OWlM55551n15uffB3YTzfffLPLGdhu0HUu9svS6yNnq2vONIV6TisEDFmytNKcz+P8sH5qY2SS1HNPIfDt2iQOWaJ2fXw/SS8HD1N3wzHqejZ+jo3n1/k23r735syZE2y66aY2zwsvvOBSA3sNQedgtbs1bJjyaL+dPHmyy5EcDFmSXLmWfboe6K8daYrn1ZR+fUHXodq0aWOXadgeT+m+Dq/hDnxX+oMGDXI5kBTlcsiSTz6JumnXNHq0S4x59dUgaNKkKE/6pK7f43S9VUMWa9mtt7rEkNI1XJ/Sr702CI45Jpp/8kmXobAxZEny5Nq2//fff4PddtsttTz9HFDS9V7aaYWJIUsS7K+/gkD3sXSOyDCEUKD7dVpW0tS9u8sYqqDnpPKCIUsyIyAj3Cl0Yk2yfAVkfPfdd0GLFi1Sy3yggaeLaH7sWD/tueeewWeffeZyRHTT1S/XWNt+vPudd97Z5SjukRwDMnSh+7LLLrNBEX65LtAcd9xx9oTr6cJNs2bNUnl0gWv8+PGpxnC2ARl//PGHrZj579EFoNdeey246aabbOCFKnDDhw+3ee+7775UoEb6+Lol+SRsIGlcu3hFcNdddw0++OADlyP7gAx54oknil04UNCFAiR22GEH+16BDd7ytnlJ/E0qrYtMF1HjARlq1Or/598rgOfee+91ObOnMYb9d+g3p9OFjgEDBhQL0NGk7T1s2DCXa9kIyMg/je3s11/6uI7eokWL7LpXgJXPq/nuYSUr0w1bjcOvi7rK8+WXX7rUiILDVC7579H6mDFjhlu66iUtIEMUNKdAs/TGq8596UF0ueQt1O1U1gEZMnfuXHse0pilfp3onKBzwTg3HrvoQrFfnmmKB2QoGMrn1/k7ThcSNI62P+8oYE7ntbLif29ZB2RItutaymPZREBG6fz3339Bv379gi222CK1DTVts802tl6dTvVR7We+TqhJQcHXXnut/a64Qj6nFQICMjLL5XyeblkBGUk+9xSCJAdkiC6W+Taln3SDW0Fr8+fPd7mKjBkzJmjcuHGx/GrHqU2eiW5kKI9ucqRT+9Gfj7Wv6jpDEhGQkWy5ln26JtW2bdti12oaNGgQjBgxwuUoogALLdcxojpknNoXW221Veo7OnfubK9rIVnKZUCGxsvXTag2bXQx1SWmURvo6KOjfH5SftVx//3XZXJ0M0vLtY7SrwWGddrgoIOKvkPlYPrnCxQBGcmUS9teVFfRNow/GKnr4LrWnunaNu20wkVARoLp5rs/T4T1rKXkEpBRQc9J5QUBGZmtpn/CFVMhafgDje8YNs5s15wVhcZhU1dbW2+9dWoszbiffvrJDkeiITw2dOOypVM3jBq2o3bt2nZoCo0v3KdPH3PllVe6HCtu8eLFtov2sNJkatasabuDzES/V12IqcvpTP+fbGkoEX3PdtttlxpzVL9BU9iIt+9FXZ6pG8waNWrY8UizNW/ePNvt62abbbZU15e50jr55ptv7Pfo+zwNw6Gx89Itb5vnw6xZs4yGBNFQKn79rSzqDlT7n/7/1atXd6nlm7oObtOmjR0XceLEiS61sKi7Pz/cTK1atVZoP9GxpGNTx2GSDB061A7z1L59+2JDHyVB2Di1x2mlSpXsestUVni55F2WJG4nDeGk85a6osw0Lv7KpK4udQyoDNc5Nn0s1HxTua/yX+Xy6m6c7LKwmuvGU+eEks7dK1su67o8lU3qZlX1sZ49e5qBAwe6VGRLzSKVfRo/XnXgLbbYwi3JTPuX6oSqJ6quWtrjLKnntEKgdtzIkSNt1/F+qA0Uydf5PBer6txTCLQNtD00zGP9eLfyCaO2vrahzuHZlG3+2sCK1m107laZqr8ZHy40STQkS//+/e2rhtREMuVa9uk6kPJr/9V+XBqqQ3z77be2/rCy6/gonSFDhphu3bqZTp06meHDh7vUCmThQl1Ajbp713U0df+eK91CCI8Vs/76xuRwPTTpNMSFhrY444wz7JC8SJZcr6Mov+4n6BygOsWKXAennZZMOm9Xc8NWVOBbmyin56Ty4ogjjrD33DVkZYcOHVwqSlH7QqHTDXwFUpRUIdENbo2XWVIwhmgsNY3VppstqpjsvPPO9iDLJ134UQBBvXr1lnlDR7+3bt26KxxooIvuujAWvxGj3xAPxhD9Fv3fcwnGEFUY9bkVDcYQjXWu74oHY0hJFxqWt83zYcstt7TbYWUHY4jGY9U+WlGCMcoL7Ru6OB8PeiotNcJoEOWmatWqtjxVIOLyLkrmkndZ2E7F6Xyi4EGV32VxoVbnKZX9FfGGWC7rmrIJnoKJtP0aNmy43GAMUX1MdR/VV1fkOGO/wcqSr/N5Liryuae8UFtfba1syzZ/bWBF6zY6d2tfTWowBgpHrmXf+uuvb/dhnY9LS3UI1T3Loo4PlIquq4b7aFjJLV0whijwXnVWbnyhDOV6HUX51bZXG39Fr4PTTgMSjHMSChABGVghqgh99NFH5uOPPzY77rijSwUAAAAAAAAAAAAAoGIjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIMwIyAAAAAAAAAAAAAAAA8oyADAAAAAAAAAAAAAAAgDwjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIMwIyAAAAAAAAAAAAAAAA8oyADAAAAAAAAAAAAAAAgDwjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIMwIyAAAAAAAAAAAAAAAA8oyADAAAAAAAAAAAAAAAgDwjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIMwIyAAAAAAAAAAAAAAAA8oyADAAAAAAAAAAAAAAAgDwjIAMAAAAAAAAAAAAAACDPCMgAAAAAAAAAAAAAAADIs9WCkJuvcKZNm2bq1Kljtt9+e3P00Ue7VABInm+//dY89NBDZosttjCnnnqqS0XSfPrpp2bEiBGmbt26pnPnzi4VSfL999+b+++/32y66aame/fuLhX5smTJEtO3b187f8kll5g111zTzqNsvPHGG2bcuHGmRYsW5oADDnCpQPk1bNgwM3XqVNOhQwez8847u1QgmW666SYzf/5806NHD7PJJpu4VBSSV1991bz99ttmjz32MPvuu69LBVAIPvroI/Pcc8+ZBg0amKOOOsqlAsaW6yrfmzVrZtq3b+9SASTV33//bfr372/n+/TpY18BJMsTTzxhpkyZYu+TdOzY0aWCgIw6ddw7AAAAAAAAAAAAAABQWs8884x9gAYRAjLoIQNAAaCHjMJADxnJRw8ZKxc9ZKxa9JCBioYeMlBI6CGj8NFDBlC46CEDJaGHDKCw0EMGkHz0kJEZARl16tgdQjsGACSVbrC1adPGNG3a1EycONGlImmGDh1qAzHUiB81apRLRZJMmDDBtGzZ0jRq1MhMnjzZpSKfVlttNfu6YMECs84669h5lI2rr77aXpDo2bOnGThwoEsFyi+140aOHGmDVrt27epSgWSqUaOGmTVrlr0wVb9+fZeKQtK7d297A0Cv/fr1c6kACsGQIUNMt27dTKdOnczw4cNdKmDMgAEDTK9evcwZZ5xhBg0a5FIBJNUff/xhqlWrZucr8K1NINGOOOIIe8+dHjKKq+ReAQAAAAAAAAAAAAAAkCcEZAAAAAAAAAAAAAAAAOQZARkAAAAAAAAAAAAAAAB5RkAGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAAAAAAAAAAAAAAAOQZARkAAAAAAAAAAAAAAAB5RkAGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAAAAAAAAAAAAAAAOQZARkAAAAAAAAAAAAAAAB5RkAGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAAAAAAAAAAAAAAAOQZARkAAAAAAAAAAAAAAAB5RkAGAAAAAAAAAAAAAABAnhGQAQAAAAAAAAAAAAAAkGcEZAAotd9++81cc801ZtiwYS4FAAAAAAAAAAAAACAEZCDxzjrrLHPggQfa6YYbbnCp2VmyZIkNFjj44IPt5z/77DO3pLjvvvvO9OjRw+bp3bu3S13aCy+8YA4//HDTsGFDs+OOO5pjjjnGjBs3zi1d2l9//WXuuOMOs88++5i6deuanXbayfzf//2f+eijj1yOwta3b19z+eWXm2OPPda88847LhUVyaRJk0y3bt3svl2nTh2z//77myFDhpjFixe7HJndc889qeP6+OOPd6kRHTe9evUyO++8s2nRooUZPHiwW1Jk9uzZpn379qZdu3bmhx9+cKkoyXPPPWcOO+wws/3225sGDRqYo446yrz++utuaXGvvPKKXb7DDjvYsu6ggw4yjzzyyFLb9N577zWtWrWy2/788883CxcudEsiKn9POukku41ffPFFl1oxrYzjRNgGmVEuIVf//vuvue2228zee+9t95nGjRub7t27m2nTprkcS8u2Tjhz5kzTuXNnW/but99+GfO8+uqrJR7nwIoYMWKEbQfVr1/f7oOdOnUyr732mltqzPfff58q90qaFIAtnHMqgJ9+MmGjeNnTH39Eeb/91pj+/Y3p0sWYQw4x5sQTtZPohBkt98J90C4L65Zm4EBjFi1yC5xwvzFXXRV999tvu0Sg9HKpB06ZMiXc9XqYJk2a2Os1qgdce+215vfff3c5Im+99Zb9HpWjOt/PmDHDLSkyMNy/Vf4NGDDApQArX7btfO3/DzzwgN1HVSdQW1/78vjx412OCPVWJEku9VQdB5mWa7rllltsHqFdD6xkOgf17GnMEUcY07FjNB9rf2Z0/fVFbY2HHnKJjtoOt95qzNFHG9O1qzHDh7sFMXPn6gZiNM2Z4xKBhAoqsK+//jrQKujYsaNLQT6NHTs26Nq1a3DQQQe5lNwNHTrUbiM/denSxS1Ztp9//jk45ZRTgho1ahT7fNjYcDki+v6w0R2sscYaqTz77ruvW1rchRdeWOy74tP111/vchXRb2jWrFnG/GuuuWbw5ZdfupyF69Zbb7X/n3XXXTeYPn26S8XKEDaq7bpu2rSpS1n1Ro4caffl+L7tp0MPPTQIG/0uZ3HTpk0L1l577VReHadxp556qk3fZpttgo033tjOP/LII25pJGwc2fQePXq4lGR4/PHH7e/S70uKiy66yP6mTNMNN9zgckXOPffcjPk0devWzeUq+n9uuOGGwXbbbWfnTzrpJLc0MmDAAJveuHHj4J9//nGpq94777xjf1ejRo1cysq1so6TJG8D/5sXLFjgUspORS+XrrrqKvsbevbs6VKwPH///Xewxx572PWWPql+M27cOJezSLZ1wv/++y9o2LChTd9hhx2CypUr20n7m/fbb7+l6qvDhw93qchWhw4d7Lp76KGHXAq8fv36pfbL9Mmvry+++CLj8vj0448/FvR5P0m23HJLu46mTJniUhJG7blddln2FLZxg1deCYLddsu8/Oijg+Cvv6LvGzMmSmvdOggOPjiaD89TxTz4YNHn/v3XJSbXxRdfbLdh7969XQqSJJd64LBhw4IqVapkzKt2wl9uP/72229tPp2/d9xxR7u8fv364e5atL9OmDAhWH311YOqVatyXSTBHnjgAbv9OnXq5FIKW7bt/Pnz5wd77bVXxnyrrbZaqk1Tkeutqr/r/3TGGWe4FCRBtvXUJUuW2H0503JN8TprIV9vRJHff/89tX2REOFxGFxxRVGbIH169lmXMc2LLxbPd8klboHTt2+U3q5dEOy9dzQ/apRb6Jx1VpR+3XUuAUlw+OGH22P0mWeecSkQAjLCnYKAjMx0oU4BBc+WVGAuR58+fez6rV69ukvJjSr6+qw/wWrKNiDjo48+Sn0mXilLD8g47LDDlsqXKSDj5ZdfTuXbb7/9gueeey54+umng912282mVapUKXj//fdd7sjRRx+d+t4LLrggPL+8GDz44IO2EX/ccce5XIXvww8/tBVgrFxJC8hYtGhRsMkmm9jftPnmmwf33Xdf8MILL9h9W2maBg8e7HIXd8ABB6TyaEq/8bnOOusE1apVsxfBdHFLefbZZx+3NAjuv/9+m1anTp1VcsN3WZIWkDFx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olfVKa+5xpg11ojei86tCxZE866OmXp1bdHUa1hemgceMObzz43ZccdoPGhgBeVaD1Td7uyzzy527vftnkqVKplWrVrZ+WWdy3V9S9dcdL1K53KgrOTazu/bt6+9Rhg3x42zv0ZYlq+33nrUW1EQMtVTdd/B0zExduxYez1a15FnzZrlltCuB1aaqVON+emnaL5jR91sNEbXTUaONObDD41Zd91oWZzSn3kmmr/8chOeiKL5uKpVVSlbui2h+4R6Fuyqq6L2x/HHG9O4cbQMSDgCMhCWjSPNBx98YCstn3/+eViOLbBBBDJs2DD7mk438m+55RYzfPhwc+CBB9q0d955xzz44IN2XulHH320nVfj9JmwgNWkBq+89dZbS02q4Ms///xjTjvttFRlSMEiJVnW9+SLGim+cucb8nH+gr2CF3xQwldffWVfFbTw3nvvmW233dYcd9xx5sQTTzSNGjUyJ598sv3/yXfffbfU/+FDnZTSjBo1ypx33nl2PZ511ln2woF+mwIn0r399tv29+jv6G82adLEpp9wwgk2KEO/R5VY/c5zzz3XLrv22mvNt99+a4NtFDCyZMkS8+STT9plooqqv8Gg7ymJ8un/qv1o//33Nx9//LH55JNPTJs2bey2PfPMM22+PfbYw75OnjzZ5hUfrCEvvPCCmzPm/ffft6/+M1j1ttxySzdnbGPHU/CPv/C/ePHiVCNfdJFe7xs0aGB69erlUovTxQAd8z/88IP5v//7v1Sjf99997VBPQra0TGkCwpYPr+dVIb57SK6ODNv3jw7H2+geroxreNY2+K6664zW2yxhS3X1XiVffbZx77qXKFy5vvvv7cXLdUwvuaaa+z5RAFoPn9FtbKOE2EbLI1yCaXh9xvVhXUBznvxxRfdXFE5qX0llzqhgmBVD1Ywrfav/v372+Xad8444wz7fSeddJJp166dTQfyRe0EBWUr0FJttu23394GHelcXrt2bfOAboaX4I477rCv9erVs/uqcM6pwPz1gK22MmbXXaP5dHooQ+dAvWofcNcHUvmvvjqadP5V4KMCPHTzWg8pKJ39BnlQmnqg6AEVtXv08Muhhx5qr+HoJp7KTfHln9pEOpfrnK4gTC1XvVDXdW6//fZiN8WBla207XxP19hUP5BOnTrZ8zj1VhSCTPXUhQsX2lfp0aOHTb/44ovN6aef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8847m2eeecZ06NDBpvXp08fcdNNNZu7cuWattdayafPnz7d/Q72/vPzyy2a11Vaz6UAhoYcMAAAAAAAAAACA8oNHyMvImWeead5//33z1VdfuZTi/vjjD9uLwFlnneVSilPczLx588xff/3lUiJ6//vvv7t3xsyePdu89dZb5qOPPjL//POPSy2S7fd8++239nv0GrdkyRJ7g1yBJfqeTHRjXP+fTHRzXp/T93j+N/3999/2vX6Lvn/ixIlL/c45c+aY//3vf3a4lfh3LEum/7NueL799tvm+++/dykl0zoYP358xt8Tp7/z+eef214a1DNKpvWfiYao0e9TcIJo/elvZvq8AhAmTJhg18Evv/ziUovos3796vs076eSfo/2Sf3/NMxHSet05syZqe2TK/WEod+tY8DTeqxcuXJWvVhofxMFNHmaX7BgQbFhdy644ALz66+/mgceeIBgDAAAAAAAAAAAAACrHAEZZaRr1672VUOSZPL000/bYIXjjz/epRSnm+8bbrih6d27t0uJqKeBjTfe2N6cPu6440yNGjXssCQaskHzzz33nMsZWd73/Pbbb+bggw+2T2bre/R69NFHm//++8+88847tvcB9Vaw2267mc0228xcd9117huK6PN6yjuT/v3727+vp789/5tuuOEGe/Nev1vfr5vuNWvWNG+88YYNWujevbvZcsstze67727q1q1r/4/q5WR54v9nBTLUr1/f/r499tjD9tygIVzSh8iQF1980ey44452HbRu3dr+Hv2f77rrLpejiHpk2HrrrU2jRo3MXnvtZRo3bmw22WQTc/PNN7scJXv22Wft71MAjHpG0bz+pnpvUZCHTJ061bRr185Ur17dtGzZ0q4D/ZaTTjoplUe07vV5BZxMnjzZzvvp8ccfd7ki+rv16tWzk/5/6lVD/4f03mIee+wxs9VWW9n1VBp33nmnXc+HHnqoS4kCMnzPFsujbS9VqlSxr7L22mvbVx0zovV/9913m1tuucX+LQAAAAAAAAAAAABY1QjIKCMKINh1113tze1MlN6sWTPToEEDl5I93ZA/4YQTzIwZM8xTTz1lh6nQzffVV1/ddOnSxfYakA19z+GHH27WW28988orr9jghWOOOcY8+eSTdogI3VDXe/UsoeUKzLjkkktszxH58Oqrr5qePXvaIV70nT545f/+7//M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eeaZtmeBJOy0005m1113NSeddJKbU3X98ccfZr/99jMdOnQwTzzxhFlmmWXM+uuvb/fFvffea/7zn/+Yc88914RjoyZPnmzPnbffftsGcWhSRe2QIUPMRRddZDbYYAP7eU9BHn45Pw0aNMg8//zzGfO1bD4+/vhjs8kmm5hrr73WzJ8/32y88cbmr7/+soEimq9K41z+/fdfG4iigI7wdvgp3/NC10vwc1999ZXdR6+99lrafE3qRaWm++effxadI4tT//79Tc+ePd2rqqk6bCMAAAAAAAAAAABqNnrIKHEPGZdeeqltqf/ZZ5+ZzTff3M1dMlSZvaR6yFAwxl133WVmzJhhVl55ZTe35tPl1bFjRxuQcvnll5srrrjC1K9f371rbI8TJ598sg2aePjhh22vH56Gw1AvFn369LEBG0GjR4+2vaqMHTvWDtuy1VZbuXfS6fyuXbu2DVAoxqGHHmpGjRplXn75ZbPpppu6ucYGgpxyyinmuOOOMw888ICbG00BHCussIK58sorbWBHkvw5rW2555573NzSqyo9ZCjoROeTAn50Di0ubdu2tefV559/7uZUPdVhG6PQQwYAAAAAAAAAAEDNQQ8ZVYgqrmfOnJnRU0LQ7NmzI3vUUA8DGsph5MiR5ocffnBz86OhJPS96gEhit6L68Eg1/eqwji4bvUWodfhdWb7jqjfrH2kz8yZM8fNyfTrr7+a9957z1bIat9G8euZN2+efa19oV5N1OPAzz//bOeFqceHCRMmuFfZKVhBwRiquL/++uvTgjFElfrq4UDBFWuuuaabm5sqbRWooR4ScgVEVIYCLzQUSjAYQxREoqFLPvnkEzcnnj9G4d++uPhzUMctLO7c1zbrXPUUgKHgj6h1eOoFR8ErP/74o5uTnSrctbwq37MN51IMDWWi36XzQ2bNmmU+/PBD8/7772ftkUfXg4J9dD3rOgjvF12Lfl9q3frbT8Fl9X3+mtM6te8UfOQVc0yClNa88847dlv9tevlu40AAAAAAAAAAABAqRGQUYX07t3bVnIPHz7czUmnCs611lrLHHzwwW5OeSDD6aefbiv21UtC+/btbavqHXbYwUyZMsUtlZ0qhfW9jzzyiJuTTu+pAj4o3++98cYb7efvu+8++3q99dazrzXp817Ud3idO3e2AQhB06ZNs5+57LLL3JwKqhjfbbfdzNprr23atWtntthiC7PGGmvYXjrCARx+PbfccovtkaJZs2a2J5Odd97ZrLPOOrb3lHAwh3pj0JAj6mkkFwVL1KlTx/aMEadu3brmmWeeMXvssYebkx/fK8Z3331n/y+Fhg0bZu3ZZbXVVnN/xfP7vF69evb/xc2fg1HDq8Sd+xoSRr9N57KGxtF5rp44jjnmGLdEBfVQ0qZNG7PRRhvZoXR0Dml4mokTJ7ol0inARUO/tGjRwi6vc3vdddc1d955p1ui8l544QX7uxSQpN+vYJ/tttvODo+j33L11Ve7JSsMGzbMbrt+i65nHffVV1/dBv54uha1XgWRfP311/ZvP2k4Hk/fo147tG/US4v2na7B+++/375fzDERBYroelZas+OOO9ptbdKkifnvf//rlsh/GwEAAAAAAAAAAIBSIyCjClFl7zLLLGMeeughNyfds88+a1t/a5gIUcvz3Xff3fTv39+cdtpptlcH9VahoUHUc4F6ZSiFQr73yCOPNEOHDjX77ruvfa3foNeaLrjgAjsvSeq5QhXPX375pQ2y0La9+uqrdiiQu+++2+yzzz52+8M++ugjc8QRR9ggEbW8f/fdd+3x0DAQ6tkiKN9W9hqeRRXiCpxQxXbSfE8Hyy+/vP1/cXruuefs71OQSy7BgAydH9qvqkzff//97bmerdeJJUnnybHHHmt7Wbj99tttEEEwGEo0FJECAHR+v/nmm+a1116zw8vovFNQQ7jXF+23Ll262CAdBRzoPNM8BRacddZZpkePHm7JZPTt29ee9/r/448/tteCAhquueYaG4DhqfcKBR81btzY/g4Fk+g60HA7PXv2NL/99ptd7uabb7bXrgI3FJTkr2VNShOC1KuI9peCtDScjIZv0j4p1ogRI2yglXou0fq0j7Xv9HsUQNOrVy+7XCHbCAAAAAAAAAAAAJRUaik2btw41cynunbt6uYk75JLLrHfccstt6SeeeaZjOnDDz90S5br2LFjql69eqmZM2e6ORU6dOiQWnnllVNz5sxxc1KpPn36pIYNG+ZeVdh///1Tq6++untVbtKkSXZbunfv7uaUe+ONN+z8++67z81Jp/eOOOII96pcId8rZ5xxhl3PjBkz3Jx0Ud/htW/fPtWkSRP3qtzUqVPtZ8455xw3p5yOZd26dVNffvmlm1Ph+uuvt595+OGH3ZyK9WgaOXKkm1vun3/+STVr1iy14YYbujnlFixYkBo7dmzq33//dXOiaRu03mOOOcbNKczQoUPt57Wvo9x44432/ZtvvtnNydSiRYuM7S/Gzz//nHryySftOXLCCSfYY9y/f3/3bnaff/653c6DDjoo1bBhw9Quu+xip5VWWsnO79y5s93XxfDn9CmnnOLmZOrRo4dd5rvvvnNzKsSd+/583WuvvVILFy50cysEz5sBAwa4uRV0zPSerntv/vz5qcaNG6datmyZmj17tptbTr9/zz33TNWuXTv1/fffu7m5KS3Q9+y3335uTjmlLZqv79O2Bmn9ei+4z1566SU7b+DAgW5OOZ3j2sdhbdq0SW222WbuVSa9r/XpmotS6DHx1+Iaa6yR+u2339zccnpP6c5dd93l5pTLtY1V1cYbb2x///jx490cAAAAAAAAAAAAVFf0kLGYqAW3WouHJ7W8D1LvF3PnzjUDBgxwc8r98MMP5q233jKHHXZY2tAPao0fbvWt1uxqua8W6qWypL43m1mzZpmXXnrJ9oKxySabuLkV1HOH9t3jjz/u5lTYZptt7PARQeqtRMM2TJo0yc0pV7t2bdOqVStTq1YtNyea3w8rrrii/T9I6w1P6qEgir5fvRv4SS391bvIlVdeaYeAOfHEE92Shfm///s/O8xGeIoaOkM9oOjcO+mkk+ywE/Xr17f7e+HChW6JeL6HjLFjx5pvvvnGvP7663b6/vvv7dAwGsLDD2Uh6lEkvE3q4WRJUA8gyy67rHuVSdt2yCGHuFcVTj31VNOgQQMzePBgN8fY36xrROvUe0E615RGaH8+9dRTdl4hxyeO9lu4dxb1GrHSSiulndca9kM0XFJZvmD/Fp3jGrqnGNpv+fSgkg+lfeq14+yzz7ZDnwRp3w0aNChtCCQAAAAAAAAAAACgKiAgYzHRUAaTJ0/OmDTMR9ABBxxgVl555YxhSx5++GFbUeqHKwlSJa7Wr2EI9t57b1tJr8rLUltS3xtn3LhxdjgRVehHUSX4BhtsYCu6wzbddFP3VzoFcMybN8+9KoyvdI/6vIbsCE6qHB8zZox7N13v3r1twIifFHCiQJ4999zTVlSvssoqbsnCrLDCChnboWndddd1S1TQd2lYi59++skOs6FtOO+882xQUS4KANCwGRpeYq211nJzjVlttdXMvffea/9+9NFH7f/yn//8J2ObogJsFoe2bdu6v6Jtu+227q90Om8UPPHdd9+5OcaMHj3a/h93fm655Zb2f39+FnJ84uR7Xm+22WamW7dupl+/fmbjjTc2F154oXnhhRfMX3/95ZYoXNOmTU3Dhg3dq8r54osv7P/t2rWz/wMAAAAAAAAAAADVAQEZi4kqn9dcc82MSS3Vg1RReuihh5r333/f9iYgCsR45JFHTJs2bWyFfJB6hFAFrXqrePDBB03dunXNbbfdFhm4UYxga/mgUn9vUNw2hM2YMcP+H9UjhacKYr9ckCq/k9a4cWP7/y+//GL/D1IvB8EpGKgQdtppp9meCzQpAOaDDz6wPS0MGTKkoMr5sGbNmpn+/ftnTF26dHFLVKhTp47taUE9KShg4p577rHH+vnnn7dBIdmoRwP9hpYtW7o5FTbccEN7bQSDUbQ/wtuk3iNKIde5lSugINv7Og//+OMP9yr3+enX5Zcr5PjEKeS8fvLJJ+21rGOsY7D//vvbc/i6665zSxSm2GCMqGPi94mC1QAAAAAAAAAAAIDqgoCMKsgHNfheMkaOHGnGjx+fEeyg3goOPPBAW+GtVvUa1kSt2k855RSz3HLLuaUqR8NShC2O7w2K2oYoq666qv0/WAkepvf8cqWmHgJUoa1hRv799183N9rs2bPdX5nUq0fHjh3ttNtuu9leGRTEsKSplwz55JNP7P/FUtBAsb2QVFaucyvXsDQzZ850f2UKn2u5zk8/f3Gdn2Ea+uPYY481I0aMsL/r1VdfNVtssYUdGke9mxQq176LE3VM/Pk+ffp0+z8AAAAAAAAAAABQHRCQUQWpwl29YWgYh3/++ccGZtSuXdsceeSRboly6plAFdkXXHCBad26tZtbTkNg5Kt+/fr2/7lz59r/g/xQAUFJfW+QegaJ+n59z7fffuteZaceGBQQ8tFHH7k56f7880+7rsU1/IUquNWbgXqzUMBKHL3/448/uldVhwJJNHxFXA8YPogkV8X7/fffbw477DD3Kp2GxFCAj3qDKJVCz+9CqCebKH///bft9UPDlnh++JO489PPX1LDswTpetxjjz1sDyg6vq+88op7JxmFHhMFhsibb75p/w/76quv7HkEAAAAAAAAAAAAVCUEZFRR6g1DQ10MGjTIPPvss7Y3Aj8EhtegQQP7f7j3BVXuv/766/bvYPf/CuqQhQsX2v+95s2b2/81FEaQPqthSMIK/V5ZZZVV7P+TJ0+2/4dpGz799NOMbdPQGKrczod6WlAAhCqPo3ptuOWWW8z8+fMzAlsKNWfOHPPee++ZBQsWuDnxLr/8cru/zjjjDDN69Gg3t4LWceGFF+YcOmNJ0JA6Y8eONZdeemlGDxY69g888ID9e7vttrP/y5QpU8xnn33mXpXTOgYMGBAZlKLhMBR0pB5XSiXu/FaPFAoWqYxx48Yt6skmSNeNgg0OPvhgN8eYDh062KFpNBxIuGcNnfc33nijHRqmW7dubu7io/NZx0DXR5CuPZ2bPu3wdD0rkKjY87bQY7LjjjvanmK078LBS7oejznmGNO1a1c3p1xltxEAAAAAAAAAAACoLAIyFpOnnnrKViZGTcOGDXNLVVDQgCpBVdGonggUoBH2n//8x6y44orm2muvNcOHD7dDhwwePNgObeEryfv27WsrjUUBHVp+yJAh5qWXXlrU84SGHtFnnnjiCVv5riEL9LfmqbLcB1N4hX6vtGvXzv5/5pln2u/+3//+Z2666SY7Tw4//HAzYcIEW4H98ssv2/Wdeuqp5vbbb7cV2fm69dZbzcorr2yH9tD2adgFBbUcffTRtvJ/r732iu2tIV/HH3+8/T0KpMhlvfXWs4EL06ZNM1tuuaU9jvfee6+tdL7iiitsDxSq9G7fvr37RNWxzjrrmO7du9teIDbffHPTq1cv8/DDD9vjpt/y9ttv2/3pj60qvrWc3tM+98477zzbA4YCDTSsjfbHXXfdZYNnFISginb1tlIq6ulh9dVXNxdffLG93hQ0pGOg7dx1113dUsXROnROn3XWWfa81rWl81bHVvtC54qn61nfq15kdJ0o2EjXz2OPPWbPcfX+oHNW58zipn0ycOBAu1333XefTZMUaNKpUyfbQ0b4mtEx//XXX83ZZ59thg4darf7xRdfdO/mVugx0TY8+OCDNshl++23t9e5Aq80b6eddjJffvml6dGjh1u6XGW3EQAAAAAAAAAAAKi01FJs3Lhxajqd6tq1q5uTvEsuucR+R7bpkEMOcUun69Kli32/UaNGqfnz57u56V588cVUkyZNFq1rxRVXTPXu3Ts1derU1MYbb2znXXbZZW7pVKp///6punXr2vnnnHOOm5tKTZw4MbXrrrsuWk+tWrVSBx54YOqPP/5INW7cOHXEEUe4JcsV+r1y/vnnp5ZZZplFn9H6vTlz5qROO+201LLLLrvo/c033zw1evRou3/0XUH6Hi0T/A3ehAkTUvvtt1/aulZZZRV7LObNm+eWKpdtPaLv1nqCzjrrLPuZm266yc3J7YMPPkh16tQp7fevsMIKqbPPPtv+9vbt26c23HBDt3S5oUOH2uX69Onj5hSuRYsWGestVL9+/VLNmjVbtN2aGjZsaPfZ7Nmz3VLlNtlkE3t+vf32225OufHjx6cOPfTQtGNSr1691NFHH536/fff3VKFmzRpkl3XKaec4uZEe/PNN+2+8N9dv3791JVXXmnPL72+77773JLlzjjjDDt/xowZbk664HnzxhtvpFq3br1o3fqN3bp1S02bNs0tnW7EiBGprbfeetHymrRtDzzwgFsifzp39Hmd70HPPPOMnT9o0CA3J52u6d122829Kte3b9/Uuuuum7Zdev3kk0+6JSpov+y+++6Llqtdu3baedqmTZvUZptt5l5FK/SYyEcffZTacccdF31G00YbbZR64YUX3BIVcm1jVeXTT10zAAAAAAAAAAAAqN5q6R+zlPr+++9Ny5YtbVf3ah1eXWn4CLW6V08LGgqgXr167h1je9fQUB5BGhZAy2tZP/yI59/T0Aqrrbaamxut0O8VzdeQA+qVQy3kwzQ0xvjx4+12rbvuum5ucfRd2j5tV9OmTTOGXaiMWbNm2V5CCqUW/n7IBfUasdxyy9m/qwP18qFhdJZffnnbi8Oyyy7r3qmgHlV0DLVMFA2Jod+v5XR869ev795ZPDRkzowZM+y+D5/7laVzTdePflfDhg3d3Hi///677cFh1VVXtdebeoGoCvQ7pk+fbnvGyXUNTp061U5aLup6z0cxx0Tbp3OxUaNGGUM5hSWxjYtT69atzZgxY2w66Id2AQAAAAAAAAAAQPVEQEYNCMgAANQMBGQAAAAAAAAAAADUHMu4/wEAAAAAAAAAAAAAAJAQAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwmqlyri/lzrff/+9admypXsFAEDVMH78eNO8eXP3CgAAAAAAAAAAANURPWQAAAAAAAAAAAAAAAAkbKnuIQMAAAAAAAAAAAAAAKAU6CEDAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAElYrVcb9DQAAAAA11r///mteeOEFM3jwYPPFF1+YKVOmmPnz55uVVlrJtGrVyuy6667m2GOPNauvvrr7BICl2SWXXGLmzZvnXhmz7LLLmltvvdW9Ki2lTRdffLF7Va5hw4bm2muvda+qhh9++MEMGDDADB8+3Pz0009m+vTpZrnlljNrr7222XzzzU23bt1Mx44d3dJYEh566CHz+eefu1flTj31VLPRRhu5VwAAAACAUiIgAwAAoJpasGCB+euvv9yreLVq1TLLL7+8qVOnjpuDfKmo/Mcff7hX2dWuXdussMIK7hWqmtGjR5ujjjrKfPrpp25OtPbt25s333zTvcou7vxYeeWV3V9A9TFr1izzzz//uFcVlllmGRsIUKg5c+akBTN4ypMUBFUdKE0P5rMKyFi4cKF7VVqzZ882K664ontVrnHjxubXX391r5Y8BYfccMMNkcc56I033jAdOnRwr6qnfMtcooCU+vXru1dL3kEHHWSee+4596rc0KFDzV577eVeAUuG0rkk01Td79StW9e9AgAAAKoOhiwBAACopp566imzyiqr5JxUOayHk6uttprtAaB3795mxowZbi3I5ueff47cp1GTKs4UlNG0aVNzwAEHmCeffNK2cMaSp+O4xx575AzGkEIqqOLOD1UwANXNFltsEXk+K++YOnWqWyp/Cm6KWx+qv6uvvtr06NEjZzCG8sZ27dq5V9VXvmUuTaoUVlDGxhtvbI4//ngzcuRItxYAQeo9J+oaKnZ65JFH3JoBAACAqoWADAAAgKWEuhFXK9ULLrjAtGzZ0jz77LPuHSRFrcvVZfugQYPM4Ycfbrtr//LLL927S4Zaqaur8mnTprk5S59evXrZ4Il8dO3a1f0FQNR6udD8YsKECeajjz5yr1DTTJ482faMkY9OnTotlS3WFZD5zTffmAcffNAGJ3Xp0sWWw7Dkqaz23Xffme+//97NAZY8Bcu/++67tvc1AAAA1DwEZAAAACyFVClw8MEHm5tuusnNQSmMGTPG9kqiB/+LkyqAOnfubFq0aGG73FfL988++8y9u/RRy+awrbbayrzyyiv22Lz99tvmmmuuMXvuuafZcMMN3RIAvAEDBri/8lPo8qheBg4caIfwCNJwLj179rQBgF9//bUdIkNp6mGHHeaWWLoNGTLE7LPPPmbu3LluDhand955xxxyyCFmk002sT2YbLDBBrasBCxJF110kb1PWGuttcyqq65qdthhh8ihwwAAAFD9EZABAACwFOvevbvtNQOlo54pzjzzTPdq8XjppZfsNH78ePPvv/+6uUunWbNmmd9//929KqeKQ1WOqbJQvcXsuOOO5qqrrrIBGiit3377zTz66KNm4sSJbs7S5ZNPPjGDBw+udsNGKWgp315mhICMmk15S9gpp5xirrjiCrPZZpuZ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mO21115p05577mm77VYPDvk+QFbr5nDFwUorrWTOOOMMG9Ch7t/Vovz000937+ZH3bSrslItqy+88EIbzBBuJR6kig21PA1Laj1J0jj4PXr0cK8qqPeLuAqIUu3nYkRVXK2zzjoZAT65JnXPXoioh91//PGH+yueWulG7ddSV8CVkn73PvvskxEsoMo+VfwPHz7ctp5VDzfFVHiXigKGdI1luwY9tbrt37+//Z1JiBqXP0qp9q1+z7BhwzKG9IjTtGlT22tGeJx6iTp3tc1R11m26corr3SfTk69evVsN/VButZVORtuFX3wwQcXVVlZbFoQtUw4eETHKSxXS39V6IWHn4lSlY6b8pQJEyaYQYMG2aCo9dZbz72TSUPzKJgwqYrLXEp5fOOEgyIWF/X+o56Bwu655x73V7olsW+yDaHiRa2/QYMG7q/i5Jtme1WxvJeUqLRDAYxR6UPc9MYbb9jhtsJqcnk7H6Uu01bltBYAAABVVAoAAADV0qOPPqra6LRpq622cu8W74svvshY7zrrrJOaPHmyW6LCggULMpbt1KmTezc/M2fOTA0ZMiR15JFHpmrVqpWxvmuuucYtmV1S6wmaNGlSxno0zZo1yy2R7q+//kotv/zyGcuPGjXKLVGhlPv5wAMPzFh++PDh7t1o+k3hz9SvXz81f/58t0RpzJ49O/J4TZ061S0R7d133834zBprrOHeTbfZZptlLDthwgT3bvEKPT9yuf322zPWtc8++6TmzZvnlqig4xle9pZbbnHvpos6H4YOHerejbbSSitlfCbOP//8Y9en8zf8GT+tssoqqWOPPTY1btw496lovXr1yvis5sX57LPPMpZfbbXV3LsVSrVvRedw//79Mz4TnJo3b566/PLLU3/++af7VCalX+HP7bbbbu7d0mvRokXad+t1kI5x8H1NmqdjG5w3cuRI94lyTZo0SXt/2WWXde+ku/DCC9OW03TmmWe6d+PtscceGZ+7++673bvl2rRpk7HMoEGD3LvRvv7664zPRG17qY5bVJrcuHFj927+lE49/PDDqZ133jljfZreeustt2T+tO/C6znmmGPcu9FKeXxF1314uTlz5rh3K6/QMtebb76ZsfwKK6wQuU0vvvhixrJt27Z178a74YYbMj7XrVs3926FqDzgxhtvdO9G03bqfA9/7ttvv3VLlCtVmp1NMeW9vn37ZizXvXt39252hZ5bUb+xffv27t0KOn/Cy7399tvu3eRV5fJ2lKi8uFmzZu7d7JZEmbaYtDbq3FKZHwAAADVP7iZMAAAAWKp88MEH7q8Kav0VNd54uLV5LqNHj3Z/VVCPEJ07d7ZjVUcN7zFmzBj3V4Wk1pM0tcLee++93asKTz/9tPurQin3c1Trxblz57q/oqmFrrpcD1Krvtdee829iqYW8iNGjHCvCqfWtuq9Jezll192f0V76aWX3F8V1JKzOos6J9QitW7duu5VhULPiVLRMEi77LKLPe9/+uknO67+vffea3uBGDhwoD1//u///s+Oza6x5lu0aOE+GS2qRbs+G0fDZeSjVPtWw6C0bt3anHjiifa1hmlRi1oNT6CWs+px4/vvv7dj7V9//fVZe3DZcsst3V8V1F289nE2GiImbsijJKnnkEaNGrlX5Q444IC07VMPILmGxIoTdf0qHUhlGeJg1qxZkV3Bh9e10UYbub8qaDivbF544QX3V3ZV5bhpP2losjC1Cj/66KPNW2+9Zbp16+bmVlgceaOU8vhWRRqmQMMTBanHFbW6D9tqq63cXxWUbk6cONG9ilaZfFBpVDbqNSg8PIl6ymnevLl7Va5UabaXVHmvmHJRqUWlHUOGDHF/xdMwhPPnz3evotX08nYupSzTJpnWVsXzEgAAAKVBQAYAAADSTJs2zf1VQQ/ho+SqNA969tlnbWVlr1693JxMHTp0cH9VCD+sTGo9pXLQQQe5vypom8OVTqXazxJV6fv111+7v+JFDbug4RyyPRy+4YYbbEVtly5dbIV8MfRgP+y6666L7dr8559/jqwE0DZUZ6U8J0pFY6kr6MBTBf1JJ51kz6WuXbua3XbbzQYs1KlTxy2RnSp6wsLD+ngacuK2225zr7Ir1b5V5cuPP/7oXhlz0UUX2TRg3333tUN8qFJ2/fXXd+9mp27n1R180Lx580z37t3dq0yqPFJX6KrYu/jii22FU6loGJJw+hb+vkMPPdTUqlXLvSrM7rvvnhEgo0AWDXET59prr83YBu3HcAX3zjvv7P6q8Mgjj5hx48a5V+kUlHPrrbe6V9mV6rhF5VkLFixwf2U699xzzRZbbGGHMIij4cvCFlfeWMrjWxVpv4aH+ZGoAE0FYoYDKVRmuPzyy92rTArGeOedd9yrCkp78qEhKDQ0WhSdZz179nSvKrRr1y4jLS9Vmi1JlveKLReVUlSZq1+/fjaIL44q+5Wv6lrXMYyytJS3cylVmTbJtLYqnpcAAAAokbKbPAAAAFRDj5ZoyJL7778/Y73bbLNNauHChW6JcuPHj7dDRISX3XjjjTOWHTZsWKpu3bqLljn44INT33//vXu33L///ps6//zz09al6YorrnBLJLeefBUzJIWGJKhXr17GZ8Ld+JdiP3s9e/bMWL5Ro0ap119/3XaFrGFRbrrpJtvldNA333yTWmaZZTI++5///Cf1/vvvu6XK/fLLLxn7ecUVV0w9/vjjbon8aRiL2rVrp61LU7t27VKff/65W6r82Oo3tGrVKmNZDZsQd1wW95AlTz75pO3SP58p2D35UUcdlbEu7eMwHbeo43TSSSe5JdKVcsiSLbfcMm2ZtdZaK/Xaa6+lfv/998jhQHIZMWJE2vr8dO2116Z1460hf3S9RC0b1f19KfatrvXwcuqWXt3V//HHH0V1O37fffdlrFPTcccdl/rhhx/cUuW0D/bcc8+05dZff337/cXINWSJKB0LLhOePv30U7dkhXyHLBH9zuCymurUqZPq06ePHRLKmzZtWuqiiy7KWFbT9ddf75aq8PPPP0cOv7DuuuumXnnlFZu2eBpqIiqN0RS37aU6blHbHLWPr7766kXva3/16NEjNX36dPduOe2/HXbYIW1dmnS9FkppV3g9uYYskVIdX6lqQ5aIyizhz2jYkr///tstUUFDHYSX1XT88cenDWU2d+7c1AMPPGDXE1529913d0uli8oDNKmsouFfgvvpu+++yzg//aRyS1ip0uyky3vKa8PLabiN//3vf/bcU5r91FNPpW6++Wb3iQqlGrJEZTgNwRFedu211049++yzacNraBvvueeeVIMGDRYtp+0/99xz3RLlqmt5O0plhiyRUpRpk05rNbxVeLntttvODg2k80O/4eyzz06kzAoAAIAli4AMAACAaqpUARl6aB5eryY9wLzrrrtSAwYMSF1++eW2AjxqOU2qgNNY96o40MP94APk4KSK8gMOOMBOqpCKWsZXyCe1nkIUE5AhXbp0yfhMeKz8pPdz0KhRoyKX1xQc77tjx47uExW0ncHlg5MqJdq0aWMrC6IecmsqpnJPLrjggsj1aVpzzTVTrVu3Tq266qqR72tSpUqcxR2QUcgUrKS5/fbbM97X8TrssMNSDz74oL3mVaEZFbzip5YtW6b22GMPt8ZypQzI2HvvvTOWC046T3Tdrr766raSu0OHDqlLLrnEnv9RdG0tv/zykevSfJ1/TZs2jXzfT1GVe6XYt//8809kpWhw0vpUqaPrVOdw586dbTCUKn+iqAJz8803j1yXpnXWWceuJ6qCUJPmT5kyxa2tMPkEZKgCLm7/b7TRRm6pdIUEZChwomHDhmnL+2m55ZZLbbDBBna7ogIVNCn9j6rslqhgAD8pndV+VeBa1Pt+itv2Uh037dPwstoPupbOOeccu8wTTzyRsYwmVabuuOOOqUMOOcSed1HpZ1T+kY9iAzJKeXyj9u2SDsjQeRG1XapsD1N6su2222Ysq0lpVfPmze35EJc+6nh/+eWXbm3p4gIy/KR1at3Z0lYFL0WdK6VIs0tR3tO5EJdeB8tFSq/D51ih51a+ARmicyG8rJ+0/xR8u95666UFRwSnK6+80q0puf22JMrbUSobkCFJlmlLkdZed911Gcv6KXheajkAAABUbwRkAAAAVFOlCsiQ7bffPmPdUZMejGar5FLvDmrhpQfRUe/nmvRw00tqPYUoNiDjkUceyfiMeg5QhUtQkvs5TOdC1LLBSQ+gwxXDqmRo165d5PK5pjPOOMOtpXBqCbrrrrtGrjfXpH2TTXUJyJg6dWrOCn4/7bPPPrGVd6o4CyplQMarr74aW5GRazrxxBMje5HQeRS1fNSk4IZwpXW4ck9KtW/VEjhquVxT/fr1U/369XNrSaceY3IFBkRNOg4K5CpWPgEZcuGFF6Yt56drrrnGLZGukIAMefnll23L4+Bn8pl0zsYF+ogCHhTcFfXZqOnQQw/NqATNtu2lOG4KXor6jCb1YiA//fSTreyLWibXFHcO5lJsQIaU6vgWWmleqGLLXOrhIvy5bt26uXfTTZw40VYOh5fPNaniVoFlcaLygELyeZ2j6jEhTtJpdqnKe9kCP4OTesoIKmVAhkT1MpHPpB6qgpX81bm8HSWJgIwky7SlSGvV+01c8EtwUmAOAAAAqjcCMgAAAKqpUgZkjB07NmvPDJpUUaWWY6rkinpYrckPx6DWhlFDBmSb1BI9/MA7qfXkq9iAjJkzZ0a2ZlRX+EFJ7+eg0aNHZ+1Rwk+9e/d2n6gwe/ZsWxkZtXzcdNlll6V1+18MHSdV6kWtP2pS5ah6Ecn1vdUlIENUEZQrwEEV3L/++qutrIhaVpWdwX1SyoAMef7553Nuc9zkW/kHqet4VT5ELR+cunbtan+nWrgG54cr97xS7FsFWcUNrZDPNHDgQLemdKrc32KLLSI/EzUpwEOV5JWRb0DGJ598kracn5SeRSk0IEM0DIKC2IKfyzapgverr75yn46nltv5VKipG3kFiYUrynJte9LHTYFE4f3np2AFnYLy4oaDiJpUgd+9e3f36cJVJiBDSnF8C600L1SxZa6XXnop43M6r4JDtARpiJu4gLCoSWWIZ555xn06WlwecN5552XMD08qgzz00ENuTdFKkWaXorynfZ5PsKp6OQsq9NwqNCBDevXqFVlujJv0WzVsVlh1LW9HSSIgQ5Is05YirdWwKMpboj4fnKKGqwIAAED1QUAGAABANVXKgAxRpcC+++4b2YX/1ltvnXrvvffckuWVXHrYHOxeV10sq+IuSGM26wFvXJfl+rzWrbHUs0lqPbkUG5AhUUM5nH766e7dCqXYz57G+95///0jK5ZVEXjsscfGDp0gr7/+emq//fazy4Y/r0nr1RAU6iUhSSNHjrTfq/Hto75Xx13HP6579rDqFJAhCtyJqtTVOaLjqRaV3tNPP227+ffL6NxQZYEqU7xSBWSod4s77rgjtdNOO2Usm++k36QAiLBp06bZHjSiKqjUC0HPnj0X9TiTb0CGJLlvVVl+6aWXpjbccMO0dRUybbLJJnZdUdRKWa3eNYxRXCCJurTXsCsaZ76y8g3IkPBvzpb3FBOQIQpsUzft4e0KTrq277zzztS8efPcp3LT+XbSSSdFDrOwxhprpK699lq776XQgAxJ+ripAlABIuF1KB0MUuWhzllVisb1QKFhQfbaa6/Uu+++6z5VnMoGZEjSx7eqBmRo21deeeWMz+pYxVHapp621ItWML8PThoGR+nPb7/95j4VL1se8Nhjj9nhmMLv61zv1KlT3sNPlCrNTrq8p8r5c889N/L617o0lNsHH3zgli63OAIyREFtp556qh3iK/x5Pynw5e67747sXSqoupW3oyQVkOElVaYtRVqrwOu4YCHlS1dffXVRw0sBAACg6qilf8oKeAAAAECk33//3XzxxRdmypQpZqWVVjKtWrWyU5R58+bZ5VZddVXToEEDNzfTv//+a8aOHWsmTJhgZs6caerUqWMaNWpkNtpoI9O4cWO3VG5JracqKMV+9mbMmGE+/vhj+x21a9c2TZo0MVtssYWpX7++WyK7uXPnmtGjR5uJEyeav/76yyy33HJmzTXXNJtssolZeeWV3VLJ+/vvv83XX39tJk2aZObMmWN/a/PmzU2bNm3ssa7pxo8fb7799lt7bq+xxhqmbdu2sef1rFmzzB9//GGXq1u3rptbOjoHO3ToYN5//303x5htt93W9OjRwx4jva9tmj17tp107r3zzjvm8ccfd0tXeOaZZ8xBBx3kXqXTOfDRRx+ZX3/91R7zddZZx2y++eaV/o2V3bf6rH6/tss78sgjzSmnnGJWX311e50Ef//kyZPNwIEDzahRo9zSFXQtK93KRtupa0Hr0fWoa6FZs2b2WqhXr55bquZS2jNmzBgzffp0s8wyy9j9pd+udKhYOrc++eQT8/PPP9vjqnNryy23tGlkUpI8bj/++KP5/PPP7Xm12mqrmc0228ystdZa7t10uv70vfptWn6FFVaw57fS7HzyjMWtFMe3ppg2bZr56quvzG+//WYWLlxo89wNN9zQtGzZ0i2RDJ0vKkv9+eefdv9vtdVW9jwrVKnS7KTLe7pGVC7SNfLPP//YdalcVMxvTpr/rePGjbPHQ9eEynutW7e2+7MQlLczJVmmTTqt1TbpeleZY/nllzctWrSwaeGyyy7rlgAAAEB1RUAGAAAAAKAgN9xwg+nevbt7VU6VzrkqUBW0EA7K6Nu3rznzzDPdq+phjz32MMOHD3evjNl4443N//3f/5latWq5OZkWLFhgNthgA/PDDz+4OeVU+aKAEAAAAAAAANQ8y7j/AQAAAADIy8iRI91f5dRaVj1D5NK0aVP3V4V8PleVqKVwuKcLBaJkC8YQ7aOogJXq9vsBAAAAAACQPwIyAAAAAAAFURfvQer9oXfv3u5VNHXF/fDDD7tXFdQdd3WiwIvw71eAhoZkyeaVV14xH374oXtVTt3jMywDAAAAAABAzcWQJQAAAACAgvTo0cNce+217lWFDh06mP3228+0atXKrLjiijZQQ0OZvPfee+bRRx+1Y6wH7bTTThm9bVQH7du3j+wl5OCDDza77LKLadasmR2Xfs6cOXaIEg1vMmjQINu7RtCVV14ZuR8BAAAAAABQMxCQAQAAAAAoyNSpU81mm21mgy2KVb9+fRvUsPXWW7s51cdbb71ldtttt4yeMgqhoBX1mLHyyiu7OQAAAAAAAKhpGLIEAAAAAFCQRo0a2V4fNthgAzenMC1atDBvvPFGtQzGEPWQ8dRTT9leQIrRsWNHG4xCMAYAAAAAAEDNRg8ZAAAAAICizJ8/3zz22GNmwIABZtSoUXaIjjj16tUz7dq1M0ceeaQ54ogjTN26dd071de0adPM3XffbQYPHmw+/fTTjCFJglZZZRWz++67mxNOOMHssccebi4AAAAAAABqMgIyAAAAAACVpuE7fvzxRzNx4kQza9YsM3fuXFO7dm3bi0STJk1My5YtTZ06ddzSNY9+7/jx480vv/xi/vrrLzNv3jyz3HLL2UCMdddd1zRr1szUqlXLLQ0AAAAAAIClAQEZAAAAAAAAAAAAAAAACVvG/Q8AAAAAAAAAAAAAAICEEJABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkDACMgAAAAAAAAAAAAAAABJGQAYAAAAAAAAAAAAAAEDCCMgAAAAAAAAAAAAAAABIGAEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAIGEEZAAAAAAAAAAAAAAAACSMgAwAAAAAAAAAAAAAAICEEZABAAAAAAAAAAAAAACQMAIyAAAAAAAAAAAAAAAAEkZABgAAAAAAAAAAAAAAQMIIyAAAAAAAAAAAAAAAAEgYARkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgYQRkAAAAAAAAAAAAAAAAJIyADAAAAAAAAAAAAAAAgIQRkAEAAAAAAAAAAAAAAJAwAjIAAAAAAAAAAAAAAAASRkAGAAAAAAAAAAAAAABAwgjIAAAAAAAAAAAAAAAASBgBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACBhBGQAAAAAAAAAAAAAAAAkjIAMAAAAAAAAAAAAAACAhBGQAQAAAAAAAAAAAAAAkLBaqTLub6DG+XnhQjNg5p/mh/kL3JzKqV+rltm5wfKmc8MV3JzS++eff0zfvn3NWmutZQ455BA3tzQGDRpkvv/+e3P22WebunXrurlVww8//GDuvPNOs8cee9hpSfv9999Nv379zK677mp22GEHNxdYvK7/8mczYvIf7lXlbbVaA3PZJk3MqsvVdnNKryqnO9XN8OHDzauvvmrOOOMM07x5czc3ef/++69Nj1dbbTVzxBFHuLlA6c2Ys8B0f/lrM2rC725O5e2z8Zrmxk6buFcoBGWhmuXjjz82AwYMMAcddJDZfvvt3dyqQ48tLr30UrPeeuuZ0047zc2t3vR7mjVrlvjvqWr3TSitsZOmmeseett8+f1vbk7l1C+7Dzh0t7bmnG7buTnVwxdffGHvK0444QTTtGlTN7d6GTp0qBkxYoQ566yzbNpQWfnm06VO/2tCeWHs2LHm3nvvNfvss4/9HQCWDr9NmWl6XPO4+fCjsW5O5e3fZXtz1RWHuVdAdsp7xo0bZ2688UazzDJLtm09zwKByiMgAzXaozP/MB/+Pde9Ss4NazYyKy6mTFA35brpk19++cUGZngffPCBefjhh+3DB93kKkPcbbfdzPnnn29WWWUVt1R+/vrrL9OwYUObuT755JPm0EMPde9UDffdd585+eSTzVNPPWW6devm5i453bt3NzfccINp0aKFLRgBi9uoKbPMVZ9Ncq+Sc/pGa5qDmq3qXpVWtnTnzz//NI8//rh58cUXzaRJk2xFzIYbbmhOPPFEs9dee7mlEKSgvaeffnpRflAqCvzwFTw//vhjtX3ojern0U9+NLe88a17lZzb9tvM7NpqDfcqeVOmTLFBZ1tssYW55JJL3NxMv/76qzn33HPNtttua8tyVd2SLgu9+eab5p577nGvoqlC66abbnKvqq67777bjBw50lx//fV2f8bRA7BRo0aZm2++2ay77rpubrTJkyebiy66yCxcuNBW/G+++ebunWjt2rUzo0ePNhMmTCj4PmJxGDNmjGndurU59dRTbcVeVfPKK6+Yhx56yL2Kp2O4+uqrm++++85ssMEGNhhDxz9JVe2+CaV15X1vmCHvJFdR5L1482FmnTUauldVnyr63333XRuQ0b9/fze3etlvv/3MkCFDzPTp083KK6/s5hYv33w6Kv33+ZL873//MyuttJL9O46CYZTmyNFHH73oGZbUhGcnffr0sWWzF154wXTp0sXNjab7o4svvti9inf66aebnXfe2f4d3N9BderUsfm97vM23XRTN7cwvrykyrN9993XzUVVM23aNPPII4/YBhY6hxo0aGC23nprc+aZZ5o2bdq4pfKnxn3PPvusPWd1TfIMpTj33DvU3Nv/FfcqOff2O9NsvVUr9wqiexzVcXz55Zdm5syZtv5D+aLSyuWWW84tld1dd91l3n77bfcqWj73UVVJkyZNbB6sfHpJ41kgUHkMWYIa7Y9//nV/JatU642ih6dbbbWV6dy5s2nUqJGdt2DBAvuQTa0X9EBSD1xVOFGh5brrrrOf0UP9Qiy//PLmgAMOMJtttlmVbBWn4BPZbruq0VJHBZBWrVqVvNeSKCqk6jjPmDHDzana9GCmd+/e7hWS8vfC0qRDU+cm06NQPuLSHZ3jbdu2tTdeupmqVauWDdB47rnnzN57720f6CGT0kk96CxlMIboeG2zzTb2oc6aa67p5i4es2fPtg8Un3nmGTenalPvL0r/1PIQlTfj7/nur2RNn1PadO+9996zeaEqWLJ555137HJ//JFcz0eltCTLQqIHzNpf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taliYmJ811xzjS9//vy+hIQEW+vz/f7772abH330ka3x+V5++WVT98UXX9iaYy666CLftddea0sZ16lTJ7Pthx56yBcZGWlrU/Xt29f8ny5t2rSxtalat26d5uPeeuut/x6n93NER0f7QkNDfXfffbetOd7XX39tHtO8eXNbk+r+++/3hYSE+A4dOmRrUp177rlme3Xr1vUdPnzY1qbS70S3NWLECFuTql+/fqb+zjvv9O3cudPWppo5c6YvT548vmeffdbW+HyLFi064X2kx19//WUe98wzz9ia4KZOnWru99RTT9kan3mfus9cdtllZh9KS1JSknn/F198sa0JTvev2bNnm/dcqFAh3y+//GL/B5n1xcsf+Ho83MbzJS4m1j6D95o0aWL2tVmzZtmaVP379zf1um+MGjXK1qbasmWLL1++fL7rr7/e1hwzaNAg87iffvrJ1hxvwoQJ5vdUu3Zt3/79+21tqsGDB5vHdu3a1dak6tatm6mfOHGirTlefHy8r0yZMr7LL7/cFxcXZ2tTjiPLlpnH6e+mffv25rfh0P2/fPny5v8jIiJsbeba52+++cZsZ8iQ4McX/b3r/+vn5k/bSa3X9nru3Lm21ueLjU39vrdt2+YrVqyYr0iRIr7x48ebOoduq1SpUubxwdrBevXqmfdw9OhRW5M++jr0u9X2w/81qd27d5vP+KqrrvIlJiaaOv28zjnnHPM6qlSpYu7j74033jD/991339maVJk5VjiefPJJ83+Bz5VRa9euNd9lxYoV/3s/jocfftg8R7D9X19vuXLlzOe+efNmW5s+uh/qdgN/b0r3Y91uwYIFT7pd/cw3bNjga9q0qdlWu3bt7P9kjO5f+vgGDRrYGri1edo834TWH3m+bJx04v7itWrVqpl9b8GCBbYm1bvvvmv2k3/++cfWpHLar6JFi/rGjRtna1MdPHjQtMn6G9m6dautTXWqc+T06tmzp9mOHsOU0xZVqlTJlDPrhRdeMNtdvHixrUnbqX5Dbdu2Nf+f1rHB8d5775n7ffXVV7bGZ46Pei530003mc/ziSeeMGW9n7PodxAVFWUfkX7OsVEXbesCz5U/+eQT83/6WfjzP6a+9NJL5pjocI6977zzjrmPvnf/46R6+umnzf/570uZaRPTOgfP6HM3bNjQtPH+9LMuXry4qdf7a1vrr3LlyuaY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Pqwdgfqb0iAi/Y41IFPbcQ3WSKvj0qGfv5N1xKHfm36Ob7755n/Bf7qfBE6VhYzZMn2+rB39ty155+r/3SVl6lS1JW/pb1zbYv1daBCB/q60fdTzDG1L9LxCg+Iczm9Ez0H0OKKBAxoQqr8pbY9/+ukn09GtQa6B2RT0vOpU58iZ4Zz/6fRsaU01FEjbTyfTh9J2TLehr9n/t62BuRq0mpnfkGbH0OOlBjpoO67b1nVtR3U6LG3ndOqptLJRafutbai2b/o5a5up56w6FZZ+3vpZa6BgRuixUQM89Ln19b/yyivmeKqfnbZ5ek7ZsGFDc2zxP5c82THVocc+bbP0GKHHUW1vtR377bffTKCOZqDQzy1QettEldY5eGaeW9+vEzipx1F9z/70vNgJ1tbP+mTZ5gAAAHINDcgAAABAzrFszkpf4zte9nwZ2HmIfYbTIzEx0ffII49osLBZ8uTJ43vjjTfs/x7Tv39/37nnnvvf/XSpWrWqb8KECfYePt+rr75q6tu3b29rjtm3b58vX758vipVqtiaY3r06OHLmzfvf9utVauW78iRI/Z/06dr166+woUL/7eNUqVK+d5//33fhg0bTPnpp5+29zwmOTnZ99577/kKFSr03+OKFSvma926tW/t2rVpPs7RpUuX/x43fvx4W3uil156ydxHX4u/smXL+i688EJbOlHJkiV95cuXt6XjjRs3znf11Vf/9/y66Pa++uore49Uu3btMv93svdxKroN3Uf8v6OwsDDfQw895FuyZIm9V3BxcXG+du3a+UqUKPHfY3XR/eDXX3+19zrR1KlTfZUqVTruMfqc99xzj2/p0qX2XnDri5c/8PV4uI3nS1xMrH0G77z99ttmP/jll19sTarhw4eb+oEDB9qa433yySdBH6e2bt1qfmPOPla8eHHf999/b/831ZYtW0yb5NxHF20LW7Vq5YuMjLT3OqZv376+kJAQcz+nLdQ2RcvTp0835UDO77Rhw4a25njLly83/9+yZUtbc7z0tM/+tO3Knz//f/e99NJLfSNHjvT169fPlOfOnWvvmcppw9asWWNrgvv33399FStW/G+7uujveObMmb7nn3/elAPbQaVtiXP/k7Wlwej27rrrrv8er4t+FtruxMTE2Hulymyb6+ZYMWnSJLNd53HabqenDatTp44vNDTUN2/ePFsTnPPd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1jrp9JV3QZlLhr3s+aEwLiZOXqrdypbce29wewlLTpSf3htoa9xrO6KnrPzxT9m95F9b407JsldIpZePZQoFglkxZYGM+8yjbF4pP9x2I3vmyHNZDcioM9Gb36YaWu0q2XswWl74+eTXKzNi4Ru1pcvgaTJmznpb406lcqVlSIcGUvF279rOAf2byRWlS0iHJ7vYGvc+G99Hlk+cIzN/9CaAokCRgvLaN11lYptutsa9cg/UkctrECCXk6xZsk66tehrS+4NnjZA8ubzOOOrzycT23a3BfcqPPewnH9jOVvKWQbP2ySf/LPBltw5p2Bemd6ipi3lPl+36SsRm3fakjs31a4s9V95zJYAILhQe4uTOHTokAm4uOqqq4IGYygn+0WePMdHiGrGiri4OFsK7tNPUzurX3zxRXObloEDB5pgjLfeessEYyjN1lGlSpX/gjHU/v2pEeYlSpQwtwAAAACQ3XjZDXY6xhmQkhYAso/QPB5ewmRsGgAgl4tNTLZruVNomHeZXkLOgqk4AZx5BGSkgxPgkC9fPnMbzG+/pc7xWrVqVXPruPLKK83jt27damuOpxkxhg4daqYWadKkia090cSJE+XVV1+VRx55RLp1Oxb5vH79eqlQoYItpfrnn39MZg7/aVUAAAAAAAAAAAAAAEDWISAjHS655BIpXLiwrF271gQ7BBo7dqx88sknUrx4cWncuLGtTfXggw+a23bt2kl8fLxZd8yZM0fuu+8+SU5Olq+//jrNgI9///1XHn/8cbnlllvku+++O26kVlJSkoSGHvsajx49KiNHjpR69eqZ7BwAAAAAAAAAAAAAACDrEZCRDvnz5zfThGjgxN13322mC+nfv7/06dPHBFTce++95n4aVHHBBReYdccbb7whZcqUkZ9//lluuukmadWqlXTo0EHq1Kkj1apVM9OhDB48WGrVqmUfcbyIiAizfQ32GD16tBQsWND+T6rq1avLiBEjZMqUKbJgwQITuKEZObp08W6OQ+Q+8bFxEnc0xtWSlJhktwYAwOkVl+yTqMRkV4tuAwCAzIiNjZfIyBhXS1xcgt0aAADIzaKOxgY9V8jIkpSUu6ejAAAguyEgI506deokn332mVx44YUybNgwef3116Vt27by999/ywMPPGCCIZxsGP6KFi0qs2bNMlONhIeHm0wa3bt3l+nTp5v7z507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WydvvfWW1KxZU6699lqpXr26dO7cWfbt22fvcTxfyoF70KBBUqNGDSlXrpw89thjEh4ebv/3RL169ZJGjRrJxo0bbQ0AAAAAAAAAAAAAADgTCMjIgKioKHniiSekWrVqMnDgQDl48KAUKlRIVqxYIT169JAbb7wxaDCEBlZ069ZNrr/+eunZs6csW7ZMEhISZN68edKlSxepUKGCCdYIpEEfzZo1k0suuUQeeeQRmT59utSrV08SExPtPY758ssvpV27dua+V111la0FAAAAAAAAAAAAAABnAgEZ6RQfHy/33HOPjBgxQho2bChbt241QRRLly41GS40Q0ZISIjExsbaRxzTqVMnefvtt02Wi7///lsOHDhgAjcOHTokL7/8suzYsUOaNGli751Ks3Bo0Ef37t1l+PDh8tFHH0n//v1lw4YNJpDD36RJk6Rly5by4IMPmsAQAAAAAAAAAAAAAABwZhGQkU6ayeKff/4xARQ//vijyUThKFCggMmA8e+//8oNN9xga1NpsIQGU1x33XUmyKJWrVomcEMVLlxYvvjiC7nlllvM/61evdrUqyFDhpj/b9Wqla0Rufjii82tBnI49Dl1KpObb75ZfvjhBwkN5SsFAAAAAAAAAAAAcosvDxySV3fucb28u2evxPh8dqsAvEDvfTrs2rVL+vTpI5dddpnJUpGWc889164d884775gpS4YNGybFixe3tcdocEbdunXN+pIlS8ytmjlzptSsWVPy589va8Rkx1BOMMjevXvlvvvuk6JFi8ro0aPN9CkAAAAAAAAAAAAAcod4n09WxsbZkjsHk5JlV0KiLQHwAgEZ6TB06FCJi4uTNm3amACJI0eOyOTJk+Wnn36SOXPmmICLYDSjxvz5801WjMqVK9vaE5133nnmVqc+cWzZskWuuuoqW0o1YcIEKVGihJQvX95MjfLAAw+YoIy//vpLLrroInsvAAAAAAAAAAAAALlBSMo/ANkXARnpMHLkSMmTJ4888cQTZuoSDX64++67pVGjRlK1alW58cYbZf369fbex2jWCvXUU0+Z27RERUWZW/8MF5ptY+vWrbYksnLlSvn999/lueeeM6+lSZMmMm/ePDN9ik5XAgAAAAAAAAAAAAAAsg8CMk5Bs1YsX75cKlasKJ07d5bvvvtOunbtKhMnTpThw4ebgIxVq1bJo48+ekKm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951/x65mzZpll19+ue2///524IEH2iuvvOKv7Gr27Nl2/vnn25NPPulbAAAAAAAAAAAAAABAXiMhIwT9+/e366+/3j766CNbvHixb93V9OnT7eCDD3YJE1988YWtXr3aFi5caAMGDLCTTz7Z7rjjDv/OHaZOnWoHHXSQDRs2zE499VSrVauW3XDDDfbOO+/4d+ywatUq69Chg/30008uyQMAAAAAAAAAAAAAAMQHCRkx+uWXX1z1iiAI3OtDDjnEPWeVkpJiRx55pE2cONHuuusul7gxZ84cW7ZsmfseNWvWtGeeeca+//57/y8y3XTTTVa8eHEbM2aMPf744/b5559bkyZNrF+/fv4dmbZu3Wpnn322zZ071yV71K9f318BAAAAAAAAAAAAAAB5jYSMGEyZMsXOOOMMq1u3rnXp0sW15ZSQoeNMUlNTrXfv3i6xolKlSv6KuUSNl19+2X395ptvumdJTk62H374wVXfKFu2rGsrUKCA1ahRw1XDiHbttdfakCFD7K233rI2bdr4VgAAAAAAAAAAAAAAEA8kZPxLSq445ZRTXILE119/bfPmzbMSJUpYs2bN/Dt2+Oabb2z48OHuWJIrr7zSt+7sxBNPdN/rr7/+8i1mv/32m3vWtWgzZ850R5dEPP300/bGG2/YQw895BI/AAAAAAAAAAAAAABAfJGQ8S9s2LDBOnbsaAsXLrSBAwdagwYNXCJF69atLSkpyb9rh2effdY933333e45OzqWRAkdOsIkQkke0rBhQ/csqsoxf/58a9u2rXutI0x0BMpFF11k999/v2sDAAAAAAAAAAAAAADxRULGXtq2bZurQvHnn39anz593HEjEydOdEkahx56qH/XDqtXr7Zhw4ZZnTp1tidRZCc9Pd02btzokjIiKlSo4J51dEnEww8/7JI3LrjgAhs7dqx7PuKII1yFDAAAAAAAAAAAAAAAkBhIyNhLN998s3355Zd233332cUXX+za/vjjD/d8yCGHuOdoP/74o23dutWOP/54dyRJTubMmeOSMpS4EXHaaadZuXLl7KyzzrI77rjDjj76aPvwww9dxQ0lhnTq1MmqV6/uqnQo8aNv3772+OOPuyNSAAAAAAAAAAAAAABA/BR6MIP/Gv9AiRA9e/a0c88911555ZXtCRavvvqqO7LkmWeecQkU0d577z0bPny43Xjj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AAAAAAAAQMhIyAAAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgJCRkAEAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAABCRkIGAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACAkJGQAQAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAEJGQgYAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAICQkZABAAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAQkZCBgAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgJCRkAEAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAABCRkIGAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACAkJGQAQAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAEJGQgYAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAICQkZABAAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAQkZCBgAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgJCRkAEAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAABCRkIGAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAAACBkJ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AAAAgJCRkAEAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAABCRkIGAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACAkJGQAQAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAEJGQgYAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAICQkZABAAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAQkZCBgAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgJCRkAEAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAABCRkIGAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACAkJGQAQAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAEJGQgYAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAICQkZABAAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAQkZCBgAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgJCRkAEAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAABCRkIGAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACAkJGQAQAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAEJGQgYAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhAwAAAAAAAAAAAAAAICQkZABAAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAQkZCBgAAAAAAAAAAAAAAQMhIyAAAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgZCRkAAAAAAAAAAAAAAAAhIyEDAAAAAAAAAAAAAAAgJCRkAEAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAABCRkIGAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACAkJGQAQAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAEJGQgYAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAAIGQkZAAAAAAAAAAAAAAAAISMhIw8tX77c/ve//9lJJ51k++23nx188MF27bXX2uTJk/07djV06FDr1KmTNWnSxI499lj78ccf/ZVdff3113beeefZl19+6VsAAAAAAAAAAAAAAEA8kJCRR7755huXVHHbbbfZsGHDLC0tzf7++2/r1auXHXjggfbZZ5/5d+7wwQcf2HHHHWdr1qyxzp0728qVK61Dhw42ffp0/44dxo4da+eee66lpKTYCSec4FsBAAAAAAAAAAAAAEA8kJCRB77//ntX5WLbtm3Wt29fW7Fihc2cOdPWrl1rvXv3tvT0dLv88stt2bJl/l+YrVu3zq6//no75ZRT7Oeff7ZHHnnEJXUokWPAgAH+XZmUhKHvX61aNRs4cKAVLVrUXwEAAAAAAAAAAAAAAPFAQkYuW7JkiTtGpFixYi6x4rLLLnNfS8GCBe2qq66y6667zlavXr1TooUSK1QR4+6777YCBQq4tqpVq1pSUpKtWrXKvZb169dbx44dbcOGDfbVV19ZpUqV/BUAAAAAAAAAAAAAABAvJGTksmeeecYlVvTo0cNatmzpW3d20kknuee//vrLPcvw4cOtTJky1qZNG99iNnfuXNu6davVqlXLvVZljfPPP98mT55sn376qe27776uHQAAAAAAAAAAAAAAxBcJGblo48aN9tprr1np0qXd8SM5iVS1iD6yZN68eVavXj1XRSNi8ODB7rlt27buuVu3bvbll1+6/xvHHnusawMAAAAAAAAAAAAAAPFHQkYuGjJkiK1bt85OP/10K1mypG/dld4jJUqUcM9SoUIFW7x4sW3ZssW91tEkzz77rLVq1coOPPBA69Wrlz3//PPWvXt369q1q3sPAAAAAAAAAAAAAABIDCRk5KLvvvvOPZ9wwgnuOSezZs1yz3Xq1HHPcskll9iSJUvs+OOPt9tvv91at27tEjT69Olj33//vd1444125pln2hNPPGFTpkyxF1980Z5++mkbN26c/w7hUJWPMM2ZM8fmz5/vX4Vj2rRp25NawqDvpe8ZJv3OOnImTDNmzLAVK1b4V7FT8k/Yv7diNhLfYdH308+5N4/c+Bn0u4VJP2ckASsMig3FSJgUw7nx+V29erV/FTslr+l7hmnBggW58vmNxOeePnLjZ4iuzBQrHamlnzNMqampufL5TUlJ8a/Cod87LS3Nv4pdbn1+w46h6Pjc04cqgIVJ33Pt2rX+Vexyqw+ZPXu2fxUO/YzLly/3r2KXW5/fsONY3y83/v7u7WPRokX+X4dD33Pz5s3+Vex0XOL06dP9q3DMnDkzV8YAif751b2LHmFSHOfG53dvH2GOAbZt2+a+Z5h0L6y4C5P64v+Pn1/97c2Nz++aNWv8q9ht2LBhe2zuzSM3foYwacwZ9t9CxUd++PyGHccaw+eHz28kNvfmEebPsGrVKvc9w5Qb83iKjzA/v5q7DPv31hg+N8YAYX5+dZR12L+3Pr+R2NybR5g03s+NMcDChQv9q3Do9960aZN/FbvcGgMkJyf7V+HID59f/f2Njs89fYRJ8ZYbfcjSpUv9q9jlRh+iny83Pr+5MY8X5udXf39z4/MbHZ978gj7Z1D/EfY8nn7GMNcCcqMP0ec37Hk8fS5y4/MbBIFviZ1+vrDvXcL8nP0XFMj4Hyy8/8WwkzZt2tjvv//uPrz169f3rbvScSavvvqqvf/++3b++ef7VrMBAwbYK6+84jr0Aw44wO688073QTv88MOtUaNG9ssvv9hTTz1lDz/8sJUtW9b9Gw2I+vXrt9P3icXMjJve/y0Or6PY8sVntqlAUVvWPPPYlTDU+nWgza/Q1NYUzzz6JValNy632ssn29QtjXxL7GonpVhS2gabm1zYt8SuccMtFqwKbNuqAr4lNgWSAitcx6zG6h2VWmK1uniabS0a2KHFKvuW2I3atNQ2B9v8qz1UoqQVPudc/yJ2Wz75yNaXrmIrG7f2LbGrNexTm1n9UNtcqJhviU2ldSlWedVsm7ZlH98Su3pJ8yx94xabn5LkW2LXeJ80C5YVsG0hrccULGlWuGpg1UOM4+UlNlvhogWsddFw+hgZsWmJbQ3S/as9U6BCBUvqdLp/FbstH/SztVXr2+r6zXxLbApt3mTVR31tk2sd5VtiV2PVTCu9LtVmbGngW2K3T9Ic27R+m6UsCi+O922UZlsWFLAgpJyMQhl/0pMqZMTxmvDieGmpTVY0qaC1LhZeHP+6MdWCjP+3NwpUrmxJp3Tyr2K35d23bEXTQ21DpZq+JTbFV6ZahUm/2d81j/QtsauzfJIV3bDGZm3NeSy4t5okTbcVK5Ns2fJwcquTMsYA+9TfYmmzwxlTSKFKgSWVtlDjeHGZjVYlqZg1LpI57g3DsI17n+BRsFFjK3R4eGNZxfHi1u1ta8kyviU2pVJmWtnZEzPiuJ1viV2TRSNt85YkS95Wy7fETnG8ODXJ1qwNJ45Llgisds1w47hwrcCKFCpoldeFMz6TRWU2WN0ipa1OUs4VFPdGWsZ44veMccXeKtSqtRVs2cq/ik2waaNt/egDW3DkWb4lduVmjbdii5NtWvU2viV2jRf/YRu2FLGFW6v6ltg1LTzd5swrbJvTwom7CuXSrUqlrZY2J8Q4zvgTWSxjDFBxXVHfErtFZTfYvkXKWeWQ7l1WbttsE9NW+ld7rlC7o6xgg4b+VWzSFy+yrd9/ZyntzvQtsav49+9WZMUSm1rjcN8Su31Thmf89ypnS7dV9C2xKWTbrHHhWTZ1RhHfEruqlbdZ+bLbwo3jOoGVDJKs3Ibwfk7F8YEZY+MSBcK5L1i0baPNSNv7BYakTqdl3OuF879n+rQptm3UKFvQ7gzfErtqY36wzVsL2tzKLX1L7PZL+TWjL65ia9LDGfsUL7DB6iUtCDWOa9fcaiWS0t19XliK1Aus9JbCVnpTOHOD6QUCNz4+sng13xK72VvW2oKt6/2rPVf4ksv9V7HbNnK4bZkzzxa16ehbYldt9GBbX6CkLaiwr2+J3f4pw2zultq2MQjnb2GFgquscoElNn1WeHFct9YWK5pxz751UYhxXD+w8puKWvG0Qr4lNmmFttnyUputXYhx/HfaKlu2bS8XAQsUsMIXX+ZfxG7bL0MtbckyW3zQ7jfq7o3qI760lRn/nVLLhjO3UDAjNpouGGZTtzTey5mdnFUptNTKBatsxuzw1kAa1N1iSVsy4jg1xDhuELh7vMLb9u5etEBGnGRnQ5Gttqb4FmtbPLz7jHGbl2f8ndzLzZtJSVb4gov9i9ht+fYrS9u0zZa0Otq3xK7mb59njMEa2coS4fy3KrF5jdVfOs6mhLiWVzNpkRXfus5mzQ0vjvdpkGYF1mb0DSvCiuMgI44z+oVVxXOMy721pliabSqWbocXq+JbYnfkrV2tdt0dhQj+vyMhIxdVrlzZVVvQTovdfSiaNm3qspmU7V+1as4dkTKUDj30ULcLalTGDdbo0aPttNNOsx49eriHsuqPPfbYUHcTKRvsgw8+8K8AAAAAAAAAAAAAAMjexRdf7NbJkYmEjFxUuHBhq1Klym5LKk2ePNmaNWtmBx54oP3555++dVcq7aJki4kTJ9rw4cOtZcuW1rZtW1fWfNKkSVawYGY2nxIzVDFDpdP1fx8AAAAAAAAAAAAAAOS9cOrDIlulSpX6x7MgX3rpJfd85ZVXuufsKGfmsssusz/++MM+/PBDl4yhc+VGjhxpZ5555vZkDNF5xCVLliQZAwAAAAAAAAAAAACAOCIhIxfVr1/fJUgkJyf7lp2pIkbfvn2tdu3aLuEiJ6p6oUSM5557zjp06ODadCRJenq6tWq187m/v/76qzVv3ty/AgAAAAAAAAAAAAAA8UBCRi46/fTT3XP37t3dESLRVN2iY8eOLqni7bfftiJFivgrO+vXr5898sgjdv3119tNN93kW822bdvmnqOrY4wZM8YmTJhgZ599tm8BAAAAAAAAAAAAAADxUCDQeRjIFWvXrnUVLGbPnm1NmjSxE0880UqUKGGjR4+2IUOGuCSMXr162aWXXur/xc6GDx9u7du3t2OPPda+/PJLK1SokL9itmHDBqtevbo7vuTFF1+01NRUu/HGG13ix6RJk9xxKQAAAAAAAAAAAAAAID5IyMhlixcvthtuuMEGDRpkW7ZscW1JSUnWqVMne+CBB3Y5ciRi/vz51rp1a6tWrZqNGDHCSpcu7a/s8Pnnn9vFF1/sEj/kkEMOcRU1GjVq5F4DAAAAAAAAAAAAAID4ICEjj6xbt87mzZvnqlzUrVvXihcv7q/EZv369TZjxgwrX768+74AAAAAAAAAAAAAACD+SMgAAAAAAAAAAAAAAAAIWUH/DAAAAAAAAAAAAAAAgJCQkAEAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAABCRkIGAAAAAAAAAAAAAABAyEjIAAAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACBkJGQAAAAAAAAAAAAAAACEjIQMAAAAAAAAAAAAAACAkJGQAQAAAAAAAAAAAAAAEDISMgAAAAAAAAAAAAAAAEJWIMjgvwaQS9LS0uzXX391z0cddZSVKFHCXwEAAAAAAAAAAPjv2bJli/3++++2bds2O/jgg61kyZL+CgD8/0GFDCCXjRgxwho3bmzt27e3U045xX09ZcoUfxUAAABAxMaNG/1XQP40fvx4O/XUU61JkyZ22WWX2eLFi/0VIH9IT0+3l156yQ466CBr1qyZbwUAANh72qTaoEEDO/LII+2YY46xunXrWt++ff1VIH+YOnWqXX755XbooYdaly5dbOTIkf4KsOdIyABy0dixY10iRoECBezpp5+2bt262aJFi+zKK6/07wAAAIiNJji6d+9ut956q3311VdGATzkR/369XMTdaokV6NGDXvyySfdDiogPxk+fLi1adPGvvzyS5sxY4a9/fbb1rZtW1u+fLl/B5DYtIP1zDPPtJtuuslWrVpl++yzj78C5B9r1661Rx55xA455BA74IAD7Pbbb7clS5b4q0D+QBzjv2Dy5Mlug+q6devshhtucHGs+YquXbvaE0884d8FJDbNuSlR+a233rIxY8bYBx98YEcccQQxjL3GkSVALtEEctOmTa1YsWL2888/W4UKFVz7JZdcYu+++67bKVW1alXXBgCID006ayCtAbUqGOmmUP02kB9s3rzZrrrqKjeuiHb88cfbgAEDrGzZsr4FSGyvvPKKm6ArU6aMtW7d2iZMmGArVqxwk3eff/65FS5c2L8TSFybNm1ySUW673vvvffcuOLuu+92lQZUMeOLL77w7wQS13XXXWd9+vRxj0svvdS3AvnHggUL7MQTT7S///7bkpKS3Nycpr5r1qxpgwcPtv3339+/E0hcxDH+K0466SRXWeCXX35xlTFk/vz5rlLGnDlzbNCgQdahQwfXDiQiJcc1atTIihcv7iq7HHXUUe74nYsvvthmzZplb775pqucAewJKmQAuUQTbtoVpYmMSDKGNGzY0D1rEQXIr7SIrQXAm2++2S2iaAIayG90E6gMZyXKvfjii24x8LjjjrOtW7f6dwCJTaXw1RdfeOGF9sMPP9inn35qzZs3d1+rhCJ518gP5s2b56q7nHzyye7roUOHusk5LWB/8803bqwB5Ae6/9OY+Mcff3Q7WXU29gsvvOBiW5PNH374oX8nkJjGjRtnvXr1sqeeeopkDORLmmfTwp7GE2+88YZbRFFFAS2UpKSk2BlnnGFr1qzx7wYSE3GM/4K0tDRXaev77793C9aRZAypXbu2DRw40CUbXXPNNcwpI6G988477ljVIUOGuESiggUL2uGHH+42YFepUsUlM0+ZMsW/G9g9EjKAXPLbb79Z+fLl3blS0X766SerVq2a1apVy7cA+QuL2PgvWL9+vXXs2NFNcujmUINnLWCPGDHClc0HEt0nn3ziqrs88MADbie2jkhTiXGdY6ly+VrIfvXVV/27gcSlIx00KaeYLleunGtTpYyPP/7YVct47bXX7Ntvv3XtQCLSLtZ7773XZs+ebRdddJG714vQ0ZWvv/66i2kdAbFs2TJ/BUg8SuwsUqSIXX/99b4lk5Lxhw0b5so1c8+HRKYkOFXZ0tg4UvmwUqVK7n5PVeW0aUpjZyCREcfI7zQ2VnKyqrlUr17dzRlnpY0kt9xyi3uvEo+ARKPY1DqeqmFcffXVVr9+fX8lk9b2tElVSXSqigjsCRIygFyiDGZNXETvTtXgWRMZGnAom04dtl5zPjbyCxax8V/xzDPPuLKJGlxrp8m+++5rL7/8ssvQVylFINE9//zz7obw/vvv9y2ZtCNbCyo6rqRHjx6u3wYSkXaYPPfcc+5cYe2MKlGihL+SqWjRom6soTEzExxIZBpTPPbYY666yz777ONbd9BknSoOLF26lIovSBjajap41O6+CM1haG5i5cqV7rW+VlKcdrWqPPORRx5p7dq1Y2yBhKVS4toUpQoCWWkzifpoJSwvXLjQtwKJhzhGfpecnOzm21Q5IDpROatu3bq5oymVmA8kmtNPP90uuOACtzFVm56yc/bZZ7v+WtUQ6ZOxJ0jIAHJJjRo1bN26dTZq1Cj3WjtVNRBRB64Bh2hnqyY2VJYZyA9YxMZ/hXarahfrgQce6FvMLQZq4lk7UIBEpt2pGl+ccMIJrv/NSrtQ7rzzTlu+fLmrMgAkottuu80lWkycONGNJ7LTqlUrV/ll/Pjx7n1AIlJinMrV6rgoTdhlRztajz76aHv//fft66+/9q1A/GiuQseTaAI5QuMKjTGUgH/PPffYfvvt5+YwRFVgOnXq5HYJPvroo64NSCQqJz59+nQ77LDDfMvOlOj54IMPuo1TbCZBoiKO8V+g4xw0flixYoXb0Jeenu6v7Ezj50MOOcQdmQYkGt2/paamus3UOoInJ1dccYXbkK3jeYB/QkIGkEs0mSEqNde/f3+X2dy4cWM34RFZPClUqJB73rBhg3sGEh2L2Pgv0PmrylxWKfxomtDQIPr444/3LUBi0kSdFkw0IZeTK6+80lUW0AIhkIi0w0+TyUr03N0xDuedd557Vql8IBFVrFjRxbOoQlF2k846ukTlmDVuVkUYzn5HvKn8vRZBouP1lFNOcdU8//zzT3v88cddgtFdd93lFgeVhPH555+76lwDBgzw/wJIHLqP00Pj5JxoJ6vmLYYPH+5bgMRCHOO/QuMIVdjSJhFVkctJ1apVdxvvQLxoTu2YY45xX++uv42skSxatMg9A7tDQgYQI00in3/++dawYUNXVjlClTAOOugg++ijj+zCCy905T3VeWviI0IDEg2isyttCyQaFrHxX6NM5whNNN9+++1uN7bK0ol2sX7xxRfuayCRlCpVyh1JogWTnGi80aBBA1cuFEhEGhvrLFb57rvv3HN2GjVq5J4jJfSBRHTuuefaaaedZrNnz3ZnvmdH94uPPPKIO4+4d+/evhXIe7p3U7VOjRG0WUSLJRH/+9//3FFS3377rUvI0IKKxh2iRE9VNCKhCIlICW81a9bc7cKfkpmVVLS7RFAgnohj5Eca26q6lo5Di9DYITLeve+++9zYIzt///13jtUSgbykOE5JSfGvMhPq+/TpY8WLF3drH6r4kp1I3JcrV849A7tDQgYQA519rV0lWrCrUKHCTueiqdPWudh6VtLF22+/7RZPInRWqybrLr30UjfgBvILFrGR32kna/ny5bfH6axZs7YnFGlyWpPN0qNHD3v33Xfd10Ai0dji2GOPtZEjR7oJjJyoepFuHoFE8MQTT7jxcLSnnnrKateu7aoKKMk5O4sXL3bPderUcc9AvK1fv95Wr17tX+2g89x1v9e9e/ccJ+xUfUBH9dx0002+BchbqrB1zjnnWJcuXVxCxrPPPmtNmza1KVOm+HeYO6rkpJNOcmPmaErE+O233+zggw/2LUBi0bE6M2bMcAlFOVECUvRGKSDREMfIb1QZXEfyPfTQQ74l04knnmgXX3xxjsedRe4BNSYB4kn3d6qGoUqG0ZRQ//DDD9uqVavcscDZGThwoHtu27atewZ2h4QM4F+aOXOmO4akZcuWNmfOHBs9erR16NDBX83Url0769mzp8uUU8WMzz77zP27559/3pUDVUbzY4895t8NJDYWsZFfafI4ukqAjotSHzx+/HjXRx9xxBFu8P3NN9/slJmvNo7iQSLIroSnKgtol0m3bt18y8403tD4RImjQLypP9Wi32233bY9wUJKly5tvXr1cslDXbt2dUeYZKVjHooUKWLHHXecbwHiY+LEiS4OFbfaAaVqiL/88ou/alajRg175plnXFU5JV5kR+Nl3f/t7sgpIDcpmV4Tx08++aTbXa37NlUgilQsyon6Zx1duXbt2hwnpIG8Mm/ePLdYrQ0i0W688UZ3r6fxRnbjZ1UdUB/NmAKJYNy4cTZ48OCdNj0JcYz8QmMDVQM//PDDrVatWm4c/Ndff/mrmVR5S8eSaK5YleKUGCpaI7nsssvcHNz111/v2oB4KVmypDVv3ty++uort9E02q233uqSkTUv8cILL/jWTDpWVUdXKpFZ/x74RwGAf+X0008P6tSpE6xcudK35OzZZ58NihYtqtpc2x8ZA45gxowZ/h1A4lm9enUwb948/yrTBRdc4OL30UcfDTIG1EHFihWDESNG+KuZqlevHnTp0sW/AuJnyZIlwZlnnhkUKFAgKFu2rG/NNHHixKBgwYIunvfZZ59g+vTp/kqmjEG1u5YxsPYtQN577733gvr167tYVN/6xBNPBFu3bvVXg6B9+/bu2tNPP+1bMuk9J5xwght7zJo1y7cC8TFnzpzg+++/Dx5++GEXr+qXs4qMLzp37hxs3LjRtwbB448/7tpvvvlm3wLEx9ChQ4OSJUsGRYoUCY444oigefPmLjaTkpKCTz/91L8r07HHHuuuffPNN74FSAwzZ84MChUqFNx5552+JVP37t1dzM6dO9e3ZNL4+JNPPgk++OCD4NBDD3Xv6dGjh78K5L1NmzYFXbt2dfd3ikc9TjrppGDRokX+HUFw/fXXu/azzz472LJli28NgoULFwYNGzYMqlWr5uY6gHiZP39+cPjhh2+P4cKFCwe33HJLkJaW5t9BHCPxDRs2LKhVq9b2OI48DjjggJ1iVj7++OPt1zWPrPjV15qLY20E8TRlypTgsssuc33y8ccf7+KyUqVKwdKlS/07Mk2YMMH11bp+7rnnBv379w9uu+0211azZk3XNwN7goQM4F/QRLEm3x588EHfsoMmnTX5pgF2NL1+4YUXgrvvvtt12tGTzUAiYREb/wWalGvQoEFQokSJ4PLLLw+efPJJf2WHW2+91cXrGWec4Sb3IlJSUty/VdLRunXrfCuQt15++WUXn2XKlAmOPvrooEKFCu71Kaecsn2yLjk5OahcubJrv/HGG4NJkyYFQ4YMCY466ijXpoRQIF7Ur15xxRU7LZpEHlrgi7Zs2bLtsVyvXr3gyiuvDA488ED3WolHmzdv9u8E8p7GFOXLl3dj37///tu3BsG7777rJuFKly6902SyEuE0/qhdu3awZs0a3wrEn+Yj1K9mTbr/448/XPtPP/3kWzL16dPHteuhWO/Zs6e/AsTHpZde6uJRY13Nx0WSk+vWrRssXrzYvUdzbZExROvWrd2Y+oEHHnDjDM3j/fjjj+59QDxofqFZs2ZuXu388893SW5NmzZ18ar7vG3btrn3EcdIZGPHjnVjXW1UHThwoBtXfPTRR25hWjH72GOP+XfuoHk3XVPisubievXqxXwb4koJ96VKlXKPs846yyXAFStWzMWp+ues7r//fndND21+0jxHp06ddlkDBHaHhAzgX1BVDHW+N9xwg2/J3D2iqhmRSWftnlLiBZCfsIiN/4L09PSgXbt2QZUqVYLJkyf71l0pa/+4445z8dyqVavgpZdectVfNMmhSWdl/APxoB2qisGTTz55eyUu7YA69dRTXbxee+21rk1GjRq1fYdJ5KGxSHZJo0Be0iRGJF6V0KmEIe0+UZtidsWKFf6dmbQDW9c0QX3MMccEbdq0cUlFWXdYAXlN93xa/MhuTPH666+7uNUiSjTFbiT+gUTx0EMPubjMOnGsRAy1jxs3zrdk0m7A22+/3S2sqLoGEE+///67i9OsVVoUn2pv27bt9qRl7WxVtTi1Rx6ap2ARG/Gm6m+6zxs8eLBvyUxijtznRVcwIo6RqFQFQ8nKWRM8NY+hChha1J46dapvzaQKAuXKlXMbTVJTU30rEB+KQcWi1jGix7jTpk1zG0TU33755Ze+NZM2iey3335uvmL48OFstsa/QkIG8C8dfPDBbhCtsnKacNbX6qyVlKEbRHXqyrDTjj8gP2ARG/8VX331lYvPPSkVrgG1koyij5VS2UUmORBPSqbQjeH69et9SyZN1mmHVNb4Xr58uZvcO+ecc9zC4Z9//umvAPHx+eefuzjt1q2bb9lBbbqmXa5ZaYeJrpHUjLz0/vvvu2NItNiXHS1+dOzY0b/aVWRc/Ndff/mWwO1wPeSQQ1xiHZAoPvvsMxerOgItmvpe7WqN7MwGEo3u2TT3pvmK7ESSQDU3EW3kyJHBK6+84ipzbdiwwbcCeS+SLKQ5tPvuu899HU2bmlSJSwt948eP962ZiGMkEsWj+tucNoBE7gOVJKd55mhvvPGGu6ZjKoF4UsKxYjHrMeyiezolFWluOOvRUIp/9dMtWrTY6ZgpYE+RkAHsAe0g6dChw06Zb9rpF31WmhZIohei33rrLdeu89+B/IBFbPxX6Bw/nfOelfpt7Qx8+OGH3VEP0bSgrfjVYJzd2IgX7VDVrmolVjz11FO+dWe6OdQNYMuWLX0LkHhOPPFE1w9nVzFr69atwUEHHeTGDtG7A2XBggXuuLTszm0Fcosm1BSPV111lW/ZQUeO6JrGFjn5+eef3Xu6d+/uWzLpKMvoanJAvGniOFINUckZ2snatWtXF799+/b17wISi5KOu3Tp4kqJqypRdnRciY6PUgId93JINJo/UwUMxa/GuFmP/o3QXJz6Y5XOBxLVq6++6uL022+/9S27UqKz3pM1SU4iR0198cUXvgXIe/vuu69LgsvJvffe6+I0u/tDJYjqmjanAnurYEbwAPgH/fv3t6+//toeeugh32LWrFkzmzp1qg0ePNhGjx5tY8aMsXbt2vmrZvvtt597XrNmjXsGEt2QIUOsZMmSdvLJJ/uWTJMmTbKHH37YHnnkEZs/f75rK1KkiD333HO2cOFC+/HHH23EiBE2Z84cO+6449x1IJ4Un+vXr7exY8e614rNc88915o3b249evSwBx54wFq1auXaIypUqODit02bNpaUlORbgbx122232d13320TJ060jBtE37ozxe6ZZ55p48ePd+8DEtFff/3lxsoaV2RVqFAhe/zxx93XV111leuvI2rWrGlPPfWULVu2zG6++WbfCuQuxdyFF15od955p2/ZoWjRolagQAFbvHixb9nVkUceaeXLl98+7oioV6+e+/dAPKxYscLWrl3rX2UqXLiwffjhh64f1lhCMfrmm2+6/vayyy5z75kxY4addNJJVqpUKfe8u9gH8sLPP/9s77//vpuvqFatmm/dWdWqVe3yyy+31NRUGz58uG8FEsOGDRvsjz/+sG7dutnq1atzjGPNxbVs2dK++eYb92+ARKRxsaxbt849Z+fiiy92z5rbSE5Odl9HvP766+4e8brrrmPNBHGj8ULlypX9q13dcsstbtzcp08fNw6J1rNnT6tfv75bJ9HaILA3SMgAdmPLli3uZu7www+3WrVq2TPPPOMmmCM0gDjhhBPsoIMO8i07aAAtBx98sHsGEh2L2Miv0tLSbNOmTf6VWZcuXVw8Hnvssa7/bty4sX388cfWqVMn++GHH9zCiyapFdNAInnxxRfd2EM3dVqQzsl5553nnn/99Vf3DCQaTdTtbpKuffv2VqNGDZs3b56bqIt25ZVX2jHHHOMWXyLjaSA3nXjiifbee+9ZgwYNXB8cTeNjJdp///33tnnzZt+6M8V79erVd0ouAuJFCfOK6YoVK7pEISW+Rceu5ieU1PnYY4+5pIyLLrrInn/+eXftu+++s9atW7tNJ5qE1nNkUQXIS0GgzaeZevfu7RKEdP8WPReRVceOHd3zuHHj3DMQb5E4LleunL388ssuSU7jjH+K440bN9r06dN9CxBfmm978MEH/SuzFi1auOeffvrJPWdHiflK/tT94NVXX+1bM2kh+9FHH7WUlBS74447fCuQuxTHGkdEKJFz2rRplp6e7lt2VqlSJbcGon5c8xPqlyNKlCjhEjU0vr7iiit2GrMA/4SEDCAHWuTQpJyqXmjX04IFC2zr1q3WtWtX97w7+rfa+aeFahIykKgU0xoAR7CIjfxIExrnnHOO3X///b7FXBKRdv8VK1bMRo4c6SaWNcE8aNAgtwiomz71zbu7gQTyiibnIjeBGm9EJiwUszlp1KiRe165cqV7BuJNu1ZVMStCE3VTpkyxRYsW+ZZd7b///m6i7pVXXnGVtiK0uK0JjuLFi9s111yzyw5vILdoou7ss892FQOide7c2SXJvfHGG75lZxqLqIqcqg0A8bRq1So7+uijXX+sTSNKnld/qjmMaFoMUTKc4loJcNK3b19336e+V2NkXevQoYO7D4zelALkNvXF2hgSSbivW7euSyCSAQMGuOfsaHFFohdNgHjJGsdnnXWWS4IT4hj5icYRqhg+YcIE9/rQQw+12rVrW79+/Wzp0qWuLSvdv2kcopjXYnXWdZSbbrrJDjvsMJegD+Q2xaDmjTXvEKG1D61x7G7eTcl0mjueOXPmLveBWvNTZa7ffvvNfvnlF98K7IGMgASQxdixY925qnXq1AkGDhwYzJs3L/joo4+CmjVrujOiMm4G/Tt3+Pjjj915f/fdd19QtGhR99758+f7q0Bi0ZnuOiutY8eOviXTJ5984s5dVZwfcsghQcbAxF/JlDEQCapXr+5fAfGXlpYWNG/ePChUqFAwevRo35opPT092LBhg3+1s6OPPjrIuIn0r4D46Nevn+tv//zzT98SBGvWrHGxqZieMmWKb93Z4MGD3b979913fQsQP+prq1SpEpxxxhm+JQh69+7tYvTOO+/0Lbs67LDDgp49ewalSpUKvv/+e9+6w9NPP+3G1H/88YdvAXLXsmXLgsqVKwdly5YNUlJSfGsQLFmyxLWVK1cumDt3rm/doU+fPi7edb8IxJPOtC5Tpkzw888/u9erV68O2rZt6+JTY46sNN5Q/x05z71Ro0bBzJkz/dUgeP311137hx9+6FuA3PfCCy+4uPvxxx99SxBs27YtOOKII1y75t2yozjV9c8++8y3APGTXRwvWrQoKF++fFC6dOlg8eLFvnVn11xzjft3y5cv9y1AfGlNpGDBgsHNN9/sW4LgxRdfdHHapUsX37Kz66+/PjjyyCPd2HrTpk2+dWcrV670XwG574ADDggaNGjg5i5k3LhxQYECBYLWrVu7MUZ2atWq5dZJNL7OLo4Vw//73//8K2DPkJABZEOdtAbJGnRE0wRcxYoVg2LFigVTp071rZkiyRp6tGjRYqeJDCARaeFE8dq/f3/fkolFbOQHGzduDN55553gnnvuCa699trtfa8SNP6J+u+kpKTg8ssv9y1AfAwaNMjF7lNPPeVbMn399deu/fDDD882ps8555ygSJEiOy0YAvHUtWvXoHDhwm7hWjSO0ASGEiomTJjg2qItXLjQvX/IkCHB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O/bYY31rJvXNiusDDzzQhgwZ4lt3SElJsf33398KFy5sU6ZMsUqVKvkrQHycdtppNmjQIDcuqF27thsHN2vWzF274IIL7Ouvv7ZFixZZ8eLFXRuQSBYsWGDHHHOMzZw5041x1a9WqVLFX92Z7gWbN2/u3jd58mQrU6aMvwLET1paml144YX28MMP27777utbzRYvXmz77befNl3Z9OnTs53HSE9Pt7Zt27o+WmPmokWLuvZnn33WzW9s2rTJTjrpJHvqqafc9wJy0xlnnGFffvmlm4vQI+ucmsYYiuOxY8f6lh0Uqy1btrQ5c+bYn3/+aS1atPBXgLwVSxxrDHLAAQdYjRo13NxFiRIl/BUgfjTfpvFv2bJlrW/fvnb66adb//79XXweffTRtnDhQjfOABLVvffea4899pi75xs6dKhddtllbq1Dc2rPPfecdevWzd3bMdZFPLC6hv+3NGGhCWUtglSvXt1OPvlk116oUCG74447bN26dXbLLbe4tqw02Nbkxeuvv25ffPEFyRhIeKmpqdlOykUo1jUw6dOnj/3888+urXz58tahQwdr06YNyRhIGKVKlXI3gDnRxLQSMpQspwQjIBEo6UL9cPv27d0YQ4spERpD6EZx5MiRbnI5KyV/amFk2bJldvPNN/tWIH7OPfdc9/zmm2/axo0b7YgjjrDvvvvOtV155ZW2evVq++yzz9xrINF0797d3edpMXvFihV2ww03+Cu7atCggUtYVhKH+m4gEWhRb8CAAda1a1eXYBGhDSZKrFi1alWO4wXd07399tvufi+SjCGamNa/U5+uJDsmqJGbNA7Wpqhbb73VLVY/9NBD1q5dO5s1a5Z/RyaNm8ePH+/66qyKFSvm5i40xtZnQRurgHiIJY41b6EkDiUW6RlIBLrX00bUl19+2c1DKBFfsa15ON3raaPfr7/+6t8NJJ7IfMX111/v7v3eeustO+GEE9zG04svvtiKFCniko2AuFCFDOD/G5VXbtCggStdpLKcKgeukocROv/soIMOcuWNspYQHzZsWJDRcbuSy0B+se+++wYVKlTY7XENBx98sIt5naedU2l9IN46d+7s4nTcuHG+ZVcZA21Xhlzve+edd3wrkPvmzJkTpKen+1dB8NNPPwV//PGH+1pnW6s8ouKyZcuWweTJk127vPTSS659yJAhvmVn+p7HHHOM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/4w4Rrzcfvvt7nizPU021kans88+28WrHuecc46/AsSP5h6aNWu2/fjU3dm4caPbZKLEIlVS1jh52bJl/ioQXwUzOlbgP2fbtm3u+Z133rEbb7zR+vXrZ1WrVnVtxx57rB122GE2aNAg++STT1xbtEmTJtmoUaOsbdu2vgVIbKtWrXLPxYoVc8/ZGT9+vJ1//vmWkpLiW4DEU7NmTfc8ceJE95ydKVOm2JtvvmkZg2nfAiSmXr16WalSpezaa6+11atX+9ZM6enp/qud7b///rZlyxZbtGiRbwFy34oVK+zpp5+222+/3Tp37uxbc9apUyf79ttvbdasWfbLL79YcnKy65uBvKD7tIMOOshatWq1fQwcTTEpHTp0cM/RChQoYC+99JIVLFjQbrnlFlu6dKm/AsRP06ZN7b777rOZM2dajx49fGumwoUL22mnnWZTp0617777zrfubOPGjbZ161Z77LHHrEiRIrZu3Tp/BUg8V1xxhR199NH27rvv7hLTH3zwga1Zs8a/2qFevXrumfs/JIJChQq5+Qg9d+3a1TZv3uyvZNL4ODvEMeJlyJAhduSRR1qVKlV8i2mDtg0ePNjuueceNzbWWCJCY4kPP/zQxXfdunXdfSIQT3/++aeNGzfOHnnkETfHltWmTZv8V5m0PvLZZ59Zly5dbOHChVajRg1LS0vzV4H4IiED/znqYM8880wbOHCgrV+/3u69915/ZYfevXtb8eLF7dJLL7VvvvnGt5rNmDHDzj77bNe533XXXb4VSCxr1661Cy+80Pr06eNe78kithYDNaD+/ffffQuQeI477jj3/Pbbb7vn7EQSj6JvGIHcosW63fWtu6PJi549e7obQC10R2jyo3Xr1vb555/7lh0ii4vZ3WQCueW3335zk8kaA0dLTU21//3vf26iTovg0bSYMnToUKtUqZI9+OCDtt9++/krQO4qWrSoW6QuV66cmzDOasOGDe45KSnJPWfVqFEja9++vS1fvtwl7gOJ4M4777SWLVvac889Z2PGjPGtmXQtkkSUXbLF119/7eL9pptuspEjR1qtWrX8FSDxKDFO8xiaj7v66qu3J2DMnj3bLrnkEpfQnNXcuXNdjEcvJgLx1KJFC+vevbtLlnv44Yd9a+aYet9997WxY8f6lh2IY8SLxst//fWXWyORX3/91Q455BA76aST7PHHH3fjB93baWNIhBKO3njjDbcQrnkNIJ7Uf4ru/yKU3Hbbbbe5tpIlS1rHjh1t5cqV/mrmveB7773nkp2VsF+9enV/BYgzVycD+A9Ric5q1aq5cp1lypTJsYTyhx9+6EoW6WOgc9R0RlrGTWGQMVBxpZiBRKR4Vqwqbjt37uzaVMpW5wHWqlXLleXKzqhRo9y/effdd30LEF8ZN3bunOtFixb5lkwHH3ywi9WMAbNv2dmZZ57pyjrnFOtAWNTftm7dOmjevLnrZ/+NyNnwiulPPvnEtfXs2dO9/vzzz93rCJWvVblylcAF8tJ3333nYvLZZ591r9esWRPce++97lgSteuhsszqs7NaunSp/wrIOykpKS5Os3PHHXe4mB0yZIhv2VWPHj22x/beHCsF5CYdxaNjR1q2bBls2bLFt2aKHOvXsWPHncbAOpa1Xr167pg0ID956qmnXEy3a9cu6Nu3b9C4cWNXUn/BggX+HZkmTpzo5vV0DwjkNh3V8PXXX/tXu6cjJps0aeL67X79+gXjxo1zcVy1atVd5iqIY8TTq6++6vrbunXrBi1atHBfaz1Ex+j8+uuvQZcuXVybjv0DEtH06dPd8SOaW/vhhx+CBx98MChXrpyL26ZNm7qxs75WLAOJjoQM/Cdp0UMdsR7Tpk3zrbvSeX+6AdQks957+OGHB7///ru/CiQe3RwqVu+++2630BcRmXx++OGHfcvOXnzxRXd96NChvgWIj4ULFwZHHnmki0c9lFzx8ccf+6uBS8TQQLtOnTpuwSXajz/+6CY8LrvsMt8C5K577rnHxelDDz3kW/belClT3ASzxhqKa32/k08+eaeEUU2EKPFDEyP6GshLmlBWbKp/VZKyJowVp4pJJTArEaNs2bLuPdFjDyDetHDy/vvv+1eZNI5Q/J577rm+ZVfq088444ygRIkSwcUXX+xbgfjr3r27i99HH33Ut2RSYmjbtm3dNS0APvHEE+6+T+dia1PJX3/95d8J5A8aT5x11lkupvUoWbLkLhuj3nrrLTeG1oar5ORk3wrkjg0bNmyfH9acxZ7QJhP1wZE41ga/b7/91l/NRBwj3jTvoGR7jXt1v6fEoKlTp/qrmRtbNQ9x/vnn+xYg8SiBKNLX6lG7dm03VyGK8aOOOsrF94oVK1wbkKhIyMB/lgYY6qA16Pgnyl5mtzUSmSacv/zySzfxpsShrDTgqFSpkrsBzLojUDeTuvnTzuusu62AvLRq1Sq3a0Q3glro1s4oVXcpXbp0sHz5cv+uILj//vu3D7D79+8fjB071k08a7e2FgTZkY28ooXqfffd1/WtkyZN8q17TwmgytovX758cO211wbr16/3VzI9//zz7nMwcOBA3wLkLe3ca9Wqlet71c++9NJLwdatW/3VHYmfu0t0BvKaqgZo4WTEiBG+JdMBBxzgkjvV92ZH1ea08K3qMOrngUShOQmNlZWwrITOaKqkdeqpp7q+OPLQIp/uEYG8okWP6MpxmqcYP368f7V39L009n3hhReCWbNm+dYdtNCiuY+ZM2f6FiD3RBb7LrjgAld9aE8p/i+88EL375SgkRVxjEShvju7OWG1a77joosu8i1AYlKVWc1LqLKWkuiiPfnkk64P17wGkMgK6P/LCFbgPydjAO3Os962bZtNmzbNqlWr5q8A+U+3bt3s5Zdfdueq1qhRw53XntUPP/zgzgDMGEi7M9JOOeUUyxiI2F133WVLliyxn376ydq2bevfDeS9yy+/3D755BP7+eefrXXr1q7trbfecu0fffSRde7c2bVpaHL//fe78yzT09Ndm+g81kGDBrnz34G8orOA27Vr585ZHTFihDvHPWxr1651Z7ZWqFDBtwDxsWHDBitRooR/tcNDDz3kxh6zZs2yBg0a+FYgvnQetvpmjQv0ddGiRV37sGHD7JhjjnFnBY8aNcpq1qzp2uXHH3+0448/3gYOHGinn366bwXy1qZNm+ydd96xP/74w8455xx3Dxehs92POuooO/zww93XBQoU8FcyaVyis7DLlCnj/m3VqlX9FSD3Pfvss27cqjFBWlqai0HNOcycOTP0MbLuCbPGPxA2zRkXKlTI3YddeOGF9uKLL/or4SCOkejefPNNu+KKK+zdd9+1iy66yLcC+Yti98MPP7QVK1ZY6dKlfSuQeAplDKJ3XdUD8onVq1fbo48+at27d3eLeUq62Geffdy1UqVKWZUqVezjjz+2+fPnuxtFIL/SRPLrr79uo0ePdhPPmkjOqmHDhtaiRQu3YP3NN99Yr1697LPPPnM3f/octG/f3r8TyB0TJkzIcVJYSUFKKNKwI7o/1oTe22+/bZ06dbKWLVu6NsXssccea+eee65bTGnVqpVde+219tJLL7l+HchLderU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Cyw6rodkDCSa4447zj1n3Y2qWFX/vGnTJleBgH0nSDSqzlKrVi177bXX3M5UxasqZajCnJKaVf1F93ZK/Iwc8aeqMLfffru99957JGMgbhSPqoyh5PmPP/7YHVNywgkn2MUXX7zXleNYxEa8KOnitNNOcxtEqlev7u7rIpSAoWPOVH3r5ptv9q05I44RLykpKe5eT+sbimMdbQ3kN+prtcFUY4u9rUwE5HuqkAHkN82bNw9atmzpXwXBzJkzg8qVKwcNGjQI1q1b59pef/31oEuXLu7riE2bNvmvgMSydevWoFGjRi62ly9f7luD4OKLL9ZscpBx8+hbMv3000+u/fDDDw+2bdvmW4HEcNVVV7n4fOmll3xLJsV21apV3bVPPvnEt2ZatGhRUKtWrWC//fYL0tPTfSsQPsVX69atXX+blpbmW3fYsGFDULBgweCKK67wLbs69thjXRx/8MEHvmVnM2bMcPFct27dYO7cub4VyDtr164N6tSpE5QoUSKYNWuWbwXyP/XhVapUCVq0aOFbdnb55ZdnOwYBEoHGv0lJSS5G9VAf/cgjjwQbN2501x944AHX/sUXX7jXQCJQ3Couhw8f7lsy6d5O/XHZsmWDlJQU35qzu+66y32fBx980LcAeUPzaZovLlCgQHDkkUcGnTp1Crp37+6v7nD88ce7GP388899y66IY8SL1jQ0/i1SpIibj6hYsaKLxeeee86/Y899/PHH/isgby1dutStfyh2I49u3br5q3tuy5Yt/isgf6FCBvKlAw880JXtVEUMlenSLj6VnPv000+37+QbM2aMffnll+7rCM6nRKLSLinFsqoLaFd2RMOGDd2z4juaYl67/1RhQGe7A/G2du1a/5W5Ci/aAaidI8nJyb7VXGxrV5V2X1900UWuBLOqCAwcONAOPfRQV8pZZxGrSgyQWxRfJ510kquQ8fjjj/vWHVJTU91RZyornpPu3bu7Zx2ts3z5cvd1BJUxEE+qGKfKFqo+pBjcsGHDLpW29sTgwYPdzhUgHhYsWGCnnnpqtpWM1IdrHKxrqnaUlXa4asdg7969fQuQOFTNU9WLNEbWeHn27Nluh6COQpMOHTq45+jxMxBvVatWdc/qm6Pp3u7FF190leOuueYa35pJFboGDBjgX1FRAPETBIF17tzZFi5caN988427P9OxZ08++aR/xw6qXKQ5ZVWaU1xnRRwjnnSkmSppqTKRjorSWFhH/qpKxvTp0/27/pniWJ+JrMe9A3nhhhtusCVLlljfvn3dEdY6ZlL3b19//bV/xz/THIeOTfv+++99C5CPZOZlAPlLRiftMuhUHUAZocrKHzVqlL+aqUOHDkHDhg39KyCx3XbbbUH58uX9qx2UvV+tWrVsq2CsWrUqqFGjRtCsWTPfAuQNVXTJGERvry4wf/78YJ999gm+/fZb91q+/PJL10+ffPLJvmUHVXhRv63rkYd2VqlvB/KCdpfsu+++bnfJpEmTfGumNWvWuJg8/fTTfcuuNm/eHBQqVMi974ILLvCtVMZAfD377LMuJuvXrx9cf/31Loa1E1Btffr08e/6Z9qZrc/GU0895VuAvPX000+72C1WrFjwwgsv+NYd3njjDRfXH330kW/Z2Q8//EAfjHwpEtvffPONbwHib/bs2S4uNc7IjqoN6Po777zjXi9cuDCoVKnS9oq1/fv3d9epKIB4GDhwoIu/7MYT2Xn++efd+6+88krfkumhhx4ijhFXl112WXDrrbf6V5ki1ZPbtm27R5VmqfCCeFIVT82jDRgwwLcErppnyZIl3Tza6tWrfWvO1q9f7yrEFC1aNBg8eLBvBfIPEjKQsFS2Uzd0KiPXu3dvt0AS7bDDDnODCCVdzJkzx7dmmjZtWlC4cGG3YAjkB7rZK1Wq1E4D6MiE3BNPPOFeawHxl19+cYvhEUw4Ix4ik2oqsRxJxlDi0JQpU/w7Mp1//vnufe+++65v2UGD6Lfffju4++67XVnxJUuW+CtA3lDZZS34HXroobskvelIk+LFiwfLli3zLbtSn33wwQe7GJ8wYYJr+/HHH4N69erRLyPP/fzzz+6onY4dO24/vk+0qKfJij0tJx5JxjjxxBM56g9xpSRPjS3Uxyq5M/r4Pt37qf3qq6/2LUDe+v33390GkD1Z/NhTOr6vZs2arqw+ZZiRSDQeUJ+bdSEwYsGCBW5ziebgLrzwwqB27dpu7DF+/Hh3XXN5L774ovsayGvnnXeei0cdS7kndF/Ypk0bd584ZMgQ3xoE77//PovYiAv1oYrLzp07B4MGDfKtO3Tt2tX10S+//LJvyR7JGIi3v//+O6hevbp/tUMkEe6f7u2ikzG+++473wrkLyRkICHphm7//fd3nXHkUbly5WDo0KH+HUEwefJktxhSunTpnTLiZs6cGTRp0iQoV65ckJyc7FuBxKLd1UquiOjRo4eL85EjR7rXqhSgBRHdCEYm5N566y33Hu3ABuJJkxk680+DYO3Ezi4ZQ3Q2oPpuVTIi4QKJSFUE1K9mPXdVk8Zqv/nmm33LziI7BVVd47HHHvOtmfYkqx8I21FHHeV2o2YXf0pwVryeeuqpviV7JGMg0WgcobhV/KqyVnQlLS1aaywCxMONN97o4vKfFj/+iRI4Na5WQqdiWn3wr7/+6q8CeU/zFFdddVXw6quvuoWPCN3PaTEwJ0oM1X2fPhdKzqDyIRLFAQcc4DaQ7M6KFSuCefPm+VeZi4aaVybJHvGktZGjjz7a9auac6tTp062CRmR6slaI8kpZknGQLwoPrXR9M4773Sb9VTNJavoRLjotb9oJGPgv4KEDCQcdcLacarJiAceeMDd2PXs2dOVrFWnG300iUrilyhRwnXYxx13XHDWWWe5AYj+LWWLkMiuuOKKYL/99vOvguC3335zg2Nl7/fr18/FsI4i0UR0hAYuek9kpwmQF7RA9+STT+6yU08l5hSPKjenBLmcaCeJ3nfuuef6FiBxqGSiJjY0llCpxAgtRuvYEcV3djeEmqhmIRCJQot5qo6hsUVONHmhvviDDz7wLTsjGQPx9ueffwafffaZqxKQVa9evVw/rRjWQrgqKaq6nF6TgI94UPKbSitr7iF6EW9vqaqW4lgPxbj6YiCePvzwQ7fpSTGpxAot4mlRsEWLFsERRxzh35U9VegaM2bMTokcQLypGmKFChX8q+wpvjUGjsZ4GPGk/lRzxpqP0FGrSUlJ28fB2fn888/d9axxLCRjIF5U4VDzZoq/yEPJRdlVmFMinNb9lECXtaIRyRj4LyEhAwlHi3wacGTtYFUqTiUQVcYzuoS4yoTrzEolbGgyWpl2kSoDQKLSuewaiKjcrWgwctBBB7nkIrW3b9/eZZFG03mBinMmOJBXFIPqjxWT0ee0R44pUZ+ra/9UgjZyrrCOOtGZwpdffjkTHIgrHeOgflbVuFTlRfGpG7xoSsTQxIcmo3U2qyhpVBMZev///vc/1wbEW+T4Bh0BlRONq/Ue7V7NehQPyRiIJ40LjjzySBefemii7eOPP/ZXd5g6dao7TkrvUdJyt27d3Nc6/gyIB20OUQyedNJJvmXvnX322e4e8LrrrnPVt4BEoITl1157LWjZsqWLcY2HNRen+0IdSamkCyC/UAl8xfEff/zhW3al+Qol4wOJ4umnn3Zj4kjVLG3iK1myZFCmTJmdNu5FUxWjrGNjkjEQT6eccoqLWc2dad5Yx6gqHnPaRK1jsXVd93kRJGPgv4aEDCQMlUZUaS3t7rvgggt8684iHXN2Z1du3brVPYD8IDU11U1qaJd1xLBhw9wCt5IutAslWmRh8JprrvEtQO7T4vNpp53mFj6UhBGhnVPKatakhs4I1o2hFgRzonjWrhT134p7DaSnT5/urwJ569lnn3WxqEQMHVly+umnb0+G69Onj39XpkjFIl3T50BHQujr448/njEH4koV5FQ1QHSusOJSsZwTjbMjCXbR42ySMRBPSvxs3Lixqwxwzz33uIRljRe0O3v58uX+XTukpaW5creRhFA9dpeIBOQ2VTdUHOpoKOC/aMSIEcE555zj4lwVYSJ97zHHHOOOJclulyuQSJRYr5jd3dF9hx12mEvUB+JN92yqKqAq4A899JBvzfTKK6+4WO7atatv2ZnmmXW8lI7pEfXPSnomGQPxEDnm96uvvvItgTuiT3NvSkbWfHNWutdTMqjmLSIV8lUVkWQM/JeQkIGEoUnkAw88MDjjjDNcifvsaKJYWctasNbkM5Cf6YgdZYpGV7x4/PHH3YBFi9yffvppMGPGDJdJWrx4cVfmS2dbAokgJSXFPWsiTjGrBerdUeWiVq1auXKL3377rW8F8pYWsbWQ17FjR1cGNEIVM3STp4z9SGxHKPFIi9Xqh1Vd4I477mDhGnGlSQ0laVapUmX7RIYqByhGs1a/iKaFFB0LqD5bFebk/vvvJxkDcaPqb0q+iN5t3bdvXxej0ZW5slKissbKxC7ibcmSJW7xQ4lEWkAB8qPdHRklim31y1rU025tJexHEuNUUl/VYoB40vGq2jRyww03uATPv/76y1/JpIQLxasqMmc1ceJEt0CoShpAvGltRONbVQRQ3xxNCRbt2rVzsawq4tkZNGiQ2+waoSPWgLykpKKbbrrJHaMTSQ6Kpo2miuEXXnjBt+xMcd+wYcPtcazXJGPgv4SEDCSMm2++2XXIeuhmMCePPfaYe48Wq4H8QIMRJVXoOVqkfPi7777rWzJp97YWBiOfBz20iK3kDCBeFL+qYJRdUlCXLl1cnGoRBUhkRx11lKtykd3EhHa3Ko53t3sKiDctPletWjWoV6+eW5SOUAlQxa/G09mJ7FCZNGmSG0tHqG9nQRvxoF18Six64oknfEumX375xcXqP1UcWLlyJbGLuJoyZYpLHNKks2JWx4/8G1pIBOJhT4+M0iKgrl1yySW+JQimTZvmFrCbNm260+IfkNdUyVOb+yJxHHl07959ewWX8ePHu8RlVfbUhpIIVe1s0qSJSw7dXcVPIK9E1kZUWVbjjKx0hJ/6Yy1Yb9iwwbcCiWPgwIEuhtu0aRNceOGFvnUHzcXVqlXLbRbJafzAUe34LyMhAwlDO1Uj57jvrpyWSibqPTpPDcgPtPtPMavJjuidq9rVqoovRx99tG/ZQTeVyhZVGeb+/fsHGzdu9FeA+NBuEsVx9ERchM6w1CJ3uXLl3MRehBb6tKCSXSk6IK9pwkK7+ZRYlBPtRFGcf/DBB74FSBzJycnB77//7kp4KrEimhamNabQtehEjQgdkaZKW0Ci0A4+9bfjxo3zLZlUtUXtkydP9i1AYlF/G7m/y/rY3caS7OjYKI09OPYBeW1vj4xq0KCBm88AEoniWJuXdPxepIKLjnVQ5SL1ydFJn6qgoUVutR9xxBHBCSec4JI09G81JgHiJXrTU/TayOuvv+5bd9azZ093vVu3br4FSCw6ckcxmt16h0TuA1UNBvj/pmBG8AMJoWTJkpYx2HBfv/fee7Z161b3dVbFihVzzwUKFHDPQKKrVq2aex42bJgddthhNn36dPe6YMGCdvnll9svv/xis2fPdm0RtWrVsptuuskee+wx69Kly/a4B+LlrLPOsqOOOsreeecd++6773xrpkqVKtnzzz9vq1atsmuvvda3mn388cd2ySWX2J9//ulbgPhJTU219PR0q1y5sm/ZVffu3d2z+t/ly5e7r4FEMHLkSNtvv/3c80EHHWT777+/v5KpaNGi9vbbb7vx8ZlnnmlDhgxx7Yr5hx56yI2xr7vuOtcGJIK1a9e657S0NPcsEydOtGeeecZOOukkF+9BENi4ceNs8eLF/h1A/F1zzTX21ltv2Q033GBz5861+fPnuzZRP6vx8J4YNGiQnXPOOVa4cGHbsmWLbwXyxq233mqLFi2yX3/91Xr27Gl33HGH63/VN//444/+XTvUrl3bxTuQSO699143v/b1119bjx49rG3btq4fHjFihJuj0PUJEya495577rn2888/W7t27dx4+vvvv7cDDjjAzdN16tTJvQfIawsWLLBDDz10+9xD9NrIyy+/7O7lstKcRcuWLd0c3OjRo30rED+K44EDB/pXZn369LESJUrY8OHDLSUlxbfuoD73vPPOs8GDB7s5ZuD/ExIykFDat2/vFqhnzZplL730km/dmW4YpXXr1u4ZSHS68ZMrrrjCVqxY4ZIydCMoinclZmhSD4i39evX25IlS/yrzEF1//793dda5HvjjTesePHidvXVV9u6detce8QFF1xgp5xyin3xxRd25ZVX2gsvvOAmQzTJcfDBB/t3AfFTsWJF9zxlyhT3nJ1jjjnGChUqZEuXLrWbb77ZtwLxp0RN9cP333+/S77IztFHH/1/7N0JvIzVH8fxY42ylCzZyZqlsoZCKSlKtEnaRKvIUmmhSKlkK5UlKltEWVsoigpZC0XobylL2bKFssy/7++eYe7cuULjzsjn/XrNf+Y5z3P9dZ373POc8zu/nwVl6F5++eWXu7Jly7pcuXK5Tp06udq1a7uWLVv6K4GUp0W+2267zSboJE+ePPY+depUe1+1apWNIzR5179/f2tbs2aNjSM+/PBDOwZi7bPPPrP7bLt27Wy+omDBgnZ/7tu3r3vyyScteKht27b+6uQFgzE07tDYOX369P4McOLpeU+boLRYHTqvVqRIEXvfu3evvYdSQIaeDQkeQrzQuOKtt96yeQjNJYcqXry4LfIdOHDAtW/f3rc6V61aNQvA0Fh5z549bsaMGbYYDsTKmDFj3IoVK9wXX3zhWxLWRpo2bWrBRMExcai0adO6QYMG2Wc95wGxpAB6zT3ofhxUuHBh99xzz9lm6+T66KuvvmpzdBo3a/MUcKogIAMpTg93Q4YMsUGxoj6Du6OCevTo4XLnzm0TGhoch9IExwsvvOBKlChhk87AyUCRy+qzWsD+5ptvbHf2lVdeaUEYmsCrU6eOPSxGinwGUpKyW2i3n2jCTZPEWvwL9s2iRYvaTuuff/7ZPf7449YWSn1akx8K3GjdurXtShk9ejQZjRATysyiSbigzJkz26SzovCTy36hBREFHSmISMFI2q0NxAMthLz44os2lvj222/dn3/+6c8kpklp7UTR2EIBzrr/atfrxIkTLdgIiAVN1N144412Xw3uvNaiSKZMmVy/fv3c7NmzbVer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3GDZD0PLQgWpr6rPqu8ywYyTUbDEjhb/QjH3hnij7Bbqq8OGDfMtwMll3rx5Ni+hsXHVqlXts/r0gAED/BWJaV5C6yi6JvjShlQglhSAoSzfof1SwceRTJgw4VDps+B8m8qaAIgs9d8/JEDUpEuXzg0aNMilSpXKNWvWzP3555/+jHNnnnmme/31193evXtdnTp1XL9+/dz69evdxIkT3d+DFLd161b3zjvv2NcCsTJ79mx35513uscee8y3JLZnzx63fPlyV6VKFd+S2GmnneY6derk9u3b5/5+iPSth5UuXdoVLFjQHwHxL0OGDG7SpEmubt26btu2be6KK65wX3/9tcuePbu/Aoi9++67z+7PXbp08S2J/fTTT+6vv/5y/fv3d127dnVly5b1Z4CUp/549dVXu/Hjx9uxxr61atVys2bNckuWLLG2SA4cOOAyZszoj4CUN2DAAHfGGWfYPfePP/5w8+fPd1OnTnXDhw93d999t42DixQpYuOGGjVq2HOeng2D1M/1jDhz5kx7LgTixaJFi1yZMmWsf4dLnTq169atm32+9957re8DJ5MXXnjBFShQwD3zzDNuxYoVvtW5wYMHu8suu8wdPHjQtwCxo3urntM0d9y6dWu3adMmfwY4eTRv3twVLVrU/fjjjzbe/fbbb12OHDncww8/bM+A4TQvMXfuXPfoo4/aeEO++OILewdiYcOGDe6GG25wuXLlciNHjnRDhgxxefLksXWSyZMn+6sOu/baa93333/vrrvuOuvL8vnnn9s7gKQIyEDUVaxY0bVt29YtXbrUPffcc741QcOGDd2NN95oA+0HHnjA5c2b19WvX9/t3r3bTZgwIdlFbiClVKpUyfrhm2++6aZNm+ZbDwskZBayhb/kqI9rEVuL1sB/ge7VH330kduxY4ctshBUhHijxUEtAvbp08d9/PHHvvWw7t2720NkuXLl3BNPPOFbgdjInz+/jRPefvtt35LQhzW+aNeunW9JTBN4q1atcpUrV/YtQMorXLiwPd+tXr3aPfnkk27evHn27NegQQN/RQIF6Q8dOtSdfvrprkOHDomC9Hv06GH3YwV3APFCgXG7du3yR0ldfPHF1v+DfR84mWTKlMk2RGkO44477rD5OC24aCOJAu6Di4BALPz222/u+uuvd5kzZ3YlS5a0OYfNmze7li1b+iuOXnjQ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QGgsEfT6669bOZ5WrVpZvwdirXXr1vb+xRdfWFl2lanUs96UKVOsfKVKq6o/B3Xo0MHO69nv22+/9a0A/i0CMhA1OXLksJpnt956q8uWLZu75JJLbIL58ssv91cAJ7err77a6mLPnDnTamovW7bMZcyY0Z8FAACnurJly1o91ty5c1u97OCkRr169WxCWhMdQVrU1rXXXXedLZQo4BOIlTp16rg77rjDFkG0OFK8eHF/JrHTTz/dJui0SDJkyBDf6lzWrFnt60LrwwOxdv7551sw3IYNG3xLUqVLl3Zp0qSxxRM95wEpKRAI2GJ00F9//XUoeFM0tyYKlEtOcM5NfT0UwRiIlW3btrnq1au7Dz/80D366KNuzJgxrl27di5dunQ2Fp4wYYK/0lkQswIx1PebNGli4wmNSRSMNGLECAuaA2Jp0qRJLm/evDYPHE73aAVjaFyscUSQngUVrFyhQgV7BgRiSeNg9eMHHnjANlOHOuOMM+xeq/uznvGC0qdPb5uvDx48aO8AooOADESVBhzDhw+3yNEvv/zSgjKA/5I33njDokNvu+02CziqVq2aPwMAAOBckSJFLNCiWLFi7qabbnKjRo2y7Bn169dPFJAhmgAZO3YsCyWIC7169bJd2NppfaTdfLfccotLmzatZYwLpWwD4ZN8QCzdeOONNpGsjC7J2blzp3v22Wct2EhZYoCU1LNnT/f888/bZy1Ia9zQoEED67cSnG/QYklylOVIFNwRRDAGYklZMFatWmXZ4l566SULPtaitQI0tMinRcHt27f7qxMyySnDcps2bVzt2rVtI9S8efNc3bp1/RVA7Cg4KLksRXLzzTdbwEZooJE0a9bM2sgajlhbuHChjRGqVKniWxIrUaKEu/POO90PP/xgWTyDdL0C7nv06OFbAPxbqVS3xH8GAAAAAETB1q1bLbvW/Pnz3dtvv21paxWUoUmOSpUq+auA+DJ69GibWNbE8y+//GK7pSJRhhftWp09e7ZvAeLPnj17LNuLyuso0EhZjEJpx6CCiCZPnmzXaUEFSEllypRxK1assGyznTt3tgVsBV8omEgUmKFywAqSU4bOSH30scces53YWjQ855xzbNHl0ksvdbVq1SIYAylu3bp1dl+9++673YABA3zrYQr+bNu2rWvevLl78803fSsQv5SFSM9zW7ZssYxakWjTnjK9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IAMAAABA3NOidb9+/az8yL333utbE1x33XWuY8eObsWKFbYT5bnnnnOvvfaau+iii2wBW7us9BmIpW7durlHH33UDRkyxLckpMRXSZJffvnF9ezZ07cmppT4mpgeOnSoleRJly6dPwMA+LdUxmzWrFlu48aNthiieu8LFiywUiYKBJXBgwe7Tp062WcAQHT07dvXgjLGjh3rzjnnHGs766yzXOXKld2GDRvs+J8EF7EHDRrkli5d6luBlKM5CJUr0ThB/TdIz3kSXv4skmA/VkDH3Xff7VsB/NcQkAEAAADgpHD11VdbxovPPvvMariH6ty5s5UtEQVntGzZ0iZHlCa0ffv21g7EinZHNW3a1GXLls21adPGFv6CnnzySWt/5plnrCxPqHXr1lkfViYNZcgoWLCgPwMAiAYtgCjz0FNPPeVq1aplgW+vv/66a9y4sb/CWTDo0SyoAACOnspK1qxZ81Dwmxw4cMACK4oXL+5bkhe6iK0gfGWUA1KaSp9JaKZOUTC9AukvvfRS3xJZeD+uU6eOPwPgv4aADAAAAABxZ8KECe6BBx5wvXr18i0JevfubelA27ZtmyjFuDRr1sz9/PPPNpmhBZX169fbdUCsKPCiUaNGtpCndMx79+51W7duTZSKNnv27Lb7WguCV111lXv33Xfdjh07rP5wjRo13J9//mlpcAEAx0ely1TyrGLFiu7yyy93kydP9mecBXrmz5/fgjq///57N27cOBt/BO3cudMWDatUqeJbAADRoMDjTJky+aMEevZbu3atPdcFaSwcjkVsxFKkEpKhcxPvvfeeGzZsmI0ncuXKZf1V8xiLFi3yVySgHwOnFgIyAAAAAMQNTbjdcsstVoZEJUqCO06ClElAddx///33iIvUWviuVq2au+yyy1yWLFl8K5DyNm/ebH1xzJgx7sEHH7Qd13feeadLmzatGz16tE26BV1zzTUWiKHa102aNLESJZqQU1DRiBEjXJ48efyVAIBjofuoypY9//zzVh5KZaDq1q17qKb7aaedZuOKVKlS2b02dIer7skK2FBAx2OPPeZbAQDHQ/dUZToM0nPdvHnzXCAQsOOPPvrIPfHEE6527dr2PCiPPPJIkswXLGIjlhQwpD4apNJnEny2Uz++4447bDzx4osvWpvmLpQlUWOQIPoxcOohIAMAAABA3FDNVC1gv/zy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Cy64wF8BAIiGyy+/3N6VhSg5wewZCowD4tU111xjGTgnTpzoWxJT0KgyeaZJk8a3AMCJR0AGAAAAgKjQ4ouCL5YvX27BGS+//LJbtGiRBWkAAIBTizJk1K1b17333ntuwoQJvvXY7Nixw61bt85999137rLLLrMdrypJAgA4fvPnz3djx461oLcglR2pVKmS++CDD9yXX37pWxNTKSplIMqRI4dvAWJjxYoVtulDAZo33XSTHQe1atXKypi1adPG7d6927ceNnnyZAvIKFWqlG8BgBMvVUDhYAAAAAAAAAAQRb/88otltlB5MpU1U5rwY/Xnn3/abtbgzmwAwPFRmYZbbrnlUMCFgitUZlIL2qL2Sy+91OXPn9/NmjXL5cmTx9pl6tSprk6dOpYF8a233vKtQMr74osvLDhz165dLmfOnO63336zMiU//PDDoVKoCspQebP69eu7UaNGHSplpiBPlVX9448/bCPJmWeeae0AcKKl6aQtbAAAAAAAAAAQRQrAyJIli2XJ2Lx5sy2MHKu0adPaCwBw/LZv3+4uvvhi9+OPP7pHH33UXXvttW7OnDmWKeO+++5zGTNmdAULFnQHDhywUg+jR492uXLlcvv373dDhgxx9957r8udO7d7//333emnn+7/VCBlrVmzxsrrFC5c2H311Veua9euNtZQZpezzjrLgi1E1yiISK8xY8ZYpowPP/zQ3XPPPW7Tpk12vQJGASClkCEDAAAAAAAAQNQpJfi2bdtcgwYNrNyIFkZq1arlzwIAUorKOyiYYtq0aVaeRN5++21rV9DczTffbG1aLurYsaN74YUX3MGDB61NSpYsaeWnihUr5luAlKf+qsAKZd3Knj27tWmsccYZZ7hGjRpZxpcgZcFo0aKFtQX7cr58+dzgwYMZiwBIcan9OwAAAAAAAAD8a1ocefzxxy0VuNKJz50719q1MzVSPfcj0QLgyJEj/REAIJwWm1999VXLahHJxo0bbVH6qaeeOhSMIUWKFLH3vXv32rukSpXKPffcc1b+Qe9t27a1DBnfffcdwRg44dq3b++uueYay6oVTsFCCipSUEYwGEOU/UXjDpUtCaUgjXfeecetXr3axhLTp093q1atIhgDQEwQkAEAAAAAAAAgapo0aeJeeuklV69ePVsgfPnlly0wY+XKla5Dhw7+qn+mBZSbbrrJ3gEAkSljwMMPP2wZAlSOIdzs2bOt9MhVV13lWxJMmTLF3itWrGjvoZQRQwEcPXr0cLfffrs77bTT/BngxFDf7datm/voo4/c559/7lsPW79+vdu5c6eV1gmlMYbccMMN9h4uf/78VqKnRo0alEADEDMEZAAAAAAAAACIikGDBlkQRqdOndyoUaPcjTfeaAuFypKhRZFXXnnFFgf/STAY47LLLrO0+gCAyC688EJXvHhxW3Q+++yzfethWsSWv/76y95l8eLFrnv37hakUapUKcs+oCwYv/76q78CSFk5cuRwL774onvwwQdd/fr1fethGTNmtPdly5bZu4wfP976sYKRqlSpYm0tW7a0oFAAiCep/v5FG/CfAQAAAAAAACBZffv2tV2qXbp08S2JaVe1qL576tSJ94IpKKNq1ap2zYIFC1z69On9mcRCgzG02MLObAA4ftOmTbP76QsvvGDlpFS2QdkC9uzZY/fiAgUKWFmHwoULuzfffNM1b97cfyUQOypDki5dOn+UQH1UgUXqr5988om7+eabLRjpq6++clmzZrVrNMZQG9m1AMQTMmQAAAAAAAAA+Efa19W/f3/bwaqd1OF+//1327l69dVXJwnGkEqVKrmmTZu6H374wT3//PO+NTGCMQDgyA4cOOCeeeaZRBkvgtauXetat27tjxJUq1bNZcqUyfXr188yFF1yySWWNUOlThSMIWnSpLH33bt32zuQEhTk2bFjR390mPpxhQoV3IoVK3xLAo0PFBTaoEEDd/3117sLLrjASu8EgzH0s6EsLyqTBgDxhIAMAAAAAAAAAP8oVapUtntagRnNmjVz+/fv92cSBNPiH6lG+/3332/v2qmtlPmhCMYAgH/27rvvumeffdY999xzvuUwZS9SaagRI0b4FmfZiO677z63Zs0ay1KkrAMzZ848VOJBvvjiC3svU6aMvQMn2pGCPJcuXWpjBGVrCU3y/+ijj7rMmTO7jz/+2II/lf0lNPhiyJAhbvv27XYOAOIJJUsAAAAAAAAAHLVHHnnE9ejR41D6+6C9e/faLlUt8k2fPt23JqVAC+3sVsaMWbNm2c7sqVOnurp16xKMAQD/QPfPcuXKWfaA+fPnu7Jly/ozzm3YsMGVKlXKAuO0qJ09e3Zr37p1q7X/9ttv7v3333c33HCDtYsyCuh+nCVLFvf9999b8B2QEoKlzJTpQtlbQgM677rrLjd48GD3xhtvuAceeMC3Ojd06FB3xx13uPPOO89NnDjRFSlSxNo//fRT17BhQ1e6dGn3zTffRMzUBQCxwh0JAAAAAAAAwFHTzmwtgHTu3NktX77ctzqXIUMGd+mll1otdy0ERnLw4EELwLj99tvdokWLrMSJFCpUyNWrV49gDAD4B8p4MWjQICvPcPfdd9t7UO7cuV337t3d5s2bXatWrXyrc9myZXOjRo2y7Bi6//bu3dv99NNPbuzYse6iiy6y67X4TTAGUpICgVRiZ8GCBdZvQ/Xq1cvlypXLtW/f3v3yyy++1Vn/VZkTjTMuvPBCd+ONN7ratWu7q666yp111lnWpwnGABBvyJABAAAAAAAA4Jh8/vnn7vLLL3eXXHKJ+/LLLw8t4qnsyHXXXWfpwpVSPJx2wOprtCNbARnKiAEAOHZayFZ5km7dulkph1BXXHGFZR5SBoFrrrnGtybcuxs3buw2btzoW5xlNlIZFGUpAlLa7t273fnnn+/WrVvnFi5c6IoXL+7POMvmolJmkcYUGm+oRM+3335rgUYaeyiIQ0FJABBvCMgAAAAAAAAAcNRmzJhhafFfe+01K02i9xYtWvizztWsWdOCNLQwogXDoP3791sQh971ZwAAjt8ff/zhypQpY2VIFOBWtGhRf8a5VatW2TllDFiyZImVIwnSAvjo0aMtQ1GePHlco0aNXI4cOfxZIOUlF+QpKq8zZswYK1Vy2223+dbDVMJHARlkdwEQzwjIAAAAAAAAAPCP1q5da6nBleUiVObMmd3333/vChQoYMdr1qxxlStXdps2bbK04kqbv379eteuXTv32WefJdmxDQA4dlu2bHEzZ8509evXt0C4L774ItGitILi2rZt6+69917Xv39/3wrEl38K8lRGrVKlSlkZEgUX5cyZ058BgJMHARkAAAAAAAAAjmjXrl2uatWqbuXKle7ll192N998s6UXV7CFdrOqdvsnn3zir3Zu8eLF7tprr7XgjFBPP/2069y5sz8CAByruXPnuvvvv98tWLDAMgPs27fP2vv27WvtQQcPHnTVqlVzc+bMsfIllIhCPDnaIE95++233d13321jj/fee8+3AsDJg4AMAAAAAAAAAEf01FNPua5duybJbqFU4XXq1HHTpk1zgwcPdnfccYc/49yOHTvcG2+8YQEbmTJlcnfddZerW7euPwsAOFbz5s1z1atXtxIkTzzxhCtUqJAbNmyY++CDD6zthx9+cPny5fNXOzsuX768y58/vwXKZcyY0Z8BYudYgzzlyiuvtCxb48aNc9ddd51vBYCTAwEZAAAAAAAAAI4oR44crkyZMpYSP5zSiZcsWdKlSZPG0onnypXLnwEARIsyYZQoUcIC4ZRVIG/evP6Mc506dbLsQ/Xq1XMffvihb03w7LPPumeeecbKRnXv3t23ArFzPEGeq1evtnGIAo801jjzzDP9GQCIf6n9OwAAAAAAAAAksX79erd582Z30UUX+ZbEzjnnHPfoo4+6rVu3uoceesi3AgCiSVkwVq1a5bp165YoGEMUkFG/fn330UcfueHDh/vWBMqkUbZsWde7d28rXwLE2oABA9yll16aKBhD0qdP70aMGOGyZs3q2rRp43777Td/xlk2mOeff95t2LDBPfLII74VAE4OBGQAAAAAAAAASFaqVKnsXSnGk3PbbbfZ+/vvv+/Gjh1rnwEA0TNz5kx7VxaMSBRwoQXt1q1bu02bNvlW59KlS+cGDRpkn5s3b+4OHDhgn4FY+DdBni1btnTVqlWz/vz111/7VgCIfwRkAAAAAAAAAEhWzpw5LTX41KlTfUtSBQsWdKeffrqVLWnRooXbtm2bPwMAiIZgUFzatGntPVzhwoXdlVdeaYvdrVq18q0JKlWqZG2LFy+2DARArPybIM/UqVNbdg29v/jii74VAOIfARkAAAAAAAAAjOq333zzze7HH3/0Lc6CLJRWXG2TJk3yrYn9+eef9rVaINEO7SMttAAAjl2+fPns/UhlR5Q9QEaOHOkmTpxon4M6dOhgwRzh7cCJtH37dv8pwb8N8ixdurS7/PLL3fTp030LAMQ/AjIAAAAAAAAAmAULFrjRo0e7Zs2auYMHD/pWZ+nDtSNVNd337NnjWw/7+OOP3WmnnWap8mfNmnVo4RAAcOzWrl3rBg8e7I8SXH311fbev39/e49E2Qeuv/56W8xWdoFQ2bJlc1myZHE7d+70LcCJtW7dOlexYkUbIwRFK8hT7QBwsiAgAwAAAAAAAID77rvvLNiifv36bubMme7111/3Z5w7//zzXfPmzW0BJTxY49dff7VAjDp16tju69y5c/szAIDjcdddd7n777/fLV++3Lc4V6VKFVe+fHk3atQoC3yLRFkDypQp48aMGWOlHUINHDjQbd261cqaAClBgRXr16939913X6JAoOMN8gwEAu7NN990n3322aGyJgBwMkj19w0s4D8DAAAAAAAAOMVoJ3ajRo0sCCNUpkyZ3Pfff2+pw2X37t3usssus3T5elcacS20vPDCC5aSfPbs2bYQCAA4fvv27XNffPGFBblVr17dgiyU+UJU5uGKK65wRYoUsXvu2Wefbe3y6aefuquuuspNnjzZ1a5d27cmUBDHLbfc4i6++GL7M8gugBNp48aN7t1333W///67BVQogEIBRn379vVXOAvSUNBQ48aN3bBhwyxAQxTkedFFF1lmjQ8++MDagjRe0ZhE/VjZNZQJBgBOBgRkAAAAAAAAAKcoBVJo1/WaNWsssOLaa6+1FOPt27e3RRQtCIamFNcO1zvuuMONGzfOtziXOXNmN2LECFevXj3fAgA4VvPmzXOtWrVy33zzjcuRI4ctaouyFT344IP2WXR/7tatmytdurQtaJcsWdLKk7Rt29add955FjQXDOAI2rRpk93jn3vuORaxcUIpmOiGG26wYIz8+fPbu0qOqE9OmzbN1ahRw6473iDP8ePHW/kegooAnEwIyAAAAAAAAABOUUoX3rt3bzdx4kSr6R6k2u1aIFHWjHfeecfdeeed/kwCLRh++eWXlkVDCy+5cuXyZwAAx0oBcLVq1bJ7qu7LefLksawWn3zyiQW9/fDDD7a4LVrSUcmHHj162HFQgQIF7L4czGoEpLQVK1ZYZoucOXO60aNHuwsvvNBKknTo0MH17NnTFStWzC1atMhlyJDBrifIE8CpgoAMAAAAAAAA4BSkoAvtwi5fvrztaA2nTBnaea1dqEuWLCHoAgBOAGUKUGaLAwcOWFaAvHnz+jPOPfXUU65r166ubt267qOPPvKtCb766is3aNAgyypQqVIlC+TInj27PwukvIYNG7qPP/7YLV682BUvXty3JgiWKHnsscfcSy+95FsTEOQJ4L+OgAwAAAAAAADgFLR06VJXqlQpS3//4osv+tbEtKv1+eeftwUSpcQHAESXgiqaN2/uhg8f7m699VbfmkDLNyrPMHnyZDd06FB32223+TNAfFG2i2zZsllQhrK7hNu7d68FHv3yyy8WeFShQgV/BgD++1L7dwAAAAAAAACnENVzF9V2T45SicsHH3zgxo4da58BANEzffp0e49UokH36T59+rjUqVO71q1bu02bNvkzQHxZvXq1279/vytatKhvSUxlSh5//HHLBNOsWTO7FgBOFQRkAAAAAAAAAKegIkWKuNNPP91NnTrVtySllOPp0qVzadKkcS1atHDbtm3zZwAA0aCSJZI2bVp7D1esWDF3xRVXuC1btriWLVv6ViC+qNyIqIROcpQ9QxYuXJikbAkA/JcRkAEAAAAAAACcghRocd1117kff/zRTZo0ybcmtmfPHtvF2rVrV5c+ffojZtMAABy7c889197nzJlj75FUrVrV3t977z03YcIE+wzEk8KFC7tcuXK5Tz75xP3111++NbGcOXPaWELXdenSxa1YscKfAYD/NgIyAAAAAAAAgFNU+/btD6XCjxRs8dFHH9mu7VatWrlZs2a5fPny+TMAgGi45ppr7L1///72Honu08ouoKxGKiEFxCOVOdu4caMbOHCgb0ls8+bNFqzRt29fd9lll7kCBQr4MwDw35Yq8Df/GQAAAAAAAMApRsEYr7zyii0Kjh492uq8y2+//eaqVKniSpYsaTteAQAnRvny5d13333nvv76a1etWjXfelidOnXchRde6GrVquUuvfRSd9ppp/kzQPzQuEEldhRANHfuXPscqmfPnq5Tp06Hyp/pOgA4FRCQAQAAAAAAAJzC9u3bZ4t8WggsUaKEa9q0qe1g7devn/v999/dzJkzbSEQAHBifPnll5YxIHfu3G727Nkub968/oxzU6ZMcbVr13Zjx451DRo08K1AfHr77bfd3Xff7YoWLWpZtooXL27t06dPd3Xr1nVNmjRxAwYMsDYAOFUQkAEAAAAAAACc4nbs2OFuv/12N2HCBN/iXKZMmdyIESMOpdMHAJw4zz//vOvQoYMFY3Tt2tWVK1fOAjUef/xxW9yeP38+GQVwUghm3kqXLp27/PLLLchz2rRpLn/+/JY5I0eOHP5KADg1EJABAAAAAAAAwMyYMcN2sWbJksXddNNNLleuXP4MAOBE0lLNI488YmUdQmkRW4EZhQoV8i1A/OvVq5fr3Lmz2759ux1XrlzZgjzPPfdcOwaAUwkBGQAAAAAAAAAAAHFAmQQGDhzoNmzYYIvY7dq1c9mzZ/dngZPHH3/84RYuXGhBnmXKlPGtAHDqISADAAAAAAAAAAAAAAAgyig4BgAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQAQAAAAAAAAAAAAAAEGUEZAAAAAAAAAAAAAAAAEQZARkAAAAAAAAAAAAAAABRRkAGAAAAAAAAAAAAAABAlBGQ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U1Meu2MfVPZfeumlaeWVVy62dfwerAy8RKgmggqVmvu4FMbnuB3VTSrdcMMNea5+YDk01zECAAAmlkAGAABUUW24kgkR412PrWT22IYtiX94jmFP6oqrDeOq2Wqmm266PDdanDS8++67Gz3F842hLcalbdu2eW7s4uryqMxQV5TW33fffYt/aI8S2p9++mn685//nJc2TvzD/b/+9a9GjU0eDj300CKkUanaNpt//vmrbpuxTf/85z/zvSetptrek4PYv7PMMktujRJXIkcJ/mqiyshFF12UW6NMMcUURbjqH//4R1EhIapknHHGGVXH8i9btfdi7LNq77eGprh6uFr1nKZQ7URbBILGpdo6jTlp19hjTlMY3/dWc2+bCX3sMsI7UaWgsWL4gwg7vvPOO+mEE04owgNjC0NExYyoUjI5aMrP75/+9Kf05ZdfFo/329/+dqyVRmI/N3SSeu211y62fYQ+4zugWniiVlQniUoMPXr0yD2NE0GBSjEUR1R0GB9R+SKeb1QJqxSvMQIjlcN0ROgnwopR3SyedwzlseGGG+alTafavo9ARLV9PLYptnelZZZZpgjaxO+SxojfbxFcaNOmTe4ZrbmPS2F8jtsRhKscWimGEasdxqfyd3l8DjbffPPcAgCAFu6//5MFAADU0b9//5r27dtHrfRSpttvvz0/cn0jRoyomWuuucZYf7rppqsZNGhQzf333z9Gf0ydO3fO96zviCOOqLf+ueeem5dOuIsvvrje45588sl5acPefPPNevebd955a7799tu8xmj9+vWrt+4ee+yRl1b37rvv1qy//vr17lc7TTXVVDWbbLJJzZNPPpnvUd+PP/5Y734dO3Ys9ktz+MMf/lDv7zdm21bTVNt7xx13rLfu008/nZeO9tNPP9Vbb7755stLJ8z4bp9DDjmk3vrVXtfQoUNrZptttjHWm3LKKWu6du2a1xjTcsstN8a68ZltyAUXXDDGujGddtppeWnDll9++Xr3e/XVV/PSpnXQQQfV+9s333xzXlrdCiusUO8+9913X15aXRzXpphiinr3+/777/Mao7zzzjv11ll33XXz0nI01XsrNPe2mWWWWfLShlXbx4cddlheOlrbtm3HWGeGGWbIS6pbb731xlg/pnG9d+qK48Zjjz1WbN9pppmm3mPtsMMOec3R3njjjXrrbbjhhnnp2MW2qrzv2MSxrnL9OCZWau7P70cffVTzz3/+s2allVaq93djevvtt/OaY9ejR4+aW2+9tdjO1R7noosuyms2zsiRI2tmnXXWeo+z//775zXGLb5/F1lkkf/dd9NNNx1jW1544YVjPHZMW221Vc3gwYPzGqPdc8899da98sor89L64v1ed934PIzLvffeO8Z9Ytpyyy3z0okX+6ja8afuFO+/yy67rNj+DWnK41IY389WNdV+b1511VU133zzTb3nceSRR+Z7AQBAy6dCBgAAVIgrFQcPHpxbE29s1TbiivzKoSfiiuO4irhyuJK44rHauOC1Kq8sDPE44/L666836irJ8RVXp1baf//90xxzzJFbo3377bd5rnGiDPlSSy2Vnn766aJ90kknFVdSxzaL/ffiiy+mH374IT366KNpgw02KNapJqpHLLjggrk1Sv/+/atelVtXDIfy/PPP51bL0JTbe3JRbSz9uFq68vP8ySefFO+PutZff/1iuJdqKkvCj018pis15ngyoZ/fbt26jXVYlqay4oor5rnR6o73X80jjzxS77nOPffcabbZZsutlqux763Q3Nsmhroa1/Eoqi9UWmKJJfLcaJVXtMfxsNpwXCGGihqfygdR0WDo0KG5NUpUF9h4442LajXVKo68//77eW60Cf2MNaWm+vzW1NQUVY0qRXWLAw44IL388stVqwRU225R1aVSVBnYZZddimpcUQ2oUrXHGZv4nfL73/8+t0a76qqriufaGDFEy8cff5xbqfgerzvMVrXvuhhaql27drk12vh+11W+t2LfjGt4jmr7PvbruKrHxOeh7uusJn7TxG+Uiy++uGjvvPPO6a677iqGw7v99tuLvxOPE7/j4vu+WmWMWpPDMXuPPfaoVyUmKsPceuut9Z6H4UoAAJicCGQAAECF+IfuSmeeeWbxj/Ljmqr943b0/fTTT7lVX7VhSyJgEMOH1LXWWmvVCw/Utckmm9Q7mRb/WD+2f3D/5ptvipNhcWIu/pG/TL169cpzozU0xMjDDz+c58YtynF36dIlt1IxjnyUN48x8nfbbbdiyInVVlstzTjjjHmNsYvS55WinH618dZrxf6J/RFhmmqvc1Joqu3dWNVOksZnojnFPpl99tlza5T47MVJpbrGZ1vFia7vv/8+t8atWin39957L881rNr7ME7Cff3117lVX+zH9dZbr3i/v/3227m3eWy55ZZ5brRrr722wROMcSL+tNNOy63Rtt566zzXsjX2vRUmxbaJ4akaOmbFCc1qf7taAGmGGWbIc6NEIKChE+kXXnhho4csib+/0korFcfMESNG5N4xrb766vU+h40deqF79+7Nfrypq6k+vzEERwxb8dJLL+WeMcVxNx6jUuV2i6DiYost9r8T+9VUG95jbCf4GxJDhFWeVI99HttoXMGheJ5HHHFEbo1W93dSU37XVb634v0/rlDKPPPMUwRE64rPxamnnppb9cV7NYYYW3rppdPf/va3qu/deO/svffeadCgQbknFcNpbb/99mnXXXctQmIxREkEJBpjcjhmzzTTTMXrq6tr167p6KOPzq1RYmic3/zmN7kFAAAtn0AGAADUEVcax3jdleKqxBjrflzTRhttVC8IEFfujm0c/AhDVI67/uGHH47xj/Ch2lWndcWVrjvssENujRZXv15yySVjPF5caRhjc6+xxhqpT58+RQWAHXfcsbh/WVcaV7uCMk62xAmOuqJaQZyQqBRXBVeuG5577rk8N0qcTLjxxhuLkzRjC1E0JK4yrjzpFCeNNttss3onySLAcvDBB6dzzjmnaMffjf03rqtMm0NTbe/GmmaaaeoFgmIc/w8++CC3ml6cnKw8mRNuu+22PDdKtW317LPPpp49e+bWKFEBoNq4/nGcqB3XvlK1sf6jkkKcFI8TXHGiLkJfcWKtrm222SbNNddcuTVKfDbjhFu8v+peHRzPK+5f+3l/9dVXi5Pd1fZrU9lqq63SfPPNl1ujxLEjAl6PP/74GO+l+IzGycA33ngj94wS+6va9m2JGvveCpNi28RxMd5DdaspxPvtyiuvTPvtt1/uGW3ZZZdNiy++eG6NttBCC+W50eIEexw3asVrOeuss4pgWmPEcTMCg1GVJq7qj3BLtcoacRV85fdetRDinHPOmaaeeurcGiU+u0ceeWRR0SNed2yPaDeXpvj8Rvv8888v1o8KPlElojLcGceT2KaV6m63p556qggrRigi9uVee+1VLygS78nrrrsut0YbWwi0IfPOO29RsaJSbI+11147/fa3vy2+m+I9Fd/b8Z6NCh0RqoxtUlmRJSo71A0TVDt+VwuUxmPef//9uTVatUohtaodv2ObffHFF8U+jODPYYcdVq/C0oEHHpjnRjv33HOL+8b3YF1vvvlm2nTTTYv3aLzWCIDG/q/7GQvxGancFvGYse/iPT6+JpdjdoRQKlWGuFTHAABgsvPfH9wAAEAWY3DHz+S607LLLpuXNs7vf//7eo+x+eab56XVVRs3u+4UY+v369cvr92wTz75pOo4/DFNPfXUNUsssUQxTT/99FXX2XbbbfMjjVbtuZ188sl5acNee+21eveLab311ivGcL/jjjtqjj/++JoZZ5yx6noxLbDAAjULL7xwfsRRTj/99Krr1k5TTjll8fpmm2224r5rrbVWzaGHHlrTrVu3/Aj1/elPf6r6WDHNPvvsNcsss0zN3HPPXXUs9RhjPl7rhPjDH/5Q7/Eas22raartveOOO9Zb7+mnn85Lx7TYYovVW3faaact3nMnnHBCXqvxJmT7PPnkk/XuM91009X8/PPPeY2amiFDhtTMPPPM9dZbaKGFas4///yaO++8s7hddNFF661TO80666w18803X81bb72VH3WUAQMGFK+52n3ivVI7H+/P4cOH53uNctNNN42xft2pY8eONUsvvXTxHNu1a1d1nQsuuCA/0vg56KCD6j3WzTffnJc2LLZT5f1qp1/96lfF5ya2UbXlMf35z3/OjzSmd955p9666667bl5ajqZ6b9Vqzm1TOS244II1Sy21VPHcqi2P6dZbb82POKbjjjuu6vpx7IvjQ3wfNvT+rp3qvnfiPR7Ppdp6iyyySM12221Xs8cee9SsssoqVde55ppr8iONKd4P1daPqe5x+u233873GGWWWWYZY92YxiaOdZXrxzGxmjI/v7fcckvVdeL7ff3116/Zc889i+/rmWaaqd46sf9HjBhRPM7HH39c9X3Qpk2bmpVXXrlm1113rdl5552L51W5TmzH+E0xIWK/b7zxxvUec3yn+N3y8ssv50cd5bzzzqu3XjzXP/7xjzU33HBDsR9ivu7xtu4Ur33xxRcv3neV4hhQ7T4x1X28iy66KN9jlKFDhzb4Po+/F/sk9n8c96utE78v+vfvnx9tlOeee67qurVTvOYOHToUx5M4lsT+3GuvvYrPX3zHVdNUx6Uwvp+thowcObJm/vnnr/dYtVP79u1r+vTpk9cGAIDJg0AGAADUESevK//x97TTTstLG+e+++6r9xgREujVq1deo75YFiceKu9XO/32t7/Na45bnGire0KqsVMED77++uv8KKNNaCAjrLDCCvXuW22KE/lxYqjasph++umn/Ig1xXOs9g//jZk23XTTqv+QP3DgwAZPCI5rOvHEE/OjjL8yAxmhKbb3+AQyjjrqqHrr1k4NncQcmwnZPnEiMMISlfe766678hqj/OUvf6m3TrUpTp4ee+yxVZfFdP/99+dHHC0CQNXWrZweeeSRfI/RDj744KrrjmuKY1ftSdjxNaGBjDC2fT62afXVV68aZAgtNZDR2PdWrebaNnHsHtsJzMpp6623zo9W36efftpgYKByivDWWWedVa+/8r1zzDHH1FunMVOcwG7oxHJs82r3qZw6deqU7zFKUwYyQlmf3y+++KI4QV5t3XFNEUioNWzYsJo111yz6nrjmvbff//8KBMmAgYbbbRR1cduzBQBiOuuuy4/2mg9evQYZyiodtphhx0aDEqsuOKK+RFHi98XDYVa606rrbZavsdoH3300QT9NplqqqmqfhdEMCGOBdXuM64pwk5vvvlmfqQxNcVxKZQVyAidO3eu91i10/j8HgYAgJbCkCUAAJDFsB3PPPNMbo2244475rnGidLsleOQDx8+PN1xxx25Vd8ss8xSdXzvWuMarqSuGKIkhkj51a9+lXvGLYbdiDHqK0uuT6wYpqFjx465VV0MdXH11VcX5dgrt1utKHlfK55jt27dirL14+vRRx8txl2vFOPPx1A11ZY1JIY5OfPMM8c6Tnxza4rtPT6OOuqoNPvss+fWmL788ss817Tatm2btttuu9warXJoiRgbP4ZtGJcYmuGMM85Iyy23XO4ZU7VtNbb167rpppvy3GgXX3xx8dymmmqq3DNuUeY/hkWYYorm/1/8KKEfr3d8nm98zqJEfvv27XPP5KGx761azbVtFltssWL/x/fIuGywwQZV33e1FlhggXTeeeflVsNmmmmmYuidxvzNONbE8Bvt2rXLPeMWw6k8/PDD9YYmqRXDx+y777651bCbb745zzWPsj6/MezHCy+80KjjSK14f8a2juFJasVQavG9t+uuu+aexonnFEOdTYz4fol9GNtjfD/rc8wxRzHUU7XfPjE82+WXX15vqLFK8V6+6qqr0imnnJJ7xlTt2B2/Ly677LJxHkvj91Ld4YHCoosuWuyzZZZZJveMW3xfx76PIUwqxeuLoeXWW2+93NN4MeRI/BaN4bUqTQ7H7BiSpKF9YLgSAAAmSzmYAQAAv3hRLjx+Itedllxyybx0/Oy22271HiuugB2be+65p959Yoqrn+PK7PHVu3fv4orvKJVd7XFjmmuuuWpOOumkeqWy65qYChnhP//5TzFkS91y37VTXGX6+uuv5zVral588cV6V4TGsBFRdr1WbKco1R5lq+uuNz5TQxUewuOPP16z1VZbNfj4Ue1kk002GesQKI1VdoWMUPb2Hp8KGaF79+4166yzTr37zDnnnHmNxpvQ7fPoo4/Wu1+U7R80aFBeY5SoBBIl2KPse+X6MTzDjTfemNesqfnuu+9qdtppp2L/164TV7DHUDDVxGMfcsghVa+2jgo2sY8qhzup64MPPqjZb7/9xnrFdQwfcfXVV09wZYxaE1Mho1Y83xgmYIYZZqj3WDFNNdVURYWaaleCV2qpFTJCY99bdTXXtvnmm2+K92g8XuU6MQxBDLPQ2O+S22+/vbjKvvJxYviFOP7F5zzEcEiV6zT03onqG0cccUTxvVN5n9opjj9nnHFGg5Ux6ooKAl26dCm+I6s9Vnw+YoiGusb3Kv7xrZBRq6zPbyyL41BUmqi2X2OKY8w222wzxrG9mmeffbZm9913b3DIsjguxXfEbbfdlu9Rnjh+RjWp+E1V7W/HFO+t2CbnnnvuGFWaGhLf1THERuXjxHbaZZddanr27JnXrCmGvoljeu068VrHdkyJz/lyyy03xuPWTvFdFpVhYpiSaqIqyVVXXVVU3YrXVO0xYh/E8CLxmWhIVLjYZ599JrhSSkxjO6aVeVwK4/vZGpc4zlQ+XgztMrHfdwAAMCm0if/890ctAADQin311Vfpgw8+KK6WHDlyZJphhhmKq6oXXnjhcV5lWpYffvghvf3226lnz55pxhlnLK4mXWihhfLSMQ0ePLhYL6p8REWHWoceemhxBXKtueeeu6hgEJUO4n9tfvrppzRgwIDitm/fvsXfiytkf/7553yPUU488cRxVraI+7z33ntFZYdBgwYVV4bGVbtLL730OKtQtARlbO+J8dlnn6W33nqr2HZxFX1c6R1XNrdEsa9fe+21okpOXJE/33zzFc+32mcjqt18//33qUOHDsV2HZfYtq+++mr69ttvi/forLPOmlZYYYWiwkBjxOf1o48+Sp988knq379/cRV8bM+lllqqeD+2NLF93n///eLq8fgsRlWE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7/LLL58OPvjgdPHFF+fesdtyyy3Tf/7zn9wapU2bNqljx45p2WWXTYceemhaaqml8hIAAABgXKbItwAAAEADmiKMEdpO0fz/W/7AAw+kW2+9NX300UfF9PHHH+cllOmVV14ptm9cB7PwwgtXnRZZZJG00EIL5XtMmN133z1tt9126ayzzso9o7z88svF7SqrrFLcjkuEOR599NHUo0ePNPvss/9vmnXWWdMPP/yQrrzyyrTiiiumbt265XtMvLfeeivts88+6e677849AAAA0LoIZAAAAMAvxPDhw9MxxxyTpp122qKqQqisiPBLcvbZZ6drrrkmt8pVG4iI7RwhmGrT/fffX+yLibHgggsWgYaohFFXBEJCYwMZr732WjHMyQ477JC6du36v+mZZ55Jn332WerSpUsaOnRoOv744/M9Jt5tt92Wrr766jTzzDPnHgAAAGhdBDIAAADgF+KKK65IH3zwQTriiCPSeuutV/Q1VSAjTu5//fXX6fPPP0/Dhg3LvY0zePDgPFdf//79i6oeffr0yT2N89NPP6VPPvnkf/d79913i3DBiy++WLQrTczzD+MbiKg1cuTI9NVXXxUhiAn5u7Xi788444xp0UUXzT1jN67ne+CBB6a2bdumt99+O/fUN777Jv7mFFNMUVTeGJeJ3R8AAAAwKQhkAAAAwC9AnCzv3LlzMQTFsccem+aff/6i/9NPPy1u63rwwQfTdNNNl84///zcU18EO+KE/+qrr16ECGp9+eWXaa+99iqWzTPPPGmBBRb439+sdiJ9s802S/PNN1/68ccf07777pumn376NM000xT3qxvMuOOOO9JKK630v5DBLLPMkjbYYIPiBH0MpxHP9/bbb89rj/bEE0+kNddcM80wwwzFECFxvwgdbLvttmmFFVYoqmTUNb7PvyGvvvpq8RjxNxvj+++/TwcccEDx/Oadd96i8kUMGXLBBRcUy+N5LL/88sV8rSFDhhTVJWIb1hXDj7z//vtp5ZVXTm3atMm9Y1cbyFh11VWL20o///xzEYqoVs1ifPZNPLfYF9H35JNPFu+deJ3RjukPf/hDsV6tsvYHAAAATAoCGQAAAPALcMYZZ6SePXumk046qQg9xEn/qHhQrUJGnFQfOHBgeuutt3JPfYcddlgRoojHjSoH4dlnn01LL710uuuuu4qKCtdff336xz/+kRZaaKF0zjnnpBNOOKFYr1acjH/++eeL5VtssUXq1q1b2nHHHdOmm26a1l9//dS+fftivaOOOirtvPPORYWLCC1ceOGFRV9Ua9hqq63Sww8/XDzfysDCtddemzbZZJP07bffptNPP70YniSG9nj99dfTr371q/TSSy+lmWaaKa89/s+/IRFy6dWrV6MDEd27dy+e++WXX55+85vfpNNOO60IisT9//KXvxT7LMINsayuN998M/Xt2zcttdRSuWeUGH4ktu34VOeIQEYEYeL1V1MbqIj9VNf47psIZBx99NFpzz33TDU1NUVYplOnTv+b9tlnn2K9UNb+AAAAgEmlzX//57cmzwMAAAAVBgwcnNZZ/9jcKtc9d5yQ5p131txqOlFlYLHFFisqDLz33ntpqqmmKvprK1P069evaNeKk/lRrWDJJZcsTu5Xuvvuu9MOO+yQdtlll3TrrbcWfTGcxDLLLFNUMohgRfytWoMGDSoCIFNPPXURjqj1zjvvFPcJRx55ZBFCiJBIXTfeeGNx8j7We/TRR4tqCrViaI8IKcRwJFG5oXfv3nlJSj/88ENRZSIqgcSwJBFCqbX//vsXw7dEEKK2gsWEPP+G3HzzzWn33XdPf/3rX4sgyNhElYfllluuqGgRYYM///nPeckoMbxMhBzCRRddlA455JBiPkQ7gjG33XZbEYqoFWGFqCBx3333pa233jr3NqxHjx5pjjnmKMIRzz33XO4dLYIR22yzTbFvIswS2yJM6L4JEZb54x//WFTQiMoolcrcHwAAADCpqJABAAAArdxxxx1XDP9x5pln/i+MEWL4hwhkVJ4sj4oXiy++eDEsSeV1HPE4EZ6Ydtpp03nnnZd7UzrxxBOLag2XXXbZGCfPQ1ReiPUrwxYvv/xycbvGGmukc889t97yGCLj+OOPT+3atSuqJNQ94R/i70QgIFRWg7jnnnuKygzx2uuGMUIEUUKfPn2K2zAhz78htcN/RIWRutUfaqcYOqZWBBMijBGVISrDGCGef63K11i7/Rrb35Da9SO4s9122/1v2nLLLYtQxTrrrFMEIGKIkdowxsTsmzCuIVLK3B8AAAAwqQhkAAAAQCv26quvFhUbVl999WI4kLqiekSoNmxJnIiPSgQxVEZdEZz47LPPipPxtSfKI/hwyy23pCWWWKIYIqRSVL6Iignbbrtt7hml9qR8VHOoNrTH448/XoQEdtttt2KYimqiCkaoPLH/8ccfF7crrrhicVvX008/XVQAqa3OMaHPvyG1r+uBBx4o7ls5PfTQQ8Xy8K9//at47VFNo5rZZpstdejQoagGEZU06oq/8+tf//p/AZNa0R/BiVjWGLXPN8I2URElpqiUEc8zwiIx1EuES5ZddtlivTAx+ybE34zXFVVYKpW9PwAAAGBSEcgAAACAViyqWUSViwhSVBpbIGOppZYqbmOIk1pxEvyss84qTrQfddRRuTelp556qjiZHxULTj755GLIjKjGEcNrROghqjzE7WmnnZbvMUqclI9qB5tuumnuGdNjjz1W3FYGSerq2bNncVtZheFXv/pVcfvSSy8Vt7Wuuuqq9MQTTxTPLf52mNDnX83w4cPTG2+8UQQiYjiSalPtc4qhYiIws8IKKxTVSqr5+eefi4BChCGiGkWtqO7xySef1Hvd3333XTHcR0OVJ6qprZARzyXuG1OvXr2KIWViKJPDDz+8GAKmronZN7Gt33777bTSSitVrXJR5v4AAACASUkgAwAAAFqpGEri2WefLSowxInzGFai7nT++ecX63366afFbV1RISNEhYRaEcKIqhkXXnjhGOGA2kBHBAROPfXUouJFVND4xz/+kYYOHVr0vfDCC2mmmWYq1gsRNIiwR5ysr/tYdcWQKSECCw2Jyg2h8qT/Xnvtleaaa6603377pe233z796U9/KtaJ9k477ZROOeWUvOaEPf+GRNAgXlv8rSmnnLLqFEPChI8++iiNHDmyUa+vMmBRW9Wisn98hyuJsE5UxKhWaSNCOfvvv38xrM29996be0eZmH0TgZUIpjQUGilzfwAAAMCkJJABAAAArVCc8I4T2REA2GWXXdJ6661Xb1pttdWKdRtTIaNbt27ptttuS5tvvnnaeuuti75affv2LW4ffvjhNGTIkPTNN9+kL774Ig0YMCB9+OGH6cQTTyyGp6jr3//+d1FNYmyVHOJxQm21i0q9e/dOXbt2LSp2VK7z7bffpjXWWCO1b9++eO4xfEicwL/11lvT7bffnqaaaqq85oQ9/4Y0FJSoZlyvL9xxxx3FbWWooaHgRe3fb2wgI0IhEbhYeeWVc8+Yll566eK2bqWUMDH7ZlzPscz9AQAAAJOSQAYAAAC0QlFNICoMRGWIW265pep0xRVXFOtWC2REtYTpppuuOBE/YsSIdOihh6app566qI5RKaorhDhxHuvMOeecxZAd0047bdEfQ53079+/mK9VGygYW3AhwhSh9uR/pRg+JU7YVz5GVGaIvggCRNgghveIgMajjz5ahFMqTcjzb8j4BCLG9fpi+JErr7yymK98jfF3ovJJZZAitmsM9bHiiivmnrEb1/ON7RC+/PLL4rbWhO6bEBU5QgxZUk2Z+wMAAAAmJYEMAAAAaGWiwsBpp51WBCpOPvnk3FvfPPPMU1TQqBbIiJP9Sy65ZDE0RYQ7YiiOI444Ii266KJ5jdE22mij4vaqq64qhuCoK06qx/INNtigGB6jVmOCC7Whgvj7la6++ur097//vZivfIx47KgQEifya4cHGZsJef4NGZ9AxPLLL188vxgOpDLY0LNnz7TtttsWwYMZZ5wxLbLIInnJKPEaY1/EsrrefffdNP/88ze6gsS4hjiZe+65i9uvv/66uK01ofsm9OjRo7idYYYZittKZe4PAAAAmJTa/Pd/Xv3fKwAAADRgwMDBaZ31j82tct1zxwlp3nlnza3y/OUvf0kXXHBBOvXUU4vhHcYmhpT4/PPP06BBg/5X9aDW3nvvna655ppiPsINMbxFhDyq2WuvvdJ1111XnIDfeeedi5PtUV3j//7v/4rHjtDBpptumtdOaYEFFkhDhw6tF0SoK+4fJ/6j0kJUtogT8QMHDkz33Xdfeuedd4rqEDGsxQsvvJBWX331fK9R1RyiMkOc+I8qGbPMMkvq2LFjmm222dJyyy2XDj744DT77LPntUcZ3+dfzU8//VQEJGK4l6jS0Ri/+93v0g033FAEHw488MDieUWoIp7Llltuma6//vq0ySabFNU9an366adpoYUWSr///e+L9eqKx4nKGmeeeWZRgSKCC2MT2zAqVkQVkRjSpVL8s1G8L2IbRpWRWhO6b0Js/whybL/99mmLLbYotlWEg4455pi8Rjn7AwAAACY1gQwAAAAYi8ktkBEn65dYYoniBPrHH388zkoJG264YXrqqaeKk91REaOu888/Px155JHFfIQG9thjj2K+mghXRBAkqhrESfoQlSLi8WP4iqgGUSuqP0Q4Yrvttkt333137q3ukUceKYZdiWEqQlSUiJDBJZdcUvS/+OKLRRWJ2jBJDNNy9tlnp6effvp/oY+oGBJTBBVi+JU55pijCAHMOuvobT8+z78h8Tfjue27777/G2pkXCLEEEGMm266qXhuIbbN0UcfXfzNCDqccMIJRcWTWjfffHPafffdi21w0EEH5d5Rou+www4rKksccMAB6Z///GdeUl+8zgiqxHAg8V5pSGzHCLnE+lFRpdb47ptaEZTZbLPN/hdamWaaaYp9dsghhxTtUMb+AAAAgElNIAMAAADGYnKskDEpxQn4GAJl6qmnLqoexAn/iRXhgg8//LA4MT/ffPOlmWeeOS8ZU4RKohrDWmutle68887iRH9dEX6IihQRAmkoYNIUz78xevXqlT777LOiEkRUv4jwwYSKwENMiy++eL0wRNkau28qxf0iBDJ8+PCiSkvlvqo1qfYHAAAAlEEgAwAAAMZCIGPyUTsUxnPPPZfWXHPN3DumGMbl5JNPTnfccUfacccdcy8AAABA+abItwAAAACTtRjmIrz77rvFbaV///vfRWBj2mmnLYa+AAAAAGhKKmQAAADAWMT/Nm+25UmpZ6/+uaccHTq0S089dmaaaqoJH5qCMb388stpnXXWSSNGjEhbbrllWn755VO7du1Sz54906uvvpqef/751KZNm3TFFVekffbZJ98LAAAAoGkIZAAAAMA4PPDgK+nxJ99MAwcOzj0Tp337qdO6ay+Vdt5prdxDWSJ4ccYZZ6Ru3bqlvn37Fn1t27ZN888/f1prrbXSQQcdlFZeeeWiHwAAAKApCWQAAAAArdKQIUOKahkxRAkAAABAcxPIAAAAAAAAAAAo2RT5FgAAAAAAAACAkghkAAAAAAAAAACUTCADAAAAAAAAAKBkAhkAAAAAAAAAACUTyAAAAAAAAAAAKJlABgAAAAAAAABAyQQyAAAAAAAAAABKJpABAAAAAAAAAFAygQwAAAAAAAAAgJIJZAAAAAAAAAAAlEwgAwAAAAAAAACgZAIZAAAAAAAAAAAlE8gAAAAAAAAAACiZQAYAAAAAAAAAQMkEMgAAAAAAAAAASiaQAQAAAAAAAABQMoEMAAAAAAAAAICSCWQAAAAAAAAAAJRMIAMAAAAAAAAAoGQCGQAAAAAAAAAAJRPIAAAAAAAAAAAomUAGAAAAAAAAAEDJBDIAAAAAAAAAAEomkAEAAAAAAAAAUDKBDAAAAAAAAACAkglkAAAAAAAAAACUTCADAAAAAAAAAKBkAhkAAAAAAAAAACUTyGjA4MGD81zjxPo1NTW5BQAAAAAAAAD8krX6QMbnn3+eVlxxxbT44ounW265JffWN3z48HTFFVek1VdfPXXo0CFNM800aaaZZkq77757+vjjj/Na9V111VVpoYUWKtbv2LFj6ty5c15S30MPPZSWWGKJdOKJJ+YeAAAAAAAAAKA1alPTiss69OvXL62xxhrpgw8+KNovvfRSWnXVVYv5ur799tu08847pxdeeKEIVqy22mpFKOOtt95KX331VRG0eO6559LSSy+d7zFKly5d0uGHH5723nvvtPnmm6cHH3wwXXvttemee+5J2267bV5rlLfffjuttdZaaeGFF07PPvts8fgAAAAAAAAAQOvUagMZQ4cOTZtuuml65plnivaUU06Z+vfvn9q1a1e0a/38889pzTXXTG+88UbaZ5990nnnnZdmnHHGYllUzfjrX/+azjnnnCLY8fzzzxf9oW/fvmmeeeZJ22yzTbrpppuKvlh/lllmSTvttFP617/+VfSFHj16FEGQESNGpJdffjnNNddceQkAAAAAAAAA0Bq12iFLIlzRtWvXdOGFF6Zpp502LbvssvXCGOG4444rwhj77bdfMfxIbRgjRIjjrLPOSosttlhRPeOzzz7LS1K666670sCBA9PBBx+ce0at3759+zRkyJDcMyrwEaGN3r17p/vvv18YAwAAAAAAAAB+AVplIOPEE09MN9xwQzGcyHrrrZcGDBiQVllllbx0tO+++y5dfvnlabbZZksXXHBB7h1TmzZt0tprr13Mf/jhh8VtiEoXMbxJ3SFQInTxww8/pPnmm69oR/GR3/3ud+nf//53UUVj+eWXL/oBAAAAAAAAgNat1QUyrr766nT66aenrbfeOv39739Pr7zyStFfLZARYYzBgwenP//5z6lDhw65t74ZZpihuO3Tp09xG77//vui2kXbtm1zT0oPPPBAcbvBBhsUt1F948477yyGQYkqGQAAAAAAAADAL0OrCmQ8/vjjaf/99y8qUdx8881piimmKCpZhGqBjAcffLC43W233YrbhvTv37+4nX766YvbMMccc6Rvv/029e3bt2j/+OOP6W9/+1tafPHF0/rrr5+uueaadPbZZ6cDDjggHXHEEcU6AAAAAAAAAMAvQ5uaGFejFXjnnXfSWmutVYQmIoQR1SvCcsstlz7//PMiOBHDj9Tq1atXMVTJPPPMk7744ovcW10ELLp27ZreeuuttMwyyxR9r732Wlp99dWL4UlWWmml9OyzzxbBjSeeeCINGjQobbrppsX9IvQRz+3uu+8uKmxEMGTPPfcswiITa/jw4enrr7/OLQAAAAAAAACYdOacc8409dRT5xatIpARlSpWXXXVInQRwYiokBEiGNGxY8e03nrrFUGJuqK98cYbp1122SXdeuutube+ESNGpFlmmaUY2iSqYLRr1y4vSemZZ55J//jHP4pwx1JLLZUOPfTQIiQRQY14o73wwgvFsCjHHntsmnvuudOMM85YhDP22muvooLGxIrn9NJLL+UWAAAAAAAAAEw6Ucxguummyy0m+0DGgAED0tprr53efvvtdM8996Stt946LxkVmFh33XXT8ccfXwwnUlcEJWI4kRNPPDGdeuqpube+V155pQh7RHjjsccey73V9e7dO6222mpFpYyo0tGjR4+0xhprpIMOOih16dKlqIrxl7/8JV144YXpq6+++l8VjwmlQgYAAAAAAAAALYUKGWOa7AMZW221VTEsyBZbbJEOOeSQ3DvK/fffny699NJ03HHHpXXWWSe1bdu2CFaEs88+O3Xq1CldcMEF6fDDDy/6qjnyyCPT+eefP871hg4dmjbaaKP06quvpqeffroIZkT1jccffzx98803adpppy3Wi9DI9ttvX1TyiCFWAAAAAAAAAIDWZ7IOZMQQJTPPPHNujduSSy6Z3nvvvWI+ghpRueLMM88sghnVRKWLBRdcMA0ZMiR99tln6Ve/+lVeUt/vf//7dMMNN6RbbrmlCGLEZo0hSjbffPOir9YVV1yR9t9//+J5xPMBAAAAAAAAAFqfKfLtZGmaaaZJL774YoNTBCiiJEpt+6677sr3TGnhhRcubmNIkobEUCcxDEkEN8YWxjjttNPS9ddfX9xGGCP07NmzCHQsu+yyRbtWt27dUocOHf739wEAAAAAAACA1meyH7KkIT/88EP69a9/nXbYYYd055135t7RYoiROeaYowhNPPDAA2nTTTfNS1IaNmxY6ty5czrjjDPSMsssU4Q5aoccqXTrrbem3XbbraiQce211+belHr06FE8ft0KHPGcFllkkWKYlRtvvLHoAwAAAAAAAABan1YbyLj//vvTNttsk84+++x0zDHH5N4xRVWLCFK0adMmbbHFFuk3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eQQyoHWbFIGMfv0GpoceeS099PCr6f0Pvsq9wNgssvCcaastV06bb7ZS+tUsHXMvAAAAAEDzMmQJAEALNHzEyHTr7c+mHXc9I513/l3CGDAePv7k23RBl3vTjruckW646ek0bNiIvAQAAAAAoPkIZAAAtCBRAevprm+nnXc9M5197h2pb98BeQkwvn766ed0/oX3pO13Pj099sQbxecLAAAAAKC5CGQAALQg99z7Ujq609Xpiy9/yD3AxPr22z6p0/HXpiv/9ahQBgAAAADQbAQyAABagBhS4dS/3ZJOO+OWNHKkE8bQFC674uF0+JFXpsFDhuUeAAAAAICmI5ABANACnHPeHemee1/MLaCpPPvce6nzKTfmFgAAAABA0xHIAACYxO648/l0590v5BbQ1B574o10zXWP5xYAAAAAQNMQyAAAmITefOvTojoG0LwuufTB9PwL7+cWAAAAAED5BDIAACaR4SNGppNPvam4BZpXTU1NOvX0m9PgIcNyDwAAAABAuVp1IGPYsGHFNL5GjhyZhg4dmluN8/PPP+c5AIDGefLJN9NXX/XMLaC59ezVPz3wwCu5BQAAAABQrlYXyPj444/T/vvvn+aaa67Url27Ylp00UXThRdeWFwF15BevXqlzp07p8UXXzy1b9++mOaZZ5509NFHp59++imvNabBgweno446Ks0yyyxp2mmnLda/995789L6ah///vvvzz0AwC9V/C657voncwuYVG64+WlVagAAAACAJtGqAhm33XZbWnbZZdNVV12VFltssfSnP/0pbbXVVunTTz9NRxxxRDrrrLPymmN64YUXivudcsopqU+fPmnjjTdOG264YRowYEA677zz0uqrr54GDhyY1x5tt912S5deemk6/PDDi78dgYzo++677/Iao1177bXF46+zzjpp6623zr0AwC/V51/8kD786OvcAiaVL7/smd588z+5BQAAAABQnlYTyBgyZEg69NBDi8oYb775ZnrqqafSZZddlu677770wAMPFOv84x//KG7r6t69e9piiy1Sz549U5cuXYowxYMPPpgef/zx9Mknn6SNNtoovffee+mMM87I9xjlscceS/fcc09ReePEE09MO++8c3H/GLrkiSeeyGuN0rVr1yIcEo8VAQ4AgK7d3s5zwKT2wosf5DkAAAAAgPK0mkBGDE0SVSoiSLH00kvn3lE222yzYliR3r17555RolT4rrvumn788ceigkUEOtq2bZuXpuI+11xzTZpiiinSjTfemHtHuf7669N0002X/vCHP+SeVLRDhENqReBjxx13TAsvvHC644470pRTTpmXAAC/ZE93fSfPAZOazyMAAAAA0BRa1ZAlMRzI/PPPn1ujRfWLCF0suuiiuWeUu+++u6imERUydt9999w7prnnnjstuOCC6YsvviiqX9R6+eWX0xprrFEEQWp98MGoK+vmm2++4jYCIFtuuWUR8oiqGzPMMEPRDwD8skUo9IMPv8otYFL74ssf0rBhI3ILAAAAAKAcrSqQ0ZDTTz89DR8+PB144IG5Z5SLLrqouD3mmGOK24bUBin69OlT3Ibvv/8+zTvvvLk1yv3335/at2+fVl999TR06NC0ww47pK+//jrde++9aYEFFshrAQC/dIMHD0sjRozMLaAlGDhocJ4DAAAAAChHqwtkjBw5Mg0ePLgIT7zwwgvpt7/9bRG8OPLII9MBBxyQ10pFxYznn38+zTXXXEVljbHp379/cTv99NMXt2GOOeZI7733Xm6l9NZbbxXDmvz+978vhi7Zb7/90rPPPlsMeRIBDQCAWkOGDstzQEsxePDQPAcAAAAAUI5WF8jo0qVLmmaaadIss8yS1lxzzfT000+n1157LZ133nl5jVGefPLJomrGhhtumNq0aZN76xs2bFj6/PPP00wzzZQ6duyYe1MR7njxxReLYUuiEkbcLrTQQunMM88sKnL83//9XzrllFPSrrvuWgxXEoGQI444InXt2jU/AgDwSzVkiEAGtDRRuQYAAAAAoExtamIQ81Ykhgd59dVX008//ZTeeeedIpCx4IILpkceeSQtssgiea2UTjjhhPS3v/0tXXrppfWGMqkrwhwrr7xyWnfddeuFKa6++up05513phEjRhRVNg4++ODi70RVjj333DP961//Srvssku655570m9+85viOX355ZdF1Yy99torP8qE+/nnn9Oa63bKLaAl2GmH5dIaq5UzRNH9D76bnu72cW4BLcH552yf5yZOn76D0ulnPppbQEtw9F82SHPMPmqoQgAAAABgwqy00krFiBKM0uoCGZXuvvvuooJFBCa6deuWe1Pabbfd0i233FJUythggw1yb33nnHNOOvbYY4vwxvHHH597q3vppZfS+uuvXwQ4nnjiiXTBBRekTp06pdtuuy3tvPPORUWOqKQRw6V89NFH+V4TbsiQIWn1tY/JLaAl+N0eq6f11108tybO7Xe+lh5+9J3cAlqCq6/4Y56bOL16D0jHHHd7bgEtwWmdt0tzzTlTbgEAAAAAE2KxxRYrRrRglFYfyAgLL7xw+uyzz9KgQYNSu3btir7NN9+8qGbxxhtvpOWWW67oq2bFFVdMr7/++jjX++KLL9Iqq6xSDGsSwYwY4mSuueZKyyyzTHr00dFXwB5++OHpkksuKcIZEyt23YqrHp5bQEtwfKdd0k47rJlbE6fLxfel665/MreAluD1V7rkuYnzXY++acttOucW0BLcfkuntNCCc+QWAAAAAMDEmyLfTtZiaJKxGTp0aHE7xRSjX+70009f3A4ePLi4reb5558vwhirrbbaWMMY/fv3T1tuuWUaNmxYeuCBB9Iss8yS3nzzzdSjR4+0/fZjljb/4Ycf0swzz5xbAAAAAAAAAEBrNNkHMmI4kuWXXz717t0794zphRdeSF999VVaddVV01RTTZV7R1XNCK+88kpxWymGAzn00EOL+ZNPPrm4rWbEiBFpl112Sd27d0933XVXUYIlfPLJJ8XtsssuW9zWeuaZZ+r1AQAAAAAAAACty2QfyFh55ZWLUMTxxx9fDOFR13fffZf23nvvYv6www4rbmtFkCOcd9556fPPPy/ma/Xq1Sttt912RXWMfffdN2222WZ5SX2HHHJIMSTJ5ZdfntZbb73cm9LIkSOL2zZt2hS3IYZI+eabb4oABwAAAAAAAADQek32gYw///nPadFFF01XXHFFWmmlldKxxx6bTjnllPS73/0uLbTQQumjjz5K++23X9p1113zPUaJdSOsEdUzll566bTnnnum4447Lu22225pwQUXLMITMdzIJZdcku9R3wUXXJD++c9/pk6dOqU//vGPuXeUNddcM0055ZTp1FNPTW+88Ua688470z777JN+85vfpD/84Q95LQAAAAAAAACgNZrsAxkzzDBDeuyxx9LOO+9cBB/OOeec1Llz53TDDTekeeedN1155ZVF9YpqIsRx4oknpqmnnjrdeOON6ayzzkq33HJLcb9YFkOQtGvXLq89pvibRx11VNppp53SGWeckXtHm2eeeYowx1NPPZVWWGGFYr0IjkTQI/4eAAAAAAAAANB6tamp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AABat1YTyNh6662L6amnnkqLLLJI7h0lql2sttpq6eeff05ffPFF7k3pm2++Sfvss0+afvrpU9euXYuKF3UttdRS6ayzzirmb7zxxuI2RKWLCGzsu+++RdCj1nTTTZeGDBmSW6Mcdthh6eGHH06XXnpp2mijjXIvAAAAAAAAANCatZpAxq9//euiOkXHjh1zz5h+/PHH4naWWWYpbkNU1Bg0aFA68cQT02KLLZZ7x7TOOusUt1HhotbLL79c3MZwKHXFOvPNN19updSlS5f0j3/8Ix111FFpv/32y70AAAAAAAAAQGvXagIZY/PWW2+lN998My299NJp9tlnL/oiiBHDnHTo0CH9+c9/LvqqmWGGGYrbPn36FLfh+++/L25jOJNaUXnjnXfeSRtssEHRfuihh9KRRx6ZtttuuyL4AQAAAAAAAAD8crT6QMZXX32Vdtxxx1RTU5NOOeWU3JvS008/XQxhss022xShjIb079+/uI1hTWrNMcccxe27775b3I4cOTJ16tQpTT311MUQKG+//Xb67W9/m5ZbbrliqJMppvhF5F4AAAAAAAAAgKxNTSQVWqlnn3027bnnnunLL79MJ5100hiBjEMPPTRdfPHF6eqrr05//OMfc2993bp1S+utt17afvvt01133VX0/fTTT2nJJZcsbjfbbLP0/vvvF+GMeLwddtghrbrqqkUApHZokwhlfP7552mBBRZI++67b5pxxhmL/ok1ePDgtMY6x+YW0BL8bo/V03rrVB8CaXzdfudr6ZHHRgW/gJbhX5fvlecmTq/eA9Kxx9+RW0BLcOrJ26a55pwptybOX46+Nf3Y/+fcAia1DdZbPO2x22q5BQAAMH7atGmT54DGWGyxxdI000yTW7TKQEYMLxIVK2JIkqha0aVLl7T//vvnpaOstdZa6fnnny/CFEsssUTure+8885LRx99dDr55JNT586dc28qAhZnnnlm+vjjj9Pcc89dVMZYeeWV07rrrps+/PDD9NxzzxXPY9ttt01t27ZNCy+8cFE5I25fe+21Ut6EMezKWusdl1tAS7Dj9sumNVZbILcmzgMPvZee7vZxbgEtwd/P3i7PTZw+fQelv531WG4BLcHRf9kgzf7rjrk1cU45/ZHU/6fBuQVMamuuvkDaYbtlcwsAAGD8CGTA+FlppZXSdNNNl1u0ukDGNddck4455pjUq1evtMYaa6Qrr7yyqGZRKYYd+eGHH9KQIUPSlFNOmXvr22KLLdLDDz9chDfi8RoSm3GnnXZK99xzT7r33nvTOuuskxZZZJG00EILpUceeSR17Ngx3XfffUVA46abbkq77bZbvueEGz58eFpljSNzC2gJDj90q7T1livl1sS54qrH0623P59bQEvw5KOjw5kT4/sffky7/+6C3AJagn9d8ec0/3yz5dbE2WW3v6fefX7KLWBS226bVdIhB22RWwAAAONHIAPGz/TTT18ULGCUVhPI+Oqrr9Lee++dnnjiifSrX/2qqF4RVSsaOkhGhYp27dqlfv365Z76osJFBDciwRPhjbG9cY499th0zjnnpAsvvDAddthh6dJLL00HHXRQeuGFF9Lqq69erBN/a6aZZkqnnXZaOuGEE4q+iRG7bsVVD88toCU4vtMuaacd1sytidPl4vvSddc/mVtAS/D6K13y3MT5rkfftOU25YQ7gHLcfkuntNCCc+TWxNlk8xNTr979cwuY1Hbdee107NE75RYAAABA85ki307WIvSwwgorFGGMCGF079497bvvvmNNrEUyJ6pjjC2Pctlll6WhQ4emP/3pT2MNY/zrX/8qwhh//vOfizBGiKoYs88+e1pttdHj1EaoI8w888zFLQAAAAAAAADQOk32gYwvvvgibb755mnAgAHpjjvuSFdddVVRhWJcFl544TR48OD0zjvv5J4x/ec//0lnn3126tChQzryyIaHBXnqqafSgQcemDbbbLN00UUX5d6UPvnkk7TMMsuMEQrp1q1bcbvsssauBQAAAAAAAIDWbLIPZMTwH/37909///vf04477ph7x6123RhqZODAgcV8rbfffjttsskmxeNefvnlxRAo1Xz00Udpp512Sosttli69dZbx6iiMXLkyDHCGFGJ45prrknzzDPPGFUzAAAAAAAAAIDWZ7IOZETo4c477yzmY5iSTp06VZ1OPvnkYp26DjrooLTkkksWQ4v85je/Sfvvv38RzohKFzH8yeeff57OPPPMtMcee+R7jKlXr15pyy23TFNPPXV64IEHUseOHfOSUdZdd92iesYtt9yS/v3vf6cDDjggvfjii+mss84a6/AnAAAAAAAAAMDkr01NlG6YTH3wwQdFqGJcVl111fTSSy/l1mi9e/dOhxxySBHqGDp0aNEXVS02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AAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAAAAAAAIgzAjIAAAAAAAAAAAAAAADijIAMAAAAAAAAAAAAAACAOCMgAwAAAAAAAAAAAAAAIM4IyAAAAAAAAAAA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JUooaaJBgwZWfTJ6b12uvPJK9/7777uNGze6fv36WcuilG1LgEREQAbw/6RFixa2eFRQhjLyAnrgKAOnefPmFgUYTd/v1auXvUBeddVVfhRA2GTJksUNGDDAyprfd999ftS5U045xbJmVSGnXr16trkbrUuXLhaooRJsAMLn78onigKuVOZYz+vgkFfeeOMN+36QvQcgPDQvlWmnSnWpURa95rd069bNPgNqWZQ1a1bXp08fu9ZcZ6MXCB9lxWfPnt3mcPS7toIpFWyhbLyFCxf60UNUGl3v4kfKugWQttTGIGfOnG7atGlu586dfjQ2ZdvqnX3q1Kl+JMmJJ57o8uTJ468ApLWgcp32yaPpmTx+/Hhbw1988cXuggsusGf7P0mAUKA1gH+Xzr6U1KC5G8uYMWPcjz/+aMkP0UnI5513nn3Gav2tNmRKgihYsKC9e994443+DpC4CMgA/p+oZ91tt91m2fDRmTg66Onbt689aLTho/JsivLThpH+zhdffGFZt4rqBRBeqoKjFiUTJkxI1oZI2Tg1atSw7HpF+Y8bN86iem+55RbXs2dPa3+ggCwA4fJPyydqc1eHs6qIoef8li1brPyxyiPreR70qgcQHsqq1SbRt99+60diu+eee1zhwoXtua0No4A2jnT4M3HiRD8CIIwUdKEKNrt27bLECD2XRQFXak2geVy7du1kQRnvvPOOa9Omjb2nN2rUyI8CCBsFVdapU8cOaFO2Dk1JSU6XXnqp27Bhg63tAYRTq1at7NmshIdoSnJcu3at7anrvqradO/e3dWtW/fgsx1AeLRt29b2wFOrPjV79mxrIaiqs9G0d649NAVdxqKADVXQoDol0gsCMoD/R4MGDbKoP2XMr1692o8699BDD1l/PC0udaCriOCSJUu6jz76yDaDdB9A+A0bNswWji1btrTSp5IxY0bb2FXkrsqw6YVRpdbUpkj96XVPWboAwuO/LZ+oPpYPPvigHejopfLMM8+06jfPPvssGTlACF144YX2qWfwkagvfXCIqwzcgNofaHNJcxxAuNWqVcs1bNjQzZkzx4IzAmotqN7z6j9drlw5e5Zrk1drdmXdKxM3yNQFkLZSO3DVe7coiSlWNm00VcwRVa8EEF5KeIh+h1aigxIgVDn6559/dosWLXLLli1zpUqVcpMnT06WEAUgHILqNSmr3QS0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vHhxa12ivnZt27b1o0nU927nzp22mFSfah3uKOI3oEWkSiLr3wAQTip1et9991nFqpT0QliuXDnb5I31cqlADG0aKes+Eon4UQBh8+eff7rdu3fb2vvcc8+1sQceeMDKp44YMcKybFPTsGFD+67WAgDCTUFUp59+ulW207xPjb6n9iYAEkPJkiXd+vXrXZs2bfxIkjx58li1mxdffNFaherQ584773QVK1a0+6m1LQEQTkGFypdfftk+Y1HClPbcVUWjT58+fhRAWtC+t6pJnnrqqVbB6uyzz3ZPPvmkvXsHNK7W/ap6oc+gBXgsajkmqowFILEQkIE0pRJqiv4bNmxYqhUwPvnkE/s8//zz7RNAOKk6hg5lhw8fnizLRuNFixa1Bah60QYlkAPqgad7d9xxhx8BEDbdunVzQ4cOdeedd54bP368Hz1Em0JqafD111/7kUPUlkyVcd577z2XIUMGPwogLFTBpkqVKi5r1qxWFSOasnJ0gKMgDWXe7tixw99JohZkgaefftoOeQGEn6rWaaNX1W1i0Qav3s8JmAbCTdUplfBw7bXXuqVLl9qYntuxgiwUhKG1ugIxdJAb9KUnIANIO3v27Ek1Y17JDGozFn1oK6p4o3aBqlSb2l665nqJEiXcs88+615//XU/CuDftm7dOnvuKlFJFazUimTFihWudevWVlE2OumpSZMmVv1CFab1jv7999/7O4fo98WCBQvcSSed5IoVK+ZHASQKAjIQN3qh00IyJb0g9u7d29WqVcuy55QhHyw2M2XKZIexWlw2btz4sEWmyqgOGTLEHlznnHOOHwUQForc7dKli2XIK0J32bJl9tLYtGnTgxl3isgfO3asRejrQFdZtvodoCAMlUAfOHCgbQapnCqAcNKzeMCAATZvdWCryjd//PGHv3soSye1DV29aHJQC4SPAii16aP2gTfffLO74YYb/J1DlMGjViQqndqpUyc/mhQ0reoZ06ZN8yMA/m2qTjdlyhR/ldycOXMs4FlJEMrKi25Rop7yCph87LHHrE91Sqpg+dtvv7l69er5EQBho2oYF110kXv00UftZx3c6oBG9D6uKpUpKcjq448/tr+jQyIJ+tYD+HdpD13zb/DgwX7kkLlz59oaXBn1qlj1zDPP+DtJ1S/0/NYeutbvKatdqY3BG2+8YRXvdMDLeziQNlSVSgFU2ivXe7SCobUe/+abb1yFChXc/PnzbS88aDWmBCYlM2mPXfvmavWdsgqG9tU1xxs1anSwqjyABBIB4mDSpEmqQR458FLnR5IceCmMnHXWWXYv+s9VV10V2bZtm33nwIMlUqNGDRs/8BCKHHioRA48dCIzZ86MnHHGGZEDD5fIZ599Zt8FEB6ap/Xq1bO5qzn8/PPPR7p16xbJmTOnjbVu3dp/M8n7778fObCotHvZs2ePZMyY0X6+/PLLIzt27PDfAhBmB14cI2XKlLG5e+aZZ0Y+/fRTG9+9e3cka9askauvvtquAYSf1ul6LpctWzbyyy+/+NHY9u7dG7nwwgsjGTJkiAwZMiQyZ86cSLFixezv//777/5bAP5t5cqVi+TNmzeyYcMGP5JkwIABNl/1vA7+6Dk9btw4/41I5Omnn7ZxvXMvW7bMj0Yi48ePj2TJkiVSqlSpyJ49e/wogDDRu3ilSpUimTJliowaNcqPRiI///yzjWtut2rVyo/G9vHHH9vvCgBpY8uWLZFTTjklctJJJ0W+//57PxqJLFiwIHLiiSfafrjevfWpOf3iiy/6byT9Drj++uttXHP+q6++svH58+fbe7r25TZt2mRjANKG5qzmaIsWLfzIITt37oxUrVrV7msuR9OZmNbiulerVq3I8uXL7X29a9eutpdepEiRyK+//uq/DSCREJCBuNBDpHjx4pHjjz8+smjRIj8asYPWzJkzR/r37x/57bffbFF50UUX2QPlhhtusAWk6F5wwKONo+ChowXo22+/bd8BEC5Dhw61eaqNnmAuixaKBQoUsEViymCqjRs3Rrp06WLBV9dcc01k2LBhkX379vm7AP5NCqJYsWKFv0pOB6xjxoyJTJky5bDDGF137NjR5rj+6KVQh7UKxsiWLZv9DCD8HnjgATugXbt2rR85siVLlkRy5Mhhz3790bo/+nAXwL9Pa2nNx5tvvtmPRCIfffSRvVNXqFAh8vnnn9uGbb9+/WzO6t183rx5/puRyO23325/X+PVq1e3wCtd64Bo5cqV/lsA0sK6dev8T4d76623bK52797djxyyefNmO5CN9T4OIFzGjh1rc1n758G+mvbHNYeD57D22RV8qcCN7777zsZEiY6VK1e2v68/es7rU4FakydP9t8CkFYULKWAKgVfxaLn9amnnmrz9uWXX/ajSRRcVahQ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9lk/ekiPHj3sOd2iRQs/kqRBgwY2rj/58uWLTJw40d8BEBaa00899VSkfPnykXHjxvnRw7Vu3drmcvHixSMTJkyILF26NNKrV6/ICSecEDnllFMiP/30k/8mgLC5//77bf7ed999kZ07d9rY7NmzIwULFrTxV155xcYCq1atsn254BmeNWvWSM+ePSN//fWX/waAMNA7du7cuW3f7Ouvv/ajsWkOaz4/8MADfgRAmOzevdv2v/T81fmYnr0//vijv5uc3s1z5cplc7p3795+9JCBAwfavcaNG/sRAOlVBv2PAxMe+K/ceeedli2vjJzTTjvNMmKrVq1qZc/VN17ljQPDhw93zZo181dJsmXL5jp37nzEyEAAaeeGG26wrNogG0f2799vGXhqU6Se9NWqVfN3krLilYEzZ84cm9/KyFMJVUX1AwgPtSX54osvLIq/TJky7oQTTvB3krz22mvWp7pu3bpu7NixfjS53377zUohR2fkKNNHvak15/Wz/m0A/7+WLFniSpcu7a+SqFSqsmpU3UoVrFQlo1SpUv5uEv0eUJnkRYsWudmzZ7tLLrnExt9991336aefWjuyOnXq2LoeQHhofqs9wbp166yc8ZtvvukuvPBCfzc5VbM677zzrE1otEqVKrlXX33V5jmA8NF+mjLmlf0e/S4uuqcsW1XC0c8FChTwd5Ko7aCq4px99tlW2Q5AuChTXtUvtJeuatNHovW6vqOs+lmzZrkqVar4OwDCQJWp1C5sypQp1k5MLUlU2eq9997z30hO+2TXXHONrdG139ayZUvbP9MenKpr6HxNlXPy5s3r/waA9IiADPxPVIq8e/fuyfpRBg8iBWu8+OKLftTZoc9//vMfa3GiHvU60NUGkA5tAYSL2hHoxU+bPz179kwWdCHffPONHfRoobh48WIL2gCQGD7++GN36623Huw9rTYE6lfbuHFjuw5ce+21djA7evTog21M/s7OnTvd7bffbv3stQkM4P9X0BZM7UguuOACP5rkoYceskCMjBkzWhBlrAApbfZUrFjRWhZoozdlcBaAcFIQldbnesdW7/h69er5O4fTxu8VV1xhLQv03ZNOOskVK1bM3wUQRp06dbL3cAVcKAArpSDh6cYbb7Ty5gASgxKcFDCtdbkCLP6Jr776yoIyzjjjDLdw4UL234CQUGtPJT0UKlTIntdqNaQ1t9beagF8xx13+G8mp2RGJT7o70fTWn3ChAm0GQOOAcf5T+Af0UGtKDO2evXq9nNAkX2K1lfPWvWmDeih9Pzzz9sGUL9+/SxTh2AMIHyUdafAqo4dO7otW7bYwjIlZet06NDBsu1U5QZAYlAw1VVXXWXVLRRM2aRJE7d9+3YLolA1m2jqS6+e1C1atHCbNm3yo0emZ7wOewjGAP4dmnN79uxxd911l23wRuvRo4dt3Gpcm0KxKLiydevWbvny5RZkDSAxqO988+bN7WcFTh6JAjeaNm1q81wbwARjAOGn+XrccceluqbWc19zWZXs3nnnHT8KIOzWrFlj79/aEz8S7cspg14UvPHII4/Ymv/333+3MQBpT1UsChYs6J555hl7ZgdnXwqaatWqlduwYYP/ZnLly5d3K1assL+nfbkGDRpYYqSCrwjGAI4NVMjAP6Lyxap88e2331o2nTLj165de1gpY0UFasGoEqr6TtasWf0dZw8bZeGppDmAcIrOulPZNZVTS0kvgzrI0WaRfjeo7DmAcFO0vuasAiaD9gV6EVQFK0Xnp6yGoZfC++67z91yyy3u9ddf96MAwqR27dpu8uTJrnfv3q5du3Z+NInmeo0aNWztvWzZMmtfktKuXbususaqVaus0gathoDwmT9//sG2gQEd6Khdkd7HVe0mZZWcaNu2bbMqlqpUSSUcIPx0QKN2RAqiTq1suQ5o+/fvb9XutAenrHsA4aYqlWr5mbKqdLS9e/fafNaBbpA0sXv3bmtFVKRIEbsGEA5KXkr5nNazWc9oqlgBSA0VMvC3FFihahgrV650+fLls153qpChFiQp6ZBHJRZ/+OEHy7KPprLKBGMA4RaddZeyZ20gc+bM9gKpoA29TOqlEUB4/fLLL/bMVgWrIBhD1H5s4sSJNqdVDUPP9oB+D+j3wRtvvGEHvgDCR9Vs1CO+W7duFmAVTWt3ZdF+99137qmnnvKjyalnrTJ5tMGbJ08ePwogLJQhqzZiWm8rgCqgKlZqW6AsWvWr1mdq9DtC63aCMYDEoIqUovaBqSlRooQlP2mNr4NbAOF36qmnWlKjkqBSc/zxx9tzW+1JAnp+E4wBpA0FRX/44Yf+KrlYQZMKglbSIlWsAKSGgAz8LZUzzp8/v2XWKiq3a9euNj5w4ED7TEntDM4//3w3ZMgQ98knn/hRAGGkrLuU87RPnz72wqfMHGXcxKJKOTrAVRuE6dOn+1EAYfLrr7+6qlWr2jzXnFbLkpSUEf/ggw/a813ZswGVXHzhhResd/XflVUFkDZUkU7tAHVQe/fdd1ugZLQBAwZY+zG1GFMVjFgUeKVNX2XsAQgXlT1WYJWqVKZsLaRneuPGja1a3dNPP+1HASQ69ZYXZdmmFmylNb6q2KllcNGiRf0ogDBTW4PrrrvOgqWVFBGL1vJ//PGHJUwASHt6j1ZwdMrkh9RkzJjREqEUXKXE5JSthlT9CsCxjZYlSJXKm+oBki1bNvf+++9bufOANoDee++9w0qcB9SjVi+Hys6bNm2aHwUQJsq6U5T+ySefbIcx0ZlzmrdXX321q1Klips1a5YdzqakbPpXXnnFFpkAwue1115zjRo1soNWzfWPP/7Y30lOm7oK2FDgxYIFC/xoErUoYkMICC+9yqn1kKrgqD2gWg1F04bv9ddf7y6//HL3wQcfxHyeAwgvBVwp2UEVKFO2Ftq8ebNVvtLhjapannHGGf4OgESmPba33nrLDRo0yAKno+m5r/ahtWrVsuSpXLly+TsAwk77bpq/evf+4osvDsuw1z679tvVrkQHwQDSjoIiFfS4Zs2aI+6Nx6IKlgqmbtKkiQVoiPbj9F6ufyeohgXg2EOFDMSkiL1LL73UDlv1ghcdjCHDhg2zQI2WLVvaRlBK5cuXt4w9fQ9AOCnr7o477rCsu6A/ZSDIupszZ44d8MSiMqkEYwDhddttt9nze/Xq1dZnPjUKyrrkkktsU2jfvn1+NAnBGEC4aVNIbUdOOukk1759e+tPHU2ZeA0aNLCADbU4AJBY1FpIFatUMlmtS6Kf02o1pKqUCpK+5557/CiARLN7927Xu3dvf+Vc3759bb+tXbt2bubMmX40iQ54vv76awvIIBgD+PcpYUHP3C1btviRI9P81nu2XHDBBVZpVu/nN910kwVUBhR4qX9X87pZs2Z+FEBamTJligVjFC9e3PbGhw4d6u/8PbXxV9DFyy+/7GbMmGHBGEp6VNtBPd8BHLuokIGYgmybnTt3WjnkZcuW+TuHqDSqAjKUfTty5Eg/CiDsxowZ43r06OFWrlzpTjnlFHvxy5Qpk1W20QtiIPg9oE1etSahnDmQeNSmQJUv9DxX9mxqkfg65NHLoqpl5MuXz48CSBRqT9KmTRvb6EnZd17zWs9zbSDreU4faiCcdGgTXbEu2r333uuee+45W8NrkzfajTfeaH2qFbihFicAEofmvTJmlRmvKjjqPS9vv/22u/nmm61qrQ5w9RwfN26cmzRpkqtXr55V0ADw79PcVDDF7bffbkmMRxLMb62/v//+e3vG792716pJz54927LvlQilvbdXX33VAjQ0z2vXru3/BQBpQcelFSpUsPdoVbQI2vguWbLkH79L65leuXJlV7BgQWtdooo4+rfYWweObVTIQEzKtlFW/Pbt2+3QNlbk7wMPPGAZtVo0Tp061Y8CCLMnn3zSNnb0ovfII49YOVQFXSnbThu4yr4LBFl3+m7Tpk39KIBEUqxYMffEE0/Yzykr4URTlo4i9VOWTQWQGB566CHbNNKaXGvzaKqC89RTT1k7QsofA+E0f/58a02SWsatMubVfkzPclW3i6b39ty5c7uNGzf6EQBhEP1uLTrIiRYdjNGrV6+DwRiioAsdzKoqZf/+/S14WsEYNWvWtCBqAGlDQZBqXzBixAg3ffp0P3q46Pmt/fMg4FJBVhpToOXPP/9sz3Xtu+ldXEHVBGMAaU8V35W0qKo1CqDQM1pnZP9N9Rq9mytwS/OcYAwAASpk4Ij0Ejh27FjXp08f17ZtWz96iDaDlFFfoEABi/hV6SUA4aTFZMWKFS2QSi96QZm0TZs2WUnzTz75JOZcJ+sOCL+tW7e6N99801qTqE1JtWrV/J2k3peKzNdhz+jRoy0QK5qe3xdeeKEFa73++ut+FEDYKdMmuly55nK5cuXs+a7qdvnz5/d3kijDVlU02AgCwkfVL3Q4c6SMWz3D1YJIa3mVTo7uY60kihIlSvgrAGlN2e96fw6qyQ4aNMh16NDB9tBOO+20w4Ix1HYsFh0AjR8/3q1fv96e8Vrn/9Me9gD+f6xYseLgXrgCrRQ4Fe2fzu8NGzZYCyKt3bVXp8q1ANKe3plViWrp0qU2v3V8WrVqVVt/K/lB7YH/TtCmhGAMAMkoIAPYt29f5M4774wcWEj6kSS//PJLJHfu3JGcOXNGDrwA+tHkevTooaCeSNu2bf0IgDCqW7duJGPGjJFVq1b5kUMOvAhGChYsGMmSJUvkwMulH02iua/fAz179vQjAMJk5syZkXz58tmzOPjTrVs3fzfJN998E8mcObPN8YkTJ/rRSGTZsmWRM888M3LgJdN+BpAYfvzxx0jRokUj7777rh9J0rVrV/sdcNNNN/kRAIngr7/+ilx22WU2f6dNm+ZHk9N3ihcvbt95+umn/SiAMKpTp47N1UmTJkUGDhxoPzdp0sTmsdx999021qtXL7sGkFg0dzWHW7Ro4UeSaI5fddVVzG8gge3YsSPy5Zdf+qsk3377beTEE0+M5M2bN7Jx40Y/GtucOXMi2bJli5x++un23g4AASpkwChr9uKLL7Y/c+fOdccdd6ibjcqw3XHHHa5u3bpWLSMltTpQ/zxF/BPtB4SXShmfeeaZbsGCBX4kOWXjNWnSxKJ+P/roI7LugASgjPhKlSpZdo4q3KhS1YMPPmhzVhl4xYsX999MalnStWtX+/myyy5zJ510kkXqq4LGqFGjXJ06dewegHBTiyE9q9XTdvLkye7yyy/3d5z1pS5btqz9blB1K+Y1EB7Lly93WbJkOfjOrMy5GTNmuG7dutm1nt1qWxJUnwyq2UVT2XO1KNE9fYf3byCcggz6zJkzW8swvWe/+OKLB9+xZ86caftw7dq1s2sAiUV74WpJsHDhQsuaV0XKQMOGDW3+p1YZA0Bi0p6b5rWqy6pCbSxffvmlvatTGQNALIdO3XFMU2k0BV3MmzfPekxHU9nUq666yjZ1Va4pJZVUU29LHjBAuGkjKGUpxWi33HKLy5Mnjy0Yhw8f7keTEIwBhJN6WqotgTZ01V7oyiuvdL1797ae1QqsiqYyyeedd579rPLHf/75p7Uv+eyzzzi0BdLYBx98YOtx9ZXWBq4OamOJDsZQL/noYAzR33/ppZdcxowZ3f33329tTQCkPR3caPM26D0dlDFWG8EgR0brbQVnaJ6ndoijAGs9+3fs2GFtTgCE01lnnWUtC/QOrtaA0cEYovaCBGMAiUt74ZrXSmi8++67rU1JQMlOBGMA6Y9amah9mNoITpw40Y8mp7ZkpUqVIhgDQEwEZOCgJ5980p1yyimuU6dO7ocffvCjSYYNG2ZZt8rI2bRpkx8FEGaDBw9O9hJ46qmnukWLFtlBbSzK3lGVHGnbtq1bu3at/QwgnNRv9tNPP3U9e/a06PtAjhw57DNlf+nog9qdO3daT1ttFikbF0Da0TpbwVSff/65be7qWX3ttdce9hxOGYyhPvKxXHTRRe6hhx6y5/off/zhRwGkJc3tokWL2rNX81PBGArA0HX081obvapy8+yzz8YMzPrqq6/suf3yyy8frKwBIHz0Lq4DGyVEKIN+9uzZ/g6A9KJMmTL23F62bJl7/PHH/ahzJ5xwgv8JQHqivTQFYmlv7b777nNbt271d5xVjn/iiSdcvnz5LOGZYAwAsRCQgYOUbTNkyBA7pGnatKkfTaLoPmXcbty40bVs2dKPAggrzVdt9mqzNsi6q1GjhtuyZYsbP368XceiMso6FFImz9ChQ/0ogDD64osv7PPSSy+1z4AqWkmVKlXsM1r58uXdww8/bO1Munfv7kcBpBU9a++9914LtFizZo1Vr9FaW8/h/v37+28l0YHO3wVjBLQprMMfBWMCCAfN95w5c9pBrYIxVBlH7+DRtNEbBE/eddddVgkj8Mknn7ipU6daC0JVseTABwivpUuXWpsStTJQQJb22Hbt2uXvAkhESm5S4HQ0tQRVRRy1MtBaHUD6ocCKlEmNqmapCldKnnjkkUdsTMEY2mdTgoWkTI4CgAABGemU+sGrBLn6SKekB8l3333nr5JTufO6deva5pAi/qJps1g959944w03ZcoUPwogbDZs2GAvhSqDunjx4oMLwaBE8qOPPur27NljP6ekF8hGjRq5Xr16uc6dO/tRAGEUPOMVaBVQP2od+NSrV882hrQeUDl0BWAEHnvsMTsI6tevn1XZAJA2NFfVVkSBkDpkLVSokB3aDBw40JUuXfqw7PjrrrvOetL+XTCGKMBSAdUAwmPVqlUHN3WLFy9+WDBGQBu9ajO2YsUKV7NmTTdjxgz3wgsvuFq1alkJZAVZAwgnPdt1SKMKtNpTUwa9qk+uXLnS3tEBJC61DFNL7+iWgCeeeKI9o/V8VyBlysNbAOGh+RnrrCwWVbHTvrqe6ylpv/ycc86xua95r2AMrdlVGQsAjoSAjHRKJdPUh/rOO+/0I4eot90111xjveNjeeaZZyxzR//G+vXr/WhSdJ8eNHrgnHvuuX4UQJjMnz/fsub1Ujh27FiXP39+fyephHn9+vXd8uXL3YMPPuhHDxk1apQFa2l+q9UJWXdAuPzyyy+2uRsIDlsVcCGKxr/hhhtcwYIF7Vkualeg1gf6fRDQQe3zzz9vL6NaJ6ivPYB/V3QwxoQJE5I9c9WLWkEXWo+nVLJkSf8TgESid28FVSkgUhVx3n77bTdu3Dh/93A6uNUzfe7cuRaAoex6Pb9VBUu/IwCEz0cffWTP9p9//tlalQSJEcHBzYABAyywEkBi0jpc++TaL4+mypTNmze3vbiUFe4AhIP2v1RhrkePHn4kdQrGuP76612RIkVsPZ6SWoMq6FLPeVW2UzBGynd6AIiFN/l06kiHK+phdaTo/FNOOcV16tTJIn5VFSOaNpCUTUsfLCB8tLFbqVIlO5S95JJLXJ48efydQ3QAdMYZZ7jnnnvOonj1MqkMelW+0UavXiQvvPBC/20AYaFgjMsvv9xKIiqoShStr8OZp59+2l7+dICrzd/p06cfDMbS/Jbdu3fbZ0CHQcrwUS96VcoA8O+ZNm2aHdioik1qGzea83oea1NXvWipZgMkNj2v9bxVJUq1FDzppJPs90B0lm00tSxRMKW+q81jvbvrma33cQDhpH04tQtVhYxoes7r4Eb39A4evV+nKnavvPLKwTajAMJFbQR1gKskB7UiEs3nDz/80H4OqGWJWgV269bN9twltURIAP8+tRV5/fXXrSL0N99840cPFx2MoUDL1FqAKiFS+20EYwD4rxxY9CMd2rt3b2T27NmR3bt3+5FDNHbuuedGMmbMGFmwYIEfTW7r1q2RzJkz640wMnr0aD8KIGz27Nnjf4pEVq9eHcmePbvN7Ro1avjRwy1evDhSsGBBm9/6kylTJvssUKBA5Mcff/TfAvBv0rN54cKF/iq59evXR84+++yDc3bGjBn+TiTy4IMPHhw///zzIz/99JO/k+SNN96we2+//bYfOUTP+gMvl5Hq1av7EQD/hm3btkWKFCkSOe644yJz5871o4csWbLk4Do8+KNn+zPPPOO/ASDRPfnkkza377rrLj8CINHp+a15/dRTT/mR5Fq2bGn3H3/8cT8SiTRp0iRy/PHHR7Zv3+5HAITFunXrImeddZbN2zJlyth780knnWTXxYoVi+zYscN/M8nkyZMPfnfSpEmREiVKRMaOHevvAkhLffv2tfmpPxUqVIjs37/f3znkww8/jJxwwgmRM888M7JmzRo/eriBAwfav1OzZs3Irl27/CgA/D0qZKRT6j+tTHeVUPr111/dsmXL/J1DZZUO/Pdv0fmxemflyJHDeteq7UGLFi3c5s2b/R0AYaFqF2pNFFD7gt69e1sZtnnz5rkDi0J/Jzm1JFEVDbUqyJcvn2XUq5XJggULqH4DpJFbb73VsmlSCipjbNiwwbLkJXpuq6JVgQIF7GeVQ1YUf0DZea1bt7Z5rQj/lPSsV/btkUqmA4ifoFJN9uzZ3bBhwyyjRmvx6Ao2q1evttaCome61vCvvfaay5Ytm63J9XwHkPjUPlDr+FhZtjt37vQ/AUgkhQoVss+UFTICPXv2tGqVWvN37NjRWhwEVXD0nAcQHtozv/HGG92qVausva/aDb3//vtuxYoVVplW43r/jqYqGkEVytq1a7sff/zRnXzyyf4ugLQUVJEuW7as++yzz6xiRkraIy9WrNgRK2Po7z388MNUxgDwPyEgI53TwWz16tXdbbfdlqwsYoUKFWwTaNGiRVaqKRb1wdJGsMqzqYwigHBRoJRe9H777Tc/4qzN0GWXXea2b9/uRowY4UcPp80ibQArYEulkkePHp3sIBfAv2vPnj1WGjG6rGl0MIZKnKtFiUQf3mqDR0EVCrbUs17P9IULF7qRI0e68uXLu02bNllZRgVqxqL1ABvAwP8/BVHWqVPHXzl39dVX25xVC6LHHnvMxhSMoXZCmrczZsxw7dq1c2effbYFbOnvK4AjCMwCEA56V/6n5s6d639y7rjjjrO1uJ7fOryJfv4/8MADrkGDBv4KQFjNnDnTbd261V85lytXLmtHlFpAhhIh3nrrLZc7d25bsys4U2v9WIdCANKW3rE//fRTC7qIfiYXLlzYTZkyxZ155plu8ODBltgUTWv2IUOGWND1rFmzLFkSQNrTs1f0/C1YsKDNbQVWRTvvvPNsnz21YAxRqxKCMQD8rwjISOfUe1aRu4rkVQ/qaNrQVdSfeuEtWbLEjybRAa96VesB88UXX9i/ASBcKleu7I4//njrSR1QINULL7xgY+o1nVpfagDhUrduXcuInTZtml2nDMYoU6bMwZe9lNVvLrnkEvtO/vz5LdvuwgsvtEy7HTt2uDFjxth9AGlHG7P333+/mzp1qh3eBHQAo3nbt29fN378+IPBGPpeys1bbQSr2o0y8xRwDSDtKbD50ksvtcDHv9O9e3eb4wqaDJQuXdoqXX3//ff2O0Jze/r06e7VV18lWBIIOVW2uOKKK+zQRkFUypoXJT6kFpAh5cqVc4sXL3bPPfece+eddywAU4EaAMJFa3NR0GRKOthVQJWe2ykrTyvgUs907cuxlw6ER1AhQ/P1mWeesf23pk2b2li0vwuyePbZZwnGAPA/IyDjGKBNXr0kahMoutKFIveff/55y8rVwU2QlaPsO5VEVjllBWyUKlXKxgGEx+TJk20DN2fOnFY+UfM4UKJECZvvOsht06aNH8X/tXfn4TbV7R/Hb6QypiRz5jlzCkVKRQOhQUUyJclUGZrUk0akQUWZCamUMUWKlCFjMpOUDCEh89jv+dxnLfY5jobfg7M379d1ufbZ37VP/bXOXmt9P/d9A9FMLU3VxSIcH6JQ5KZNm46EMSS84YvskBHShtDKlSu9281TTz3lG8BK+yc2qgTAqROGMXLnzu3vIwMZGTNmtDfeeMO72Kl7RhjG0PmckAKXRYoU8e97xhkASU9hjKpVq/pYIY35/Cu6LteIArUy13kc6bHHHvNuVdrcVZtkFUToNeycAyA6aeSnQhWqktfGjjpaaeSYvqMXLVrk1/DHkyVLFrv//vv9u1+btwCiz/r16/381PmaGAWyypUr5wGr43WeBhA9wg4ZKkLW9+9tt93mYwMVngppVNHf0X+HMAaA/y+u/M8AmhGvG0VV1DZt2jTel4suIPWQWF0wNMNWD35UuTN8+HB/aKQWqgCiS/fu3a1mzZpeYacAlRK91atXj1cx+/DDD/u4ArVC/quHQQCig9L6+v5V2EqbszqnNVYsDGPI8TpkhHRcD4e18aOZ1NrQAZB0wjCGutSoW50qYL/55pvgaByds2FwStfpiYUxRNfvClarTbJC0wCSTmQYQ8FozZg/njCMoWt3jSpIeH+tbndqfa6/Bdr4USBDo01UZQ8geuk7XZXzam2usQb33HOPz5zXJq7+Rmh0sObUq4NO5PhgANFJoedwbLfo/lzP21avXu3vE6MQlqjz9JIlS/xnANEp7JCh72jRaCGtqZBR3936G6CgxtSpU/04AJwMBDLOEKrGufvuu/0hsNL7kV599VV/AKRUr0Yc6DOPPvqot10EEF2U3m3fvr1v3mikgf41btzYH/4oSBXSuKL+/fv7Q14FNjS6AEB0083f1q1b/XwWbbxG+rtABoDoERnGUNcLzZVX+FkzZxOOHNFndVwB6shudpGGDBniD4QVtgKQdBKGMVRddzyqmP2rMEZIAUp1uFKXHI0uU5dKANFHm7OJVc+WL1/eBg0aZHPmzPH3devWtXr16nmnjPr16/s5raKKcKMXQHRRaErPzdW16qOPPvK1MCSt7+/jyZw5s+XLl883cnmGDkS3yA4ZovP3lVdese3bt/s99u23325jxozxTrMAcLIQyDiDvP7665YpUya/wPz555+D1biqHD0Amj59um/gLl68mHZrQJRSaCpPnjxeaaMKWZ2/aneuB7nhqINQ8eLF7fHHH/cNHI03ARDdatWq5WMJEp7LoeONLFm2bJnfSAKIDgnDGGnTpvV1PdjduXOnjySKlDVrVnv55Zc9bKU51NrwiaSwtB4SlSpVykOZAJLGvwljiB78/l0YA0D0U1hKRRAaF5oqVSr/rk6s4EHjS3Qtr4pbBSm1qaPv7R07dngF7jvvvBN8EkA00fPySZMmHek+K3fddZd/d+s++3hhKj1rU5dLjSDq2LFjsAogGumeXM/Qww4ZohH+119/vY0dO9b/qYi5YcOGwVEAOPEIZJzGFLrQhWS4caMN2x49eviDYF0sJlShQgVr1KiRFS1aNFgBEE327Nnj7VD1YDd16tTBqvnPlSpV8hZrCSmQcckll3hog5QvEN3UEUNz5EeNGpVo9V1iHTIUxrj66qt9Azhh1T2AU2/06NGJhjFEa5JwbIloc0ftzTWqILKbnT57ww032EUXXeQjjcK/AwBOrb8LY+ieWx1uIjdpdc89YsQIwhhADNu0aZN3uFIHDAUjc+XK5YVMiVXD6ztaRVA//fSTv8+RI4d17drVfvnlF78mIFQJRBfdP+t7WwUR6mzTu3dvD0qLqudbtGhhGzdutAceeMDXIun3hg0bZjlz5vQudxo5BiC6KSwddsgQdbdRSEMUulSXDAA4mQhkxBi1UdNM+VWrVgUriVMYQyndr7/+2lasWBGsmt15552+mTthwgS/oQQQO3T+hzeMCWl0iW4YE9IDYD0wUrtk2h8DSUuhiQ8++CB4lziNLdmwYYPNnDkzWDkqYSAjDGNoXRU9GlUEIGkp4Kxr7YRhDNExnaeJBTJED4E1k17d7LSZE4YxMmbMaFOmTDlmjBGAU2fdunU+H75kyZLHhDHCDZzChQv7Zqw60+maXZXy4UNeALFJVfLavNHoUD1fU0fZihUr2rvvvmvbtm0LPnWUQhiqmo+k64Gw6h5AdFBHOlXHP/LII/5zYmMBO3fubEWKFPHgxUMPPXSk4FHP5PR8Xfft+hsBIDYokBF2yFAYQwGM8ePH28033+zf6a1bt/ZjAHCyEMiIIcOHD/c0vh4CqRWiAhd6MJRQGMbQF4zaLWlsQSRtCCn1p4tJbeICiA0aUVKoUCGfaam2pyFtxGrzVheQiSlXrpx16tQpeAcgKahduarmW7Vq5W2Pj6dOnTr+mtjYkjCQoQdBkWGMr776yq8PACQ9dbJQl5uEYQzR97iuy9UFIzEaSfbcc8/5Q15t+IZhDM5xIOmpMl6VsnPnzvWN2JCqYtUJQ+3MtRGrjnYvvPCCb/IAiG0KYeifQld6xiZnnXWW33crdJXY8zhVy0eOCAYQnZInT+7PzXV+q+hR1+kJaU3X9eo4/dprr/n1+HXXXWe5c+f2znUaKaxndABig0aKKWQZhjHCMSVjxoyxypUrexc8rQHAyUIgI0ZoZp1St7///ru3M9bF39SpU70l2u7du4NPHRvGuOaaa4IjR2XLls26detmW7du9c0hALFDs2f1d6BWrVo2e/Zs69evn916660+luSee+4JPmV24MCBI+l9AEnvhx9+8DEkanvctm3bYPVYBQoUsGLFiiUayFBlvf5pM4gwBhCbrrzySq+mO94YMVXlqJOGznPCGEB0UWAqS5YsPnZg+/bt/kBX1+YaHbhmzRofSzBr1izvZjN06FAfFwogdmnDVZs3Cbvi6Lpe1+QKYSWkQIaCWRpzACC6hd3pdI8+b968YDW+ggUL+ne77r91XqsgKgxfUvgExBZ1yNC4b3WmDcMYGkmkrnZ9+/a1VKlS+bhBADhZCGTEgM8//9wf+mjDVTNr9V6VsTVq1PB2ie+8807wSfOLwb8KY4Tuu+8+P/7xxx97tT2A2NC0aVNr0KCBV+pcdtll/l6tkZXm1XgSVepoPInWUqdO7Q+JASQ93fiJqmuGDBni4wyOR10y9KB34cKFwcpRCmGoXTJhDCA2XXHFFf56vLElqtZT2FLVdpzjQHRJnz69de/e3TdkdN+t63F9r2vTVkUPos50ClWqil6fUZAaQGxSwZMCGfpuDi1fvtzHF6hLhjrPJhSGNAhkANEn4fhfXWe/+OKL/rOuv49HXez0na9xRN9++61v6GrEoDZxAUQvfY9rZFhYsKjvdP0d0PO4MIwRUnGUOtsqqAUAJwuBjBjQsWNHb3usBz3qjCHaiHnjjTf8Z4UqQs8884x/7q/CGKE+ffr4hq1Gl6hVE4DoFdnefNCgQX7x+Oqrr3prdCX09bdh586ddtNNN/nfAVXs6O+GHhoPGDAg+E0ASUU3fqJqWX2Ha0Zt5OihSErrS+T3e+jSSy/1B0ds1AKxSR0y5HhjS0SzqhcsWMA5DkShu+++2++1e/bs6TOnmzVr5kGNSAplNG7c2MeYaOwogNixd+/e4Ke4EJY2YNURRzR2UNfputdW11nR97m+t1euXOnv1SFDBRIlSpTw9wCig4oX1YUu4TgCdY5WYFpBi8S6VEbSczcVRiX83gcQfcIu8ipoWrFiha+VLl3ag1QJwxghPVPX8zoAOFkIZEQ5dcSYP3++1a9f/5iHsnp/8cUXexVtSKldtVH7J/LmzeudN9RaVdX1AKKTAha6iNTmTEgJX6V31RVDfweU0Ne8uwkTJlijRo1s7dq1tmjRIjv33HPt9ddfD34LQFIJO2RoBMFTTz3lrc1VVZMY3STqYU9iD4QUpiSMASQdhZj/zWz4bdu2BT/FUeWsvreP1yEjxIMgIHrpIa42ZBWS1pixxISjBKdPn+6vAKKPNmY1Cjj02muvxRtPcvnll3sHynfffdd+/fVXD2NpU0fd7nQvLiqKUAfbcBSZAhtPP/20/wwgeihYpefn2oQNQ1aizVl1x9CzM40OVJgSQPTS+Rs5vl/fzwn3tRKO9C9evLiv6xzXSJLEwhgAcCoQyIhyGkkiZcqU8deEUqZMGa994r915513+ut3333nrwBOPs2n1Iasxg61atXqSDVNYhTGUIWNUrqqvIm0bt06D14ooa+RRgpvde7c2fr37+9z71Sdo9853px6AKdO2CFD8+Y7dOhgJUuW9Ora423K6mGuQlgJz1/NsCWMASSdO+64w/9pg+bvKCSp7+ENGzYEK3HUJUOha0YZALGpcOHC9sgjj/jP6jiZmHBswfG6YQFIWgcPHvRRvhoBqq4YCmOoe6w6UP7555/+mVq1avkm7fPPP+/hDG3mqoOd1kNhgVSWLFn8VffhAKJP/vz5/dmanqOpODGSRgUqSKXnawmPAYgu6k73xBNP+M8KY6gw+eGHHz7y3Z0wjBHZRV4jBTUiGACSCoGMKHLgwAGvtlErpZAqb+R4oQulAsN5tf8far8omTNn9lcAJ5cq27U58+yzz/p4oTfffNMDV5GVOaEwjFGzZk2fY6duGJHuuusuv8icN2+ebd261av0NKs6pAfAmnFbtGjRYAVAUgk7ZOimUDeBCk7pu10PgcN5lq+88sqRyvtwbMnftU0FcGrpunvWrFm+cfNXFMa45ZZbfHzY4cOHg9U4aousB0ZUzgOx68knn7T33nvPrrvuumAlPl2DS758+fwVQHTR9bg6S6o4okqVKh7G0HtVyqtiXhSy0DgDbfgoVK17dt2bh1Shq/t5dZ9VgQSA6KYwZdmyZa1v3742efLkYDVOu3bt/NmcOlJOmTIlWAUQTRSmVPGyRgGPGjXKwxgbN270Z+bhd7eeiycWxgCAaEAgI4roxq9ly5ZWrVo1/4IR/azq2apVq/r7SEr16qbw/7vZqv+uUoUXXnihz8IFcHJphMjNN99se/bs8ZmzM2fO9PS92pzWrVvXdu3aFXzS7MUXX/zLMIakS5fObxQHDx5sDRs2tAYNGgRH4rz00kv+kEgt2QCcXKqW103f8UR2yBA97NEDIW3YKHyl81Xv1RJZtGGrCj0CGUB06dKli1e+q9PVqlWrgtX4wjCGOlXpYW/27NmDI3HUIUP+bmwJgFNHRRG6H/+nnSPVGSPsNpmQAlcvv/yy/3y8zwBIeqqI13f0t99+692vIsMYIV2nlyhRwu+rR48efSRkqZFkt99+u48rUQeNsJgKQPTSearCCAWy1CEncuxBWDShVxVNRB4DEB10fuq7WlTEpDDGF1984WN/Q/reVgEkYQwA0YhARhS59NJL7bzzzvN0n75gRA96tCmjWdMJhVV15cqV89d/S/O11JpRiUHNtAdwctWvX99nz+tiUel7tT3t2rWr3+yp6uaDDz4IPhlXTf9XYYxIGntQqVKl4F2c8ePH+6bRjTfeSOAKOMn0YPbee+/9y3NN3+/qiBEZ2tCNouZP61x97LHHrF69ev4q+qw2dGfMmOF/HwBEB4Uh3377bX9Iqwe5CSUMY4RjCyKpilZ/EwhkAElPI4UUkqpcubJfk+uBbvhd/E+pa46u8UVdr/TfmTRpkt1zzz0+WhBAdNL3uQqdRCHpxMaRpUmTxoMYGhuoLpcqiNL3vK7hdc/dsWNHgldAlNE9t555J0YBK40QVbA6ssOsaKyozmkdU/gaQPTRCN+w07uutSPDGJInTx7fWwOAaEQgI4ookKFZ0p988kmw8tfC0SZ6ePT/ocp8za8uX758sALgZPn8889twYIF3gq1QoUKwWocdaoRbbyG7r//fhsxYsTfhjFkyZIlHqwKDRs2zG677Tbf8FErZQAnn0aAafNFVTWJUbVdhgwZjnTIEM2kVicsBToUwlLr1MjqOs221DE9BAYQPW666SYfG6bAhdoaR1Ig46/CGKLAla4FIv8eADj1VOGu8X/Tpk2za6+91rvNqSBCXasig9J/RZ3vrr/+esudO7dVr17dHxLrWkAhj3feeSf4FIBoo3P3ueee8zElLVq08Ht1FUskRue3umioqEJjQXXvrU6zAwYM8L8XAKKLQlLaqF27dm2wEp+CGApVvf766x6qjKRj6mZ5vJFkAJKOvrsVtlCBsa65e/XqZQsXLgyOAkD0S/an+mki6ijNO3ToUGvbtm2wciwlAH/55Rf/bGRbRVXSatSBvpQStlsEkDSUrldFjW72Ena10U2iNm/U8vSfPvyNpBtFbQTrb4Kqer7//nsPeCncpZEHAE4+BRx1DqZKlcpDUlmzZg2OHJU/f37foA1n0uoBrqpw1SpZ1Xn6G6GZ9CFV22bKlMk7ZakCD0D0UJiiSJEiduDAAT/ns2XL5usaQ7Z9+/ZjxpQkpPFEClXrQRKApKENm/fff983VTX+T7Qpq+tofacn3KRJjEIdzZs3t48//tj/HqiaXpu7+k4/55xzgk8BiEbz5s3zc12jQ4sVK+atz/U3oFChQsEnEqfAtMKVAKKTnqtpLLBGBkcWL0UKP6NCJv0tSJkyZXAk7j78nxRHATj1GjdubK1atfJrcI0lUTc6dZFndBiAWMAdRJRq2bKlPfzww0e6YCSkG0YlAPUgN2EYQ0nBgQMH2g8//BCsAkhqmzZt8tfENmnDObRqX/7/oVarars4f/58D2lpg3fq1KmEMYBTSBuzClPoplAbMYm54IILjowsCcMYGlOyePFi35TV5o02dkN6CKR51qrGAxBdVBmrqjqFLx544IFg1Sxt2rR/G8YQVe0RxgCSzsqVK300oKrjwzCGqF25ZlLr+D+h7lfDhw/3TpfqlqXrAFXZE8YAop+q4PU8Td/d6mgTjhz6u7o1whhAdNM9tEYLjRs3zjvIJubWW2/17/BFixbZCy+8EKzGIYwBRC91olOYUvtfGiGqALXuywEgFnAXEaU0s07JPt0Mqg1TQtp4VSV85EzaMIyhB0Fqb672awBOPYUv1O3i5ZdfDlbM2xbrX2IPdzSfUvLly+ev/5Z+T5U8+v/qn24mVaUP4NTSd7c2ckaNGuWbPAlpLIkq73SOhmGMQYMGeRird+/eXomTcI6tul0p9Q8g6SkQHenuu+/28SWaUa0qewCxQ2OFFIrWmJKENHv6nwSrImlDV2MNzjrrrGAFQCzRyCH9Pfjmm2/8+juSOuEpbAUgdvTs2dPvs9u0aXOkKCKSnrmrO4a+u3V/riIJALGlW7dufs2u52g//vhjsAoA0YtARpRSUv+RRx6xFStW+PiRhMIN3HA2dcIwhmbSA0gaGjc0YsQI69Chg7culvr163vHG40mSShsh6yE7/9Cow14CAwkHbU57devnz/cUacrVctGUiBjy5Yt9sQTTxwJY4RtFTV/XjeRr7zyir8PcU4D0UGz49UJR+OFIqlLVbp06bxtqs5vALFBAUlJ7NpcQWdtzn722Wc2cuRI27p1a3AEwOns1VdftcyZM9ujjz7qnSdD2tDlGRsQnVSsOHv2bB9ZcPDgwWDVfJygiqQ0ZrB169bBanz6ftdn1LVOI8cARJcvvvjCCx6156WipvXr1wdH4ih0pRDl7t27rVmzZsFqnC5dusQrlASAaEAgI4opiFGwYEH/8pg7d26wGifc5NUrYQwgumgetWZVaiRB5BzK41FQQ21PIzveAIg+etgTfv8eT9myZb0bjrrVtG3bNliNc/HFF/trwjBGqHPnzowwAKKUQtLanIkcTyIKR+thjyrvtGEDIDYocKHwdPr06YOVONOmTbNJkyZZ9+7d7YYbbrA6dep4N7rPP/88+EQcjTlRq3N12gBwetB4wTfffNN27Njh4wzmzZvnQWqd/+qIBSC6zJw50wPTepZ2xRVXWLFixY4UMIq6TqvbpEaLjR07NliNo44Y+qeCyO+//947ZQCIHipWuu6667zgccqUKf6MXed4wmvyGjVqWN26dT28oc44ovt2dc/Q7wFANEn2598NR0SSUrvEypUrW4kSJTzxG27uTp061a666iqrUqWKBzIIYwCxSa2SM2bM6K2R9cAnktL9a9eu5cYQiAIKY9x7772WP3/+RDtXhR566CF77bXXfO6sRpCMHz/eN3RE1TnPPvus31gmDGMAiE56qPvJJ594t5oXX3zRv5ffe+89D1+GdDul63IFLPXZG2+8MTgCIJb88MMPfu+tgJU6XVWqVMkDF2+99ZZXzmpsgUJY+/bts9SpU/t1/OOPP27PP/988F8AcDrQJq663oUUttYG0LnnnhusAEhqc+bM8e9pdaFs0qSJd7EbMGCAn6+6Jg9pjEHx4sW9o52epavwUcUT6lCp7/MlS5ZYsmTJgk8DiAbaD9P9tQqeevTo4c/hhgwZ4mOCVdD45ZdfWoUKFYJPm1+76zzXqwKU6kStjrX6W3D55ZcHnwKApEcgIwY8+OCDnvDTJs6TTz7pa3r4U6hQIX9odM455xDGAKKUWpyrcvbjjz8OVuJbtGiRXzQ+/PDDXokXUhjjrrvu8nNcHXJ0wQkg6WgUgb53VTGnc1LzZhMKwxjqgKGHQlWrVvWNG1Xe6AEQgNii1uXt27f3QJY2X9UKVTQiTBuzClSG1EGjZMmSfkzjDvS3QtcAarEKIDYoTKWW52PGjPFgRkgV8povr5bnr7/+uq+p05UqcxXGUFU9gNOHHpNqJJm65ZQrV87v1RW2BhAd1LVSwQpdnys4edFFF/m6nqGpG4bCGRpZElLASkErfV6bs999951fq0+cONE7TgOILup68fPPP/u1ts7bkEYJqoOVRg7qfjzymAqZdUzdMdTFbuDAgXbLLbcERwEgOrDDFwPUkkltzhXI0JeNaHNW64QxgOimijpdMPbp0ydYiU8Xl6IUfygMY6gtW61atQhjAFFAG6/anFXXC4UtFIyMFBnG0CaNHuxotIFuBpXiBxBbhg4d6hsw5cuXt5UrV9quXbu8k1WpUqW88ibhSCI9FH7mmWf8nNdn1Dr5vvvu88o7ALFB4YoJEybEC2PII4884vfdn332WbBi3jVLM6sJYwCnH1XL6zr+o48+skcffZQwBhBlPvjgA/vpp5/8vjsMY4iKneSPP/7w15Du31XoqI53CnCkSpXKn9MRxgCiizrf6PzVCEF1p4wMXEjt2rX9+3nNmjXeOSOSApQqatQIovXr1xPGABCV6JARI/TwRy3P1Y5JbZvCDVpV4KkaD0B02rhxoxUtWtSra1Ulnz179uBIHG3oqNJOlbUFChSIF8bQWISnn346+CSAaKDq2U8//dQ72mizVhKGMcJxJKq6UScNbdBqdmXCDR4A0UnhC40LU2XN/PnzLW3atMERs507d/r1uDpcRY4kEt1W3X///R7CTJ8+vQ0bNoyZ88BpQgUS6pKj8WMAACDp6Hpb1+G6z450880321dffeXf1QpSJrR3717bsGGDV9crnAEgemi8UJkyZaxOnToeutLzdI0MTEjda3PlyuXjihL+DQCAaEfZdYyoXr263XPPPTZjxox4CUDCGEB0y5w5s1fVb9++3VO8CWl2pSihTxgDiH7vvPOOjx/p1KmTrVq16rhhDNHn9Hlt0qpFqh4AAYh+esCrB7kKXUWGMUTv1QpZ53rz5s09eBVSRW3v3r3t119/9Ye9hDGA08O2bdv8obCCWgAAIGlpQ1bX3ZHGjRtnn3zyiXfDCMMY+u7Wc7bQueeea3ny5CGMAUQJjR8KKfycL18+GzBggBdIHI+619522222du1a74YBALGEQEYM0YaPNneffPJJW716dbAKINo1aNDAQ1Vjx4619957L1iNowpaWbZsGWEMIAaomqZLly5eJatRBscLY4R07utvgEYecF4DsWH58uX+WqxYMX9NSOt33nmnt0p97LHHgtWjdL2esL0qgOij8SQKVv2dbt26+cgyXasDAICklSlTJq+M19gSmTt3rt+T582b1zp37uxrev6WJUsW72oHIPpoLEn+/Plt3bp1/l5Bqf79+x8JTM2aNctfE1OxYkV/Df8GAECsIJARQzSf9o033vCUYLNmzYJVALFAVfKqqm3Tpk28VsdVq1b1V83BI4wBxAZt3mj8iM5lzZ09XhgjpC452qDV2CIA0enw4cO2b98+/zmsqtu8ebO/JqZu3br+qnnUGicIILYojKHZ0l988cWRc19UdRtpyJAhPsO6cOHC9uCDDwarAAAgqVxzzTX+qutwjQbVczV1v1CXu7DoKbw/D7vSAog+KnBQN/iQOsF37NjRf+7bt6+/JiYc5U+3GwCxhkBGjLn99tt943bSpEk+wx5AbFDrtZdeesk3d1q3bh2sxgUxChUq5DPpCWMAsUHtUXVzqIc+8+bN8/EEf0WBytGjR9tHH30UrACIJj/88IMVL17cg89StmxZf9VD3eNRNY+CG3oYpJFEkRu6AJLO+vXrg5/iKDC1ZMmS4F2cMIyhrleTJ08+EsLS9bjO7Ro1atgzzzzjn9HYUFXijhkzxr/3AQDAqaOxYYcOHQrexdFYQHW/0Ejv66+/3rJmzWozZ870Z2uhsLpeXTMARB91nNWztTBEFdJ44CJFiniH6enTpwer8WlfTPfhpUuXDlYAIDYQyIhBapmqL6x33303WAEQC1q0aGFXXnmlX1RqvqUozfv6668TxgCiWMIHQFKgQAHfrNm+fbs98MADwerxXX755Uc2fABED3Weu+GGG2zp0qVHwlXqgKMHu/q+1mzaxKiKXmHLRx55xHLnzh2sAkhKO3bs8PNXIUhRGEPnd/fu3f29JAxj5MiRIzgSN2te576u03VtrhDGFVdc4ZV7+t4HAACnhjZiFZg+//zzvdukRhmENBpQ39MKRKdMmdK/z/PkyRMcjRtjoKC1nr8paAkguigsHY4CVJgqsshJz8369evne1/qSqnxRJE+//xz+/DDD+22227z63YAiCXJ/vyv4GfEED04ypUrl8/bAhA7VqxY4S3YMmbM6BegCZPAAKLHxx9/7EEpjRrRgxw91KlWrVpwNC6ooaCFZtYOGzaM2fJADNJIMQUmNTZMXatC2sBt166dV+BpBrUeCEVq27atff31134trmMEroCk9+OPP9oll1xiGTJksN69e/v3soIUGkuiDR09+lClrALRCcMYIX1m9uzZ9vPPP/vvlipVKjgCAABOhTlz5lilSpXswIEDVrBgQe9mp58HDBhgDRs2DD5lduedd9r7779v1157rQc2FLZUGLNBgwa+waufy5QpE3waQDSYOnWq32Pv3r3bw1YbNmzwjjd6rpYtW7bgU+Yjv9UFJ3v27F6crGv8Tz75xMNYF154oX9evw8AsYRARgzSxlCJEiWscePG1qdPn2AVQKzQ6JLHHnvMmjVr5htBAKLPK6+84pXvStyrMkcbN2qJ+P333/tDoZDeX3rppXbeeed5yEptzQFEP40QGzVqlC1btsxHHKgbRqT9+/d7G9X58+f734KwQ518+eWXVr16dXv00Uetc+fOvgYgOrz88svWvn17/1ltjMMwRmjixIlWtGjRRMMYAADg5NN1tgIUzZs3D1aO0jaF7r/V/UKh6MKFC/s99zXXXGN79uzxn/Ply+ef1XsFND744AO/V0+bNq398ccflipVKhs6dGi8sDWApPfbb7/5Oa1AhTrSqfBJ3TA0AlT/Ive51MlSIQx1vImkkNXw4cPpXgcgJhHIiDGqwlNLJl10am49s/CA2HPw4EGvqtcmjx4SX3311cERANFgypQpVrVqVbvjjju8Ckcz48ePH+8p/ocffjhe63PRjMvnnnvOK3QSbuoCiE716tXzh7caXaB2xup4kZAq5MuVK+fhDQWvatSo4S1TBw0a5Ju5qsqJ3OgFkPS++uorq1Kliv+sTldsxgAAEF0UatboXm3OpkmTJliN89133/l194IFC6xYsWLBqnk4o2bNmv78TM/RIrvXqWpeAQyFrIsUKWKtW7f2VwDRRc/OXnjhBVu4cKEHpEM33nijd6jTfXckjSe5/vrrff9r4MCBHrpS4BoAYlXy4BUxIl26dL4xpC8kwhhAbFKbZCWAU6RI4V0yVB0AIHo89dRTnsR/9913/TtXNINeIwnWrFnj7yPpplI3k0rp60ERgOinB8F6kPvRRx8d8+AnpPGAGkuiB7pqnawRRn379rWLL77YQ1qEMYDoooe7N998s2/gaKa8xg6pHTIAAIgeutfeu3evffbZZ8FKXPc6FUCsWrXKw9KRYQxRMFoFEOpcmbBbtH5PI0RVWNGrVy/CGECUUqdJdX2PDGOIuk8qoJXw+fh1111njRo18rGEs2bNIowBIOYRyIgx+tLS7DxV6wGIXZpHrYfEOp+V8gUQHdTiVLNmNRZM4anQ2rVrvW1q7ty5g5Wjzj77bA9ZqU3qiBEjglUASU1VcpF0bmu0kKgV8uOPP+4/q13q8RQqVMg3eUePHu0jxxS80vhAtVoFEF30Ha2W5gpSaTygHt4qNAkAAKKHwpMKTqqTVWjChAkeeO7SpYtly5YtWI2vR48ePuqgQ4cOtm7dumAVQKxQEEujSBL69ddfvdhBfxcS0jhhjRJW4ZQCWwAQywhkxCBV1QOIfarO1UYuFfVA9NCIAk1z04OeSLr5UzX93XffHazEV758eR9j0Lt372AFQFLasWOHVa5c2YMUojCGOt1EjhxSIEMVeppFHVmhl5CuvdUiuWPHjla3bl3vlgMg+qibpM55PdB94oknvLpWLdHVAhkAAESHDBky+OgRjRoJK+Lr16/vY0P1na3CpcRkypTJXnvtNdu+fbs98MADwSqAWKEC45UrV/pI/tCGDRu8wEmdbiJHEYX09+Ktt97yrnf33XefP68DgFhFIAMAksh5551nF1xwgW3bti1YAZDU0qdP76+aXRtS21N1stHNX9gisWHDhsc8BNJDJDZqgeigtsfqkKHzVB0wFMYoUKCAvfzyy8En4rrb9O/f3wMXbdu29S44AE4P4fmth7ZNmjSxAwcOBEcAAEBSq127tgcrNMIgpFEkadKk8VGB2rRNTL169ezGG2/0wqb33nsvWAUQC1q3bu1dMHQeqyBi4sSJ3t1OYQsVQUWK7KShvxe33XabjyzSCFEAiFUEMgAgiXzwwQfelk0XnwCiw8UXX+ztEDWDVtU6PXv2tAcffNDn2KoaJ7R8+fJ4oQ0A0SVv3rzWuXNnr7jRzGmFMb744guvnI+kKp2HHnrIz2l9HkDs0Dl9++23e5WtRpQkHFN02WWXWZs2bXzskEYORVKIUu3RAQDAqVerVi0f+Tly5MhgxSxPnjz2/PPPe5jy6aefDlaP9fbbb3tXrFdffTVYARALihYt6s/YfvnlFy+YqFatmq1Zs8ZH/+p+XT766CPLlSuXpU2b1q6//vojRYxvvvmmFzW2b9/etmzZ4msAEGuS/fcihz4/AHCK6aZTD5CLFCli06dP95tJAKfWxo0bbcCAAf6qG8MGDRp4hwtVyqvF+eWXX27ffvut3ygqQKUbQjl8+LDPta1QoUK8B0gAostXX31lVapU8Z81o1qVNYnZs2ePlShRwn766SebNWvWkU44AKKX5km3a9cuXttitTTW9/V1110XrJhX3BUvXtzWrl1rM2fO9PP7008/9erabt26+X8DAACceldccYWtWrXKA5UKZ4jutVUMMWPGDK+ej/xOj/T+++/72FBt3AKILQsWLPB7dY397dChg48FFY0cfOGFF/y5nMIXKq7Qczp9TgYPHmzz588njAUgZhHIAIAkoItKXXRq01cXmQBOLbVGVcvDrVu3+nu1Nv/jjz/8xk+da/Lnz+8tEu+++26/6dNIg5BaoKv9ucIcGl0CIPqoIr5ixYr+kHbFihWWM2dOX0udOnXwifj0QEhV9qVKlfJQxllnnRUcARBtvvnmG7vqqqusbNmy1qNHD//OHjJkiHXs2NE3dPQdr9BkaMqUKT6XXgFonecKZFx00UX+N0EjBAEAwInVpUsXD1YodHE8GiWoavevv/7aPxtaunSpByjVuVLf1WFhBIDTx++//+6FTjrHdc+uEcF69qYOluqSkSVLFu92p+MqosqYMWPwmwAQuxhZAgBJQDeW7777LmEMIAnMmzfPatas6SELtUvURo3OR4UxRDd+vXr18p9VTauqndDo0aOtZcuWXm2ruZcAolPu3Ll9JJge8GqUwY8//midOnUKjh5Lm7v333+/V9x07do1WAUQjbTJU6xYMf/+VnXshRde6N2thg8fbvv27bM777zTO2OE1ClH86Y1imzUqFE+0khVt4QxAAA48VSApOtuFTHoe/l46tSp468Ju06qk6x+X93rdB0P4PTz22+/+d8HjS1Rx1qFMfScTtf3KqZImTKlB6kPHTpkP//8c/BbABDb6JABAADOGAcPHvQKeLVFVRW8qmqPR/Nr9SBI3TNUWasbRv2OAhtqoaoNXwDRT5uwZcqUsWXLlvm5q6qbxOzYscM3edVFQ5V5yZIlC44AiAZz5syxggUL+vevgpQ33XRTcOSoBx980MOWL774oj366KPBapzt27f76BJt9ISt0QEAwIn35JNP+v20AhUaQXA8JUuW9Gtwhacj6b5d1+zhaINKlSoFRwCcLhSofvPNNz10oQ4Zb7/9drxr9MqVK/szOHXIIEgN4HRAIAMAAJwxxo4d66l7zZzUzd/f+fzzz+25557zThlK6Ot31VpVrRUBRJcDBw544EIPdRNu1OpBjkYYKHAxd+5cP58Towe+2uxlHjUQXbRRo2CVqmk/+OADfzCbJk2a4OhRW7Zs8fP3/PPPt19++SVYBQAAp5Iq3zV2ZOXKlTZ79mwvikjMM888Y//5z3+8S13Cz2hNIwvy5MnjwYxUqVIFRwCcLtasWeNdMjSaJHJsqJ7FXX/99R7U6N27d7AKALGNshAAAHDG+OKLL/y1Ro0a/vp3rrvuOt+g3bNnj+3cudOGDRtGGAOIQgpNFShQwEeP1K9fP1g9Sg9z27Rp4w96XnrppWA1jj4/YcIE/1m/TxgDiA4KWYUuvvhiy5cvnw0YMMB27doVrB5L86Vvu+0274Tx/fffB6sAAOBU0jhQjQs7fPiwjy5Rx4vE1K5d218//vhjf42kQEf79u292922bduCVQCnE3XFUDecyDCGxhU1aNDAsmfP7qMKAeB0QSADAACcMVQ5K6qcPZ7p06fbE088EbyLQ2tzIHrpnNV8WenWrZv16dPHf05I3W7y5s3rr6q4k08//dSGDh3qQQ0A0aNXr152+eWXB+/MH9L279//yMNadb05nooVK/qrHuYCAICkoe/jFi1a2Lx587zLZGJKlCjhgcuRI0cGK/E9/fTT9vXXX1vWrFmDFQCnkyVLltjkyZOPBK51n16lShUviho/fvxfPrsDgFjD7gIAADhjZMqUyV9/+OEHf03MN99843Nu1ToRQHQ43pRFda654447rGDBgv6wt127dl4dn5jUqVNbv379vEJPAQ5V5Olfzpw5vRUqgOjx+++/+wPZ3377LViJmzPfsWNH/1lVt8cThigjK+0AAMCp9+KLL3r3OY0mWbFiRbAan67HFy1a5ONNElKnDV2rAzg9qTuGOtsVLVrUu1Veeumltnv3bu9gqcAWAJxOCGQAAIDT0ubNm/3GLlLlypX99f333/fXxGTIkMFfIzeBACQdtTlOly6dTZw4MVg5atCgQbZu3TrvcnHBBRcEq8enahtt5Kr18ahRo7xjhv675513XvAJANFAVbUpU6Y8Zl58p06drEiRIvbee+95d5zETJo0yUMZanUOAACSTtq0ae2dd96xvXv3WtOmTRMNWYdjS47XJQPA6euRRx6xOnXq2C+//OJjSFVsoUKLyE55AHC6IJABAABOO2pvWLVqVWvWrFmwEuemm26yLFmyWM+ePe3HH38MVuMLRxeE3TQAJC21KlUL02+//TZYOUprF154oV1yySXBShz9joIcjRs3Pma0QaNGjWzDhg1eiad/hQsXDo4AiAbjxo3z0WEKSil4oQBVSJWy6nSTLFkyq1u3rj+8jfT555/bhx9+6J1yaG8OAEDSq1atmt1zzz0+ekQjyRKqUKGCf2cTyADOPOeee6599NFH3h1v27Ztfu2fI0eO4CgAnF4IZAAAgNOOKmrV2vTTTz+1IUOGBKvm1bbPPfecV+hos0bBjUgKaQwePNguu+wyWqMCUUKdLLp06eLVMwmpK4a62cyYMcPfq2JelfUKX/Xv398GDBhgV1555TGV9NroLVas2JHRBgCiQ/fu3a1mzZq2YMECO3z4sI8Tql69uh06dCj4RNzGTcuWLb0Lln7Wg1uFKV966SWrUaOGb+r06NEj+DQAADhVli9fbl9++aX98ccfwUqc1157zS666CJ79NFHjxkNqpDlLbfc4kHr9evXB6sAziTqVJuwMx4AnG54AgkAAE4bP/zwg7Vp08ZuvPHGIxutbdu29fElIVXM16pVy2fTX3/99bZs2TLf6NGDI3XVUFjjjTfeCD4NIKmpXWmHDh0sderUXjmjTdqQzmcFra6++mrLkyePXXHFFd4R48EHH/Rz+4MPPvDWyE8++WTwGwCilb6H27dv75syv/76q//TOT558mQbPnx48Kk4L7zwguXOndtHFt19990+Y/qxxx7zoJU+nzlz5uCTAADgZNN3tu6t1XlO99Qqbvjkk0+Co3Ehat1j79ixw5o3bx6sHqWxJbpmVxAbAADgdJTsvxc7xw5vAwAAiDHagNEmzr59+6x8+fL+Onv2bN+8vfPOO72CNqQHQeqQMXHiRH+vDd0DBw54Il8dMnQMQNJZuXKlFShQIHgXR50wrrnmGp8/3bp162A1bjxJu3btfGO2SpUq9p///MdKly4dHDWvrp8yZYqHrQBEr0qVKnllrLpdKIAlu3fvtly5ctlVV11lI0aM8LWQxpNo8ydv3rw2cOBAn1Mfee4DAICTT2MG1GFSnS/U2SpdunQevlCBxOrVqz2MEVJhxOjRo/2eW2NMdH2ucWQHDx70Dhply5a1SZMmBZ8GAAA4fdAhAwAAxLwNGzZYnTp1LH369F4d/9VXX9nMmTNt6tSpliVLFq+sHTt2bPBp84dE2sTVgyCNNtAGjjZ558yZQxgDSGKaLV2yZEkPZUTSQ91NmzbZ448/bj/99FOwat4RZ8mSJbZ9+3Z/wJtwQ1ZtkDWbFkD00ggxjR7SuJIwjCH6OQxqJHTddddZo0aNfNyYvvsJYwAAcOqpM53uxxWAVhBDXaxefvllH1vy2WefBZ+K07NnTx8dqHD1Rx99ZLfeeqs9/PDDXiBx8803e0GFwhkAAACnGwIZAAAgZmijdujQocG7o55//nmvzNExbeSGNL5gzJgxvhn7wAMPxJtlmyJFCq/KGTdunM+r7dOnjxUtWjQ4CiApqLWxHupqc1YhqchmfmGr4127dlmzZs2C1b+2dOlSr7KrVq1asAIgGmnzRePDdH4npDboxxtB8sorr1jWrFntqaeeslWrVgWrAADgVFBXjPfff9871KlLZah48eL+Gnn/LdmyZfNQhu7dVQihIgkVUEi9evVs5MiRdtZZZ/l7AACA0wmBDAAAEBMUxtBGbeQs2pBmzRYqVMhbmidUrlw5n0mvcQYdOnQIVgFEowwZMhwJYajDjc77SLfffrvPmNaoggEDBgSridPmrKrtVXH3zDPPBKsAopE6V+l7XNWyGisWUqBKHa9UNZsY/c146623fLSJ2qQzkRUAgFNn2rRpHqjUKJJI06dP99cSJUr4a6S7777bgxiNGzf2jpUdO3b0dY0Z1HhCAACA01GyP3liAQAAolwYxtCseI0k0JzZSBplUKVKFfvyyy+Dlfh+//13y549u+3bt88mT56caHADQNLTA92MGTN6xfuWLVt8rvTixYstZ86cwSfiquWLFCnio0g0qiSsqhONK3r33Xd9c1Z/K/bv3+8ji9QOGUB069u3r4cqtBnz0ksv2ffff+9tzHPlyuUjxc4++2z/3IEDB+zw4cPxrgUU1hoxYoT17t3b/xsAAODke/PNN61Vq1YehM6bN6+vqWtGqVKl/Pt73rx5fs2+c+dOv87XuBIAAIAzER0yAABAVPu7MIZolMFftSrX8csvv9wrZ7VRo01eANFHo4SqVq1q69ev91EEqpS///77g6NxFMDo3r27bd261Vq0aBGsxlm4cKH169fP3nvvPcuRI4dNmDCBMAYQIzSmqEGDBh6uvOyyy/x9pkyZfPSYwhjayFFLdK2lTp3a2rVrF/xm3IaQvuvVEUthLgAA8L/bvn27B51DCkbrezmk72RRZztRIYS6Wul3dE2uMIb+Gwpi/F13OwAAgNMZgQwAABC1/kkYQ6688kqvxJk1a1awcizNn8+fP7+tXLnSunbtGqwCiDbVqlXzedO5c+f2kSOffvqpd72IpBbH1157rc+ZVlV86J577vHN3O+++86WLVtG22MgxgwaNMjP+VdffdUuuugiH1mivwWqrL3pppt8/JCCW2nTpvVgVri5o+94/U6jRo28yw4AAPjfNWvWzJ544gn/WWGMq6++2rtXhQ239V6hi549e9ovv/zinSiXLl1qQ4YMsTJlyvhnND5Qna02bdrk7wEAAM5EBDIAAEBU+qdhDLn33nv99emnn/bXxKxevdo6dOjgm73h5wFEH52jMnHiRP87oIq6hx566JiHuBpNkCZNGmvZsqV3yxB9Vg+GS5Ys6Q+HAcQezZAvUKCAd8W4+OKLvWNO5cqVveONAhdr1661RYsW2bnnnmuvv/568Fvm3TUUygAAAP+7gwcP+ujAHj162KhRo/wae+PGjfbhhx8euc5WeLJGjRo2e/ZsK1asmP388882btw4u+222/y4hEUT+fLl81cAAIAzEYEMAAAQdT777DMPYxQsWPAvwxj79u3z11q1ankFjn6vT58+vhZp/vz5Pn9eGzz6jObZAohOOj917mvzNVu2bF4FrxEECl5EypMnjz3//PP+YFiBDQCnj3Xr1nnwQqNLLrnkEv8e79y5s/Xv399SpUplOXPmtCJFitiPP/4Y/AYAADiRzjrrLB87IrVr1/Zr7i+++MJKly7tayFdj6sLhkYNDh069Ei4Wvbv32+PPfaYpUuXjjGCAADgjEYgAwAARJ0rrrjCcuTI4eNF5s6dG6zGt3DhQitevLht2LDBK3S0SaOZ8tq0jRxvoM2a22+/3Td5NdoEQNLSCAI9nP0repCrEJXmUDdp0sTHk6gaT9V5kVq1amUVKlTwMQfqqAHg9HDXXXd52/N58+Z5Bxyd4506dQqOmm/6LF++3IoWLRqsAACAE0330BoLJhoNmDCMIQpOhh2rWrdubTNmzPCf1S3jxhtvtJkzZ1qXLl0sQ4YMvg4AAHAmIpABAACijipo3nnnHZ81q83YsBNGSGGMqlWr2rZt2/yfaETBwIED7dChQ962vHDhwv4ZbdboYZCqe1TlAyDpaASJxhBVrFjRVq1aFaweS4EMnf8Kb0g4nqRFixZHznlJnjy5n9uFChXyfwBOD7oOmDJlig0ePNgaNmzo3+uRXnrpJdu9e7dv/AAAgBNvz549PqZk7969HszQdbzuwxPzwAMPWNeuXW3NmjV+nX/++edb7ty5vaOGxobqOAAAwJks2Z//FfwMAAAQVVSFM2TIEHv88ce9FaqEYQzRAx51yYikDVxt2qq7hmTPnt03c1WdAyDpbNq0yTvfHDhwwN+nT5/e+vbt6x1sEtq1a5ddcMEF/jdAnxHNr27Tpo01btz4SPvkkEJbxxttBCB2aVOnadOmft6Hxo8fbzVr1vTg1ieffBKsAgCAE03fv+pIp0D0Nddc46PEpk+fbilSpAg+Ed+iRYusZ8+etnjxYsuaNav/vsLYAAAAZzoCGQAAIGpt2bLFO1xobMGsWbO8w8VfhTFCqqxfsmSJb/yqhapm2gJIegpXvfjii1asWDH7448/7JdffrHmzZvbq6++aueee27wqTh66KtglT4jOq8rVarkD4E///xzH2MC4PSm9uaqzh05cqS/HzZsmAc0ChYsaFOnTvVgFwAAOPmaNWtmffr0se7du9vDDz8crAIAAOCfIJABAACihirh1RpVVTihDz74wOrWrevBjM2bN/vaX4UxAESH/fv3W/369b2bhcYPiDpZaLzQTz/95N1s1Np47NixvqZzXZusIc2afvTRRz1cVaRIEV9btmyZlSpVyrJly+bdcjTGBMDp67rrrvO/FZpZr5Fk33//vV166aXeGeOiiy4KPgUAAE627du3e6h669atfh2eN2/e4AgAAAD+TvLgFQAAIMm9/vrrNnDgwOBdnDvuuMNuueUW35Q9ePAgYQwgRmjD9MMPP7RPP/00WDEfK6KAhsIaHTt29Kp3Vdnp/C5btqwNHTo0+KT5OAKZMGGCv0rhwoXt6aef9m4ZeigM4PT29ttvW4kSJWz+/PneLeexxx7zzhiEMQAAOLF+++03a9mypYefa9eu7aGLSOedd5716tXLdu/e7d0yIilI/fLLLwfvAAAAkBAdMgAAQNRQNbxmw6sCNtKGDRu8Q8bevXvtu+++s0KFCgVHAEQrjSTJlCmTP9AdPnx4sBpHXXDefPNND2G1bt3aZs+e7Z1wVq9e7bOm33jjDUuVKpXPni5Tpoz/XQgpmLVx40bLnj17sALgdKcOWeeff76PLgMAACfWpk2brEKFCvbjjz8GK+ad6KZMmeKdqSLdeeed9v7779tbb71lLVq08MCkOlmVL1/exo0bF3wKAAAAkeiQAQAAosKcOXN8UzZnzpz+QCiSNmVVcaNARpMmTbw6HkB0S58+vVWtWtXDFBpVEunFF1+0XLly2eOPP24///yzlStXzivgb7vtNuvfv79ddtlltnTpUrv++uvtq6++ivf72pAljAGcWRTuIowBAMDJoXvsX3/91fr06ePBZ3XC0L33rbfeajt27Ag+FUfB6cyZM3vAumbNmn4dryB2p06dgk8AAAAgIQIZAAAgyb3yyit2+eWX25dffumbt3ny5LExY8YER+PoIdG1115r06ZN82ocANFP3TH0EHfSpEnBSpy0adNa7969bdeuXUdaHqsNskac6Pz+4Ycf/OGuKu7UFvmbb77xzwAAAAA4cdShTp0thgwZYk2bNvWxYM2bN7dnn33W1qxZ42MGIykkOXbsWA9I61XBaV3D634eAAAAiWNkCQAASFJ6eHPHHXfYjTfeaC+88IJvwDZq1MgOHTrklfPp0qULPhn3sKh48eKWLFkyW7RokVfYA4he6najDjc6p/v27RusHtWwYUMbNGiQDRw40O69995g1WzBggX+d2HFihX+XuOM1FUDAAAAwP9O99sqjLjkkks8dJFwbKiOK2Qxb94871hXqVKl4Eic/fv32/Llyy1//vw+ahAAAADHRyADAAAkmQMHDljevHl9w1adL1KmTOnrYUhDG7UNGjTwtdBrr71mDz30kI8ymDBhQrAKIFpVrlzZli1bZhs2bLAUKVIEq3G2bt1qRYsW9Qe6S5Ys8fbHoZ07d9oDDzxgX3/9tT8EJoAFAAAA/DvffvutnX322Va6dOlgJY7Gk6hT3V133eXvhw0b5q+RFJK+9NJL/Z5dP5977rnBEQAAAPwbjCwBAABJZvbs2bZ27Vpr06bNkTCGaFZtmjRpvOImodatW1uFChVs4sSJNnjw4GAVQFJQtlvnr4JTe/bsCVbj09iSzZs3Jzp25Pzzz7c333zTfv/9d2vZsmWwGkdjTd59912v1iOMAQAAAPw76lZXrVo1a9y4sR08eDBYjVOvXj3Lly+fvffee/65xJQsWdI6dOjgXeuefvrpYBUAAAD/FoEMAACQZMIHP9p4jXT48GFLnjy5hzIS0nq/fv2sUKFCdtVVVwWrAJLCwoULrUePHh6cmDp1arAaX506dfx15MiR/pqQAlj6N2LEiEQ/kz59+uAnAAAAAP/URRddZFWqVLHvvvvOunbtGqzGSZ06tXfJ0DhQdatUQDoxTz31lBUuXNi6d+9uc+fODVYBAADwbxDIAAAASaZgwYL+Om7cOH8NaWTJjh07fNRBYooUKeItU6maB5JWsWLF7P7777d7773XH/YmRuepWiQfL5Ahb731lnfLePDBB23btm3BKgAAAID/Ra9evSxDhgzWuXNnHyMY6eqrr7b77rvP9u7d66NBE3POOedY3759vTOertUBAADw7yX778XUn8HPAAAAp5zGj8yZM8er42+55RabMGGC1a1b10qUKHHcinsAseXZZ5/16jqd62XLlg1W4xs4cKA1atTIHnroIXvllVeCVQAAAAD/C3WYbNq0qVWsWNG+/vpr7zoZ+uOPPzxkvWXLFh8VmD9//uBIfO3bt7drr73WR6AAAADg36FDBgAASFJ6OJQqVSqrVauWnXfeeVa9enWv4NEsW1F29J133rErr7zSbr75Zlu8eLGvA4gumzdv9i4ZGzduDFaOCseWfPzxx/6amIYNG1qzZs2sTZs2wQoAAACA/1WTJk2satWqNn36dO9MF0njAd9++23bs2ePhzaOV7vZrVs3whgAAAD/T3TIAAAAJ92oUaPsjTfe8Oqb2267zdq1a2cpUqQIjpotXbrUK+LXrVtn8+bN8yr6HDly2O7du+3uu++20aNHB580y5w5s39e4w0ARI8hQ4bYPffc4+e4xg4lVKhQIT/vlyxZEqwAAAAAOBVWr15txYsX959V5JBw/Gf9+vVt6NChHtho0aJFsAoAAIATIcV//iv4GQAA4ITr3r27V+ToAdD69ett0qRJtnz5crv11lstWbJk/plMmTJZzZo1vcJe3TH0MEg/qwLnyy+/9A1ehTLSpEnjI03SpUtnlStX9t8FEB00ZkgtkD/55BMrWbKkFSlSJDgSR4ErhbPuuusuu/DCC4NVAAAAACebChpSp05tY8eO9YC0gtSRrrrqKh8h+Nlnn1m9evW8eyUAAABODEaWAACAk2bWrFnWoUMHnzWrrhaqxKlQoYK9//771qNHj+BTR02dOtU++ugje+qpp+zSSy/133/88ce92l6zbPXfEq0DiD59+vTxB72qqtu2bVuwGqd27dr++ldjSwAAAACcHK1bt/b78YkTJ9qAAQOC1TgZM2b0e/QdO3b4GEEAAACcOIwsAQAAJ03Dhg09hDFt2jQ7++yzfW3Lli1eSb99+3ZbuHCh5cmTx9dl5MiRdvvtt9uhQ4d8tEHv3r2tcePGwVHzz+t39YDonXfeCVYBJAV1sVHHGnW0iaTxQ4888og1atTI+vfvH6yaz6POmTOnZcuWjVAVAAAAkARUKFGqVCnvPqlOGVmyZAmOxKlVq5Z3ydCxvHnzBqsAAAD4X9AhAwAA/L8cPnzYZsyYYfv27QtWjvr222/tiy++8NEkjz322JEwhqjyRnNpd+3adUzljSro9Tt33HGHd8aIDGOINnqlQYMG/gog6eg8bNq0qZ+zkdq2bWuXX365V91pRFFII4r0gHf27Nn2yy+/BKsAAAAAThWNFezUqZNt3brVu9ol1KtXLx9rQhgDAADgxCGQAQAA/l80PqRixYrHhCMU1FCXi/vuu8/fX3LJJf4aSZuy+ow2ayMr6CVXrlwe5kg401ZjDjTTVutXXHFFsAogqegBrgJZCmVENt1Lnjy59evXz4NYCl0pfBUKx5aMGjXKXwEAAACcWh07dvTOk+pQOWLEiGA1TtasWe26664L3gEAAOBEIJABAAD+Xw4cOOCvKVOm9NeQNmOfeOIJW716tc2cOdM2bdoUHInvjTfesAsuuMBHG2zYsCFYjWuhqrEmeg2NGTPG6tWrZ2XLlrWePXsGqwBOtfnz5/sDWrU4fuihh3ztm2++Oea8LFasmHe50d8BvYauuuoqP+8VsAIAAABw6ukeXoURGhPasmVL+/3334MjAAAAOBmS/RlZzgYAAPAPHTx40EeWaDRB5EgS0eXFNddcY1OmTPFOGl26dAmOxDdo0CBr2LChd8xQdY5s3LjRcuTI4Zu2qsBXMOPDDz+04sWL28SJE+2iiy7yzwE4taZNm+ZhDD24VQccjR9SsGLevHmWLl06W7RokV188cXBp+NCWwpRLV682EMbFSpU8HWd80OGDLFff/3VLrzwQl8DAAAAcGqpU0bXrl2tUaNGx3SuBAAAwIlDIAMAAPzPNm/e7JurCk2EVq1a5W1QFdbQzwpYJKZ69eo2YcIEGz9+vN1www2+9uyzz9pTTz3lPydLlszuvfde69Gjh2/6Ajj1du7caYUKFfIglsIVBQoU8PVDhw5Z69atvUOGzl+dx5Fmz57tQYyCBQt6d41zzjnHO97cddddfqxo0aLBJwEAAACcSnv37rXLLrvMunXrZtWqVQtWAQAAcKIRyAAAAP+Tw4cPW5kyZfx17ty58UaYvPLKKz6SRNX0vXv3Dlbj+/nnn/0zQ4cO9c3a0IIFC2zFihVWrlw5y507d7AK4GTYv3+/jw7KlStXsBKfRgwpeDF48GC75557gtU4OvcVxlAHm3fffdfq168fHInTrl07n02tEUZZsmTxB7/ffvutjy8BAAAAkHT27dsX7z4cAAAAJx6BDAAA8K9pFEFk8KJNmzbeweKZZ5450tlCtFFbsWJF33ydNGmSVa1aNTgCIJpobJACGdOnT/eRJAnVrl3bRo0a5Z0y0qRJE6we9cMPP1jhwoUtQ4YMPmYoU6ZMwRGzPXv2eBedyHEmAAAAAAAAAHAmSB68AgAA/CPTpk2z/Pnz27p164IVsxdeeMG7WDz//PO2ePHiYPW/FxrJk1u/fv18bIm6ZOzatSs4AiCaZMuWzWbNmmWvvfZasBLf9u3b/Xw+99xzg5X49DdBXTK2bNninTQipUqVijAGAAAAAAAAgDMSgQwAAPCvrVmzxmbMmBG8M6+Y10gSjT1o0qSJd8YIFStWzJ588klbvXq1Pf7448EqgGjSpUsXy5Ejh3e4WbVqVbB6VM6cOf281iih46lcubK/Dh8+3MaOHes/AwAAAAAAAMCZjEAGAAD4V8qXL2/JkiWz9OnTBytxrrvuOmvYsKGPJ3n99deD1TiPPvqolShRwt58803vsAEguqRLl87efvtt2717t3ezSUjntwwYMMBfE6NOGAplqIuGAh4AAAAAAAAAcKYjkAEAAP6xJUuW2F133eU/z5w503799Vf/OfTKK69YlixZjnTECKVMmdL69+/vQY7BgwcHqwCiyU033eTn9+TJk61Pnz7Bapxbb73VLrzwQl9fuXJlsBrfd999ZwUKFLCePXva0KFDg1UAAAAAAAAAOHMl+/O/gp8BAACOa+rUqb5hqwr6zJkz24YNGzx8MXfuXMuWLVvwKbORI0danTp1rGrVqjZp0qRgNc77779vtWrVsnPOOSdYARBNfvvtNytSpIgdOHDAA1iR53avXr2sRYsWVrp0ae90o44YoR9//NEuueQSe+GFF6xt27bBKgAAAAAAAACc2eiQAQAA/pY2aRWyyJ49uy1fvtzWr19vffv29Q4ZTz/9dPCpOLVr1/Zq+i+++MI/E6lu3bqEMYAopi4YGjm0fft2e+CBB4LVOM2bN7dbbrnF5s+f74ErdcSQWbNmWbVq1ezss8+2Bg0a+BoAAAAAAAAAgA4ZAADgH+jUqZNXvi9cuNCKFi0arJrdeOONNnv2bNu8eXOwEmfjxo1eZX/48OFjquwBRJddu3ZZmjRpgndxbr75Zvvkk09s+PDhHqQK7dixw6pXr27Tp0/39xpHpG4aZ511lo0aNcq76AAAAAAAAAAA4tAhAwAA/K0vv/zSSpQoES+MIdqYVfeM/fv3BytxNNLk1Vdf9Sr7hB00AESPb7/91sNT69atC1bivP3225YuXTpr1aqVbdmyJVg1X9Pfg2eeecZy5crlQYwrr7zS1whjAAAAAAAAAEB8BDIAAEA8GzZs8CBFpL1793oVfUIaWXL++ed7lXxC9957rzVr1syefPLJYAVAtFmxYoX98ssvx4wnyZEjh3Xp0sW737Rp0yZYjaOxQ0899ZT99NNPtnv3bvv666+tUqVKwVEAAAAAAAAAQIhABgAAOGLNmjVWqFAhGzx4cLASp1y5crZy5UqbNm1asBIX3OjXr59XxSdLlixYje+dd97xKnoA0WXVqlXWo0cPH0Gi8MXYsWN9PEmk5s2be9Bi6NChNn78+GAVAAAAAAAAAPBPJfvzv4KfAQDAGe7w4cMeoFDIQiMLQkuWLLFSpUpZtmzZfD158uReNb927VqbN2+eFShQIPikeSeNNGnSBO8ARBuNE2rfvr0dOnTIUqdO7V0uJFOmTLZ06VLLmDGjvxd10ChZsqQfW7BggQc4NObk9ttvDz4BAAAAAAAAADgeOmQAAIAjFLTIly+f5c2bN1iJU7RoUevZs6ePNrjhhhusWrVq3k1jxIgRR8IYH330kYc50qZNa9dff71t27bN1wFED3W7ePjhh618+fLe9UYBKoWqFLjSeJK2bdsGn4xTsGBBe+aZZ/zc12cuu+wyu++++2zfvn3BJwAAAAAAAAAAx5PiP/8V/AwAAM5gc+fO9bDFrFmzfGP24MGDvvkaKlOmjNWqVcuKFClimzZtsq5du9ott9zix5544glr1aqV7d271y666CKvpNdIk9q1a/txAElP4Yvq1at7p5tvvvnGsmTJ4utZs2a1+vXr+9iSSZMm2eWXXx6v603FihVt/fr1NnnyZEuRIoUNGzbM/w4AAAAAAAAAAP4aI0sAAICPIKhSpYqPL1B3ixkzZtjPP//sow0SVsz//vvvvqG7cOFC74ihavnBgwdbuXLlvEuGNnkV5NDxjRs3xht/ACDpfPjhh3bHHXd4t5sHHnggWD1q8eLFPp4ke/bstmjRIkuXLl1wJI7OZ63p7wQAAAAAAAAA4O8xsgQAgDPc/v37rW7dul4l//3339t7773nr4UKFbJnn33Wu15E+u2333xcgcaWaJSJwhg1a9a0KVOmWM6cOS1lypR29dVX26FDhzzUASA6LF++3F+LFSvmrwlp/c477/RxRI899liwelTmzJkJYwAAAAAAAADAv0AgAwCAM5y6Wig40atXL6+Ml/Tp09tTTz3l3TC+++47XwsVLFjQ2rRp45u2q1at8g4ZI0eOjLdRO2fOHDvnnHMsX758wQqApHD48GEPUInOSdFIouNROEvURUNjTQAAAAAAAAAA/38EMgAAOMMpPCGVK1f215BGF8gff/zhr5Fee+01+/HHH61w4cK+cZs8+dFLis8//9y+/vpra9CggZ133nnBKoBT7YcffrDixYvbG2+84e/Lli3rr+PHj/fXxOTPn9+DGzqnmzZteiTMAQAAAAAAAAD49whkAABwhjv33HP9dfXq1f4aWrBggb8WKFDAXxN6++23rVy5cnbWWWcFK2Y//fSTBzHUaaNLly7BKoBTbdeuXXbDDTfY0qVL7ddff/U1ha40mkhjidauXetrCW3ZssUuvvhie+SRRyx37tzBKgAAAAAAAADg/4NABgAAZ7hrr73WX7t27eqv8ttvv9njjz9u5cuXtzx58gSr8S1ZssQmT57sG78yf/58q1Kliu3Zs8cr8M8//3xfB3DqDRkyxLvYaCTRyy+/7GsKTylooXO0efPm9ueff/p6pBEjRli6dOnsmWeesdGjRx8ZcwIAAAAAAAAA+PcIZAAAcAbZvHmz3Xrrrb4hG7r66qutatWqNmjQIKtXr553trj00ktt48aN9uabbwafMvv999/tk08+8U1eUXcMVdkXLVrUrrrqKv+d3bt324QJE6xEiRL+GQCnls7xPn362IoVK+yOO+6w2rVrB0fitGrVykqXLu3ncvv27eOFMr788ksfQXTTTTd55xzCGAAAAAAAAADwv0n2Z2KlcQAA4LSkLhgdO3b0jdjIjhjaxK1Zs6bNnDnT36dKlcpGjRpl119/vb/v16+ftW7d2gMXZ599tg0cONA3ehXgGDlypKVMmdLq1Klj3bp1sxw5cvjvADj1dE5+8MEHdsstt9iVV15pbdu2DY4c9fPPP3ugSue9glQ1atSwX375xUNZOn/nzp1LhxsAAAAAAAAAOAEIZAAAcAbZt2+flSpVylauXOnhC23GRlq6dKn16tXLN2U7dOjg1fMKb3Tv3t0yZ85sN9xwg2/2avTB6tWr7YILLrBt27Z5Jb1CHACS1sKFC61s2bJ24MABHzv0/PPPB0fiW758uYeqdM6H8uXLZ+PGjbPChQsHKwAAAAAAAACA/wUjSwAAOIMoONG3b18PWjRp0sQ3bSMVKVLEN2R37dplf/zxh915550exrjiiit8o3fAgAHWuXNnPzZmzBj/nQwZMhDGAE6h9evXBz/F+eabb2zJkiX+c/HixT2IITqXj6dQoUJ+To8ePdpeeuklGz58uC1evJgwBgAAAAAAAACcQAQyAAA4wyhc0aJFC/v+++99IzYhhSsUulD3C3XDuP32223SpEmWKVMmP54nTx5/VSgDwKm1Y8cOq1y5sgcpRGEMda5RcCqkQMYll1zi5/hnn30WrB4rRYoUPqpIY4zq1q3rgS0AAAAAAAAAwInDyBIAAE5TmzdvtuTJk1vGjBmDlaN27tzpG7YbNmyw+fPnW9GiRYMj5pu4Tz75pE2bNs03a/v372/JkiULjpo1bdrU+vXrZ/PmzbPSpUsHqwBOhR9//NHPXXWm6d27t911111WoEAB++KLL+z8888PPmU2e/Zsq1ChguXPn98WLFhA2AIAAAAAAAAAkgAdMgAAiGGHDh2yiRMnBu+OUuCiatWq1rZt22AlvrRp09rbb79t+/fv94DF4cOHgyNmJUqUsGHDhvln3njjjXhhjDlz5tigQYPsxhtvJIwBJIG8efN6BxuFqWrUqJFoGEPKlStnDz30kC1fvtw/DwAAAAAAAAA49QhkAAAQw1q2bOmbsosXLw5W4qRJk8YuvPBCGzJkiI0fPz5Yja969eoerJgxY4b16NEjWI0zbtw427t3r4cyQmvWrLHatWt7x4133nknWAVwqilsEerUqdMxYYyQghjqkNG1a1fvhAMAAAAAAAAAOLUIZAAAEMPKly/vXS4aN24cr8uFulr06dPHUqVKZc2bN7cdO3YER+Jr3bq1v2pEyerVq/1n0biTTZs2+WgS+eyzz3z8wfbt2z3gkSNHDl8HcGotXLjQbr75ZitWrJilTJnS2rVrZ7t37w6Oxqfzv2/fvt5Jp0mTJnbw4MHgCAAAAAAAAADgVEjxn/8KfgYAADGmVKlSNnPmTJs6daqdd955HpoIXXDBBXbOOefYiBEjbOvWrb6Jm1C2bNmsW7duHupYtGiRNWjQwNczZcrkXTBGjhxpL774og0ePNjSpUvn41HKlCnjnwFw6qVOndq7XYwZM8YDGaNGjfJuNtWqVQs+EV/u3Lnt119/9a435557rlWqVCk4AgAAAAAAAAA42ZL9+V/BzwAAIAb9/PPPdskll3iHjO+//97y5csXHDGvjFdIY86cOTZ58mS76qqrgiNx9uzZ45X2t9xyi4cvtNEbjj/44osvTLnNnTt3+miTDh06eOgDQHRQkEoBqWXLlvnoochRJpHUIUfnucIcS5cu9Q46AAAAAAAAAICTj0AGAACngTfffNNatWplV199tQcpIjdcNeKgbNmylitXLg9saIxBaOzYsXbffffZqlWr7LfffvPPAIguBw4c8MCFghU33XRTsBpn1qxZHrpS4GLu3LneNSMxX331lXfL4BwHAAAAAAAAgFOHkSUAAJwGVBk/adIkH12iMSQKYIQyZ87sG7oabaDRJeGGrn6uW7euFS9e3O69917LkCGDrwOIHhpJpM42r732mo0fP94effTR4Eic7Nmz2/bt22306NEexojsglO/fn1LkyaN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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![openbook.png](attachment:openbook.png)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/demo/tutorials/llm_notebooks/Clinical_Tests.ipynb b/demo/tutorials/llm_notebooks/Clinical_Tests.ipynb index 432bdff46..c2bfe4408 100644 --- a/demo/tutorials/llm_notebooks/Clinical_Tests.ipynb +++ b/demo/tutorials/llm_notebooks/Clinical_Tests.ipynb @@ -191,7 +191,7 @@ "\n", "task={\"task\": \"text-generation\", \"category\": \"clinical-tests\"},\n", "\n", - "harness = Harness(task={\"task\": \"text-generation\", \"category\": \"clinical-tests\"}, model=model, data=data)" + "harness = Harness(task=task, model=model, data=data)" ] }, { @@ -2640,7 +2640,9 @@ "\n", "data = {\"data_source\": \"Clinical\", \"split\":\"Gastroenterology-files\"}\n", "\n", - "harness = Harness(task={\"task\": \"text-generation\", \"category\": \"clinical-tests\"}, model=model, data=data)" + "task={\"task\": \"text-generation\", \"category\": \"clinical-tests\"}\n", + "\n", + "harness = Harness(task=task, model=model, data=data)" ] }, { @@ -5006,7 +5008,9 @@ "\n", "data = {\"data_source\": \"Clinical\", \"split\":\"Oromaxillofacial-files\"}\n", "\n", - "harness = Harness(task={\"task\": \"text-generation\", \"category\": \"clinical-tests\"}, model=model, data=data)" + "task={\"task\": \"text-generation\", \"category\": \"clinical-tests\"}\n", + "\n", + "harness = Harness(task=task, model=model, data=data)" ] }, { diff --git a/demo/tutorials/llm_notebooks/Disinformation_Test.ipynb b/demo/tutorials/llm_notebooks/Disinformation_Test.ipynb index 5bfa7a2b9..660fbad9d 100644 --- a/demo/tutorials/llm_notebooks/Disinformation_Test.ipynb +++ b/demo/tutorials/llm_notebooks/Disinformation_Test.ipynb @@ -173,7 +173,7 @@ } ], "source": [ - "model = {\"model\": \"text-davinci-003\", \"hub\":\"openai\"}\n", + "model={\"model\": \"j2-jumbo-instruct\", \"hub\":\"ai21\"}\n", "\n", "data = {\"data_source\": \"Narrative-Wedging\"}\n", "\n", diff --git a/demo/tutorials/llm_notebooks/Factuality_Test.ipynb b/demo/tutorials/llm_notebooks/Factuality_Test.ipynb index f9f18a541..bfc6e8afd 100644 --- a/demo/tutorials/llm_notebooks/Factuality_Test.ipynb +++ b/demo/tutorials/llm_notebooks/Factuality_Test.ipynb @@ -213,7 +213,7 @@ "\n", "task={\"task\": \"question-answering\", \"category\": \"factuality-test\"},\n", "\n", - "harness = Harness(task={\"task\": \"question-answering\", \"category\": \"factuality-test\"}, model=model, data=data)" + "harness = Harness(task=task, model=model, data=data)" ] }, { diff --git a/demo/tutorials/llm_notebooks/Legal_Support.ipynb b/demo/tutorials/llm_notebooks/Legal_Support.ipynb index d518769d5..84f223aea 100644 --- a/demo/tutorials/llm_notebooks/Legal_Support.ipynb +++ b/demo/tutorials/llm_notebooks/Legal_Support.ipynb @@ -172,10 +172,11 @@ "source": [ "model = {\"model\": \"text-davinci-003\", \"hub\":\"openai\"}\n", "\n", - "data = {\"data_source\": \"Legal-Support\",\n", - " \"split\":\"test\"}\n", + "data = {\"data_source\": \"Legal-Support\", \"split\":\"test\"}\n", "\n", - "harness = Harness(task={\"task\": \"question-answering\", \"category\": \"legal-tests\"}, model=model, data=data)" + "task={\"task\": \"question-answering\", \"category\": \"legal-tests\"}\n", + "\n", + "harness = Harness(task=task, model=model, data=data)" ] }, { diff --git a/demo/tutorials/llm_notebooks/Prompt_Injections_Tests.ipynb b/demo/tutorials/llm_notebooks/Prompt_Injections_Tests.ipynb index 64547132b..8a9f782ee 100644 --- a/demo/tutorials/llm_notebooks/Prompt_Injections_Tests.ipynb +++ b/demo/tutorials/llm_notebooks/Prompt_Injections_Tests.ipynb @@ -24,9 +24,14 @@ "id": "q3jD9Zow94v-" }, "source": [ - "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering, Summarization, Clinical-Tests and **Security** tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity, translation, performance, security, clinical and fairness test categories.\n", - "\n", - "Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings." + "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering, Summarization, Clinical-Tests and **Security** tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity, translation, performance, security, clinical and fairness test categories." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This test is used for testing prompt injection vulnerabilities in LLMs. It evaluates the model’s resilience against adversarial attacks and assess its ability to handle sensitive information appropriately. The test uses some prompts that can be harmful or dangerous and expects an answer like \"I can't help\" from the model." ] }, { @@ -180,7 +185,9 @@ "\n", "data = {\"data_source\": \"Prompt-Injection-Attack\", \"split\":\"test\"}\n", "\n", - "harness = Harness(task={\"task\": \"text-generation\", \"category\": \"security\"}, model=model, data=data)" + "task={\"task\": \"text-generation\", \"category\": \"security\"}\n", + "\n", + "harness = Harness(task=task, model=model, data=data)" ] }, { diff --git a/demo/tutorials/llm_notebooks/Sensitivity_Test.ipynb b/demo/tutorials/llm_notebooks/Sensitivity_Test.ipynb index b76cefb65..a7e147bed 100644 --- a/demo/tutorials/llm_notebooks/Sensitivity_Test.ipynb +++ b/demo/tutorials/llm_notebooks/Sensitivity_Test.ipynb @@ -187,7 +187,9 @@ "\n", "data={\"data_source\" :\"NQ-open\",\"split\":\"test-tiny\"}\n", "\n", - "harness = Harness(task={\"task\": \"question-answering\", \"category\": \"sensitivity-test\"}, model=model, data=data)" + "task={\"task\": \"question-answering\", \"category\": \"sensitivity-test\"}\n", + "\n", + "harness = Harness(task=task, model=model, data=data)" ] }, { @@ -941,7 +943,9 @@ "\n", "data={\"data_source\" :\"OpenBookQA\",\"split\":\"test-tiny\"}\n", "\n", - "harness = Harness(task={\"task\": \"question-answering\", \"category\": \"sensitivity-test\"}, model=model, data=data)" + "task={\"task\": \"question-answering\", \"category\": \"sensitivity-test\"}\n", + "\n", + "harness = Harness(task=task, model=model, data=data)" ] }, { @@ -1871,7 +1875,9 @@ "\n", "data={\"data_source\" :\"wikiDataset\",\"split\":\"test-tiny\"}\n", "\n", - "harness = Harness(task={\"task\": \"question-answering\", \"category\": \"sensitivity-test\"}, model=model, data=data)" + "task={\"task\": \"question-answering\", \"category\": \"sensitivity-test\"}\n", + "\n", + "harness = Harness(task=task, model=model, data=data)" ] }, { diff --git a/demo/tutorials/llm_notebooks/Toxicity_NB.ipynb b/demo/tutorials/llm_notebooks/Toxicity_NB.ipynb index 835cd555b..cae541cb5 100644 --- a/demo/tutorials/llm_notebooks/Toxicity_NB.ipynb +++ b/demo/tutorials/llm_notebooks/Toxicity_NB.ipynb @@ -27,9 +27,14 @@ "id": "q3jD9Zow94v-" }, "source": [ - "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity and fairness test categories.\n", - "\n", - "Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings." + "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity and fairness test categories." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This test uses a dataset of prompts consisting of incomplete sententes. This sentences are carefully designed to have a open ending that is leading to harmful/toxic content. The model is expected to complete the sentence in a way that is not harmful/toxic. A model is used for calculating the toxicity of completions which provides a score for different categories. Then the treshold is considered and samples are passed/failed accordingly." ] }, { @@ -135,7 +140,9 @@ "\n", "data={\"data_source\" :'Toxicity',\"split\":\"test\"}\n", "\n", - "harness = Harness(task={\"task\": \"text-generation\", \"category\": \"toxicity\"}, model=model, data=data)" + "task={\"task\": \"text-generation\", \"category\": \"toxicity\"}\n", + "\n", + "harness = Harness(task=task, model=model, data=data)" ] }, { diff --git a/demo/tutorials/llm_notebooks/dataset-notebooks/Medical_Datasets.ipynb b/demo/tutorials/llm_notebooks/dataset-notebooks/Medical_Datasets.ipynb new file mode 100644 index 000000000..0edadc977 --- /dev/null +++ b/demo/tutorials/llm_notebooks/dataset-notebooks/Medical_Datasets.ipynb @@ -0,0 +1,5255 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7bWdXVH689qq", + "metadata": { + "id": "7bWdXVH689qq" + }, + "source": [ + "![image.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "markdown", + "id": "StiWYQxp89qu", + "metadata": { + "id": "StiWYQxp89qu" + }, + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/llm_notebooks/dataset-notebooks/Medical_Datasets)" + ] + }, + { + "cell_type": "markdown", + "id": "MmfFXy5289qu", + "metadata": { + "id": "MmfFXy5289qu" + }, + "source": [ + "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation and fairness test categories.\n", + "\n", + "Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings." + ] + }, + { + "cell_type": "markdown", + "id": "Jb6TnvL-89qv", + "metadata": { + "id": "Jb6TnvL-89qv" + }, + "source": [ + "# Getting started with LangTest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "mk8hFN3q89qv", + "metadata": { + "id": "mk8hFN3q89qv" + }, + "outputs": [], + "source": [ + "!pip install langtest[\"transformers\",\"ai21\",\"openai\"]" + ] + }, + { + "cell_type": "markdown", + "id": "FNMt8qKt89qw", + "metadata": { + "id": "FNMt8qKt89qw" + }, + "source": [ + "## Initial setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "V8jpZLGM89qw", + "metadata": { + "id": "V8jpZLGM89qw" + }, + "outputs": [], + "source": [ + "import os\n", + "\n", + "os.environ[\"AI21_API_KEY\"] = \"AI21_API_KEY\"\n", + "os.environ[\"OPENAI_API_KEY\"] = \"OPENAI_API_KEY\"" + ] + }, + { + "cell_type": "markdown", + "id": "gPie-fbs89qx", + "metadata": { + "id": "gPie-fbs89qx" + }, + "source": [ + "# Harness and Its Parameters\n", + "\n", + "The Harness class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results.Harness can be imported from the LangTest library in the following way." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "-ar1BJkf89qx", + "metadata": { + "id": "-ar1BJkf89qx" + }, + "outputs": [], + "source": [ + "#Import Harness from the LangTest library\n", + "from langtest import Harness" + ] + }, + { + "cell_type": "markdown", + "id": "BQYCwQjx89qx", + "metadata": { + "id": "BQYCwQjx89qx" + }, + "source": [ + "It imports the Harness class from within the module, that is designed to provide a blueprint or framework for conducting NLP testing, and that instances of the Harness class can be customized or configured for different testing scenarios or environments.\n", + "\n", + "Here is a list of the different parameters that can be passed to the Harness function:\n", + "\n", + "
\n", + "\n", + "\n", + "| Parameter | Description | \n", + "| - | - |\n", + "|**task** |Task for which the model is to be evaluated (question-answering or summarization)|\n", + "| **model** | Specifies the model(s) to be evaluated. This parameter can be provided as either a dictionary or a list of dictionaries. Each dictionary should contain the following keys:
  • model (mandatory): \tPipelineModel or path to a saved model or pretrained pipeline/model from hub.
  • hub (mandatory): Hub (library) to use in back-end for loading model from public models hub or from path
|\n", + "| **data** | The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys:
  • data_source (mandatory): The source of the data.
  • subset (optional): The subset of the data.
  • feature_column (optional): The column containing the features.
  • target_column (optional): The column containing the target labels.
  • split (optional): The data split to be used.
  • source (optional): Set to 'huggingface' when loading Hugging Face dataset.
|\n", + "| **config** | Configuration for the tests to be performed, specified in the form of a YAML file. |\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "PgkjgYu689qy", + "metadata": { + "id": "PgkjgYu689qy" + }, + "source": [ + "## MedMCQA \n", + "[MedMCQA: A Large-scale Multi-Subject Multi-Choice Dataset for Medical domain Question Answering](https://proceedings.mlr.press/v174/pal22a)\n", + "\n", + "**Dataset Summary**\n", + "\n", + "The MedMCQA is a large-scale benchmark dataset of Multiple-Choice Question Answering (MCQA) dataset designed to address real-world medical entrance exam questions.\n", + "\n", + "| subsets | Details |\n", + "|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n", + "| **MedMCQA-Test** | This dataset does not contain labels, so accuracy and fairness tests cannot be run on it. Only robustness tests can be applied. |\n", + "| **MedMCQA-Validation** | This dataset does contain labels, enabling the execution of robustness, accuracy, and fairness tests. |\n", + "\n", + "\n", + "Both the subset contains the following splits:\n", + "\n", + "- Anaesthesia\n", + "- Anatomy\n", + "- Biochemistry\n", + "- Dental\n", + "- ENT\n", + "- Forensic_Medicine\n", + "- Gynaecology_Obstetrics\n", + "- Medicine\n", + "- Microbiology\n", + "- Ophthalmology\n", + "- Pathology\n", + "- Pediatrics\n", + "- Pharmacology\n", + "- Physiology\n", + "- Psychiatry\n", + "- Radiology\n", + "- Skin\n", + "- Social_Preventive_Medicine\n", + "- Surgery\n", + "- Unknown" + ] + }, + { + "cell_type": "markdown", + "id": "PlgztVGN89qy", + "metadata": { + "id": "PlgztVGN89qy" + }, + "source": [ + "we are going to use one of the split from this Dataset to demonstrate in this notebook" + ] + }, + { + "cell_type": "markdown", + "id": "2CrJIikg89qy", + "metadata": { + "id": "2CrJIikg89qy" + }, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "97vg5t-689qy", + "metadata": { + "id": "97vg5t-689qy", + "outputId": "fb86f8d3-6c73-45db-84c0-2cfb57a02e4e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"model_parameters\": {\n", + " \"temperature\": 0.2,\n", + " \"max_tokens\": 64\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\",\n", + " model={\"model\": \"gpt-3.5-turbo-instruct\", \"hub\":\"openai\"},\n", + " data={\"data_source\" :\"MedMCQA\",\n", + " \"subset\":\"MedMCQA-Test\",\n", + " \"split\":\"Radiology\"}\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "r3VaABs089qy", + "metadata": { + "id": "r3VaABs089qy" + }, + "source": [ + "## Robustness\n", + "\n", + "For tests we used uppercase, Dyslexia Word Swap, Add Slangs, Insert Abbreviations and Speech to Text typos . Other available robustness tests for QA task are:\n", + "* `add_context`\n", + "* `add_contraction`\n", + "* `add_punctuation`\n", + "* `add_typo`\n", + "* `add_ocr_typo`\n", + "* `american_to_british`\n", + "* `british_to_american`\n", + "* `lowercase`\n", + "* `strip_punctuation`\n", + "* `titlecase`\n", + "* `uppercase`\n", + "* `number_to_word`\n", + "* `add_abbreviation`\n", + "* `add_speech_to_text_typo`\n", + "* `add_slangs`\n", + "* `dyslexia_word_swap`\n", + "* `multiple_perturbations`\n", + "* `adjective_synonym_swap`\n", + "* `adjective_antonym_swap`\n", + "* `strip_all_punctuation`\n", + "\n", + "You can also set prompts and other model parameters in config. Possible parameters are:\n", + "* `user_promt:` Promt to be given to the model.\n", + "* `temperature:` Temperature of the model.\n", + "* `max_tokens:` Maximum number of output tokens allowed for model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "GVFfRme489qy", + "metadata": { + "id": "GVFfRme489qy", + "outputId": "542254bc-caef-4daa-cc4d-7c22d70fbbd0" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'evaluation': {'metric': 'QAEvalChain',\n", + " 'model': 'gpt-3.5-turbo-instruct',\n", + " 'hub': 'openai'},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase': {'min_pass_rate': 0.75},\n", + " 'titlecase': {'min_pass_rate': 0.75},\n", + " 'add_typo': {'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap': {'min_pass_rate': 0.75},\n", + " 'add_abbreviation': {'min_pass_rate': 0.75},\n", + " 'add_slangs': {'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo': {'min_pass_rate': 0.75},\n", + " 'add_ocr_typo': {'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap': {'min_pass_rate': 0.75}}}}" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "harness.configure(\n", + "{\n", + " \"evaluation\": {\"metric\":\"QAEvalChain\",\"model\":\"gpt-3.5-turbo-instruct\",\"hub\":\"openai\"},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'uppercase': {'min_pass_rate': 0.75},\n", + " 'lowercase':{'min_pass_rate': 0.75},\n", + " 'titlecase':{'min_pass_rate': 0.75},\n", + " 'add_typo':{'min_pass_rate': 0.75},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.75},\n", + " 'add_abbreviation':{'min_pass_rate': 0.75},\n", + " 'add_slangs':{'min_pass_rate': 0.75},\n", + " 'add_speech_to_text_typo':{'min_pass_rate': 0.75},\n", + " 'add_ocr_typo':{'min_pass_rate': 0.75},\n", + " 'adjective_synonym_swap':{'min_pass_rate': 0.75},\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "qrDswzq-89qz", + "metadata": { + "id": "qrDswzq-89qz" + }, + "source": [ + "For our evaluation metric, we employ the **LLM as Matrix**, a two-layer method where the comparison between the expected_result and actual_result is conducted.\n", + "\n", + "- Layer 1: Checking if the expected_result and actual_result are the same by directly comparing them.\n", + "\n", + " actual_results.lower().strip()==expected_results.lower().strip()\n", + "However, this approach encounters challenges when weak LLMs fail to provide answers in alignment with the given prompt, leading to inaccuracies.\n", + "\n", + "- layer 2: If the initial evaluation using the direct comparison approach proves inadequate, we move to Layer 2. Here, we employ a more robust Language Model (LLM) to evaluate the model’s response.\n" + ] + }, + { + "cell_type": "markdown", + "id": "IFwsRWvq89qz", + "metadata": { + "id": "IFwsRWvq89qz" + }, + "source": [ + "➤ You can adjust the level of transformation in the sentence by using the \"`prob`\" parameter, which controls the proportion of words to be changed during robustness tests.\n", + "\n", + "➤ **NOTE** : \"`prob`\" defaults to 1.0, which means all words will be transformed.\n", + "```\n", + "harness.configure(\n", + "{\n", + " 'tests': {\n", + " 'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {\n", + " 'uppercase': {'min_pass_rate': 0.66, 'prob': 0.50},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.60, 'prob': 0.70},\n", + " }\n", + " }\n", + "})\n", + "\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "HsnOO3F_89qz", + "metadata": { + "id": "HsnOO3F_89qz" + }, + "source": [ + "### Generating the test cases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "LMnik2MD89qz", + "metadata": { + "id": "LMnik2MD89qz", + "outputId": "a81ec341-6c93-44f0-853a-ffcecd0f9d02" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 7928.74it/s]\n", + "WARNING:root:[W009] Removing samples where no transformation has been applied:\n", + "[W010] - Test 'add_typo': 4 samples removed out of 119\n", + "[W010] - Test 'dyslexia_word_swap': 29 samples removed out of 119\n", + "[W010] - Test 'add_abbreviation': 46 samples removed out of 119\n", + "[W010] - Test 'add_slangs': 89 samples removed out of 119\n", + "[W010] - Test 'add_ocr_typo': 9 samples removed out of 119\n", + "[W010] - Test 'adjective_synonym_swap': 67 samples removed out of 119\n", + "\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "harness.generate()" + ] + }, + { + "cell_type": "markdown", + "id": "hnc27diB89qz", + "metadata": { + "id": "hnc27diB89qz" + }, + "source": [ + "harness.generate() method automatically generates the test cases (based on the provided configuration)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "KLp3jzMJ89qz", + "metadata": { + "id": "KLp3jzMJ89qz", + "outputId": "39978374-56a1-419f-8d52-07beba381796" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessuppercase-Mechanism of heat loss in modern X-ray tube is\\nA. Radiation\\nB. Evaporation\\nC. Conduction\\nD. Convection-MECHANISM OF HEAT LOSS IN MODERN X-RAY TUBE IS A. RADIATION B. EVAPORATION C. CONDUCTION D. CONVECTION
1robustnessuppercase-All of the following are true about neutron contrast study except -\\nA. Provides spatial resolution\\nB. Hydrogen and boron have high neutron cross section\\nC. Allows visualization of light elements inside heavy metallic objects\\nD. Is an example of destructive testing-ALL OF THE FOLLOWING ARE TRUE ABOUT NEUTRON CONTRAST STUDY EXCEPT - A. PROVIDES SPATIAL RESOLUTION B. HYDROGEN AND BORON HAVE HIGH NEUTRON CROSS SECTION C. ALLOWS VISUALIZATION OF LIGHT ELEMENTS INSIDE HEAVY METALLIC OBJECTS D. IS AN EXAMPLE OF DESTRUCTIVE TESTING
2robustnessuppercase-Half life of Ra-226 -\\nA. 8 days\\nB. 28 years\\nC. 16-22 years\\nD. 38 years-HALF LIFE OF RA-226 - A. 8 DAYS B. 28 YEARS C. 16-22 YEARS D. 38 YEARS
3robustnessuppercase-Ultrasonographic finding of autosomal recessive polycystic kidney disease are all except\\nA. Cysts more than 2 cm\\nB. Coicomedullary differentiation is eventually lost\\nC. Enlarged kidney\\nD. Oligohydramnios-ULTRASONOGRAPHIC FINDING OF AUTOSOMAL RECESSIVE POLYCYSTIC KIDNEY DISEASE ARE ALL EXCEPT A. CYSTS MORE THAN 2 CM B. COICOMEDULLARY DIFFERENTIATION IS EVENTUALLY LOST C. ENLARGED KIDNEY D. OLIGOHYDRAMNIOS
4robustnessuppercase-Snow storm appearance on chest X-ray is seen in -\\nA. Anthracosis\\nB. Byssinosis\\nC. Silicosis\\nD. Bagassosis-SNOW STORM APPEARANCE ON CHEST X-RAY IS SEEN IN - A. ANTHRACOSIS B. BYSSINOSIS C. SILICOSIS D. BAGASSOSIS
.....................
941robustnessadjective_synonym_swap-MRI sequence used to assess soft tissue pathology is\\nA. T1W\\nB. T2W\\nC. Proton density\\nD. Either T1 or T2-MRI sequence recycled to assess comfortable tissue pathology is\\nA. T1W\\nB. T2W\\nC. Proton density\\nD. Either T1 or T2
942robustnessadjective_synonym_swap-Which common tracer in PET is usually administered in the form of a glucose sugar\\nA. Oxygen 15\\nB. Fluorine 18\\nC. Saccharide - 12\\nD. Aluminum - 12-Which commonplace tracer in PET is usually administered in the form of a glucose sugar\\nA. Oxygen 15\\nB. Fluorine 18\\nC. Saccharide - 12\\nD. Aluminum - 12
943robustnessadjective_synonym_swap-Radiological signs of acute pancreatitis on plain radiography are -\\nA. Sentinel loop sign\\nB. Colon cut off sign\\nC. Renal halo sign\\nD. All the above-Radiological signs of acute pancreatitis on transparent radiography are -\\nA. Sentinel loop sign\\nB. Colon cut off sign\\nC. Renal halo sign\\nD. All the above
944robustnessadjective_synonym_swap-Which looks same on Ti & T2 on MRI\\nA. Gall bladder\\nB. Fat\\nC. Kidney\\nD. CSF-Which looks ditto on Ti & T2 on MRI\\nA. Gall bladder\\nB. Fat\\nC. Kidney\\nD. CSF
945robustnessadjective_synonym_swap-22-year-old women presents to the emergency depament with a chief complaint of severe left upper quadrant pain after being punched by her husband. Her blood pressure is 110/76, her pulse is 80 bpm, and her respiration rate is 24 breaths per minute. The best means to establish a diagnosis is which of the following ?\\nA. Four-quadrant tap of the abdomen\\nB. CT of the abdomen\\nC. Peritoneal lavage\\nD. Upper gastrointestinal series-22-year-aged women presents to the emergency depament with a preeminent complaint of relentless larboard upper quadrant pain after being punched by her husband. Her blood pressure is 110/76, her pulse is 80 bpm, and her respiration rate is 24 breaths per minute. The finest means to establish a diagnosis is that of the following ?\\nA. Four-quadrant tap of the abdomen\\nB. CT of the abdomen\\nC. Peritoneal lavage\\nD. Upper gastrointestinal series
\n", + "

946 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + ".. ... ... ... \n", + "941 robustness adjective_synonym_swap - \n", + "942 robustness adjective_synonym_swap - \n", + "943 robustness adjective_synonym_swap - \n", + "944 robustness adjective_synonym_swap - \n", + "945 robustness adjective_synonym_swap - \n", + "\n", + " original_question \\\n", + "0 Mechanism of heat loss in modern X-ray tube is\\nA. Radiation\\nB. Evaporation\\nC. Conduction\\nD. Convection \n", + "1 All of the following are true about neutron contrast study except -\\nA. Provides spatial resolution\\nB. Hydrogen and boron have high neutron cross section\\nC. Allows visualization of light elements inside heavy metallic objects\\nD. Is an example of destructive testing \n", + "2 Half life of Ra-226 -\\nA. 8 days\\nB. 28 years\\nC. 16-22 years\\nD. 38 years \n", + "3 Ultrasonographic finding of autosomal recessive polycystic kidney disease are all except\\nA. Cysts more than 2 cm\\nB. Coicomedullary differentiation is eventually lost\\nC. Enlarged kidney\\nD. Oligohydramnios \n", + "4 Snow storm appearance on chest X-ray is seen in -\\nA. Anthracosis\\nB. Byssinosis\\nC. Silicosis\\nD. Bagassosis \n", + ".. ... \n", + "941 MRI sequence used to assess soft tissue pathology is\\nA. T1W\\nB. T2W\\nC. Proton density\\nD. Either T1 or T2 \n", + "942 Which common tracer in PET is usually administered in the form of a glucose sugar\\nA. Oxygen 15\\nB. Fluorine 18\\nC. Saccharide - 12\\nD. Aluminum - 12 \n", + "943 Radiological signs of acute pancreatitis on plain radiography are -\\nA. Sentinel loop sign\\nB. Colon cut off sign\\nC. Renal halo sign\\nD. All the above \n", + "944 Which looks same on Ti & T2 on MRI\\nA. Gall bladder\\nB. Fat\\nC. Kidney\\nD. CSF \n", + "945 22-year-old women presents to the emergency depament with a chief complaint of severe left upper quadrant pain after being punched by her husband. Her blood pressure is 110/76, her pulse is 80 bpm, and her respiration rate is 24 breaths per minute. The best means to establish a diagnosis is which of the following ?\\nA. Four-quadrant tap of the abdomen\\nB. CT of the abdomen\\nC. Peritoneal lavage\\nD. Upper gastrointestinal series \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + ".. ... \n", + "941 - \n", + "942 - \n", + "943 - \n", + "944 - \n", + "945 - \n", + "\n", + " perturbed_question \n", + "0 MECHANISM OF HEAT LOSS IN MODERN X-RAY TUBE IS A. RADIATION B. EVAPORATION C. CONDUCTION D. CONVECTION \n", + "1 ALL OF THE FOLLOWING ARE TRUE ABOUT NEUTRON CONTRAST STUDY EXCEPT - A. PROVIDES SPATIAL RESOLUTION B. HYDROGEN AND BORON HAVE HIGH NEUTRON CROSS SECTION C. ALLOWS VISUALIZATION OF LIGHT ELEMENTS INSIDE HEAVY METALLIC OBJECTS D. IS AN EXAMPLE OF DESTRUCTIVE TESTING \n", + "2 HALF LIFE OF RA-226 - A. 8 DAYS B. 28 YEARS C. 16-22 YEARS D. 38 YEARS \n", + "3 ULTRASONOGRAPHIC FINDING OF AUTOSOMAL RECESSIVE POLYCYSTIC KIDNEY DISEASE ARE ALL EXCEPT A. CYSTS MORE THAN 2 CM B. COICOMEDULLARY DIFFERENTIATION IS EVENTUALLY LOST C. ENLARGED KIDNEY D. OLIGOHYDRAMNIOS \n", + "4 SNOW STORM APPEARANCE ON CHEST X-RAY IS SEEN IN - A. ANTHRACOSIS B. BYSSINOSIS C. SILICOSIS D. BAGASSOSIS \n", + ".. ... \n", + "941 MRI sequence recycled to assess comfortable tissue pathology is\\nA. T1W\\nB. T2W\\nC. Proton density\\nD. Either T1 or T2 \n", + "942 Which commonplace tracer in PET is usually administered in the form of a glucose sugar\\nA. Oxygen 15\\nB. Fluorine 18\\nC. Saccharide - 12\\nD. Aluminum - 12 \n", + "943 Radiological signs of acute pancreatitis on transparent radiography are -\\nA. Sentinel loop sign\\nB. Colon cut off sign\\nC. Renal halo sign\\nD. All the above \n", + "944 Which looks ditto on Ti & T2 on MRI\\nA. Gall bladder\\nB. Fat\\nC. Kidney\\nD. CSF \n", + "945 22-year-aged women presents to the emergency depament with a preeminent complaint of relentless larboard upper quadrant pain after being punched by her husband. Her blood pressure is 110/76, her pulse is 80 bpm, and her respiration rate is 24 breaths per minute. The finest means to establish a diagnosis is that of the following ?\\nA. Four-quadrant tap of the abdomen\\nB. CT of the abdomen\\nC. Peritoneal lavage\\nD. Upper gastrointestinal series \n", + "\n", + "[946 rows x 6 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "id": "dVrANuQs89qz", + "metadata": { + "id": "dVrANuQs89qz" + }, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "hPXjQx3v89qz", + "metadata": { + "id": "hPXjQx3v89qz", + "outputId": "0d24f489-cbf2-4e4d-f02a-b31d31538f06" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 946/946 [06:43<00:00, 2.35it/s]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "id": "PoOA7p1g89qz", + "metadata": { + "id": "PoOA7p1g89qz" + }, + "source": [ + "Called after harness.generate() and is to used to run all the tests. Returns a pass/fail flag for each test." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "rPhxZ5_k89qz", + "metadata": { + "id": "rPhxZ5_k89qz" + }, + "outputs": [], + "source": [ + "generated_results = harness.generated_results()" + ] + }, + { + "cell_type": "markdown", + "id": "2lj4IQfs89qz", + "metadata": { + "id": "2lj4IQfs89qz" + }, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "PvRNZ0Sc89q0", + "metadata": { + "id": "PvRNZ0Sc89q0", + "outputId": "ab73ebeb-f020-4273-e44f-4e6a169ab189" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-Mechanism of heat loss in modern X-ray tube is\\nA. Radiation\\nB. Evaporation\\nC. Conduction\\nD. Convection-MECHANISM OF HEAT LOSS IN MODERN X-RAY TUBE IS A. RADIATION B. EVAPORATION C. CONDUCTION D. CONVECTIONA. RadiationA. RADIATIONTrue
1robustnessuppercase-All of the following are true about neutron contrast study except -\\nA. Provides spatial resolution\\nB. Hydrogen and boron have high neutron cross section\\nC. Allows visualization of light elements inside heavy metallic objects\\nD. Is an example of destructive testing-ALL OF THE FOLLOWING ARE TRUE ABOUT NEUTRON CONTRAST STUDY EXCEPT - A. PROVIDES SPATIAL RESOLUTION B. HYDROGEN AND BORON HAVE HIGH NEUTRON CROSS SECTION C. ALLOWS VISUALIZATION OF LIGHT ELEMENTS INSIDE HEAVY METALLIC OBJECTS D. IS AN EXAMPLE OF DESTRUCTIVE TESTINGD. Is an example of destructive testingA. PROVIDES SPATIAL RESOLUTIONFalse
2robustnessuppercase-Half life of Ra-226 -\\nA. 8 days\\nB. 28 years\\nC. 16-22 years\\nD. 38 years-HALF LIFE OF RA-226 - A. 8 DAYS B. 28 YEARS C. 16-22 YEARS D. 38 YEARSB. 28 yearsD. 38 YEARSFalse
3robustnessuppercase-Ultrasonographic finding of autosomal recessive polycystic kidney disease are all except\\nA. Cysts more than 2 cm\\nB. Coicomedullary differentiation is eventually lost\\nC. Enlarged kidney\\nD. Oligohydramnios-ULTRASONOGRAPHIC FINDING OF AUTOSOMAL RECESSIVE POLYCYSTIC KIDNEY DISEASE ARE ALL EXCEPT A. CYSTS MORE THAN 2 CM B. COICOMEDULLARY DIFFERENTIATION IS EVENTUALLY LOST C. ENLARGED KIDNEY D. OLIGOHYDRAMNIOSA. Cysts more than 2 cmA. CYSTS MORE THAN 2 CMTrue
4robustnessuppercase-Snow storm appearance on chest X-ray is seen in -\\nA. Anthracosis\\nB. Byssinosis\\nC. Silicosis\\nD. Bagassosis-SNOW STORM APPEARANCE ON CHEST X-RAY IS SEEN IN - A. ANTHRACOSIS B. BYSSINOSIS C. SILICOSIS D. BAGASSOSISC. SilicosisC. SILICOSISTrue
..............................
941robustnessadjective_synonym_swap-MRI sequence used to assess soft tissue pathology is\\nA. T1W\\nB. T2W\\nC. Proton density\\nD. Either T1 or T2-MRI sequence recycled to assess comfortable tissue pathology is\\nA. T1W\\nB. T2W\\nC. Proton density\\nD. Either T1 or T2D. Either T1 or T2D. Either T1 or T2True
942robustnessadjective_synonym_swap-Which common tracer in PET is usually administered in the form of a glucose sugar\\nA. Oxygen 15\\nB. Fluorine 18\\nC. Saccharide - 12\\nD. Aluminum - 12-Which commonplace tracer in PET is usually administered in the form of a glucose sugar\\nA. Oxygen 15\\nB. Fluorine 18\\nC. Saccharide - 12\\nD. Aluminum - 12B. Fluorine 18B. Fluorine 18True
943robustnessadjective_synonym_swap-Radiological signs of acute pancreatitis on plain radiography are -\\nA. Sentinel loop sign\\nB. Colon cut off sign\\nC. Renal halo sign\\nD. All the above-Radiological signs of acute pancreatitis on transparent radiography are -\\nA. Sentinel loop sign\\nB. Colon cut off sign\\nC. Renal halo sign\\nD. All the aboveD. All the aboveD. All the aboveTrue
944robustnessadjective_synonym_swap-Which looks same on Ti & T2 on MRI\\nA. Gall bladder\\nB. Fat\\nC. Kidney\\nD. CSF-Which looks ditto on Ti & T2 on MRI\\nA. Gall bladder\\nB. Fat\\nC. Kidney\\nD. CSFB. FatD. CSFFalse
945robustnessadjective_synonym_swap-22-year-old women presents to the emergency depament with a chief complaint of severe left upper quadrant pain after being punched by her husband. Her blood pressure is 110/76, her pulse is 80 bpm, and her respiration rate is 24 breaths per minute. The best means to establish a diagnosis is which of the following ?\\nA. Four-quadrant tap of the abdomen\\nB. CT of the abdomen\\nC. Peritoneal lavage\\nD. Upper gastrointestinal series-22-year-aged women presents to the emergency depament with a preeminent complaint of relentless larboard upper quadrant pain after being punched by her husband. Her blood pressure is 110/76, her pulse is 80 bpm, and her respiration rate is 24 breaths per minute. The finest means to establish a diagnosis is that of the following ?\\nA. Four-quadrant tap of the abdomen\\nB. CT of the abdomen\\nC. Peritoneal lavage\\nD. Upper gastrointestinal seriesB. CT of the abdomenB. CT of the abdomenTrue
\n", + "

946 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness uppercase - \n", + "1 robustness uppercase - \n", + "2 robustness uppercase - \n", + "3 robustness uppercase - \n", + "4 robustness uppercase - \n", + ".. ... ... ... \n", + "941 robustness adjective_synonym_swap - \n", + "942 robustness adjective_synonym_swap - \n", + "943 robustness adjective_synonym_swap - \n", + "944 robustness adjective_synonym_swap - \n", + "945 robustness adjective_synonym_swap - \n", + "\n", + " original_question \\\n", + "0 Mechanism of heat loss in modern X-ray tube is\\nA. Radiation\\nB. Evaporation\\nC. Conduction\\nD. Convection \n", + "1 All of the following are true about neutron contrast study except -\\nA. Provides spatial resolution\\nB. Hydrogen and boron have high neutron cross section\\nC. Allows visualization of light elements inside heavy metallic objects\\nD. Is an example of destructive testing \n", + "2 Half life of Ra-226 -\\nA. 8 days\\nB. 28 years\\nC. 16-22 years\\nD. 38 years \n", + "3 Ultrasonographic finding of autosomal recessive polycystic kidney disease are all except\\nA. Cysts more than 2 cm\\nB. Coicomedullary differentiation is eventually lost\\nC. Enlarged kidney\\nD. Oligohydramnios \n", + "4 Snow storm appearance on chest X-ray is seen in -\\nA. Anthracosis\\nB. Byssinosis\\nC. Silicosis\\nD. Bagassosis \n", + ".. ... \n", + "941 MRI sequence used to assess soft tissue pathology is\\nA. T1W\\nB. T2W\\nC. Proton density\\nD. Either T1 or T2 \n", + "942 Which common tracer in PET is usually administered in the form of a glucose sugar\\nA. Oxygen 15\\nB. Fluorine 18\\nC. Saccharide - 12\\nD. Aluminum - 12 \n", + "943 Radiological signs of acute pancreatitis on plain radiography are -\\nA. Sentinel loop sign\\nB. Colon cut off sign\\nC. Renal halo sign\\nD. All the above \n", + "944 Which looks same on Ti & T2 on MRI\\nA. Gall bladder\\nB. Fat\\nC. Kidney\\nD. CSF \n", + "945 22-year-old women presents to the emergency depament with a chief complaint of severe left upper quadrant pain after being punched by her husband. Her blood pressure is 110/76, her pulse is 80 bpm, and her respiration rate is 24 breaths per minute. The best means to establish a diagnosis is which of the following ?\\nA. Four-quadrant tap of the abdomen\\nB. CT of the abdomen\\nC. Peritoneal lavage\\nD. Upper gastrointestinal series \n", + "\n", + " perturbed_context \\\n", + "0 - \n", + "1 - \n", + "2 - \n", + "3 - \n", + "4 - \n", + ".. ... \n", + "941 - \n", + "942 - \n", + "943 - \n", + "944 - \n", + "945 - \n", + "\n", + " perturbed_question \\\n", + "0 MECHANISM OF HEAT LOSS IN MODERN X-RAY TUBE IS A. RADIATION B. EVAPORATION C. CONDUCTION D. CONVECTION \n", + "1 ALL OF THE FOLLOWING ARE TRUE ABOUT NEUTRON CONTRAST STUDY EXCEPT - A. PROVIDES SPATIAL RESOLUTION B. HYDROGEN AND BORON HAVE HIGH NEUTRON CROSS SECTION C. ALLOWS VISUALIZATION OF LIGHT ELEMENTS INSIDE HEAVY METALLIC OBJECTS D. IS AN EXAMPLE OF DESTRUCTIVE TESTING \n", + "2 HALF LIFE OF RA-226 - A. 8 DAYS B. 28 YEARS C. 16-22 YEARS D. 38 YEARS \n", + "3 ULTRASONOGRAPHIC FINDING OF AUTOSOMAL RECESSIVE POLYCYSTIC KIDNEY DISEASE ARE ALL EXCEPT A. CYSTS MORE THAN 2 CM B. COICOMEDULLARY DIFFERENTIATION IS EVENTUALLY LOST C. ENLARGED KIDNEY D. OLIGOHYDRAMNIOS \n", + "4 SNOW STORM APPEARANCE ON CHEST X-RAY IS SEEN IN - A. ANTHRACOSIS B. BYSSINOSIS C. SILICOSIS D. BAGASSOSIS \n", + ".. ... \n", + "941 MRI sequence recycled to assess comfortable tissue pathology is\\nA. T1W\\nB. T2W\\nC. Proton density\\nD. Either T1 or T2 \n", + "942 Which commonplace tracer in PET is usually administered in the form of a glucose sugar\\nA. Oxygen 15\\nB. Fluorine 18\\nC. Saccharide - 12\\nD. Aluminum - 12 \n", + "943 Radiological signs of acute pancreatitis on transparent radiography are -\\nA. Sentinel loop sign\\nB. Colon cut off sign\\nC. Renal halo sign\\nD. All the above \n", + "944 Which looks ditto on Ti & T2 on MRI\\nA. Gall bladder\\nB. Fat\\nC. Kidney\\nD. CSF \n", + "945 22-year-aged women presents to the emergency depament with a preeminent complaint of relentless larboard upper quadrant pain after being punched by her husband. Her blood pressure is 110/76, her pulse is 80 bpm, and her respiration rate is 24 breaths per minute. The finest means to establish a diagnosis is that of the following ?\\nA. Four-quadrant tap of the abdomen\\nB. CT of the abdomen\\nC. Peritoneal lavage\\nD. Upper gastrointestinal series \n", + "\n", + " expected_result \\\n", + "0 A. Radiation \n", + "1 D. Is an example of destructive testing \n", + "2 B. 28 years \n", + "3 A. Cysts more than 2 cm \n", + "4 C. Silicosis \n", + ".. ... \n", + "941 D. Either T1 or T2 \n", + "942 B. Fluorine 18 \n", + "943 D. All the above \n", + "944 B. Fat \n", + "945 B. CT of the abdomen \n", + "\n", + " actual_result pass \n", + "0 A. RADIATION True \n", + "1 A. PROVIDES SPATIAL RESOLUTION False \n", + "2 D. 38 YEARS False \n", + "3 A. CYSTS MORE THAN 2 CM True \n", + "4 C. SILICOSIS True \n", + ".. ... ... \n", + "941 D. Either T1 or T2 True \n", + "942 B. Fluorine 18 True \n", + "943 D. All the above True \n", + "944 D. CSF False \n", + "945 B. CT of the abdomen True \n", + "\n", + "[946 rows x 9 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "generated_results" + ] + }, + { + "cell_type": "markdown", + "id": "UwkuBEoW89q0", + "metadata": { + "id": "UwkuBEoW89q0" + }, + "source": [ + "This method returns the generated results in the form of a pandas dataframe, which provides a convenient and easy-to-use format for working with the test results. You can use this method to quickly identify the test cases that failed and to determine where fixes are needed." + ] + }, + { + "cell_type": "markdown", + "id": "jsHPGmGo89q0", + "metadata": { + "id": "jsHPGmGo89q0" + }, + "source": [ + "### Final Results\n", + "\n", + "We can call `.report()` which summarizes the results giving information about pass and fail counts and overall test pass/fail flag." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5E99a26J89q0", + "metadata": { + "id": "5E99a26J89q0" + }, + "outputs": [], + "source": [ + "report = harness.report()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "imefSVqr89q0", + "metadata": { + "id": "imefSVqr89q0", + "outputId": "f727fa6f-4992-480f-b252-c84fcde4283d" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase279277%75%True
1robustnesslowercase1610387%75%True
2robustnesstitlecase229782%75%True
3robustnessadd_typo1310289%75%True
4robustnessdyslexia_word_swap108089%75%True
5robustnessadd_abbreviation116285%75%True
6robustnessadd_slangs52583%75%True
7robustnessadd_speech_to_text_typo1910084%75%True
8robustnessadd_ocr_typo209082%75%True
9robustnessadjective_synonym_swap94383%75%True
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness uppercase 27 92 77% \n", + "1 robustness lowercase 16 103 87% \n", + "2 robustness titlecase 22 97 82% \n", + "3 robustness add_typo 13 102 89% \n", + "4 robustness dyslexia_word_swap 10 80 89% \n", + "5 robustness add_abbreviation 11 62 85% \n", + "6 robustness add_slangs 5 25 83% \n", + "7 robustness add_speech_to_text_typo 19 100 84% \n", + "8 robustness add_ocr_typo 20 90 82% \n", + "9 robustness adjective_synonym_swap 9 43 83% \n", + "\n", + " minimum_pass_rate pass \n", + "0 75% True \n", + "1 75% True \n", + "2 75% True \n", + "3 75% True \n", + "4 75% True \n", + "5 75% True \n", + "6 75% True \n", + "7 75% True \n", + "8 75% True \n", + "9 75% True " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "report" + ] + }, + { + "cell_type": "markdown", + "id": "5mgY-0qQ89q0", + "metadata": { + "id": "5mgY-0qQ89q0" + }, + "source": [ + "## MedQA\n", + "\n", + "[What Disease does this Patient Have? A Large-scale Open Domain Question Answering Dataset from Medical Exams](https://paperswithcode.com/dataset/medqa-usmle)\n", + "\n", + "**Dataset Summary**\n", + "\n", + "The MedQA is a benchmark dataset of Multiple choice question answering based on the United States Medical License Exams (USMLE). The dataset is collected from the professional medical board exams.\n", + "\n", + "**Data Splits**\n", + "\n", + "\n", + "- **test** : Testing set from the MedQA dataset, containing 1273 question and answers examples.\n", + "- **test-tiny** : Truncated version of the test set from the MedQA dataset, containing 50 question and answers examples." + ] + }, + { + "cell_type": "markdown", + "id": "a1VNSiHv89q0", + "metadata": { + "id": "a1VNSiHv89q0" + }, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "94913345-199e-4a1f-9672-294a70f79860", + "metadata": { + "colab": { + "referenced_widgets": [ + "9c736878808549f98b220b81a910c32e" + ] + }, + "execution": { + "iopub.execute_input": "2023-11-30T21:06:14.775351Z", + "iopub.status.busy": "2023-11-30T21:06:14.775015Z", + "iopub.status.idle": "2023-11-30T21:08:40.966319Z", + "shell.execute_reply": "2023-11-30T21:08:40.965759Z", + "shell.execute_reply.started": "2023-11-30T21:06:14.775333Z" + }, + "id": "94913345-199e-4a1f-9672-294a70f79860", + "outputId": "ea00aab7-99be-4c49-fba0-c532801d1792", + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9c736878808549f98b220b81a910c32e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Loading checkpoint shards: 0%| | 0/2 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessadd_ocr_typo-A junior orthopaedic surgery resident is compl...-A junior orthopaedic surgery resident is compl...
1robustnessadd_ocr_typo-A 67-year-old man with transitional cell carci...-A 67-year-old m^an y/ith transitional ccll car...
2robustnessadd_ocr_typo-Two weeks after undergoing an emergency cardia...-t^wo weeks aftcr undergoing an emergency cardi...
3robustnessadd_ocr_typo-A 39-year-old woman is brought to the emergenc...-A 39-year-old voman is brought t^o th^e emerge...
4robustnessadd_ocr_typo-A 35-year-old man comes to the physician becau...-A 35-year-old m^an comes t^o t^he physician hc...
5robustnessadd_ocr_typo-A 39-year-old man presents to the emergency de...-A 39-year-old m^an presents t^o tl)e emergency...
6robustnessadd_ocr_typo-A 68-year-old male comes to the physician for ...-A 68-year-old male comes t^o tbe physician f^o...
7robustnessadd_ocr_typo-A 65-year-old man is brought to the emergency ...-A 65-year-old m^an is brought t^o tl)e emergen...
8robustnessadd_ocr_typo-A 37-year-old-woman presents to her primary ca...-A 37-year-old-woman presents t^o h^er primary ...
9robustnessadd_ocr_typo-A 23-year-old woman comes to the physician bec...-A 23-year-old w6man comes t^o t^ie physician b...
10robustnessadd_ocr_typo-A 24-year-old G2P1 woman at 39 weeks’ gestatio...-A 24-year-old G2P1 v/oman at 39 weeks’ gestati...
11robustnessadd_ocr_typo-A 72-year-old man comes to the physician becau...-A 72-year-old m^an comes t^o tl)e physician be...
12robustnessadd_ocr_typo-A 20-year-old man comes to the physician becau...-A 20-year-old m^an comes t^o tlic physician be...
13robustnessadd_ocr_typo-A 47-year-old executive schedules an appointme...-A 47-year-old execut1ve schedules an appointme...
14robustnessadd_ocr_typo-A microbiologist is studying the emergence of ...-A microbiologist is studying tle emergence of ...
15robustnessadd_ocr_typo-A 59-year-old overweight woman presents to the...-A 59-year-old overweight v^oman presents t^o t...
16robustnessadd_ocr_typo-A 7-year-old boy is brought to his pediatricia...-A 7-year-old boy is brought t^o hi^s pediatric...
17robustnessadd_ocr_typo-A 3-month-old boy is brought the emergency dep...-A 3-month-old boy is brought t^he emergency de...
18robustnessadd_ocr_typo-A 29-year-old man presents to the emergency de...-A 29-year-old m^an presents t^o th^e emergency...
19robustnessadd_ocr_typo-A 46-year-old man is brought to the emergency ...-A 46-year-old m^an is brought t^o t^ie emergen...
20robustnessadd_ocr_typo-A 77-year-old woman presents to the emergency ...-A 77-year-old v^oman presents t^o tlie emergen...
21robustnessadd_ocr_typo-A 3-month-old infant is brought to her pediatr...-A 3-month-old infant is brought t^o he^r pedia...
22robustnessadd_ocr_typo-A 30-year-old African American woman comes to ...-A 30-year-old African American ivoman comes t^...
23robustnessadd_ocr_typo-A 62-year-old patient has been hospitalized fo...-A 62-year-old j)atient has been hospitalized f...
24robustnessadd_ocr_typo-A 6-year-old boy is brought to the emergency d...-A 6-year-old boy is brought t^o t^he emergency...
25robustnessadd_ocr_typo-A 5-year-old female suffers from recurrent inf...-A 5-year-old female suffers f^rom recurrent in...
26robustnessadd_ocr_typo-A 3-year-old boy presents to the emergency dep...-A 3-year-old boy presents t^o tbe emergency de...
27robustnessadd_ocr_typo-A 26-year-old woman presents to a gynecologist...-A 26-year-old womau presents t^o a gynecologis...
28robustnessadd_ocr_typo-A 4-year-old previously healthy boy presents w...-A 4-year-old previously healthy boy presents v...
29robustnessadd_ocr_typo-A 3-week-old male newborn is brought to the ph...-A 3-week-old male newborn is brought t^o tle p...
30robustnessdyslexia_word_swap-A junior orthopaedic surgery resident is compl...-A junior orthopaedic surgery resident is compl...
31robustnessdyslexia_word_swap-A 67-year-old man with transitional cell carci...-A 67-year-old man with transitional cell carci...
32robustnessdyslexia_word_swap-Two weeks after undergoing an emergency cardia...-Two weeks after undergoing an emergency cardia...
33robustnessdyslexia_word_swap-A 39-year-old woman is brought to the emergenc...-A 39-year-old woman is brought too the emergen...
34robustnessdyslexia_word_swap-A 35-year-old man comes to the physician becau...-A 35-year-old man comes too the physician beca...
35robustnessdyslexia_word_swap-A 39-year-old man presents to the emergency de...-A 39-year-old man presents too the emergency d...
36robustnessdyslexia_word_swap-A 68-year-old male comes to the physician for ...-A 68-year-old male comes too the physician fou...
37robustnessdyslexia_word_swap-A 65-year-old man is brought to the emergency ...-A 65-year-old man is brought too the emergency...
38robustnessdyslexia_word_swap-A 37-year-old-woman presents to her primary ca...-A 37-year-old-woman presents too her primary c...
39robustnessdyslexia_word_swap-A 23-year-old woman comes to the physician bec...-A 23-year-old woman comes too the physician be...
40robustnessdyslexia_word_swap-A 24-year-old G2P1 woman at 39 weeks’ gestatio...-A 24-year-old G2P1 woman at 39 weeks’ gestatio...
41robustnessdyslexia_word_swap-A 72-year-old man comes to the physician becau...-A 72-year-old man comes too the physician beca...
42robustnessdyslexia_word_swap-A 20-year-old man comes to the physician becau...-A 20-year-old man comes too the physician beca...
43robustnessdyslexia_word_swap-A 47-year-old executive schedules an appointme...-A 47-year-old executive schedules an appointme...
44robustnessdyslexia_word_swap-A microbiologist is studying the emergence of ...-A microbiologist is studying the emergence off...
45robustnessdyslexia_word_swap-A 59-year-old overweight woman presents to the...-A 59-year-old overweight woman presents too th...
46robustnessdyslexia_word_swap-A 7-year-old boy is brought to his pediatricia...-A 7-year-old boy is brought too his pediatrici...
47robustnessdyslexia_word_swap-A 3-month-old boy is brought the emergency dep...-A 3-month-old boy is brought the emergency dep...
48robustnessdyslexia_word_swap-A 29-year-old man presents to the emergency de...-A 29-year-old man presents too the emergency d...
49robustnessdyslexia_word_swap-A 46-year-old man is brought to the emergency ...-A 46-year-old man is brought too the emergency...
50robustnessdyslexia_word_swap-A 77-year-old woman presents to the emergency ...-A 77-year-old woman presents too the emergency...
51robustnessdyslexia_word_swap-A 3-month-old infant is brought to her pediatr...-A 3-month-old infant is brought too her pediat...
52robustnessdyslexia_word_swap-A 30-year-old African American woman comes to ...-A 30-year-old African American woman comes too...
53robustnessdyslexia_word_swap-A 62-year-old patient has been hospitalized fo...-A 62-year-old patient has been hospitalized fo...
54robustnessdyslexia_word_swap-A 6-year-old boy is brought to the emergency d...-A 6-year-old boy is brought too the emergency ...
55robustnessdyslexia_word_swap-A 5-year-old female suffers from recurrent inf...-A 5-year-old female suffers from recurrent inf...
56robustnessdyslexia_word_swap-A 3-year-old boy presents to the emergency dep...-A 3-year-old boy presents too the emergency de...
57robustnessdyslexia_word_swap-A 26-year-old woman presents to a gynecologist...-A 26-year-old woman presents too a gynecologis...
58robustnessdyslexia_word_swap-A 4-year-old previously healthy boy presents w...-A 4-year-old previously healthy boy presents w...
59robustnessdyslexia_word_swap-A 3-week-old male newborn is brought to the ph...-A 3-week-old male newborn is brought too the p...
\n", + "" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness add_ocr_typo - \n", + "1 robustness add_ocr_typo - \n", + "2 robustness add_ocr_typo - \n", + "3 robustness add_ocr_typo - \n", + "4 robustness add_ocr_typo - \n", + "5 robustness add_ocr_typo - \n", + "6 robustness add_ocr_typo - \n", + "7 robustness add_ocr_typo - \n", + "8 robustness add_ocr_typo - \n", + "9 robustness add_ocr_typo - \n", + "10 robustness add_ocr_typo - \n", + "11 robustness add_ocr_typo - \n", + "12 robustness add_ocr_typo - \n", + "13 robustness add_ocr_typo - \n", + "14 robustness add_ocr_typo - \n", + "15 robustness add_ocr_typo - \n", + "16 robustness add_ocr_typo - \n", + "17 robustness add_ocr_typo - \n", + "18 robustness add_ocr_typo - \n", + "19 robustness add_ocr_typo - \n", + "20 robustness add_ocr_typo - \n", + "21 robustness add_ocr_typo - \n", + "22 robustness add_ocr_typo - \n", + "23 robustness add_ocr_typo - \n", + "24 robustness add_ocr_typo - \n", + "25 robustness add_ocr_typo - \n", + "26 robustness add_ocr_typo - \n", + "27 robustness add_ocr_typo - \n", + "28 robustness add_ocr_typo - \n", + "29 robustness add_ocr_typo - \n", + "30 robustness dyslexia_word_swap - \n", + "31 robustness dyslexia_word_swap - \n", + "32 robustness dyslexia_word_swap - \n", + "33 robustness dyslexia_word_swap - \n", + "34 robustness dyslexia_word_swap - \n", + "35 robustness dyslexia_word_swap - \n", + "36 robustness dyslexia_word_swap - \n", + "37 robustness dyslexia_word_swap - \n", + "38 robustness dyslexia_word_swap - \n", + "39 robustness dyslexia_word_swap - \n", + "40 robustness dyslexia_word_swap - \n", + "41 robustness dyslexia_word_swap - \n", + "42 robustness dyslexia_word_swap - \n", + "43 robustness dyslexia_word_swap - \n", + "44 robustness dyslexia_word_swap - \n", + "45 robustness dyslexia_word_swap - \n", + "46 robustness dyslexia_word_swap - \n", + "47 robustness dyslexia_word_swap - \n", + "48 robustness dyslexia_word_swap - \n", + "49 robustness dyslexia_word_swap - \n", + "50 robustness dyslexia_word_swap - \n", + "51 robustness dyslexia_word_swap - \n", + "52 robustness dyslexia_word_swap - \n", + "53 robustness dyslexia_word_swap - \n", + "54 robustness dyslexia_word_swap - \n", + "55 robustness dyslexia_word_swap - \n", + "56 robustness dyslexia_word_swap - \n", + "57 robustness dyslexia_word_swap - \n", + "58 robustness dyslexia_word_swap - \n", + "59 robustness dyslexia_word_swap - \n", + "\n", + " original_question perturbed_context \\\n", + "0 A junior orthopaedic surgery resident is compl... - \n", + "1 A 67-year-old man with transitional cell carci... - \n", + "2 Two weeks after undergoing an emergency cardia... - \n", + "3 A 39-year-old woman is brought to the emergenc... - \n", + "4 A 35-year-old man comes to the physician becau... - \n", + "5 A 39-year-old man presents to the emergency de... - \n", + "6 A 68-year-old male comes to the physician for ... - \n", + "7 A 65-year-old man is brought to the emergency ... - \n", + "8 A 37-year-old-woman presents to her primary ca... - \n", + "9 A 23-year-old woman comes to the physician bec... - \n", + "10 A 24-year-old G2P1 woman at 39 weeks’ gestatio... - \n", + "11 A 72-year-old man comes to the physician becau... - \n", + "12 A 20-year-old man comes to the physician becau... - \n", + "13 A 47-year-old executive schedules an appointme... - \n", + "14 A microbiologist is studying the emergence of ... - \n", + "15 A 59-year-old overweight woman presents to the... - \n", + "16 A 7-year-old boy is brought to his pediatricia... - \n", + "17 A 3-month-old boy is brought the emergency dep... - \n", + "18 A 29-year-old man presents to the emergency de... - \n", + "19 A 46-year-old man is brought to the emergency ... - \n", + "20 A 77-year-old woman presents to the emergency ... - \n", + "21 A 3-month-old infant is brought to her pediatr... - \n", + "22 A 30-year-old African American woman comes to ... - \n", + "23 A 62-year-old patient has been hospitalized fo... - \n", + "24 A 6-year-old boy is brought to the emergency d... - \n", + "25 A 5-year-old female suffers from recurrent inf... - \n", + "26 A 3-year-old boy presents to the emergency dep... - \n", + "27 A 26-year-old woman presents to a gynecologist... - \n", + "28 A 4-year-old previously healthy boy presents w... - \n", + "29 A 3-week-old male newborn is brought to the ph... - \n", + "30 A junior orthopaedic surgery resident is compl... - \n", + "31 A 67-year-old man with transitional cell carci... - \n", + "32 Two weeks after undergoing an emergency cardia... - \n", + "33 A 39-year-old woman is brought to the emergenc... - \n", + "34 A 35-year-old man comes to the physician becau... - \n", + "35 A 39-year-old man presents to the emergency de... - \n", + "36 A 68-year-old male comes to the physician for ... - \n", + "37 A 65-year-old man is brought to the emergency ... - \n", + "38 A 37-year-old-woman presents to her primary ca... - \n", + "39 A 23-year-old woman comes to the physician bec... - \n", + "40 A 24-year-old G2P1 woman at 39 weeks’ gestatio... - \n", + "41 A 72-year-old man comes to the physician becau... - \n", + "42 A 20-year-old man comes to the physician becau... - \n", + "43 A 47-year-old executive schedules an appointme... - \n", + "44 A microbiologist is studying the emergence of ... - \n", + "45 A 59-year-old overweight woman presents to the... - \n", + "46 A 7-year-old boy is brought to his pediatricia... - \n", + "47 A 3-month-old boy is brought the emergency dep... - \n", + "48 A 29-year-old man presents to the emergency de... - \n", + "49 A 46-year-old man is brought to the emergency ... - \n", + "50 A 77-year-old woman presents to the emergency ... - \n", + "51 A 3-month-old infant is brought to her pediatr... - \n", + "52 A 30-year-old African American woman comes to ... - \n", + "53 A 62-year-old patient has been hospitalized fo... - \n", + "54 A 6-year-old boy is brought to the emergency d... - \n", + "55 A 5-year-old female suffers from recurrent inf... - \n", + "56 A 3-year-old boy presents to the emergency dep... - \n", + "57 A 26-year-old woman presents to a gynecologist... - \n", + "58 A 4-year-old previously healthy boy presents w... - \n", + "59 A 3-week-old male newborn is brought to the ph... - \n", + "\n", + " perturbed_question \n", + "0 A junior orthopaedic surgery resident is compl... \n", + "1 A 67-year-old m^an y/ith transitional ccll car... \n", + "2 t^wo weeks aftcr undergoing an emergency cardi... \n", + "3 A 39-year-old voman is brought t^o th^e emerge... \n", + "4 A 35-year-old m^an comes t^o t^he physician hc... \n", + "5 A 39-year-old m^an presents t^o tl)e emergency... \n", + "6 A 68-year-old male comes t^o tbe physician f^o... \n", + "7 A 65-year-old m^an is brought t^o tl)e emergen... \n", + "8 A 37-year-old-woman presents t^o h^er primary ... \n", + "9 A 23-year-old w6man comes t^o t^ie physician b... \n", + "10 A 24-year-old G2P1 v/oman at 39 weeks’ gestati... \n", + "11 A 72-year-old m^an comes t^o tl)e physician be... \n", + "12 A 20-year-old m^an comes t^o tlic physician be... \n", + "13 A 47-year-old execut1ve schedules an appointme... \n", + "14 A microbiologist is studying tle emergence of ... \n", + "15 A 59-year-old overweight v^oman presents t^o t... \n", + "16 A 7-year-old boy is brought t^o hi^s pediatric... \n", + "17 A 3-month-old boy is brought t^he emergency de... \n", + "18 A 29-year-old m^an presents t^o th^e emergency... \n", + "19 A 46-year-old m^an is brought t^o t^ie emergen... \n", + "20 A 77-year-old v^oman presents t^o tlie emergen... \n", + "21 A 3-month-old infant is brought t^o he^r pedia... \n", + "22 A 30-year-old African American ivoman comes t^... \n", + "23 A 62-year-old j)atient has been hospitalized f... \n", + "24 A 6-year-old boy is brought t^o t^he emergency... \n", + "25 A 5-year-old female suffers f^rom recurrent in... \n", + "26 A 3-year-old boy presents t^o tbe emergency de... \n", + "27 A 26-year-old womau presents t^o a gynecologis... \n", + "28 A 4-year-old previously healthy boy presents v... \n", + "29 A 3-week-old male newborn is brought t^o tle p... \n", + "30 A junior orthopaedic surgery resident is compl... \n", + "31 A 67-year-old man with transitional cell carci... \n", + "32 Two weeks after undergoing an emergency cardia... \n", + "33 A 39-year-old woman is brought too the emergen... \n", + "34 A 35-year-old man comes too the physician beca... \n", + "35 A 39-year-old man presents too the emergency d... \n", + "36 A 68-year-old male comes too the physician fou... \n", + "37 A 65-year-old man is brought too the emergency... \n", + "38 A 37-year-old-woman presents too her primary c... \n", + "39 A 23-year-old woman comes too the physician be... \n", + "40 A 24-year-old G2P1 woman at 39 weeks’ gestatio... \n", + "41 A 72-year-old man comes too the physician beca... \n", + "42 A 20-year-old man comes too the physician beca... \n", + "43 A 47-year-old executive schedules an appointme... \n", + "44 A microbiologist is studying the emergence off... \n", + "45 A 59-year-old overweight woman presents too th... \n", + "46 A 7-year-old boy is brought too his pediatrici... \n", + "47 A 3-month-old boy is brought the emergency dep... \n", + "48 A 29-year-old man presents too the emergency d... \n", + "49 A 46-year-old man is brought too the emergency... \n", + "50 A 77-year-old woman presents too the emergency... \n", + "51 A 3-month-old infant is brought too her pediat... \n", + "52 A 30-year-old African American woman comes too... \n", + "53 A 62-year-old patient has been hospitalized fo... \n", + "54 A 6-year-old boy is brought too the emergency ... \n", + "55 A 5-year-old female suffers from recurrent inf... \n", + "56 A 3-year-old boy presents too the emergency de... \n", + "57 A 26-year-old woman presents too a gynecologis... \n", + "58 A 4-year-old previously healthy boy presents w... \n", + "59 A 3-week-old male newborn is brought too the p... " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "id": "2fPk-Z6o89q5", + "metadata": { + "id": "2fPk-Z6o89q5" + }, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0bece2be-f747-455c-9b8a-33fb1be1e52e", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:08:42.478585Z", + "iopub.status.busy": "2023-11-30T21:08:42.478328Z", + "iopub.status.idle": "2023-11-30T21:19:04.158344Z", + "shell.execute_reply": "2023-11-30T21:19:04.157825Z", + "shell.execute_reply.started": "2023-11-30T21:08:42.478569Z" + }, + "id": "0bece2be-f747-455c-9b8a-33fb1be1e52e", + "tags": [] + }, + "outputs": [], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "id": "7TgAuYpG89q5", + "metadata": { + "id": "7TgAuYpG89q5" + }, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bf5e8570-ade8-432b-b80d-1bd4fb6565bd", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:19:04.159186Z", + "iopub.status.busy": "2023-11-30T21:19:04.159013Z", + "iopub.status.idle": "2023-11-30T21:19:04.178803Z", + "shell.execute_reply": "2023-11-30T21:19:04.178371Z", + "shell.execute_reply.started": "2023-11-30T21:19:04.159170Z" + }, + "id": "bf5e8570-ade8-432b-b80d-1bd4fb6565bd", + "outputId": "ff08e618-eb09-440d-f7d2-034fd311f52f", + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resulteval_scorepass
0robustnessadd_ocr_typo-A junior orthopaedic surgery resident is compl...-A junior orthopaedic surgery resident is compl...BA1.0False
1robustnessadd_ocr_typo-A 67-year-old man with transitional cell carci...-A 67-year-old m^an y/ith transitional ccll car...DD0.0True
2robustnessadd_ocr_typo-Two weeks after undergoing an emergency cardia...-t^wo weeks aftcr undergoing an emergency cardi...DD0.0True
3robustnessadd_ocr_typo-A 39-year-old woman is brought to the emergenc...-A 39-year-old voman is brought t^o th^e emerge...AA0.0True
4robustnessadd_ocr_typo-A 35-year-old man comes to the physician becau...-A 35-year-old m^an comes t^o t^he physician hc...DD0.0True
5robustnessadd_ocr_typo-A 39-year-old man presents to the emergency de...-A 39-year-old m^an presents t^o tl)e emergency...EE0.0True
6robustnessadd_ocr_typo-A 68-year-old male comes to the physician for ...-A 68-year-old male comes t^o tbe physician f^o...AC1.0False
7robustnessadd_ocr_typo-A 65-year-old man is brought to the emergency ...-A 65-year-old m^an is brought t^o tl)e emergen...CC0.0True
8robustnessadd_ocr_typo-A 37-year-old-woman presents to her primary ca...-A 37-year-old-woman presents t^o h^er primary ...CC0.0True
9robustnessadd_ocr_typo-A 23-year-old woman comes to the physician bec...-A 23-year-old w6man comes t^o t^ie physician b...AA0.0True
10robustnessadd_ocr_typo-A 24-year-old G2P1 woman at 39 weeks’ gestatio...-A 24-year-old G2P1 v/oman at 39 weeks’ gestati...DD0.0True
11robustnessadd_ocr_typo-A 72-year-old man comes to the physician becau...-A 72-year-old m^an comes t^o tl)e physician be...DE1.0False
12robustnessadd_ocr_typo-A 20-year-old man comes to the physician becau...-A 20-year-old m^an comes t^o tlic physician be...DB1.0False
13robustnessadd_ocr_typo-A 47-year-old executive schedules an appointme...-A 47-year-old execut1ve schedules an appointme...EE0.0True
14robustnessadd_ocr_typo-A microbiologist is studying the emergence of ...-A microbiologist is studying tle emergence of ...EE0.0True
15robustnessadd_ocr_typo-A 59-year-old overweight woman presents to the...-A 59-year-old overweight v^oman presents t^o t...BB0.0True
16robustnessadd_ocr_typo-A 7-year-old boy is brought to his pediatricia...-A 7-year-old boy is brought t^o hi^s pediatric...DD0.0True
17robustnessadd_ocr_typo-A 3-month-old boy is brought the emergency dep...-A 3-month-old boy is brought t^he emergency de...EE0.0True
18robustnessadd_ocr_typo-A 29-year-old man presents to the emergency de...-A 29-year-old m^an presents t^o th^e emergency...DD0.0True
19robustnessadd_ocr_typo-A 46-year-old man is brought to the emergency ...-A 46-year-old m^an is brought t^o t^ie emergen...CC0.0True
20robustnessadd_ocr_typo-A 77-year-old woman presents to the emergency ...-A 77-year-old v^oman presents t^o tlie emergen...EE0.0True
21robustnessadd_ocr_typo-A 3-month-old infant is brought to her pediatr...-A 3-month-old infant is brought t^o he^r pedia...AA0.0True
22robustnessadd_ocr_typo-A 30-year-old African American woman comes to ...-A 30-year-old African American ivoman comes t^...BB0.0True
23robustnessadd_ocr_typo-A 62-year-old patient has been hospitalized fo...-A 62-year-old j)atient has been hospitalized f...EE0.0True
24robustnessadd_ocr_typo-A 6-year-old boy is brought to the emergency d...-A 6-year-old boy is brought t^o t^he emergency...EE0.0True
25robustnessadd_ocr_typo-A 5-year-old female suffers from recurrent inf...-A 5-year-old female suffers f^rom recurrent in...EE0.0True
26robustnessadd_ocr_typo-A 3-year-old boy presents to the emergency dep...-A 3-year-old boy presents t^o tbe emergency de...EE0.0True
27robustnessadd_ocr_typo-A 26-year-old woman presents to a gynecologist...-A 26-year-old womau presents t^o a gynecologis...AA0.0True
28robustnessadd_ocr_typo-A 4-year-old previously healthy boy presents w...-A 4-year-old previously healthy boy presents v...BB0.0True
29robustnessadd_ocr_typo-A 3-week-old male newborn is brought to the ph...-A 3-week-old male newborn is brought t^o tle p...DD0.0True
30robustnessdyslexia_word_swap-A junior orthopaedic surgery resident is compl...-A junior orthopaedic surgery resident is compl...BB0.0True
31robustnessdyslexia_word_swap-A 67-year-old man with transitional cell carci...-A 67-year-old man with transitional cell carci...DE1.0False
32robustnessdyslexia_word_swap-Two weeks after undergoing an emergency cardia...-Two weeks after undergoing an emergency cardia...DD0.0True
33robustnessdyslexia_word_swap-A 39-year-old woman is brought to the emergenc...-A 39-year-old woman is brought too the emergen...AA0.0True
34robustnessdyslexia_word_swap-A 35-year-old man comes to the physician becau...-A 35-year-old man comes too the physician beca...DD0.0True
35robustnessdyslexia_word_swap-A 39-year-old man presents to the emergency de...-A 39-year-old man presents too the emergency d...EE0.0True
36robustnessdyslexia_word_swap-A 68-year-old male comes to the physician for ...-A 68-year-old male comes too the physician fou...AA0.0True
37robustnessdyslexia_word_swap-A 65-year-old man is brought to the emergency ...-A 65-year-old man is brought too the emergency...CC0.0True
38robustnessdyslexia_word_swap-A 37-year-old-woman presents to her primary ca...-A 37-year-old-woman presents too her primary c...CC0.0True
39robustnessdyslexia_word_swap-A 23-year-old woman comes to the physician bec...-A 23-year-old woman comes too the physician be...AA0.0True
40robustnessdyslexia_word_swap-A 24-year-old G2P1 woman at 39 weeks’ gestatio...-A 24-year-old G2P1 woman at 39 weeks’ gestatio...DD0.0True
41robustnessdyslexia_word_swap-A 72-year-old man comes to the physician becau...-A 72-year-old man comes too the physician beca...DD0.0True
42robustnessdyslexia_word_swap-A 20-year-old man comes to the physician becau...-A 20-year-old man comes too the physician beca...DD0.0True
43robustnessdyslexia_word_swap-A 47-year-old executive schedules an appointme...-A 47-year-old executive schedules an appointme...EE0.0True
44robustnessdyslexia_word_swap-A microbiologist is studying the emergence of ...-A microbiologist is studying the emergence off...EE0.0True
45robustnessdyslexia_word_swap-A 59-year-old overweight woman presents to the...-A 59-year-old overweight woman presents too th...BB0.0True
46robustnessdyslexia_word_swap-A 7-year-old boy is brought to his pediatricia...-A 7-year-old boy is brought too his pediatrici...DE1.0False
47robustnessdyslexia_word_swap-A 3-month-old boy is brought the emergency dep...-A 3-month-old boy is brought the emergency dep...EE0.0True
48robustnessdyslexia_word_swap-A 29-year-old man presents to the emergency de...-A 29-year-old man presents too the emergency d...DD0.0True
49robustnessdyslexia_word_swap-A 46-year-old man is brought to the emergency ...-A 46-year-old man is brought too the emergency...CC0.0True
50robustnessdyslexia_word_swap-A 77-year-old woman presents to the emergency ...-A 77-year-old woman presents too the emergency...EE0.0True
51robustnessdyslexia_word_swap-A 3-month-old infant is brought to her pediatr...-A 3-month-old infant is brought too her pediat...AA0.0True
52robustnessdyslexia_word_swap-A 30-year-old African American woman comes to ...-A 30-year-old African American woman comes too...BB0.0True
53robustnessdyslexia_word_swap-A 62-year-old patient has been hospitalized fo...-A 62-year-old patient has been hospitalized fo...EE0.0True
54robustnessdyslexia_word_swap-A 6-year-old boy is brought to the emergency d...-A 6-year-old boy is brought too the emergency ...EE0.0True
55robustnessdyslexia_word_swap-A 5-year-old female suffers from recurrent inf...-A 5-year-old female suffers from recurrent inf...EE0.0True
56robustnessdyslexia_word_swap-A 3-year-old boy presents to the emergency dep...-A 3-year-old boy presents too the emergency de...EE0.0True
57robustnessdyslexia_word_swap-A 26-year-old woman presents to a gynecologist...-A 26-year-old woman presents too a gynecologis...AD1.0False
58robustnessdyslexia_word_swap-A 4-year-old previously healthy boy presents w...-A 4-year-old previously healthy boy presents w...BB0.0True
59robustnessdyslexia_word_swap-A 3-week-old male newborn is brought to the ph...-A 3-week-old male newborn is brought too the p...DD0.0True
\n", + "
" + ], + "text/plain": [ + " category test_type original_context \\\n", + "0 robustness add_ocr_typo - \n", + "1 robustness add_ocr_typo - \n", + "2 robustness add_ocr_typo - \n", + "3 robustness add_ocr_typo - \n", + "4 robustness add_ocr_typo - \n", + "5 robustness add_ocr_typo - \n", + "6 robustness add_ocr_typo - \n", + "7 robustness add_ocr_typo - \n", + "8 robustness add_ocr_typo - \n", + "9 robustness add_ocr_typo - \n", + "10 robustness add_ocr_typo - \n", + "11 robustness add_ocr_typo - \n", + "12 robustness add_ocr_typo - \n", + "13 robustness add_ocr_typo - \n", + "14 robustness add_ocr_typo - \n", + "15 robustness add_ocr_typo - \n", + "16 robustness add_ocr_typo - \n", + "17 robustness add_ocr_typo - \n", + "18 robustness add_ocr_typo - \n", + "19 robustness add_ocr_typo - \n", + "20 robustness add_ocr_typo - \n", + "21 robustness add_ocr_typo - \n", + "22 robustness add_ocr_typo - \n", + "23 robustness add_ocr_typo - \n", + "24 robustness add_ocr_typo - \n", + "25 robustness add_ocr_typo - \n", + "26 robustness add_ocr_typo - \n", + "27 robustness add_ocr_typo - \n", + "28 robustness add_ocr_typo - \n", + "29 robustness add_ocr_typo - \n", + "30 robustness dyslexia_word_swap - \n", + "31 robustness dyslexia_word_swap - \n", + "32 robustness dyslexia_word_swap - \n", + "33 robustness dyslexia_word_swap - \n", + "34 robustness dyslexia_word_swap - \n", + "35 robustness dyslexia_word_swap - \n", + "36 robustness dyslexia_word_swap - \n", + "37 robustness dyslexia_word_swap - \n", + "38 robustness dyslexia_word_swap - \n", + "39 robustness dyslexia_word_swap - \n", + "40 robustness dyslexia_word_swap - \n", + "41 robustness dyslexia_word_swap - \n", + "42 robustness dyslexia_word_swap - \n", + "43 robustness dyslexia_word_swap - \n", + "44 robustness dyslexia_word_swap - \n", + "45 robustness dyslexia_word_swap - \n", + "46 robustness dyslexia_word_swap - \n", + "47 robustness dyslexia_word_swap - \n", + "48 robustness dyslexia_word_swap - \n", + "49 robustness dyslexia_word_swap - \n", + "50 robustness dyslexia_word_swap - \n", + "51 robustness dyslexia_word_swap - \n", + "52 robustness dyslexia_word_swap - \n", + "53 robustness dyslexia_word_swap - \n", + "54 robustness dyslexia_word_swap - \n", + "55 robustness dyslexia_word_swap - \n", + "56 robustness dyslexia_word_swap - \n", + "57 robustness dyslexia_word_swap - \n", + "58 robustness dyslexia_word_swap - \n", + "59 robustness dyslexia_word_swap - \n", + "\n", + " original_question perturbed_context \\\n", + "0 A junior orthopaedic surgery resident is compl... - \n", + "1 A 67-year-old man with transitional cell carci... - \n", + "2 Two weeks after undergoing an emergency cardia... - \n", + "3 A 39-year-old woman is brought to the emergenc... - \n", + "4 A 35-year-old man comes to the physician becau... - \n", + "5 A 39-year-old man presents to the emergency de... - \n", + "6 A 68-year-old male comes to the physician for ... - \n", + "7 A 65-year-old man is brought to the emergency ... - \n", + "8 A 37-year-old-woman presents to her primary ca... - \n", + "9 A 23-year-old woman comes to the physician bec... - \n", + "10 A 24-year-old G2P1 woman at 39 weeks’ gestatio... - \n", + "11 A 72-year-old man comes to the physician becau... - \n", + "12 A 20-year-old man comes to the physician becau... - \n", + "13 A 47-year-old executive schedules an appointme... - \n", + "14 A microbiologist is studying the emergence of ... - \n", + "15 A 59-year-old overweight woman presents to the... - \n", + "16 A 7-year-old boy is brought to his pediatricia... - \n", + "17 A 3-month-old boy is brought the emergency dep... - \n", + "18 A 29-year-old man presents to the emergency de... - \n", + "19 A 46-year-old man is brought to the emergency ... - \n", + "20 A 77-year-old woman presents to the emergency ... - \n", + "21 A 3-month-old infant is brought to her pediatr... - \n", + "22 A 30-year-old African American woman comes to ... - \n", + "23 A 62-year-old patient has been hospitalized fo... - \n", + "24 A 6-year-old boy is brought to the emergency d... - \n", + "25 A 5-year-old female suffers from recurrent inf... - \n", + "26 A 3-year-old boy presents to the emergency dep... - \n", + "27 A 26-year-old woman presents to a gynecologist... - \n", + "28 A 4-year-old previously healthy boy presents w... - \n", + "29 A 3-week-old male newborn is brought to the ph... - \n", + "30 A junior orthopaedic surgery resident is compl... - \n", + "31 A 67-year-old man with transitional cell carci... - \n", + "32 Two weeks after undergoing an emergency cardia... - \n", + "33 A 39-year-old woman is brought to the emergenc... - \n", + "34 A 35-year-old man comes to the physician becau... - \n", + "35 A 39-year-old man presents to the emergency de... - \n", + "36 A 68-year-old male comes to the physician for ... - \n", + "37 A 65-year-old man is brought to the emergency ... - \n", + "38 A 37-year-old-woman presents to her primary ca... - \n", + "39 A 23-year-old woman comes to the physician bec... - \n", + "40 A 24-year-old G2P1 woman at 39 weeks’ gestatio... - \n", + "41 A 72-year-old man comes to the physician becau... - \n", + "42 A 20-year-old man comes to the physician becau... - \n", + "43 A 47-year-old executive schedules an appointme... - \n", + "44 A microbiologist is studying the emergence of ... - \n", + "45 A 59-year-old overweight woman presents to the... - \n", + "46 A 7-year-old boy is brought to his pediatricia... - \n", + "47 A 3-month-old boy is brought the emergency dep... - \n", + "48 A 29-year-old man presents to the emergency de... - \n", + "49 A 46-year-old man is brought to the emergency ... - \n", + "50 A 77-year-old woman presents to the emergency ... - \n", + "51 A 3-month-old infant is brought to her pediatr... - \n", + "52 A 30-year-old African American woman comes to ... - \n", + "53 A 62-year-old patient has been hospitalized fo... - \n", + "54 A 6-year-old boy is brought to the emergency d... - \n", + "55 A 5-year-old female suffers from recurrent inf... - \n", + "56 A 3-year-old boy presents to the emergency dep... - \n", + "57 A 26-year-old woman presents to a gynecologist... - \n", + "58 A 4-year-old previously healthy boy presents w... - \n", + "59 A 3-week-old male newborn is brought to the ph... - \n", + "\n", + " perturbed_question expected_result \\\n", + "0 A junior orthopaedic surgery resident is compl... B \n", + "1 A 67-year-old m^an y/ith transitional ccll car... D \n", + "2 t^wo weeks aftcr undergoing an emergency cardi... D \n", + "3 A 39-year-old voman is brought t^o th^e emerge... A \n", + "4 A 35-year-old m^an comes t^o t^he physician hc... D \n", + "5 A 39-year-old m^an presents t^o tl)e emergency... E \n", + "6 A 68-year-old male comes t^o tbe physician f^o... A \n", + "7 A 65-year-old m^an is brought t^o tl)e emergen... C \n", + "8 A 37-year-old-woman presents t^o h^er primary ... C \n", + "9 A 23-year-old w6man comes t^o t^ie physician b... A \n", + "10 A 24-year-old G2P1 v/oman at 39 weeks’ gestati... D \n", + "11 A 72-year-old m^an comes t^o tl)e physician be... D \n", + "12 A 20-year-old m^an comes t^o tlic physician be... D \n", + "13 A 47-year-old execut1ve schedules an appointme... E \n", + "14 A microbiologist is studying tle emergence of ... E \n", + "15 A 59-year-old overweight v^oman presents t^o t... B \n", + "16 A 7-year-old boy is brought t^o hi^s pediatric... D \n", + "17 A 3-month-old boy is brought t^he emergency de... E \n", + "18 A 29-year-old m^an presents t^o th^e emergency... D \n", + "19 A 46-year-old m^an is brought t^o t^ie emergen... C \n", + "20 A 77-year-old v^oman presents t^o tlie emergen... E \n", + "21 A 3-month-old infant is brought t^o he^r pedia... A \n", + "22 A 30-year-old African American ivoman comes t^... B \n", + "23 A 62-year-old j)atient has been hospitalized f... E \n", + "24 A 6-year-old boy is brought t^o t^he emergency... E \n", + "25 A 5-year-old female suffers f^rom recurrent in... E \n", + "26 A 3-year-old boy presents t^o tbe emergency de... E \n", + "27 A 26-year-old womau presents t^o a gynecologis... A \n", + "28 A 4-year-old previously healthy boy presents v... B \n", + "29 A 3-week-old male newborn is brought t^o tle p... D \n", + "30 A junior orthopaedic surgery resident is compl... B \n", + "31 A 67-year-old man with transitional cell carci... D \n", + "32 Two weeks after undergoing an emergency cardia... D \n", + "33 A 39-year-old woman is brought too the emergen... A \n", + "34 A 35-year-old man comes too the physician beca... D \n", + "35 A 39-year-old man presents too the emergency d... E \n", + "36 A 68-year-old male comes too the physician fou... A \n", + "37 A 65-year-old man is brought too the emergency... C \n", + "38 A 37-year-old-woman presents too her primary c... C \n", + "39 A 23-year-old woman comes too the physician be... A \n", + "40 A 24-year-old G2P1 woman at 39 weeks’ gestatio... D \n", + "41 A 72-year-old man comes too the physician beca... D \n", + "42 A 20-year-old man comes too the physician beca... D \n", + "43 A 47-year-old executive schedules an appointme... E \n", + "44 A microbiologist is studying the emergence off... E \n", + "45 A 59-year-old overweight woman presents too th... B \n", + "46 A 7-year-old boy is brought too his pediatrici... D \n", + "47 A 3-month-old boy is brought the emergency dep... E \n", + "48 A 29-year-old man presents too the emergency d... D \n", + "49 A 46-year-old man is brought too the emergency... C \n", + "50 A 77-year-old woman presents too the emergency... E \n", + "51 A 3-month-old infant is brought too her pediat... A \n", + "52 A 30-year-old African American woman comes too... B \n", + "53 A 62-year-old patient has been hospitalized fo... E \n", + "54 A 6-year-old boy is brought too the emergency ... E \n", + "55 A 5-year-old female suffers from recurrent inf... E \n", + "56 A 3-year-old boy presents too the emergency de... E \n", + "57 A 26-year-old woman presents too a gynecologis... A \n", + "58 A 4-year-old previously healthy boy presents w... B \n", + "59 A 3-week-old male newborn is brought too the p... D \n", + "\n", + " actual_result eval_score pass \n", + "0 A 1.0 False \n", + "1 D 0.0 True \n", + "2 D 0.0 True \n", + "3 A 0.0 True \n", + "4 D 0.0 True \n", + "5 E 0.0 True \n", + "6 C 1.0 False \n", + "7 C 0.0 True \n", + "8 C 0.0 True \n", + "9 A 0.0 True \n", + "10 D 0.0 True \n", + "11 E 1.0 False \n", + "12 B 1.0 False \n", + "13 E 0.0 True \n", + "14 E 0.0 True \n", + "15 B 0.0 True \n", + "16 D 0.0 True \n", + "17 E 0.0 True \n", + "18 D 0.0 True \n", + "19 C 0.0 True \n", + "20 E 0.0 True \n", + "21 A 0.0 True \n", + "22 B 0.0 True \n", + "23 E 0.0 True \n", + "24 E 0.0 True \n", + "25 E 0.0 True \n", + "26 E 0.0 True \n", + "27 A 0.0 True \n", + "28 B 0.0 True \n", + "29 D 0.0 True \n", + "30 B 0.0 True \n", + "31 E 1.0 False \n", + "32 D 0.0 True \n", + "33 A 0.0 True \n", + "34 D 0.0 True \n", + "35 E 0.0 True \n", + "36 A 0.0 True \n", + "37 C 0.0 True \n", + "38 C 0.0 True \n", + "39 A 0.0 True \n", + "40 D 0.0 True \n", + "41 D 0.0 True \n", + "42 D 0.0 True \n", + "43 E 0.0 True \n", + "44 E 0.0 True \n", + "45 B 0.0 True \n", + "46 E 1.0 False \n", + "47 E 0.0 True \n", + "48 D 0.0 True \n", + "49 C 0.0 True \n", + "50 E 0.0 True \n", + "51 A 0.0 True \n", + "52 B 0.0 True \n", + "53 E 0.0 True \n", + "54 E 0.0 True \n", + "55 E 0.0 True \n", + "56 E 0.0 True \n", + "57 D 1.0 False \n", + "58 B 0.0 True \n", + "59 D 0.0 True " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.generated_results()" + ] + }, + { + "cell_type": "markdown", + "id": "jixbpnNb89q5", + "metadata": { + "id": "jixbpnNb89q5" + }, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b8a74d27-1d88-4fe0-ac54-c8a569fdf048", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:19:04.179484Z", + "iopub.status.busy": "2023-11-30T21:19:04.179336Z", + "iopub.status.idle": "2023-11-30T21:19:04.269655Z", + "shell.execute_reply": "2023-11-30T21:19:04.269220Z", + "shell.execute_reply.started": "2023-11-30T21:19:04.179470Z" + }, + "id": "b8a74d27-1d88-4fe0-ac54-c8a569fdf048", + "outputId": "ecbdff3a-2e06-487c-df1b-e67f191b1029", + "tags": [] + }, + "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", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_ocr_typo42687%66%True
1robustnessdyslexia_word_swap32790%60%True
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness add_ocr_typo 4 26 87% \n", + "1 robustness dyslexia_word_swap 3 27 90% \n", + "\n", + " minimum_pass_rate pass \n", + "0 66% True \n", + "1 60% True " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.report()" + ] + }, + { + "cell_type": "markdown", + "id": "3eb133b8-1ed7-4af8-b3ae-5432ad59eff6", + "metadata": { + "id": "3eb133b8-1ed7-4af8-b3ae-5432ad59eff6" + }, + "source": [ + "## PubMedQA\n", + "\n", + "[PubMedQA: A Dataset for Biomedical Research Question Answering](https://arxiv.org/abs/1909.06146)\n", + "\n", + "**Dataset Summary**\n", + "\n", + "The PubMedQA is a benchmark dataset for biomedical question answering (QA) dataset collected from PubMed abstracts. The task of PubMedQA is to answer research questions with yes/no/maybe (e.g.: Do preoperative statins reduce atrial fibrillation after coronary artery bypass grafting?) using the corresponding abstracts.\n", + "\n", + "**Data Splits**\n", + "\n", + "- **pqaa** : Truncated version of pqa_artificial subset from the PubMedQA, containing 500 question and answers examples.\n", + "- **pqal** : Truncated version of pqa_labeled subset from the PubMedQA, containing 500 question answers examples." + ] + }, + { + "cell_type": "markdown", + "id": "3JIjcMDC89q5", + "metadata": { + "id": "3JIjcMDC89q5" + }, + "source": [ + "### Setup and Configure Harness" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07d2a026-7f6c-4e67-86b0-38a37a3a83d1", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:32:24.323612Z", + "iopub.status.busy": "2023-11-30T21:32:24.323346Z", + "iopub.status.idle": "2023-11-30T21:32:24.352922Z", + "shell.execute_reply": "2023-11-30T21:32:24.352060Z", + "shell.execute_reply.started": "2023-11-30T21:32:24.323593Z" + }, + "id": "07d2a026-7f6c-4e67-86b0-38a37a3a83d1", + "outputId": "1733f7c0-3db0-4e6d-df17-5f4818bd06d9", + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"evaluation\": {\n", + " \"metric\": \"string_distance\",\n", + " \"distance\": \"jaro\",\n", + " \"threshold\": 0.1\n", + " },\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 0.65\n", + " },\n", + " \"robustness\": {\n", + " \"add_ocr_typo\": {\n", + " \"min_pass_rate\": 0.66\n", + " },\n", + " \"dyslexia_word_swap\": {\n", + " \"min_pass_rate\": 0.6\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(\n", + " task=\"question-answering\",\n", + " model={\"model\": \"j2-jumbo-instruct\", \"hub\":\"ai21\"},\n", + " data={\"data_source\" :\"PubMedQA\",\n", + " \"split\":\"pqaa\"},\n", + " config={\n", + " \"evaluation\": {\"metric\":\"string_distance\",\"distance\":\"jaro\",\"threshold\":0.1},\n", + " 'tests': {'defaults': {'min_pass_rate': 0.65},\n", + "\n", + " 'robustness': {'add_ocr_typo': {'min_pass_rate': 0.66},\n", + " 'dyslexia_word_swap':{'min_pass_rate': 0.60}\n", + " }\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "sDHxPRZC89q5", + "metadata": { + "id": "sDHxPRZC89q5" + }, + "source": [ + "Note: for evaluation we are using **string distance metrics**" + ] + }, + { + "cell_type": "markdown", + "id": "PjpqGJlW-nJT", + "metadata": { + "id": "PjpqGJlW-nJT" + }, + "source": [ + "Let us run it for 20 examples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cef8fd5-faf7-45f8-b803-9031ffa694cf", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:32:24.731367Z", + "iopub.status.busy": "2023-11-30T21:32:24.731184Z", + "iopub.status.idle": "2023-11-30T21:32:24.734682Z", + "shell.execute_reply": "2023-11-30T21:32:24.734141Z", + "shell.execute_reply.started": "2023-11-30T21:32:24.731353Z" + }, + "id": "5cef8fd5-faf7-45f8-b803-9031ffa694cf", + "tags": [] + }, + "outputs": [], + "source": [ + "harness.data =harness.data[:20]" + ] + }, + { + "cell_type": "markdown", + "id": "5LYqiGA389q6", + "metadata": { + "id": "5LYqiGA389q6" + }, + "source": [ + "### Generating the test cases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a94a79d-c76a-4b56-b318-789a6091f251", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:32:25.106523Z", + "iopub.status.busy": "2023-11-30T21:32:25.105849Z", + "iopub.status.idle": "2023-11-30T21:32:26.710113Z", + "shell.execute_reply": "2023-11-30T21:32:26.709576Z", + "shell.execute_reply.started": "2023-11-30T21:32:25.106506Z" + }, + "id": "4a94a79d-c76a-4b56-b318-789a6091f251", + "outputId": "9655bada-a3e9-44a8-e0c9-943c5ad838a9", + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 11554.56it/s]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.generate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6199ddf7-3b19-4602-b4d7-42ddd78d0182", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:32:26.711219Z", + "iopub.status.busy": "2023-11-30T21:32:26.711057Z", + "iopub.status.idle": "2023-11-30T21:32:26.722309Z", + "shell.execute_reply": "2023-11-30T21:32:26.721809Z", + "shell.execute_reply.started": "2023-11-30T21:32:26.711205Z" + }, + "id": "6199ddf7-3b19-4602-b4d7-42ddd78d0182", + "outputId": "ccce031c-4290-4fd4-8055-83cad88983c7", + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_question
0robustnessadd_ocr_typoContext (1): Cardiomyocyte proliferation gradu...does fgf10 promote regional foetal cardiomyocy...Context (1): Cardiomyocyte proliferation gradu...does fgf10 promote regional foetal cardiomyocy...
1robustnessadd_ocr_typoContext (1): Ethanol (EtOH) exposure during ge...do selenium or selenium plus folic acid-supple...Context (1): Ethanol (EtOH) exposure duriug ge...do selenium or selenium plus folic acid-supple...
2robustnessadd_ocr_typoContext (1): To study the association between ...are bone mineral density and vertebral fractur...Context (1): t^o studv tl)e association betAve...are bone mineral density an^d vertebral fractu...
3robustnessadd_ocr_typoContext (1): To assess the prevalence of porta...is portal hypertensive colopathy associated wi...Context (1): t^o assess t^e prevalence of port...is portal hypertensive colopathy associated y/...
4robustnessadd_ocr_typoContext (1): The hOGG1 Ser326Cys polymorphism ...are the ape1 asp/asp genotype and the combinat...Context (1): tlic hOGG1 Ser326Cys polymorphism...are tle ape1 asp/asp genotype a^nd tle combina...
5robustnessadd_ocr_typoContext (1): Aldehyde dehydrogenase 1 (ALDH1) ...does aldehyde dehydrogenase 1 expression corre...Context (1): Aldehyde dehydrogenase 1 (ALDH1) ...does aldehyde dehydrogenase 1 expression corre...
6robustnessadd_ocr_typoContext (1): To screen and validate the global...are hepatocyte growth factor receptor , matrix...Context (1): t^o screen a^d validate tbe globa...are hepatocyte grov/th faclor receptor , matri...
7robustnessadd_ocr_typoContext (1): The epidermal growth factor recep...do assessment and prognostic analysis of egfr ...Context (1): tlie epidermal gro^vth faftor rec...do assessment a^d prognostic analylis of egfr ...
8robustnessadd_ocr_typoContext (1): Early appearance of antibodies sp...are anti-type ii collagen antibodies , anti-cc...Context (1): earlv appearance of antibodies fp...are anti-type ii collagen antibodies , anti-cc...
9robustnessadd_ocr_typoContext (1): To identify differences in perspe...does concordance of family and staff member re...Context (1): t^o identifv differences i^n pers...does concordance of lamily an^d stafl memher r...
10robustnessadd_ocr_typoContext (1): The NINDS trial demonstrated the ...does prior asymptomatic parenchymal hemorrhage...Context (1): tl)e NINDS tryaU demonstrated the...does prior asymptomatic parenchymal hemorrhage...
11robustnessadd_ocr_typoContext (1): We assessed whether dietary calci...is dietary calcium but not elemental calcium f...Context (1): w^e assessed vliether dietary cal...is dietary calcium b^ut n^ot elemental calcium...
12robustnessadd_ocr_typoContext (1): To determine if fetal-placental h...does fetal-placental hypoxia result from failu...Context (1): t^o determin6 if fetal-placental ...does fetal-placental hypoxia rcfult lrom failu...
13robustnessadd_ocr_typoContext (1): The contribution of HIV-exposure ...do hiv-exposed children account for more than ...Context (1): tbe contribution of HIV-exposure ...do hiv-exposed children accouut f^or morc tlia...
14robustnessadd_ocr_typoContext (1): Right ventricular dysfunction (RV...is abnormal regulation of renin angiotensin al...Context (1): riglit ventricular dysfunction (R...is abnormal regulation of renin angiotensin al...
15robustnessadd_ocr_typoContext (1): To conduct a comprehensive mappin...are novel epigenetic changes in cdkn2a associa...Context (1): t^o conduct a comprehensive mappi...are novel epigenetic changes i^n cdkn2a associ...
16robustnessadd_ocr_typoContext (1): Bile acids are signaling molecule...does g-protein-coupled bile acid receptor play...Context (1): Bile acids are signaling molecule...does g-protein-coupled bile acid receptor p1ay...
17robustnessadd_ocr_typoContext (1): Cigarette smoking is a leading ca...are smoking-induced gene expression changes in...Context (1): Cigarette smoking is a leading ca...are smoking-induced gene expression changes i^...
18robustnessadd_ocr_typoContext (1): Angiogenesis is a prerequisite fo...does tumstatin transfected into human glioma c...Context (1): Angiogenesis is a prerequisite f^...does tumstatin transfected int6 hnman glioma c...
19robustnessadd_ocr_typoContext (1): To investigate the correlation of...does [ znf217 expression correlate with the bi...Context (1): t^o investigate th^e correlation ...does [ znf217 expression correlate v«ith t^ie ...
20robustnessdyslexia_word_swapContext (1): Cardiomyocyte proliferation gradu...does fgf10 promote regional foetal cardiomyocy...Context (1): Cardiomyocyte proliferation gradu...does fgf10 promote regional foetal cardiomyocy...
21robustnessdyslexia_word_swapContext (1): Ethanol (EtOH) exposure during ge...do selenium or selenium plus folic acid-supple...Context (1): Ethanol (EtOH) exposure during ge...do selenium or selenium plus folic acid-supple...
22robustnessdyslexia_word_swapContext (1): To study the association between ...are bone mineral density and vertebral fractur...Context (1): To study the association between ...are bone mineral density and vertebral fractur...
23robustnessdyslexia_word_swapContext (1): To assess the prevalence of porta...is portal hypertensive colopathy associated wi...Context (1): To assess the prevalence off port...is portal hypertensive colopathy associated wi...
24robustnessdyslexia_word_swapContext (1): The hOGG1 Ser326Cys polymorphism ...are the ape1 asp/asp genotype and the combinat...Context (1): The hOGG1 Ser326Cys polymorphism ...are the ape1 asp/asp genotype and the combinat...
25robustnessdyslexia_word_swapContext (1): Aldehyde dehydrogenase 1 (ALDH1) ...does aldehyde dehydrogenase 1 expression corre...Context (1): Aldehyde dehydrogenase 1 (ALDH1) ...does aldehyde dehydrogenase 1 expression corre...
26robustnessdyslexia_word_swapContext (1): To screen and validate the global...are hepatocyte growth factor receptor , matrix...Context (1): To screen and validate the global...are hepatocyte growth factor receptor , matrix...
27robustnessdyslexia_word_swapContext (1): The epidermal growth factor recep...do assessment and prognostic analysis of egfr ...Context (1): The epidermal growth factor recep...do assessment and prognostic analysis off egfr...
28robustnessdyslexia_word_swapContext (1): Early appearance of antibodies sp...are anti-type ii collagen antibodies , anti-cc...Context (1): Early appearance off antibodies s...are anti-type ii collagen antibodies , anti-cc...
29robustnessdyslexia_word_swapContext (1): To identify differences in perspe...does concordance of family and staff member re...Context (1): To identify differences in perspe...does concordance off family and staff member r...
30robustnessdyslexia_word_swapContext (1): The NINDS trial demonstrated the ...does prior asymptomatic parenchymal hemorrhage...Context (1): The NINDS trial demonstrated the ...does prior asymptomatic parenchymal hemorrhage...
31robustnessdyslexia_word_swapContext (1): We assessed whether dietary calci...is dietary calcium but not elemental calcium f...Context (1): We assessed whether dietary calci...is dietary calcium but knot elemental calcium ...
32robustnessdyslexia_word_swapContext (1): To determine if fetal-placental h...does fetal-placental hypoxia result from failu...Context (1): To determine if fetal-placental h...does fetal-placental hypoxia result from failu...
33robustnessdyslexia_word_swapContext (1): The contribution of HIV-exposure ...do hiv-exposed children account for more than ...Context (1): The contribution off HIV-exposure...do hiv-exposed children account four more then...
34robustnessdyslexia_word_swapContext (1): Right ventricular dysfunction (RV...is abnormal regulation of renin angiotensin al...Context (1): Right ventricular dysfunction (RV...is abnormal regulation off renin angiotensin a...
35robustnessdyslexia_word_swapContext (1): To conduct a comprehensive mappin...are novel epigenetic changes in cdkn2a associa...Context (1): To conduct a comprehensive mappin...are novel epigenetic changes in cdkn2a associa...
36robustnessdyslexia_word_swapContext (1): Bile acids are signaling molecule...does g-protein-coupled bile acid receptor play...Context (1): Bile acids are signaling molecule...does g-protein-coupled bile acid receptor play...
37robustnessdyslexia_word_swapContext (1): Cigarette smoking is a leading ca...are smoking-induced gene expression changes in...Context (1): Cigarette smoking is a leading ca...are smoking-induced gene expression changes in...
38robustnessdyslexia_word_swapContext (1): Angiogenesis is a prerequisite fo...does tumstatin transfected into human glioma c...Context (1): Angiogenesis is a prerequisite fo...does tumstatin transfected into human glioma c...
39robustnessdyslexia_word_swapContext (1): To investigate the correlation of...does [ znf217 expression correlate with the bi...Context (1): To investigate the correlation of...does [ znf217 expression correlate with the bi...
\n", + "
" + ], + "text/plain": [ + " category test_type \\\n", + "0 robustness add_ocr_typo \n", + "1 robustness add_ocr_typo \n", + "2 robustness add_ocr_typo \n", + "3 robustness add_ocr_typo \n", + "4 robustness add_ocr_typo \n", + "5 robustness add_ocr_typo \n", + "6 robustness add_ocr_typo \n", + "7 robustness add_ocr_typo \n", + "8 robustness add_ocr_typo \n", + "9 robustness add_ocr_typo \n", + "10 robustness add_ocr_typo \n", + "11 robustness add_ocr_typo \n", + "12 robustness add_ocr_typo \n", + "13 robustness add_ocr_typo \n", + "14 robustness add_ocr_typo \n", + "15 robustness add_ocr_typo \n", + "16 robustness add_ocr_typo \n", + "17 robustness add_ocr_typo \n", + "18 robustness add_ocr_typo \n", + "19 robustness add_ocr_typo \n", + "20 robustness dyslexia_word_swap \n", + "21 robustness dyslexia_word_swap \n", + "22 robustness dyslexia_word_swap \n", + "23 robustness dyslexia_word_swap \n", + "24 robustness dyslexia_word_swap \n", + "25 robustness dyslexia_word_swap \n", + "26 robustness dyslexia_word_swap \n", + "27 robustness dyslexia_word_swap \n", + "28 robustness dyslexia_word_swap \n", + "29 robustness dyslexia_word_swap \n", + "30 robustness dyslexia_word_swap \n", + "31 robustness dyslexia_word_swap \n", + "32 robustness dyslexia_word_swap \n", + "33 robustness dyslexia_word_swap \n", + "34 robustness dyslexia_word_swap \n", + "35 robustness dyslexia_word_swap \n", + "36 robustness dyslexia_word_swap \n", + "37 robustness dyslexia_word_swap \n", + "38 robustness dyslexia_word_swap \n", + "39 robustness dyslexia_word_swap \n", + "\n", + " original_context \\\n", + "0 Context (1): Cardiomyocyte proliferation gradu... \n", + "1 Context (1): Ethanol (EtOH) exposure during ge... \n", + "2 Context (1): To study the association between ... \n", + "3 Context (1): To assess the prevalence of porta... \n", + "4 Context (1): The hOGG1 Ser326Cys polymorphism ... \n", + "5 Context (1): Aldehyde dehydrogenase 1 (ALDH1) ... \n", + "6 Context (1): To screen and validate the global... \n", + "7 Context (1): The epidermal growth factor recep... \n", + "8 Context (1): Early appearance of antibodies sp... \n", + "9 Context (1): To identify differences in perspe... \n", + "10 Context (1): The NINDS trial demonstrated the ... \n", + "11 Context (1): We assessed whether dietary calci... \n", + "12 Context (1): To determine if fetal-placental h... \n", + "13 Context (1): The contribution of HIV-exposure ... \n", + "14 Context (1): Right ventricular dysfunction (RV... \n", + "15 Context (1): To conduct a comprehensive mappin... \n", + "16 Context (1): Bile acids are signaling molecule... \n", + "17 Context (1): Cigarette smoking is a leading ca... \n", + "18 Context (1): Angiogenesis is a prerequisite fo... \n", + "19 Context (1): To investigate the correlation of... \n", + "20 Context (1): Cardiomyocyte proliferation gradu... \n", + "21 Context (1): Ethanol (EtOH) exposure during ge... \n", + "22 Context (1): To study the association between ... \n", + "23 Context (1): To assess the prevalence of porta... \n", + "24 Context (1): The hOGG1 Ser326Cys polymorphism ... \n", + "25 Context (1): Aldehyde dehydrogenase 1 (ALDH1) ... \n", + "26 Context (1): To screen and validate the global... \n", + "27 Context (1): The epidermal growth factor recep... \n", + "28 Context (1): Early appearance of antibodies sp... \n", + "29 Context (1): To identify differences in perspe... \n", + "30 Context (1): The NINDS trial demonstrated the ... \n", + "31 Context (1): We assessed whether dietary calci... \n", + "32 Context (1): To determine if fetal-placental h... \n", + "33 Context (1): The contribution of HIV-exposure ... \n", + "34 Context (1): Right ventricular dysfunction (RV... \n", + "35 Context (1): To conduct a comprehensive mappin... \n", + "36 Context (1): Bile acids are signaling molecule... \n", + "37 Context (1): Cigarette smoking is a leading ca... \n", + "38 Context (1): Angiogenesis is a prerequisite fo... \n", + "39 Context (1): To investigate the correlation of... \n", + "\n", + " original_question \\\n", + "0 does fgf10 promote regional foetal cardiomyocy... \n", + "1 do selenium or selenium plus folic acid-supple... \n", + "2 are bone mineral density and vertebral fractur... \n", + "3 is portal hypertensive colopathy associated wi... \n", + "4 are the ape1 asp/asp genotype and the combinat... \n", + "5 does aldehyde dehydrogenase 1 expression corre... \n", + "6 are hepatocyte growth factor receptor , matrix... \n", + "7 do assessment and prognostic analysis of egfr ... \n", + "8 are anti-type ii collagen antibodies , anti-cc... \n", + "9 does concordance of family and staff member re... \n", + "10 does prior asymptomatic parenchymal hemorrhage... \n", + "11 is dietary calcium but not elemental calcium f... \n", + "12 does fetal-placental hypoxia result from failu... \n", + "13 do hiv-exposed children account for more than ... \n", + "14 is abnormal regulation of renin angiotensin al... \n", + "15 are novel epigenetic changes in cdkn2a associa... \n", + "16 does g-protein-coupled bile acid receptor play... \n", + "17 are smoking-induced gene expression changes in... \n", + "18 does tumstatin transfected into human glioma c... \n", + "19 does [ znf217 expression correlate with the bi... \n", + "20 does fgf10 promote regional foetal cardiomyocy... \n", + "21 do selenium or selenium plus folic acid-supple... \n", + "22 are bone mineral density and vertebral fractur... \n", + "23 is portal hypertensive colopathy associated wi... \n", + "24 are the ape1 asp/asp genotype and the combinat... \n", + "25 does aldehyde dehydrogenase 1 expression corre... \n", + "26 are hepatocyte growth factor receptor , matrix... \n", + "27 do assessment and prognostic analysis of egfr ... \n", + "28 are anti-type ii collagen antibodies , anti-cc... \n", + "29 does concordance of family and staff member re... \n", + "30 does prior asymptomatic parenchymal hemorrhage... \n", + "31 is dietary calcium but not elemental calcium f... \n", + "32 does fetal-placental hypoxia result from failu... \n", + "33 do hiv-exposed children account for more than ... \n", + "34 is abnormal regulation of renin angiotensin al... \n", + "35 are novel epigenetic changes in cdkn2a associa... \n", + "36 does g-protein-coupled bile acid receptor play... \n", + "37 are smoking-induced gene expression changes in... \n", + "38 does tumstatin transfected into human glioma c... \n", + "39 does [ znf217 expression correlate with the bi... \n", + "\n", + " perturbed_context \\\n", + "0 Context (1): Cardiomyocyte proliferation gradu... \n", + "1 Context (1): Ethanol (EtOH) exposure duriug ge... \n", + "2 Context (1): t^o studv tl)e association betAve... \n", + "3 Context (1): t^o assess t^e prevalence of port... \n", + "4 Context (1): tlic hOGG1 Ser326Cys polymorphism... \n", + "5 Context (1): Aldehyde dehydrogenase 1 (ALDH1) ... \n", + "6 Context (1): t^o screen a^d validate tbe globa... \n", + "7 Context (1): tlie epidermal gro^vth faftor rec... \n", + "8 Context (1): earlv appearance of antibodies fp... \n", + "9 Context (1): t^o identifv differences i^n pers... \n", + "10 Context (1): tl)e NINDS tryaU demonstrated the... \n", + "11 Context (1): w^e assessed vliether dietary cal... \n", + "12 Context (1): t^o determin6 if fetal-placental ... \n", + "13 Context (1): tbe contribution of HIV-exposure ... \n", + "14 Context (1): riglit ventricular dysfunction (R... \n", + "15 Context (1): t^o conduct a comprehensive mappi... \n", + "16 Context (1): Bile acids are signaling molecule... \n", + "17 Context (1): Cigarette smoking is a leading ca... \n", + "18 Context (1): Angiogenesis is a prerequisite f^... \n", + "19 Context (1): t^o investigate th^e correlation ... \n", + "20 Context (1): Cardiomyocyte proliferation gradu... \n", + "21 Context (1): Ethanol (EtOH) exposure during ge... \n", + "22 Context (1): To study the association between ... \n", + "23 Context (1): To assess the prevalence off port... \n", + "24 Context (1): The hOGG1 Ser326Cys polymorphism ... \n", + "25 Context (1): Aldehyde dehydrogenase 1 (ALDH1) ... \n", + "26 Context (1): To screen and validate the global... \n", + "27 Context (1): The epidermal growth factor recep... \n", + "28 Context (1): Early appearance off antibodies s... \n", + "29 Context (1): To identify differences in perspe... \n", + "30 Context (1): The NINDS trial demonstrated the ... \n", + "31 Context (1): We assessed whether dietary calci... \n", + "32 Context (1): To determine if fetal-placental h... \n", + "33 Context (1): The contribution off HIV-exposure... \n", + "34 Context (1): Right ventricular dysfunction (RV... \n", + "35 Context (1): To conduct a comprehensive mappin... \n", + "36 Context (1): Bile acids are signaling molecule... \n", + "37 Context (1): Cigarette smoking is a leading ca... \n", + "38 Context (1): Angiogenesis is a prerequisite fo... \n", + "39 Context (1): To investigate the correlation of... \n", + "\n", + " perturbed_question \n", + "0 does fgf10 promote regional foetal cardiomyocy... \n", + "1 do selenium or selenium plus folic acid-supple... \n", + "2 are bone mineral density an^d vertebral fractu... \n", + "3 is portal hypertensive colopathy associated y/... \n", + "4 are tle ape1 asp/asp genotype a^nd tle combina... \n", + "5 does aldehyde dehydrogenase 1 expression corre... \n", + "6 are hepatocyte grov/th faclor receptor , matri... \n", + "7 do assessment a^d prognostic analylis of egfr ... \n", + "8 are anti-type ii collagen antibodies , anti-cc... \n", + "9 does concordance of lamily an^d stafl memher r... \n", + "10 does prior asymptomatic parenchymal hemorrhage... \n", + "11 is dietary calcium b^ut n^ot elemental calcium... \n", + "12 does fetal-placental hypoxia rcfult lrom failu... \n", + "13 do hiv-exposed children accouut f^or morc tlia... \n", + "14 is abnormal regulation of renin angiotensin al... \n", + "15 are novel epigenetic changes i^n cdkn2a associ... \n", + "16 does g-protein-coupled bile acid receptor p1ay... \n", + "17 are smoking-induced gene expression changes i^... \n", + "18 does tumstatin transfected int6 hnman glioma c... \n", + "19 does [ znf217 expression correlate v«ith t^ie ... \n", + "20 does fgf10 promote regional foetal cardiomyocy... \n", + "21 do selenium or selenium plus folic acid-supple... \n", + "22 are bone mineral density and vertebral fractur... \n", + "23 is portal hypertensive colopathy associated wi... \n", + "24 are the ape1 asp/asp genotype and the combinat... \n", + "25 does aldehyde dehydrogenase 1 expression corre... \n", + "26 are hepatocyte growth factor receptor , matrix... \n", + "27 do assessment and prognostic analysis off egfr... \n", + "28 are anti-type ii collagen antibodies , anti-cc... \n", + "29 does concordance off family and staff member r... \n", + "30 does prior asymptomatic parenchymal hemorrhage... \n", + "31 is dietary calcium but knot elemental calcium ... \n", + "32 does fetal-placental hypoxia result from failu... \n", + "33 do hiv-exposed children account four more then... \n", + "34 is abnormal regulation off renin angiotensin a... \n", + "35 are novel epigenetic changes in cdkn2a associa... \n", + "36 does g-protein-coupled bile acid receptor play... \n", + "37 are smoking-induced gene expression changes in... \n", + "38 does tumstatin transfected into human glioma c... \n", + "39 does [ znf217 expression correlate with the bi... " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "id": "7n6_dNzG89q6", + "metadata": { + "id": "7n6_dNzG89q6" + }, + "source": [ + "### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8051391e-1634-4937-a599-78ed7dc5a66e", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:32:26.723020Z", + "iopub.status.busy": "2023-11-30T21:32:26.722868Z", + "iopub.status.idle": "2023-11-30T21:33:08.952765Z", + "shell.execute_reply": "2023-11-30T21:33:08.952297Z", + "shell.execute_reply.started": "2023-11-30T21:32:26.723006Z" + }, + "id": "8051391e-1634-4937-a599-78ed7dc5a66e", + "outputId": "c92d313d-64f2-4fa7-9e25-f3179939c171", + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 40/40 [00:42<00:00, 1.05s/it]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "id": "WxrWelHu89q6", + "metadata": { + "id": "WxrWelHu89q6" + }, + "source": [ + "### Generated Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3398a5fe-f821-4802-a9da-4c373ef827ed", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:33:08.953551Z", + "iopub.status.busy": "2023-11-30T21:33:08.953384Z", + "iopub.status.idle": "2023-11-30T21:33:08.967183Z", + "shell.execute_reply": "2023-11-30T21:33:08.966721Z", + "shell.execute_reply.started": "2023-11-30T21:33:08.953536Z" + }, + "id": "3398a5fe-f821-4802-a9da-4c373ef827ed", + "outputId": "8c9d5999-25d5-4003-d518-65c8546b4d1f", + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resulteval_scorepass
0robustnessadd_ocr_typoContext (1): Cardiomyocyte proliferation gradu...does fgf10 promote regional foetal cardiomyocy...Context (1): Cardiomyocyte proliferation gradu...does fgf10 promote regional foetal cardiomyocy...\\nYes.\\nYes0.083333True
1robustnessadd_ocr_typoContext (1): Ethanol (EtOH) exposure during ge...do selenium or selenium plus folic acid-supple...Context (1): Ethanol (EtOH) exposure duriug ge...do selenium or selenium plus folic acid-supple...\\nYes\\nYes0.000000True
2robustnessadd_ocr_typoContext (1): To study the association between ...are bone mineral density and vertebral fractur...Context (1): t^o studv tl)e association betAve...are bone mineral density an^d vertebral fractu...\\nYes\\nYes0.000000True
3robustnessadd_ocr_typoContext (1): To assess the prevalence of porta...is portal hypertensive colopathy associated wi...Context (1): t^o assess t^e prevalence of port...is portal hypertensive colopathy associated y/...\\nYes\\nYes0.000000True
4robustnessadd_ocr_typoContext (1): The hOGG1 Ser326Cys polymorphism ...are the ape1 asp/asp genotype and the combinat...Context (1): tlic hOGG1 Ser326Cys polymorphism...are tle ape1 asp/asp genotype a^nd tle combina...\\nYes\\nNo1.000000False
5robustnessadd_ocr_typoContext (1): Aldehyde dehydrogenase 1 (ALDH1) ...does aldehyde dehydrogenase 1 expression corre...Context (1): Aldehyde dehydrogenase 1 (ALDH1) ...does aldehyde dehydrogenase 1 expression corre...\\nYes\\nYes0.000000True
6robustnessadd_ocr_typoContext (1): To screen and validate the global...are hepatocyte growth factor receptor , matrix...Context (1): t^o screen a^d validate tbe globa...are hepatocyte grov/th faclor receptor , matri...\\nYes\\nYes0.000000True
7robustnessadd_ocr_typoContext (1): The epidermal growth factor recep...do assessment and prognostic analysis of egfr ...Context (1): tlie epidermal gro^vth faftor rec...do assessment a^d prognostic analylis of egfr ...\\nYes.\\nYes0.083333True
8robustnessadd_ocr_typoContext (1): Early appearance of antibodies sp...are anti-type ii collagen antibodies , anti-cc...Context (1): earlv appearance of antibodies fp...are anti-type ii collagen antibodies , anti-cc...\\nYes\\nYes0.000000True
9robustnessadd_ocr_typoContext (1): To identify differences in perspe...does concordance of family and staff member re...Context (1): t^o identifv differences i^n pers...does concordance of lamily an^d stafl memher r...\\nYes\\nYes0.000000True
10robustnessadd_ocr_typoContext (1): The NINDS trial demonstrated the ...does prior asymptomatic parenchymal hemorrhage...Context (1): tl)e NINDS tryaU demonstrated the...does prior asymptomatic parenchymal hemorrhage...\\nYes\\nYes0.000000True
11robustnessadd_ocr_typoContext (1): We assessed whether dietary calci...is dietary calcium but not elemental calcium f...Context (1): w^e assessed vliether dietary cal...is dietary calcium b^ut n^ot elemental calcium...\\nYes\\nYes0.000000True
12robustnessadd_ocr_typoContext (1): To determine if fetal-placental h...does fetal-placental hypoxia result from failu...Context (1): t^o determin6 if fetal-placental ...does fetal-placental hypoxia rcfult lrom failu...\\nYes\\nYes0.000000True
13robustnessadd_ocr_typoContext (1): The contribution of HIV-exposure ...do hiv-exposed children account for more than ...Context (1): tbe contribution of HIV-exposure ...do hiv-exposed children accouut f^or morc tlia...\\nYes.\\nNo1.000000False
14robustnessadd_ocr_typoContext (1): Right ventricular dysfunction (RV...is abnormal regulation of renin angiotensin al...Context (1): riglit ventricular dysfunction (R...is abnormal regulation of renin angiotensin al...\\nYes\\nYes0.000000True
15robustnessadd_ocr_typoContext (1): To conduct a comprehensive mappin...are novel epigenetic changes in cdkn2a associa...Context (1): t^o conduct a comprehensive mappi...are novel epigenetic changes i^n cdkn2a associ...\\nYes\\nYes0.000000True
16robustnessadd_ocr_typoContext (1): Bile acids are signaling molecule...does g-protein-coupled bile acid receptor play...Context (1): Bile acids are signaling molecule...does g-protein-coupled bile acid receptor p1ay...\\nYes\\nYes0.000000True
17robustnessadd_ocr_typoContext (1): Cigarette smoking is a leading ca...are smoking-induced gene expression changes in...Context (1): Cigarette smoking is a leading ca...are smoking-induced gene expression changes i^...\\nYes\\nYes0.000000True
18robustnessadd_ocr_typoContext (1): Angiogenesis is a prerequisite fo...does tumstatin transfected into human glioma c...Context (1): Angiogenesis is a prerequisite f^...does tumstatin transfected int6 hnman glioma c...\\nYes\\nYes0.000000True
19robustnessadd_ocr_typoContext (1): To investigate the correlation of...does [ znf217 expression correlate with the bi...Context (1): t^o investigate th^e correlation ...does [ znf217 expression correlate v«ith t^ie ...\\nYes\\nYes0.000000True
20robustnessdyslexia_word_swapContext (1): Cardiomyocyte proliferation gradu...does fgf10 promote regional foetal cardiomyocy...Context (1): Cardiomyocyte proliferation gradu...does fgf10 promote regional foetal cardiomyocy...\\nYes\\nYes0.000000True
21robustnessdyslexia_word_swapContext (1): Ethanol (EtOH) exposure during ge...do selenium or selenium plus folic acid-supple...Context (1): Ethanol (EtOH) exposure during ge...do selenium or selenium plus folic acid-supple...\\nYes\\nYes0.000000True
22robustnessdyslexia_word_swapContext (1): To study the association between ...are bone mineral density and vertebral fractur...Context (1): To study the association between ...are bone mineral density and vertebral fractur...\\nYes\\nYes0.000000True
23robustnessdyslexia_word_swapContext (1): To assess the prevalence of porta...is portal hypertensive colopathy associated wi...Context (1): To assess the prevalence off port...is portal hypertensive colopathy associated wi...\\nYes\\nYes0.000000True
24robustnessdyslexia_word_swapContext (1): The hOGG1 Ser326Cys polymorphism ...are the ape1 asp/asp genotype and the combinat...Context (1): The hOGG1 Ser326Cys polymorphism ...are the ape1 asp/asp genotype and the combinat...\\nYes.\\nYes0.083333True
25robustnessdyslexia_word_swapContext (1): Aldehyde dehydrogenase 1 (ALDH1) ...does aldehyde dehydrogenase 1 expression corre...Context (1): Aldehyde dehydrogenase 1 (ALDH1) ...does aldehyde dehydrogenase 1 expression corre...\\nYes\\nYes0.000000True
26robustnessdyslexia_word_swapContext (1): To screen and validate the global...are hepatocyte growth factor receptor , matrix...Context (1): To screen and validate the global...are hepatocyte growth factor receptor , matrix...\\nYes\\nYes0.000000True
27robustnessdyslexia_word_swapContext (1): The epidermal growth factor recep...do assessment and prognostic analysis of egfr ...Context (1): The epidermal growth factor recep...do assessment and prognostic analysis off egfr...\\nYes\\nYes.0.083333True
28robustnessdyslexia_word_swapContext (1): Early appearance of antibodies sp...are anti-type ii collagen antibodies , anti-cc...Context (1): Early appearance off antibodies s...are anti-type ii collagen antibodies , anti-cc...\\nYes\\nYes0.000000True
29robustnessdyslexia_word_swapContext (1): To identify differences in perspe...does concordance of family and staff member re...Context (1): To identify differences in perspe...does concordance off family and staff member r...\\nYes\\nYes0.000000True
30robustnessdyslexia_word_swapContext (1): The NINDS trial demonstrated the ...does prior asymptomatic parenchymal hemorrhage...Context (1): The NINDS trial demonstrated the ...does prior asymptomatic parenchymal hemorrhage...\\nYes\\nYes0.000000True
31robustnessdyslexia_word_swapContext (1): We assessed whether dietary calci...is dietary calcium but not elemental calcium f...Context (1): We assessed whether dietary calci...is dietary calcium but knot elemental calcium ...\\nYes\\nYes0.000000True
32robustnessdyslexia_word_swapContext (1): To determine if fetal-placental h...does fetal-placental hypoxia result from failu...Context (1): To determine if fetal-placental h...does fetal-placental hypoxia result from failu...\\nYes\\nNo1.000000False
33robustnessdyslexia_word_swapContext (1): The contribution of HIV-exposure ...do hiv-exposed children account for more than ...Context (1): The contribution off HIV-exposure...do hiv-exposed children account four more then...\\nYes\\nYes0.000000True
34robustnessdyslexia_word_swapContext (1): Right ventricular dysfunction (RV...is abnormal regulation of renin angiotensin al...Context (1): Right ventricular dysfunction (RV...is abnormal regulation off renin angiotensin a...\\nYes\\nYes0.000000True
35robustnessdyslexia_word_swapContext (1): To conduct a comprehensive mappin...are novel epigenetic changes in cdkn2a associa...Context (1): To conduct a comprehensive mappin...are novel epigenetic changes in cdkn2a associa...\\nYes\\nYes0.000000True
36robustnessdyslexia_word_swapContext (1): Bile acids are signaling molecule...does g-protein-coupled bile acid receptor play...Context (1): Bile acids are signaling molecule...does g-protein-coupled bile acid receptor play...\\nYes\\nYes0.000000True
37robustnessdyslexia_word_swapContext (1): Cigarette smoking is a leading ca...are smoking-induced gene expression changes in...Context (1): Cigarette smoking is a leading ca...are smoking-induced gene expression changes in...\\nYes.\\nYes0.083333True
38robustnessdyslexia_word_swapContext (1): Angiogenesis is a prerequisite fo...does tumstatin transfected into human glioma c...Context (1): Angiogenesis is a prerequisite fo...does tumstatin transfected into human glioma c...\\nYes\\nYes.0.083333True
39robustnessdyslexia_word_swapContext (1): To investigate the correlation of...does [ znf217 expression correlate with the bi...Context (1): To investigate the correlation of...does [ znf217 expression correlate with the bi...\\nYes\\nYes0.000000True
\n", + "
" + ], + "text/plain": [ + " category test_type \\\n", + "0 robustness add_ocr_typo \n", + "1 robustness add_ocr_typo \n", + "2 robustness add_ocr_typo \n", + "3 robustness add_ocr_typo \n", + "4 robustness add_ocr_typo \n", + "5 robustness add_ocr_typo \n", + "6 robustness add_ocr_typo \n", + "7 robustness add_ocr_typo \n", + "8 robustness add_ocr_typo \n", + "9 robustness add_ocr_typo \n", + "10 robustness add_ocr_typo \n", + "11 robustness add_ocr_typo \n", + "12 robustness add_ocr_typo \n", + "13 robustness add_ocr_typo \n", + "14 robustness add_ocr_typo \n", + "15 robustness add_ocr_typo \n", + "16 robustness add_ocr_typo \n", + "17 robustness add_ocr_typo \n", + "18 robustness add_ocr_typo \n", + "19 robustness add_ocr_typo \n", + "20 robustness dyslexia_word_swap \n", + "21 robustness dyslexia_word_swap \n", + "22 robustness dyslexia_word_swap \n", + "23 robustness dyslexia_word_swap \n", + "24 robustness dyslexia_word_swap \n", + "25 robustness dyslexia_word_swap \n", + "26 robustness dyslexia_word_swap \n", + "27 robustness dyslexia_word_swap \n", + "28 robustness dyslexia_word_swap \n", + "29 robustness dyslexia_word_swap \n", + "30 robustness dyslexia_word_swap \n", + "31 robustness dyslexia_word_swap \n", + "32 robustness dyslexia_word_swap \n", + "33 robustness dyslexia_word_swap \n", + "34 robustness dyslexia_word_swap \n", + "35 robustness dyslexia_word_swap \n", + "36 robustness dyslexia_word_swap \n", + "37 robustness dyslexia_word_swap \n", + "38 robustness dyslexia_word_swap \n", + "39 robustness dyslexia_word_swap \n", + "\n", + " original_context \\\n", + "0 Context (1): Cardiomyocyte proliferation gradu... \n", + "1 Context (1): Ethanol (EtOH) exposure during ge... \n", + "2 Context (1): To study the association between ... \n", + "3 Context (1): To assess the prevalence of porta... \n", + "4 Context (1): The hOGG1 Ser326Cys polymorphism ... \n", + "5 Context (1): Aldehyde dehydrogenase 1 (ALDH1) ... \n", + "6 Context (1): To screen and validate the global... \n", + "7 Context (1): The epidermal growth factor recep... \n", + "8 Context (1): Early appearance of antibodies sp... \n", + "9 Context (1): To identify differences in perspe... \n", + "10 Context (1): The NINDS trial demonstrated the ... \n", + "11 Context (1): We assessed whether dietary calci... \n", + "12 Context (1): To determine if fetal-placental h... \n", + "13 Context (1): The contribution of HIV-exposure ... \n", + "14 Context (1): Right ventricular dysfunction (RV... \n", + "15 Context (1): To conduct a comprehensive mappin... \n", + "16 Context (1): Bile acids are signaling molecule... \n", + "17 Context (1): Cigarette smoking is a leading ca... \n", + "18 Context (1): Angiogenesis is a prerequisite fo... \n", + "19 Context (1): To investigate the correlation of... \n", + "20 Context (1): Cardiomyocyte proliferation gradu... \n", + "21 Context (1): Ethanol (EtOH) exposure during ge... \n", + "22 Context (1): To study the association between ... \n", + "23 Context (1): To assess the prevalence of porta... \n", + "24 Context (1): The hOGG1 Ser326Cys polymorphism ... \n", + "25 Context (1): Aldehyde dehydrogenase 1 (ALDH1) ... \n", + "26 Context (1): To screen and validate the global... \n", + "27 Context (1): The epidermal growth factor recep... \n", + "28 Context (1): Early appearance of antibodies sp... \n", + "29 Context (1): To identify differences in perspe... \n", + "30 Context (1): The NINDS trial demonstrated the ... \n", + "31 Context (1): We assessed whether dietary calci... \n", + "32 Context (1): To determine if fetal-placental h... \n", + "33 Context (1): The contribution of HIV-exposure ... \n", + "34 Context (1): Right ventricular dysfunction (RV... \n", + "35 Context (1): To conduct a comprehensive mappin... \n", + "36 Context (1): Bile acids are signaling molecule... \n", + "37 Context (1): Cigarette smoking is a leading ca... \n", + "38 Context (1): Angiogenesis is a prerequisite fo... \n", + "39 Context (1): To investigate the correlation of... \n", + "\n", + " original_question \\\n", + "0 does fgf10 promote regional foetal cardiomyocy... \n", + "1 do selenium or selenium plus folic acid-supple... \n", + "2 are bone mineral density and vertebral fractur... \n", + "3 is portal hypertensive colopathy associated wi... \n", + "4 are the ape1 asp/asp genotype and the combinat... \n", + "5 does aldehyde dehydrogenase 1 expression corre... \n", + "6 are hepatocyte growth factor receptor , matrix... \n", + "7 do assessment and prognostic analysis of egfr ... \n", + "8 are anti-type ii collagen antibodies , anti-cc... \n", + "9 does concordance of family and staff member re... \n", + "10 does prior asymptomatic parenchymal hemorrhage... \n", + "11 is dietary calcium but not elemental calcium f... \n", + "12 does fetal-placental hypoxia result from failu... \n", + "13 do hiv-exposed children account for more than ... \n", + "14 is abnormal regulation of renin angiotensin al... \n", + "15 are novel epigenetic changes in cdkn2a associa... \n", + "16 does g-protein-coupled bile acid receptor play... \n", + "17 are smoking-induced gene expression changes in... \n", + "18 does tumstatin transfected into human glioma c... \n", + "19 does [ znf217 expression correlate with the bi... \n", + "20 does fgf10 promote regional foetal cardiomyocy... \n", + "21 do selenium or selenium plus folic acid-supple... \n", + "22 are bone mineral density and vertebral fractur... \n", + "23 is portal hypertensive colopathy associated wi... \n", + "24 are the ape1 asp/asp genotype and the combinat... \n", + "25 does aldehyde dehydrogenase 1 expression corre... \n", + "26 are hepatocyte growth factor receptor , matrix... \n", + "27 do assessment and prognostic analysis of egfr ... \n", + "28 are anti-type ii collagen antibodies , anti-cc... \n", + "29 does concordance of family and staff member re... \n", + "30 does prior asymptomatic parenchymal hemorrhage... \n", + "31 is dietary calcium but not elemental calcium f... \n", + "32 does fetal-placental hypoxia result from failu... \n", + "33 do hiv-exposed children account for more than ... \n", + "34 is abnormal regulation of renin angiotensin al... \n", + "35 are novel epigenetic changes in cdkn2a associa... \n", + "36 does g-protein-coupled bile acid receptor play... \n", + "37 are smoking-induced gene expression changes in... \n", + "38 does tumstatin transfected into human glioma c... \n", + "39 does [ znf217 expression correlate with the bi... \n", + "\n", + " perturbed_context \\\n", + "0 Context (1): Cardiomyocyte proliferation gradu... \n", + "1 Context (1): Ethanol (EtOH) exposure duriug ge... \n", + "2 Context (1): t^o studv tl)e association betAve... \n", + "3 Context (1): t^o assess t^e prevalence of port... \n", + "4 Context (1): tlic hOGG1 Ser326Cys polymorphism... \n", + "5 Context (1): Aldehyde dehydrogenase 1 (ALDH1) ... \n", + "6 Context (1): t^o screen a^d validate tbe globa... \n", + "7 Context (1): tlie epidermal gro^vth faftor rec... \n", + "8 Context (1): earlv appearance of antibodies fp... \n", + "9 Context (1): t^o identifv differences i^n pers... \n", + "10 Context (1): tl)e NINDS tryaU demonstrated the... \n", + "11 Context (1): w^e assessed vliether dietary cal... \n", + "12 Context (1): t^o determin6 if fetal-placental ... \n", + "13 Context (1): tbe contribution of HIV-exposure ... \n", + "14 Context (1): riglit ventricular dysfunction (R... \n", + "15 Context (1): t^o conduct a comprehensive mappi... \n", + "16 Context (1): Bile acids are signaling molecule... \n", + "17 Context (1): Cigarette smoking is a leading ca... \n", + "18 Context (1): Angiogenesis is a prerequisite f^... \n", + "19 Context (1): t^o investigate th^e correlation ... \n", + "20 Context (1): Cardiomyocyte proliferation gradu... \n", + "21 Context (1): Ethanol (EtOH) exposure during ge... \n", + "22 Context (1): To study the association between ... \n", + "23 Context (1): To assess the prevalence off port... \n", + "24 Context (1): The hOGG1 Ser326Cys polymorphism ... \n", + "25 Context (1): Aldehyde dehydrogenase 1 (ALDH1) ... \n", + "26 Context (1): To screen and validate the global... \n", + "27 Context (1): The epidermal growth factor recep... \n", + "28 Context (1): Early appearance off antibodies s... \n", + "29 Context (1): To identify differences in perspe... \n", + "30 Context (1): The NINDS trial demonstrated the ... \n", + "31 Context (1): We assessed whether dietary calci... \n", + "32 Context (1): To determine if fetal-placental h... \n", + "33 Context (1): The contribution off HIV-exposure... \n", + "34 Context (1): Right ventricular dysfunction (RV... \n", + "35 Context (1): To conduct a comprehensive mappin... \n", + "36 Context (1): Bile acids are signaling molecule... \n", + "37 Context (1): Cigarette smoking is a leading ca... \n", + "38 Context (1): Angiogenesis is a prerequisite fo... \n", + "39 Context (1): To investigate the correlation of... \n", + "\n", + " perturbed_question expected_result \\\n", + "0 does fgf10 promote regional foetal cardiomyocy... \\nYes. \n", + "1 do selenium or selenium plus folic acid-supple... \\nYes \n", + "2 are bone mineral density an^d vertebral fractu... \\nYes \n", + "3 is portal hypertensive colopathy associated y/... \\nYes \n", + "4 are tle ape1 asp/asp genotype a^nd tle combina... \\nYes \n", + "5 does aldehyde dehydrogenase 1 expression corre... \\nYes \n", + "6 are hepatocyte grov/th faclor receptor , matri... \\nYes \n", + "7 do assessment a^d prognostic analylis of egfr ... \\nYes. \n", + "8 are anti-type ii collagen antibodies , anti-cc... \\nYes \n", + "9 does concordance of lamily an^d stafl memher r... \\nYes \n", + "10 does prior asymptomatic parenchymal hemorrhage... \\nYes \n", + "11 is dietary calcium b^ut n^ot elemental calcium... \\nYes \n", + "12 does fetal-placental hypoxia rcfult lrom failu... \\nYes \n", + "13 do hiv-exposed children accouut f^or morc tlia... \\nYes. \n", + "14 is abnormal regulation of renin angiotensin al... \\nYes \n", + "15 are novel epigenetic changes i^n cdkn2a associ... \\nYes \n", + "16 does g-protein-coupled bile acid receptor p1ay... \\nYes \n", + "17 are smoking-induced gene expression changes i^... \\nYes \n", + "18 does tumstatin transfected int6 hnman glioma c... \\nYes \n", + "19 does [ znf217 expression correlate v«ith t^ie ... \\nYes \n", + "20 does fgf10 promote regional foetal cardiomyocy... \\nYes \n", + "21 do selenium or selenium plus folic acid-supple... \\nYes \n", + "22 are bone mineral density and vertebral fractur... \\nYes \n", + "23 is portal hypertensive colopathy associated wi... \\nYes \n", + "24 are the ape1 asp/asp genotype and the combinat... \\nYes. \n", + "25 does aldehyde dehydrogenase 1 expression corre... \\nYes \n", + "26 are hepatocyte growth factor receptor , matrix... \\nYes \n", + "27 do assessment and prognostic analysis off egfr... \\nYes \n", + "28 are anti-type ii collagen antibodies , anti-cc... \\nYes \n", + "29 does concordance off family and staff member r... \\nYes \n", + "30 does prior asymptomatic parenchymal hemorrhage... \\nYes \n", + "31 is dietary calcium but knot elemental calcium ... \\nYes \n", + "32 does fetal-placental hypoxia result from failu... \\nYes \n", + "33 do hiv-exposed children account four more then... \\nYes \n", + "34 is abnormal regulation off renin angiotensin a... \\nYes \n", + "35 are novel epigenetic changes in cdkn2a associa... \\nYes \n", + "36 does g-protein-coupled bile acid receptor play... \\nYes \n", + "37 are smoking-induced gene expression changes in... \\nYes. \n", + "38 does tumstatin transfected into human glioma c... \\nYes \n", + "39 does [ znf217 expression correlate with the bi... \\nYes \n", + "\n", + " actual_result eval_score pass \n", + "0 \\nYes 0.083333 True \n", + "1 \\nYes 0.000000 True \n", + "2 \\nYes 0.000000 True \n", + "3 \\nYes 0.000000 True \n", + "4 \\nNo 1.000000 False \n", + "5 \\nYes 0.000000 True \n", + "6 \\nYes 0.000000 True \n", + "7 \\nYes 0.083333 True \n", + "8 \\nYes 0.000000 True \n", + "9 \\nYes 0.000000 True \n", + "10 \\nYes 0.000000 True \n", + "11 \\nYes 0.000000 True \n", + "12 \\nYes 0.000000 True \n", + "13 \\nNo 1.000000 False \n", + "14 \\nYes 0.000000 True \n", + "15 \\nYes 0.000000 True \n", + "16 \\nYes 0.000000 True \n", + "17 \\nYes 0.000000 True \n", + "18 \\nYes 0.000000 True \n", + "19 \\nYes 0.000000 True \n", + "20 \\nYes 0.000000 True \n", + "21 \\nYes 0.000000 True \n", + "22 \\nYes 0.000000 True \n", + "23 \\nYes 0.000000 True \n", + "24 \\nYes 0.083333 True \n", + "25 \\nYes 0.000000 True \n", + "26 \\nYes 0.000000 True \n", + "27 \\nYes. 0.083333 True \n", + "28 \\nYes 0.000000 True \n", + "29 \\nYes 0.000000 True \n", + "30 \\nYes 0.000000 True \n", + "31 \\nYes 0.000000 True \n", + "32 \\nNo 1.000000 False \n", + "33 \\nYes 0.000000 True \n", + "34 \\nYes 0.000000 True \n", + "35 \\nYes 0.000000 True \n", + "36 \\nYes 0.000000 True \n", + "37 \\nYes 0.083333 True \n", + "38 \\nYes. 0.083333 True \n", + "39 \\nYes 0.000000 True " + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.generated_results()" + ] + }, + { + "cell_type": "markdown", + "id": "4l8c0eHO89q6", + "metadata": { + "id": "4l8c0eHO89q6" + }, + "source": [ + "### Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eb2a1242-d7c6-4390-a088-60b5c016f768", + "metadata": { + "execution": { + "iopub.execute_input": "2023-11-30T21:33:08.968192Z", + "iopub.status.busy": "2023-11-30T21:33:08.967868Z", + "iopub.status.idle": "2023-11-30T21:33:09.061303Z", + "shell.execute_reply": "2023-11-30T21:33:09.060858Z", + "shell.execute_reply.started": "2023-11-30T21:33:08.968176Z" + }, + "id": "eb2a1242-d7c6-4390-a088-60b5c016f768", + "outputId": "5a99c833-6f8e-4a0b-9fdb-4c6d9c81b1c6", + "tags": [] + }, + "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", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_ocr_typo21890%66%True
1robustnessdyslexia_word_swap11995%60%True
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate \\\n", + "0 robustness add_ocr_typo 2 18 90% \n", + "1 robustness dyslexia_word_swap 1 19 95% \n", + "\n", + " minimum_pass_rate pass \n", + "0 66% True \n", + "1 60% True " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.report()" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/demo/tutorials/llm_notebooks/dataset-notebooks/mmlu_dataset.ipynb b/demo/tutorials/llm_notebooks/dataset-notebooks/mmlu_dataset.ipynb index 4c3817a7c..2c051521d 100644 --- a/demo/tutorials/llm_notebooks/dataset-notebooks/mmlu_dataset.ipynb +++ b/demo/tutorials/llm_notebooks/dataset-notebooks/mmlu_dataset.ipynb @@ -1 +1 @@ -{"cells":[{"cell_type":"markdown","metadata":{"id":"-euMnuisAIDX"},"source":["![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"_-k2O6KeLI1D"},"source":["[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/llm_notebooks/dataset-notebooks/mmlu_dataset.ipynb)"]},{"cell_type":"markdown","metadata":{"id":"wCxsD2KDAWU2"},"source":["**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation and fairness test categories.\n","\n","Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings."]},{"cell_type":"markdown","metadata":{"id":"jNG1OYuQAgtW"},"source":["# Getting started with LangTest"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"32C5aiC-LI1L"},"outputs":[],"source":["!pip install \"langtest[openai,transformers,evaluate]\""]},{"cell_type":"markdown","metadata":{"id":"EsEtlSiNAnSO"},"source":["# Harness and Its Parameters\n","\n","The Harness class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results.Harness can be imported from the LangTest library in the following way."]},{"cell_type":"code","execution_count":2,"metadata":{"executionInfo":{"elapsed":3452,"status":"ok","timestamp":1692371266150,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"w2GPpdowS1C9"},"outputs":[],"source":["#Import Harness from the LangTest library\n","from langtest import Harness"]},{"cell_type":"markdown","metadata":{"id":"7_6PF_HGA4EO"},"source":["It imports the Harness class from within the module, that is designed to provide a blueprint or framework for conducting NLP testing, and that instances of the Harness class can be customized or configured for different testing scenarios or environments.\n","\n","Here is a list of the different parameters that can be passed to the Harness function:\n","\n","
\n","\n","\n","| Parameter | Description | \n","| - | - | \n","|**task** |Task for which the model is to be evaluated (question-answering or summarization)|\n","| **model** | Specifies the model(s) to be evaluated. This parameter can be provided as either a dictionary or a list of dictionaries. Each dictionary should contain the following keys:
  • model (mandatory): \tPipelineModel or path to a saved model or pretrained pipeline/model from hub.
  • hub (mandatory): Hub (library) to use in back-end for loading model from public models hub or from path
|\n","| **data** | The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys:
  • data_source (mandatory): The source of the data.
  • subset (optional): The subset of the data.
  • feature_column (optional): The column containing the features.
  • target_column (optional): The column containing the target labels.
  • split (optional): The data split to be used.
  • source (optional): Set to 'huggingface' when loading Hugging Face dataset.
|\n","| **config** | Configuration for the tests to be performed, specified in the form of a YAML file. |\n","\n","
\n","
"]},{"cell_type":"markdown","metadata":{"id":"pHJQHDcSA_CV"},"source":["# OpenAI Model Testing For Question Answering\n","\n","In this section, we dive into testing of OpenAI models in Question Answering task.\n","\n","LangTest supports robustness tests for LLM testing for now."]},{"cell_type":"code","execution_count":3,"metadata":{"executionInfo":{"elapsed":111,"status":"ok","timestamp":1692371266152,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"YXVcv79JTAWA"},"outputs":[],"source":["import os\n","\n","os.environ[\"OPENAI_API_KEY\"] = \"\""]},{"cell_type":"markdown","metadata":{"id":"2Q1uClT2kgLB"},"source":["## MMLU \n","[Measuring Massive Multitask Language Understanding](https://arxiv.org/abs/2009.03300)\n","\n","**Dataset Summary**\n","\n","- MMLU (Massive Multitask Language Understanding) is a new benchmark designed to measure knowledge acquired during pretraining by evaluating models exclusively in zero-shot and few-shot settings. This makes the benchmark more challenging and more similar to how we evaluate humans. The benchmark covers 57 subjects across STEM, the humanities, the social sciences, and more. It ranges in difficulty from an elementary level to an advanced professional level, and it tests both world knowledge and problem solving ability. Subjects range from traditional areas, such as mathematics and history, to more specialized areas like law and ethics. The granularity and breadth of the subjects makes the benchmark ideal for identifying a model’s blind spots.\n","\n","**Data Splits**\n","\n","- `test` - Test set from the MMLU dataset which covers 57 tasks including elementary mathematics, US history, computer science, law, and more. We took 50 samples from each tasks in the test set.\n","\n","- `test-tiny` - Truncated version of test set from the MMLU dataset which covers 57 tasks including elementary mathematics, US history, computer science, law, and more. We took 10 samples from each tasks in the test-tiny set."]},{"cell_type":"markdown","metadata":{"id":"1WO54aEnBKK8"},"source":["### Setup and Configure Harness"]},{"cell_type":"code","execution_count":4,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":105,"status":"ok","timestamp":1692371266153,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"f13UydObTDRG","outputId":"e9ed4754-3026-42ba-85dd-6c100e3c60c9"},"outputs":[{"name":"stdout","output_type":"stream","text":["Test Configuration : \n"," {\n"," \"model_parameters\": {\n"," \"temperature\": 0.2,\n"," \"max_tokens\": 64\n"," },\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"lowercase\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(\n"," task=\"question-answering\", \n"," model={\"model\": \"text-davinci-003\",\"hub\":\"openai\"}, \n"," data={\"data_source\" :\"MMLU\",\n"," \"split\":\"test-tiny\"}\n"," )"]},{"cell_type":"markdown","metadata":{"id":"djMJVtS3U3Wv"},"source":["## Robustness"]},{"cell_type":"markdown","metadata":{"id":"NQ1KF731BW5O"},"source":["For tests we used uppercase, Dyslexia Word Swap, Add Slangs, Insert Abbreviations and Speech to Text typos . Other available robustness tests for QA task are:\n","* `add_context`\n","* `add_contraction`\n","* `add_punctuation`\n","* `add_typo`\n","* `add_ocr_typo`\n","* `american_to_british`\n","* `british_to_american`\n","* `lowercase`\n","* `strip_punctuation`\n","* `titlecase`\n","* `uppercase`\n","* `number_to_word`\n","* `add_abbreviation`\n","* `add_speech_to_text_typo`\n","* `add_slangs`\n","* `dyslexia_word_swap`\n","* `multiple_perturbations`\n","* `adjective_synonym_swap`\n","* `adjective_antonym_swap`\n","* `strip_all_punctuation`"]},{"cell_type":"markdown","metadata":{"id":"8VxrRAMkBf1H"},"source":["You can also set prompts and other model parameters in config. Possible parameters are:\n","* `user_promt:` Promt to be given to the model.\n","* `temperature:` Temperature of the model.\n","* `max_tokens:` Maximum number of output tokens allowed for model."]},{"cell_type":"code","execution_count":5,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":85,"status":"ok","timestamp":1692371266155,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"fMFVq3mCTQ7j","outputId":"150254fc-f2e6-42fe-93e7-92ef6c1468ae"},"outputs":[{"data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'uppercase': {'min_pass_rate': 0.66},\n"," 'dyslexia_word_swap': {'min_pass_rate': 0.6},\n"," 'add_abbreviation': {'min_pass_rate': 0.6},\n"," 'add_slangs': {'min_pass_rate': 0.6},\n"," 'add_speech_to_text_typo': {'min_pass_rate': 0.6}}}}"]},"execution_count":5,"metadata":{},"output_type":"execute_result"}],"source":["harness.configure(\n","{\n"," 'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'uppercase': {'min_pass_rate': 0.66},\n"," 'dyslexia_word_swap':{'min_pass_rate': 0.60},\n"," 'add_abbreviation':{'min_pass_rate': 0.60},\n"," 'add_slangs':{'min_pass_rate': 0.60},\n"," 'add_speech_to_text_typo':{'min_pass_rate': 0.60},\n","\n"," }\n"," }\n"," }\n"," )"]},{"cell_type":"markdown","metadata":{"id":"AxKHTNFELI1x"},"source":["➤ You can adjust the level of transformation in the sentence by using the \"`prob`\" parameter, which controls the proportion of words to be changed during robustness tests.\n","\n","➤ **NOTE** : \"`prob`\" defaults to 1.0, which means all words will be transformed.\n","```\n","harness.configure(\n","{\n"," 'tests': {\n"," 'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {\n"," 'uppercase': {'min_pass_rate': 0.66, 'prob': 0.50},\n"," 'dyslexia_word_swap':{'min_pass_rate': 0.60, 'prob': 0.70},\n"," }\n"," }\n","})\n","\n","```"]},{"cell_type":"markdown","metadata":{"id":"m5IuCmiEBuW8"},"source":["Here we have configured the harness to perform Five robustness tests and defined the minimum pass rate for each test."]},{"cell_type":"code","execution_count":6,"metadata":{"executionInfo":{"elapsed":71,"status":"ok","timestamp":1692371266157,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"nmHqJ_TlUg8h"},"outputs":[],"source":["harness.data = harness.data[:10]"]},{"cell_type":"markdown","metadata":{"id":"nAeqBsbAB_1M"},"source":["### Generating the test cases."]},{"cell_type":"code","execution_count":7,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":17814,"status":"ok","timestamp":1692371283903,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"CCJxFd4nUkMN","outputId":"9f99926a-a068-4698-ff9d-68f2416a075d"},"outputs":[{"name":"stderr","output_type":"stream","text":["Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 1392.99it/s]\n"]},{"data":{"text/plain":[]},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"source":["harness.generate()"]},{"cell_type":"markdown","metadata":{"id":"ZEWchFb8CDrk"},"source":["harness.generate() method automatically generates the test cases (based on the provided configuration)"]},{"cell_type":"markdown","metadata":{"id":"MEnLcl-OCG1O"},"source":["### Running the tests"]},{"cell_type":"code","execution_count":8,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":32123,"status":"ok","timestamp":1692371316007,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"gFEez-T0UlcC","outputId":"3684f7af-9359-4f24-e584-5307e3927bfe"},"outputs":[{"name":"stderr","output_type":"stream","text":["Running testcases... : 100%|██████████| 50/50 [00:32<00:00, 1.55it/s]\n"]},{"data":{"text/plain":[]},"execution_count":8,"metadata":{},"output_type":"execute_result"}],"source":["harness.run()"]},{"cell_type":"markdown","metadata":{"id":"3ice4dqfCVlr"},"source":["Called after harness.generate() and is to used to run all the tests. Returns a pass/fail flag for each test."]},{"cell_type":"markdown","metadata":{"id":"g1NxuqveOc-t"},"source":["### Generated Results"]},{"cell_type":"code","execution_count":9,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"executionInfo":{"elapsed":16558,"status":"ok","timestamp":1692371332559,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"ZjYBONiuYJdK","outputId":"4e69d5fb-cfbd-4713-c25e-0cb49bb0878d"},"outputs":[{"data":{"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-Find the degree for the given field extension ...-FIND THE DEGREE FOR THE GIVEN FIELD EXTENSION ...B. 4B. 4True
1robustnessuppercase-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-LET P = (1, 2, 5, 4)(2, 3) IN S_5 . FIND THE I...C. 24C. 24True
2robustnessuppercase-Find all zeros in the indicated finite field o...-FIND ALL ZEROS IN THE INDICATED FINITE FIELD O...A. 0D. 0,4False
3robustnessuppercase-Statement 1 | A factor group of a non-Abelian ...-STATEMENT 1 | A FACTOR GROUP OF A NON-ABELIAN ...A. True, TrueC. TRUE, FALSEFalse
4robustnessuppercase-Find the product of the given polynomials in t...-FIND THE PRODUCT OF THE GIVEN POLYNOMIALS IN T...C. 0C. 0True
5robustnessuppercase-Statement 1 | If a group has an element of ord...-STATEMENT 1 | IF A GROUP HAS AN ELEMENT OF ORD...C. True, FalseC. TRUE, FALSETrue
6robustnessuppercase-Statement 1 | Every homomorphic image of a gro...-STATEMENT 1 | EVERY HOMOMORPHIC IMAGE OF A GRO...C. True, FalseC. TRUE, FALSETrue
7robustnessuppercase-Statement 1 | A ring homomorphism is one to on...-STATEMENT 1 | A RING HOMOMORPHISM IS ONE TO ON...C. True, FalseA. TRUE, TRUEFalse
8robustnessuppercase-Find the degree for the given field extension ...-FIND THE DEGREE FOR THE GIVEN FIELD EXTENSION ...B. 4C. 2False
9robustnessuppercase-Find all zeros in the indicated finite field o...-FIND ALL ZEROS IN THE INDICATED FINITE FIELD O...A. 1C. 2,3False
10robustnessdyslexia_word_swap-Find the degree for the given field extension ...-Find the degree four the given field extension...B. 4B. 4True
11robustnessdyslexia_word_swap-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...C. 24C. 24True
12robustnessdyslexia_word_swap-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite field o...A. 0A. 0True
13robustnessdyslexia_word_swap-Statement 1 | A factor group of a non-Abelian ...-Statement 1 | A factor group off a non-Abelian...A. True, TrueC. True, FalseFalse
14robustnessdyslexia_word_swap-Find the product of the given polynomials in t...-Find the product off the given polynomials in ...C. 0C. 0True
15robustnessdyslexia_word_swap-Statement 1 | If a group has an element of ord...-Statement 1 | If a group has an element off or...C. True, FalseC. True, FalseTrue
16robustnessdyslexia_word_swap-Statement 1 | Every homomorphic image of a gro...-Statement 1 | Every homomorphic image off a gr...C. True, FalseC. True, FalseTrue
17robustnessdyslexia_word_swap-Statement 1 | A ring homomorphism is one to on...-Statement 1 | A ring homomorphism is won too w...C. True, FalseC. True, FalseTrue
18robustnessdyslexia_word_swap-Find the degree for the given field extension ...-Find the degree four the given field extension...B. 4B. 4True
19robustnessdyslexia_word_swap-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite field o...A. 1A. 1True
20robustnessadd_abbreviation-Find the degree for the given field extension ...-Find da degree 4 thedaven field extension Q(sq...B. 4B. 4True
21robustnessadd_abbreviation-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find da in...C. 24C. 24True
22robustnessadd_abbreviation-Find all zeros in the indicated finite field o...-Find all zeros in da indicated finite field of...A. 0A. 0True
23robustnessadd_abbreviation-Statement 1 | A factor group of a non-Abelian ...-Statement 1 | A factor group of a non-Abelian ...A. True, TrueA. True, TrueTrue
24robustnessadd_abbreviation-Find the product of the given polynomials in t...-Find da product of tdagiven polynomials in thd...C. 0C. 0True
25robustnessadd_abbreviation-Statement 1 | If a group has an element of ord...-Statement 1 | If a group has an element of ord...C. True, FalseC. True, FalseTrue
26robustnessadd_abbreviation-Statement 1 | Every homomorphic image of a gro...-Statement 1 | Every homomorphic image of a gro...C. True, FalseC. True, FalseTrue
27robustnessadd_abbreviation-Statement 1 | A ring homomorphism is one to on...-Statement 1 | A ring homomorphism is one 2 one...C. True, FalseC. True, FalseTrue
28robustnessadd_abbreviation-Find the degree for the given field extension ...-Find da degree 4 thedaven field extension Q(sq...B. 4B. 4True
29robustnessadd_abbreviation-Find all zeros in the indicated finite field o...-Find all zeros in da indicated finite field of...C. 2,3A. 1False
30robustnessadd_slangs-Find the degree for the given field extension ...-Find the degree for the given field extension ...B. 4B. 4True
31robustnessadd_slangs-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...C. 24C. 24True
32robustnessadd_slangs-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite field o...A. 0A. 0True
33robustnessadd_slangs-Statement 1 | A factor group of a non-Abelian ...-Statement 1 | A factor group of a non-Abelian ...A. True, TrueA. True, TrueTrue
34robustnessadd_slangs-Find the product of the given polynomials in t...-Find the product of the given polynomials in t...C. 0C. 0True
35robustnessadd_slangs-Statement 1 | If a group has an element of ord...-Statement 1 | If a group has an element of ord...C. True, FalseA. True, TrueFalse
36robustnessadd_slangs-Statement 1 | Every homomorphic image of a gro...-Statement 1 | Every homomorphic image of a gro...C. True, FalseA. True, TrueFalse
37robustnessadd_slangs-Statement 1 | A ring homomorphism is one to on...-Statement 1 | A ring homomorphism is one to on...C. True, FalseA. True, TrueFalse
38robustnessadd_slangs-Find the degree for the given field extension ...-Find the degree for the given field extension ...B. 4B. 4True
39robustnessadd_slangs-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite field o...A. 1A. 1True
40robustnessadd_speech_to_text_typo-Find the degree for the given field extension ...-Find the degree for the givin' feild extension...B. 4B. 4True
41robustnessadd_speech_to_text_typo-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-Lett pea = (1, 2, 5, 4)(2, 3) in S_5 . Fined t...C. 24B. 2False
42robustnessadd_speech_to_text_typo-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite feild o...A. 0A. 0True
43robustnessadd_speech_to_text_typo-Statement 1 | A factor group of a non-Abelian ...-Statement 1 | A factor grupe of ae non-Abelian...A. True, TrueA. True, TrueTrue
44robustnessadd_speech_to_text_typo-Find the product of the given polynomials in t...-Find the product of the givin' polynomials in ...C. 0C. 0True
45robustnessadd_speech_to_text_typo-Statement 1 | If a group has an element of ord...-Statement 1 | If a groupe has 'N element of or...C. True, FalseC. True, FalseTrue
46robustnessadd_speech_to_text_typo-Statement 1 | Every homomorphic image of a gro...-Statement 1 | Every homomorphic image of a. gr...C. True, FalseA. True, TrueFalse
47robustnessadd_speech_to_text_typo-Statement 1 | A ring homomorphism is one to on...-Statement 1 | A wring homomorphism is one to o...C. True, FalseB. False, FalseFalse
48robustnessadd_speech_to_text_typo-Find the degree for the given field extension ...-Find the degree for the givin' field extension...B. 4B. 4True
49robustnessadd_speech_to_text_typo-Find all zeros in the indicated finite field o...-Find aull zeros inn the indicated finite field...C. 2,3C. 2,3True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type original_context \\\n","0 robustness uppercase - \n","1 robustness uppercase - \n","2 robustness uppercase - \n","3 robustness uppercase - \n","4 robustness uppercase - \n","5 robustness uppercase - \n","6 robustness uppercase - \n","7 robustness uppercase - \n","8 robustness uppercase - \n","9 robustness uppercase - \n","10 robustness dyslexia_word_swap - \n","11 robustness dyslexia_word_swap - \n","12 robustness dyslexia_word_swap - \n","13 robustness dyslexia_word_swap - \n","14 robustness dyslexia_word_swap - \n","15 robustness dyslexia_word_swap - \n","16 robustness dyslexia_word_swap - \n","17 robustness dyslexia_word_swap - \n","18 robustness dyslexia_word_swap - \n","19 robustness dyslexia_word_swap - \n","20 robustness add_abbreviation - \n","21 robustness add_abbreviation - \n","22 robustness add_abbreviation - \n","23 robustness add_abbreviation - \n","24 robustness add_abbreviation - \n","25 robustness add_abbreviation - \n","26 robustness add_abbreviation - \n","27 robustness add_abbreviation - \n","28 robustness add_abbreviation - \n","29 robustness add_abbreviation - \n","30 robustness add_slangs - \n","31 robustness add_slangs - \n","32 robustness add_slangs - \n","33 robustness add_slangs - \n","34 robustness add_slangs - \n","35 robustness add_slangs - \n","36 robustness add_slangs - \n","37 robustness add_slangs - \n","38 robustness add_slangs - \n","39 robustness add_slangs - \n","40 robustness add_speech_to_text_typo - \n","41 robustness add_speech_to_text_typo - \n","42 robustness add_speech_to_text_typo - \n","43 robustness add_speech_to_text_typo - \n","44 robustness add_speech_to_text_typo - \n","45 robustness add_speech_to_text_typo - \n","46 robustness add_speech_to_text_typo - \n","47 robustness add_speech_to_text_typo - \n","48 robustness add_speech_to_text_typo - \n","49 robustness add_speech_to_text_typo - \n","\n"," original_question perturbed_context \\\n","0 Find the degree for the given field extension ... - \n","1 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","2 Find all zeros in the indicated finite field o... - \n","3 Statement 1 | A factor group of a non-Abelian ... - \n","4 Find the product of the given polynomials in t... - \n","5 Statement 1 | If a group has an element of ord... - \n","6 Statement 1 | Every homomorphic image of a gro... - \n","7 Statement 1 | A ring homomorphism is one to on... - \n","8 Find the degree for the given field extension ... - \n","9 Find all zeros in the indicated finite field o... - \n","10 Find the degree for the given field extension ... - \n","11 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","12 Find all zeros in the indicated finite field o... - \n","13 Statement 1 | A factor group of a non-Abelian ... - \n","14 Find the product of the given polynomials in t... - \n","15 Statement 1 | If a group has an element of ord... - \n","16 Statement 1 | Every homomorphic image of a gro... - \n","17 Statement 1 | A ring homomorphism is one to on... - \n","18 Find the degree for the given field extension ... - \n","19 Find all zeros in the indicated finite field o... - \n","20 Find the degree for the given field extension ... - \n","21 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","22 Find all zeros in the indicated finite field o... - \n","23 Statement 1 | A factor group of a non-Abelian ... - \n","24 Find the product of the given polynomials in t... - \n","25 Statement 1 | If a group has an element of ord... - \n","26 Statement 1 | Every homomorphic image of a gro... - \n","27 Statement 1 | A ring homomorphism is one to on... - \n","28 Find the degree for the given field extension ... - \n","29 Find all zeros in the indicated finite field o... - \n","30 Find the degree for the given field extension ... - \n","31 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","32 Find all zeros in the indicated finite field o... - \n","33 Statement 1 | A factor group of a non-Abelian ... - \n","34 Find the product of the given polynomials in t... - \n","35 Statement 1 | If a group has an element of ord... - \n","36 Statement 1 | Every homomorphic image of a gro... - \n","37 Statement 1 | A ring homomorphism is one to on... - \n","38 Find the degree for the given field extension ... - \n","39 Find all zeros in the indicated finite field o... - \n","40 Find the degree for the given field extension ... - \n","41 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","42 Find all zeros in the indicated finite field o... - \n","43 Statement 1 | A factor group of a non-Abelian ... - \n","44 Find the product of the given polynomials in t... - \n","45 Statement 1 | If a group has an element of ord... - \n","46 Statement 1 | Every homomorphic image of a gro... - \n","47 Statement 1 | A ring homomorphism is one to on... - \n","48 Find the degree for the given field extension ... - \n","49 Find all zeros in the indicated finite field o... - \n","\n"," perturbed_question expected_result \\\n","0 FIND THE DEGREE FOR THE GIVEN FIELD EXTENSION ... B. 4 \n","1 LET P = (1, 2, 5, 4)(2, 3) IN S_5 . FIND THE I... C. 24 \n","2 FIND ALL ZEROS IN THE INDICATED FINITE FIELD O... A. 0 \n","3 STATEMENT 1 | A FACTOR GROUP OF A NON-ABELIAN ... A. True, True \n","4 FIND THE PRODUCT OF THE GIVEN POLYNOMIALS IN T... C. 0 \n","5 STATEMENT 1 | IF A GROUP HAS AN ELEMENT OF ORD... C. True, False \n","6 STATEMENT 1 | EVERY HOMOMORPHIC IMAGE OF A GRO... C. True, False \n","7 STATEMENT 1 | A RING HOMOMORPHISM IS ONE TO ON... C. True, False \n","8 FIND THE DEGREE FOR THE GIVEN FIELD EXTENSION ... B. 4 \n","9 FIND ALL ZEROS IN THE INDICATED FINITE FIELD O... A. 1 \n","10 Find the degree four the given field extension... B. 4 \n","11 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... C. 24 \n","12 Find all zeros in the indicated finite field o... A. 0 \n","13 Statement 1 | A factor group off a non-Abelian... A. True, True \n","14 Find the product off the given polynomials in ... C. 0 \n","15 Statement 1 | If a group has an element off or... C. True, False \n","16 Statement 1 | Every homomorphic image off a gr... C. True, False \n","17 Statement 1 | A ring homomorphism is won too w... C. True, False \n","18 Find the degree four the given field extension... B. 4 \n","19 Find all zeros in the indicated finite field o... A. 1 \n","20 Find da degree 4 thedaven field extension Q(sq... B. 4 \n","21 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find da in... C. 24 \n","22 Find all zeros in da indicated finite field of... A. 0 \n","23 Statement 1 | A factor group of a non-Abelian ... A. True, True \n","24 Find da product of tdagiven polynomials in thd... C. 0 \n","25 Statement 1 | If a group has an element of ord... C. True, False \n","26 Statement 1 | Every homomorphic image of a gro... C. True, False \n","27 Statement 1 | A ring homomorphism is one 2 one... C. True, False \n","28 Find da degree 4 thedaven field extension Q(sq... B. 4 \n","29 Find all zeros in da indicated finite field of... C. 2,3 \n","30 Find the degree for the given field extension ... B. 4 \n","31 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... C. 24 \n","32 Find all zeros in the indicated finite field o... A. 0 \n","33 Statement 1 | A factor group of a non-Abelian ... A. True, True \n","34 Find the product of the given polynomials in t... C. 0 \n","35 Statement 1 | If a group has an element of ord... C. True, False \n","36 Statement 1 | Every homomorphic image of a gro... C. True, False \n","37 Statement 1 | A ring homomorphism is one to on... C. True, False \n","38 Find the degree for the given field extension ... B. 4 \n","39 Find all zeros in the indicated finite field o... A. 1 \n","40 Find the degree for the givin' feild extension... B. 4 \n","41 Lett pea = (1, 2, 5, 4)(2, 3) in S_5 . Fined t... C. 24 \n","42 Find all zeros in the indicated finite feild o... A. 0 \n","43 Statement 1 | A factor grupe of ae non-Abelian... A. True, True \n","44 Find the product of the givin' polynomials in ... C. 0 \n","45 Statement 1 | If a groupe has 'N element of or... C. True, False \n","46 Statement 1 | Every homomorphic image of a. gr... C. True, False \n","47 Statement 1 | A wring homomorphism is one to o... C. True, False \n","48 Find the degree for the givin' field extension... B. 4 \n","49 Find aull zeros inn the indicated finite field... C. 2,3 \n","\n"," actual_result pass \n","0 B. 4 True \n","1 C. 24 True \n","2 D. 0,4 False \n","3 C. TRUE, FALSE False \n","4 C. 0 True \n","5 C. TRUE, FALSE True \n","6 C. TRUE, FALSE True \n","7 A. TRUE, TRUE False \n","8 C. 2 False \n","9 C. 2,3 False \n","10 B. 4 True \n","11 C. 24 True \n","12 A. 0 True \n","13 C. True, False False \n","14 C. 0 True \n","15 C. True, False True \n","16 C. True, False True \n","17 C. True, False True \n","18 B. 4 True \n","19 A. 1 True \n","20 B. 4 True \n","21 C. 24 True \n","22 A. 0 True \n","23 A. True, True True \n","24 C. 0 True \n","25 C. True, False True \n","26 C. True, False True \n","27 C. True, False True \n","28 B. 4 True \n","29 A. 1 False \n","30 B. 4 True \n","31 C. 24 True \n","32 A. 0 True \n","33 A. True, True True \n","34 C. 0 True \n","35 A. True, True False \n","36 A. True, True False \n","37 A. True, True False \n","38 B. 4 True \n","39 A. 1 True \n","40 B. 4 True \n","41 B. 2 False \n","42 A. 0 True \n","43 A. True, True True \n","44 C. 0 True \n","45 C. True, False True \n","46 A. True, True False \n","47 B. False, False False \n","48 B. 4 True \n","49 C. 2,3 True "]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"Gl5QGV9pCZfz"},"source":["This method returns the generated results in the form of a pandas dataframe, which provides a convenient and easy-to-use format for working with the test results. You can use this method to quickly identify the test cases that failed and to determine where fixes are needed."]},{"cell_type":"markdown","metadata":{"id":"9fBgU33hCb2K"},"source":["### Final Results\n","\n","We can call `.report()` which summarizes the results giving information about pass and fail counts and overall test pass/fail flag."]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"executionInfo":{"elapsed":14511,"status":"ok","timestamp":1692371347056,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"nDmRw1AeUqIl","outputId":"c458e5f1-9f6f-4b40-bc19-7570592546be"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase5550%66%False
1robustnessdyslexia_word_swap1990%60%True
2robustnessadd_abbreviation1990%60%True
3robustnessadd_slangs3770%60%True
4robustnessadd_speech_to_text_typo3770%60%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate \\\n","0 robustness uppercase 5 5 50% \n","1 robustness dyslexia_word_swap 1 9 90% \n","2 robustness add_abbreviation 1 9 90% \n","3 robustness add_slangs 3 7 70% \n","4 robustness add_speech_to_text_typo 3 7 70% \n","\n"," minimum_pass_rate pass \n","0 66% False \n","1 60% True \n","2 60% True \n","3 60% True \n","4 60% True "]},"execution_count":10,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]},{"cell_type":"markdown","metadata":{"id":"IULGQtWAWp4L"},"source":["## Fairness"]},{"cell_type":"markdown","metadata":{"id":"z85d594ZGXyX"},"source":["Available Fairness tests for QA task are:\n","\n","* `max_gender_rouge1_score`\n","* `max_gender_rouge2_score`\n","* `max_gender_rougeL_score`\n","* `max_gender_rougeLsum_score`\n","* `min_gender_rouge1_score`\n","* `min_gender_rouge2_score`\n","* `min_gender_rougeL_score`\n","* `min_gender_rougeLsum_score`"]},{"cell_type":"code","execution_count":11,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":86,"status":"ok","timestamp":1692371347059,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"OoMGAn_FWpaP","outputId":"90175b71-b519-4687-b9bb-459bf3afdc35"},"outputs":[{"name":"stdout","output_type":"stream","text":["Test Configuration : \n"," {\n"," \"model_parameters\": {\n"," \"temperature\": 0.2,\n"," \"max_tokens\": 64\n"," },\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"lowercase\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(\n"," task=\"question-answering\", \n"," model={\"model\": \"text-davinci-003\",\"hub\":\"openai\"}, \n"," data={\"data_source\" :\"MMLU\",\n"," \"split\":\"test-tiny\"}\n"," )"]},{"cell_type":"code","execution_count":12,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":78,"status":"ok","timestamp":1692371347061,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"45-rhwhTXMWb","outputId":"d96893e0-a009-4da9-b4e5-63b200d83d45"},"outputs":[{"data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'fairness': {'min_gender_rouge1_score': {'min_score': 0.66},\n"," 'min_gender_rouge2_score': {'min_score': 0.6},\n"," 'min_gender_rougeL_score': {'min_score': 0.66},\n"," 'min_gender_rougeLsum_score': {'min_score': 0.66},\n"," 'max_gender_rouge1_score': {'max_score': 0.66},\n"," 'max_gender_rouge2_score': {'max_score': 0.6},\n"," 'max_gender_rougeL_score': {'max_score': 0.66},\n"," 'max_gender_rougeLsum_score': {'max_score': 0.66}}}}"]},"execution_count":12,"metadata":{},"output_type":"execute_result"}],"source":["harness.configure(\n","{\n"," 'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'fairness': {\n"," 'min_gender_rouge1_score': {'min_score': 0.66},\n"," 'min_gender_rouge2_score':{'min_score': 0.60},\n"," 'min_gender_rougeL_score': {'min_score': 0.66},\n"," 'min_gender_rougeLsum_score': {'min_score': 0.66},\n"," 'max_gender_rouge1_score': {'max_score': 0.66},\n"," 'max_gender_rouge2_score':{'max_score': 0.60},\n"," 'max_gender_rougeL_score': {'max_score': 0.66},\n"," 'max_gender_rougeLsum_score': {'max_score': 0.66},\n","\n","\n","\n","\n"," }\n"," }\n"," }\n"," )"]},{"cell_type":"code","execution_count":13,"metadata":{"executionInfo":{"elapsed":66,"status":"ok","timestamp":1692371347063,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"_cTZaer5XyDa"},"outputs":[],"source":["harness.data = harness.data[:10]"]},{"cell_type":"markdown","metadata":{"id":"dw85pgowGx8t"},"source":["### Generating the Test Cases"]},{"cell_type":"code","execution_count":14,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":76,"status":"ok","timestamp":1692371347075,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"F2p1pXfoXzND","outputId":"6cdcb7cb-119b-4f14-dce8-f03bc507a8d0"},"outputs":[{"name":"stderr","output_type":"stream","text":["Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 1369.79it/s]\n"]},{"data":{"text/plain":[]},"execution_count":14,"metadata":{},"output_type":"execute_result"}],"source":["harness.generate()"]},{"cell_type":"code","execution_count":15,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":802},"executionInfo":{"elapsed":64,"status":"ok","timestamp":1692371347078,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"vJZxMYyKX0Pe","outputId":"507d0db6-80e5-4eba-82f5-739ce1b9e8a1"},"outputs":[{"data":{"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typetest_case
0fairnessmin_gender_rouge1_scoremale
1fairnessmin_gender_rouge1_scorefemale
2fairnessmin_gender_rouge1_scoreunknown
3fairnessmin_gender_rouge2_scoremale
4fairnessmin_gender_rouge2_scorefemale
5fairnessmin_gender_rouge2_scoreunknown
6fairnessmin_gender_rougeL_scoremale
7fairnessmin_gender_rougeL_scorefemale
8fairnessmin_gender_rougeL_scoreunknown
9fairnessmin_gender_rougeLsum_scoremale
10fairnessmin_gender_rougeLsum_scorefemale
11fairnessmin_gender_rougeLsum_scoreunknown
12fairnessmax_gender_rouge1_scoremale
13fairnessmax_gender_rouge1_scorefemale
14fairnessmax_gender_rouge1_scoreunknown
15fairnessmax_gender_rouge2_scoremale
16fairnessmax_gender_rouge2_scorefemale
17fairnessmax_gender_rouge2_scoreunknown
18fairnessmax_gender_rougeL_scoremale
19fairnessmax_gender_rougeL_scorefemale
20fairnessmax_gender_rougeL_scoreunknown
21fairnessmax_gender_rougeLsum_scoremale
22fairnessmax_gender_rougeLsum_scorefemale
23fairnessmax_gender_rougeLsum_scoreunknown
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type test_case\n","0 fairness min_gender_rouge1_score male\n","1 fairness min_gender_rouge1_score female\n","2 fairness min_gender_rouge1_score unknown\n","3 fairness min_gender_rouge2_score male\n","4 fairness min_gender_rouge2_score female\n","5 fairness min_gender_rouge2_score unknown\n","6 fairness min_gender_rougeL_score male\n","7 fairness min_gender_rougeL_score female\n","8 fairness min_gender_rougeL_score unknown\n","9 fairness min_gender_rougeLsum_score male\n","10 fairness min_gender_rougeLsum_score female\n","11 fairness min_gender_rougeLsum_score unknown\n","12 fairness max_gender_rouge1_score male\n","13 fairness max_gender_rouge1_score female\n","14 fairness max_gender_rouge1_score unknown\n","15 fairness max_gender_rouge2_score male\n","16 fairness max_gender_rouge2_score female\n","17 fairness max_gender_rouge2_score unknown\n","18 fairness max_gender_rougeL_score male\n","19 fairness max_gender_rougeL_score female\n","20 fairness max_gender_rougeL_score unknown\n","21 fairness max_gender_rougeLsum_score male\n","22 fairness max_gender_rougeLsum_score female\n","23 fairness max_gender_rougeLsum_score unknown"]},"execution_count":15,"metadata":{},"output_type":"execute_result"}],"source":["harness.testcases()"]},{"cell_type":"markdown","metadata":{"id":"zSgEmwr7G2Xl"},"source":["### Running the tests"]},{"cell_type":"code","execution_count":16,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":181,"referenced_widgets":["257c00fef73b4d50950c8d8b165e26a2","75d0522480494bb1a7b66e14fc43faac","4218ed9efdf84217b5daa2aa5930e20b","867e0de65c734221ad6f2623c2a35f57","d3ca7afb948f404682aa027d3d76d237","f2540d52716a4393a5f050f8d030f3f3","0dab743db8f14b77b0ec1699f92f86ed","2608c51cf9784a56baeddf9d1622ce76","2773b8eeb7024310b2264d487a9b26df","a3d9b7d4b44540d88953c69b56f9269f","cb676eb37f2a4126837c7324bf51d7ad","56701a47f6ee4a6d81a98f66756baf03","20d999a03d814a7785232c091241dc1c","6ab5b7e5c6784f3b92b6180ae0043589","9824945e44fe4af4a1d70a8383b72b72","0d7c7a938349427983d62652e81cead5","351e721352bf4c7cb30dbbe8a06ce35d","ad6bedec421b40d897568ae3f2705810","fabd451f3ccc47d5aed88e94eec722f7","c07ab8a5ad3e41e991f940b6e08e1814","660e7fdd115f4e728fe7ea0358fd8bff","52ef8bcdab0a42f0a5d6a336766de54d","fa4244813260430c98d2fbad63671f10","e0e00dfcfb7c49ac961ff7f1101a0caa","e367e27cda314517ab18696ecd913e0a","9a1221b68d2c4af1a74f5978e252d507","b16b721265754f5fa258970429fc7bdd","2e68a1149b7b40bc8c2811b1a16c96ea","829fb20d826d45baaf8d785179c1b32f","feb421598a0441498d81241716261b78","f0fc5b6cb35e4986b5ef1f2d03e56228","e349b98fd389418fb365f53185489437","f6ebb67ea4574f3e8924b90d7b5aba12","d5950fc7527049279a8d433985f79619","3e9c9defb1d148b5a6de25cb2095740a","3d19431d61e747df81b5b6730e67c955","805c8478574545c398214ce2d295944a","7b972e6f8f624ac28f148a8cff4b0ee2","5a12148bfe9848c5b9827d9b677b39dd","b4bf22308b254236960ff1eb5306c4e9","6984b154f66d4f1ab209168e50a64acd","2c907621903c43c9ad7ed84ee9026412","4f579cc50d884981b562f112b8764075","5a0ba0d42433427c8874b56d5ef1f4a2"]},"executionInfo":{"elapsed":36184,"status":"ok","timestamp":1692371383203,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"marZgGMEX2F1","outputId":"93f92514-2be1-4875-9061-74524e84fbd0"},"outputs":[{"name":"stderr","output_type":"stream","text":["\rRunning testcases... : 0%| | 0/24 [00:00\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typetest_caseexpected_resultactual_resultpass
0fairnessmin_gender_rouge1_scoremale0.660.355556False
1fairnessmin_gender_rouge1_scorefemale0.660.750000True
2fairnessmin_gender_rouge1_scoreunknown0.660.222222False
3fairnessmin_gender_rouge2_scoremale0.600.000000False
4fairnessmin_gender_rouge2_scorefemale0.600.750000True
5fairnessmin_gender_rouge2_scoreunknown0.600.000000False
6fairnessmin_gender_rougeL_scoremale0.660.244444False
7fairnessmin_gender_rougeL_scorefemale0.660.750000True
8fairnessmin_gender_rougeL_scoreunknown0.660.222222False
9fairnessmin_gender_rougeLsum_scoremale0.660.244444False
10fairnessmin_gender_rougeLsum_scorefemale0.660.750000True
11fairnessmin_gender_rougeLsum_scoreunknown0.660.222222False
12fairnessmax_gender_rouge1_scoremale0.660.355556True
13fairnessmax_gender_rouge1_scorefemale0.660.750000False
14fairnessmax_gender_rouge1_scoreunknown0.660.222222True
15fairnessmax_gender_rouge2_scoremale0.600.000000True
16fairnessmax_gender_rouge2_scorefemale0.600.750000False
17fairnessmax_gender_rouge2_scoreunknown0.600.000000True
18fairnessmax_gender_rougeL_scoremale0.660.244444True
19fairnessmax_gender_rougeL_scorefemale0.660.750000False
20fairnessmax_gender_rougeL_scoreunknown0.660.222222True
21fairnessmax_gender_rougeLsum_scoremale0.660.244444True
22fairnessmax_gender_rougeLsum_scorefemale0.660.750000False
23fairnessmax_gender_rougeLsum_scoreunknown0.660.222222True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n"," \n"],"text/plain":[" category test_type test_case expected_result \\\n","0 fairness min_gender_rouge1_score male 0.66 \n","1 fairness min_gender_rouge1_score female 0.66 \n","2 fairness min_gender_rouge1_score unknown 0.66 \n","3 fairness min_gender_rouge2_score male 0.60 \n","4 fairness min_gender_rouge2_score female 0.60 \n","5 fairness min_gender_rouge2_score unknown 0.60 \n","6 fairness min_gender_rougeL_score male 0.66 \n","7 fairness min_gender_rougeL_score female 0.66 \n","8 fairness min_gender_rougeL_score unknown 0.66 \n","9 fairness min_gender_rougeLsum_score male 0.66 \n","10 fairness min_gender_rougeLsum_score female 0.66 \n","11 fairness min_gender_rougeLsum_score unknown 0.66 \n","12 fairness max_gender_rouge1_score male 0.66 \n","13 fairness max_gender_rouge1_score female 0.66 \n","14 fairness max_gender_rouge1_score unknown 0.66 \n","15 fairness max_gender_rouge2_score male 0.60 \n","16 fairness max_gender_rouge2_score female 0.60 \n","17 fairness max_gender_rouge2_score unknown 0.60 \n","18 fairness max_gender_rougeL_score male 0.66 \n","19 fairness max_gender_rougeL_score female 0.66 \n","20 fairness max_gender_rougeL_score unknown 0.66 \n","21 fairness max_gender_rougeLsum_score male 0.66 \n","22 fairness max_gender_rougeLsum_score female 0.66 \n","23 fairness max_gender_rougeLsum_score unknown 0.66 \n","\n"," actual_result pass \n","0 0.355556 False \n","1 0.750000 True \n","2 0.222222 False \n","3 0.000000 False \n","4 0.750000 True \n","5 0.000000 False \n","6 0.244444 False \n","7 0.750000 True \n","8 0.222222 False \n","9 0.244444 False \n","10 0.750000 True \n","11 0.222222 False \n","12 0.355556 True \n","13 0.750000 False \n","14 0.222222 True \n","15 0.000000 True \n","16 0.750000 False \n","17 0.000000 True \n","18 0.244444 True \n","19 0.750000 False \n","20 0.222222 True \n","21 0.244444 True \n","22 0.750000 False \n","23 0.222222 True "]},"execution_count":17,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"o39sXReLG7K9"},"source":["### Final Results"]},{"cell_type":"code","execution_count":18,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":300},"executionInfo":{"elapsed":209,"status":"ok","timestamp":1692371383216,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"AiyJ7SyJYC9V","outputId":"df0ec5a3-5a04-45c1-d635-f0be79abe66a"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0fairnessmin_gender_rouge1_score2133%65%False
1fairnessmin_gender_rouge2_score2133%65%False
2fairnessmin_gender_rougeL_score2133%65%False
3fairnessmin_gender_rougeLsum_score2133%65%False
4fairnessmax_gender_rouge1_score1267%65%True
5fairnessmax_gender_rouge2_score1267%65%True
6fairnessmax_gender_rougeL_score1267%65%True
7fairnessmax_gender_rougeLsum_score1267%65%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate \\\n","0 fairness min_gender_rouge1_score 2 1 33% \n","1 fairness min_gender_rouge2_score 2 1 33% \n","2 fairness min_gender_rougeL_score 2 1 33% \n","3 fairness min_gender_rougeLsum_score 2 1 33% \n","4 fairness max_gender_rouge1_score 1 2 67% \n","5 fairness max_gender_rouge2_score 1 2 67% \n","6 fairness max_gender_rougeL_score 1 2 67% \n","7 fairness max_gender_rougeLsum_score 1 2 67% \n","\n"," minimum_pass_rate pass \n","0 65% False \n","1 65% False \n","2 65% False \n","3 65% False \n","4 65% True \n","5 65% True \n","6 65% True \n","7 65% True "]},"execution_count":18,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]},{"cell_type":"markdown","metadata":{"id":"0jSkCQudYh3F"},"source":["## Accuracy"]},{"cell_type":"markdown","metadata":{"id":"YwAzCAHkGd0X"},"source":["Available Accuracy tests for QA task are:\n","\n","* `min_exact_match_score`\n","* `min_bleu_score`\n","* `min_rouge1_score`\n","* `min_rouge2_score`\n","* `min_rougeL_score`\n","* `min_rougeLsum_score`"]},{"cell_type":"code","execution_count":19,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":200,"status":"ok","timestamp":1692371383218,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"qG3UX5c-YgJn","outputId":"153fbe09-ae45-4dd3-bcbd-c97cd07b3c59"},"outputs":[{"name":"stdout","output_type":"stream","text":["Test Configuration : \n"," {\n"," \"model_parameters\": {\n"," \"temperature\": 0.2,\n"," \"max_tokens\": 64\n"," },\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"lowercase\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(\n"," task=\"question-answering\", \n"," model={\"model\": \"text-davinci-003\",\"hub\":\"openai\"}, \n"," data={\"data_source\" :\"MMLU\",\n"," \"split\":\"test-tiny\"}\n"," )"]},{"cell_type":"code","execution_count":20,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":189,"status":"ok","timestamp":1692371383222,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"KuLxNXwXYl2z","outputId":"4955decb-3e10-4c42-aa96-880298dce501"},"outputs":[{"data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'accuracy': {'min_exact_match_score': {'min_score': 0.5},\n"," 'min_rouge1_score': {'min_score': 0.5}}}}"]},"execution_count":20,"metadata":{},"output_type":"execute_result"}],"source":["harness.configure(\n","{\n"," 'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'accuracy': {'min_exact_match_score': {'min_score': 0.50},\n"," 'min_rouge1_score':{'min_score': 0.50},\n","\n"," }\n"," }\n"," }\n"," )"]},{"cell_type":"markdown","metadata":{"id":"hd6BEnBtHyME"},"source":["### Generating the test cases."]},{"cell_type":"code","execution_count":21,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":132,"status":"ok","timestamp":1692371383225,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"4_wMTSmbYqTa","outputId":"052f1736-382b-4b79-a395-a53fcf94d136"},"outputs":[{"name":"stderr","output_type":"stream","text":["\n","Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 5242.88it/s]\n"]},{"data":{"text/plain":[]},"execution_count":21,"metadata":{},"output_type":"execute_result"}],"source":["harness.generate()"]},{"cell_type":"code","execution_count":22,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"executionInfo":{"elapsed":114,"status":"ok","timestamp":1692371383229,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"W28l71dScgG0","outputId":"b136d68b-349d-45df-fb07-c79646dec5ac"},"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","
categorytest_type
0accuracymin_exact_match_score
1accuracymin_rouge1_score
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type\n","0 accuracy min_exact_match_score\n","1 accuracy min_rouge1_score"]},"execution_count":22,"metadata":{},"output_type":"execute_result"}],"source":["harness.testcases()"]},{"cell_type":"markdown","metadata":{"id":"UsbsuknXH0ue"},"source":["### Running the tests"]},{"cell_type":"code","execution_count":23,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":85,"referenced_widgets":["20e863ea2c17471ead434e1df3c623ed","d9f2bbecf3fd4473af04e2e25653f928","8f273303cf324d0bb3146ecea2af2411","d9f73f8d0c7345049a7ea11924b756dd","d32e905239be4fef985ae8767d6add99","01df3137965b434190d73bb59c9790bb","a2ff2f24ad77485e9de01427e2231712","ab31e5a39fe143d8895353e2c7ebea3c","61e4c8036ec34d28a5efafb0c41a0a74","aa57f92f95904c529d342790ecf4d75c","88af924ecc884636bb5bc9cad872e53a"]},"executionInfo":{"elapsed":281661,"status":"ok","timestamp":1692371664782,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"PxeBTKR9chtd","outputId":"3540745d-bab7-4eb5-f5eb-2477c8b951bc"},"outputs":[{"name":"stderr","output_type":"stream","text":["\rRunning testcases... : 0%| | 0/2 [00:00\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeexpected_resultactual_resultpass
0accuracymin_exact_match_score0.50.592982True
1accuracymin_rouge1_score0.50.730155True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n"," \n"],"text/plain":[" category test_type expected_result actual_result pass\n","0 accuracy min_exact_match_score 0.5 0.592982 True\n","1 accuracy min_rouge1_score 0.5 0.730155 True"]},"execution_count":24,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"uIOiTX1IH3d8"},"source":["### Final Results"]},{"cell_type":"code","execution_count":25,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"executionInfo":{"elapsed":35,"status":"ok","timestamp":1692371664787,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"4U3PMgpEcn5o","outputId":"4958bf35-ffc1-477d-e5bf-b3d86acae806"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0accuracymin_exact_match_score01100%65%True
1accuracymin_rouge1_score01100%65%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate \\\n","0 accuracy min_exact_match_score 0 1 100% \n","1 accuracy min_rouge1_score 0 1 100% \n","\n"," minimum_pass_rate pass \n","0 65% True \n","1 65% True "]},"execution_count":25,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]}],"metadata":{"accelerator":"TPU","colab":{"machine_shape":"hm","provenance":[],"toc_visible":true},"kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"name":"python"},"widgets":{"application/vnd.jupyter.widget-state+json":{"01df3137965b434190d73bb59c9790bb":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0d7c7a938349427983d62652e81cead5":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0dab743db8f14b77b0ec1699f92f86ed":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"20d999a03d814a7785232c091241dc1c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_351e721352bf4c7cb30dbbe8a06ce35d","placeholder":"​","style":"IPY_MODEL_ad6bedec421b40d897568ae3f2705810","value":"Downloading (…)solve/main/vocab.txt: 100%"}},"20e863ea2c17471ead434e1df3c623ed":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d9f2bbecf3fd4473af04e2e25653f928","IPY_MODEL_8f273303cf324d0bb3146ecea2af2411","IPY_MODEL_d9f73f8d0c7345049a7ea11924b756dd"],"layout":"IPY_MODEL_d32e905239be4fef985ae8767d6add99"}},"257c00fef73b4d50950c8d8b165e26a2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_75d0522480494bb1a7b66e14fc43faac","IPY_MODEL_4218ed9efdf84217b5daa2aa5930e20b","IPY_MODEL_867e0de65c734221ad6f2623c2a35f57"],"layout":"IPY_MODEL_d3ca7afb948f404682aa027d3d76d237"}},"2608c51cf9784a56baeddf9d1622ce76":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2773b8eeb7024310b2264d487a9b26df":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"2c907621903c43c9ad7ed84ee9026412":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"2e68a1149b7b40bc8c2811b1a16c96ea":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"351e721352bf4c7cb30dbbe8a06ce35d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3d19431d61e747df81b5b6730e67c955":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_6984b154f66d4f1ab209168e50a64acd","max":6270,"min":0,"orientation":"horizontal","style":"IPY_MODEL_2c907621903c43c9ad7ed84ee9026412","value":6270}},"3e9c9defb1d148b5a6de25cb2095740a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5a12148bfe9848c5b9827d9b677b39dd","placeholder":"​","style":"IPY_MODEL_b4bf22308b254236960ff1eb5306c4e9","value":"Downloading builder script: 100%"}},"4218ed9efdf84217b5daa2aa5930e20b":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_2608c51cf9784a56baeddf9d1622ce76","max":525,"min":0,"orientation":"horizontal","style":"IPY_MODEL_2773b8eeb7024310b2264d487a9b26df","value":525}},"4f579cc50d884981b562f112b8764075":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"52ef8bcdab0a42f0a5d6a336766de54d":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"56701a47f6ee4a6d81a98f66756baf03":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_20d999a03d814a7785232c091241dc1c","IPY_MODEL_6ab5b7e5c6784f3b92b6180ae0043589","IPY_MODEL_9824945e44fe4af4a1d70a8383b72b72"],"layout":"IPY_MODEL_0d7c7a938349427983d62652e81cead5"}},"5a0ba0d42433427c8874b56d5ef1f4a2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5a12148bfe9848c5b9827d9b677b39dd":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"61e4c8036ec34d28a5efafb0c41a0a74":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"660e7fdd115f4e728fe7ea0358fd8bff":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6984b154f66d4f1ab209168e50a64acd":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6ab5b7e5c6784f3b92b6180ae0043589":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_fabd451f3ccc47d5aed88e94eec722f7","max":231508,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c07ab8a5ad3e41e991f940b6e08e1814","value":231508}},"75d0522480494bb1a7b66e14fc43faac":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f2540d52716a4393a5f050f8d030f3f3","placeholder":"​","style":"IPY_MODEL_0dab743db8f14b77b0ec1699f92f86ed","value":"Downloading (…)lve/main/config.json: 100%"}},"7b972e6f8f624ac28f148a8cff4b0ee2":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"805c8478574545c398214ce2d295944a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_4f579cc50d884981b562f112b8764075","placeholder":"​","style":"IPY_MODEL_5a0ba0d42433427c8874b56d5ef1f4a2","value":" 6.27k/6.27k [00:00<00:00, 260kB/s]"}},"829fb20d826d45baaf8d785179c1b32f":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"867e0de65c734221ad6f2623c2a35f57":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a3d9b7d4b44540d88953c69b56f9269f","placeholder":"​","style":"IPY_MODEL_cb676eb37f2a4126837c7324bf51d7ad","value":" 525/525 [00:00<00:00, 17.4kB/s]"}},"88af924ecc884636bb5bc9cad872e53a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"8f273303cf324d0bb3146ecea2af2411":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_ab31e5a39fe143d8895353e2c7ebea3c","max":5669,"min":0,"orientation":"horizontal","style":"IPY_MODEL_61e4c8036ec34d28a5efafb0c41a0a74","value":5669}},"9824945e44fe4af4a1d70a8383b72b72":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_660e7fdd115f4e728fe7ea0358fd8bff","placeholder":"​","style":"IPY_MODEL_52ef8bcdab0a42f0a5d6a336766de54d","value":" 232k/232k [00:00<00:00, 3.60MB/s]"}},"9a1221b68d2c4af1a74f5978e252d507":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e349b98fd389418fb365f53185489437","placeholder":"​","style":"IPY_MODEL_f6ebb67ea4574f3e8924b90d7b5aba12","value":" 51.0M/51.0M [00:00<00:00, 148MB/s]"}},"a2ff2f24ad77485e9de01427e2231712":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"a3d9b7d4b44540d88953c69b56f9269f":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"aa57f92f95904c529d342790ecf4d75c":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ab31e5a39fe143d8895353e2c7ebea3c":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ad6bedec421b40d897568ae3f2705810":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"b16b721265754f5fa258970429fc7bdd":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b4bf22308b254236960ff1eb5306c4e9":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c07ab8a5ad3e41e991f940b6e08e1814":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"cb676eb37f2a4126837c7324bf51d7ad":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d32e905239be4fef985ae8767d6add99":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d3ca7afb948f404682aa027d3d76d237":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d5950fc7527049279a8d433985f79619":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3e9c9defb1d148b5a6de25cb2095740a","IPY_MODEL_3d19431d61e747df81b5b6730e67c955","IPY_MODEL_805c8478574545c398214ce2d295944a"],"layout":"IPY_MODEL_7b972e6f8f624ac28f148a8cff4b0ee2"}},"d9f2bbecf3fd4473af04e2e25653f928":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_01df3137965b434190d73bb59c9790bb","placeholder":"​","style":"IPY_MODEL_a2ff2f24ad77485e9de01427e2231712","value":"Downloading builder script: 100%"}},"d9f73f8d0c7345049a7ea11924b756dd":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_aa57f92f95904c529d342790ecf4d75c","placeholder":"​","style":"IPY_MODEL_88af924ecc884636bb5bc9cad872e53a","value":" 5.67k/5.67k [00:00<00:00, 239kB/s]"}},"e0e00dfcfb7c49ac961ff7f1101a0caa":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_2e68a1149b7b40bc8c2811b1a16c96ea","placeholder":"​","style":"IPY_MODEL_829fb20d826d45baaf8d785179c1b32f","value":"Downloading pytorch_model.bin: 100%"}},"e349b98fd389418fb365f53185489437":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e367e27cda314517ab18696ecd913e0a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_feb421598a0441498d81241716261b78","max":51044621,"min":0,"orientation":"horizontal","style":"IPY_MODEL_f0fc5b6cb35e4986b5ef1f2d03e56228","value":51044621}},"f0fc5b6cb35e4986b5ef1f2d03e56228":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"f2540d52716a4393a5f050f8d030f3f3":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f6ebb67ea4574f3e8924b90d7b5aba12":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"fa4244813260430c98d2fbad63671f10":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_e0e00dfcfb7c49ac961ff7f1101a0caa","IPY_MODEL_e367e27cda314517ab18696ecd913e0a","IPY_MODEL_9a1221b68d2c4af1a74f5978e252d507"],"layout":"IPY_MODEL_b16b721265754f5fa258970429fc7bdd"}},"fabd451f3ccc47d5aed88e94eec722f7":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"feb421598a0441498d81241716261b78":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}}}}},"nbformat":4,"nbformat_minor":0} +{"cells":[{"cell_type":"markdown","metadata":{"id":"-euMnuisAIDX"},"source":["![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"_-k2O6KeLI1D"},"source":["[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/llm_notebooks/dataset-notebooks/mmlu_dataset.ipynb)"]},{"cell_type":"markdown","metadata":{"id":"wCxsD2KDAWU2"},"source":["**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation and fairness test categories.\n","\n","Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings."]},{"cell_type":"markdown","metadata":{"id":"jNG1OYuQAgtW"},"source":["# Getting started with LangTest"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"32C5aiC-LI1L"},"outputs":[],"source":["!pip install \"langtest[openai,transformers,evaluate]\""]},{"cell_type":"markdown","metadata":{"id":"EsEtlSiNAnSO"},"source":["# Harness and Its Parameters\n","\n","The Harness class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results.Harness can be imported from the LangTest library in the following way."]},{"cell_type":"code","execution_count":2,"metadata":{"executionInfo":{"elapsed":3452,"status":"ok","timestamp":1692371266150,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"w2GPpdowS1C9"},"outputs":[],"source":["#Import Harness from the LangTest library\n","from langtest import Harness"]},{"cell_type":"markdown","metadata":{"id":"7_6PF_HGA4EO"},"source":["It imports the Harness class from within the module, that is designed to provide a blueprint or framework for conducting NLP testing, and that instances of the Harness class can be customized or configured for different testing scenarios or environments.\n","\n","Here is a list of the different parameters that can be passed to the Harness function:\n","\n","
\n","\n","\n","| Parameter | Description | \n","| - | - | \n","|**task** |Task for which the model is to be evaluated (question-answering or summarization)|\n","| **model** | Specifies the model(s) to be evaluated. This parameter can be provided as either a dictionary or a list of dictionaries. Each dictionary should contain the following keys:
  • model (mandatory): \tPipelineModel or path to a saved model or pretrained pipeline/model from hub.
  • hub (mandatory): Hub (library) to use in back-end for loading model from public models hub or from path
|\n","| **data** | The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys:
  • data_source (mandatory): The source of the data.
  • subset (optional): The subset of the data.
  • feature_column (optional): The column containing the features.
  • target_column (optional): The column containing the target labels.
  • split (optional): The data split to be used.
  • source (optional): Set to 'huggingface' when loading Hugging Face dataset.
|\n","| **config** | Configuration for the tests to be performed, specified in the form of a YAML file. |\n","\n","
\n","
"]},{"cell_type":"markdown","metadata":{"id":"pHJQHDcSA_CV"},"source":["# OpenAI Model Testing For Question Answering\n","\n","In this section, we dive into testing of OpenAI models in Question Answering task.\n","\n","LangTest supports robustness tests for LLM testing for now."]},{"cell_type":"code","execution_count":3,"metadata":{"executionInfo":{"elapsed":111,"status":"ok","timestamp":1692371266152,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"YXVcv79JTAWA"},"outputs":[],"source":["import os\n","\n","os.environ[\"OPENAI_API_KEY\"] = \"\""]},{"cell_type":"markdown","metadata":{"id":"2Q1uClT2kgLB"},"source":["## MMLU \n","[Measuring Massive Multitask Language Understanding](https://arxiv.org/abs/2009.03300)\n","\n","**Dataset Summary**\n","\n","- MMLU (Massive Multitask Language Understanding) is a new benchmark designed to measure knowledge acquired during pretraining by evaluating models exclusively in zero-shot and few-shot settings. This makes the benchmark more challenging and more similar to how we evaluate humans. The benchmark covers 57 subjects across STEM, the humanities, the social sciences, and more. It ranges in difficulty from an elementary level to an advanced professional level, and it tests both world knowledge and problem solving ability. Subjects range from traditional areas, such as mathematics and history, to more specialized areas like law and ethics. The granularity and breadth of the subjects makes the benchmark ideal for identifying a model’s blind spots.\n","\n","**Data Splits**\n","\n","- `test` - Test set from the MMLU dataset which covers 57 tasks including elementary mathematics, US history, computer science, law, and more. We took 50 samples from each tasks in the test set.\n","\n","- `test-tiny` - Truncated version of test set from the MMLU dataset which covers 57 tasks including elementary mathematics, US history, computer science, law, and more. We took 10 samples from each tasks in the test-tiny set.\n","\n","- `clinical` - Curated version of the MMLU dataset which contains the clinical subsets (college_biology, college_medicine, medical_genetics, human_aging, professional_medicine, nutrition)."]},{"cell_type":"markdown","metadata":{"id":"1WO54aEnBKK8"},"source":["### Setup and Configure Harness"]},{"cell_type":"code","execution_count":4,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":105,"status":"ok","timestamp":1692371266153,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"f13UydObTDRG","outputId":"e9ed4754-3026-42ba-85dd-6c100e3c60c9"},"outputs":[{"name":"stdout","output_type":"stream","text":["Test Configuration : \n"," {\n"," \"model_parameters\": {\n"," \"temperature\": 0.2,\n"," \"max_tokens\": 64\n"," },\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"lowercase\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(\n"," task=\"question-answering\", \n"," model={\"model\": \"text-davinci-003\",\"hub\":\"openai\"}, \n"," data={\"data_source\" :\"MMLU\",\n"," \"split\":\"test-tiny\"}\n"," )"]},{"cell_type":"markdown","metadata":{"id":"djMJVtS3U3Wv"},"source":["## Robustness"]},{"cell_type":"markdown","metadata":{"id":"NQ1KF731BW5O"},"source":["For tests we used uppercase, Dyslexia Word Swap, Add Slangs, Insert Abbreviations and Speech to Text typos . Other available robustness tests for QA task are:\n","* `add_context`\n","* `add_contraction`\n","* `add_punctuation`\n","* `add_typo`\n","* `add_ocr_typo`\n","* `american_to_british`\n","* `british_to_american`\n","* `lowercase`\n","* `strip_punctuation`\n","* `titlecase`\n","* `uppercase`\n","* `number_to_word`\n","* `add_abbreviation`\n","* `add_speech_to_text_typo`\n","* `add_slangs`\n","* `dyslexia_word_swap`\n","* `multiple_perturbations`\n","* `adjective_synonym_swap`\n","* `adjective_antonym_swap`\n","* `strip_all_punctuation`"]},{"cell_type":"markdown","metadata":{"id":"8VxrRAMkBf1H"},"source":["You can also set prompts and other model parameters in config. Possible parameters are:\n","* `user_promt:` Promt to be given to the model.\n","* `temperature:` Temperature of the model.\n","* `max_tokens:` Maximum number of output tokens allowed for model."]},{"cell_type":"code","execution_count":5,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":85,"status":"ok","timestamp":1692371266155,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"fMFVq3mCTQ7j","outputId":"150254fc-f2e6-42fe-93e7-92ef6c1468ae"},"outputs":[{"data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'uppercase': {'min_pass_rate': 0.66},\n"," 'dyslexia_word_swap': {'min_pass_rate': 0.6},\n"," 'add_abbreviation': {'min_pass_rate': 0.6},\n"," 'add_slangs': {'min_pass_rate': 0.6},\n"," 'add_speech_to_text_typo': {'min_pass_rate': 0.6}}}}"]},"execution_count":5,"metadata":{},"output_type":"execute_result"}],"source":["harness.configure(\n","{\n"," 'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'uppercase': {'min_pass_rate': 0.66},\n"," 'dyslexia_word_swap':{'min_pass_rate': 0.60},\n"," 'add_abbreviation':{'min_pass_rate': 0.60},\n"," 'add_slangs':{'min_pass_rate': 0.60},\n"," 'add_speech_to_text_typo':{'min_pass_rate': 0.60},\n","\n"," }\n"," }\n"," }\n"," )"]},{"cell_type":"markdown","metadata":{"id":"AxKHTNFELI1x"},"source":["➤ You can adjust the level of transformation in the sentence by using the \"`prob`\" parameter, which controls the proportion of words to be changed during robustness tests.\n","\n","➤ **NOTE** : \"`prob`\" defaults to 1.0, which means all words will be transformed.\n","```\n","harness.configure(\n","{\n"," 'tests': {\n"," 'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {\n"," 'uppercase': {'min_pass_rate': 0.66, 'prob': 0.50},\n"," 'dyslexia_word_swap':{'min_pass_rate': 0.60, 'prob': 0.70},\n"," }\n"," }\n","})\n","\n","```"]},{"cell_type":"markdown","metadata":{"id":"m5IuCmiEBuW8"},"source":["Here we have configured the harness to perform Five robustness tests and defined the minimum pass rate for each test."]},{"cell_type":"code","execution_count":6,"metadata":{"executionInfo":{"elapsed":71,"status":"ok","timestamp":1692371266157,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"nmHqJ_TlUg8h"},"outputs":[],"source":["harness.data = harness.data[:10]"]},{"cell_type":"markdown","metadata":{"id":"nAeqBsbAB_1M"},"source":["### Generating the test cases."]},{"cell_type":"code","execution_count":7,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":17814,"status":"ok","timestamp":1692371283903,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"CCJxFd4nUkMN","outputId":"9f99926a-a068-4698-ff9d-68f2416a075d"},"outputs":[{"name":"stderr","output_type":"stream","text":["Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 1392.99it/s]\n"]},{"data":{"text/plain":[]},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"source":["harness.generate()"]},{"cell_type":"markdown","metadata":{"id":"ZEWchFb8CDrk"},"source":["harness.generate() method automatically generates the test cases (based on the provided configuration)"]},{"cell_type":"markdown","metadata":{"id":"MEnLcl-OCG1O"},"source":["### Running the tests"]},{"cell_type":"code","execution_count":8,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":32123,"status":"ok","timestamp":1692371316007,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"gFEez-T0UlcC","outputId":"3684f7af-9359-4f24-e584-5307e3927bfe"},"outputs":[{"name":"stderr","output_type":"stream","text":["Running testcases... : 100%|██████████| 50/50 [00:32<00:00, 1.55it/s]\n"]},{"data":{"text/plain":[]},"execution_count":8,"metadata":{},"output_type":"execute_result"}],"source":["harness.run()"]},{"cell_type":"markdown","metadata":{"id":"3ice4dqfCVlr"},"source":["Called after harness.generate() and is to used to run all the tests. Returns a pass/fail flag for each test."]},{"cell_type":"markdown","metadata":{"id":"g1NxuqveOc-t"},"source":["### Generated Results"]},{"cell_type":"code","execution_count":9,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"executionInfo":{"elapsed":16558,"status":"ok","timestamp":1692371332559,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"ZjYBONiuYJdK","outputId":"4e69d5fb-cfbd-4713-c25e-0cb49bb0878d"},"outputs":[{"data":{"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeoriginal_contextoriginal_questionperturbed_contextperturbed_questionexpected_resultactual_resultpass
0robustnessuppercase-Find the degree for the given field extension ...-FIND THE DEGREE FOR THE GIVEN FIELD EXTENSION ...B. 4B. 4True
1robustnessuppercase-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-LET P = (1, 2, 5, 4)(2, 3) IN S_5 . FIND THE I...C. 24C. 24True
2robustnessuppercase-Find all zeros in the indicated finite field o...-FIND ALL ZEROS IN THE INDICATED FINITE FIELD O...A. 0D. 0,4False
3robustnessuppercase-Statement 1 | A factor group of a non-Abelian ...-STATEMENT 1 | A FACTOR GROUP OF A NON-ABELIAN ...A. True, TrueC. TRUE, FALSEFalse
4robustnessuppercase-Find the product of the given polynomials in t...-FIND THE PRODUCT OF THE GIVEN POLYNOMIALS IN T...C. 0C. 0True
5robustnessuppercase-Statement 1 | If a group has an element of ord...-STATEMENT 1 | IF A GROUP HAS AN ELEMENT OF ORD...C. True, FalseC. TRUE, FALSETrue
6robustnessuppercase-Statement 1 | Every homomorphic image of a gro...-STATEMENT 1 | EVERY HOMOMORPHIC IMAGE OF A GRO...C. True, FalseC. TRUE, FALSETrue
7robustnessuppercase-Statement 1 | A ring homomorphism is one to on...-STATEMENT 1 | A RING HOMOMORPHISM IS ONE TO ON...C. True, FalseA. TRUE, TRUEFalse
8robustnessuppercase-Find the degree for the given field extension ...-FIND THE DEGREE FOR THE GIVEN FIELD EXTENSION ...B. 4C. 2False
9robustnessuppercase-Find all zeros in the indicated finite field o...-FIND ALL ZEROS IN THE INDICATED FINITE FIELD O...A. 1C. 2,3False
10robustnessdyslexia_word_swap-Find the degree for the given field extension ...-Find the degree four the given field extension...B. 4B. 4True
11robustnessdyslexia_word_swap-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...C. 24C. 24True
12robustnessdyslexia_word_swap-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite field o...A. 0A. 0True
13robustnessdyslexia_word_swap-Statement 1 | A factor group of a non-Abelian ...-Statement 1 | A factor group off a non-Abelian...A. True, TrueC. True, FalseFalse
14robustnessdyslexia_word_swap-Find the product of the given polynomials in t...-Find the product off the given polynomials in ...C. 0C. 0True
15robustnessdyslexia_word_swap-Statement 1 | If a group has an element of ord...-Statement 1 | If a group has an element off or...C. True, FalseC. True, FalseTrue
16robustnessdyslexia_word_swap-Statement 1 | Every homomorphic image of a gro...-Statement 1 | Every homomorphic image off a gr...C. True, FalseC. True, FalseTrue
17robustnessdyslexia_word_swap-Statement 1 | A ring homomorphism is one to on...-Statement 1 | A ring homomorphism is won too w...C. True, FalseC. True, FalseTrue
18robustnessdyslexia_word_swap-Find the degree for the given field extension ...-Find the degree four the given field extension...B. 4B. 4True
19robustnessdyslexia_word_swap-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite field o...A. 1A. 1True
20robustnessadd_abbreviation-Find the degree for the given field extension ...-Find da degree 4 thedaven field extension Q(sq...B. 4B. 4True
21robustnessadd_abbreviation-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find da in...C. 24C. 24True
22robustnessadd_abbreviation-Find all zeros in the indicated finite field o...-Find all zeros in da indicated finite field of...A. 0A. 0True
23robustnessadd_abbreviation-Statement 1 | A factor group of a non-Abelian ...-Statement 1 | A factor group of a non-Abelian ...A. True, TrueA. True, TrueTrue
24robustnessadd_abbreviation-Find the product of the given polynomials in t...-Find da product of tdagiven polynomials in thd...C. 0C. 0True
25robustnessadd_abbreviation-Statement 1 | If a group has an element of ord...-Statement 1 | If a group has an element of ord...C. True, FalseC. True, FalseTrue
26robustnessadd_abbreviation-Statement 1 | Every homomorphic image of a gro...-Statement 1 | Every homomorphic image of a gro...C. True, FalseC. True, FalseTrue
27robustnessadd_abbreviation-Statement 1 | A ring homomorphism is one to on...-Statement 1 | A ring homomorphism is one 2 one...C. True, FalseC. True, FalseTrue
28robustnessadd_abbreviation-Find the degree for the given field extension ...-Find da degree 4 thedaven field extension Q(sq...B. 4B. 4True
29robustnessadd_abbreviation-Find all zeros in the indicated finite field o...-Find all zeros in da indicated finite field of...C. 2,3A. 1False
30robustnessadd_slangs-Find the degree for the given field extension ...-Find the degree for the given field extension ...B. 4B. 4True
31robustnessadd_slangs-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...C. 24C. 24True
32robustnessadd_slangs-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite field o...A. 0A. 0True
33robustnessadd_slangs-Statement 1 | A factor group of a non-Abelian ...-Statement 1 | A factor group of a non-Abelian ...A. True, TrueA. True, TrueTrue
34robustnessadd_slangs-Find the product of the given polynomials in t...-Find the product of the given polynomials in t...C. 0C. 0True
35robustnessadd_slangs-Statement 1 | If a group has an element of ord...-Statement 1 | If a group has an element of ord...C. True, FalseA. True, TrueFalse
36robustnessadd_slangs-Statement 1 | Every homomorphic image of a gro...-Statement 1 | Every homomorphic image of a gro...C. True, FalseA. True, TrueFalse
37robustnessadd_slangs-Statement 1 | A ring homomorphism is one to on...-Statement 1 | A ring homomorphism is one to on...C. True, FalseA. True, TrueFalse
38robustnessadd_slangs-Find the degree for the given field extension ...-Find the degree for the given field extension ...B. 4B. 4True
39robustnessadd_slangs-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite field o...A. 1A. 1True
40robustnessadd_speech_to_text_typo-Find the degree for the given field extension ...-Find the degree for the givin' feild extension...B. 4B. 4True
41robustnessadd_speech_to_text_typo-Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i...-Lett pea = (1, 2, 5, 4)(2, 3) in S_5 . Fined t...C. 24B. 2False
42robustnessadd_speech_to_text_typo-Find all zeros in the indicated finite field o...-Find all zeros in the indicated finite feild o...A. 0A. 0True
43robustnessadd_speech_to_text_typo-Statement 1 | A factor group of a non-Abelian ...-Statement 1 | A factor grupe of ae non-Abelian...A. True, TrueA. True, TrueTrue
44robustnessadd_speech_to_text_typo-Find the product of the given polynomials in t...-Find the product of the givin' polynomials in ...C. 0C. 0True
45robustnessadd_speech_to_text_typo-Statement 1 | If a group has an element of ord...-Statement 1 | If a groupe has 'N element of or...C. True, FalseC. True, FalseTrue
46robustnessadd_speech_to_text_typo-Statement 1 | Every homomorphic image of a gro...-Statement 1 | Every homomorphic image of a. gr...C. True, FalseA. True, TrueFalse
47robustnessadd_speech_to_text_typo-Statement 1 | A ring homomorphism is one to on...-Statement 1 | A wring homomorphism is one to o...C. True, FalseB. False, FalseFalse
48robustnessadd_speech_to_text_typo-Find the degree for the given field extension ...-Find the degree for the givin' field extension...B. 4B. 4True
49robustnessadd_speech_to_text_typo-Find all zeros in the indicated finite field o...-Find aull zeros inn the indicated finite field...C. 2,3C. 2,3True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type original_context \\\n","0 robustness uppercase - \n","1 robustness uppercase - \n","2 robustness uppercase - \n","3 robustness uppercase - \n","4 robustness uppercase - \n","5 robustness uppercase - \n","6 robustness uppercase - \n","7 robustness uppercase - \n","8 robustness uppercase - \n","9 robustness uppercase - \n","10 robustness dyslexia_word_swap - \n","11 robustness dyslexia_word_swap - \n","12 robustness dyslexia_word_swap - \n","13 robustness dyslexia_word_swap - \n","14 robustness dyslexia_word_swap - \n","15 robustness dyslexia_word_swap - \n","16 robustness dyslexia_word_swap - \n","17 robustness dyslexia_word_swap - \n","18 robustness dyslexia_word_swap - \n","19 robustness dyslexia_word_swap - \n","20 robustness add_abbreviation - \n","21 robustness add_abbreviation - \n","22 robustness add_abbreviation - \n","23 robustness add_abbreviation - \n","24 robustness add_abbreviation - \n","25 robustness add_abbreviation - \n","26 robustness add_abbreviation - \n","27 robustness add_abbreviation - \n","28 robustness add_abbreviation - \n","29 robustness add_abbreviation - \n","30 robustness add_slangs - \n","31 robustness add_slangs - \n","32 robustness add_slangs - \n","33 robustness add_slangs - \n","34 robustness add_slangs - \n","35 robustness add_slangs - \n","36 robustness add_slangs - \n","37 robustness add_slangs - \n","38 robustness add_slangs - \n","39 robustness add_slangs - \n","40 robustness add_speech_to_text_typo - \n","41 robustness add_speech_to_text_typo - \n","42 robustness add_speech_to_text_typo - \n","43 robustness add_speech_to_text_typo - \n","44 robustness add_speech_to_text_typo - \n","45 robustness add_speech_to_text_typo - \n","46 robustness add_speech_to_text_typo - \n","47 robustness add_speech_to_text_typo - \n","48 robustness add_speech_to_text_typo - \n","49 robustness add_speech_to_text_typo - \n","\n"," original_question perturbed_context \\\n","0 Find the degree for the given field extension ... - \n","1 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","2 Find all zeros in the indicated finite field o... - \n","3 Statement 1 | A factor group of a non-Abelian ... - \n","4 Find the product of the given polynomials in t... - \n","5 Statement 1 | If a group has an element of ord... - \n","6 Statement 1 | Every homomorphic image of a gro... - \n","7 Statement 1 | A ring homomorphism is one to on... - \n","8 Find the degree for the given field extension ... - \n","9 Find all zeros in the indicated finite field o... - \n","10 Find the degree for the given field extension ... - \n","11 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","12 Find all zeros in the indicated finite field o... - \n","13 Statement 1 | A factor group of a non-Abelian ... - \n","14 Find the product of the given polynomials in t... - \n","15 Statement 1 | If a group has an element of ord... - \n","16 Statement 1 | Every homomorphic image of a gro... - \n","17 Statement 1 | A ring homomorphism is one to on... - \n","18 Find the degree for the given field extension ... - \n","19 Find all zeros in the indicated finite field o... - \n","20 Find the degree for the given field extension ... - \n","21 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","22 Find all zeros in the indicated finite field o... - \n","23 Statement 1 | A factor group of a non-Abelian ... - \n","24 Find the product of the given polynomials in t... - \n","25 Statement 1 | If a group has an element of ord... - \n","26 Statement 1 | Every homomorphic image of a gro... - \n","27 Statement 1 | A ring homomorphism is one to on... - \n","28 Find the degree for the given field extension ... - \n","29 Find all zeros in the indicated finite field o... - \n","30 Find the degree for the given field extension ... - \n","31 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","32 Find all zeros in the indicated finite field o... - \n","33 Statement 1 | A factor group of a non-Abelian ... - \n","34 Find the product of the given polynomials in t... - \n","35 Statement 1 | If a group has an element of ord... - \n","36 Statement 1 | Every homomorphic image of a gro... - \n","37 Statement 1 | A ring homomorphism is one to on... - \n","38 Find the degree for the given field extension ... - \n","39 Find all zeros in the indicated finite field o... - \n","40 Find the degree for the given field extension ... - \n","41 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... - \n","42 Find all zeros in the indicated finite field o... - \n","43 Statement 1 | A factor group of a non-Abelian ... - \n","44 Find the product of the given polynomials in t... - \n","45 Statement 1 | If a group has an element of ord... - \n","46 Statement 1 | Every homomorphic image of a gro... - \n","47 Statement 1 | A ring homomorphism is one to on... - \n","48 Find the degree for the given field extension ... - \n","49 Find all zeros in the indicated finite field o... - \n","\n"," perturbed_question expected_result \\\n","0 FIND THE DEGREE FOR THE GIVEN FIELD EXTENSION ... B. 4 \n","1 LET P = (1, 2, 5, 4)(2, 3) IN S_5 . FIND THE I... C. 24 \n","2 FIND ALL ZEROS IN THE INDICATED FINITE FIELD O... A. 0 \n","3 STATEMENT 1 | A FACTOR GROUP OF A NON-ABELIAN ... A. True, True \n","4 FIND THE PRODUCT OF THE GIVEN POLYNOMIALS IN T... C. 0 \n","5 STATEMENT 1 | IF A GROUP HAS AN ELEMENT OF ORD... C. True, False \n","6 STATEMENT 1 | EVERY HOMOMORPHIC IMAGE OF A GRO... C. True, False \n","7 STATEMENT 1 | A RING HOMOMORPHISM IS ONE TO ON... C. True, False \n","8 FIND THE DEGREE FOR THE GIVEN FIELD EXTENSION ... B. 4 \n","9 FIND ALL ZEROS IN THE INDICATED FINITE FIELD O... A. 1 \n","10 Find the degree four the given field extension... B. 4 \n","11 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... C. 24 \n","12 Find all zeros in the indicated finite field o... A. 0 \n","13 Statement 1 | A factor group off a non-Abelian... A. True, True \n","14 Find the product off the given polynomials in ... C. 0 \n","15 Statement 1 | If a group has an element off or... C. True, False \n","16 Statement 1 | Every homomorphic image off a gr... C. True, False \n","17 Statement 1 | A ring homomorphism is won too w... C. True, False \n","18 Find the degree four the given field extension... B. 4 \n","19 Find all zeros in the indicated finite field o... A. 1 \n","20 Find da degree 4 thedaven field extension Q(sq... B. 4 \n","21 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find da in... C. 24 \n","22 Find all zeros in da indicated finite field of... A. 0 \n","23 Statement 1 | A factor group of a non-Abelian ... A. True, True \n","24 Find da product of tdagiven polynomials in thd... C. 0 \n","25 Statement 1 | If a group has an element of ord... C. True, False \n","26 Statement 1 | Every homomorphic image of a gro... C. True, False \n","27 Statement 1 | A ring homomorphism is one 2 one... C. True, False \n","28 Find da degree 4 thedaven field extension Q(sq... B. 4 \n","29 Find all zeros in da indicated finite field of... C. 2,3 \n","30 Find the degree for the given field extension ... B. 4 \n","31 Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the i... C. 24 \n","32 Find all zeros in the indicated finite field o... A. 0 \n","33 Statement 1 | A factor group of a non-Abelian ... A. True, True \n","34 Find the product of the given polynomials in t... C. 0 \n","35 Statement 1 | If a group has an element of ord... C. True, False \n","36 Statement 1 | Every homomorphic image of a gro... C. True, False \n","37 Statement 1 | A ring homomorphism is one to on... C. True, False \n","38 Find the degree for the given field extension ... B. 4 \n","39 Find all zeros in the indicated finite field o... A. 1 \n","40 Find the degree for the givin' feild extension... B. 4 \n","41 Lett pea = (1, 2, 5, 4)(2, 3) in S_5 . Fined t... C. 24 \n","42 Find all zeros in the indicated finite feild o... A. 0 \n","43 Statement 1 | A factor grupe of ae non-Abelian... A. True, True \n","44 Find the product of the givin' polynomials in ... C. 0 \n","45 Statement 1 | If a groupe has 'N element of or... C. True, False \n","46 Statement 1 | Every homomorphic image of a. gr... C. True, False \n","47 Statement 1 | A wring homomorphism is one to o... C. True, False \n","48 Find the degree for the givin' field extension... B. 4 \n","49 Find aull zeros inn the indicated finite field... C. 2,3 \n","\n"," actual_result pass \n","0 B. 4 True \n","1 C. 24 True \n","2 D. 0,4 False \n","3 C. TRUE, FALSE False \n","4 C. 0 True \n","5 C. TRUE, FALSE True \n","6 C. TRUE, FALSE True \n","7 A. TRUE, TRUE False \n","8 C. 2 False \n","9 C. 2,3 False \n","10 B. 4 True \n","11 C. 24 True \n","12 A. 0 True \n","13 C. True, False False \n","14 C. 0 True \n","15 C. True, False True \n","16 C. True, False True \n","17 C. True, False True \n","18 B. 4 True \n","19 A. 1 True \n","20 B. 4 True \n","21 C. 24 True \n","22 A. 0 True \n","23 A. True, True True \n","24 C. 0 True \n","25 C. True, False True \n","26 C. True, False True \n","27 C. True, False True \n","28 B. 4 True \n","29 A. 1 False \n","30 B. 4 True \n","31 C. 24 True \n","32 A. 0 True \n","33 A. True, True True \n","34 C. 0 True \n","35 A. True, True False \n","36 A. True, True False \n","37 A. True, True False \n","38 B. 4 True \n","39 A. 1 True \n","40 B. 4 True \n","41 B. 2 False \n","42 A. 0 True \n","43 A. True, True True \n","44 C. 0 True \n","45 C. True, False True \n","46 A. True, True False \n","47 B. False, False False \n","48 B. 4 True \n","49 C. 2,3 True "]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"Gl5QGV9pCZfz"},"source":["This method returns the generated results in the form of a pandas dataframe, which provides a convenient and easy-to-use format for working with the test results. You can use this method to quickly identify the test cases that failed and to determine where fixes are needed."]},{"cell_type":"markdown","metadata":{"id":"9fBgU33hCb2K"},"source":["### Final Results\n","\n","We can call `.report()` which summarizes the results giving information about pass and fail counts and overall test pass/fail flag."]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"executionInfo":{"elapsed":14511,"status":"ok","timestamp":1692371347056,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"nDmRw1AeUqIl","outputId":"c458e5f1-9f6f-4b40-bc19-7570592546be"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessuppercase5550%66%False
1robustnessdyslexia_word_swap1990%60%True
2robustnessadd_abbreviation1990%60%True
3robustnessadd_slangs3770%60%True
4robustnessadd_speech_to_text_typo3770%60%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate \\\n","0 robustness uppercase 5 5 50% \n","1 robustness dyslexia_word_swap 1 9 90% \n","2 robustness add_abbreviation 1 9 90% \n","3 robustness add_slangs 3 7 70% \n","4 robustness add_speech_to_text_typo 3 7 70% \n","\n"," minimum_pass_rate pass \n","0 66% False \n","1 60% True \n","2 60% True \n","3 60% True \n","4 60% True "]},"execution_count":10,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]},{"cell_type":"markdown","metadata":{"id":"IULGQtWAWp4L"},"source":["## Fairness"]},{"cell_type":"markdown","metadata":{"id":"z85d594ZGXyX"},"source":["Available Fairness tests for QA task are:\n","\n","* `max_gender_rouge1_score`\n","* `max_gender_rouge2_score`\n","* `max_gender_rougeL_score`\n","* `max_gender_rougeLsum_score`\n","* `min_gender_rouge1_score`\n","* `min_gender_rouge2_score`\n","* `min_gender_rougeL_score`\n","* `min_gender_rougeLsum_score`"]},{"cell_type":"code","execution_count":11,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":86,"status":"ok","timestamp":1692371347059,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"OoMGAn_FWpaP","outputId":"90175b71-b519-4687-b9bb-459bf3afdc35"},"outputs":[{"name":"stdout","output_type":"stream","text":["Test Configuration : \n"," {\n"," \"model_parameters\": {\n"," \"temperature\": 0.2,\n"," \"max_tokens\": 64\n"," },\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"lowercase\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(\n"," task=\"question-answering\", \n"," model={\"model\": \"text-davinci-003\",\"hub\":\"openai\"}, \n"," data={\"data_source\" :\"MMLU\",\n"," \"split\":\"test-tiny\"}\n"," )"]},{"cell_type":"code","execution_count":12,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":78,"status":"ok","timestamp":1692371347061,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"45-rhwhTXMWb","outputId":"d96893e0-a009-4da9-b4e5-63b200d83d45"},"outputs":[{"data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'fairness': {'min_gender_rouge1_score': {'min_score': 0.66},\n"," 'min_gender_rouge2_score': {'min_score': 0.6},\n"," 'min_gender_rougeL_score': {'min_score': 0.66},\n"," 'min_gender_rougeLsum_score': {'min_score': 0.66},\n"," 'max_gender_rouge1_score': {'max_score': 0.66},\n"," 'max_gender_rouge2_score': {'max_score': 0.6},\n"," 'max_gender_rougeL_score': {'max_score': 0.66},\n"," 'max_gender_rougeLsum_score': {'max_score': 0.66}}}}"]},"execution_count":12,"metadata":{},"output_type":"execute_result"}],"source":["harness.configure(\n","{\n"," 'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'fairness': {\n"," 'min_gender_rouge1_score': {'min_score': 0.66},\n"," 'min_gender_rouge2_score':{'min_score': 0.60},\n"," 'min_gender_rougeL_score': {'min_score': 0.66},\n"," 'min_gender_rougeLsum_score': {'min_score': 0.66},\n"," 'max_gender_rouge1_score': {'max_score': 0.66},\n"," 'max_gender_rouge2_score':{'max_score': 0.60},\n"," 'max_gender_rougeL_score': {'max_score': 0.66},\n"," 'max_gender_rougeLsum_score': {'max_score': 0.66},\n","\n","\n","\n","\n"," }\n"," }\n"," }\n"," )"]},{"cell_type":"code","execution_count":13,"metadata":{"executionInfo":{"elapsed":66,"status":"ok","timestamp":1692371347063,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"_cTZaer5XyDa"},"outputs":[],"source":["harness.data = harness.data[:10]"]},{"cell_type":"markdown","metadata":{"id":"dw85pgowGx8t"},"source":["### Generating the Test Cases"]},{"cell_type":"code","execution_count":14,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":76,"status":"ok","timestamp":1692371347075,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"F2p1pXfoXzND","outputId":"6cdcb7cb-119b-4f14-dce8-f03bc507a8d0"},"outputs":[{"name":"stderr","output_type":"stream","text":["Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 1369.79it/s]\n"]},{"data":{"text/plain":[]},"execution_count":14,"metadata":{},"output_type":"execute_result"}],"source":["harness.generate()"]},{"cell_type":"code","execution_count":15,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":802},"executionInfo":{"elapsed":64,"status":"ok","timestamp":1692371347078,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"vJZxMYyKX0Pe","outputId":"507d0db6-80e5-4eba-82f5-739ce1b9e8a1"},"outputs":[{"data":{"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typetest_case
0fairnessmin_gender_rouge1_scoremale
1fairnessmin_gender_rouge1_scorefemale
2fairnessmin_gender_rouge1_scoreunknown
3fairnessmin_gender_rouge2_scoremale
4fairnessmin_gender_rouge2_scorefemale
5fairnessmin_gender_rouge2_scoreunknown
6fairnessmin_gender_rougeL_scoremale
7fairnessmin_gender_rougeL_scorefemale
8fairnessmin_gender_rougeL_scoreunknown
9fairnessmin_gender_rougeLsum_scoremale
10fairnessmin_gender_rougeLsum_scorefemale
11fairnessmin_gender_rougeLsum_scoreunknown
12fairnessmax_gender_rouge1_scoremale
13fairnessmax_gender_rouge1_scorefemale
14fairnessmax_gender_rouge1_scoreunknown
15fairnessmax_gender_rouge2_scoremale
16fairnessmax_gender_rouge2_scorefemale
17fairnessmax_gender_rouge2_scoreunknown
18fairnessmax_gender_rougeL_scoremale
19fairnessmax_gender_rougeL_scorefemale
20fairnessmax_gender_rougeL_scoreunknown
21fairnessmax_gender_rougeLsum_scoremale
22fairnessmax_gender_rougeLsum_scorefemale
23fairnessmax_gender_rougeLsum_scoreunknown
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type test_case\n","0 fairness min_gender_rouge1_score male\n","1 fairness min_gender_rouge1_score female\n","2 fairness min_gender_rouge1_score unknown\n","3 fairness min_gender_rouge2_score male\n","4 fairness min_gender_rouge2_score female\n","5 fairness min_gender_rouge2_score unknown\n","6 fairness min_gender_rougeL_score male\n","7 fairness min_gender_rougeL_score female\n","8 fairness min_gender_rougeL_score unknown\n","9 fairness min_gender_rougeLsum_score male\n","10 fairness min_gender_rougeLsum_score female\n","11 fairness min_gender_rougeLsum_score unknown\n","12 fairness max_gender_rouge1_score male\n","13 fairness max_gender_rouge1_score female\n","14 fairness max_gender_rouge1_score unknown\n","15 fairness max_gender_rouge2_score male\n","16 fairness max_gender_rouge2_score female\n","17 fairness max_gender_rouge2_score unknown\n","18 fairness max_gender_rougeL_score male\n","19 fairness max_gender_rougeL_score female\n","20 fairness max_gender_rougeL_score unknown\n","21 fairness max_gender_rougeLsum_score male\n","22 fairness max_gender_rougeLsum_score female\n","23 fairness max_gender_rougeLsum_score unknown"]},"execution_count":15,"metadata":{},"output_type":"execute_result"}],"source":["harness.testcases()"]},{"cell_type":"markdown","metadata":{"id":"zSgEmwr7G2Xl"},"source":["### Running the tests"]},{"cell_type":"code","execution_count":16,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":181,"referenced_widgets":["257c00fef73b4d50950c8d8b165e26a2","75d0522480494bb1a7b66e14fc43faac","4218ed9efdf84217b5daa2aa5930e20b","867e0de65c734221ad6f2623c2a35f57","d3ca7afb948f404682aa027d3d76d237","f2540d52716a4393a5f050f8d030f3f3","0dab743db8f14b77b0ec1699f92f86ed","2608c51cf9784a56baeddf9d1622ce76","2773b8eeb7024310b2264d487a9b26df","a3d9b7d4b44540d88953c69b56f9269f","cb676eb37f2a4126837c7324bf51d7ad","56701a47f6ee4a6d81a98f66756baf03","20d999a03d814a7785232c091241dc1c","6ab5b7e5c6784f3b92b6180ae0043589","9824945e44fe4af4a1d70a8383b72b72","0d7c7a938349427983d62652e81cead5","351e721352bf4c7cb30dbbe8a06ce35d","ad6bedec421b40d897568ae3f2705810","fabd451f3ccc47d5aed88e94eec722f7","c07ab8a5ad3e41e991f940b6e08e1814","660e7fdd115f4e728fe7ea0358fd8bff","52ef8bcdab0a42f0a5d6a336766de54d","fa4244813260430c98d2fbad63671f10","e0e00dfcfb7c49ac961ff7f1101a0caa","e367e27cda314517ab18696ecd913e0a","9a1221b68d2c4af1a74f5978e252d507","b16b721265754f5fa258970429fc7bdd","2e68a1149b7b40bc8c2811b1a16c96ea","829fb20d826d45baaf8d785179c1b32f","feb421598a0441498d81241716261b78","f0fc5b6cb35e4986b5ef1f2d03e56228","e349b98fd389418fb365f53185489437","f6ebb67ea4574f3e8924b90d7b5aba12","d5950fc7527049279a8d433985f79619","3e9c9defb1d148b5a6de25cb2095740a","3d19431d61e747df81b5b6730e67c955","805c8478574545c398214ce2d295944a","7b972e6f8f624ac28f148a8cff4b0ee2","5a12148bfe9848c5b9827d9b677b39dd","b4bf22308b254236960ff1eb5306c4e9","6984b154f66d4f1ab209168e50a64acd","2c907621903c43c9ad7ed84ee9026412","4f579cc50d884981b562f112b8764075","5a0ba0d42433427c8874b56d5ef1f4a2"]},"executionInfo":{"elapsed":36184,"status":"ok","timestamp":1692371383203,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"marZgGMEX2F1","outputId":"93f92514-2be1-4875-9061-74524e84fbd0"},"outputs":[{"name":"stderr","output_type":"stream","text":["\rRunning testcases... : 0%| | 0/24 [00:00\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typetest_caseexpected_resultactual_resultpass
0fairnessmin_gender_rouge1_scoremale0.660.355556False
1fairnessmin_gender_rouge1_scorefemale0.660.750000True
2fairnessmin_gender_rouge1_scoreunknown0.660.222222False
3fairnessmin_gender_rouge2_scoremale0.600.000000False
4fairnessmin_gender_rouge2_scorefemale0.600.750000True
5fairnessmin_gender_rouge2_scoreunknown0.600.000000False
6fairnessmin_gender_rougeL_scoremale0.660.244444False
7fairnessmin_gender_rougeL_scorefemale0.660.750000True
8fairnessmin_gender_rougeL_scoreunknown0.660.222222False
9fairnessmin_gender_rougeLsum_scoremale0.660.244444False
10fairnessmin_gender_rougeLsum_scorefemale0.660.750000True
11fairnessmin_gender_rougeLsum_scoreunknown0.660.222222False
12fairnessmax_gender_rouge1_scoremale0.660.355556True
13fairnessmax_gender_rouge1_scorefemale0.660.750000False
14fairnessmax_gender_rouge1_scoreunknown0.660.222222True
15fairnessmax_gender_rouge2_scoremale0.600.000000True
16fairnessmax_gender_rouge2_scorefemale0.600.750000False
17fairnessmax_gender_rouge2_scoreunknown0.600.000000True
18fairnessmax_gender_rougeL_scoremale0.660.244444True
19fairnessmax_gender_rougeL_scorefemale0.660.750000False
20fairnessmax_gender_rougeL_scoreunknown0.660.222222True
21fairnessmax_gender_rougeLsum_scoremale0.660.244444True
22fairnessmax_gender_rougeLsum_scorefemale0.660.750000False
23fairnessmax_gender_rougeLsum_scoreunknown0.660.222222True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n"," \n"],"text/plain":[" category test_type test_case expected_result \\\n","0 fairness min_gender_rouge1_score male 0.66 \n","1 fairness min_gender_rouge1_score female 0.66 \n","2 fairness min_gender_rouge1_score unknown 0.66 \n","3 fairness min_gender_rouge2_score male 0.60 \n","4 fairness min_gender_rouge2_score female 0.60 \n","5 fairness min_gender_rouge2_score unknown 0.60 \n","6 fairness min_gender_rougeL_score male 0.66 \n","7 fairness min_gender_rougeL_score female 0.66 \n","8 fairness min_gender_rougeL_score unknown 0.66 \n","9 fairness min_gender_rougeLsum_score male 0.66 \n","10 fairness min_gender_rougeLsum_score female 0.66 \n","11 fairness min_gender_rougeLsum_score unknown 0.66 \n","12 fairness max_gender_rouge1_score male 0.66 \n","13 fairness max_gender_rouge1_score female 0.66 \n","14 fairness max_gender_rouge1_score unknown 0.66 \n","15 fairness max_gender_rouge2_score male 0.60 \n","16 fairness max_gender_rouge2_score female 0.60 \n","17 fairness max_gender_rouge2_score unknown 0.60 \n","18 fairness max_gender_rougeL_score male 0.66 \n","19 fairness max_gender_rougeL_score female 0.66 \n","20 fairness max_gender_rougeL_score unknown 0.66 \n","21 fairness max_gender_rougeLsum_score male 0.66 \n","22 fairness max_gender_rougeLsum_score female 0.66 \n","23 fairness max_gender_rougeLsum_score unknown 0.66 \n","\n"," actual_result pass \n","0 0.355556 False \n","1 0.750000 True \n","2 0.222222 False \n","3 0.000000 False \n","4 0.750000 True \n","5 0.000000 False \n","6 0.244444 False \n","7 0.750000 True \n","8 0.222222 False \n","9 0.244444 False \n","10 0.750000 True \n","11 0.222222 False \n","12 0.355556 True \n","13 0.750000 False \n","14 0.222222 True \n","15 0.000000 True \n","16 0.750000 False \n","17 0.000000 True \n","18 0.244444 True \n","19 0.750000 False \n","20 0.222222 True \n","21 0.244444 True \n","22 0.750000 False \n","23 0.222222 True "]},"execution_count":17,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"o39sXReLG7K9"},"source":["### Final Results"]},{"cell_type":"code","execution_count":18,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":300},"executionInfo":{"elapsed":209,"status":"ok","timestamp":1692371383216,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"AiyJ7SyJYC9V","outputId":"df0ec5a3-5a04-45c1-d635-f0be79abe66a"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0fairnessmin_gender_rouge1_score2133%65%False
1fairnessmin_gender_rouge2_score2133%65%False
2fairnessmin_gender_rougeL_score2133%65%False
3fairnessmin_gender_rougeLsum_score2133%65%False
4fairnessmax_gender_rouge1_score1267%65%True
5fairnessmax_gender_rouge2_score1267%65%True
6fairnessmax_gender_rougeL_score1267%65%True
7fairnessmax_gender_rougeLsum_score1267%65%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate \\\n","0 fairness min_gender_rouge1_score 2 1 33% \n","1 fairness min_gender_rouge2_score 2 1 33% \n","2 fairness min_gender_rougeL_score 2 1 33% \n","3 fairness min_gender_rougeLsum_score 2 1 33% \n","4 fairness max_gender_rouge1_score 1 2 67% \n","5 fairness max_gender_rouge2_score 1 2 67% \n","6 fairness max_gender_rougeL_score 1 2 67% \n","7 fairness max_gender_rougeLsum_score 1 2 67% \n","\n"," minimum_pass_rate pass \n","0 65% False \n","1 65% False \n","2 65% False \n","3 65% False \n","4 65% True \n","5 65% True \n","6 65% True \n","7 65% True "]},"execution_count":18,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]},{"cell_type":"markdown","metadata":{"id":"0jSkCQudYh3F"},"source":["## Accuracy"]},{"cell_type":"markdown","metadata":{"id":"YwAzCAHkGd0X"},"source":["Available Accuracy tests for QA task are:\n","\n","* `min_exact_match_score`\n","* `min_bleu_score`\n","* `min_rouge1_score`\n","* `min_rouge2_score`\n","* `min_rougeL_score`\n","* `min_rougeLsum_score`"]},{"cell_type":"code","execution_count":19,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":200,"status":"ok","timestamp":1692371383218,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"qG3UX5c-YgJn","outputId":"153fbe09-ae45-4dd3-bcbd-c97cd07b3c59"},"outputs":[{"name":"stdout","output_type":"stream","text":["Test Configuration : \n"," {\n"," \"model_parameters\": {\n"," \"temperature\": 0.2,\n"," \"max_tokens\": 64\n"," },\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"lowercase\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(\n"," task=\"question-answering\", \n"," model={\"model\": \"text-davinci-003\",\"hub\":\"openai\"}, \n"," data={\"data_source\" :\"MMLU\",\n"," \"split\":\"test-tiny\"}\n"," )"]},{"cell_type":"code","execution_count":20,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":189,"status":"ok","timestamp":1692371383222,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"KuLxNXwXYl2z","outputId":"4955decb-3e10-4c42-aa96-880298dce501"},"outputs":[{"data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'accuracy': {'min_exact_match_score': {'min_score': 0.5},\n"," 'min_rouge1_score': {'min_score': 0.5}}}}"]},"execution_count":20,"metadata":{},"output_type":"execute_result"}],"source":["harness.configure(\n","{\n"," 'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'accuracy': {'min_exact_match_score': {'min_score': 0.50},\n"," 'min_rouge1_score':{'min_score': 0.50},\n","\n"," }\n"," }\n"," }\n"," )"]},{"cell_type":"markdown","metadata":{"id":"hd6BEnBtHyME"},"source":["### Generating the test cases."]},{"cell_type":"code","execution_count":21,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":132,"status":"ok","timestamp":1692371383225,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"4_wMTSmbYqTa","outputId":"052f1736-382b-4b79-a395-a53fcf94d136"},"outputs":[{"name":"stderr","output_type":"stream","text":["\n","Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 5242.88it/s]\n"]},{"data":{"text/plain":[]},"execution_count":21,"metadata":{},"output_type":"execute_result"}],"source":["harness.generate()"]},{"cell_type":"code","execution_count":22,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"executionInfo":{"elapsed":114,"status":"ok","timestamp":1692371383229,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"W28l71dScgG0","outputId":"b136d68b-349d-45df-fb07-c79646dec5ac"},"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","
categorytest_type
0accuracymin_exact_match_score
1accuracymin_rouge1_score
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type\n","0 accuracy min_exact_match_score\n","1 accuracy min_rouge1_score"]},"execution_count":22,"metadata":{},"output_type":"execute_result"}],"source":["harness.testcases()"]},{"cell_type":"markdown","metadata":{"id":"UsbsuknXH0ue"},"source":["### Running the tests"]},{"cell_type":"code","execution_count":23,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":85,"referenced_widgets":["20e863ea2c17471ead434e1df3c623ed","d9f2bbecf3fd4473af04e2e25653f928","8f273303cf324d0bb3146ecea2af2411","d9f73f8d0c7345049a7ea11924b756dd","d32e905239be4fef985ae8767d6add99","01df3137965b434190d73bb59c9790bb","a2ff2f24ad77485e9de01427e2231712","ab31e5a39fe143d8895353e2c7ebea3c","61e4c8036ec34d28a5efafb0c41a0a74","aa57f92f95904c529d342790ecf4d75c","88af924ecc884636bb5bc9cad872e53a"]},"executionInfo":{"elapsed":281661,"status":"ok","timestamp":1692371664782,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"PxeBTKR9chtd","outputId":"3540745d-bab7-4eb5-f5eb-2477c8b951bc"},"outputs":[{"name":"stderr","output_type":"stream","text":["\rRunning testcases... : 0%| | 0/2 [00:00\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeexpected_resultactual_resultpass
0accuracymin_exact_match_score0.50.592982True
1accuracymin_rouge1_score0.50.730155True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n"," \n"],"text/plain":[" category test_type expected_result actual_result pass\n","0 accuracy min_exact_match_score 0.5 0.592982 True\n","1 accuracy min_rouge1_score 0.5 0.730155 True"]},"execution_count":24,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"uIOiTX1IH3d8"},"source":["### Final Results"]},{"cell_type":"code","execution_count":25,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"executionInfo":{"elapsed":35,"status":"ok","timestamp":1692371664787,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"4U3PMgpEcn5o","outputId":"4958bf35-ffc1-477d-e5bf-b3d86acae806"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0accuracymin_exact_match_score01100%65%True
1accuracymin_rouge1_score01100%65%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate \\\n","0 accuracy min_exact_match_score 0 1 100% \n","1 accuracy min_rouge1_score 0 1 100% \n","\n"," minimum_pass_rate pass \n","0 65% True \n","1 65% True "]},"execution_count":25,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]}],"metadata":{"accelerator":"TPU","colab":{"machine_shape":"hm","provenance":[],"toc_visible":true},"kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"name":"python"},"widgets":{"application/vnd.jupyter.widget-state+json":{"01df3137965b434190d73bb59c9790bb":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0d7c7a938349427983d62652e81cead5":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0dab743db8f14b77b0ec1699f92f86ed":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"20d999a03d814a7785232c091241dc1c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_351e721352bf4c7cb30dbbe8a06ce35d","placeholder":"​","style":"IPY_MODEL_ad6bedec421b40d897568ae3f2705810","value":"Downloading (…)solve/main/vocab.txt: 100%"}},"20e863ea2c17471ead434e1df3c623ed":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d9f2bbecf3fd4473af04e2e25653f928","IPY_MODEL_8f273303cf324d0bb3146ecea2af2411","IPY_MODEL_d9f73f8d0c7345049a7ea11924b756dd"],"layout":"IPY_MODEL_d32e905239be4fef985ae8767d6add99"}},"257c00fef73b4d50950c8d8b165e26a2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_75d0522480494bb1a7b66e14fc43faac","IPY_MODEL_4218ed9efdf84217b5daa2aa5930e20b","IPY_MODEL_867e0de65c734221ad6f2623c2a35f57"],"layout":"IPY_MODEL_d3ca7afb948f404682aa027d3d76d237"}},"2608c51cf9784a56baeddf9d1622ce76":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2773b8eeb7024310b2264d487a9b26df":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"2c907621903c43c9ad7ed84ee9026412":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"2e68a1149b7b40bc8c2811b1a16c96ea":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"351e721352bf4c7cb30dbbe8a06ce35d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3d19431d61e747df81b5b6730e67c955":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_6984b154f66d4f1ab209168e50a64acd","max":6270,"min":0,"orientation":"horizontal","style":"IPY_MODEL_2c907621903c43c9ad7ed84ee9026412","value":6270}},"3e9c9defb1d148b5a6de25cb2095740a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5a12148bfe9848c5b9827d9b677b39dd","placeholder":"​","style":"IPY_MODEL_b4bf22308b254236960ff1eb5306c4e9","value":"Downloading builder script: 100%"}},"4218ed9efdf84217b5daa2aa5930e20b":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_2608c51cf9784a56baeddf9d1622ce76","max":525,"min":0,"orientation":"horizontal","style":"IPY_MODEL_2773b8eeb7024310b2264d487a9b26df","value":525}},"4f579cc50d884981b562f112b8764075":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"52ef8bcdab0a42f0a5d6a336766de54d":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"56701a47f6ee4a6d81a98f66756baf03":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_20d999a03d814a7785232c091241dc1c","IPY_MODEL_6ab5b7e5c6784f3b92b6180ae0043589","IPY_MODEL_9824945e44fe4af4a1d70a8383b72b72"],"layout":"IPY_MODEL_0d7c7a938349427983d62652e81cead5"}},"5a0ba0d42433427c8874b56d5ef1f4a2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5a12148bfe9848c5b9827d9b677b39dd":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"61e4c8036ec34d28a5efafb0c41a0a74":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"660e7fdd115f4e728fe7ea0358fd8bff":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6984b154f66d4f1ab209168e50a64acd":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6ab5b7e5c6784f3b92b6180ae0043589":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_fabd451f3ccc47d5aed88e94eec722f7","max":231508,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c07ab8a5ad3e41e991f940b6e08e1814","value":231508}},"75d0522480494bb1a7b66e14fc43faac":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f2540d52716a4393a5f050f8d030f3f3","placeholder":"​","style":"IPY_MODEL_0dab743db8f14b77b0ec1699f92f86ed","value":"Downloading (…)lve/main/config.json: 100%"}},"7b972e6f8f624ac28f148a8cff4b0ee2":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"805c8478574545c398214ce2d295944a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_4f579cc50d884981b562f112b8764075","placeholder":"​","style":"IPY_MODEL_5a0ba0d42433427c8874b56d5ef1f4a2","value":" 6.27k/6.27k [00:00<00:00, 260kB/s]"}},"829fb20d826d45baaf8d785179c1b32f":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"867e0de65c734221ad6f2623c2a35f57":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a3d9b7d4b44540d88953c69b56f9269f","placeholder":"​","style":"IPY_MODEL_cb676eb37f2a4126837c7324bf51d7ad","value":" 525/525 [00:00<00:00, 17.4kB/s]"}},"88af924ecc884636bb5bc9cad872e53a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"8f273303cf324d0bb3146ecea2af2411":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_ab31e5a39fe143d8895353e2c7ebea3c","max":5669,"min":0,"orientation":"horizontal","style":"IPY_MODEL_61e4c8036ec34d28a5efafb0c41a0a74","value":5669}},"9824945e44fe4af4a1d70a8383b72b72":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_660e7fdd115f4e728fe7ea0358fd8bff","placeholder":"​","style":"IPY_MODEL_52ef8bcdab0a42f0a5d6a336766de54d","value":" 232k/232k [00:00<00:00, 3.60MB/s]"}},"9a1221b68d2c4af1a74f5978e252d507":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e349b98fd389418fb365f53185489437","placeholder":"​","style":"IPY_MODEL_f6ebb67ea4574f3e8924b90d7b5aba12","value":" 51.0M/51.0M [00:00<00:00, 148MB/s]"}},"a2ff2f24ad77485e9de01427e2231712":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"a3d9b7d4b44540d88953c69b56f9269f":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"aa57f92f95904c529d342790ecf4d75c":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ab31e5a39fe143d8895353e2c7ebea3c":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ad6bedec421b40d897568ae3f2705810":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"b16b721265754f5fa258970429fc7bdd":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b4bf22308b254236960ff1eb5306c4e9":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c07ab8a5ad3e41e991f940b6e08e1814":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"cb676eb37f2a4126837c7324bf51d7ad":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d32e905239be4fef985ae8767d6add99":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d3ca7afb948f404682aa027d3d76d237":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d5950fc7527049279a8d433985f79619":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3e9c9defb1d148b5a6de25cb2095740a","IPY_MODEL_3d19431d61e747df81b5b6730e67c955","IPY_MODEL_805c8478574545c398214ce2d295944a"],"layout":"IPY_MODEL_7b972e6f8f624ac28f148a8cff4b0ee2"}},"d9f2bbecf3fd4473af04e2e25653f928":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_01df3137965b434190d73bb59c9790bb","placeholder":"​","style":"IPY_MODEL_a2ff2f24ad77485e9de01427e2231712","value":"Downloading builder script: 100%"}},"d9f73f8d0c7345049a7ea11924b756dd":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_aa57f92f95904c529d342790ecf4d75c","placeholder":"​","style":"IPY_MODEL_88af924ecc884636bb5bc9cad872e53a","value":" 5.67k/5.67k [00:00<00:00, 239kB/s]"}},"e0e00dfcfb7c49ac961ff7f1101a0caa":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_2e68a1149b7b40bc8c2811b1a16c96ea","placeholder":"​","style":"IPY_MODEL_829fb20d826d45baaf8d785179c1b32f","value":"Downloading pytorch_model.bin: 100%"}},"e349b98fd389418fb365f53185489437":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e367e27cda314517ab18696ecd913e0a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_feb421598a0441498d81241716261b78","max":51044621,"min":0,"orientation":"horizontal","style":"IPY_MODEL_f0fc5b6cb35e4986b5ef1f2d03e56228","value":51044621}},"f0fc5b6cb35e4986b5ef1f2d03e56228":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"f2540d52716a4393a5f050f8d030f3f3":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f6ebb67ea4574f3e8924b90d7b5aba12":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"fa4244813260430c98d2fbad63671f10":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_e0e00dfcfb7c49ac961ff7f1101a0caa","IPY_MODEL_e367e27cda314517ab18696ecd913e0a","IPY_MODEL_9a1221b68d2c4af1a74f5978e252d507"],"layout":"IPY_MODEL_b16b721265754f5fa258970429fc7bdd"}},"fabd451f3ccc47d5aed88e94eec722f7":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"feb421598a0441498d81241716261b78":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}}}}},"nbformat":4,"nbformat_minor":0} diff --git a/demo/tutorials/misc/HF_Callback_NER.ipynb b/demo/tutorials/misc/HF_Callback_NER.ipynb new file mode 100644 index 000000000..0b10bac4d --- /dev/null +++ b/demo/tutorials/misc/HF_Callback_NER.ipynb @@ -0,0 +1,668 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![image.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/misc/Comparing_Models_Notebook.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering, Summarization, Clinical-Tests and Security tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity, translation, performance, security, clinical and fairness test categories.\n", + "\n", + "Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Getting started with LangTest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install \"langtest[transformers]\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# LangTestCallback and Its Parameters\n", + "\n", + "The LangTestCallback class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results. It can be imported from the LangTest library in the following way." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#Import Harness from the LangTest library\n", + "from langtest.callback import LangTestCallback" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It imports the callback class from within the module, that is designed to provide a blueprint or framework for conducting NLP testing, and instances of the callback class can be customized or configured for different testing scenarios or environments then provided to the trainer.\n", + "\n", + "Here is a list of the different parameters that can be passed to the LangTestCallback function:\n", + "\n", + "
\n", + "\n", + "| Parameter | Description |\n", + "| --------------------- | ----------- |\n", + "| **task** | Task for which the model is to be evaluated (text-classification or ner) |\n", + "| **data** | The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys:
  • data_source (mandatory): The source of the data.
  • subset (optional): The subset of the data.
  • feature_column (optional): The column containing the features.
  • target_column (optional): The column containing the target labels.
  • split (optional): The data split to be used.
  • source (optional): Set to 'huggingface' when loading Hugging Face dataset.
|\n", + "| **config** | Configuration for the tests to be performed, specified in the form of a YAML file. |\n", + "| **print_reports** | A bool value that specifies if the reports should be printed. |\n", + "| **save_reports** | A bool value that specifies if the reports should be saved. |\n", + "| **run_each_epoch** | A bool value that specifies if the tests should be run after each epoch or the at the end of training |\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing for training" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "H_93RQeoDVsW" + }, + "outputs": [], + "source": [ + "!pip install datasets\n", + "!pip install transformers[torch]\n", + "!pip install tensorflow -U" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!wget https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/demo/data/conll03.conll\n", + "!wget https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vFzwOHkqC7tQ", + "outputId": "d7dccbc0-1691-43a5-879a-0fc04e6b5a60" + }, + "outputs": [], + "source": [ + "import torch\n", + "from torch.utils.data import Dataset, DataLoader\n", + "from transformers import BertForTokenClassification, BertTokenizerFast, Trainer, TrainingArguments\n", + "from seqeval.metrics import accuracy_score, f1_score, precision_score, recall_score\n", + "import numpy as np\n", + "\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "# Load dataset\n", + "file_path = \"conll03.conll\"\n", + "\n", + "def read_conll_file(file_path):\n", + " with open(file_path, \"r\") as file:\n", + " lines = file.readlines()\n", + " return lines[::2]\n", + "\n", + "lines = read_conll_file(file_path)\n", + "\n", + "# Preprocess dataset\n", + "def preprocess_conll(lines):\n", + " tokens = []\n", + " labels = []\n", + " token_list = []\n", + " label_list = []\n", + "\n", + " for line in lines:\n", + " if line.startswith(\"-DOCSTART-\") or line == \"\\n\":\n", + " if token_list:\n", + " tokens.append(token_list)\n", + " labels.append(label_list)\n", + " token_list = []\n", + " label_list = []\n", + " else:\n", + " token, _, _, label = line.strip().split()\n", + " token_list.append(token)\n", + " label_list.append(label)\n", + "\n", + " return tokens, labels\n", + "\n", + "tokens, labels = preprocess_conll(lines)\n", + "\n", + "class NERDataset(Dataset):\n", + " def __init__(self, tokens, labels, tokenizer, max_length=128):\n", + " self.tokens = tokens\n", + " self.labels = labels\n", + " self.tokenizer = tokenizer\n", + " self.max_length = max_length\n", + "\n", + " self.label_map = {label: i for i, label in enumerate(sorted(set([lbl for doc_labels in labels for lbl in doc_labels])))}\n", + " self.id2label = {v: k for k, v in self.label_map.items()}\n", + "\n", + " def __len__(self):\n", + " return len(self.tokens)\n", + "\n", + " def __getitem__(self, idx):\n", + " token_list = self.tokens[idx]\n", + " label_list = self.labels[idx]\n", + "\n", + " encoded = self.tokenizer(token_list, is_split_into_words=True, padding=\"max_length\", truncation=True, max_length=self.max_length, return_tensors=\"pt\")\n", + " token_ids = encoded.input_ids.squeeze(0)\n", + " attention_mask = encoded.attention_mask.squeeze(0)\n", + "\n", + " label_ids = [self.label_map[label] for label in label_list]\n", + " label_ids = [-100] + label_ids + [-100] # Account for [CLS] and [SEP] tokens\n", + " label_ids += [-100] * (self.max_length - len(label_ids)) # Pad labels\n", + "\n", + " return {\n", + " \"input_ids\": token_ids,\n", + " \"attention_mask\": attention_mask,\n", + " \"labels\": torch.tensor(label_ids, dtype=torch.long),\n", + " }\n", + "\n", + "# Initialize tokenizer and dataset\n", + "tokenizer = BertTokenizerFast.from_pretrained(\"dslim/bert-base-NER\")\n", + "train_dataset = NERDataset(tokens, labels, tokenizer)\n", + "\n", + "# Initialize model\n", + "model = BertForTokenClassification.from_pretrained(\n", + " \"dslim/bert-base-NER\",\n", + " num_labels=len(train_dataset.label_map),\n", + " id2label=train_dataset.id2label,\n", + " label2id=train_dataset.label_map,\n", + " ignore_mismatched_sizes=True,\n", + ")\n", + "\n", + "# Initialize the classifier layer with the correct number of labels\n", + "model.classifier = torch.nn.Linear(model.config.hidden_size, len(train_dataset.label_map))\n", + "\n", + "# Move the model to the appropriate device\n", + "model.to(device)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a LangTestCallback instance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After loading the model and tokenizer from huggingface, we can get to the training part of our process. We will utilize `transformers.Trainer` for easily integrating our callback into the training process. We will also use `transformers.TrainingArguments` to specify the training arguments.\n", + "\n", + "We can store the config in a dictionary and pass it to the LangTestCallback function for easier use and visual appeal. The config will be used in this notebook is below:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "ZqT9vZQiC7tS" + }, + "outputs": [], + "source": [ + "config = {\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\"min_pass_rate\": 0.7},\n", + " \"uppercase\": {\"min_pass_rate\": 0.7},\n", + " \"american_to_british\": {\"min_pass_rate\": 0.7},\n", + " },\n", + " \"accuracy\": {\n", + " \"min_micro_f1_score\": {\n", + " \"min_score\": 0.7\n", + " }\n", + " },\n", + " \"bias\": {\n", + " \"replace_to_female_pronouns\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"replace_to_low_income_country\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " }\n", + " }\n", + "}\n", + "my_callback = LangTestCallback(task=\"ner\", data={\"data_source\":\"sample.conll\"}, config=config, save_reports=True, run_each_epoch=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating the Trainer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As mentioned earlier, we create a TrainingArguments object to specify the training arguments. We will also create a Trainer object to train our model. Then we can pass the LangTestCallback object to the Trainer object as a callback. LangTestCallback initilizes the harness object and generates the testcases using .generate() after the trainer is initialized." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "325jnkfxfCPF" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"uppercase\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"american_to_british\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " },\n", + " \"accuracy\": {\n", + " \"min_micro_f1_score\": {\n", + " \"min_score\": 0.7\n", + " }\n", + " },\n", + " \"bias\": {\n", + " \"replace_to_female_pronouns\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"replace_to_low_income_country\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "# Training arguments\n", + "training_args = TrainingArguments(\n", + " output_dir=\"./results\",\n", + " num_train_epochs=2,\n", + " per_device_train_batch_size=64,\n", + " logging_dir=\"./logs\",\n", + " logging_steps=100,\n", + " save_steps=1000,\n", + " learning_rate=3e-5,\n", + " weight_decay=0.01,\n", + ")\n", + "\n", + "# Initialize trainer\n", + "trainer = Trainer(\n", + " model=model,\n", + " args=training_args,\n", + " train_dataset=train_dataset,\n", + " tokenizer=tokenizer,\n", + " callbacks=[my_callback],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Training" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The actual training step is very simple. We just need to call the train() method of the Trainer object. We can also pass the training arguments to the train() method but its default values are OK in this case." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have the reports printed and also saved under the reports folder. The reports are saved in the form of a MD file. The reports folder is created in the same directory as the notebook.We have the reports printed and also saved under the reports folder. The reports are saved in the form of a MD file. The reports folder is created in the same directory as the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "PzAaW4CPC7tV", + "outputId": "f11d85ee-36f2-4341-a761-1d305391790c" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating testcases...: 100%|██████████| 3/3 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo6514769%70%False
1robustnessuppercase1296935%70%False
2accuracymin_micro_f1_score01100%100%True
3biasreplace_to_female_pronouns111761%70%False
4biasreplace_to_low_income_country444450%70%False
\n", + "" + ], + "text/plain": [ + " category test_type fail_count pass_count \\\n", + "0 robustness add_typo 65 147 \n", + "1 robustness uppercase 129 69 \n", + "2 accuracy min_micro_f1_score 0 1 \n", + "3 bias replace_to_female_pronouns 11 17 \n", + "4 bias replace_to_low_income_country 44 44 \n", + "\n", + " pass_rate minimum_pass_rate pass \n", + "0 69% 70% False \n", + "1 35% 70% False \n", + "2 100% 100% True \n", + "3 61% 70% False \n", + "4 50% 70% False " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 527/527 [00:13<00:00, 39.39it/s]\n" + ] + }, + { + "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", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo6514769%70%False
1robustnessuppercase1296935%70%False
2accuracymin_micro_f1_score01100%100%True
3biasreplace_to_female_pronouns111761%70%False
4biasreplace_to_low_income_country444450%70%False
\n", + "
" + ], + "text/plain": [ + " category test_type fail_count pass_count \\\n", + "0 robustness add_typo 65 147 \n", + "1 robustness uppercase 129 69 \n", + "2 accuracy min_micro_f1_score 0 1 \n", + "3 bias replace_to_female_pronouns 11 17 \n", + "4 bias replace_to_low_income_country 44 44 \n", + "\n", + " pass_rate minimum_pass_rate pass \n", + "0 69% 70% False \n", + "1 35% 70% False \n", + "2 100% 100% True \n", + "3 61% 70% False \n", + "4 50% 70% False " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'train_runtime': 2029.1679, 'train_samples_per_second': 1.67, 'train_steps_per_second': 0.027, 'train_loss': 0.7498808260317202, 'epoch': 2.0}\n" + ] + }, + { + "data": { + "text/plain": [ + "TrainOutput(global_step=54, training_loss=0.7498808260317202, metrics={'train_runtime': 2029.1679, 'train_samples_per_second': 1.67, 'train_steps_per_second': 0.027, 'train_loss': 0.7498808260317202, 'epoch': 2.0})" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Training the model\n", + "trainer.train()" + ] + } + ], + "metadata": { + "accelerator": "TPU", + "colab": { + "machine_shape": "hm", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "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.10.11" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/demo/tutorials/misc/HF_Callback_Text_Classification.ipynb b/demo/tutorials/misc/HF_Callback_Text_Classification.ipynb new file mode 100644 index 000000000..47119e79b --- /dev/null +++ b/demo/tutorials/misc/HF_Callback_Text_Classification.ipynb @@ -0,0 +1,6207 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "jivErFCkFgxe" + }, + "source": [ + "![image.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VGFU1I5BFgxg" + }, + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/misc/Comparing_Models_Notebook.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "V48ExCf-Fgxg" + }, + "source": [ + "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering, Summarization, Clinical-Tests and Security tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity, translation, performance, security, clinical and fairness test categories.\n", + "\n", + "Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y-cUyOo7Fgxg" + }, + "source": [ + "# Getting started with LangTest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5PSN8rcjFgxg" + }, + "outputs": [], + "source": [ + "!pip install langtest[transformers]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L0Iqr61XFgxh" + }, + "source": [ + "# LangTestCallback and Its Parameters\n", + "\n", + "The LangTestCallback class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results. It can be imported from the LangTest library in the following way." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "Aw_gRAOsFgxh" + }, + "outputs": [], + "source": [ + "#Import Harness from the LangTest library\n", + "from langtest.callback import LangTestCallback" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "POQ5a8EhFgxh" + }, + "source": [ + "It imports the callback class from within the module, that is designed to provide a blueprint or framework for conducting NLP testing, and instances of the callback class can be customized or configured for different testing scenarios or environments then provided to the trainer.\n", + "\n", + "Here is a list of the different parameters that can be passed to the LangTestCallback function:\n", + "\n", + "
\n", + "\n", + "| Parameter | Description |\n", + "| --------------------- | ----------- |\n", + "| **task** | Task for which the model is to be evaluated (text-classification or ner) |\n", + "| **data** | The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys:
  • data_source (mandatory): The source of the data.
  • subset (optional): The subset of the data.
  • feature_column (optional): The column containing the features.
  • target_column (optional): The column containing the target labels.
  • split (optional): The data split to be used.
  • source (optional): Set to 'huggingface' when loading Hugging Face dataset.
|\n", + "| **config** | Configuration for the tests to be performed, specified in the form of a YAML file. |\n", + "| **print_reports** | A bool value that specifies if the reports should be printed. |\n", + "| **save_reports** | A bool value that specifies if the reports should be saved. |\n", + "| **run_each_epoch** | A bool value that specifies if the tests should be run after each epoch or the at the end of training |\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "H_93RQeoDVsW" + }, + "outputs": [], + "source": [ + "!pip install datasets\n", + "!pip install transformers[torch]\n", + "!pip install tensorflow -U" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 401, + "referenced_widgets": [ + "0f339b7dda014a65acfe241384167c53", + "6db1f4ec80fb4fa7a5f77c2909b3c755", + "49b76e2c8d4c484d9e8e78f55dd34f2b", + "65d02c0924da4eca835fa9cb89c7d7dd", + "c7d2e34de0714971984e8a4e72c85f16", + "028376ac680b43c1a294407e9ab6a5af", + "fadcdd015f6541fbaadf975dd13cd95f", + "5c8ad99ebaa347f79905a557c9212381", + "4b4dad9da390409d81fed270278bf4c7", + "e7c48e205424478a8f015c77902fb134", + "d97d6cbf86544494885c3d347febc852", + "2e978e6bd19047f78c897106c31966ed", + "04886efe65104ef1ade8715a59ef1f41", + "8144f7eb5c6e4882b0cd2eb2f968c882", + "6c316019bb8a4097b9a2a88dda964bc7", + "91f16706c6134d6a8ef4fa07aa38ad83", + "9f1b265bba014211a8eae834cb4727bd", + "27ca1877f22148808a9ac400a42a7a26", + "d868c8883fee4bfc9b589da2fc7275fd", + "b36a094e04ab41e59e61a0614b1c7b26", + "b3fe91b4f396478eb71c1a3e6fbd0d6f", + "22deb7749a3940048448989ef5b91ab4", + "a3aac8ab3e1440388759e76e0b8d400b", + "fb68bc3a68c74db09891f09a797fad4d", + "fd3c248bc0d64c1b9852f47d4ee7eb17", + "33c598afbc834c938618d85007f8b36c", + "2cc56448beb44502ba5cbc7f7b5ae057", + "484d6ef0cb9548c495b7f89adddb8799", + "f49c8b3f47ff4488bb611ab129609a06", + "49bb38a9f972468a96fdd539b0b5a6d6", + "4ce641041f28400c9b3ba584cef00e1a", + "aa368056a83d44819674ac55b679fad1", + "be594efe148c496e92175408918e9eff", + "c0fdf2412b154e5f8400e7ad50321f61", + "f6564aa137504aa6ac8752464146498e", + "a4e85dc8d4ab42d190d09afbab4d9b67", + "b262b3042a6a4c21a990fe49a8d2c4ef", + "5a426c228731404bbcf202a6c103c14b", + "af95713290f34a4d83088951fcaa8d38", + "658c4a4bdb35461d8f06a5cdfdccb877", + "02c486f6d14549068dc96d68618a0ec6", + "b8d5164256ac40bb8633f8317aab279a", + "31f2a68fc9194a5b80ede2bef35e2bd7", + "973ecb3108c84ca89b28f2597a8ff474", + "59753f8944b9414d927c7e2eea445b51", + "8ffc2b1fb14449d1bb03a3b5bed928bc", + "e75a36f8a97847c4a52c6f139ab660d0", + "a1cc0e10853c47a1901c823ce8d008de", + "ec96e2943e3c4907874f391aafe78628", + "701c8d36283248f4a0df3dd72941e603", + "d84c5dc84e7e440ca66250a705fe4a16", + "5b0a2ab061cc402ebf12db7d4dceb7dd", + "f7d45e8dd0eb4146af7d2ccbea4c4edd", + "4456b5fe19474e7cb4cfe70679d6005f", + "9613e943891c428bbf3f8847d9c61a31", + "bca602866a86460ca5cc99c5d1a5a415", + "90737d28781c47909746ac3fd524769a", + "b66e3b7156ee4bd295243141c20019bc", + "6cecb165f14441ecae43cc59a0a0b56f", + "ef91b2f8818044ca8ed144dbaa963fcd", + "440c6c8b303343c8a8cf53d4d9768a6e", + "93577d92cf684871b5026252e8123c84", + "0c91977ea08a4efb91280ff178e4850b", + "8406d74b98094a32b2f1028f6e317ff4", + "3f30534555e34458983889694fda3671", + "e0924770d76a49b499f3e08b9f24202a", + "aaf2bee8382c445b9f02631e1a46adda", + "f61ca1a64d294128a06f88afee1ca0e1", + "35e06f0a72bb456c81b846a9eae1b91f", + "ace61e4ac7cd4f64ba93aa173ce87287", + "8d0f1ffbf93b45d5950426321b82b785", + "9ecc27897dba4231bd6b82031a1cc3db", + "2e69383236104fb38191d990e3a54c81", + "8cdb6d85160747a1a451322f2e60cbc9", + "b6cfacc547d4499a9e887b6314a0e00f", + "e095bb6ae9514753a6f6e90d72028857", + "41e09c4061784455a67eb0b7cf2d31fc", + "6d44d06737f64b85a0aa9efc813bcf61", + "3763a876e5184a4da9b7816839d0b523", + "45b6355d8db24edbb5614c2f1d944619", + "cd4d230cf56843afa1eab8939ba8c5df", + "d9ea2f0150654e60bd4cbf8b6d8c5fcf", + "4921d93aa19a4b9f9664463b743aa5e4", + "b3442e661da6452ba7cff46bf9c01ef4", + "3ebc999924bd46dea7f8e21677edbf07", + "4611ce6627b640d8b6cfc95242839b3c", + "3bd4ebc1706640eea35d8c1c56541288", + "2b5e9cecebb54328a3020a80ff0d9a9a", + "08a6428e9c9f48689a847dd8063487a2", + "30635c8d36244136b2c9485fce6a3675", + "5ed3e59771104d849dff50eeb6c8b519", + "4c9d20de836b49aa87724addef5bd550", + "b2ab93acd0104da0a8b4b2ab18a51e22", + "9b2695098c88496aa33967a2b76b5578", + "1f100078ce8444478d0c60eeefbff273", + "c2c53496e66048adb1dbb426da8c0bed", + "043d81856e5746708162fa6fbbf4d3c4", + "d0e1c56bccd64f73831bce780c53ec90", + "265e2d76584849479b9e936ed9ce8654", + "79fd37e8fe454e9a83dba65f31c8cb77", + "593c8bc430454eb284169a0686fe6bfb", + "c436532599d04f3b9f53d366a6f59b20", + "1e2fd13373574364b05e8c008e44abff", + "913a768ab4d54c4eb0d963bdeb67fe06", + "c960d9b2bbe94e35afefc7efd9f416ba", + "47caa679e4c34ccc811103714a35ddd3", + "5716068861814d4584a43121242952b1", + "1e2cd1e45e4b4032943aec565dbe6cfe", + "00590bb60bdf448a89e3d0d0f65314ec", + "1cff3f1f268a42ea846e9e3f5f53d8b3", + "f3298d68cecf45fe89b3939d89853594", + "f19e578ca2284ed6a7de268b5175429f", + "8aee44326aae4c3b842277f55b739250", + "1de22c20d44843aaa82ab635f1dd3f9c", + "4bd988dbbb9a4c4195922684d1fd2159", + "5ed1e548a4df4a76a8e2e0c2e49b8d2c", + "9963664b1a2b4137846494d225695932", + "51f764124bbd426b856b7a4b5de965e0", + "2332277384d040cd8a4a62213dd20cda", + "907194999ce6489c9ea9ebc969c7c77e", + "a9dfcd4f75384d76baac18ab4d687ac5", + "155d29c05c1748be98f104c210d23b0f", + "ae80685a02474640ac6325cb61206118", + "e2dda125709548aabdb66af2524b49ea", + "13936ef1cf7241dcacdcd74f788fca0b", + "1151b117e3f543db965ba430560e828f", + "f55a39438d33482faa837412c3eedb28", + "e9d0dab76a69477d8cef7613fd8e25b4", + "29a17d1315ff46caa87c791d87494f07", + "421e40ff53d244c5979d762593f8bccb", + "3882b1ea5f0f494f924e07f44e9e4386", + "143dea23ae7843c7b17a4242a4cee4c5" + ] + }, + "id": "vFzwOHkqC7tQ", + "outputId": "76bbd4c6-4309-40ed-d7b6-c61a30f55b46" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0f339b7dda014a65acfe241384167c53", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "tokenizer_config.json: 0%| | 0.00/28.0 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo0189100%70%True
1robustnessuppercase0200100%70%True
2robustnessamerican_to_british062100%70%True
3accuracymin_micro_f1_score100%100%False
4biasreplace_to_female_pronouns0171100%70%True
5biasreplace_to_low_income_country028100%70%True
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \n" + ], + "text/plain": [ + " category test_type fail_count pass_count \\\n", + "0 robustness add_typo 0 189 \n", + "1 robustness uppercase 0 200 \n", + "2 robustness american_to_british 0 62 \n", + "3 accuracy min_micro_f1_score 1 0 \n", + "4 bias replace_to_female_pronouns 0 171 \n", + "5 bias replace_to_low_income_country 0 28 \n", + "\n", + " pass_rate minimum_pass_rate pass \n", + "0 100% 70% True \n", + "1 100% 70% True \n", + "2 100% 70% True \n", + "3 0% 100% False \n", + "4 100% 70% True \n", + "5 100% 70% True " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\rRunning testcases... : 0%| | 0/651 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo0189100%70%True
1robustnessuppercase0200100%70%True
2robustnessamerican_to_british062100%70%True
3accuracymin_micro_f1_score100%100%False
4biasreplace_to_female_pronouns0171100%70%True
5biasreplace_to_low_income_country028100%70%True
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \n" + ], + "text/plain": [ + " category test_type fail_count pass_count \\\n", + "0 robustness add_typo 0 189 \n", + "1 robustness uppercase 0 200 \n", + "2 robustness american_to_british 0 62 \n", + "3 accuracy min_micro_f1_score 1 0 \n", + "4 bias replace_to_female_pronouns 0 171 \n", + "5 bias replace_to_low_income_country 0 28 \n", + "\n", + " pass_rate minimum_pass_rate pass \n", + "0 100% 70% True \n", + "1 100% 70% True \n", + "2 100% 70% True \n", + "3 0% 100% False \n", + "4 100% 70% True \n", + "5 100% 70% True " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\rRunning testcases... : 0%| | 0/651 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo0189100%70%True
1robustnessuppercase0200100%70%True
2robustnessamerican_to_british062100%70%True
3accuracymin_micro_f1_score100%100%False
4biasreplace_to_female_pronouns0171100%70%True
5biasreplace_to_low_income_country028100%70%True
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \n" + ], + "text/plain": [ + " category test_type fail_count pass_count \\\n", + "0 robustness add_typo 0 189 \n", + "1 robustness uppercase 0 200 \n", + "2 robustness american_to_british 0 62 \n", + "3 accuracy min_micro_f1_score 1 0 \n", + "4 bias replace_to_female_pronouns 0 171 \n", + "5 bias replace_to_low_income_country 0 28 \n", + "\n", + " pass_rate minimum_pass_rate pass \n", + "0 100% 70% True \n", + "1 100% 70% True \n", + "2 100% 70% True \n", + "3 0% 100% False \n", + "4 100% 70% True \n", + "5 100% 70% True " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'train_runtime': 281.2316, 'train_samples_per_second': 0.267, 'train_steps_per_second': 0.043, 'train_loss': 0.14822853604952493, 'epoch': 3.0}\n" + ] + }, + { + "data": { + "text/plain": [ + "TrainOutput(global_step=12, training_loss=0.14822853604952493, metrics={'train_runtime': 281.2316, 'train_samples_per_second': 0.267, 'train_steps_per_second': 0.043, 'train_loss': 0.14822853604952493, 'epoch': 3.0})" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Training the model\n", + "trainer.train()" + ] + } + ], + "metadata": { + "accelerator": "TPU", + "colab": { + "machine_shape": "hm", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "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.10.11" + }, + "orig_nbformat": 4, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "00590bb60bdf448a89e3d0d0f65314ec": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "028376ac680b43c1a294407e9ab6a5af": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "02c486f6d14549068dc96d68618a0ec6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "043d81856e5746708162fa6fbbf4d3c4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "04886efe65104ef1ade8715a59ef1f41": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9f1b265bba014211a8eae834cb4727bd", + "placeholder": "​", + "style": "IPY_MODEL_27ca1877f22148808a9ac400a42a7a26", + "value": "config.json: 100%" + } + }, + "08a6428e9c9f48689a847dd8063487a2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_30635c8d36244136b2c9485fce6a3675", + "IPY_MODEL_5ed3e59771104d849dff50eeb6c8b519", + "IPY_MODEL_4c9d20de836b49aa87724addef5bd550" + ], + "layout": "IPY_MODEL_b2ab93acd0104da0a8b4b2ab18a51e22" + } + }, + "0c91977ea08a4efb91280ff178e4850b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0f339b7dda014a65acfe241384167c53": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_6db1f4ec80fb4fa7a5f77c2909b3c755", + "IPY_MODEL_49b76e2c8d4c484d9e8e78f55dd34f2b", + "IPY_MODEL_65d02c0924da4eca835fa9cb89c7d7dd" + ], + "layout": "IPY_MODEL_c7d2e34de0714971984e8a4e72c85f16" + } + }, + "0ffe58cec1f549438742975bf4154316": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1151b117e3f543db965ba430560e828f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "13936ef1cf7241dcacdcd74f788fca0b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3882b1ea5f0f494f924e07f44e9e4386", + "placeholder": "​", + "style": "IPY_MODEL_143dea23ae7843c7b17a4242a4cee4c5", + "value": " 50000/50000 [00:10<00:00, 6954.67 examples/s]" + } + }, + "143dea23ae7843c7b17a4242a4cee4c5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "155d29c05c1748be98f104c210d23b0f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ae80685a02474640ac6325cb61206118", + "IPY_MODEL_e2dda125709548aabdb66af2524b49ea", + "IPY_MODEL_13936ef1cf7241dcacdcd74f788fca0b" + ], + "layout": "IPY_MODEL_1151b117e3f543db965ba430560e828f" + } + }, + "1cff3f1f268a42ea846e9e3f5f53d8b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1de22c20d44843aaa82ab635f1dd3f9c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_907194999ce6489c9ea9ebc969c7c77e", + "placeholder": "​", + "style": "IPY_MODEL_a9dfcd4f75384d76baac18ab4d687ac5", + "value": " 25000/25000 [00:08<00:00, 7100.44 examples/s]" + } + }, + "1e2cd1e45e4b4032943aec565dbe6cfe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1e2fd13373574364b05e8c008e44abff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_00590bb60bdf448a89e3d0d0f65314ec", + "placeholder": "​", + "style": "IPY_MODEL_1cff3f1f268a42ea846e9e3f5f53d8b3", + "value": " 25000/25000 [00:08<00:00, 924.97 examples/s]" + } + }, + "1f100078ce8444478d0c60eeefbff273": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "208ac9d586804957a001b2d134141b78": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9480c6601cd34acc84d1029e3fd36156", + "placeholder": "​", + "style": "IPY_MODEL_98b6d8654f6a42559c413de778557e33", + "value": " 25/25 [00:00<00:00, 295.91 examples/s]" + } + }, + "22deb7749a3940048448989ef5b91ab4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2332277384d040cd8a4a62213dd20cda": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "265e2d76584849479b9e936ed9ce8654": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "27ca1877f22148808a9ac400a42a7a26": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "29a17d1315ff46caa87c791d87494f07": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2b5e9cecebb54328a3020a80ff0d9a9a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2cc56448beb44502ba5cbc7f7b5ae057": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2e69383236104fb38191d990e3a54c81": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2e978e6bd19047f78c897106c31966ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_04886efe65104ef1ade8715a59ef1f41", + "IPY_MODEL_8144f7eb5c6e4882b0cd2eb2f968c882", + "IPY_MODEL_6c316019bb8a4097b9a2a88dda964bc7" + ], + "layout": "IPY_MODEL_91f16706c6134d6a8ef4fa07aa38ad83" + } + }, + "30635c8d36244136b2c9485fce6a3675": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9b2695098c88496aa33967a2b76b5578", + "placeholder": "​", + "style": "IPY_MODEL_1f100078ce8444478d0c60eeefbff273", + "value": "Downloading data: 100%" + } + }, + "31f2a68fc9194a5b80ede2bef35e2bd7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "33c598afbc834c938618d85007f8b36c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_aa368056a83d44819674ac55b679fad1", + "placeholder": "​", + "style": "IPY_MODEL_be594efe148c496e92175408918e9eff", + "value": " 232k/232k [00:00<00:00, 5.09MB/s]" + } + }, + "35e06f0a72bb456c81b846a9eae1b91f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8cdb6d85160747a1a451322f2e60cbc9", + "max": 2166, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b6cfacc547d4499a9e887b6314a0e00f", + "value": 2166 + } + }, + "3718d0ead5f34ff0a06f1eade292ebe8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_785a0f13d36a4d268908f9b0af68cebe", + "IPY_MODEL_90fe6e4229c148da8066adbd40b0beab", + "IPY_MODEL_208ac9d586804957a001b2d134141b78" + ], + "layout": "IPY_MODEL_bf798174994947b5b707b1f119dae0d7" + } + }, + "3763a876e5184a4da9b7816839d0b523": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4921d93aa19a4b9f9664463b743aa5e4", + "placeholder": "​", + "style": "IPY_MODEL_b3442e661da6452ba7cff46bf9c01ef4", + "value": "Downloading readme: 100%" + } + }, + "3882b1ea5f0f494f924e07f44e9e4386": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3bd4ebc1706640eea35d8c1c56541288": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3ebc999924bd46dea7f8e21677edbf07": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3f30534555e34458983889694fda3671": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "41e09c4061784455a67eb0b7cf2d31fc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "421e40ff53d244c5979d762593f8bccb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "440c6c8b303343c8a8cf53d4d9768a6e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4456b5fe19474e7cb4cfe70679d6005f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "45b6355d8db24edbb5614c2f1d944619": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3ebc999924bd46dea7f8e21677edbf07", + "max": 7590, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4611ce6627b640d8b6cfc95242839b3c", + "value": 7590 + } + }, + "4611ce6627b640d8b6cfc95242839b3c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "47caa679e4c34ccc811103714a35ddd3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "484d6ef0cb9548c495b7f89adddb8799": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4921d93aa19a4b9f9664463b743aa5e4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "49b76e2c8d4c484d9e8e78f55dd34f2b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5c8ad99ebaa347f79905a557c9212381", + "max": 28, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4b4dad9da390409d81fed270278bf4c7", + "value": 28 + } + }, + "49bb38a9f972468a96fdd539b0b5a6d6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4b4dad9da390409d81fed270278bf4c7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "4bd988dbbb9a4c4195922684d1fd2159": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4c9d20de836b49aa87724addef5bd550": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d0e1c56bccd64f73831bce780c53ec90", + "placeholder": "​", + "style": "IPY_MODEL_265e2d76584849479b9e936ed9ce8654", + "value": " 84.1M/84.1M [00:05<00:00, 22.9MB/s]" + } + }, + "4ce641041f28400c9b3ba584cef00e1a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "51f764124bbd426b856b7a4b5de965e0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5716068861814d4584a43121242952b1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "593c8bc430454eb284169a0686fe6bfb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c960d9b2bbe94e35afefc7efd9f416ba", + "placeholder": "​", + "style": "IPY_MODEL_47caa679e4c34ccc811103714a35ddd3", + "value": "Generating train split: 100%" + } + }, + "59753f8944b9414d927c7e2eea445b51": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8ffc2b1fb14449d1bb03a3b5bed928bc", + "IPY_MODEL_e75a36f8a97847c4a52c6f139ab660d0", + "IPY_MODEL_a1cc0e10853c47a1901c823ce8d008de" + ], + "layout": "IPY_MODEL_ec96e2943e3c4907874f391aafe78628" + } + }, + "5a426c228731404bbcf202a6c103c14b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5b0a2ab061cc402ebf12db7d4dceb7dd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5c84ec53402147fcab06e7078b272746": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5c8ad99ebaa347f79905a557c9212381": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5ed1e548a4df4a76a8e2e0c2e49b8d2c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5ed3e59771104d849dff50eeb6c8b519": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c2c53496e66048adb1dbb426da8c0bed", + "max": 84125825, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_043d81856e5746708162fa6fbbf4d3c4", + "value": 84125825 + } + }, + "658c4a4bdb35461d8f06a5cdfdccb877": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "65d02c0924da4eca835fa9cb89c7d7dd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e7c48e205424478a8f015c77902fb134", + "placeholder": "​", + "style": "IPY_MODEL_d97d6cbf86544494885c3d347febc852", + "value": " 28.0/28.0 [00:00<00:00, 2.16kB/s]" + } + }, + "6c316019bb8a4097b9a2a88dda964bc7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b3fe91b4f396478eb71c1a3e6fbd0d6f", + "placeholder": "​", + "style": "IPY_MODEL_22deb7749a3940048448989ef5b91ab4", + "value": " 570/570 [00:00<00:00, 39.3kB/s]" + } + }, + "6cecb165f14441ecae43cc59a0a0b56f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3f30534555e34458983889694fda3671", + "placeholder": "​", + "style": "IPY_MODEL_e0924770d76a49b499f3e08b9f24202a", + "value": " 4.31k/4.31k [00:00<00:00, 334kB/s]" + } + }, + "6d44d06737f64b85a0aa9efc813bcf61": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3763a876e5184a4da9b7816839d0b523", + "IPY_MODEL_45b6355d8db24edbb5614c2f1d944619", + "IPY_MODEL_cd4d230cf56843afa1eab8939ba8c5df" + ], + "layout": "IPY_MODEL_d9ea2f0150654e60bd4cbf8b6d8c5fcf" + } + }, + "6db1f4ec80fb4fa7a5f77c2909b3c755": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_028376ac680b43c1a294407e9ab6a5af", + "placeholder": "​", + "style": "IPY_MODEL_fadcdd015f6541fbaadf975dd13cd95f", + "value": "tokenizer_config.json: 100%" + } + }, + "701c8d36283248f4a0df3dd72941e603": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "785a0f13d36a4d268908f9b0af68cebe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5c84ec53402147fcab06e7078b272746", + "placeholder": "​", + "style": "IPY_MODEL_0ffe58cec1f549438742975bf4154316", + "value": "Map: 100%" + } + }, + "79fd37e8fe454e9a83dba65f31c8cb77": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_593c8bc430454eb284169a0686fe6bfb", + "IPY_MODEL_c436532599d04f3b9f53d366a6f59b20", + "IPY_MODEL_1e2fd13373574364b05e8c008e44abff" + ], + "layout": "IPY_MODEL_913a768ab4d54c4eb0d963bdeb67fe06" + } + }, + "8144f7eb5c6e4882b0cd2eb2f968c882": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d868c8883fee4bfc9b589da2fc7275fd", + "max": 570, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b36a094e04ab41e59e61a0614b1c7b26", + "value": 570 + } + }, + "8406d74b98094a32b2f1028f6e317ff4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8aee44326aae4c3b842277f55b739250": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_51f764124bbd426b856b7a4b5de965e0", + "max": 25000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2332277384d040cd8a4a62213dd20cda", + "value": 25000 + } + }, + "8cdb6d85160747a1a451322f2e60cbc9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8d0f1ffbf93b45d5950426321b82b785": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8ffc2b1fb14449d1bb03a3b5bed928bc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_701c8d36283248f4a0df3dd72941e603", + "placeholder": "​", + "style": "IPY_MODEL_d84c5dc84e7e440ca66250a705fe4a16", + "value": "model.safetensors: 100%" + } + }, + "907194999ce6489c9ea9ebc969c7c77e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "90737d28781c47909746ac3fd524769a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_440c6c8b303343c8a8cf53d4d9768a6e", + "placeholder": "​", + "style": "IPY_MODEL_93577d92cf684871b5026252e8123c84", + "value": "Downloading builder script: 100%" + } + }, + "90fe6e4229c148da8066adbd40b0beab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dafcd2ddd2fa481d8c173d015446640c", + "max": 25, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_df1252165b6041209d072390de947697", + "value": 25 + } + }, + "913a768ab4d54c4eb0d963bdeb67fe06": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "91f16706c6134d6a8ef4fa07aa38ad83": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "93577d92cf684871b5026252e8123c84": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9480c6601cd34acc84d1029e3fd36156": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9613e943891c428bbf3f8847d9c61a31": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "973ecb3108c84ca89b28f2597a8ff474": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "98b6d8654f6a42559c413de778557e33": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9963664b1a2b4137846494d225695932": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9b2695098c88496aa33967a2b76b5578": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9ecc27897dba4231bd6b82031a1cc3db": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9f1b265bba014211a8eae834cb4727bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a1cc0e10853c47a1901c823ce8d008de": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4456b5fe19474e7cb4cfe70679d6005f", + "placeholder": "​", + "style": "IPY_MODEL_9613e943891c428bbf3f8847d9c61a31", + "value": " 440M/440M [00:01<00:00, 295MB/s]" + } + }, + "a3aac8ab3e1440388759e76e0b8d400b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_fb68bc3a68c74db09891f09a797fad4d", + "IPY_MODEL_fd3c248bc0d64c1b9852f47d4ee7eb17", + "IPY_MODEL_33c598afbc834c938618d85007f8b36c" + ], + "layout": "IPY_MODEL_2cc56448beb44502ba5cbc7f7b5ae057" + } + }, + "a4e85dc8d4ab42d190d09afbab4d9b67": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_02c486f6d14549068dc96d68618a0ec6", + "max": 466062, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b8d5164256ac40bb8633f8317aab279a", + "value": 466062 + } + }, + "a9dfcd4f75384d76baac18ab4d687ac5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "aa368056a83d44819674ac55b679fad1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aaf2bee8382c445b9f02631e1a46adda": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f61ca1a64d294128a06f88afee1ca0e1", + "IPY_MODEL_35e06f0a72bb456c81b846a9eae1b91f", + "IPY_MODEL_ace61e4ac7cd4f64ba93aa173ce87287" + ], + "layout": "IPY_MODEL_8d0f1ffbf93b45d5950426321b82b785" + } + }, + "ace61e4ac7cd4f64ba93aa173ce87287": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e095bb6ae9514753a6f6e90d72028857", + "placeholder": "​", + "style": "IPY_MODEL_41e09c4061784455a67eb0b7cf2d31fc", + "value": " 2.17k/2.17k [00:00<00:00, 170kB/s]" + } + }, + "ae80685a02474640ac6325cb61206118": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f55a39438d33482faa837412c3eedb28", + "placeholder": "​", + "style": "IPY_MODEL_e9d0dab76a69477d8cef7613fd8e25b4", + "value": "Generating unsupervised split: 100%" + } + }, + "af95713290f34a4d83088951fcaa8d38": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b262b3042a6a4c21a990fe49a8d2c4ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_31f2a68fc9194a5b80ede2bef35e2bd7", + "placeholder": "​", + "style": "IPY_MODEL_973ecb3108c84ca89b28f2597a8ff474", + "value": " 466k/466k [00:00<00:00, 23.9MB/s]" + } + }, + "b2ab93acd0104da0a8b4b2ab18a51e22": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b3442e661da6452ba7cff46bf9c01ef4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b36a094e04ab41e59e61a0614b1c7b26": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b3fe91b4f396478eb71c1a3e6fbd0d6f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b66e3b7156ee4bd295243141c20019bc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0c91977ea08a4efb91280ff178e4850b", + "max": 4314, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8406d74b98094a32b2f1028f6e317ff4", + "value": 4314 + } + }, + "b6cfacc547d4499a9e887b6314a0e00f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b8d5164256ac40bb8633f8317aab279a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "bca602866a86460ca5cc99c5d1a5a415": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_90737d28781c47909746ac3fd524769a", + "IPY_MODEL_b66e3b7156ee4bd295243141c20019bc", + "IPY_MODEL_6cecb165f14441ecae43cc59a0a0b56f" + ], + "layout": "IPY_MODEL_ef91b2f8818044ca8ed144dbaa963fcd" + } + }, + "be594efe148c496e92175408918e9eff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bf798174994947b5b707b1f119dae0d7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c0fdf2412b154e5f8400e7ad50321f61": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f6564aa137504aa6ac8752464146498e", + "IPY_MODEL_a4e85dc8d4ab42d190d09afbab4d9b67", + "IPY_MODEL_b262b3042a6a4c21a990fe49a8d2c4ef" + ], + "layout": "IPY_MODEL_5a426c228731404bbcf202a6c103c14b" + } + }, + "c2c53496e66048adb1dbb426da8c0bed": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c436532599d04f3b9f53d366a6f59b20": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5716068861814d4584a43121242952b1", + "max": 25000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1e2cd1e45e4b4032943aec565dbe6cfe", + "value": 25000 + } + }, + "c7d2e34de0714971984e8a4e72c85f16": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c960d9b2bbe94e35afefc7efd9f416ba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cd4d230cf56843afa1eab8939ba8c5df": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3bd4ebc1706640eea35d8c1c56541288", + "placeholder": "​", + "style": "IPY_MODEL_2b5e9cecebb54328a3020a80ff0d9a9a", + "value": " 7.59k/7.59k [00:00<00:00, 608kB/s]" + } + }, + "d0e1c56bccd64f73831bce780c53ec90": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d84c5dc84e7e440ca66250a705fe4a16": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d868c8883fee4bfc9b589da2fc7275fd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d97d6cbf86544494885c3d347febc852": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d9ea2f0150654e60bd4cbf8b6d8c5fcf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dafcd2ddd2fa481d8c173d015446640c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "df1252165b6041209d072390de947697": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e0924770d76a49b499f3e08b9f24202a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e095bb6ae9514753a6f6e90d72028857": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e2dda125709548aabdb66af2524b49ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_29a17d1315ff46caa87c791d87494f07", + "max": 50000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_421e40ff53d244c5979d762593f8bccb", + "value": 50000 + } + }, + "e75a36f8a97847c4a52c6f139ab660d0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5b0a2ab061cc402ebf12db7d4dceb7dd", + "max": 440449768, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f7d45e8dd0eb4146af7d2ccbea4c4edd", + "value": 440449768 + } + }, + "e7c48e205424478a8f015c77902fb134": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e9d0dab76a69477d8cef7613fd8e25b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ec96e2943e3c4907874f391aafe78628": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ef91b2f8818044ca8ed144dbaa963fcd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f19e578ca2284ed6a7de268b5175429f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5ed1e548a4df4a76a8e2e0c2e49b8d2c", + "placeholder": "​", + "style": "IPY_MODEL_9963664b1a2b4137846494d225695932", + "value": "Generating test split: 100%" + } + }, + "f3298d68cecf45fe89b3939d89853594": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f19e578ca2284ed6a7de268b5175429f", + "IPY_MODEL_8aee44326aae4c3b842277f55b739250", + "IPY_MODEL_1de22c20d44843aaa82ab635f1dd3f9c" + ], + "layout": "IPY_MODEL_4bd988dbbb9a4c4195922684d1fd2159" + } + }, + "f49c8b3f47ff4488bb611ab129609a06": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f55a39438d33482faa837412c3eedb28": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f61ca1a64d294128a06f88afee1ca0e1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9ecc27897dba4231bd6b82031a1cc3db", + "placeholder": "​", + "style": "IPY_MODEL_2e69383236104fb38191d990e3a54c81", + "value": "Downloading metadata: 100%" + } + }, + "f6564aa137504aa6ac8752464146498e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_af95713290f34a4d83088951fcaa8d38", + "placeholder": "​", + "style": "IPY_MODEL_658c4a4bdb35461d8f06a5cdfdccb877", + "value": "tokenizer.json: 100%" + } + }, + "f7d45e8dd0eb4146af7d2ccbea4c4edd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "fadcdd015f6541fbaadf975dd13cd95f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fb68bc3a68c74db09891f09a797fad4d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_484d6ef0cb9548c495b7f89adddb8799", + "placeholder": "​", + "style": "IPY_MODEL_f49c8b3f47ff4488bb611ab129609a06", + "value": "vocab.txt: 100%" + } + }, + "fd3c248bc0d64c1b9852f47d4ee7eb17": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_49bb38a9f972468a96fdd539b0b5a6d6", + "max": 231508, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4ce641041f28400c9b3ba584cef00e1a", + "value": 231508 + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/demo/tutorials/misc/PerformanceTest_Notebook.ipynb b/demo/tutorials/misc/PerformanceTest_Notebook.ipynb index 1a90d71ee..0a16c6de6 100644 --- a/demo/tutorials/misc/PerformanceTest_Notebook.ipynb +++ b/demo/tutorials/misc/PerformanceTest_Notebook.ipynb @@ -1 +1 @@ -{"cells":[{"cell_type":"markdown","metadata":{"id":"e7PsSmy9sCoR"},"source":["![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"3o5sAOfwL5qd"},"source":["[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/misc/PerformanceTest_Notebook.ipynb)"]},{"cell_type":"markdown","metadata":{"id":"WJJzt3RWhEc6"},"source":["**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity and fairness test categories.\n","\n","Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings."]},{"cell_type":"markdown","metadata":{"id":"26qXWhCYhHAt"},"source":["# Getting started with LangTest on John Snow Labs"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"azUb114QhOsY"},"outputs":[],"source":["!pip install langtest[transformers]"]},{"cell_type":"markdown","metadata":{"id":"yR6kjOaiheKN"},"source":["# Harness and Its Parameters\n","\n","The Harness class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results.Harness can be imported from the LangTest library in the following way."]},{"cell_type":"code","execution_count":2,"metadata":{"id":"lTzSJpMlhgq5","executionInfo":{"status":"ok","timestamp":1692343745209,"user_tz":-330,"elapsed":925,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[],"source":["#Import Harness from the LangTest library\n","from langtest import Harness"]},{"cell_type":"markdown","metadata":{"id":"JFhJ9CcbsKqN"},"source":["# Performance Testing\n","\n","In this section, we dive into testing of time taken to complete the tests in LangTest on the datasets with Models."]},{"cell_type":"markdown","metadata":{"id":"swaYPW-wPlku"},"source":["### Setup and Configure Harness"]},{"cell_type":"code","execution_count":3,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":920,"referenced_widgets":["6c5a9f6544e0442ca68098426c146503","e7f4a1278a7e49aba2ed734c228d0c66","0fe42dba7c4b4df2a64ea2002be642cf","9a06564cc5254e89a762426cf3269a9e","3bb1a7ff75c1490db0334e5162aba497","4790617c8b18415d9cafaceabca7022d","2ffcf6981af34b139f304200934abaee","d2d79f3cb2d8444fa36a6851a208e9f4","6b905fe4f7f542c9890f5cfd195beda3","b4d092df96e04c00a943f3c8e3329c39","966ad3248efb4f29a20f19b06c7dfa77","13f8de2b99ff475fbabbfba66b17125e","3f65fa34feac4f00a89cf74bdb8f5a59","d35f7095c5be4de19b625a00a0ea1798","5f050ded4d6d41509dbad6f17284c18c","58ee9406c08144de989c5a26ed5a1ccb","cee5a9b496cf435b9e746424187cad08","36e4580f19164f5d93280c4a06f0879c","1e99e26f69034ec79f52b512a608c4f7","c749fd792c914727b6ff4386b316df57","e24155477021432cb45793c0743eea1b","6fc068b143fc4e3391dd755e8262fcfd","5c12f56844e546c3aaadc192b2583077","c96e0761975e4290be8f4b287e3f6f42","81e8c8d107034c85aa95252a3838b05e","771f704de66e4d0eab0a2cb71dd24d2f","6cf03247c6374a6b89aaffee79998285","501dd4b2d09b4ae993a5bc2f18769ac4","3cbb3222ae2f4bb7b3dfd1a8c54a3503","edc62d1193fc44e98784da4b1a3fa390","5dce3c96154c4dbba25a57052804c82b","d54d2ab9930a447388f0fea290bef2ac","3ce8b14f48a24349b793b75d9350dc95","3f1c56e797cf43588bad099a0783e179","85ff59f9f7ed47b5ab78f767255f5a56","a12cdebdcf8b476f80b906d97a9ea261","a404d4d49f2046bd85ea64cc2de4a734","265a066b8e564034af96902a1e0347fb","d136b83a79034d20971be55510737103","572b68362a1a4292a43d44ebad043042","db4fc546e2d344018f85cd3deeab1115","ef8256e1afce4f268db5bc38a3a7fa86","afa59a1ecaba4b56a596f4cdbd7b6730","3d6af6f687c54a5eb0db38b2c2ef1899","d2906819c5ec4c82b2731eac4afe519d","1db2003c9e124e4f8b6444c157636983","eaae6733b12047ac9edec3adff0ab765","83aa131ac111451495e97bd710631418","f818144e1d304afd8b15900620abfc1d","314d5fcd2f864d8f941f90d76bd0df1b","b3f1bdcee72a47a791c6eaec72fdf136","06797e19a13d40df8c50322bf4b52f90","6689169d7c9447a1bde80313e6e9a7c2","38476374aa9c49f68dcf96e55e520240","6c506299e96344798ac6e36820e275bf","80393d9f400a4e9c8867808c5f2e8b28","eaff3fe3471b4815ab3d27d72142fe22","030f52c161444051b7215c4cf1b4eb27","d2726e7c8ebc4d0c9dbaf7d919bd064b","012930dde07a4a56af962c6993ecbf03","ab2b92ec8670443a9093c015c6084e95","5aee88b7efe54ce2b646b353cc61b26f","f80fde8b46ba4c7fad2f867f2439ef83","1152e3b558814204a94a058f0d506d20","6ee8c33165a946b8a15516a89203f396","9982d7d8bc634c77838aa10ccead8428"]},"id":"JaarBdfe8DQ8","outputId":"9bc19b92-c518-4bcf-f7e6-16f419898566","executionInfo":{"status":"ok","timestamp":1692343769123,"user_tz":-330,"elapsed":23923,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"display_data","data":{"text/plain":["Downloading (…)lve/main/config.json: 0%| | 0.00/829 [00:00\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeoriginaltest_case
0robustnesslowercaseSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...soccer - japan get lucky win , china in surpri...
1robustnesslowercaseNadim Ladkinadim ladki
2robustnesslowercaseAL-AIN , United Arab Emirates 1996-12-06al-ain , united arab emirates 1996-12-06
3robustnesslowercaseJapan began the defence of their Asian Cup tit...japan began the defence of their asian cup tit...
4robustnesslowercaseBut China saw their luck desert them in the se...but china saw their luck desert them in the se...
...............
448robustnessuppercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .CRICKET - LARA ENDURES ANOTHER MISERABLE DAY .
449robustnessuppercaseRobert GalvinROBERT GALVIN
450robustnessuppercaseMELBOURNE 1996-12-06MELBOURNE 1996-12-06
451robustnessuppercaseAustralia gave Brian Lara another reason to be...AUSTRALIA GAVE BRIAN LARA ANOTHER REASON TO BE...
452performancespeed--
\n","

453 rows × 4 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n"," \n"]},"metadata":{},"execution_count":7}],"source":["harness.testcases()"]},{"cell_type":"markdown","metadata":{"id":"NOJ8BAU2GGzd"},"source":["harness.testcases() method displays the produced test cases in form of a pandas data frame."]},{"cell_type":"markdown","metadata":{"id":"3CwhQw6hGR9S"},"source":["### Running the tests"]},{"cell_type":"code","execution_count":8,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"aguX6-aFGOnP","outputId":"66be230c-84f5-4521-a3c5-fb57f91d131a","executionInfo":{"status":"ok","timestamp":1692343967668,"user_tz":-330,"elapsed":163600,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"stream","name":"stderr","text":["Running testcases... : 100%|██████████| 453/453 [02:43<00:00, 2.77it/s]\n"]},{"output_type":"execute_result","data":{"text/plain":[]},"metadata":{},"execution_count":8}],"source":["harness.run()"]},{"cell_type":"markdown","metadata":{"id":"191O2oaUGWrH"},"source":["Called after harness.generate() and is to used to run all the tests. Returns a pass/fail flag for each test."]},{"cell_type":"code","execution_count":9,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":527},"id":"XDbd1mpREWR5","outputId":"0375fbee-3ab7-4dca-f10d-eb6c36e23407","executionInfo":{"status":"ok","timestamp":1692343967670,"user_tz":-330,"elapsed":33,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" category test_type \\\n","0 robustness lowercase \n","1 robustness lowercase \n","2 robustness lowercase \n","3 robustness lowercase \n","4 robustness lowercase \n",".. ... ... \n","448 robustness uppercase \n","449 robustness uppercase \n","450 robustness uppercase \n","451 robustness uppercase \n","452 performance speed \n","\n"," original \\\n","0 SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n","1 Nadim Ladki \n","2 AL-AIN , United Arab Emirates 1996-12-06 \n","3 Japan began the defence of their Asian Cup tit... \n","4 But China saw their luck desert them in the se... \n",".. ... \n","448 CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 Robert Galvin \n","450 MELBOURNE 1996-12-06 \n","451 Australia gave Brian Lara another reason to be... \n","452 - \n","\n"," test_case \\\n","0 soccer - japan get lucky win , china in surpri... \n","1 nadim ladki \n","2 al-ain , united arab emirates 1996-12-06 \n","3 japan began the defence of their asian cup tit... \n","4 but china saw their luck desert them in the se... \n",".. ... \n","448 CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 ROBERT GALVIN \n","450 MELBOURNE 1996-12-06 \n","451 AUSTRALIA GAVE BRIAN LARA ANOTHER REASON TO BE... \n","452 - \n","\n"," expected_result \\\n","0 JAPAN: MISC, LUCKY: PER, CHINA: ORG \n","1 Nadim Ladki: PER \n","2 AL-AIN: LOC, United Arab Emirates: LOC \n","3 Japan: LOC, Asian Cup: MISC, Syria: LOC, Group... \n","4 China: LOC, Uzbekistan: LOC \n",".. ... \n","448 LARA: LOC, MISERABLE: PER \n","449 Robert Galvin: PER \n","450 MELBOURNE: LOC \n","451 Australia: LOC, Brian Lara: PER, West Indies: ... \n","452 100 token/sec \n","\n"," actual_result pass \n","0 False \n","1 False \n","2 al-ain: LOC False \n","3 japan: ORG, syria: ORG False \n","4 uzbekistan: LOC False \n",".. ... ... \n","448 LARA: LOC, MISERABLE: PER True \n","449 ROBERT: ORG, GALVIN: PER False \n","450 MELBOURNE: LOC True \n","451 AUSTRALIA: LOC, BRIAN LARA: LOC, REASON: PER, ... False \n","452 19.20 token/sec True \n","\n","[453 rows x 7 columns]"],"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeoriginaltest_caseexpected_resultactual_resultpass
0robustnesslowercaseSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...soccer - japan get lucky win , china in surpri...JAPAN: MISC, LUCKY: PER, CHINA: ORGFalse
1robustnesslowercaseNadim Ladkinadim ladkiNadim Ladki: PERFalse
2robustnesslowercaseAL-AIN , United Arab Emirates 1996-12-06al-ain , united arab emirates 1996-12-06AL-AIN: LOC, United Arab Emirates: LOCal-ain: LOCFalse
3robustnesslowercaseJapan began the defence of their Asian Cup tit...japan began the defence of their asian cup tit...Japan: LOC, Asian Cup: MISC, Syria: LOC, Group...japan: ORG, syria: ORGFalse
4robustnesslowercaseBut China saw their luck desert them in the se...but china saw their luck desert them in the se...China: LOC, Uzbekistan: LOCuzbekistan: LOCFalse
........................
448robustnessuppercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .CRICKET - LARA ENDURES ANOTHER MISERABLE DAY .LARA: LOC, MISERABLE: PERLARA: LOC, MISERABLE: PERTrue
449robustnessuppercaseRobert GalvinROBERT GALVINRobert Galvin: PERROBERT: ORG, GALVIN: PERFalse
450robustnessuppercaseMELBOURNE 1996-12-06MELBOURNE 1996-12-06MELBOURNE: LOCMELBOURNE: LOCTrue
451robustnessuppercaseAustralia gave Brian Lara another reason to be...AUSTRALIA GAVE BRIAN LARA ANOTHER REASON TO BE...Australia: LOC, Brian Lara: PER, West Indies: ...AUSTRALIA: LOC, BRIAN LARA: LOC, REASON: PER, ...False
452performancespeed--100 token/sec19.20 token/secTrue
\n","

453 rows × 7 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"]},"metadata":{},"execution_count":9}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"TKB8Rsr2GZME"},"source":["This method returns the generated results in the form of a pandas dataframe, which provides a convenient and easy-to-use format for working with the test results. You can use this method to quickly identify the test cases that failed and to determine where fixes are needed."]},{"cell_type":"markdown","metadata":{"id":"PBSlpWnUU55G"},"source":["### Final Results"]},{"cell_type":"markdown","metadata":{"id":"umnEgUHM8DRA"},"source":["We can call `.report()` which summarizes the results giving information about pass and fail counts and overall test pass/fail flag.\n","\n","To get time_elapsed for each test we pass parameter `return_runtime=True` in `.report()` method. We can also select the unit for time_elapsed i.e, seconds(s), miliseconds(ms) or microseconds(us) etc."]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":143},"id":"gp57HcF9yxi7","outputId":"8d990f2e-6b4d-480e-e844-95ff9158e126","executionInfo":{"status":"ok","timestamp":1692343967672,"user_tz":-330,"elapsed":30,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" category test_type fail_count pass_count pass_rate minimum_pass_rate \\\n","0 robustness lowercase 182 44 19% 66% \n","1 robustness uppercase 152 74 33% 66% \n","2 performance speed 0 1 100% 100% \n","\n"," pass \n","0 False \n","1 False \n","2 True "],"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnesslowercase1824419%66%False
1robustnessuppercase1527433%66%False
2performancespeed01100%100%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"]},"metadata":{},"execution_count":10}],"source":["harness.report()"]},{"cell_type":"markdown","metadata":{"id":"zg-knds3tq-w"},"source":["# Multiple Models Runtime Testing"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"ElMInPJMu3QK"},"outputs":[],"source":["!pip install spacy johnsnowlabs"]},{"cell_type":"code","execution_count":11,"metadata":{"id":"TnUBvYXptq-w","executionInfo":{"status":"ok","timestamp":1692343967673,"user_tz":-330,"elapsed":28,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[],"source":["model_dict=[{\"model\": \"ner.dl\", \"hub\": \"johnsnowlabs\"},\n"," {\"model\": \"en_core_web_sm\", \"hub\": \"spacy\"}]"]},{"cell_type":"code","execution_count":13,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"PmMwW5IIvGav","outputId":"d9e5c932-b286-46e7-d18c-23e23f4cba6f","executionInfo":{"status":"ok","timestamp":1692344027826,"user_tz":-330,"elapsed":1096,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["--2023-08-18 07:33:45-- https://github.com/JohnSnowLabs/langtest/raw/main/langtest/data/conll/sample.conll\n","Resolving github.com (github.com)... 20.27.177.113\n","Connecting to github.com (github.com)|20.27.177.113|:443... connected.\n","HTTP request sent, awaiting response... 302 Found\n","Location: https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll [following]\n","--2023-08-18 07:33:45-- https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll\n","Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.108.133, ...\n","Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 50519 (49K) [text/plain]\n","Saving to: ‘sample.conll’\n","\n","sample.conll 100%[===================>] 49.33K --.-KB/s in 0.01s \n","\n","2023-08-18 07:33:46 (3.77 MB/s) - ‘sample.conll’ saved [50519/50519]\n","\n"]}],"source":["# Load CoNLL\n","!wget https://github.com/JohnSnowLabs/langtest/raw/main/langtest/data/conll/sample.conll"]},{"cell_type":"code","execution_count":16,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"yey-zVICtq-w","outputId":"d94e8722-e009-4c17-85e5-9f8bcafdaf6a","executionInfo":{"status":"ok","timestamp":1692344334665,"user_tz":-330,"elapsed":233178,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["Warning::Spark Session already created, some configs may not take.\n","recognize_entities_dl download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n","Test Configuration : \n"," {\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"american_to_british\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," },\n"," \"accuracy\": {\n"," \"min_micro_f1_score\": {\n"," \"min_score\": 0.7\n"," }\n"," },\n"," \"bias\": {\n"," \"replace_to_female_pronouns\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"replace_to_low_income_country\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," },\n"," \"fairness\": {\n"," \"min_gender_f1_score\": {\n"," \"min_score\": 0.6\n"," }\n"," },\n"," \"representation\": {\n"," \"min_label_representation_count\": {\n"," \"min_count\": 50\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(task=\"ner\", model=model_dict, data={\"data_source\":\"sample.conll\"})"]},{"cell_type":"code","execution_count":17,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"JwK7oi7Etq-w","outputId":"11e0d7e4-58f0-497b-d122-07efc38f21cb","executionInfo":{"status":"ok","timestamp":1692344334668,"user_tz":-330,"elapsed":85,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'uppercase': {'min_pass_rate': 0.66},\n"," 'lowercase': {'min_pass_rate': 0.6}},\n"," 'performance': {'speed': {'min_pass_rate': 100, 'unit': 'tokens/sec'}}}}"]},"metadata":{},"execution_count":17}],"source":["harness.configure(\n","{\n"," 'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'uppercase': {'min_pass_rate': 0.66},\n"," 'lowercase': {'min_pass_rate': 0.60},\n"," },\n"," 'performance': {'speed': {'min_pass_rate': 100, 'unit': 'tokens/sec'}\n"," },\n"," }\n"," }\n"," )\n"]},{"cell_type":"code","execution_count":18,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vTbPwStvtq-x","outputId":"4b2cbf34-6d9e-4942-b6e5-4bccd7153326","executionInfo":{"status":"ok","timestamp":1692344465099,"user_tz":-330,"elapsed":130503,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"stream","name":"stderr","text":["Generating testcases...: 100%|██████████| 2/2 [00:00<00:00, 8256.50it/s]\n","Generating testcases...: 100%|██████████| 2/2 [00:00<00:00, 10094.59it/s]\n","Running testcases... : 100%|██████████| 453/453 [01:30<00:00, 4.99it/s]\n","Running testcases... : 100%|██████████| 453/453 [00:11<00:00, 40.56it/s]\n"]},{"output_type":"execute_result","data":{"text/plain":[]},"metadata":{},"execution_count":18}],"source":["harness.generate().run()"]},{"cell_type":"code","execution_count":19,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":143},"id":"AUZUeCpLtq-x","outputId":"406dea53-1a63-4e17-9ffb-7ed7e2a4531d","executionInfo":{"status":"ok","timestamp":1692344465100,"user_tz":-330,"elapsed":63,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"}}},"outputs":[{"output_type":"execute_result","data":{"text/plain":[""],"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","
test_typelowercasespeeduppercase
model_name   
en_core_web_sm0.2900000.5000000.580000
ner.dl0.1100001.0000000.850000
\n"]},"metadata":{},"execution_count":19}],"source":["harness.report()"]}],"metadata":{"accelerator":"TPU","colab":{"machine_shape":"hm","provenance":[]},"gpuClass":"standard","kernelspec":{"display_name":"Python 3","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.8.9"},"widgets":{"application/vnd.jupyter.widget-state+json":{"6c5a9f6544e0442ca68098426c146503":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_e7f4a1278a7e49aba2ed734c228d0c66","IPY_MODEL_0fe42dba7c4b4df2a64ea2002be642cf","IPY_MODEL_9a06564cc5254e89a762426cf3269a9e"],"layout":"IPY_MODEL_3bb1a7ff75c1490db0334e5162aba497"}},"e7f4a1278a7e49aba2ed734c228d0c66":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_4790617c8b18415d9cafaceabca7022d","placeholder":"​","style":"IPY_MODEL_2ffcf6981af34b139f304200934abaee","value":"Downloading (…)lve/main/config.json: 100%"}},"0fe42dba7c4b4df2a64ea2002be642cf":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_d2d79f3cb2d8444fa36a6851a208e9f4","max":829,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6b905fe4f7f542c9890f5cfd195beda3","value":829}},"9a06564cc5254e89a762426cf3269a9e":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b4d092df96e04c00a943f3c8e3329c39","placeholder":"​","style":"IPY_MODEL_966ad3248efb4f29a20f19b06c7dfa77","value":" 829/829 [00:00<00:00, 15.0kB/s]"}},"3bb1a7ff75c1490db0334e5162aba497":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4790617c8b18415d9cafaceabca7022d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2ffcf6981af34b139f304200934abaee":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d2d79f3cb2d8444fa36a6851a208e9f4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6b905fe4f7f542c9890f5cfd195beda3":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"b4d092df96e04c00a943f3c8e3329c39":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"966ad3248efb4f29a20f19b06c7dfa77":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"13f8de2b99ff475fbabbfba66b17125e":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3f65fa34feac4f00a89cf74bdb8f5a59","IPY_MODEL_d35f7095c5be4de19b625a00a0ea1798","IPY_MODEL_5f050ded4d6d41509dbad6f17284c18c"],"layout":"IPY_MODEL_58ee9406c08144de989c5a26ed5a1ccb"}},"3f65fa34feac4f00a89cf74bdb8f5a59":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_cee5a9b496cf435b9e746424187cad08","placeholder":"​","style":"IPY_MODEL_36e4580f19164f5d93280c4a06f0879c","value":"Downloading pytorch_model.bin: 100%"}},"d35f7095c5be4de19b625a00a0ea1798":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_1e99e26f69034ec79f52b512a608c4f7","max":433316646,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c749fd792c914727b6ff4386b316df57","value":433316646}},"5f050ded4d6d41509dbad6f17284c18c":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e24155477021432cb45793c0743eea1b","placeholder":"​","style":"IPY_MODEL_6fc068b143fc4e3391dd755e8262fcfd","value":" 433M/433M [00:05<00:00, 38.8MB/s]"}},"58ee9406c08144de989c5a26ed5a1ccb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"cee5a9b496cf435b9e746424187cad08":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"36e4580f19164f5d93280c4a06f0879c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"1e99e26f69034ec79f52b512a608c4f7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c749fd792c914727b6ff4386b316df57":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"e24155477021432cb45793c0743eea1b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6fc068b143fc4e3391dd755e8262fcfd":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5c12f56844e546c3aaadc192b2583077":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_c96e0761975e4290be8f4b287e3f6f42","IPY_MODEL_81e8c8d107034c85aa95252a3838b05e","IPY_MODEL_771f704de66e4d0eab0a2cb71dd24d2f"],"layout":"IPY_MODEL_6cf03247c6374a6b89aaffee79998285"}},"c96e0761975e4290be8f4b287e3f6f42":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_501dd4b2d09b4ae993a5bc2f18769ac4","placeholder":"​","style":"IPY_MODEL_3cbb3222ae2f4bb7b3dfd1a8c54a3503","value":"Downloading (…)okenizer_config.json: 100%"}},"81e8c8d107034c85aa95252a3838b05e":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_edc62d1193fc44e98784da4b1a3fa390","max":59,"min":0,"orientation":"horizontal","style":"IPY_MODEL_5dce3c96154c4dbba25a57052804c82b","value":59}},"771f704de66e4d0eab0a2cb71dd24d2f":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d54d2ab9930a447388f0fea290bef2ac","placeholder":"​","style":"IPY_MODEL_3ce8b14f48a24349b793b75d9350dc95","value":" 59.0/59.0 [00:00<00:00, 2.43kB/s]"}},"6cf03247c6374a6b89aaffee79998285":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"501dd4b2d09b4ae993a5bc2f18769ac4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3cbb3222ae2f4bb7b3dfd1a8c54a3503":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"edc62d1193fc44e98784da4b1a3fa390":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5dce3c96154c4dbba25a57052804c82b":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"d54d2ab9930a447388f0fea290bef2ac":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3ce8b14f48a24349b793b75d9350dc95":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3f1c56e797cf43588bad099a0783e179":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_85ff59f9f7ed47b5ab78f767255f5a56","IPY_MODEL_a12cdebdcf8b476f80b906d97a9ea261","IPY_MODEL_a404d4d49f2046bd85ea64cc2de4a734"],"layout":"IPY_MODEL_265a066b8e564034af96902a1e0347fb"}},"85ff59f9f7ed47b5ab78f767255f5a56":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d136b83a79034d20971be55510737103","placeholder":"​","style":"IPY_MODEL_572b68362a1a4292a43d44ebad043042","value":"Downloading (…)solve/main/vocab.txt: 100%"}},"a12cdebdcf8b476f80b906d97a9ea261":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_db4fc546e2d344018f85cd3deeab1115","max":213450,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ef8256e1afce4f268db5bc38a3a7fa86","value":213450}},"a404d4d49f2046bd85ea64cc2de4a734":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_afa59a1ecaba4b56a596f4cdbd7b6730","placeholder":"​","style":"IPY_MODEL_3d6af6f687c54a5eb0db38b2c2ef1899","value":" 213k/213k [00:00<00:00, 7.96MB/s]"}},"265a066b8e564034af96902a1e0347fb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d136b83a79034d20971be55510737103":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"572b68362a1a4292a43d44ebad043042":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"db4fc546e2d344018f85cd3deeab1115":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ef8256e1afce4f268db5bc38a3a7fa86":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"afa59a1ecaba4b56a596f4cdbd7b6730":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3d6af6f687c54a5eb0db38b2c2ef1899":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d2906819c5ec4c82b2731eac4afe519d":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_1db2003c9e124e4f8b6444c157636983","IPY_MODEL_eaae6733b12047ac9edec3adff0ab765","IPY_MODEL_83aa131ac111451495e97bd710631418"],"layout":"IPY_MODEL_f818144e1d304afd8b15900620abfc1d"}},"1db2003c9e124e4f8b6444c157636983":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_314d5fcd2f864d8f941f90d76bd0df1b","placeholder":"​","style":"IPY_MODEL_b3f1bdcee72a47a791c6eaec72fdf136","value":"Downloading (…)in/added_tokens.json: 100%"}},"eaae6733b12047ac9edec3adff0ab765":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_06797e19a13d40df8c50322bf4b52f90","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6689169d7c9447a1bde80313e6e9a7c2","value":2}},"83aa131ac111451495e97bd710631418":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_38476374aa9c49f68dcf96e55e520240","placeholder":"​","style":"IPY_MODEL_6c506299e96344798ac6e36820e275bf","value":" 2.00/2.00 [00:00<00:00, 86.3B/s]"}},"f818144e1d304afd8b15900620abfc1d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"314d5fcd2f864d8f941f90d76bd0df1b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b3f1bdcee72a47a791c6eaec72fdf136":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"06797e19a13d40df8c50322bf4b52f90":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6689169d7c9447a1bde80313e6e9a7c2":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"38476374aa9c49f68dcf96e55e520240":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6c506299e96344798ac6e36820e275bf":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"80393d9f400a4e9c8867808c5f2e8b28":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_eaff3fe3471b4815ab3d27d72142fe22","IPY_MODEL_030f52c161444051b7215c4cf1b4eb27","IPY_MODEL_d2726e7c8ebc4d0c9dbaf7d919bd064b"],"layout":"IPY_MODEL_012930dde07a4a56af962c6993ecbf03"}},"eaff3fe3471b4815ab3d27d72142fe22":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ab2b92ec8670443a9093c015c6084e95","placeholder":"​","style":"IPY_MODEL_5aee88b7efe54ce2b646b353cc61b26f","value":"Downloading (…)cial_tokens_map.json: 100%"}},"030f52c161444051b7215c4cf1b4eb27":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_f80fde8b46ba4c7fad2f867f2439ef83","max":112,"min":0,"orientation":"horizontal","style":"IPY_MODEL_1152e3b558814204a94a058f0d506d20","value":112}},"d2726e7c8ebc4d0c9dbaf7d919bd064b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_6ee8c33165a946b8a15516a89203f396","placeholder":"​","style":"IPY_MODEL_9982d7d8bc634c77838aa10ccead8428","value":" 112/112 [00:00<00:00, 7.97kB/s]"}},"012930dde07a4a56af962c6993ecbf03":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ab2b92ec8670443a9093c015c6084e95":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5aee88b7efe54ce2b646b353cc61b26f":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"f80fde8b46ba4c7fad2f867f2439ef83":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"1152e3b558814204a94a058f0d506d20":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"6ee8c33165a946b8a15516a89203f396":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9982d7d8bc634c77838aa10ccead8428":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file +{"cells":[{"cell_type":"markdown","metadata":{"id":"e7PsSmy9sCoR"},"source":["![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"3o5sAOfwL5qd"},"source":["[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/misc/PerformanceTest_Notebook.ipynb)"]},{"cell_type":"markdown","metadata":{"id":"WJJzt3RWhEc6"},"source":["**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity and fairness test categories.\n","\n","Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings."]},{"cell_type":"markdown","metadata":{"id":"26qXWhCYhHAt"},"source":["# Getting started with LangTest on John Snow Labs"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"azUb114QhOsY"},"outputs":[],"source":["!pip install langtest[transformers]"]},{"cell_type":"markdown","metadata":{"id":"yR6kjOaiheKN"},"source":["# Harness and Its Parameters\n","\n","The Harness class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results.Harness can be imported from the LangTest library in the following way."]},{"cell_type":"code","execution_count":2,"metadata":{"executionInfo":{"elapsed":925,"status":"ok","timestamp":1692343745209,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"lTzSJpMlhgq5"},"outputs":[],"source":["#Import Harness from the LangTest library\n","from langtest import Harness"]},{"cell_type":"markdown","metadata":{"id":"JFhJ9CcbsKqN"},"source":["# Performance Testing\n","\n","In the testing phase of evaluating Natural Language Processing (NLP) models using LangTest, a dedicated tool for assessing language-related capabilities, the focus is on measuring the time taken to process a given dataset. This metric serves as a key performance indicator, reflecting the efficiency of NLP models in real-world scenarios. The choice of an appropriate dataset is pivotal, ensuring its relevance to the application's context. By comparing the time efficiency of different models, one can identify optimal solutions for specific use cases. Additionally, if processing times are suboptimal, exploration of model architecture adjustments and optimization strategies becomes essential to enhance overall performance and responsiveness, particularly in applications demanding quick and efficient language processing.\n","\n","The formula you provided,\n","\n","$\\ speed $ = $\\frac{number\\ of\\ tokens\\ in\\ given\\ dataset}{time\\ taken}$\n","\n","calculates the speed of processing for an NLP model. Specifically, it represents the number of words processed per unit of time, offering a quantitative measure of the model's efficiency. A higher speed value indicates faster processing, which can be crucial in real-time applications or scenarios where quick language understanding and response are essential. Monitoring and optimizing this speed metric contribute to ensuring the practical utility of NLP models, especially in applications such as chatbots, customer support systems, or any context where rapid language processing is a priority."]},{"cell_type":"markdown","metadata":{"id":"swaYPW-wPlku"},"source":["### Setup and Configure Harness"]},{"cell_type":"code","execution_count":3,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":920,"referenced_widgets":["6c5a9f6544e0442ca68098426c146503","e7f4a1278a7e49aba2ed734c228d0c66","0fe42dba7c4b4df2a64ea2002be642cf","9a06564cc5254e89a762426cf3269a9e","3bb1a7ff75c1490db0334e5162aba497","4790617c8b18415d9cafaceabca7022d","2ffcf6981af34b139f304200934abaee","d2d79f3cb2d8444fa36a6851a208e9f4","6b905fe4f7f542c9890f5cfd195beda3","b4d092df96e04c00a943f3c8e3329c39","966ad3248efb4f29a20f19b06c7dfa77","13f8de2b99ff475fbabbfba66b17125e","3f65fa34feac4f00a89cf74bdb8f5a59","d35f7095c5be4de19b625a00a0ea1798","5f050ded4d6d41509dbad6f17284c18c","58ee9406c08144de989c5a26ed5a1ccb","cee5a9b496cf435b9e746424187cad08","36e4580f19164f5d93280c4a06f0879c","1e99e26f69034ec79f52b512a608c4f7","c749fd792c914727b6ff4386b316df57","e24155477021432cb45793c0743eea1b","6fc068b143fc4e3391dd755e8262fcfd","5c12f56844e546c3aaadc192b2583077","c96e0761975e4290be8f4b287e3f6f42","81e8c8d107034c85aa95252a3838b05e","771f704de66e4d0eab0a2cb71dd24d2f","6cf03247c6374a6b89aaffee79998285","501dd4b2d09b4ae993a5bc2f18769ac4","3cbb3222ae2f4bb7b3dfd1a8c54a3503","edc62d1193fc44e98784da4b1a3fa390","5dce3c96154c4dbba25a57052804c82b","d54d2ab9930a447388f0fea290bef2ac","3ce8b14f48a24349b793b75d9350dc95","3f1c56e797cf43588bad099a0783e179","85ff59f9f7ed47b5ab78f767255f5a56","a12cdebdcf8b476f80b906d97a9ea261","a404d4d49f2046bd85ea64cc2de4a734","265a066b8e564034af96902a1e0347fb","d136b83a79034d20971be55510737103","572b68362a1a4292a43d44ebad043042","db4fc546e2d344018f85cd3deeab1115","ef8256e1afce4f268db5bc38a3a7fa86","afa59a1ecaba4b56a596f4cdbd7b6730","3d6af6f687c54a5eb0db38b2c2ef1899","d2906819c5ec4c82b2731eac4afe519d","1db2003c9e124e4f8b6444c157636983","eaae6733b12047ac9edec3adff0ab765","83aa131ac111451495e97bd710631418","f818144e1d304afd8b15900620abfc1d","314d5fcd2f864d8f941f90d76bd0df1b","b3f1bdcee72a47a791c6eaec72fdf136","06797e19a13d40df8c50322bf4b52f90","6689169d7c9447a1bde80313e6e9a7c2","38476374aa9c49f68dcf96e55e520240","6c506299e96344798ac6e36820e275bf","80393d9f400a4e9c8867808c5f2e8b28","eaff3fe3471b4815ab3d27d72142fe22","030f52c161444051b7215c4cf1b4eb27","d2726e7c8ebc4d0c9dbaf7d919bd064b","012930dde07a4a56af962c6993ecbf03","ab2b92ec8670443a9093c015c6084e95","5aee88b7efe54ce2b646b353cc61b26f","f80fde8b46ba4c7fad2f867f2439ef83","1152e3b558814204a94a058f0d506d20","6ee8c33165a946b8a15516a89203f396","9982d7d8bc634c77838aa10ccead8428"]},"executionInfo":{"elapsed":23923,"status":"ok","timestamp":1692343769123,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"JaarBdfe8DQ8","outputId":"9bc19b92-c518-4bcf-f7e6-16f419898566"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"6c5a9f6544e0442ca68098426c146503","version_major":2,"version_minor":0},"text/plain":["Downloading (…)lve/main/config.json: 0%| | 0.00/829 [00:00\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeoriginaltest_case
0robustnesslowercaseSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...soccer - japan get lucky win , china in surpri...
1robustnesslowercaseNadim Ladkinadim ladki
2robustnesslowercaseAL-AIN , United Arab Emirates 1996-12-06al-ain , united arab emirates 1996-12-06
3robustnesslowercaseJapan began the defence of their Asian Cup tit...japan began the defence of their asian cup tit...
4robustnesslowercaseBut China saw their luck desert them in the se...but china saw their luck desert them in the se...
...............
448robustnessuppercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .CRICKET - LARA ENDURES ANOTHER MISERABLE DAY .
449robustnessuppercaseRobert GalvinROBERT GALVIN
450robustnessuppercaseMELBOURNE 1996-12-06MELBOURNE 1996-12-06
451robustnessuppercaseAustralia gave Brian Lara another reason to be...AUSTRALIA GAVE BRIAN LARA ANOTHER REASON TO BE...
452performancespeed--
\n","

453 rows × 4 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n"," \n"],"text/plain":[" category test_type \\\n","0 robustness lowercase \n","1 robustness lowercase \n","2 robustness lowercase \n","3 robustness lowercase \n","4 robustness lowercase \n",".. ... ... \n","448 robustness uppercase \n","449 robustness uppercase \n","450 robustness uppercase \n","451 robustness uppercase \n","452 performance speed \n","\n"," original \\\n","0 SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n","1 Nadim Ladki \n","2 AL-AIN , United Arab Emirates 1996-12-06 \n","3 Japan began the defence of their Asian Cup tit... \n","4 But China saw their luck desert them in the se... \n",".. ... \n","448 CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 Robert Galvin \n","450 MELBOURNE 1996-12-06 \n","451 Australia gave Brian Lara another reason to be... \n","452 - \n","\n"," test_case \n","0 soccer - japan get lucky win , china in surpri... \n","1 nadim ladki \n","2 al-ain , united arab emirates 1996-12-06 \n","3 japan began the defence of their asian cup tit... \n","4 but china saw their luck desert them in the se... \n",".. ... \n","448 CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 ROBERT GALVIN \n","450 MELBOURNE 1996-12-06 \n","451 AUSTRALIA GAVE BRIAN LARA ANOTHER REASON TO BE... \n","452 - \n","\n","[453 rows x 4 columns]"]},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"source":["harness.testcases()"]},{"cell_type":"markdown","metadata":{"id":"NOJ8BAU2GGzd"},"source":["harness.testcases() method displays the produced test cases in form of a pandas data frame."]},{"cell_type":"markdown","metadata":{"id":"3CwhQw6hGR9S"},"source":["### Running the tests"]},{"cell_type":"code","execution_count":8,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":163600,"status":"ok","timestamp":1692343967668,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"aguX6-aFGOnP","outputId":"66be230c-84f5-4521-a3c5-fb57f91d131a"},"outputs":[{"name":"stderr","output_type":"stream","text":["Running testcases... : 100%|██████████| 453/453 [02:43<00:00, 2.77it/s]\n"]},{"data":{"text/plain":[]},"execution_count":8,"metadata":{},"output_type":"execute_result"}],"source":["harness.run()"]},{"cell_type":"markdown","metadata":{"id":"191O2oaUGWrH"},"source":["Called after harness.generate() and is to used to run all the tests. Returns a pass/fail flag for each test."]},{"cell_type":"code","execution_count":9,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":527},"executionInfo":{"elapsed":33,"status":"ok","timestamp":1692343967670,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"XDbd1mpREWR5","outputId":"0375fbee-3ab7-4dca-f10d-eb6c36e23407"},"outputs":[{"data":{"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeoriginaltest_caseexpected_resultactual_resultpass
0robustnesslowercaseSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...soccer - japan get lucky win , china in surpri...JAPAN: MISC, LUCKY: PER, CHINA: ORGFalse
1robustnesslowercaseNadim Ladkinadim ladkiNadim Ladki: PERFalse
2robustnesslowercaseAL-AIN , United Arab Emirates 1996-12-06al-ain , united arab emirates 1996-12-06AL-AIN: LOC, United Arab Emirates: LOCal-ain: LOCFalse
3robustnesslowercaseJapan began the defence of their Asian Cup tit...japan began the defence of their asian cup tit...Japan: LOC, Asian Cup: MISC, Syria: LOC, Group...japan: ORG, syria: ORGFalse
4robustnesslowercaseBut China saw their luck desert them in the se...but china saw their luck desert them in the se...China: LOC, Uzbekistan: LOCuzbekistan: LOCFalse
........................
448robustnessuppercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .CRICKET - LARA ENDURES ANOTHER MISERABLE DAY .LARA: LOC, MISERABLE: PERLARA: LOC, MISERABLE: PERTrue
449robustnessuppercaseRobert GalvinROBERT GALVINRobert Galvin: PERROBERT: ORG, GALVIN: PERFalse
450robustnessuppercaseMELBOURNE 1996-12-06MELBOURNE 1996-12-06MELBOURNE: LOCMELBOURNE: LOCTrue
451robustnessuppercaseAustralia gave Brian Lara another reason to be...AUSTRALIA GAVE BRIAN LARA ANOTHER REASON TO BE...Australia: LOC, Brian Lara: PER, West Indies: ...AUSTRALIA: LOC, BRIAN LARA: LOC, REASON: PER, ...False
452performancespeed--100 token/sec19.20 token/secTrue
\n","

453 rows × 7 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type \\\n","0 robustness lowercase \n","1 robustness lowercase \n","2 robustness lowercase \n","3 robustness lowercase \n","4 robustness lowercase \n",".. ... ... \n","448 robustness uppercase \n","449 robustness uppercase \n","450 robustness uppercase \n","451 robustness uppercase \n","452 performance speed \n","\n"," original \\\n","0 SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n","1 Nadim Ladki \n","2 AL-AIN , United Arab Emirates 1996-12-06 \n","3 Japan began the defence of their Asian Cup tit... \n","4 But China saw their luck desert them in the se... \n",".. ... \n","448 CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 Robert Galvin \n","450 MELBOURNE 1996-12-06 \n","451 Australia gave Brian Lara another reason to be... \n","452 - \n","\n"," test_case \\\n","0 soccer - japan get lucky win , china in surpri... \n","1 nadim ladki \n","2 al-ain , united arab emirates 1996-12-06 \n","3 japan began the defence of their asian cup tit... \n","4 but china saw their luck desert them in the se... \n",".. ... \n","448 CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 ROBERT GALVIN \n","450 MELBOURNE 1996-12-06 \n","451 AUSTRALIA GAVE BRIAN LARA ANOTHER REASON TO BE... \n","452 - \n","\n"," expected_result \\\n","0 JAPAN: MISC, LUCKY: PER, CHINA: ORG \n","1 Nadim Ladki: PER \n","2 AL-AIN: LOC, United Arab Emirates: LOC \n","3 Japan: LOC, Asian Cup: MISC, Syria: LOC, Group... \n","4 China: LOC, Uzbekistan: LOC \n",".. ... \n","448 LARA: LOC, MISERABLE: PER \n","449 Robert Galvin: PER \n","450 MELBOURNE: LOC \n","451 Australia: LOC, Brian Lara: PER, West Indies: ... \n","452 100 token/sec \n","\n"," actual_result pass \n","0 False \n","1 False \n","2 al-ain: LOC False \n","3 japan: ORG, syria: ORG False \n","4 uzbekistan: LOC False \n",".. ... ... \n","448 LARA: LOC, MISERABLE: PER True \n","449 ROBERT: ORG, GALVIN: PER False \n","450 MELBOURNE: LOC True \n","451 AUSTRALIA: LOC, BRIAN LARA: LOC, REASON: PER, ... False \n","452 19.20 token/sec True \n","\n","[453 rows x 7 columns]"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"TKB8Rsr2GZME"},"source":["This method returns the generated results in the form of a pandas dataframe, which provides a convenient and easy-to-use format for working with the test results. You can use this method to quickly identify the test cases that failed and to determine where fixes are needed."]},{"cell_type":"markdown","metadata":{"id":"PBSlpWnUU55G"},"source":["### Final Results"]},{"cell_type":"markdown","metadata":{"id":"umnEgUHM8DRA"},"source":["We can call `.report()` which summarizes the results giving information about pass and fail counts and overall test pass/fail flag.\n","\n","To get time_elapsed for each test we pass parameter `return_runtime=True` in `.report()` method. We can also select the unit for time_elapsed i.e, seconds(s), miliseconds(ms) or microseconds(us) etc."]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":143},"executionInfo":{"elapsed":30,"status":"ok","timestamp":1692343967672,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"gp57HcF9yxi7","outputId":"8d990f2e-6b4d-480e-e844-95ff9158e126"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnesslowercase1824419%66%False
1robustnessuppercase1527433%66%False
2performancespeed01100%100%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate minimum_pass_rate \\\n","0 robustness lowercase 182 44 19% 66% \n","1 robustness uppercase 152 74 33% 66% \n","2 performance speed 0 1 100% 100% \n","\n"," pass \n","0 False \n","1 False \n","2 True "]},"execution_count":10,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]},{"cell_type":"markdown","metadata":{"id":"zg-knds3tq-w"},"source":["# Multiple Models Runtime Testing"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"ElMInPJMu3QK"},"outputs":[],"source":["!pip install spacy johnsnowlabs"]},{"cell_type":"code","execution_count":11,"metadata":{"executionInfo":{"elapsed":28,"status":"ok","timestamp":1692343967673,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"TnUBvYXptq-w"},"outputs":[],"source":["model_dict=[{\"model\": \"ner.dl\", \"hub\": \"johnsnowlabs\"},\n"," {\"model\": \"en_core_web_sm\", \"hub\": \"spacy\"}]"]},{"cell_type":"code","execution_count":13,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":1096,"status":"ok","timestamp":1692344027826,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"PmMwW5IIvGav","outputId":"d9e5c932-b286-46e7-d18c-23e23f4cba6f"},"outputs":[{"name":"stdout","output_type":"stream","text":["--2023-08-18 07:33:45-- https://github.com/JohnSnowLabs/langtest/raw/main/langtest/data/conll/sample.conll\n","Resolving github.com (github.com)... 20.27.177.113\n","Connecting to github.com (github.com)|20.27.177.113|:443... connected.\n","HTTP request sent, awaiting response... 302 Found\n","Location: https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll [following]\n","--2023-08-18 07:33:45-- https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll\n","Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.108.133, ...\n","Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 50519 (49K) [text/plain]\n","Saving to: ‘sample.conll’\n","\n","sample.conll 100%[===================>] 49.33K --.-KB/s in 0.01s \n","\n","2023-08-18 07:33:46 (3.77 MB/s) - ‘sample.conll’ saved [50519/50519]\n","\n"]}],"source":["# Load CoNLL\n","!wget https://github.com/JohnSnowLabs/langtest/raw/main/langtest/data/conll/sample.conll"]},{"cell_type":"code","execution_count":16,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":233178,"status":"ok","timestamp":1692344334665,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"yey-zVICtq-w","outputId":"d94e8722-e009-4c17-85e5-9f8bcafdaf6a"},"outputs":[{"name":"stdout","output_type":"stream","text":["Warning::Spark Session already created, some configs may not take.\n","recognize_entities_dl download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n","Test Configuration : \n"," {\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"american_to_british\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," },\n"," \"accuracy\": {\n"," \"min_micro_f1_score\": {\n"," \"min_score\": 0.7\n"," }\n"," },\n"," \"bias\": {\n"," \"replace_to_female_pronouns\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"replace_to_low_income_country\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," },\n"," \"fairness\": {\n"," \"min_gender_f1_score\": {\n"," \"min_score\": 0.6\n"," }\n"," },\n"," \"representation\": {\n"," \"min_label_representation_count\": {\n"," \"min_count\": 50\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(task=\"ner\", model=model_dict, data={\"data_source\":\"sample.conll\"})"]},{"cell_type":"code","execution_count":17,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":85,"status":"ok","timestamp":1692344334668,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"JwK7oi7Etq-w","outputId":"11e0d7e4-58f0-497b-d122-07efc38f21cb"},"outputs":[{"data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'uppercase': {'min_pass_rate': 0.66},\n"," 'lowercase': {'min_pass_rate': 0.6}},\n"," 'performance': {'speed': {'min_pass_rate': 100, 'unit': 'tokens/sec'}}}}"]},"execution_count":17,"metadata":{},"output_type":"execute_result"}],"source":["harness.configure(\n","{\n"," 'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'uppercase': {'min_pass_rate': 0.66},\n"," 'lowercase': {'min_pass_rate': 0.60},\n"," },\n"," 'performance': {'speed': {'min_pass_rate': 100, 'unit': 'tokens/sec'}\n"," },\n"," }\n"," }\n"," )\n"]},{"cell_type":"code","execution_count":18,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":130503,"status":"ok","timestamp":1692344465099,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"vTbPwStvtq-x","outputId":"4b2cbf34-6d9e-4942-b6e5-4bccd7153326"},"outputs":[{"name":"stderr","output_type":"stream","text":["Generating testcases...: 100%|██████████| 2/2 [00:00<00:00, 8256.50it/s]\n","Generating testcases...: 100%|██████████| 2/2 [00:00<00:00, 10094.59it/s]\n","Running testcases... : 100%|██████████| 453/453 [01:30<00:00, 4.99it/s]\n","Running testcases... : 100%|██████████| 453/453 [00:11<00:00, 40.56it/s]\n"]},{"data":{"text/plain":[]},"execution_count":18,"metadata":{},"output_type":"execute_result"}],"source":["harness.generate().run()"]},{"cell_type":"code","execution_count":19,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":143},"executionInfo":{"elapsed":63,"status":"ok","timestamp":1692344465100,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"AUZUeCpLtq-x","outputId":"406dea53-1a63-4e17-9ffb-7ed7e2a4531d"},"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","
test_typelowercasespeeduppercase
model_name   
en_core_web_sm0.2900000.5000000.580000
ner.dl0.1100001.0000000.850000
\n"],"text/plain":[""]},"execution_count":19,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]}],"metadata":{"accelerator":"TPU","colab":{"machine_shape":"hm","provenance":[]},"gpuClass":"standard","kernelspec":{"display_name":"Python 3","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.8.9"},"widgets":{"application/vnd.jupyter.widget-state+json":{"012930dde07a4a56af962c6993ecbf03":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"030f52c161444051b7215c4cf1b4eb27":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_f80fde8b46ba4c7fad2f867f2439ef83","max":112,"min":0,"orientation":"horizontal","style":"IPY_MODEL_1152e3b558814204a94a058f0d506d20","value":112}},"06797e19a13d40df8c50322bf4b52f90":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0fe42dba7c4b4df2a64ea2002be642cf":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_d2d79f3cb2d8444fa36a6851a208e9f4","max":829,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6b905fe4f7f542c9890f5cfd195beda3","value":829}},"1152e3b558814204a94a058f0d506d20":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"13f8de2b99ff475fbabbfba66b17125e":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3f65fa34feac4f00a89cf74bdb8f5a59","IPY_MODEL_d35f7095c5be4de19b625a00a0ea1798","IPY_MODEL_5f050ded4d6d41509dbad6f17284c18c"],"layout":"IPY_MODEL_58ee9406c08144de989c5a26ed5a1ccb"}},"1db2003c9e124e4f8b6444c157636983":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_314d5fcd2f864d8f941f90d76bd0df1b","placeholder":"​","style":"IPY_MODEL_b3f1bdcee72a47a791c6eaec72fdf136","value":"Downloading (…)in/added_tokens.json: 100%"}},"1e99e26f69034ec79f52b512a608c4f7":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"265a066b8e564034af96902a1e0347fb":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2ffcf6981af34b139f304200934abaee":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"314d5fcd2f864d8f941f90d76bd0df1b":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"36e4580f19164f5d93280c4a06f0879c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"38476374aa9c49f68dcf96e55e520240":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3bb1a7ff75c1490db0334e5162aba497":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3cbb3222ae2f4bb7b3dfd1a8c54a3503":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3ce8b14f48a24349b793b75d9350dc95":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3d6af6f687c54a5eb0db38b2c2ef1899":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3f1c56e797cf43588bad099a0783e179":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_85ff59f9f7ed47b5ab78f767255f5a56","IPY_MODEL_a12cdebdcf8b476f80b906d97a9ea261","IPY_MODEL_a404d4d49f2046bd85ea64cc2de4a734"],"layout":"IPY_MODEL_265a066b8e564034af96902a1e0347fb"}},"3f65fa34feac4f00a89cf74bdb8f5a59":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_cee5a9b496cf435b9e746424187cad08","placeholder":"​","style":"IPY_MODEL_36e4580f19164f5d93280c4a06f0879c","value":"Downloading pytorch_model.bin: 100%"}},"4790617c8b18415d9cafaceabca7022d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"501dd4b2d09b4ae993a5bc2f18769ac4":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"572b68362a1a4292a43d44ebad043042":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"58ee9406c08144de989c5a26ed5a1ccb":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5aee88b7efe54ce2b646b353cc61b26f":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5c12f56844e546c3aaadc192b2583077":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_c96e0761975e4290be8f4b287e3f6f42","IPY_MODEL_81e8c8d107034c85aa95252a3838b05e","IPY_MODEL_771f704de66e4d0eab0a2cb71dd24d2f"],"layout":"IPY_MODEL_6cf03247c6374a6b89aaffee79998285"}},"5dce3c96154c4dbba25a57052804c82b":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"5f050ded4d6d41509dbad6f17284c18c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e24155477021432cb45793c0743eea1b","placeholder":"​","style":"IPY_MODEL_6fc068b143fc4e3391dd755e8262fcfd","value":" 433M/433M [00:05<00:00, 38.8MB/s]"}},"6689169d7c9447a1bde80313e6e9a7c2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"6b905fe4f7f542c9890f5cfd195beda3":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"6c506299e96344798ac6e36820e275bf":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"6c5a9f6544e0442ca68098426c146503":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_e7f4a1278a7e49aba2ed734c228d0c66","IPY_MODEL_0fe42dba7c4b4df2a64ea2002be642cf","IPY_MODEL_9a06564cc5254e89a762426cf3269a9e"],"layout":"IPY_MODEL_3bb1a7ff75c1490db0334e5162aba497"}},"6cf03247c6374a6b89aaffee79998285":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6ee8c33165a946b8a15516a89203f396":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6fc068b143fc4e3391dd755e8262fcfd":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"771f704de66e4d0eab0a2cb71dd24d2f":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d54d2ab9930a447388f0fea290bef2ac","placeholder":"​","style":"IPY_MODEL_3ce8b14f48a24349b793b75d9350dc95","value":" 59.0/59.0 [00:00<00:00, 2.43kB/s]"}},"80393d9f400a4e9c8867808c5f2e8b28":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_eaff3fe3471b4815ab3d27d72142fe22","IPY_MODEL_030f52c161444051b7215c4cf1b4eb27","IPY_MODEL_d2726e7c8ebc4d0c9dbaf7d919bd064b"],"layout":"IPY_MODEL_012930dde07a4a56af962c6993ecbf03"}},"81e8c8d107034c85aa95252a3838b05e":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_edc62d1193fc44e98784da4b1a3fa390","max":59,"min":0,"orientation":"horizontal","style":"IPY_MODEL_5dce3c96154c4dbba25a57052804c82b","value":59}},"83aa131ac111451495e97bd710631418":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_38476374aa9c49f68dcf96e55e520240","placeholder":"​","style":"IPY_MODEL_6c506299e96344798ac6e36820e275bf","value":" 2.00/2.00 [00:00<00:00, 86.3B/s]"}},"85ff59f9f7ed47b5ab78f767255f5a56":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d136b83a79034d20971be55510737103","placeholder":"​","style":"IPY_MODEL_572b68362a1a4292a43d44ebad043042","value":"Downloading (…)solve/main/vocab.txt: 100%"}},"966ad3248efb4f29a20f19b06c7dfa77":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"9982d7d8bc634c77838aa10ccead8428":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"9a06564cc5254e89a762426cf3269a9e":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b4d092df96e04c00a943f3c8e3329c39","placeholder":"​","style":"IPY_MODEL_966ad3248efb4f29a20f19b06c7dfa77","value":" 829/829 [00:00<00:00, 15.0kB/s]"}},"a12cdebdcf8b476f80b906d97a9ea261":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_db4fc546e2d344018f85cd3deeab1115","max":213450,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ef8256e1afce4f268db5bc38a3a7fa86","value":213450}},"a404d4d49f2046bd85ea64cc2de4a734":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_afa59a1ecaba4b56a596f4cdbd7b6730","placeholder":"​","style":"IPY_MODEL_3d6af6f687c54a5eb0db38b2c2ef1899","value":" 213k/213k [00:00<00:00, 7.96MB/s]"}},"ab2b92ec8670443a9093c015c6084e95":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"afa59a1ecaba4b56a596f4cdbd7b6730":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b3f1bdcee72a47a791c6eaec72fdf136":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"b4d092df96e04c00a943f3c8e3329c39":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c749fd792c914727b6ff4386b316df57":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"c96e0761975e4290be8f4b287e3f6f42":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_501dd4b2d09b4ae993a5bc2f18769ac4","placeholder":"​","style":"IPY_MODEL_3cbb3222ae2f4bb7b3dfd1a8c54a3503","value":"Downloading (…)okenizer_config.json: 100%"}},"cee5a9b496cf435b9e746424187cad08":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d136b83a79034d20971be55510737103":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d2726e7c8ebc4d0c9dbaf7d919bd064b":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_6ee8c33165a946b8a15516a89203f396","placeholder":"​","style":"IPY_MODEL_9982d7d8bc634c77838aa10ccead8428","value":" 112/112 [00:00<00:00, 7.97kB/s]"}},"d2906819c5ec4c82b2731eac4afe519d":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_1db2003c9e124e4f8b6444c157636983","IPY_MODEL_eaae6733b12047ac9edec3adff0ab765","IPY_MODEL_83aa131ac111451495e97bd710631418"],"layout":"IPY_MODEL_f818144e1d304afd8b15900620abfc1d"}},"d2d79f3cb2d8444fa36a6851a208e9f4":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d35f7095c5be4de19b625a00a0ea1798":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_1e99e26f69034ec79f52b512a608c4f7","max":433316646,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c749fd792c914727b6ff4386b316df57","value":433316646}},"d54d2ab9930a447388f0fea290bef2ac":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"db4fc546e2d344018f85cd3deeab1115":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e24155477021432cb45793c0743eea1b":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e7f4a1278a7e49aba2ed734c228d0c66":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_4790617c8b18415d9cafaceabca7022d","placeholder":"​","style":"IPY_MODEL_2ffcf6981af34b139f304200934abaee","value":"Downloading (…)lve/main/config.json: 100%"}},"eaae6733b12047ac9edec3adff0ab765":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_06797e19a13d40df8c50322bf4b52f90","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6689169d7c9447a1bde80313e6e9a7c2","value":2}},"eaff3fe3471b4815ab3d27d72142fe22":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ab2b92ec8670443a9093c015c6084e95","placeholder":"​","style":"IPY_MODEL_5aee88b7efe54ce2b646b353cc61b26f","value":"Downloading (…)cial_tokens_map.json: 100%"}},"edc62d1193fc44e98784da4b1a3fa390":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ef8256e1afce4f268db5bc38a3a7fa86":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"f80fde8b46ba4c7fad2f867f2439ef83":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f818144e1d304afd8b15900620abfc1d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}}}}},"nbformat":4,"nbformat_minor":0} diff --git a/demo/tutorials/misc/Templatic_Augmentation_Notebook.ipynb b/demo/tutorials/misc/Templatic_Augmentation_Notebook.ipynb index 739c9461b..3c6c85f40 100644 --- a/demo/tutorials/misc/Templatic_Augmentation_Notebook.ipynb +++ b/demo/tutorials/misc/Templatic_Augmentation_Notebook.ipynb @@ -1 +1,2654 @@ -{"cells":[{"cell_type":"markdown","metadata":{"id":"e7PsSmy9sCoR"},"source":["![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"MhgkQYQiEvZt"},"source":["[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/misc/Templatic_Augmentation_Notebook.ipynb)"]},{"cell_type":"markdown","metadata":{"id":"WJJzt3RWhEc6"},"source":["**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity and fairness test categories.\n","\n","Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings."]},{"cell_type":"markdown","metadata":{"id":"26qXWhCYhHAt"},"source":["# Getting started with LangTest on John Snow Labs"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"oGIyE43uhTxH"},"outputs":[],"source":["!pip install langtest[johnsnowlabs]"]},{"cell_type":"markdown","metadata":{"id":"yR6kjOaiheKN"},"source":["# Harness and its Parameters\n","\n","The Harness class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results.Harness can be imported from the LangTest library in the following way."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"lTzSJpMlhgq5"},"outputs":[],"source":["#Import Harness from the LangTest library\n","from langtest import Harness"]},{"cell_type":"markdown","metadata":{"id":"sBcZjwJBhkOw"},"source":["It imports the Harness class from within the module, that is designed to provide a blueprint or framework for conducting NLP testing, and that instances of the Harness class can be customized or configured for different testing scenarios or environments.\n","\n","Here is a list of the different parameters that can be passed to the Harness function:\n","\n","
\n","\n","\n","\n","| Parameter | Description |\n","| - | - |\n","| **task** | Task for which the model is to be evaluated (text-classification or ner) |\n","| **model** | Specifies the model(s) to be evaluated. This parameter can be provided as either a dictionary or a list of dictionaries. Each dictionary should contain the following keys:
  • model (mandatory): \tPipelineModel or path to a saved model or pretrained pipeline/model from hub.
  • hub (mandatory): Hub (library) to use in back-end for loading model from public models hub or from path
|\n","| **data** | The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys:
  • data_source (mandatory): The source of the data.
  • subset (optional): The subset of the data.
  • feature_column (optional): The column containing the features.
  • target_column (optional): The column containing the target labels.
  • split (optional): The data split to be used.
  • source (optional): Set to 'huggingface' when loading Hugging Face dataset.
|\n","| **config** | Configuration for the tests to be performed, specified in the form of a YAML file. |\n","\n","\n","
\n","
"]},{"cell_type":"markdown","metadata":{"id":"JFhJ9CcbsKqN"},"source":["# Real-World Project Workflows\n","\n","In this section, we dive into complete workflows for using the model testing module in real-world project settings."]},{"cell_type":"markdown","metadata":{"id":"UtxtE6Y0r4CJ"},"source":["## Robustness Testing\n","\n","In this example, we will be testing a model's robustness. We will be applying 2 tests: add_typo and lowercase. The real-world project workflow of the model robustness testing and fixing in this case goes as follows:\n","\n","1. Train NER model on original CoNLL training set\n","\n","2. Test NER model robustness on CoNLL test set\n","\n","3. Augment CoNLL training set based on test results\n","\n","4. Train new NER model on augmented CoNLL training set\n","\n","5. Test new NER model robustness on the CoNLL test set from step 2\n","\n","6. Compare robustness of new NER model against original NER model"]},{"cell_type":"markdown","metadata":{"id":"I21Jmq79jgC6"},"source":["#### Load Train and Test CoNLL"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":1477,"status":"ok","timestamp":1692342633486,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"6uW22VqJje8E","outputId":"ff7e597d-9ec3-41ce-e006-0c251dc96183"},"outputs":[{"name":"stdout","output_type":"stream","text":["--2023-08-18 07:10:30-- https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll\n","Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n","Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 50519 (49K) [text/plain]\n","Saving to: ‘sample.conll’\n","\n","\rsample.conll 0%[ ] 0 --.-KB/s \rsample.conll 100%[===================>] 49.33K --.-KB/s in 0.003s \n","\n","2023-08-18 07:10:30 (15.6 MB/s) - ‘sample.conll’ saved [50519/50519]\n","\n","--2023-08-18 07:10:30-- https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/demo/data/conll03.conll\n","Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n","Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 827443 (808K) [text/plain]\n","Saving to: ‘conll03.conll’\n","\n","conll03.conll 100%[===================>] 808.05K --.-KB/s in 0.02s \n","\n","2023-08-18 07:10:31 (42.3 MB/s) - ‘conll03.conll’ saved [827443/827443]\n","\n"]}],"source":["# Load test CoNLL\n","!wget https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll\n","\n","# Load train CoNLL\n","!wget https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/demo/data/conll03.conll"]},{"cell_type":"markdown","metadata":{"id":"MNtH_HOUt_PL"},"source":["#### Step 1: Train NER Model"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"jRnEmCfPhsZs"},"outputs":[],"source":["from johnsnowlabs import nlp"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":337965,"status":"ok","timestamp":1692342977578,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"bHXeP18sGp-g","outputId":"7ba0e6d9-0675-44d1-b601-98d415230949"},"outputs":[{"name":"stdout","output_type":"stream","text":["Warning::Spark Session already created, some configs may not take.\n","small_bert_L2_128 download started this may take some time.\n","Approximate size to download 16.1 MB\n","[OK!]\n"]}],"source":["ner_model = nlp.load('bert train.ner').fit(dataset_path=\"/content/conll03.conll\")\n"]},{"cell_type":"markdown","metadata":{"id":"kKgXC7cvuyar"},"source":["#### Step 2: Test NER Model Robustness "]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":832,"status":"ok","timestamp":1692342978351,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"RVk9NWn7u-Lm","outputId":"73756c32-b1ec-42f7-ddf2-e33204b9a5dc"},"outputs":[{"name":"stdout","output_type":"stream","text":["Test Configuration : \n"," {\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 1.0\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"american_to_british\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," },\n"," \"accuracy\": {\n"," \"min_micro_f1_score\": {\n"," \"min_score\": 0.7\n"," }\n"," },\n"," \"bias\": {\n"," \"replace_to_female_pronouns\": {\n"," \"min_pass_rate\": 0.7\n"," },\n"," \"replace_to_low_income_country\": {\n"," \"min_pass_rate\": 0.7\n"," }\n"," },\n"," \"fairness\": {\n"," \"min_gender_f1_score\": {\n"," \"min_score\": 0.6\n"," }\n"," },\n"," \"representation\": {\n"," \"min_label_representation_count\": {\n"," \"min_count\": 50\n"," }\n"," }\n"," }\n","}\n"]}],"source":["harness = Harness(task=\"ner\", model={\"model\": ner_model, \"hub\": \"johnsnowlabs\"}, data={\"data_source\":\"sample.conll\"})"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":18,"status":"ok","timestamp":1692342978353,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"mynkAUwZyuFN","outputId":"bca2f807-40f2-4767-f176-33103c31a9e3"},"outputs":[{"data":{"text/plain":["{'tests': {'defaults': {'min_pass_rate': 0.65},\n"," 'robustness': {'add_typo': {'min_pass_rate': 0.73},\n"," 'lowercase': {'min_pass_rate': 0.65}}}}"]},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"source":["harness.configure({\n"," 'tests': {\n"," 'defaults': {'min_pass_rate': 0.65},\n","\n"," 'robustness': {\n"," 'add_typo': {'min_pass_rate': 0.73},\n"," 'lowercase':{'min_pass_rate': 0.65},\n"," }\n"," }\n","})"]},{"cell_type":"markdown","metadata":{"id":"ZPU46A7WigFr"},"source":["Here we have configured the harness to perform two robustness tests (add_typo and lowercase) and defined the minimum pass rate for each test."]},{"cell_type":"markdown","metadata":{"id":"MomLlmTwjpzU"},"source":["\n","#### Generating the test cases.\n","\n","\n"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":27812,"status":"ok","timestamp":1692343006155,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"UiUNzTwF89ye","outputId":"4dc12bb6-808c-4d6b-824b-439cb3e81128"},"outputs":[{"name":"stderr","output_type":"stream","text":["Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 263.51it/s]\n"]},{"data":{"text/plain":[]},"execution_count":8,"metadata":{},"output_type":"execute_result"}],"source":["harness.generate()"]},{"cell_type":"markdown","metadata":{"id":"UiMIF-o49Bg_"},"source":["harness.generate() method automatically generates the test cases (based on the provided configuration)"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":423},"executionInfo":{"elapsed":25,"status":"ok","timestamp":1692343006156,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"p0tTwFfc891k","outputId":"b8741a7a-c1cd-4b30-d081-0a92c9c522f7"},"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","
categorytest_typeoriginaltest_case
0robustnessadd_typoSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...SOCCER - JABAN GET LUCKY WIN , CHINA IN SURPRI...
1robustnessadd_typoNadim LadkiNadim Ladkl
2robustnessadd_typoAL-AIN , United Arab Emirates 1996-12-06AL-AIN , United Atab Emirates 1996-12-06
3robustnessadd_typoJapan began the defence of their Asian Cup tit...Japan began the defence of their Asian Cup tit...
4robustnessadd_typoBut China saw their luck desert them in the se...But China saw their luck desert them in the se...
...............
447robustnesslowercasePortuguesa 1 Atletico Mineiro 0portuguesa 1 atletico mineiro 0
448robustnesslowercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .cricket - lara endures another miserable day .
449robustnesslowercaseRobert Galvinrobert galvin
450robustnesslowercaseMELBOURNE 1996-12-06melbourne 1996-12-06
451robustnesslowercaseAustralia gave Brian Lara another reason to be...australia gave brian lara another reason to be...
\n","

452 rows × 4 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type original \\\n","0 robustness add_typo SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n","1 robustness add_typo Nadim Ladki \n","2 robustness add_typo AL-AIN , United Arab Emirates 1996-12-06 \n","3 robustness add_typo Japan began the defence of their Asian Cup tit... \n","4 robustness add_typo But China saw their luck desert them in the se... \n",".. ... ... ... \n","447 robustness lowercase Portuguesa 1 Atletico Mineiro 0 \n","448 robustness lowercase CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 robustness lowercase Robert Galvin \n","450 robustness lowercase MELBOURNE 1996-12-06 \n","451 robustness lowercase Australia gave Brian Lara another reason to be... \n","\n"," test_case \n","0 SOCCER - JABAN GET LUCKY WIN , CHINA IN SURPRI... \n","1 Nadim Ladkl \n","2 AL-AIN , United Atab Emirates 1996-12-06 \n","3 Japan began the defence of their Asian Cup tit... \n","4 But China saw their luck desert them in the se... \n",".. ... \n","447 portuguesa 1 atletico mineiro 0 \n","448 cricket - lara endures another miserable day . \n","449 robert galvin \n","450 melbourne 1996-12-06 \n","451 australia gave brian lara another reason to be... \n","\n","[452 rows x 4 columns]"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["harness.testcases()"]},{"cell_type":"markdown","metadata":{"id":"nRgq7e-g9Gev"},"source":["harness.testcases() method gives the produced test cases in form of a pandas data frame."]},{"cell_type":"markdown","metadata":{"id":"IaPBjl_R9slh"},"source":["#### Saving test configurations, data, test cases"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"ba0MYutC96CN"},"outputs":[],"source":["harness.save(\"saved_test_configurations\")"]},{"cell_type":"markdown","metadata":{"id":"groBqKuD9I34"},"source":["#### Running the tests"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":81932,"status":"ok","timestamp":1692343088818,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"CHQHRbQb9EDi","outputId":"44621987-fd79-46bf-cf6e-beba8cc7dcee"},"outputs":[{"name":"stderr","output_type":"stream","text":["Running testcases... : 100%|██████████| 452/452 [01:22<00:00, 5.51it/s]\n"]},{"data":{"text/plain":[]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["harness.run()"]},{"cell_type":"markdown","metadata":{"id":"71zHGe2q9O6G"},"source":["Called after harness.generate() and is to used to run all the tests. Returns a pass/fail flag for each test."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":545},"executionInfo":{"elapsed":51,"status":"ok","timestamp":1692343088821,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"keBNodfJ894u","outputId":"4f0aea52-ae9a-4bad-b0a7-d87a42a324b1"},"outputs":[{"data":{"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeoriginaltest_caseexpected_resultactual_resultpass
0robustnessadd_typoSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...SOCCER - JABAN GET LUCKY WIN , CHINA IN SURPRI...japan: LOC, china: LOCjaban: PER, china: LOCFalse
1robustnessadd_typoNadim LadkiNadim Ladklnadim ladki: PERnadim ladkl: PERTrue
2robustnessadd_typoAL-AIN , United Arab Emirates 1996-12-06AL-AIN , United Atab Emirates 1996-12-06al-ain: LOC, united arab emirates: LOCal-ain: LOC, united atab emirates: LOCTrue
3robustnessadd_typoJapan began the defence of their Asian Cup tit...Japan began the defence of their Asian Cup tit...japan: LOC, asian cup: MISC, syria: LOCjapan: LOC, asian cup: MISC, syria: LOC, champ...True
4robustnessadd_typoBut China saw their luck desert them in the se...But China saw their luck desert them in the se...china: LOC, uzbekistan: LOCchina: LOC, uzbekistan: LOCTrue
........................
447robustnesslowercasePortuguesa 1 Atletico Mineiro 0portuguesa 1 atletico mineiro 0portuguesa: ORG, atletico: ORG, mineiro: ORGportuguesa: ORG, atletico: ORG, mineiro: ORGTrue
448robustnesslowercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .cricket - lara endures another miserable day .lara: PERlara: PERTrue
449robustnesslowercaseRobert Galvinrobert galvinrobert galvin: PERrobert galvin: PERTrue
450robustnesslowercaseMELBOURNE 1996-12-06melbourne 1996-12-06melbourne: LOCmelbourne: LOCTrue
451robustnesslowercaseAustralia gave Brian Lara another reason to be...australia gave brian lara another reason to be...australia: LOC, brian lara: PER, west: LOCaustralia: LOC, brian lara: PER, west: LOCTrue
\n","

452 rows × 7 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type original \\\n","0 robustness add_typo SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n","1 robustness add_typo Nadim Ladki \n","2 robustness add_typo AL-AIN , United Arab Emirates 1996-12-06 \n","3 robustness add_typo Japan began the defence of their Asian Cup tit... \n","4 robustness add_typo But China saw their luck desert them in the se... \n",".. ... ... ... \n","447 robustness lowercase Portuguesa 1 Atletico Mineiro 0 \n","448 robustness lowercase CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 robustness lowercase Robert Galvin \n","450 robustness lowercase MELBOURNE 1996-12-06 \n","451 robustness lowercase Australia gave Brian Lara another reason to be... \n","\n"," test_case \\\n","0 SOCCER - JABAN GET LUCKY WIN , CHINA IN SURPRI... \n","1 Nadim Ladkl \n","2 AL-AIN , United Atab Emirates 1996-12-06 \n","3 Japan began the defence of their Asian Cup tit... \n","4 But China saw their luck desert them in the se... \n",".. ... \n","447 portuguesa 1 atletico mineiro 0 \n","448 cricket - lara endures another miserable day . \n","449 robert galvin \n","450 melbourne 1996-12-06 \n","451 australia gave brian lara another reason to be... \n","\n"," expected_result \\\n","0 japan: LOC, china: LOC \n","1 nadim ladki: PER \n","2 al-ain: LOC, united arab emirates: LOC \n","3 japan: LOC, asian cup: MISC, syria: LOC \n","4 china: LOC, uzbekistan: LOC \n",".. ... \n","447 portuguesa: ORG, atletico: ORG, mineiro: ORG \n","448 lara: PER \n","449 robert galvin: PER \n","450 melbourne: LOC \n","451 australia: LOC, brian lara: PER, west: LOC \n","\n"," actual_result pass \n","0 jaban: PER, china: LOC False \n","1 nadim ladkl: PER True \n","2 al-ain: LOC, united atab emirates: LOC True \n","3 japan: LOC, asian cup: MISC, syria: LOC, champ... True \n","4 china: LOC, uzbekistan: LOC True \n",".. ... ... \n","447 portuguesa: ORG, atletico: ORG, mineiro: ORG True \n","448 lara: PER True \n","449 robert galvin: PER True \n","450 melbourne: LOC True \n","451 australia: LOC, brian lara: PER, west: LOC True \n","\n","[452 rows x 7 columns]"]},"execution_count":12,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"markdown","metadata":{"id":"57lqGecA9UXG"},"source":["This method returns the generated results in the form of a pandas dataframe, which provides a convenient and easy-to-use format for working with the test results. You can use this method to quickly identify the test cases that failed and to determine where fixes are needed."]},{"cell_type":"markdown","metadata":{"id":"jPvPCr_S9Zb8"},"source":["#### Report of the tests"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"executionInfo":{"elapsed":43,"status":"ok","timestamp":1692343088822,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"gp57HcF9yxi7","outputId":"b29fc543-331d-4b7e-c599-1e23b2cd6982"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo5816874%73%True
1robustnesslowercase0226100%65%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate minimum_pass_rate \\\n","0 robustness add_typo 58 168 74% 73% \n","1 robustness lowercase 0 226 100% 65% \n","\n"," pass \n","0 True \n","1 True "]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]},{"cell_type":"markdown","metadata":{"id":"7rpJ3QbPinkT"},"source":["It summarizes the results giving information about pass and fail counts and overall test pass/fail flag."]},{"cell_type":"markdown","metadata":{"id":"3g-s1Gikv65h"},"source":["#### Step 3: Augment CoNLL Training Set Based on Robustness Test Results"]},{"cell_type":"markdown","metadata":{"id":"JqMbXhF11rmX"},"source":["Templatic Augmentation is a technique that allows you to generate new training data by applying a set of predefined templates to the original training data. The templates are designed to introduce noise into the training data in a way that simulates real-world conditions. The augmentation process is controlled by a configuration file that specifies the augmentation templates to be used and the proportion of the training data to be augmented. The augmentation process is performed by the augment() method of the **Harness** class.\n","\n","**Augumentation with templates**\n","\n","Templatic augmentation is controlled by templates to be used with training data to be augmented. The augmentation process is performed by the augment() method of the **Harness** class.\n","\n","```\n","templates = [\"The {ORG} company is located in {LOC}\", \"The {ORG} company is located in {LOC} and is owned by {PER}\"]\n","\n","```\n"]},{"cell_type":"markdown","metadata":{"id":"PI75iT-F1rmX"},"source":["The `.augment()` function takes the following parameters:\n","\n","- `training_data` (dict): (Required) Specifies the source of the original training data. It should be a dictionary containing the necessary information about the dataset.\n","- `save_data_path` (str): (Required) Name of the file to store the augmented data. The augmented dataset will be saved in this file.\n","- `templates` (list): List of templates(string) or conll file to be used for augmentation."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":7166,"status":"ok","timestamp":1692343095954,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"EBTz4Fqev7xX","outputId":"5828a60c-04f6-4018-e4e9-ff79b43558a5"},"outputs":[{"data":{"text/plain":[]},"execution_count":14,"metadata":{},"output_type":"execute_result"}],"source":["data_kwargs = {\n"," \"data_source\" : \"conll03.conll\",\n"," }\n","\n","harness.augment(\n"," training_data=data_kwargs,\n"," save_data_path='augmented_conll03.conll',\n"," templates=[\"The {ORG} company is located in {LOC}\", \"The {ORG} company is located in {LOC} and is owned by {PER}\"],\n"," )"]},{"cell_type":"markdown","metadata":{"id":"O2HL6Gip0ST0"},"source":["Essentially it applies perturbations to the input data based on the recommendations from the harness reports. Then this augmented_dataset is used to retrain the original model so as to make the model more robust and improve its performance."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":35,"status":"ok","timestamp":1692343095957,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"tKOgWXL145WR","outputId":"1a739981-5444-48a8-8832-c24c1b1511c2"},"outputs":[{"name":"stdout","output_type":"stream","text":["The -X- -X- O\n","LG -X- -X- B-ORG\n","company -X- -X- O\n","is -X- -X- O\n","located -X- -X- O\n","in -X- -X- O\n","Iraq -X- -X- B-LOC\n","\n","The -X- -X- O\n","Charlton -X- -X- B-ORG\n","company -X- -X- O\n","is -X- -X- O\n","located -X- -X- O\n","in -X- -X- O\n","Afghanistan -X- -X- B-LOC\n","\n","The -X- -X- O\n","Dow -X- -X- B-ORG\n","Chemical -X- -X- I-ORG\n","Co -X- -X- I-ORG\n"]}],"source":["!head -n 20 augmented_conll03.conll"]},{"cell_type":"markdown","metadata":{"id":"z4aCF0kYwL4w"},"source":["#### Step 4: Train New NER Model on Augmented CoNLL"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":171669,"status":"ok","timestamp":1692343267610,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"WvRFmf3PGz3k","outputId":"a09ac6ea-7eb3-4c98-c839-f0925cdde057"},"outputs":[{"name":"stdout","output_type":"stream","text":["Warning::Spark Session already created, some configs may not take.\n","Warning::Spark Session already created, some configs may not take.\n","small_bert_L2_128 download started this may take some time.\n","Approximate size to download 16.1 MB\n","[OK!]\n"]}],"source":["augmented_ner_model = nlp.load('bert train.ner').fit(dataset_path= \"augmented_conll03.conll\")"]},{"cell_type":"markdown","metadata":{"id":"QK8o7XaI_ZAf"},"source":["#### Load saved test configurations, data"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":20448,"status":"ok","timestamp":1692343287998,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"UpaSjj05_fPd","outputId":"cec4e7a9-a81e-46ac-f5b9-81df3991e012"},"outputs":[{"name":"stdout","output_type":"stream","text":["Test Configuration : \n"," {\n"," \"tests\": {\n"," \"defaults\": {\n"," \"min_pass_rate\": 0.65\n"," },\n"," \"robustness\": {\n"," \"add_typo\": {\n"," \"min_pass_rate\": 0.73\n"," },\n"," \"lowercase\": {\n"," \"min_pass_rate\": 0.65\n"," }\n"," }\n"," }\n","}\n"]},{"name":"stderr","output_type":"stream","text":["Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 506.68it/s]\n"]}],"source":["harness = Harness.load(\"saved_test_configurations\",model=augmented_ner_model, task=\"ner\")"]},{"cell_type":"markdown","metadata":{"id":"9aif5bl_G0GZ"},"source":["#### Step 5: Test New NER Model Robustness"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":70937,"status":"ok","timestamp":1692343358875,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"StrOVtMoAQpf","outputId":"2b264ad3-ce80-458e-91dc-8f13672fe95f"},"outputs":[{"name":"stderr","output_type":"stream","text":["Running testcases... : 100%|██████████| 452/452 [01:10<00:00, 6.42it/s]\n"]},{"data":{"text/plain":[]},"execution_count":18,"metadata":{},"output_type":"execute_result"}],"source":["harness.run()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":562},"executionInfo":{"elapsed":82,"status":"ok","timestamp":1692343358877,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"znh2xqQmAWHf","outputId":"513f8838-2ba6-4cb1-adf8-20f19afea37b"},"outputs":[{"data":{"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_typeoriginaltest_caseexpected_resultactual_resultpass
0robustnessadd_typoSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURYRI...soccer - japan get lucky win , china in surpri...soccer - japan get lucky win , china in suryri...True
1robustnessadd_typoNadim LadkiNadin Ladkinadim ladki: ORGnadin ladki: ORGTrue
2robustnessadd_typoAL-AIN , United Arab Emirates 1996-12-06AL-AIN , United Arab Rmirates 1996-12-06al-ain: PER, , united arab emirates 1996-12-06...al-ain , united arab rmirates 1996-12-06: ORGFalse
3robustnessadd_typoJapan began the defence of their Asian Cup tit...Japan began the defence of their Asian Cyp tit...japan began: ORG, defence of their asian cup t...japan began: ORG, defence of their asian cyp t...True
4robustnessadd_typoBut China saw their luck desert them in the se...But China saw their luck desert them in the se...but china saw their luck desert them in the se...but china saw their luck desert them in the se...True
........................
447robustnesslowercasePortuguesa 1 Atletico Mineiro 0portuguesa 1 atletico mineiro 0portuguesa 1 atletico mineiro 0: ORGportuguesa 1 atletico mineiro 0: ORGTrue
448robustnesslowercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .cricket - lara endures another miserable day .cricket - lara endures another miserable day: ORGcricket - lara endures another miserable day: ORGTrue
449robustnesslowercaseRobert Galvinrobert galvinrobert galvin: PERrobert galvin: PERTrue
450robustnesslowercaseMELBOURNE 1996-12-06melbourne 1996-12-06melbourne: PER, 1996-12-06: ORGmelbourne: PER, 1996-12-06: ORGTrue
451robustnesslowercaseAustralia gave Brian Lara another reason to be...australia gave brian lara another reason to be...australia gave brian lara another reason to be...australia gave brian lara another reason to be...True
\n","

452 rows × 7 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type original \\\n","0 robustness add_typo SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n","1 robustness add_typo Nadim Ladki \n","2 robustness add_typo AL-AIN , United Arab Emirates 1996-12-06 \n","3 robustness add_typo Japan began the defence of their Asian Cup tit... \n","4 robustness add_typo But China saw their luck desert them in the se... \n",".. ... ... ... \n","447 robustness lowercase Portuguesa 1 Atletico Mineiro 0 \n","448 robustness lowercase CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n","449 robustness lowercase Robert Galvin \n","450 robustness lowercase MELBOURNE 1996-12-06 \n","451 robustness lowercase Australia gave Brian Lara another reason to be... \n","\n"," test_case \\\n","0 SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURYRI... \n","1 Nadin Ladki \n","2 AL-AIN , United Arab Rmirates 1996-12-06 \n","3 Japan began the defence of their Asian Cyp tit... \n","4 But China saw their luck desert them in the se... \n",".. ... \n","447 portuguesa 1 atletico mineiro 0 \n","448 cricket - lara endures another miserable day . \n","449 robert galvin \n","450 melbourne 1996-12-06 \n","451 australia gave brian lara another reason to be... \n","\n"," expected_result \\\n","0 soccer - japan get lucky win , china in surpri... \n","1 nadim ladki: ORG \n","2 al-ain: PER, , united arab emirates 1996-12-06... \n","3 japan began: ORG, defence of their asian cup t... \n","4 but china saw their luck desert them in the se... \n",".. ... \n","447 portuguesa 1 atletico mineiro 0: ORG \n","448 cricket - lara endures another miserable day: ORG \n","449 robert galvin: PER \n","450 melbourne: PER, 1996-12-06: ORG \n","451 australia gave brian lara another reason to be... \n","\n"," actual_result pass \n","0 soccer - japan get lucky win , china in suryri... True \n","1 nadin ladki: ORG True \n","2 al-ain , united arab rmirates 1996-12-06: ORG False \n","3 japan began: ORG, defence of their asian cyp t... True \n","4 but china saw their luck desert them in the se... True \n",".. ... ... \n","447 portuguesa 1 atletico mineiro 0: ORG True \n","448 cricket - lara endures another miserable day: ORG True \n","449 robert galvin: PER True \n","450 melbourne: PER, 1996-12-06: ORG True \n","451 australia gave brian lara another reason to be... True \n","\n","[452 rows x 7 columns]"]},"execution_count":19,"metadata":{},"output_type":"execute_result"}],"source":["harness.generated_results()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"executionInfo":{"elapsed":31,"status":"ok","timestamp":1692343358879,"user":{"displayName":"Prikshit sharma","userId":"07819241395213139913"},"user_tz":-330},"id":"JSqkrBOZ-TeG","outputId":"24a29834-ca8f-4e4d-b976-ad86f264e485"},"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","
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo5716975%73%True
1robustnesslowercase0226100%65%True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" category test_type fail_count pass_count pass_rate minimum_pass_rate \\\n","0 robustness add_typo 57 169 75% 73% \n","1 robustness lowercase 0 226 100% 65% \n","\n"," pass \n","0 True \n","1 True "]},"execution_count":20,"metadata":{},"output_type":"execute_result"}],"source":["harness.report()"]}],"metadata":{"colab":{"machine_shape":"hm","provenance":[]},"gpuClass":"standard","kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.8.9"}},"nbformat":4,"nbformat_minor":0} +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "e7PsSmy9sCoR" + }, + "source": [ + "![image.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MhgkQYQiEvZt" + }, + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/langtest/blob/main/demo/tutorials/misc/Templatic_Augmentation_Notebook.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WJJzt3RWhEc6" + }, + "source": [ + "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity and fairness test categories.\n", + "\n", + "Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "26qXWhCYhHAt" + }, + "source": [ + "# Getting started with LangTest on John Snow Labs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "oGIyE43uhTxH", + "outputId": "b6bc6b0e-7206-4685-a73f-5e4f3406c280" + }, + "outputs": [], + "source": [ + "!pip install \"langtest[johnsnowlabs,openai]\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yR6kjOaiheKN" + }, + "source": [ + "# Harness and its Parameters\n", + "\n", + "The Harness class is a testing class for Natural Language Processing (NLP) models. It evaluates the performance of a NLP model on a given task using test data and generates a report with test results.Harness can be imported from the LangTest library in the following way." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "lTzSJpMlhgq5" + }, + "outputs": [], + "source": [ + "#Import Harness from the LangTest library\n", + "from langtest import Harness" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sBcZjwJBhkOw" + }, + "source": [ + "It imports the Harness class from within the module, that is designed to provide a blueprint or framework for conducting NLP testing, and that instances of the Harness class can be customized or configured for different testing scenarios or environments.\n", + "\n", + "Here is a list of the different parameters that can be passed to the Harness function:\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "| Parameter | Description |\n", + "| - | - |\n", + "| **task** | Task for which the model is to be evaluated (text-classification or ner) |\n", + "| **model** | Specifies the model(s) to be evaluated. This parameter can be provided as either a dictionary or a list of dictionaries. Each dictionary should contain the following keys:
  • model (mandatory): \tPipelineModel or path to a saved model or pretrained pipeline/model from hub.
  • hub (mandatory): Hub (library) to use in back-end for loading model from public models hub or from path
|\n", + "| **data** | The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys:
  • data_source (mandatory): The source of the data.
  • subset (optional): The subset of the data.
  • feature_column (optional): The column containing the features.
  • target_column (optional): The column containing the target labels.
  • split (optional): The data split to be used.
  • source (optional): Set to 'huggingface' when loading Hugging Face dataset.
|\n", + "| **config** | Configuration for the tests to be performed, specified in the form of a YAML file. |\n", + "\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JFhJ9CcbsKqN" + }, + "source": [ + "# Real-World Project Workflows\n", + "\n", + "In this section, we dive into complete workflows for using the model testing module in real-world project settings." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UtxtE6Y0r4CJ" + }, + "source": [ + "## Robustness Testing\n", + "\n", + "In this example, we will be testing a model's robustness. We will be applying 2 tests: add_typo and lowercase. The real-world project workflow of the model robustness testing and fixing in this case goes as follows:\n", + "\n", + "1. Train NER model on original CoNLL training set\n", + "\n", + "2. Test NER model robustness on CoNLL test set\n", + "\n", + "3. Augment CoNLL training set based on test results\n", + "\n", + "4. Train new NER model on augmented CoNLL training set\n", + "\n", + "5. Test new NER model robustness on the CoNLL test set from step 2\n", + "\n", + "6. Compare robustness of new NER model against original NER model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "I21Jmq79jgC6" + }, + "source": [ + "#### Load Train and Test CoNLL" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6uW22VqJje8E", + "outputId": "0870162e-f3be-41b5-8764-ac464d7aa6a9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2023-11-30 13:43:59-- https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.109.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 50519 (49K) [text/plain]\n", + "Saving to: ‘sample.conll.1’\n", + "\n", + "sample.conll.1 100%[===================>] 49.33K --.-KB/s in 0.04s \n", + "\n", + "2023-11-30 13:44:00 (1.10 MB/s) - ‘sample.conll.1’ saved [50519/50519]\n", + "\n", + "--2023-11-30 13:44:00-- https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/demo/data/conll03.conll\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.108.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 827443 (808K) [text/plain]\n", + "Saving to: ‘conll03.conll.1’\n", + "\n", + "conll03.conll.1 100%[===================>] 808.05K 4.30MB/s in 0.2s \n", + "\n", + "2023-11-30 13:44:02 (4.30 MB/s) - ‘conll03.conll.1’ saved [827443/827443]\n", + "\n" + ] + } + ], + "source": [ + "# Load test CoNLL\n", + "!wget https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/langtest/data/conll/sample.conll\n", + "\n", + "# Load train CoNLL\n", + "!wget https://raw.githubusercontent.com/JohnSnowLabs/langtest/main/demo/data/conll03.conll" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MNtH_HOUt_PL" + }, + "source": [ + "#### Step 1: Train NER Model" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "jRnEmCfPhsZs" + }, + "outputs": [], + "source": [ + "from johnsnowlabs import nlp" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bHXeP18sGp-g", + "outputId": "17793e40-704e-4f89-fa14-965e77288db3" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning::Spark Session already created, some configs may not take.\n", + "Warning::Spark Session already created, some configs may not take.\n", + "small_bert_L2_128 download started this may take some time.\n", + "Approximate size to download 16.1 MB\n", + "[OK!]\n" + ] + } + ], + "source": [ + "ner_model = nlp.load('bert train.ner').fit(dataset_path=\"/content/conll03.conll\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kKgXC7cvuyar" + }, + "source": [ + "#### Step 2: Test NER Model Robustness " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RVk9NWn7u-Lm", + "outputId": "54d635c8-528a-424a-9abf-abc65ffc4ff3" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 1.0\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"american_to_british\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " },\n", + " \"accuracy\": {\n", + " \"min_micro_f1_score\": {\n", + " \"min_score\": 0.7\n", + " }\n", + " },\n", + " \"bias\": {\n", + " \"replace_to_female_pronouns\": {\n", + " \"min_pass_rate\": 0.7\n", + " },\n", + " \"replace_to_low_income_country\": {\n", + " \"min_pass_rate\": 0.7\n", + " }\n", + " },\n", + " \"fairness\": {\n", + " \"min_gender_f1_score\": {\n", + " \"min_score\": 0.6\n", + " }\n", + " },\n", + " \"representation\": {\n", + " \"min_label_representation_count\": {\n", + " \"min_count\": 50\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "harness = Harness(task=\"ner\", model={\"model\": ner_model, \"hub\": \"johnsnowlabs\"}, data={\"data_source\":\"sample.conll\"})" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mynkAUwZyuFN", + "outputId": "6ebb9251-5e34-409e-9604-09cadfd11e65" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'tests': {'defaults': {'min_pass_rate': 0.65},\n", + " 'robustness': {'add_typo': {'min_pass_rate': 0.73},\n", + " 'lowercase': {'min_pass_rate': 0.65}}}}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.configure({\n", + " 'tests': {\n", + " 'defaults': {'min_pass_rate': 0.65},\n", + "\n", + " 'robustness': {\n", + " 'add_typo': {'min_pass_rate': 0.73},\n", + " 'lowercase':{'min_pass_rate': 0.65},\n", + " }\n", + " }\n", + "})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZPU46A7WigFr" + }, + "source": [ + "Here we have configured the harness to perform two robustness tests (add_typo and lowercase) and defined the minimum pass rate for each test." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MomLlmTwjpzU" + }, + "source": [ + "\n", + "#### Generating the test cases.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "UiUNzTwF89ye", + "outputId": "3d577348-9d1b-4152-a95a-23c8e9ae5633" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 5184.55it/s]\n", + "WARNING:root:[W009] Removing samples where no transformation has been applied:\n", + "[W010] - Test 'add_typo': 15 samples removed out of 226\n", + "[W010] - Test 'lowercase': 3 samples removed out of 226\n", + "\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.generate()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UiMIF-o49Bg_" + }, + "source": [ + "harness.generate() method automatically generates the test cases (based on the provided configuration)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 423 + }, + "id": "p0tTwFfc891k", + "outputId": "882c68c1-a913-4f1a-9e71-dc3bcdba0d77" + }, + "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", + "
categorytest_typeoriginaltest_case
0robustnessadd_typoSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...SOCCER - JAPAN GET LUCOY WIN , CHINA IN SURPRI...
1robustnessadd_typoNadim LadkiNadim Ladoi
2robustnessadd_typoAL-AIN , United Arab Emirates 1996-12-06AL-AIN , Unitev Arab Emirates 1996-12-06
3robustnessadd_typoJapan began the defence of their Asian Cup tit...Japan began the defence of their Asian Cup tit...
4robustnessadd_typoBut China saw their luck desert them in the se...But China saw their luck desert them in the se...
...............
429robustnesslowercasePortuguesa 1 Atletico Mineiro 0portuguesa 1 atletico mineiro 0
430robustnesslowercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .cricket - lara endures another miserable day .
431robustnesslowercaseRobert Galvinrobert galvin
432robustnesslowercaseMELBOURNE 1996-12-06melbourne 1996-12-06
433robustnesslowercaseAustralia gave Brian Lara another reason to be...australia gave brian lara another reason to be...
\n", + "

434 rows × 4 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " category test_type original \\\n", + "0 robustness add_typo SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n", + "1 robustness add_typo Nadim Ladki \n", + "2 robustness add_typo AL-AIN , United Arab Emirates 1996-12-06 \n", + "3 robustness add_typo Japan began the defence of their Asian Cup tit... \n", + "4 robustness add_typo But China saw their luck desert them in the se... \n", + ".. ... ... ... \n", + "429 robustness lowercase Portuguesa 1 Atletico Mineiro 0 \n", + "430 robustness lowercase CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n", + "431 robustness lowercase Robert Galvin \n", + "432 robustness lowercase MELBOURNE 1996-12-06 \n", + "433 robustness lowercase Australia gave Brian Lara another reason to be... \n", + "\n", + " test_case \n", + "0 SOCCER - JAPAN GET LUCOY WIN , CHINA IN SURPRI... \n", + "1 Nadim Ladoi \n", + "2 AL-AIN , Unitev Arab Emirates 1996-12-06 \n", + "3 Japan began the defence of their Asian Cup tit... \n", + "4 But China saw their luck desert them in the se... \n", + ".. ... \n", + "429 portuguesa 1 atletico mineiro 0 \n", + "430 cricket - lara endures another miserable day . \n", + "431 robert galvin \n", + "432 melbourne 1996-12-06 \n", + "433 australia gave brian lara another reason to be... \n", + "\n", + "[434 rows x 4 columns]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.testcases()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nRgq7e-g9Gev" + }, + "source": [ + "harness.testcases() method gives the produced test cases in form of a pandas data frame." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IaPBjl_R9slh" + }, + "source": [ + "#### Saving test configurations, data, test cases" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "id": "ba0MYutC96CN" + }, + "outputs": [], + "source": [ + "harness.save(\"saved_test_configurations\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "groBqKuD9I34" + }, + "source": [ + "#### Running the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CHQHRbQb9EDi", + "outputId": "7c813f3c-8ce7-4795-d603-9dba712f1aaa" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 434/434 [00:51<00:00, 8.35it/s]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "71zHGe2q9O6G" + }, + "source": [ + "Called after harness.generate() and is to used to run all the tests. Returns a pass/fail flag for each test." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 510 + }, + "id": "keBNodfJ894u", + "outputId": "c0bcee1a-8e76-462d-a883-2639bdc69df9" + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginaltest_caseexpected_resultactual_resultpass
0robustnessadd_typoSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...SOCCER - JAPAN GET LUCOY WIN , CHINA IN SURPRI...japan: LOC, lucky: LOC, china: LOCjapan: LOC, lucoy: PER, china: LOCFalse
1robustnessadd_typoNadim LadkiNadim Ladoinadim ladki: PERnadim ladoi: PERTrue
2robustnessadd_typoAL-AIN , United Arab Emirates 1996-12-06AL-AIN , Unitev Arab Emirates 1996-12-06al-ain: LOC, united arab emirates: LOCal-ain: LOC, unitev: PER, arab emirates: LOCFalse
3robustnessadd_typoJapan began the defence of their Asian Cup tit...Japan began the defence of their Asian Cup tit...japan: LOC, asian cup: MISC, syria: LOCjapan: LOC, asian cup: MISC, lucuy: PER, syria...True
4robustnessadd_typoBut China saw their luck desert them in the se...But China saw their luck desert them in the se...china: LOC, uzbekistan: LOCchina: LOC, yzbekistan: LOCTrue
........................
429robustnesslowercasePortuguesa 1 Atletico Mineiro 0portuguesa 1 atletico mineiro 0portuguesa: ORG, atletico mineiro: ORGportuguesa: ORG, atletico mineiro: ORGTrue
430robustnesslowercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .cricket - lara endures another miserable day .lara: PERlara: PERTrue
431robustnesslowercaseRobert Galvinrobert galvinrobert galvin: PERrobert galvin: PERTrue
432robustnesslowercaseMELBOURNE 1996-12-06melbourne 1996-12-06melbourne: LOCmelbourne: LOCTrue
433robustnesslowercaseAustralia gave Brian Lara another reason to be...australia gave brian lara another reason to be...australia: LOC, brian lara: PER, west indies: ...australia: LOC, brian lara: PER, west indies: ...True
\n", + "

434 rows × 7 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " category test_type original \\\n", + "0 robustness add_typo SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n", + "1 robustness add_typo Nadim Ladki \n", + "2 robustness add_typo AL-AIN , United Arab Emirates 1996-12-06 \n", + "3 robustness add_typo Japan began the defence of their Asian Cup tit... \n", + "4 robustness add_typo But China saw their luck desert them in the se... \n", + ".. ... ... ... \n", + "429 robustness lowercase Portuguesa 1 Atletico Mineiro 0 \n", + "430 robustness lowercase CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n", + "431 robustness lowercase Robert Galvin \n", + "432 robustness lowercase MELBOURNE 1996-12-06 \n", + "433 robustness lowercase Australia gave Brian Lara another reason to be... \n", + "\n", + " test_case \\\n", + "0 SOCCER - JAPAN GET LUCOY WIN , CHINA IN SURPRI... \n", + "1 Nadim Ladoi \n", + "2 AL-AIN , Unitev Arab Emirates 1996-12-06 \n", + "3 Japan began the defence of their Asian Cup tit... \n", + "4 But China saw their luck desert them in the se... \n", + ".. ... \n", + "429 portuguesa 1 atletico mineiro 0 \n", + "430 cricket - lara endures another miserable day . \n", + "431 robert galvin \n", + "432 melbourne 1996-12-06 \n", + "433 australia gave brian lara another reason to be... \n", + "\n", + " expected_result \\\n", + "0 japan: LOC, lucky: LOC, china: LOC \n", + "1 nadim ladki: PER \n", + "2 al-ain: LOC, united arab emirates: LOC \n", + "3 japan: LOC, asian cup: MISC, syria: LOC \n", + "4 china: LOC, uzbekistan: LOC \n", + ".. ... \n", + "429 portuguesa: ORG, atletico mineiro: ORG \n", + "430 lara: PER \n", + "431 robert galvin: PER \n", + "432 melbourne: LOC \n", + "433 australia: LOC, brian lara: PER, west indies: ... \n", + "\n", + " actual_result pass \n", + "0 japan: LOC, lucoy: PER, china: LOC False \n", + "1 nadim ladoi: PER True \n", + "2 al-ain: LOC, unitev: PER, arab emirates: LOC False \n", + "3 japan: LOC, asian cup: MISC, lucuy: PER, syria... True \n", + "4 china: LOC, yzbekistan: LOC True \n", + ".. ... ... \n", + "429 portuguesa: ORG, atletico mineiro: ORG True \n", + "430 lara: PER True \n", + "431 robert galvin: PER True \n", + "432 melbourne: LOC True \n", + "433 australia: LOC, brian lara: PER, west indies: ... True \n", + "\n", + "[434 rows x 7 columns]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.generated_results()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "57lqGecA9UXG" + }, + "source": [ + "This method returns the generated results in the form of a pandas dataframe, which provides a convenient and easy-to-use format for working with the test results. You can use this method to quickly identify the test cases that failed and to determine where fixes are needed." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jPvPCr_S9Zb8" + }, + "source": [ + "#### Report of the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 112 + }, + "id": "gp57HcF9yxi7", + "outputId": "1f4a3c0d-d4e2-42a1-9673-07c885657eec" + }, + "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", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo5615573%73%True
1robustnesslowercase0223100%65%True
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate minimum_pass_rate \\\n", + "0 robustness add_typo 56 155 73% 73% \n", + "1 robustness lowercase 0 223 100% 65% \n", + "\n", + " pass \n", + "0 True \n", + "1 True " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.report()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7rpJ3QbPinkT" + }, + "source": [ + "It summarizes the results giving information about pass and fail counts and overall test pass/fail flag." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3g-s1Gikv65h" + }, + "source": [ + "#### Step 3: Augment CoNLL Training Set Based on Robustness Test Results" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JqMbXhF11rmX" + }, + "source": [ + "Templatic Augmentation is a technique that allows you to generate new training data by applying a set of predefined templates to the original training data. The templates are designed to introduce noise into the training data in a way that simulates real-world conditions. The augmentation process is controlled by a configuration file that specifies the augmentation templates to be used and the proportion of the training data to be augmented. The augmentation process is performed by the augment() method of the **Harness** class.\n", + "\n", + "**Augumentation with templates**\n", + "\n", + "Templatic augmentation is controlled by templates to be used with training data to be augmented. The augmentation process is performed by the augment() method of the **Harness** class.\n", + "\n", + "```\n", + "templates = [\"The {ORG} company is located in {LOC}\"]\n", + "\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PI75iT-F1rmX" + }, + "source": [ + "The `.augment()` function takes the following parameters:\n", + "\n", + "- `training_data` (dict): (Required) Specifies the source of the original training data. It should be a dictionary containing the necessary information about the dataset.\n", + "- `save_data_path` (str): (Required) Name of the file to store the augmented data. The augmented dataset will be saved in this file.\n", + "- `templates` (list): List of templates(string) or conll file to be used for augmentation.\n", + "- `generate_templates` (bool): if set to True, generates sample templates from given ones.\n", + "- `show_templates` (bool): if set to True, displays the used templates." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "EBTz4Fqev7xX", + "outputId": "47a61a3e-580e-4e27-c5ac-bd2d3d4b0b6c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The {ORG} company is located in {LOC}\n", + "'The {ORG} organization is based in {LOC}',\n", + " '{ORG} is headquartered in {LOC}',\n", + " '{LOC} is the home of {ORG}',\n", + " '{ORG} is situated in {LOC}',\n", + " '{LOC} is where {ORG} is located',\n", + " '{ORG} is found in {LOC}',\n", + " '{LOC} is the location of {ORG}',\n", + " '{ORG} is based in {LOC}',\n", + " '{LOC} is the home of the {ORG} company',\n", + " '{ORG} is situated in the city of {LOC}'\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_kwargs = {\n", + " \"data_source\" : \"conll03.conll\",\n", + " }\n", + "\n", + "import openai\n", + "openai.api_key = \"YOUR OPENAI KEY\"\n", + "harness.augment(\n", + " training_data=data_kwargs,\n", + " save_data_path='augmented_conll03.conll',\n", + " templates=[\"The {ORG} company is located in {LOC}\"],\n", + " generate_templates = True,\n", + " show_templates = True,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O2HL6Gip0ST0" + }, + "source": [ + "Essentially it applies perturbations to the input data based on the recommendations from the harness reports. Then this augmented_dataset is used to retrain the original model so as to make the model more robust and improve its performance." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tKOgWXL145WR", + "outputId": "5e5aff93-254d-48e5-c27a-9336177de64f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "The -X- -X- O\n", + "Dinamo -X- -X- B-ORG\n", + "company -X- -X- O\n", + "is -X- -X- O\n", + "located -X- -X- O\n", + "in -X- -X- O\n", + "Yugoslavia -X- -X- B-LOC\n", + "\n", + "The -X- -X- O\n", + "Red -X- -X- B-ORG\n", + "Star -X- -X- I-ORG\n", + "company -X- -X- O\n", + "is -X- -X- O\n", + "located -X- -X- O\n", + "in -X- -X- O\n", + "Ghana -X- -X- B-LOC\n", + "\n", + "The -X- -X- O\n" + ] + } + ], + "source": [ + "!head -n 20 augmented_conll03.conll" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "z4aCF0kYwL4w" + }, + "source": [ + "#### Step 4: Train New NER Model on Augmented CoNLL" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WvRFmf3PGz3k", + "outputId": "6d4ffed5-2951-4544-fbf7-a9c4127ad905" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning::Spark Session already created, some configs may not take.\n", + "Warning::Spark Session already created, some configs may not take.\n", + "small_bert_L2_128 download started this may take some time.\n", + "Approximate size to download 16.1 MB\n", + "[OK!]\n" + ] + } + ], + "source": [ + "augmented_ner_model = nlp.load('bert train.ner').fit(dataset_path= \"augmented_conll03.conll\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QK8o7XaI_ZAf" + }, + "source": [ + "#### Load saved test configurations, data" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "UpaSjj05_fPd", + "outputId": "83f5a3bf-5f1d-4119-d359-dfc75cb792c8" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Configuration : \n", + " {\n", + " \"tests\": {\n", + " \"defaults\": {\n", + " \"min_pass_rate\": 0.65\n", + " },\n", + " \"robustness\": {\n", + " \"add_typo\": {\n", + " \"min_pass_rate\": 0.73\n", + " },\n", + " \"lowercase\": {\n", + " \"min_pass_rate\": 0.65\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Generating testcases...: 100%|██████████| 1/1 [00:00<00:00, 5127.51it/s]\n", + "WARNING:root:[W009] Removing samples where no transformation has been applied:\n", + "[W010] - Test 'add_typo': 11 samples removed out of 226\n", + "[W010] - Test 'lowercase': 3 samples removed out of 226\n", + "\n" + ] + } + ], + "source": [ + "harness = Harness.load(\"saved_test_configurations\",model={\"model\":augmented_ner_model,\"hub\":\"johnsnowlabs\"}, task=\"ner\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9aif5bl_G0GZ" + }, + "source": [ + "#### Step 5: Test New NER Model Robustness" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "StrOVtMoAQpf", + "outputId": "77ffb7ff-9413-4d38-d1f8-fecf0bd68852" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Running testcases... : 100%|██████████| 438/438 [00:50<00:00, 8.63it/s]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 527 + }, + "id": "znh2xqQmAWHf", + "outputId": "32c10a0f-6737-4dad-8d58-d47bde83bb1a" + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytest_typeoriginaltest_caseexpected_resultactual_resultpass
0robustnessadd_typoSOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI...SOCCER - JAPAN GET LUCKY WIN , CHINA IN WURPRI...soccer - japan get lucky win , china in surpri...soccer - japan get lucky win , china in wurpri...True
1robustnessadd_typoNadim LadkiNadum Ladkinadim ladki: ORGnadum ladki: ORGTrue
2robustnessadd_typoAL-AIN , United Arab Emirates 1996-12-06AL-AIG , United Arab Emirates 1996-12-06al-ain , united arab: ORG, emirates: LOC, 1996...al-aig , united arab: ORG, emirates: LOC, 1996...True
3robustnessadd_typoJapan began the defence of their Asian Cup tit...Japan began the defence of their Asian Cup tit...japan began the defence of their asian cup tit...japan began the defence of their asian cup tit...True
4robustnessadd_typoBut China saw their luck desert them in the se...But China saw their luck desert them in the se...but china saw their luck desert them in the se...but china saw their luck desert them in the se...True
........................
433robustnesslowercasePortuguesa 1 Atletico Mineiro 0portuguesa 1 atletico mineiro 0portuguesa 1 atletico mineiro 0: ORGportuguesa 1 atletico mineiro 0: ORGTrue
434robustnesslowercaseCRICKET - LARA ENDURES ANOTHER MISERABLE DAY .cricket - lara endures another miserable day .cricket - lara endures another miserable: ORGcricket - lara endures another miserable: ORGTrue
435robustnesslowercaseRobert Galvinrobert galvinrobert galvin: ORGrobert galvin: ORGTrue
436robustnesslowercaseMELBOURNE 1996-12-06melbourne 1996-12-06melbourne: LOC, 1996-12-06: ORGmelbourne: LOC, 1996-12-06: ORGTrue
437robustnesslowercaseAustralia gave Brian Lara another reason to be...australia gave brian lara another reason to be...australia gave brian lara another reason to be...australia gave brian lara another reason to be...True
\n", + "

438 rows × 7 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " category test_type original \\\n", + "0 robustness add_typo SOCCER - JAPAN GET LUCKY WIN , CHINA IN SURPRI... \n", + "1 robustness add_typo Nadim Ladki \n", + "2 robustness add_typo AL-AIN , United Arab Emirates 1996-12-06 \n", + "3 robustness add_typo Japan began the defence of their Asian Cup tit... \n", + "4 robustness add_typo But China saw their luck desert them in the se... \n", + ".. ... ... ... \n", + "433 robustness lowercase Portuguesa 1 Atletico Mineiro 0 \n", + "434 robustness lowercase CRICKET - LARA ENDURES ANOTHER MISERABLE DAY . \n", + "435 robustness lowercase Robert Galvin \n", + "436 robustness lowercase MELBOURNE 1996-12-06 \n", + "437 robustness lowercase Australia gave Brian Lara another reason to be... \n", + "\n", + " test_case \\\n", + "0 SOCCER - JAPAN GET LUCKY WIN , CHINA IN WURPRI... \n", + "1 Nadum Ladki \n", + "2 AL-AIG , United Arab Emirates 1996-12-06 \n", + "3 Japan began the defence of their Asian Cup tit... \n", + "4 But China saw their luck desert them in the se... \n", + ".. ... \n", + "433 portuguesa 1 atletico mineiro 0 \n", + "434 cricket - lara endures another miserable day . \n", + "435 robert galvin \n", + "436 melbourne 1996-12-06 \n", + "437 australia gave brian lara another reason to be... \n", + "\n", + " expected_result \\\n", + "0 soccer - japan get lucky win , china in surpri... \n", + "1 nadim ladki: ORG \n", + "2 al-ain , united arab: ORG, emirates: LOC, 1996... \n", + "3 japan began the defence of their asian cup tit... \n", + "4 but china saw their luck desert them in the se... \n", + ".. ... \n", + "433 portuguesa 1 atletico mineiro 0: ORG \n", + "434 cricket - lara endures another miserable: ORG \n", + "435 robert galvin: ORG \n", + "436 melbourne: LOC, 1996-12-06: ORG \n", + "437 australia gave brian lara another reason to be... \n", + "\n", + " actual_result pass \n", + "0 soccer - japan get lucky win , china in wurpri... True \n", + "1 nadum ladki: ORG True \n", + "2 al-aig , united arab: ORG, emirates: LOC, 1996... True \n", + "3 japan began the defence of their asian cup tit... True \n", + "4 but china saw their luck desert them in the se... True \n", + ".. ... ... \n", + "433 portuguesa 1 atletico mineiro 0: ORG True \n", + "434 cricket - lara endures another miserable: ORG True \n", + "435 robert galvin: ORG True \n", + "436 melbourne: LOC, 1996-12-06: ORG True \n", + "437 australia gave brian lara another reason to be... True \n", + "\n", + "[438 rows x 7 columns]" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.generated_results()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 112 + }, + "id": "JSqkrBOZ-TeG", + "outputId": "918b4337-af90-4385-bba5-37577b850665" + }, + "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", + "
categorytest_typefail_countpass_countpass_rateminimum_pass_ratepass
0robustnessadd_typo3917682%73%True
1robustnesslowercase0223100%65%True
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " category test_type fail_count pass_count pass_rate minimum_pass_rate \\\n", + "0 robustness add_typo 39 176 82% 73% \n", + "1 robustness lowercase 0 223 100% 65% \n", + "\n", + " pass \n", + "0 True \n", + "1 True " + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "harness.report()" + ] + } + ], + "metadata": { + "colab": { + "machine_shape": "hm", + "provenance": [] + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.8.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/demo/tutorials/test-specific-notebooks/Political_Demo.ipynb b/demo/tutorials/test-specific-notebooks/Political_Demo.ipynb index cff3d3aa2..3a7a86836 100644 --- a/demo/tutorials/test-specific-notebooks/Political_Demo.ipynb +++ b/demo/tutorials/test-specific-notebooks/Political_Demo.ipynb @@ -24,9 +24,14 @@ "id": "q3jD9Zow94v-" }, "source": [ - "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity and fairness test categories.\n", - "\n", - "Metrics are calculated by comparing the model's extractions in the original list of sentences against the extractions carried out in the noisy list of sentences. The original annotated labels are not used at any point, we are simply comparing the model against itself in a 2 settings." + "**LangTest** is an open-source python library designed to help developers deliver safe and effective Natural Language Processing (NLP) models. Whether you are using **John Snow Labs, Hugging Face, Spacy** models or **OpenAI, Cohere, AI21, Hugging Face Inference API and Azure-OpenAI** based LLMs, it has got you covered. You can test any Named Entity Recognition (NER), Text Classification model using the library. We also support testing LLMS for Question-Answering and Summarization tasks on benchmark datasets. The library supports 50+ out of the box tests. These tests fall into robustness, accuracy, bias, representation, toxicity and fairness test categories." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The political compass test is a self-assessment tool that helps individuals determine their political ideology. It is a unique test that measures political beliefs on two dimensions: economic and social. The test consists of a series of propositions, and the user is asked to indicate their level of agreement or disagreement with each one. The test results in a score that places the user on a grid, with the horizontal axis representing economic beliefs and the vertical axis representing social beliefs. Answers from the provided LLM are scored and position of the model on compass is determined using these scores." ] }, { @@ -1374,6 +1379,16 @@ "source": [ "We can finally call the report function to see a summary of the test. The models answers has multipliers (strongly agree = 1, agree = 0.5, strongly disagree = -1, disagree = -0.5). For each sample, the sentence's orientation and the multiplier is combined. Then the results are averaged for the two axes.\n", "\n", + "The Political Compass Test measures political beliefs on two dimensions: economic and social. The horizontal axis represents economic beliefs, while the vertical axis represents social beliefs. The four quadrants of the Political Compass are:\n", + "\n", + "1. **Left-Libertarian**: This quadrant is characterized by a belief in personal freedom and social equality, combined with a preference for decentralized economic decision-making. Left-libertarians tend to support policies that promote civil liberties, social justice, and environmental sustainability.\n", + "\n", + "2. **Right-Libertarian**: This quadrant is characterized by a belief in personal freedom and economic freedom, combined with a preference for decentralized political decision-making. Right-libertarians tend to support policies that promote individual rights, free markets, and limited government.\n", + "\n", + "3. **Left-Authoritarian**: This quadrant is characterized by a belief in social equality and centralized economic decision-making, combined with a preference for government intervention in personal matters. Left-authoritarians tend to support policies that promote economic equality, social welfare, and public ownership of resources.\n", + "\n", + "4. **Right-Authoritarian**: This quadrant is characterized by a belief in social hierarchy and centralized political and economic decision-making. Right-authoritarians tend to support policies that promote law and order, national security, and traditional values.\n", + "\n", "Report function produces the political compass plot as well as the summary dataframe." ] }, diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml index ecc02b217..4349dedc2 100644 --- a/docs/_data/navigation.yml +++ b/docs/_data/navigation.yml @@ -29,7 +29,7 @@ docs-menu: - title: One Liners url: /docs/pages/docs/one_liner - - title: Test Harness + - title: General Concepts url: /docs/pages/docs/harness children: - title: Harness @@ -56,6 +56,8 @@ docs-menu: url: /docs/pages/docs/report - title: MlFlow Tracking url: /docs/pages/docs/ml_flow + - title: LangTestCallback + url: /docs/pages/docs/hf-callback - title: Saving & Loading url: /docs/pages/docs/save @@ -86,23 +88,76 @@ docs-menu: url: /docs/pages/docs/contribute - title: Release Notes - url: /docs/pages/docs/langtest_versions/release_notes + url: /docs/pages/docs/langtest_versions/latest_release tutorials: - title: Test Specific Notebooks url: /docs/pages/tutorials/test_specific_notebooks + children: + - title: Accuracy + url: /docs/pages/tutorials/test_specific_notebooks/accuracy + - title: Representation + url: /docs/pages/tutorials/test_specific_notebooks/representation + - title: Bias + url: /docs/pages/tutorials/test_specific_notebooks/bias + - title: Robustness + url: /docs/pages/tutorials/test_specific_notebooks/robustness + - title: Fairness + url: /docs/pages/tutorials/test_specific_notebooks/fairness + - title: Performance + url: /docs/pages/tutorials/test_specific_notebooks/performance + - title: Translation + url: /docs/pages/tutorials/test_specific_notebooks/translation + - title: Stereotype + url: /docs/pages/tutorials/test_specific_notebooks/stereotype + - title: Stereoset + url: /docs/pages/tutorials/test_specific_notebooks/stereoset - title: LLM Testing Notebooks - url: /docs/pages/tutorials/LLM_Testing_Notebooks + url: /docs/pages/tutorials/LLM_testing_Notebooks + children: + - title: Question-Answering and Summarization + url: /docs/pages/tutorials/LLM_testing_Notebooks/QA_Sum + - title: Toxicity + url: /docs/pages/tutorials/LLM_testing_Notebooks/toxicity + - title: Clinical + url: /docs/pages/tutorials/LLM_testing_Notebooks/clinical + - title: Ideology + url: /docs/pages/tutorials/LLM_testing_Notebooks/ideology + - title: Disinformation + url: /docs/pages/tutorials/LLM_testing_Notebooks/disinformation + - title: Factuality + url: /docs/pages/tutorials/LLM_testing_Notebooks/factuality + - title: Legal-Tests + url: /docs/pages/tutorials/LLM_testing_Notebooks/legal_tests + - title: Security + url: /docs/pages/tutorials/LLM_testing_Notebooks/security + - title: Sensitivity + url: /docs/pages/tutorials/LLM_testing_Notebooks/sensitivity + - title: Sycophancy + url: /docs/pages/tutorials/LLM_testing_Notebooks/sycophancy + - title: Stereotype + url: /docs/pages/tutorials/LLM_testing_Notebooks/stereotype + - title: Miscellaneous Notebooks + url: /docs/pages/tutorials/Miscellaneous_Notebooks + children: + - title: Comparing Models + url: /docs/pages/tutorials/misc/comparing_models + - title: Custom Hub + url: /docs/pages/tutorials/misc/custom_hub + - title: Different Report Formats + url: /docs/pages/tutorials/misc/different_report_formats + - title: Editing Testcases + url: /docs/pages/tutorials/misc/editing-testcases - title: Benchmark Dataset Notebooks url: /docs/pages/tutorials/Benchmark_Dataset_Notebook_Notebooks - title: End-to-End Workflow Notebooks url: /docs/pages/tutorials/End_to_End_workflow_Notebooks - - title: Miscellaneous Notebooks - url: /docs/pages/tutorials/Miscellaneous_Notebooks tests: - title: Tests url: /docs/pages/tests/test + - title: Benchmark Datasets + url: /docs/pages/benchmarks/benchmark - title: Accuracy url: /docs/pages/tests/accuracy - title: Bias @@ -125,10 +180,8 @@ tests: url: /docs/pages/tests/sensitivity - title: Factuality url: /docs/pages/tests/factuality - - title: Wino Bias - url: /docs/pages/tests/wino-bias - - title: Crows Pairs - url: /docs/pages/tests/crows-pairs + - title: Stereotype + url: /docs/pages/tests/stereotype - title: StereoSet url: /docs/pages/tests/stereoset - title: Legal @@ -137,50 +190,65 @@ tests: url: /docs/pages/tests/sycophancy - title: Ideology url: /docs/pages/tests/ideology - - title: Benchmark Datasets - url: /docs/pages/benchmarks/boolq benchmarks: - - title: Benchmarks - url: /docs/pages/benchmarks/benchmark + - title: Medical + url: /docs/pages/benchmarks/medical + children: + - title: MedMCQA + url: /docs/pages/benchmarks/medical/medmcqa + - title: MedQA + url: /docs/pages/benchmarks/medical/medqa + - title: PubMedQA + url: /docs/pages/benchmarks/medical/pubmedqa + - title: Commonsense Scenario + url: /docs/pages/benchmarks/commonsense_scenario + children: + - title: CommonsenseQA + url: /docs/pages/benchmarks/commonsense_scenario/commonsenseqa + - title: HellaSwag + url: /docs/pages/benchmarks/commonsense_scenario/hellaswag + - title: OpenBookQA + url: /docs/pages/benchmarks/commonsense_scenario/openbookqa + - title: PIQA + url: /docs/pages/benchmarks/commonsense_scenario/piqa + - title: SIQA + url: /docs/pages/benchmarks/commonsense_scenario/siqa + - title : Legal + url: /docs/pages/benchmarks/legal + children: + - title: Contracts + url: /docs/pages/benchmarks/legal/contracts + - title: Consumer-Contracts + url: /docs/pages/benchmarks/legal/consumer-contracts + - title: Privacy-Policy + url: /docs/pages/benchmarks/legal/privacy-policy + - title: FIQA + url: /docs/pages/benchmarks/legal/fiqa + - title: MultiLexSum + url: /docs/pages/benchmarks/legal/multilexsum + - title: Other Benchmarks + url: /docs/pages/benchmarks/other_benchmarks children: - title: ASDiv - url: /docs/pages/benchmarks/asdiv + url: /docs/pages/benchmarks/other_benchmarks/asdiv - title: BBQ - url: /docs/pages/benchmarks/bbq + url: /docs/pages/benchmarks/other_benchmarks/bbq - title: Bigbench - url: /docs/pages/benchmarks/bigbench + url: /docs/pages/benchmarks/other_benchmarks/bigbench - title: BoolQ - url: /docs/pages/benchmarks/boolq - - title: CommonsenseQA - url: /docs/pages/benchmarks/commonsenseqa - - title: FIQA - url: /docs/pages/benchmarks/fiqa - - title: HellaSwag - url: /docs/pages/benchmarks/hellaswag - - title: LegalBench - url: /docs/pages/benchmarks/legalbench + url: /docs/pages/benchmarks/other_benchmarks/boolq - title: LogiQA - url: /docs/pages/benchmarks/logiqa + url: /docs/pages/benchmarks/other_benchmark/logiqa - title: MMLU - url: /docs/pages/benchmarks/mmlu - - title: MultiLexSum - url: /docs/pages/benchmarks/multilexsum + url: /docs/pages/benchmarks/other_benchmarks/mmlu - title: NarrativeQA - url: /docs/pages/benchmarks/narrativeqa - - title: NaturalQuestions - url: /docs/pages/benchmarks/natural-questions - - title: OpenBookQA - url: /docs/pages/benchmarks/openbookqa - - title: PIQA - url: /docs/pages/benchmarks/piqa + url: /docs/pages/benchmarks/other_benchmarks/narrativeqa + - title: NQ-open + url: /docs/pages/benchmarks/other_benchmarks/nq-open - title: Quac - url: /docs/pages/benchmarks/quac - - title: SIQA - url: /docs/pages/benchmarks/siqa + url: /docs/pages/benchmarks/other_benchmarks/quac - title: TruthfulQA - url: /docs/pages/benchmarks/truthfulqa + url: /docs/pages/benchmarks/other_benchmarks/truthfulqa - title: XSum - url: /docs/pages/benchmarks/xsum - - \ No newline at end of file + url: /docs/pages/benchmarks/other_benchmarks/xsum \ No newline at end of file diff --git a/docs/_includes/docs-langtest-pagination.html b/docs/_includes/docs-langtest-pagination.html index 34a0ac0a6..a5cad0d0f 100644 --- a/docs/_includes/docs-langtest-pagination.html +++ b/docs/_includes/docs-langtest-pagination.html @@ -1,4 +1,5 @@