Reconhecimento de Entidades Nomeadas: entidades, subentidades, relacionamentos e ambiguidade
O reconhecimento de entidades nomeadas (REN) — Named Entity Recognition (NER) — tem como objetivo identificar e classificar entidades nomeadas presentes em textos escritos em linguagem natural. É uma técnica bastante utilizada na área de Processamento de Linguagem Natural, seja no meio jurídico, econômico ou industrial.
Por definição, uma entidade nomeada é uma expressão que pode ser extraída de um texto e é essencial para compreender, concluir ou ignorar um determinado contexto ou ação.
Tendo em vista que entidades nomeadas, na realidade, são substantivos, ou seja, são palavras cuja classe gramatical é um substantivo ou nome (palavras substantivadas também podem ser consideradas), dizemos que o REN consiste, justamente, na identificação de nomes, em sua grande maioria próprios, de entidades presentes em textos em sua forma livre [4]. Logo, a entrada para um algoritmo que visa extrair entidades nomeadas é um texto em sua forma não estruturada e sua saída é uma representação estruturada.
Logo abaixo dois tipos interessantes de entidades nomeadas, são descritos.
Entidades Pré-construídas (do inglês, Prebuilt entity)
Categorias comuns de entidades nomeadas são as pré-construídas, como pessoa, data, número, local ou organização. Sendo assim podemos chamar essas entidades de pré-construídas[1]. Um exemplo de enunciado que contém este tipo de entidade é o seguinte:
Imagine que esse texto fosse entrada para um sistema de extração de entidades, como saída teríamos:
Sendo assim, quando lemos a sentença “Ana viajou para São Paulo na quarta-feira”, podemos identificar três tipos de categorias de entidades nomeadas pré-construídas: Pessoa, Local e Data [4]. No entanto, dependendo da necessidade, categorias de entidades nomeadas podem ser criadas.
Entidades aprendidas por máquina (do inglês, Machine learned (ML) entity)
Outras representações de entidades podem ser não triviais, como as entidades aprendidas por máquina (ML), que são expressões extraídas por meio de algoritmos de aprendizado profundo, os quais utilizam exemplos rotulados para extrair entidades de um texto [1]. Sendo assim, o algoritmo de extração de entidades é alimentado com rótulos e, a partir deles, aprende os padrões de extração de entidades. Logo, qualquer expressão sobre a qual venha se ter interesse, e que faça sentido ser uma entidade, pode ser extraída como entidade nomeada. Exemplo de sentença:
Tendo em vista que podemos criar uma nova categoria de entidade, dando um nome e um tipo a ela, como saída da sentença 2 poderíamos vir a ter:
Quando lemos a sentença “Deixe a caixa na sala e volte para o quarto”, podemos identificar dois tipos de categorias de entidades nomeadas definidos: Objeto e Cômodo da Casa.
Subentidades (do inglês, subentities)
Uma entidade pode ser composta por entidades menores, também chamadas de subentidades. Uma subentidade pode ser definida como uma expressão ou um conjunto de expressões que complementam uma entidade. Observe o seguinte texto:
Dada essa sentença, em alguns casos pode ser que nós desejemos obter o endereço como um todo. Mas o que isso significa? Observe o seguinte processamento:
Ou seja, toda a sentença “endereço São Caudas, 22, E. Farias, Manaus, Amazonas” é uma entidade e possui a categoria localização.
Porém, podemos notar que a sentença é composta pelas seguintes partes: nome do bairro, número da casa, nome da rua, cidade e estado. Cada uma dessas partes menores que compõe a entidade “endereço” podem ser chamadas de subentidades. Sendo assim, a entidade endereço é formada, justamente, por essas subentidades, as quais podem ser extraídas individualmente, conforme a necessidade de quem as deseja extrair.
Sendo assim, realizando um novo processamento na sentença 3 poderíamos obter o seguinte:
Vale ressaltar que uma subentidade também é uma entidade. No fim, extrair a super entidade ( “entidade completa”) ou as subentidades, depende apenas de quem está utilizando o texto e para qual intuito. De qualquer modo, extrair entidades menores pode ajudar a compreender melhor um texto, a partir do relacionamento das entidades que o compõe.
Entidades Relacionadas
Em alguns contextos duas entidades podem se relacionar por meio de conectivos como preposições.
Observe o seguinte exemplo, usado também em um contexto anterior:
Nessa frase, é certo que temos três entidades. No entanto, podemos notar que duas delas se relacionam através de uma preposição (“na”). Pode ser que para melhor resolução de um problema, dizer que “caixa” se relaciona com “sala” seja necessário. Imagine que desejemos programar um sistema que deverá obedecer comandos que visam dizer o que ele deve fazer. Nesse contexto, responder a pergunta: “onde devo deixar a caixa?”, parece algo bastante útil. Além disso, como exemplo real de sistema como esse temos a Amazon Alexa, que funciona por meio de controle de voz.
Retornando a sentença 4, um algoritmo voltado para extração de entidades nomeadas e que leve em consideração entidades relacionadas por meio de conectivo, nesse caso, poderia realizar o seguinte processamento:
Observe que, agora, como saída do algoritmo, não temos mais a [Entidade:Categoria], mas, na verdade [Entidade:Entidade], ou seja, os dois pontos (“:”) estão indicando um relacionamento entre as duas entidades.
Relacionamentos entre entidades pode ser algo bastante importante, principalmente, quando os textos possuem verbos que visam designar ações. Quando observamos a sentença “Deixe a caixa na sala e volte para o quarto”, precisamos perceber que não apenas saber o que deixar é interessante, mas também onde deixar.
Entidade e ambiguidade
Reconhecer e descrever categorias a entidades nomeadas, às vezes, pode ser algo complexo, principalmente, quando o texto possui palavras ambíguas, ou seja, que podem remeter a uma ou mais categoria ou que seu contexto não esteja bem definido (não seja determinístico). Sendo assim, é necessário pensar em formas de compreender qual é a verdadeira categoria da entidade a ser extraída [3].
Um exemplo de sentença que possui ambiguidade, porém contexto determinístico, é a seguinte:
Observe que na setença 5, Harley Davidson pode se referir tanto a um nome de pessoa, como ao nome da empresa Harley Davidson. Uma forma de resolver e extrair Harley Davidson como uma entidade que se refere a uma empresa desse texto é utilizar a própria palavra “empresa” presente na sentença como identificador de significado.
Conclusão
Nesse artigo, estudamos o que são entidades nomeadas, alguns tipos de entidades existentes, subentidades e vimos que nem sempre determinar entidades é uma tarefa fácil.
Caso deseje estudar outros tipos de entidades que também podem ser extraídas de um texto, pode ser interessante consultar [1].
Referências
[1] Entity types — LUIS — Azure Cognitive Services | Microsoft Docs. Site: https://docs.microsoft.com/en-us/azure/cognitive-services/luis/luis-concept-entity-types. Acesso realizado em 26 de Janeiro de 2022.
[2] Machine-learning entity type — LUIS — Azure Cognitive Services | Microsoft Docs. Site: https://docs.microsoft.com/en-us/azure/cognitive-services/luis/luis-concept-entity-types. Acesso realizado em 24 de Janeiro de 2022.
[3] Fonseca, E., Chiele, G. e Vieria, R. Reconhecimento de Entidades Nomeadas para o Português Usando o OpenNL. Site: https://repositorio.pucrs.br/dspace/bitstream/10923/14040/2/Reconhecimento_de_Entidades_Nomeadas_para_o_Portugues_Usando_o_OpenNLP.pdf. Acesso realizado dia 26 de Janeiro de 2022.
[4] J. Li, A. Sun, J. Han and C. Li, “A Survey on Deep Learning for Named Entity Recognition,” in IEEE Transactions on Knowledge and Data Engineering, vol. 34, no. 1, pp. 50–70, 1 Jan. 2022, doi: 10.1109/TKDE.2020.2981314.