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
Oefeninstructies
- Tokenize
articlein zinnen. - Tokenize elke zin in
sentencesnaar 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 naastpos_sentencesook het extra keyword-argumentbinary=Truemee. - Loop over elke zin en elke chunk, en test of het een named-entity-chunk is door te controleren of het de eigenschap
labelheeft, en ofchunk.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)