This guide gives you a brief introduction to Rubrix Metrics. Rubrix Metrics enable you to perform fine-grained analyses of your models and training datasets. Rubrix Metrics are inspired by a a number of seminal works such as Explainaboard.
The main goal is to make it easier to build more robust models and training data, going beyond single-number metrics (e.g., F1).
This guide gives a brief overview of currently supported metrics. For the full API documentation see the Python API reference
This feature is experimental, you can expect some changes in the Python API. Please report on Github any issue you encounter.
Verify you have already installed Jupyter Widgets in order to properly visualize the plots. See https://ipywidgets.readthedocs.io/en/latest/user_install.html
For running this guide you need to install the following dependencies:
%pip install datasets spacy plotly -qqq
and the spacy model:
!python -m spacy download en_core_web_sm
Load dataset and spaCy model¶
We’ll be using spaCy for this guide, but all the metrics we’ll see are computed for any other framework (Flair, Stanza, Hugging Face, etc.). As an example will use the WNUT17 NER dataset.
import rubrix as rb import spacy from datasets import load_dataset nlp = spacy.load("en_core_web_sm") dataset = load_dataset("wnut_17", split="train")
Log records into a Rubrix dataset¶
from tqdm.auto import tqdm records =  for record in tqdm(dataset, total=len(dataset)): # We only need the text of each instance text = " ".join(record["tokens"]) # spaCy Doc creation doc = nlp(text) # Entity annotations entities = [ (ent.label_, ent.start_char, ent.end_char) for ent in doc.ents ] # Pre-tokenized input text tokens = [token.text for token in doc] # Rubrix TokenClassificationRecord list records.append( rb.TokenClassificationRecord( text=text, tokens=tokens, prediction=entities, prediction_agent="en_core_web_sm", ) ) rb.delete("spacy_sm_wnut17") rb.log(records, name="spacy_sm_wnut17")
Explore the metrics for the dataset¶
from rubrix.metrics.token_classification import entity_consistency entity_consistency(name="spacy_sm_wnut17", mentions=40, threshold= 3).visualize()