Bird
Raised Fist0
NLPml~5 mins

Extractive summarization in NLP

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
Introduction

Extractive summarization helps pick the most important sentences from a text to make a shorter version. It keeps the original words, so the summary is clear and easy to understand.

You want a quick summary of a long news article.
You need to highlight key points from a meeting transcript.
You want to create a brief overview of a research paper.
You want to help readers get the main ideas from a long blog post.
You want to reduce the length of customer reviews while keeping important opinions.
Syntax
NLP
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

def extractive_summary(text, num_sentences=3):
    sentences = text.split('. ')
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(sentences)
    sim_matrix = cosine_similarity(X)
    scores = sim_matrix.sum(axis=1)
    ranked_sentences = [sentences[i] for i in np.argsort(scores)[::-1]]
    summary = '. '.join(ranked_sentences[:num_sentences])
    return summary

This code splits text into sentences by '. ' which works for simple cases.

TF-IDF helps find important words in sentences, and cosine similarity measures how similar sentences are.

Examples
Get a summary with the top 2 important sentences.
NLP
summary = extractive_summary(text, num_sentences=2)
print(summary)
Get a longer summary with 5 sentences.
NLP
summary = extractive_summary(text, num_sentences=5)
print(summary)
Sample Model

This program summarizes a short paragraph about machine learning by selecting the 2 most important sentences.

NLP
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

def extractive_summary(text, num_sentences=3):
    sentences = text.split('. ')
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(sentences)
    sim_matrix = cosine_similarity(X)
    scores = sim_matrix.sum(axis=1)
    ranked_sentences = [sentences[i] for i in np.argsort(scores)[::-1]]
    summary = '. '.join(ranked_sentences[:num_sentences])
    return summary

sample_text = (
    "Machine learning is a method of data analysis that automates analytical model building. "
    "It is a branch of artificial intelligence based on the idea that systems can learn from data, identify patterns and make decisions with minimal human intervention. "
    "Because of new computing technologies, machine learning today is not like machine learning of the past. "
    "It was born from pattern recognition and the theory that computers can learn without being programmed to perform specific tasks. "
    "Researchers interested in artificial intelligence wanted to see if computers could learn from data."
)

summary = extractive_summary(sample_text, num_sentences=2)
print(summary)
OutputSuccess
Important Notes

Extractive summarization keeps original sentences, so the summary is easy to read.

It may not always produce perfectly smooth summaries because it just picks sentences.

For better results, more advanced methods can be used, but this simple method works well for beginners.

Summary

Extractive summarization picks key sentences from text to make a short summary.

It uses techniques like TF-IDF and similarity to find important sentences.

This method keeps the original wording, making summaries easy to understand.

Practice

(1/5)
1. What is the main goal of extractive summarization in NLP?
easy
A. To translate the text into another language
B. To rewrite the text using simpler words
C. To select important sentences from the original text to create a summary
D. To generate new sentences that explain the text

Solution

  1. Step 1: Understand extractive summarization

    Extractive summarization picks key sentences directly from the original text without changing them.
  2. Step 2: Compare options

    Only To select important sentences from the original text to create a summary describes selecting important sentences from the original text, which matches extractive summarization.
  3. Final Answer:

    To select important sentences from the original text to create a summary -> Option C
  4. Quick Check:

    Extractive summarization = selecting key sentences [OK]
Hint: Extractive means picking from original text directly [OK]
Common Mistakes:
  • Confusing extractive with abstractive summarization
  • Thinking it rewrites or translates text
  • Assuming it generates new sentences
2. Which of the following is a common technique used in extractive summarization?
easy
A. Neural machine translation
B. Text generation with GPT
C. Part-of-speech tagging
D. TF-IDF scoring of sentences

Solution

  1. Step 1: Identify techniques for extractive summarization

    Extractive summarization often uses TF-IDF to score sentences by importance based on word frequency.
  2. Step 2: Eliminate unrelated options

    Neural machine translation and text generation are for other NLP tasks, and POS tagging is not directly used for summarization scoring.
  3. Final Answer:

    TF-IDF scoring of sentences -> Option D
  4. Quick Check:

    TF-IDF = common extractive technique [OK]
Hint: TF-IDF ranks sentence importance in extractive summarization [OK]
Common Mistakes:
  • Confusing summarization with translation or generation
  • Thinking POS tagging directly creates summaries
  • Ignoring TF-IDF's role in scoring
3. Given the following Python code snippet using TF-IDF for extractive summarization, what will be the output?
from sklearn.feature_extraction.text import TfidfVectorizer

texts = ["Cats are great pets.", "Dogs are loyal animals.", "Cats and dogs can live together."]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts)
scores = X.sum(axis=1)
print(scores)
medium
A. [[0.0], [0.0], [0.0]]
B. [[2.0], [2.0], [2.4]]
C. [[2.0], [2.0], [3.0]]
D. [[1.0], [1.0], [1.0]]

Solution

  1. Step 1: Understand TF-IDF vectorization and summing

    The code vectorizes three sentences and sums TF-IDF scores per sentence (row-wise sum).
  2. Step 2: Calculate approximate sums

    Each sentence has TF-IDF scores summing roughly to 2.0, 2.0, and 2.4 respectively due to shared and unique words.
  3. Final Answer:

    [[2.0], [2.0], [2.4]] -> Option B
  4. Quick Check:

    Sum TF-IDF per sentence ≈ [[2.0], [2.0], [2.4]] [OK]
Hint: Sum TF-IDF scores per sentence to get importance [OK]
Common Mistakes:
  • Assuming zero scores for all sentences
  • Confusing sum with average
  • Misunderstanding TF-IDF output shape
4. You have this extractive summarization code snippet:
sentences = ["AI is fascinating.", "It helps solve problems.", "AI can learn from data."]
scores = [0.8, 0.9, 0.85]
summary = []
for i in range(len(sentences)):
    if scores[i] > 0.85:
        summary.append(sentences[i])
print(summary)
What is the output and is there any bug?
medium
A. ['It helps solve problems.'] with no bug
B. ['AI is fascinating.', 'It helps solve problems.', 'AI can learn from data.'] with no bug
C. ['It helps solve problems.', 'AI can learn from data.'] but index error bug
D. [] because scores are not compared correctly

Solution

  1. Step 1: Check score filtering condition

    The code adds sentences with scores > 0.85, so sentences with 0.9 and 0.85 are checked; 0.85 is not > 0.85, so only 0.9 and 0.85 fail or pass accordingly.
  2. Step 2: Determine which sentences are included

    Scores: 0.8 (no), 0.9 (yes), 0.85 (no). So only "It helps solve problems." is included. But 0.85 is not > 0.85, so excluded.
  3. Final Answer:

    ['It helps solve problems.'] -> Option A
  4. Quick Check:

    Scores > 0.85 filter sentences correctly [OK]
Hint: Check strict > vs >= in score filtering [OK]
Common Mistakes:
  • Including sentences with score equal to threshold
  • Expecting index errors where none exist
  • Misreading the comparison operator
5. You want to create an extractive summarizer that picks the top 2 sentences from a document based on TF-IDF scores. Given these sentences and their scores:
sentences = ["Machine learning is fun.", "It allows computers to learn.", "Summarization helps understand text.", "TF-IDF ranks sentence importance."]
scores = [0.7, 0.9, 0.6, 0.8]
Which two sentences should your summarizer select?
hard
A. ["It allows computers to learn.", "TF-IDF ranks sentence importance."]
B. ["Machine learning is fun.", "Summarization helps understand text."]
C. ["Summarization helps understand text.", "TF-IDF ranks sentence importance."]
D. ["Machine learning is fun.", "It allows computers to learn."]

Solution

  1. Step 1: Identify top 2 scores

    The scores are 0.7, 0.9, 0.6, 0.8. The top two are 0.9 and 0.8.
  2. Step 2: Match scores to sentences

    0.9 corresponds to "It allows computers to learn.", 0.8 corresponds to "TF-IDF ranks sentence importance.".
  3. Final Answer:

    ["It allows computers to learn.", "TF-IDF ranks sentence importance."] -> Option A
  4. Quick Check:

    Top 2 scores = 0.9 and 0.8 sentences [OK]
Hint: Pick sentences with highest TF-IDF scores [OK]
Common Mistakes:
  • Choosing sentences with lower scores
  • Mixing up sentence-score pairs
  • Selecting more or fewer than top 2