Como reconhecer Entidades na língua portuguesa usando spaCy
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.
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.