Como reconhecer nomes e entidades em Python

Como reconhecer nomes e entidades em Python

Nesse artigo vamos entender um pouco melhor como é possível reconhecer entidades nomeadas usando algoritmos computacionais. Esse tipo de tarefa é muito importante no contexto de PLN visto que ela permite a extração de informações e também outras aplicações.

Esse artigo mostrará uma definição para esse tipo de tarefa e também um exemplo bastante claro de como você pode usar o python para reconhecer entidades nomeadas.

Gosta de aprender sobre processamento de linguagem natural? Veja nosso curso gratuito.

O que é reconhecimento de entidades nomeadas?

Reconhecimento de entidade nomeada (NER – em inglês – Named Entity Recognition) (também conhecida como identificação de entidade, segmentação de entidade e extração de entidade) é uma sub-tarefa de extração de informações que procura localizar e classificar menções de entidade nomeada em texto não estruturado em categorias predefinidas, como nomes de pessoas e organizações, locais, códigos médicos, expressões de tempo, quantidades, valores monetários, percentagens, etc.  

A maioria das pesquisas sobre sistemas NER foi estruturada como um bloco de texto não anotado, como este:   Jim comprou 300 ações da Acme Corp em 2006.   Ao produzir um bloco de texto anotado que destaca os nomes das entidades:  

[Jim] Pessoa comprou 300 ações da [Acme Corp.] Organização em [2006] Tempo.  

Neste exemplo, um nome de pessoa, um nome de empresa e uma expressão temporal foram detectados e classificados.  Os sistemas de NER de última geração para o inglês produzem um desempenho quase humano. Por exemplo, o melhor sistema que entra no MUC-7 obteve 93,39% da medida F, enquanto os anotadores humanos pontuaram 97,60% e 96,95%.     

Esse trecho foi adaptado da wikipedia

Como implementar usando Python (NLTK)

Primeiramente crie algum texto para ser analizado:    

import nltk

paragraph = "The Taj Mahal was built by Emperor Shah Jahan"

    Faça a separação de palavras:  

# separa cada palavra
words = nltk.word_tokenize(paragraph)
# faz o POS-Tagging
tagged_words = nltk.pos_tag(words)

    Realize o NER e desenhe:  

# aqui você poderá encontrar entidades como: 
# orgnizações, pessoas, localizações, data, tempo, porcentagem, lugares, posição global

named_entity = nltk.ne_chunk(tagged_words)
named_entity.draw()

Quer acessar um exemplo implementado em Python sobre como reconhecer entidades nomeadas? Acesse nosso repositório no Github:

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e a forma com que ela pode transformar vidas!

Deixe uma resposta