Processamento de Linguagem Natural - Reconhecimento de Entidade nomeada
O Processamento de Linguagem Natural (PLN) é um campo da Inteligência Artificial
(Jurafsky and Martin, 2008) cujo o objetivo é compreender, analisar e gerar a língua
natural para os Humanos, de forma a que, eventualmente, seja possível nos dirigirmos a
um computador da mesma forma que nos dirigimos a uma pessoa.
Nesse sentido, a área de PLN é emergente e alvo de muita pesquisa nos últimos anos, visto que representa um grande avanço no campo das inteligências artificiais e um passo importante na evolução da tecnologia.
O campo de PLN possui ampla utilização em diferentes processos e diferentes áreas de atuação. Podemos exemplificar a Sumarização Automática como uma aplicação interessante do PLN, que consiste na produção de um resumo legível de uma parte de algum texto, como resumir a seção de artigos esportivos de um jornal. Também podemos reconhecer aplicações de tradução, que têm como objetivo traduzir de textos de uma língua para outra sem perda de contexto e significado e compreensão da língua natural, que envolve compreensão de semântica e representações mais formais de texto.
Entretanto, o presente artigo terá foco no estudo do Reconhecimento de Entidade Nomeada, reconhecido pela sigla NER (Named Entity Recognition).
Reconhecimento de Entidade Nomeada
É um subprocesso da extração de informação que visa a localização e classificação de entidades nomeadas mencionadas em um texto em categorias pré-definidas como nomes de pessoa, localizações, organizações, expressões de tempo, quantidades de dinheiro, entre outras.
Podemos exemplificar o trabalho de um modelo NER dessa maneira:
Frase inicial: João trabalha na Apple desde 1996.
Resultado do modelo: João [pessoa] trabalha na Apple [organização] desde 1996 [tempo].
O problema do reconhecimento de entidade nomeada geralmente quebrada em dois problemas distintos, sendo eles a detecção de nomes e a classificação dos mesmos pelo tipo de entidade a qual eles se referem. A primeira parte do problema é referente a segmentação, visto que os nomes são sequências contíguas de tokens, de maneira que “Banco do Brasil” é um nome, e a substring “Brasil” também. A outra parte do problema é um problema ontológico de pertencimento de cada token a uma categoria.
Como um modelo NER funciona?
Os modelos NER podem ter diferentes fórmulas de funcionamento, mas hoje seguiremos as estratégias apontadas neste artigo. A fórmula contém quatro passos principais, sendo eles a incorporação, codificação, atenção e predição. Vamos entender cada passo e seus conceitos.
Representações incorporadas de palavras - conhecidas como vetores de palavras - são muito utilizadas nas tecnologias de processamento de linguagem natural. Elas permitem o tratamento de palavras como unidades de significado.
Incorporação
Nesse primeiro passo, utilizamos uma tabela de incorporação, (tabela de embedding), que mapeia vetores binários grandes, espaçados e compridos em vetores menores e mais densos. A exemplo disso, vamos pensar em uma sequência de caracteres ASCII, que possuem 256 valores possíveis. Assim, podemos representar cada valor como um vetor binário de 256 dimensões. O valor de a seria um vetor de zeros com um 1 na coluna 97.
Para melhor entendimento, suponha que temos apenas 10 caracteres disponíveis, de “a“ até “j“.
Nesse cenário, a letra “b“ seria representada por:
0100000000
Isso é chamado de “one hot encoding“, no qual diferentes valores recebem vetores completamente diferentes.
Encodificação
Para entender melhor esse passo, é interessante entender como funciona a tokenização das palavras. Para isso, recomendo este artigo ou as referências desse livro.
Dada uma sequência de vetores de palavras, a parte de codificação vai computar uma *matriz de sentença, na qual cada linha representa o significado de cada token no contexto do resto da sentença.
Nessa tecnologia, utiliza-se uma tecnologia chamada “Bidirectional recurrent neural networks“, ou RNNs. Para entender mais sobre como elas funcionam, leia a definição aqui. O vetor de cada token é computado em duas partes, uma para um passe pra frente e outra para um passo para trás. Para pegar o vetor completo, basta juntar os dois passes.
Isso tem um papel crucial para a predição correta das entidades, visto que o resultado desse processo vai representar os token dentro de um contexto, uma das maiores dificuldades quando falamos em processamento de linguagem natural.
“Attend“
Esse passo vai reduzir a matriz produzida pelo passo anterior para um único vetor, para que este possa ser passado para uma rede neural feedforward* (basicamente as conexões dos nós não formam um ciclo, e sim passam para a frente).
A vantagem desse passo em relação a outros mecanismos de redução é que este mecanismo recebe um input auxiliar de contexto. Isso é importante pois, quando reduzimos a matriz para um vetor, estamos perdendo informação. Assim, o vetor de contexto conduz a rede a descartar as informações corretas, para que o resumo desse vetor seja direcionado para a rede. Pesquisas recentes apontam que esse tipo de mecanismo e suas variações podem ser usados para criar soluções elegantes e poderosas. Um exemplo é descrito no artigo de Parikh et al. (2016).
Predição
Agora que o texto está reduzido para um único vetor, podemos aprender a representação alvo (entidade) e podemos fazer uma predição estruturada usando a rede como um controlador de estado.
E pronto! Agora nosso modelo faz a predição de entidades, classes ou labels em um texto, levando em conta o contexto.
É importante discutir problemas como overfitting e underfitting no treinamentos desse tipo de modelo. O excesso de dados de treinamento parecidos pode levar ao overfitting, onde o modelo faz boas predições apenas para os dados de treino, apresentando dificuldade de generalização. Para isso, são cruciais os dados diversos para treinamento do modelo. Já o underfitting é a insuficiência de dados de aprendizado, fazendo com que o modelo fique ineficiente e não consiga predizer nem dados de treinamento nem em produção.
Conclusão
Tecnologias de Processamento de Linguagem Natural são extremamente úteis e interessantes no cotidiano, principalmente para automatizar tarefas repetitivas que envolvem processamento de texto. Inúmeras pesquisas estão buscando evoluções nos modelos matemáticos, redutores e outras operações essenciais para a criação de novos modelos de predição, e aprender como esses mecanismos funcionam é extremamente interessante, e com certeza aponta para uma tecnologia que será muito usada.
Referências
Wikipedia
Handbook of Natural Language Processing (Robert Dale, Hermann Moisl, Harold Somers)
Parikh et al. (2016)
Jurafsky, D. and Martin, J. H. (2008). Speech and Language Processing. Prentice Hall,
2nd edition.