Bird
Raised Fist0
ML Pythonml~5 mins

Bag of Words and TF-IDF in ML Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the Bag of Words (BoW) model in text processing?
Bag of Words is a simple way to represent text by counting how many times each word appears, ignoring grammar and order. It turns text into numbers that machines can understand.
Click to reveal answer
beginner
What does TF-IDF stand for and what is its purpose?
TF-IDF stands for Term Frequency-Inverse Document Frequency. It helps find important words in a document by giving higher scores to words that appear often in one document but rarely in others.
Click to reveal answer
intermediate
How does TF (Term Frequency) differ from IDF (Inverse Document Frequency)?
TF counts how often a word appears in one document. IDF measures how rare a word is across all documents. Combining them highlights words that are common in one document but rare overall.
Click to reveal answer
intermediate
Why might Bag of Words be less effective than TF-IDF for some tasks?
Bag of Words treats all words equally, so common words like 'the' get the same importance as meaningful words. TF-IDF reduces the weight of common words, making it better at finding important words.
Click to reveal answer
advanced
What is a limitation of both Bag of Words and TF-IDF models?
Both ignore the order of words, so they miss the meaning that comes from word sequence. For example, 'dog bites man' and 'man bites dog' look the same in these models.
Click to reveal answer
What does the Bag of Words model ignore when representing text?
AThe order of words
BThe frequency of words
CThe presence of words
DThe length of the document
In TF-IDF, what does a high IDF score for a word indicate?
AThe word appears in many documents
BThe word is a stop word
CThe word is very common in one document
DThe word is rare across documents
Which model gives more importance to rare but meaningful words?
ATF-IDF
BBag of Words
CBoth equally
DNeither
Which of these is a common use of Bag of Words and TF-IDF?
AImage classification
BSpeech recognition
CText classification
DTime series forecasting
What is a shared limitation of Bag of Words and TF-IDF?
AThey require labeled data
BThey ignore word order
CThey cannot handle numbers
DThey are slow to compute
Explain how the Bag of Words model represents text and one advantage and one disadvantage of this approach.
Think about how words are counted and what information is lost.
You got /4 concepts.
    Describe what TF-IDF measures and why it can be more useful than just counting word frequency.
    Consider how TF-IDF balances common and rare words.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the Bag of Words model primarily count in a text document?
      easy
      A. The order of words in the document
      B. The frequency of each word appearing in the document
      C. The sentiment of the document
      D. The length of the document in characters

      Solution

      1. Step 1: Understand Bag of Words concept

        Bag of Words counts how many times each word appears, ignoring order.
      2. Step 2: Identify what is counted

        It counts word frequency, not order, sentiment, or length.
      3. Final Answer:

        The frequency of each word appearing in the document -> Option B
      4. Quick Check:

        Bag of Words = word counts [OK]
      Hint: Bag of Words counts words, not order or meaning [OK]
      Common Mistakes:
      • Thinking Bag of Words considers word order
      • Confusing frequency with sentiment
      • Assuming it measures document length
      2. Which of the following is the correct way to create a Bag of Words vector using scikit-learn's CountVectorizer in Python?
      easy
      A. from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() matrix = vectorizer.fit(documents)
      B. from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = CountVectorizer() matrix = vectorizer.fit_transform(documents)
      C. from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() matrix = vectorizer.transform(documents)
      D. from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() matrix = vectorizer.fit_transform(documents)

      Solution

      1. Step 1: Import and initialize CountVectorizer

        Correct import is from sklearn.feature_extraction.text import CountVectorizer and then create an instance.
      2. Step 2: Fit and transform documents

        Use fit_transform to learn vocabulary and create the matrix in one step.
      3. Final Answer:

        from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() matrix = vectorizer.fit_transform(documents) -> Option D
      4. Quick Check:

        CountVectorizer + fit_transform = Bag of Words matrix [OK]
      Hint: Use fit_transform to build and apply vectorizer in one step [OK]
      Common Mistakes:
      • Using transform without fit first
      • Importing TfidfVectorizer instead of CountVectorizer
      • Calling fit without transform or fit_transform
      3. Given the following Python code using TF-IDF, what will be the shape of the output matrix?
      from sklearn.feature_extraction.text import TfidfVectorizer
      docs = ['cat dog', 'dog mouse', 'cat mouse mouse']
      vectorizer = TfidfVectorizer()
      X = vectorizer.fit_transform(docs)
      print(X.shape)
      medium
      A. (4, 3)
      B. (3, 4)
      C. (3, 3)
      D. (3, 2)

      Solution

      1. Step 1: Count unique words across all documents

        The words are 'cat', 'dog', 'mouse'. 'mouse' appears twice but counts once. So unique words = 3.
      2. Step 2: Check if TfidfVectorizer adds extra tokens

        TfidfVectorizer by default tokenizes and counts unique words. Here, it finds 3 unique words: 'cat', 'dog', 'mouse'. So matrix shape is (number of docs, number of unique words) = (3,3).
      3. Step 3: Verify options

        (3, 3) is (3,3), matching our count. But (3, 4) is (3,4), which suggests 4 unique words. Let's check if any extra token is created.
      4. Step 4: Check for default token pattern

        By default, TfidfVectorizer splits on word boundaries, so no extra tokens. So shape is (3,3).
      5. Final Answer:

        (3, 3) -> Option C
      6. Quick Check:

        Docs=3, unique words=3, shape=(3,3) [OK]
      Hint: Shape = (documents, unique words) counted by vectorizer [OK]
      Common Mistakes:
      • Counting repeated words multiple times
      • Confusing rows and columns in shape
      • Assuming extra tokens are added automatically
      4. The following code tries to create a TF-IDF matrix but raises an error. What is the main problem?
      from sklearn.feature_extraction.text import TfidfVectorizer
      vectorizer = TfidfVectorizer()
      docs = ['apple orange', 'banana apple']
      X = vectorizer.transform(docs)
      print(X.toarray())
      medium
      A. fit_transform should be used before transform to learn vocabulary
      B. The documents list is empty
      C. TfidfVectorizer cannot handle multiple documents
      D. toarray() is not a valid method for sparse matrices

      Solution

      1. Step 1: Understand TfidfVectorizer usage

        Before calling transform, vectorizer must learn vocabulary using fit or fit_transform.
      2. Step 2: Identify error cause

        Code calls transform directly without fitting, so vocabulary is unknown, causing error.
      3. Final Answer:

        fit_transform should be used before transform to learn vocabulary -> Option A
      4. Quick Check:

        fit_transform first, then transform [OK]
      Hint: Always fit vectorizer before transform [OK]
      Common Mistakes:
      • Calling transform without fit
      • Assuming toarray() is invalid (it is valid)
      • Thinking TfidfVectorizer can't handle multiple docs
      5. You have two documents: doc1 = 'apple apple orange' and doc2 = 'apple banana banana'. Using TF-IDF, which word will have the highest weight in doc2 and why?
      hard
      A. 'banana', because it appears frequently in doc2 but less in doc1
      B. 'apple', because it appears in both documents
      C. 'orange', because it appears only in doc1
      D. 'apple', because it appears most frequently overall

      Solution

      1. Step 1: Understand TF-IDF weighting

        TF-IDF gives higher weight to words frequent in one document but rare across all documents.
      2. Step 2: Analyze word frequencies

        'banana' appears twice in doc2 but not in doc1, so it is rare overall but frequent in doc2.
      3. Step 3: Compare with other words

        'apple' appears in both docs, so its IDF is lower. 'orange' is not in doc2, so no weight there.
      4. Final Answer:

        'banana', because it appears frequently in doc2 but less in doc1 -> Option A
      5. Quick Check:

        TF-IDF favors unique frequent words [OK]
      Hint: TF-IDF boosts words frequent in one doc but rare overall [OK]
      Common Mistakes:
      • Choosing common words across docs as highest weight
      • Confusing frequency with uniqueness
      • Ignoring that words not in doc have zero weight
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard