Bird
Raised Fist0
NLPml~10 mins

Answer span extraction 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 extract the start index of the answer span from model outputs.

NLP
start_index = outputs.start_logits.[1]()
Drag options to blanks, or click blank then click option'
Amax
Bargmax
Csum
Dmean
Attempts:
3 left
💡 Hint
Common Mistakes
Using max() returns the value, not the index.
Using sum() or mean() does not give the position.
2fill in blank
medium

Complete the code to extract the answer text from the context using predicted start and end indices.

NLP
answer = context[[1]:end_index + 1]
Drag options to blanks, or click blank then click option'
Astart_index
Boutputs.start_logits
Cend_index
Doutputs.end_logits
Attempts:
3 left
💡 Hint
Common Mistakes
Using logits instead of indices.
Using end_index as the start of the slice.
3fill in blank
hard

Fix the error in the code to correctly compute the end index of the answer span.

NLP
end_index = outputs.end_logits.[1]()
Drag options to blanks, or click blank then click option'
Aargmax
Bmax
Cmin
Dsum
Attempts:
3 left
💡 Hint
Common Mistakes
Using max() returns the value, not the index.
Using min() or sum() is incorrect for this purpose.
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that maps tokens to their indices for tokens longer than 3 characters.

NLP
{ [2]: [1] for [1], [2] in enumerate(tokens) if len([2]) > 3 }
Drag options to blanks, or click blank then click option'
Aindex
Btoken
Ci
Dword
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'i' instead of 'index' for the value.
Using 'word' instead of 'token' in the loop.
5fill in blank
hard

Fill all three blanks to create a dictionary of token lengths for tokens starting with a vowel.

NLP
{ [1]: len([2]) for [3] in tokens if [2][0].lower() in 'aeiou' }
Drag options to blanks, or click blank then click option'
Atoken
Bword
Cw
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing variable names in keys and values.
Using different variable names inconsistently.

Practice

(1/5)
1. What is the main goal of answer span extraction in NLP?
easy
A. To generate new text based on a prompt
B. To find the exact part of text that answers a question
C. To summarize long documents into short sentences
D. To translate text from one language to another

Solution

  1. Step 1: Understand the purpose of answer span extraction

    Answer span extraction focuses on locating the exact segment in a text that directly answers a question.
  2. Step 2: Compare with other NLP tasks

    Unlike translation, summarization, or text generation, answer span extraction pinpoints a specific text span as the answer.
  3. Final Answer:

    To find the exact part of text that answers a question -> Option B
  4. Quick Check:

    Answer span extraction = find exact answer span [OK]
Hint: Answer span extraction locates exact text answers [OK]
Common Mistakes:
  • Confusing answer span extraction with translation
  • Thinking it summarizes text instead of extracting spans
  • Assuming it generates new text
2. Which of the following is the correct way to represent the start and end positions for answer span extraction in code?
easy
A. start_index and end_index as integers
B. start_word and end_word as strings
C. start_time and end_time as floats
D. start_char and end_char as booleans

Solution

  1. Step 1: Identify typical data types for positions

    Positions in text are usually represented by integer indices marking start and end locations.
  2. Step 2: Evaluate options

    Strings or booleans do not represent positions well; floats for time are unrelated to text spans.
  3. Final Answer:

    start_index and end_index as integers -> Option A
  4. Quick Check:

    Positions = integer indices [OK]
Hint: Positions in text are integer indices [OK]
Common Mistakes:
  • Using strings instead of integer indices
  • Confusing character positions with time values
  • Using booleans for position markers
3. Given the text: 'The cat sat on the mat.' and predicted start index = 1, end index = 4, what is the extracted answer span?
medium
A. 'cat sat on'
B. 'sat on the'
C. 'on the mat'
D. 'The cat sat'

Solution

  1. Step 1: Identify tokens and their indices

    Tokenizing the sentence: ['The'(0), 'cat'(1), 'sat'(2), 'on'(3), 'the'(4), 'mat.'(5)]. The indices given (1 to 4) refer to 0-based token positions.
  2. Step 2: Extract tokens from start to end index

    In standard extraction, take tokens[start:end] (end exclusive): tokens[1:4] = ['cat'(1), 'sat'(2), 'on'(3)] = 'cat sat on'.
  3. Final Answer:

    'cat sat on' -> Option A
  4. Quick Check:

    Extract tokens from start to end index = 'cat sat on' [OK]
Hint: Match indices to tokens carefully [OK]
Common Mistakes:
  • Confusing character indices with token indices
  • Off-by-one errors in slicing
  • Ignoring punctuation in tokens
4. You have a model that predicts start and end indices for answer spans but sometimes the end index is smaller than the start index. What is the best way to fix this bug?
medium
A. Ignore the prediction and return an empty answer
B. Always set end index to start index plus one
C. Swap the start and end indices if end < start
D. Use only the start index as the answer

Solution

  1. Step 1: Understand the problem with indices

    End index smaller than start index is invalid because answer spans must go forward in text.
  2. Step 2: Choose a fix that preserves valid spans

    Swapping start and end indices corrects the order and keeps the predicted span meaningful.
  3. Final Answer:

    Swap the start and end indices if end < start -> Option C
  4. Quick Check:

    Fix invalid spans by swapping indices [OK]
Hint: Swap indices if end < start to fix spans [OK]
Common Mistakes:
  • Ignoring invalid spans instead of fixing
  • Forcing fixed span length blindly
  • Using only one index loses answer context
5. In a question-answering system, the model outputs start logits and end logits for each token. How should you combine these to find the best answer span?
hard
A. Choose random start and end indices
B. Pick the token with the highest start logit only
C. Pick the token with the highest end logit only
D. Find the pair of start and end indices with the highest sum of start and end logits where start ≤ end

Solution

  1. Step 1: Understand logits for start and end tokens

    Start and end logits represent scores for each token being the start or end of the answer span.
  2. Step 2: Combine logits to find best span

    We look for the pair (start, end) with the highest combined score, ensuring start ≤ end to form a valid span.
  3. Final Answer:

    Find the pair of start and end indices with the highest sum of start and end logits where start ≤ end -> Option D
  4. Quick Check:

    Combine start and end logits to find best span [OK]
Hint: Sum start and end logits, ensure start ≤ end [OK]
Common Mistakes:
  • Ignoring end logits and using start only
  • Choosing invalid spans where end < start
  • Picking random indices without scores