NER con NLTK

¡Ahora vas a divertirte con el reconocimiento de entidades con nombre! Se ha precargado en tu espacio de trabajo un artículo de noticias raspado. Tu tarea consiste en utilizar nltk para encontrar las entidades nombradas en este artículo.

¿De qué podría tratar el artículo, dados los nombres que has encontrado?

Junto con nltk, se han preimportado sent_tokenize y word_tokenize de nltk.tokenize.

Este ejercicio forma parte del curso

Introducción al procesamiento de lenguaje natural en Python

Ver curso

Instrucciones de ejercicio

  • Tokeniza article en frases.
  • Convierte cada frase de sentences en palabras utilizando una lista de comprensión.
  • Dentro de una comprensión de lista, etiqueta cada frase tokenizada en partes de la oración utilizando nltk.pos_tag().
  • Trocea cada frase etiquetada en trozos de entidad con nombre utilizando nltk.ne_chunk_sents(). Junto con pos_sentences, especifica el argumento de palabra clave adicional binary=True.
  • Haz un bucle sobre cada frase y cada fragmento, y comprueba si es un fragmento de entidad con nombre comprobando si tiene el atributo label, y si chunk.label() es igual a "NE". Si es así, imprime ese trozo.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

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