Aan de slagGa gratis aan de slag

NER met NLTK

Je gaat nu aan de slag met named-entity recognition! Een gescrapet nieuwsartikel is vooraf in je werkruimte geladen. Jouw taak is om met nltk de named entities in dit artikel te vinden.

Waar zou het artikel over gaan, gezien de namen die je hebt gevonden?

Naast nltk zijn sent_tokenize en word_tokenize uit nltk.tokenize al geïmporteerd.

Deze oefening maakt deel uit van de cursus

Introductie tot Natural Language Processing in Python

Cursus bekijken

Oefeninstructies

  • Tokenize article in zinnen.
  • Tokenize elke zin in sentences naar woorden met een list comprehension.
  • Tag binnen een list comprehension elke getokenizde zin met woordsoorten met nltk.pos_tag().
  • Chunk elke getagde zin in named-entity-chunks met nltk.ne_chunk_sents(). Geef naast pos_sentences ook het extra keyword-argument binary=True mee.
  • Loop over elke zin en elke chunk, en test of het een named-entity-chunk is door te controleren of het de eigenschap label heeft, en of chunk.label() gelijk is aan "NE". Print in dat geval die chunk.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Tokenize the article into sentences: sentences
sentences = ____

# Tokenize each sentence into words: token_sentences
token_sentences = [____ for sent in ____]

# Tag each tokenized sentence into parts of speech: pos_sentences
pos_sentences = [____ for sent in ____] 

# Create the named entity chunks: chunked_sentences
chunked_sentences = ____

# Test for stems of the tree with 'NE' tags
for sent in chunked_sentences:
    for chunk in sent:
        if hasattr(chunk, "label") and ____ == "____":
            print(chunk)
Code bewerken en uitvoeren