Bird
Raised Fist0
NLPml~10 mins

Part-of-speech tagging 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 NLTK library for part-of-speech tagging.

NLP
import nltk

text = "I love learning AI"
tokens = nltk.word_tokenize(text)
pos_tags = nltk.[1](tokens)
print(pos_tags)
Drag options to blanks, or click blank then click option'
AposTag
Btag_pos
Ctagger
Dpos_tag
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong function name like tag_pos or posTag.
Forgetting to tokenize the text before tagging.
2fill in blank
medium

Complete the code to tokenize the sentence before tagging.

NLP
sentence = "She enjoys reading books"
tokens = [1](sentence)
print(tokens)
Drag options to blanks, or click blank then click option'
Asentence.split
Bsentence.tokenize
Cnltk.word_tokenize
Dnltk.tokenize_words
Attempts:
3 left
💡 Hint
Common Mistakes
Using sentence.split which does not handle punctuation well.
Using a non-existent function like sentence.tokenize.
3fill in blank
hard

Fix the error in the code to correctly tag the tokens.

NLP
tokens = ['They', 'are', 'playing', 'football']
pos_tags = nltk.pos_tag([1])
print(pos_tags)
Drag options to blanks, or click blank then click option'
Atokens()
Btokens
Ctokens[]
Dtoken
Attempts:
3 left
💡 Hint
Common Mistakes
Calling tokens as a function with parentheses.
Using incorrect syntax like tokens[].
4fill in blank
hard

Fill both blanks to create a dictionary of words and their POS tags.

NLP
tokens = ['He', 'runs', 'fast']
pos_tags = nltk.pos_tag(tokens)
pos_dict = [1](pos_tags)
print(pos_dict)

# Access the POS tag of 'runs'
print(pos_dict[[2]])
Drag options to blanks, or click blank then click option'
Adict
B'runs'
C'fast'
Dlist
Attempts:
3 left
💡 Hint
Common Mistakes
Using list() instead of dict() to convert.
Accessing dictionary with wrong key like 'fast'.
5fill in blank
hard

Fill the blanks to filter and print only nouns from the tagged tokens.

NLP
tokens = nltk.word_tokenize("Dogs bark loudly at night")
pos_tags = nltk.pos_tag(tokens)
nouns = [word for word, tag in pos_tags if tag [1] [2]]
print(nouns)

# Expected output: ['Dogs', 'night']
Drag options to blanks, or click blank then click option'
A==
Bin
CNN
D['NN', 'NNS']
Attempts:
3 left
💡 Hint
Common Mistakes
Using '==' to compare tag with a list (causes error).
Using wrong tag names or not filtering nouns.

Practice

(1/5)
1. What is the main purpose of part-of-speech tagging in natural language processing?
easy
A. To label each word with its grammatical role in a sentence
B. To translate text from one language to another
C. To count the number of words in a sentence
D. To generate new sentences automatically

Solution

  1. Step 1: Understand the role of part-of-speech tagging

    Part-of-speech tagging assigns labels like noun, verb, adjective to each word, showing its grammatical role.
  2. Step 2: Compare with other options

    Translation, word counting, and sentence generation are different NLP tasks unrelated to POS tagging.
  3. Final Answer:

    To label each word with its grammatical role in a sentence -> Option A
  4. Quick Check:

    POS tagging = labeling word roles [OK]
Hint: POS tagging means labeling words by their grammar role [OK]
Common Mistakes:
  • Confusing POS tagging with translation
  • Thinking POS tagging counts words
  • Assuming POS tagging generates sentences
2. Which Python code correctly uses NLTK to perform part-of-speech tagging on the sentence 'I love AI'?
easy
A. import nltk nltk.pos_tag(['I', 'love', 'AI'])
B. import nltk nltk.tag_pos(['I', 'love', 'AI'])
C. import nltk nltk.pos_tag('I love AI')
D. import nltk nltk.pos_tag(['I love AI'])

Solution

  1. Step 1: Check correct function and input type

    The correct function is pos_tag and it expects a list of words, not a string.
  2. Step 2: Analyze each option

    import nltk nltk.pos_tag(['I', 'love', 'AI']) uses pos_tag with a list of words, which is correct. import nltk nltk.tag_pos(['I', 'love', 'AI']) uses a wrong function name. import nltk nltk.pos_tag('I love AI') passes a string instead of a list. import nltk nltk.pos_tag(['I love AI']) passes a list with one string, not separate words.
  3. Final Answer:

    import nltk nltk.pos_tag(['I', 'love', 'AI']) -> Option A
  4. Quick Check:

    pos_tag + list of words = correct syntax [OK]
Hint: Use pos_tag with a list of words, not a single string [OK]
Common Mistakes:
  • Passing a string instead of a list
  • Using incorrect function name
  • Passing a list with one combined string
3. What is the output of the following Python code using NLTK's pos_tag?
import nltk
sentence = ['She', 'runs', 'fast']
tagged = nltk.pos_tag(sentence)
print(tagged)
medium
A. [('She', 'DT'), ('runs', 'VB'), ('fast', 'RB')]
B. [('She', 'NN'), ('runs', 'NN'), ('fast', 'JJ')]
C. [('She', 'PRP'), ('runs', 'VBZ'), ('fast', 'RB')]
D. [('She', 'PRP'), ('runs', 'VBD'), ('fast', 'RB')]

Solution

  1. Step 1: Understand POS tags for each word

    'She' is a pronoun (PRP), 'runs' is a verb in present tense third person singular (VBZ), 'fast' is an adverb (RB).
  2. Step 2: Match tags with options

    [('She', 'PRP'), ('runs', 'VBZ'), ('fast', 'RB')] matches these tags exactly. Other options have incorrect tags like noun (NN), determiner (DT), or past tense verb (VBD).
  3. Final Answer:

    [('She', 'PRP'), ('runs', 'VBZ'), ('fast', 'RB')] -> Option C
  4. Quick Check:

    Pronoun + present verb + adverb = [('She', 'PRP'), ('runs', 'VBZ'), ('fast', 'RB')] [OK]
Hint: Know common POS tags: PRP=pronoun, VBZ=verb present, RB=adverb [OK]
Common Mistakes:
  • Confusing verb tenses VBZ vs VBD
  • Mixing pronouns with nouns
  • Mislabeling adverbs as adjectives
4. The following code throws an error. What is the most likely cause?
import nltk
sentence = 'He is happy'
tagged = nltk.pos_tag(sentence)
print(tagged)
medium
A. The nltk module is not imported correctly
B. The sentence variable should be a tuple, not a string
C. pos_tag requires a second argument specifying the language
D. The input to pos_tag should be a list of words, not a string

Solution

  1. Step 1: Check input type for pos_tag

    pos_tag expects a list of words, but here a single string is passed, which causes an error.
  2. Step 2: Verify other options

    nltk is imported correctly, pos_tag does not require a language argument, and input as tuple is not required.
  3. Final Answer:

    The input to pos_tag should be a list of words, not a string -> Option D
  4. Quick Check:

    pos_tag input must be list, not string [OK]
Hint: Always pass a list of words to pos_tag, not a string [OK]
Common Mistakes:
  • Passing a string instead of a list
  • Assuming pos_tag needs language argument
  • Confusing input types (tuple vs list)
5. You want to tag parts of speech in a sentence but also handle unknown words gracefully. Which approach best improves POS tagging accuracy for new words?
hard
A. Manually assign tags to each unknown word before tagging
B. Use a POS tagger with a built-in model trained on large diverse text
C. Ignore unknown words during tagging to avoid errors
D. Replace unknown words with a fixed placeholder before tagging

Solution

  1. Step 1: Understand handling unknown words in POS tagging

    Taggers trained on large, diverse datasets can predict tags for new words based on context and patterns.
  2. Step 2: Evaluate other options

    Manually tagging unknown words is impractical, ignoring them loses information, and replacing with placeholders removes context.
  3. Final Answer:

    Use a POS tagger with a built-in model trained on large diverse text -> Option B
  4. Quick Check:

    Robust model with training data handles unknown words best [OK]
Hint: Choose taggers trained on big data to handle new words well [OK]
Common Mistakes:
  • Trying to manually tag unknown words
  • Ignoring unknown words instead of tagging
  • Replacing words loses sentence meaning