NER com NLTK
Agora você vai se divertir com reconhecimento de entidades nomeadas! Um artigo de notícias raspado já foi carregado no seu ambiente. Sua tarefa é usar o nltk para encontrar as entidades nomeadas nesse artigo.
Sobre o que o artigo pode ser, considerando os nomes que você encontrou?
Além do nltk, sent_tokenize e word_tokenize de nltk.tokenize já foram importados previamente.
Este exercício faz parte do curso
Introdução ao Processamento de Linguagem Natural em Python
Instruções do exercício
- Tokenize
articleem frases. - Tokenize cada frase em
sentencesem palavras usando uma list comprehension. - Em uma list comprehension, marque cada frase tokenizada com classes gramaticais usando
nltk.pos_tag(). - Separe cada frase etiquetada em blocos de entidades nomeadas usando
nltk.ne_chunk_sents(). Junto compos_sentences, especifique também o argumento nomeadobinary=True. - Faça um loop por cada frase e por cada bloco, e verifique se é um bloco de entidade nomeada testando se ele tem o atributo
labele sechunk.label()é igual a"NE". Se for, imprima esse bloco.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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)