Como reconhecer Entidades na língua portuguesa usando spaCy

Henrique Gomes
Bots Brasil
Published in
2 min readFeb 26, 2019

O spaCy é uma biblioteca de processamento de linguagem natural (para Python) que tem desde funcionalidades “básicas” como Tokenização, que consiste em um pré-processamento do texto, até mais complexas que permitem treinar modelos estatísticos para classificação de textos.

Nesse artigo, implementaremos o Reconhecimento de Entidades Mencionadas.

Reconhecimento de Entidades Mencionadas (REM) é uma sub-tarefa da extração de informações e tem como objetivo localizar e classificar elementos do texto em categorias pré-definidas como nome de pessoas, organizações, lugares, datas,e outras classes — Wesley Seidel Carvalho

Definição que Wesley usou em sua dissertação, a qual ajudou na minha iniciação científica. 🙏

Na imagem, temos uma árvore de categorias de entidades. São apenas exemplos de possíveis entidades que encontraremos nos textos, cada contexto tem suas especificidades.

Árvore de Entidades, extraída de “Desafios na avaliação conjunta do reconhecimento de entidades mencionadas: O Segundo HAREM.”, 2008. MOTA, Cristina; SANTOS, Diana

Passo-a-Passo (código completo 👇)

Primeiramente, vamos instalar as bibliotecas que iremos utilizar através do PIP, temos a instalação do spaCy e o download do modelo PT-BR:

$ pip install -U spacy
$ python -m spacy download pt

Em seguida, importamos o spaCy e passamos como parâmetro para nlp o modelo em português.

import spacy
nlp = spacy.load(‘pt’)

Agora, vamos abrir um texto.txt qualquer (você pode fazer isso de diversas formas). Depois, nós lemos o arquivo a partir do modelo em português.

arq = open(r'C:\Users\texto.txt', enconding = 'utf8')
doc = nlp(arq.read())

Outra opção é ler diretamente do código, no caso você substituiria as duas linhas acima por essa:

doc = nlp(u’Aqui vai o texto que você pretende extrair entidades.’)

Por fim, a saída consiste em percorrer o arquivo Doc, buscando as ents e printando as entidades e suas categorias.

print([(entity, entity.label_) for entity in doc.ents])

Se você tem curiosidade em saber como é possível avaliar um Sistema de Reconhecimento de Entidades, ou seja, sua assertividade, saiba que existem três métricas: Precisão, Cobertura e Medida-F e até uma Avaliação conjunta desses sistemas, chamada HAREM.
Recomendo a dissertação do Wesley S. Carvalho caso queira aprofundar esses conceitos.

Além disso, não deixe de visitar o spaCy e conferir todas as funcionalidades linguísticas que essa belezinha nos oferece.

Lembrando, que implementamos um modelo pré treinado pelo spaCy. O próximo passo é treinar o seu modelo que deve levar em conta as entidades do seu contexto.

Copie e cole na sua IDE; Rode; Se quebrar, conserte. 👨‍💻

--

--