Bird
Raised Fist0
NLPml~20 mins

Multi-class text classification in NLP - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Multi-class Text Classification Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Model Choice
intermediate
2:00remaining
Choosing the right model for multi-class text classification

You want to classify news articles into 5 categories based on their text content. Which model is most suitable for this multi-class text classification task?

AA k-means clustering algorithm
BA linear regression model
CA convolutional neural network (CNN) designed for text classification
DA simple decision tree for regression
Attempts:
2 left
💡 Hint

Think about models that handle text data and can output multiple classes.

Metrics
intermediate
2:00remaining
Evaluating multi-class classification with accuracy

You trained a multi-class text classifier with 4 classes. After testing, you got the following predictions and true labels:

Predictions: [2, 0, 1, 3, 1, 0]
True labels: [2, 0, 0, 3, 1, 1]

What is the accuracy of the model on this test set?

A0.6667
B0.5
C0.8333
D0.3333
Attempts:
2 left
💡 Hint

Accuracy = (number of correct predictions) / (total predictions).

Predict Output
advanced
2:00remaining
Output of softmax activation in multi-class classification

Given the logits output from a model for 3 classes: [2.0, 1.0, 0.1], what is the softmax output vector?

NLP
import numpy as np
logits = np.array([2.0, 1.0, 0.1])
exp_logits = np.exp(logits)
softmax = exp_logits / np.sum(exp_logits)
print(np.round(softmax, 3))
A[0.500, 0.300, 0.200]
B[0.659, 0.242, 0.099]
C[0.700, 0.200, 0.100]
D[0.333, 0.333, 0.333]
Attempts:
2 left
💡 Hint

Softmax converts logits to probabilities that sum to 1.

Hyperparameter
advanced
2:00remaining
Choosing batch size for training a multi-class text classifier

You are training a multi-class text classification model on a large dataset. Which batch size choice is likely to improve training stability and speed without using too much memory?

ABatch size of 1 (stochastic gradient descent)
BBatch size of 1024 (very large batch)
CBatch size equal to the entire dataset
DBatch size of 32 (moderate size)
Attempts:
2 left
💡 Hint

Consider trade-offs between memory, speed, and gradient stability.

🔧 Debug
expert
2:00remaining
Identifying the cause of poor multi-class classification accuracy

You trained a multi-class text classifier with 6 classes. The training accuracy is 95%, but test accuracy is only 40%. Which issue is most likely causing this problem?

AThe model is overfitting the training data
BThe test data has fewer classes than training data
CThe model is underfitting the training data
DThe loss function used is mean squared error
Attempts:
2 left
💡 Hint

Think about why training accuracy is high but test accuracy is low.

Practice

(1/5)
1. What is the main goal of multi-class text classification?
easy
A. To sort text into multiple categories based on content
B. To translate text into another language
C. To count the number of words in a text
D. To generate new text from a given input

Solution

  1. Step 1: Understand the task of multi-class text classification

    This task involves assigning each text sample to one category out of many possible categories.
  2. Step 2: Compare options with the task definition

    Only To sort text into multiple categories based on content describes sorting text into multiple categories, which matches the task.
  3. Final Answer:

    To sort text into multiple categories based on content -> Option A
  4. Quick Check:

    Multi-class classification = sorting into many categories [OK]
Hint: Multi-class means sorting text into many groups [OK]
Common Mistakes:
  • Confusing classification with translation
  • Thinking it counts words instead of categorizing
  • Mixing generation with classification
2. Which of the following is the correct way to represent text data for multi-class classification?
easy
A. Converting text into numerical vectors like TF-IDF or embeddings
B. Using raw text strings directly as input to the model
C. Sorting text alphabetically before training
D. Removing all punctuation and spaces only

Solution

  1. Step 1: Identify how models process text

    Models cannot understand raw text strings; they need numbers to learn patterns.
  2. Step 2: Check which option converts text to numbers

    Converting text into numerical vectors like TF-IDF or embeddings mentions converting text into numerical vectors like TF-IDF or embeddings, which is correct.
  3. Final Answer:

    Converting text into numerical vectors like TF-IDF or embeddings -> Option A
  4. Quick Check:

    Text must be numbers for models [OK]
Hint: Models need numbers, not raw text, to learn [OK]
Common Mistakes:
  • Feeding raw text directly to models
  • Thinking sorting text helps classification
  • Ignoring the need for numerical representation
3. Given the following Python code snippet for multi-class text classification, what will be the output of print(predicted_class)?
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

texts = ["I love cats", "Dogs are great", "I hate rain"]
labels = ["positive", "positive", "negative"]

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

model = MultinomialNB()
model.fit(X, labels)

new_text = ["I love dogs"]
X_new = vectorizer.transform(new_text)
predicted_class = model.predict(X_new)[0]
medium
A. "neutral"
B. "negative"
C. An error because of unknown words
D. "positive"

Solution

  1. Step 1: Understand training data and labels

    The model is trained on texts labeled as "positive" or "negative". "I love cats" and "Dogs are great" are positive, "I hate rain" is negative.
  2. Step 2: Predict class for new text "I love dogs"

    The new text contains words "I", "love", and "dogs" which appear in positive examples. The model predicts "positive" as the class.
  3. Final Answer:

    "positive" -> Option D
  4. Quick Check:

    New text matches positive words, so prediction is positive [OK]
Hint: New text similar to positive examples predicts positive [OK]
Common Mistakes:
  • Assuming unknown words cause errors
  • Choosing negative because of 'dogs' only
  • Picking neutral which is not a trained label
4. Identify the error in this multi-class text classification code snippet:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression

texts = ["happy day", "sad night", "joyful morning"]
labels = ["positive", "negative", "positive"]

vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts)

model = LogisticRegression()
model.fit(texts, labels)
medium
A. Labels should be numbers, not strings
B. Passing raw texts instead of vectorized data to model.fit
C. Using LogisticRegression instead of Naive Bayes
D. TfidfVectorizer cannot be used with LogisticRegression

Solution

  1. Step 1: Check input to model.fit()

    The model.fit() method expects numerical features, but raw texts are passed instead of vectorized data.
  2. Step 2: Identify correct input

    The vectorized data X should be passed to model.fit, not the original texts.
  3. Final Answer:

    Passing raw texts instead of vectorized data to model.fit -> Option B
  4. Quick Check:

    Model needs numbers, not raw text, for training [OK]
Hint: Model.fit needs vectorized data, not raw text [OK]
Common Mistakes:
  • Passing raw text directly to model.fit
  • Thinking label type causes error here
  • Believing vectorizer choice causes this error
5. You have a dataset with 5 classes and highly imbalanced text samples per class. Which approach best improves multi-class classification performance?
hard
A. Use only the most frequent class for prediction
B. Ignore imbalance and train model on raw data
C. Use class weighting or oversampling to balance training data
D. Remove classes with fewer samples to simplify problem

Solution

  1. Step 1: Understand class imbalance impact

    Imbalanced classes cause models to favor majority classes, reducing accuracy on minority classes.
  2. Step 2: Identify best practice to handle imbalance

    Using class weighting or oversampling balances the training data, helping the model learn all classes better.
  3. Final Answer:

    Use class weighting or oversampling to balance training data -> Option C
  4. Quick Check:

    Balance data to improve multi-class model accuracy [OK]
Hint: Balance classes with weighting or oversampling [OK]
Common Mistakes:
  • Ignoring imbalance and expecting good results
  • Removing minority classes loses valuable data
  • Predicting only the majority class ignores others