Python package to compute NLU metrics
Project description
This tools is a python library for computing cross-validation and train/test metrics on an NLU parsing pipeline such as the Snips NLU one.
Its purpose is to help evaluating and iterating on the tested intent parsing pipeline.
Install
$ pip install snips_nlu_metrics
NLU Metrics API
Snips NLU metrics API consists in the following functions:
compute_train_test_metrics to compute train/test metrics
compute_cross_val_metrics to compute cross-validation metrics
The metrics output (json) provides detailed information about:
precision, recall and f1 scores of intent classification
precision, recall and f1 scores of entity extraction
parsing errors
Data
Some sample datasets, that can be used to compute metrics, are available here. Alternatively, you can create your own dataset either by using snips-nlu’s dataset generation tool or by going on the Snips console.
Examples
The Snips NLU metrics library can be used with any NLU pipeline which satisfies the Engine API:
class Engine:
def fit(self, dataset):
# Perform training ...
return self
def parse(self, text):
# extract intent and slots ...
return {
"input": text,
"intent": {
"intentName": intent_name,
"probability": probability
},
"slots": slots
}
Snips NLU Engine
This library can be used to benchmark NLU solutions such as Snips NLU. To install the snips-nlu python library, and fetch the language resources for english, run the following commands:
$ pip install snips-nlu
$ snips-nlu download en
Then, you can compute metrics for the snips-nlu pipeline using the metrics API as follows:
from snips_nlu import SnipsNLUEngine
from snips_nlu_metrics import compute_train_test_metrics, compute_cross_val_metrics
tt_metrics = compute_train_test_metrics(train_dataset="samples/train_dataset.json",
test_dataset="samples/test_dataset.json",
engine_class=SnipsNLUEngine)
cv_metrics = compute_cross_val_metrics(dataset="samples/cross_val_dataset.json",
engine_class=SnipsNLUEngine,
nb_folds=5)
Custom NLU Engine
You can also compute metrics on a custom NLU engine, here is a simple example:
import random
from snips_nlu_metrics import compute_train_test_metrics
class MyNLUEngine:
def fit(self, dataset):
self.intent_list = list(dataset["intents"])
return self
def parse(self, text):
return {
"input": text,
"intent": {
"intentName": random.choice(self.intent_list),
"probability": 0.5
},
"slots": []
}
compute_train_test_metrics(train_dataset="samples/train_dataset.json",
test_dataset="samples/test_dataset.json",
engine_class=MyNLUEngine)
Links
Snips NLU Rust: Rust inference pipeline implementation and bindings (C, Swift, Kotlin, Python)
Contributing
Please see the Contribution Guidelines.
Copyright
This library is provided by Snips as Open Source software. See LICENSE for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file snips_nlu_metrics-0.15.0.tar.gz
.
File metadata
- Download URL: snips_nlu_metrics-0.15.0.tar.gz
- Upload date:
- Size: 32.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39acf98d74047666390b51c0dab90a47ab930de94766210cabd1f0b599cab687 |
|
MD5 | 4389684b9c1b8a39adecd2559266e440 |
|
BLAKE2b-256 | a537ae7d2f61b54e2a9c78ee91be071839eb60cccf817e9b3dc45a0fa52af728 |
File details
Details for the file snips_nlu_metrics-0.15.0-py3-none-any.whl
.
File metadata
- Download URL: snips_nlu_metrics-0.15.0-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc5985c7acf552b38e8ea33864792d845299011d3039146efda6b0711860df74 |
|
MD5 | 0f733a66f805bd16fe2c87089a454ca1 |
|
BLAKE2b-256 | b114496ba4076b73880753222954ba688fb80a023718ba9051edb165ce045958 |