# Monitoring a text classification model

In this tutorial, we will use nannyML cloud to monitor a sentiment analysis text classification model where the model's goal is to predict the sentiment (Negative, Neutral, Positive) of a review left on Amazon.

## The model and dataset

We will use a model trained on a subset of the [Multilingual Amazon Reviews Dataset](https://huggingface.co/datasets/amazon_reviews_multi). The trained model can be found in the [nannyML's hugging face hub](https://huggingface.co/NannyML/amazon-reviews-sentiment-bert-base-uncased-6000-samples).&#x20;

For details of how this model was produced, check out the blog post: [Are your NLP models deteriorating post-deployment? Let’s use unlabelled data to find out](https://huggingface.co/blog/santiviquez/performance-estimation-nlp-nannyml).

## Reference and analysis sets

To evaluate the model in production, we have two sets:

* **Reference set** - which contains all model inputs along with the model’s predictions and labels. This set establishes a baseline for every metric we want to monitor. Find the reference set: <https://raw.githubusercontent.com/NannyML/sample_datasets/main/amazon_reviews/amazon_reviews_reference.csv>
* **Analysis set** - which contains all model inputs extracted from a production set with the model’s prediction, and in this case, labels. The analysis set is where NannyML analyzes/monitors the model’s performance and data drift of the model using the knowledge gained from the reference set. Find the analysis set: <https://raw.githubusercontent.com/NannyML/sample_datasets/main/amazon_reviews/amazon_reviews_analysis_targets.csv>

## Monitoring with nannyML Cloud

### Step 1: Add a new model

Click the Add model button to create a new model on your nannyML cloud dashboard.

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/GhSHm4kTrLhDl8pKKwbc/Screenshot%202023-11-16%20at%2011.59.19.png" alt=""><figcaption></figcaption></figure>

### Step 2: Define the problem type and main metric

Each review that we are classifying can be Negative, Positive, or Neutral. For this reason, we will set the problem type as **Multiclass classification.**

We will be monitoring the model's F1-score on a weekly basis.

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/oDjU2L7cziIeNxP3C4X8/Screenshot%202023-11-21%20at%2008.40.06.png" alt=""><figcaption></figcaption></figure>

### Step 3: Configure the Reference set

Select "Upload via public link".

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/PEIq1RxceyTmHlHvBX6m/Screenshot%202023-11-20%20at%2014.39.37.png" alt=""><figcaption></figcaption></figure>

Use the following public URL to link the Reference dataset: <https://raw.githubusercontent.com/NannyML/sample_datasets/main/amazon_reviews/amazon_reviews_reference.csv>

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/2XD6ACCZfXSiuuzMQzTI/Screenshot%202023-11-21%20at%2009.04.21.png" alt=""><figcaption></figcaption></figure>

### Step 4: Define the reference dataset schema

1. Select the column **timestamp** as the Timestamp column
2. Select the column **predicted\_sentiment** as the Prediction column
3. Select the **real\_sentiment** as the Target column
4. Flag the columns **negative\_sentiment\_pred\_proba, neutral\_sentiment\_pred\_proba, positive\_sentiment\_pred\_proba** as Prediction Scores.

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/nNuGzzPf486rWXPLsO4Z/Screenshot%202023-11-21%20at%2008.41.51.png" alt=""><figcaption></figcaption></figure>

### Step 5: Configure the Analysis set

Select "Upload via public link".

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/j0HFsLQBWxPf3o7TSRnq/Screenshot%202023-11-21%20at%2008.53.37.png" alt=""><figcaption></figcaption></figure>

Use the following public URL to link the Analysis dataset: <https://raw.githubusercontent.com/NannyML/sample_datasets/main/amazon_reviews/amazon_reviews_analysis_targets.csv>

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/0R1RkZW5qKLazZhaYYV5/Screenshot%202023-11-21%20at%2008.53.48.png" alt=""><figcaption></figcaption></figure>

### Step 6: Start monitoring

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/1AXcqSK9JVIIYWLf8tjL/Screenshot%202023-11-21%20at%2008.54.01.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/2wXpsFdZLc0Ed8e18KiO/blobs/U5UxBvkDjiZTCtNJbsH1/Screenshot%202023-11-21%20at%2009.06.45.png" alt=""><figcaption></figcaption></figure>
