NER mit NLTK

Jetzt wirst du Spaß mit der Namenserkennung haben! Ein gescrapter Nachrichtenartikel wurde bereits in deinen Arbeitsbereich geladen. Deine Aufgabe ist es, nltk zu verwenden, um die benannten Entitäten in diesem Artikel zu finden.

Worum könnte es in dem Artikel gehen, wenn du die Namen gefunden hast?

Zusammen mit nltk wurden auch sent_tokenize und word_tokenize von nltk.tokenize vorimportiert.

Diese Übung ist Teil des Kurses

Einführung in die natürliche Sprachverarbeitung in Python

Kurs anzeigen

Anleitung zur Übung

  • Tokenisiere article zu Sätzen.
  • Zerlege jeden Satz auf sentences mit Hilfe eines Listenverständnisses in Wörter.
  • In einem Listenverständnis markierst du jeden tokenisierten Satz mit nltk.pos_tag() in Wortarten.
  • Zerlege jeden getaggten Satz mit nltk.ne_chunk_sents() in Named-Entity-Chunks. Zusammen mit pos_sentences gibst du das zusätzliche Schlüsselwortargument binary=True an.
  • Schleife über jeden Satz und jeden Chunk und prüfe, ob er ein Named-Entity-Chunk ist, indem du prüfst, ob er das Attribut label hat und ob chunk.label() gleich "NE" ist. Wenn ja, drucke diesen Brocken aus.

Interaktive Übung zum Anfassen

Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.

# 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)