Bird
Raised Fist0
NLPml~10 mins

Multi-class text classification in NLP - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the necessary library for text vectorization.

NLP
from sklearn.feature_extraction.text import [1]
Drag options to blanks, or click blank then click option'
ACountVectorizer
BLabelEncoder
Ctrain_test_split
DTfidfVectorizer
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing 'CountVectorizer' which counts word occurrences but doesn't weigh them.
Selecting 'LabelEncoder' which is for encoding labels, not text features.
2fill in blank
medium

Complete the code to split data into training and testing sets.

NLP
from sklearn.model_selection import [1]
X_train, X_test, y_train, y_test = [1](X, y, test_size=0.2, random_state=42)
Drag options to blanks, or click blank then click option'
Atrain_test_split
Bcross_val_score
CGridSearchCV
DKFold
Attempts:
3 left
💡 Hint
Common Mistakes
Using cross-validation functions instead of splitting data.
Confusing with KFold which is for cross-validation, not simple splitting.
3fill in blank
hard

Fix the error in the model training code by filling the blank with the correct classifier.

NLP
from sklearn.linear_model import [1]
model = [1]()
model.fit(X_train, y_train)
Drag options to blanks, or click blank then click option'
ALinearRegression
BLogisticRegression
CKNeighborsClassifier
DDecisionTreeRegressor
Attempts:
3 left
💡 Hint
Common Mistakes
Using regression models for classification tasks.
Choosing classifiers that are not imported or mismatched.
4fill in blank
hard

Fill both blanks to create a dictionary of word counts for words longer than 3 characters.

NLP
word_counts = {word: [1] for word in text.split() if len(word) [2] 3}
Drag options to blanks, or click blank then click option'
Atext.count(word)
B>
C>=
Dlen(word)
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong comparison operator like '<' or '<='.
Using the length of the word as the value instead of the count.
5fill in blank
hard

Fill all three blanks to create a dictionary of words and their counts for words longer than 4 characters.

NLP
filtered_counts = [1]{word: [2] for word in words if len(word) [3] 4}
Drag options to blanks, or click blank then click option'
Adict(
Bwords.count(word)
C>
Dlist(
Attempts:
3 left
💡 Hint
Common Mistakes
Using < or <= instead of > for filtering word length.
Using list() instead of dict() to create the dictionary.

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