Errudite is an interactive tool for scalable, reproducible, and counterfactual error analysis. Errudite provides an expressive domain-specific language for extracting relevant features of linguistic data, which allows users to visualize data attributes, group relevant instances, and perform counterfactual analysis across all available validation data.
- Read our blog post which explains the core idea of Errudite.
- Watch this video demo that contains the highlights of Errudite's functions & use cases
- Get set up quickly
- Try Errudite's user interface on machine comprehension
- Try the tutorials on JupyterLab notebooks
- Read the documentation
If you are interested in this work, please see our ACL 2019 research paper and consider citing our work:
@inproceedings{2019-errudite,
title = {Errudite: Scalable, Reproducible, and Testable Error Analysis},
author = {Wu, Tongshuang and Ribeiro, Marco Tulio and Heer, Jeffrey and Weld Daniel S.},
booktitle={the 57th Annual Meeting of the Association for Computational Linguistics (ACL 2019)},
year = {2019},
url = {https://www.aclweb.org/anthology/P19-1073.pdf},
}
Errudite requires Python 3.6.x. The package is avaiable through pip
:
Just install it in your Python environment and you're good to go!
# create the virtual environment
virtualenv --no-site-packages -p python3.6 venv
# activate venv
source venv/bin/activate
# install errudite
pip install errudite
You can also install Errudite by cloning our git repository:
git clone https://github.com/uwdata/errudite
Create a Python 3.6 virtual environment, and install Errudite in editable
mode by running:
pip install --editable .
This will make errudite
available on your system but it will use the sources from the local clone
you made of the source repository.
mysql_config not found
forPattern
: See similar solutions here.
Errudite has a UI wrapped for Machine Comprehension and Visual Question Answering tasks. The interface integrates all the key analysis functions (e.g., inspecting instance attributes, grouping similar instances, rewriting instances), It also provides exploration support such as visualizing data distributions, suggesting potential queries, and presenting the grouping and rewriting results. While not strictly necessary, it makes their application much more straightforward.
Note that the GUI is meant to be released as-is -- We do not expect it to be extended to other tasks. As such, the frontend code is not as well-documented as the backend code. If you are interested in using Errudite for your own task, please consider using Errudite package in JupyterLab. It wraps almost all the Errudite functions (except for query auto-complete and programming-by-demonstration), and allows you to customize for your own task.
To get a taste of GUI for the machine comprehension task, you should first download a cache folder
for preprocessed SQuAD instances, which will help you
skip the process of running your own preprocessing. Say we want to use the preprocessed SQuAD dataset,
and we want to download the preprocessed data folder to ~/caches/
:
python -m errudite.download --cache_folder_name squad-10570 --cache_path ~/caches/
Commands:
cache_folder_name
A folder name. Currently, we allow downloading the following:
squad-100, squad-10570.
cache_path A local path where you want to save the cache folder to.
Then, we need to start the server:
# the model relies on Allennlp, so make sure you install that first.
# If you run into issues installing it, please refer to Allennlp's official page: https://github.com/allenai/allennlp
pip install allennlp==0.9.0
source venv/bin/activate
python -m errudite.server --config_file config.yml
Commands:
config_file
A yaml config file path.
The config file looks like the following (or in config.yml):
task: qa # the task, should be "qa" and "vqa".
cache_path: ~/caches/squad-10570 # the cached folder: {cache_path}/{cache_folder_name}/
model_metas: # a model.
- name: bidaf
model_class: bidaf # an implemented model class
model_path: # a local model file path
# an online path to an Allennlp model
model_online_path: https://s3-us-west-2.amazonaws.com/allennlp/models/bidaf-model-2017.09.15-charpad.tar.gz
description: Pretrained model from Allennlp, for the BiDAF model (QA)
attr_file_name: null # It set, to load previously saved analysis.
group_file_name: null
rewrite_file_name: null
Then visit http://localhost:5000/
in your web browser.
Besides used in a GUI, errudite also serves as a general python package. The tutorial goes through:
- Preprocessing the data, and extending Errudite to different tasks & predictors
- Creating data attributes and data groups with a domain specific language (or your customized functions).
- Creating rewrite rules with the domain specific language (or your customized functions).
To go through the tutorial, do the following steps:
# clone the repo
git clone https://github.com/uwdata/errudite
# initial folder: errudite/
# create the virtual environment
virtualenv --no-site-packages -p python3.6 venv
# activate venv
source venv/bin/activate
# run the default setup script
pip install --editable .
# get to the tutorial folder, and start!
cd tutorials
pip install -r requirements_tutorial.txt
jupyter lab