# 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/KQb5UiQca9y5CPVJ4aR8/blobs/cTVyUtIaTzvDentvGOCU/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/KQb5UiQca9y5CPVJ4aR8/blobs/DGo9HjWgvYyRYjp87I5e/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/KQb5UiQca9y5CPVJ4aR8/blobs/1Q5tdkz4B8K8SqVYq7ts/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/KQb5UiQca9y5CPVJ4aR8/blobs/T7qOgdQZWwNfWmefMXbH/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/KQb5UiQca9y5CPVJ4aR8/blobs/rSTdXU87wQwUZbqlniRy/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/KQb5UiQca9y5CPVJ4aR8/blobs/KRe4m3Ln4s2KNe7vTeXS/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/KQb5UiQca9y5CPVJ4aR8/blobs/VkHBEB5NzE4MTwflDSpg/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/KQb5UiQca9y5CPVJ4aR8/blobs/REmkEhab9Ug10Or2ENXm/Screenshot%202023-11-21%20at%2008.54.01.png" alt=""><figcaption></figcaption></figure>

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