Normalizador Neural de Datas e Endereços

06/27/2020 ∙ by Gustavo Plensack, et al. ∙ University of Campinas 0

Documents of any kind present a wide variety of date and address formats, in some cases dates can be written entirely in full or even have different types of separators. The pattern disorder in addresses is even greater due to the greater possibility of interchanging between streets, neighborhoods, cities and states. In the context of natural language processing, problems of this nature are handled by rigid tools such as ReGex or DateParser, which are efficient as long as the expected input is pre-configured. When these algorithms are given an unexpected format, errors and unwanted outputs happen. To circumvent this challenge, we present a solution with deep neural networks state of art T5 that treats non-preconfigured formats of dates and addresses with accuracy above 90 in some cases. With this model, our proposal brings generalization to the task of normalizing dates and addresses. We also deal with this problem with noisy data that simulates possible errors in the text.

READ FULL TEXT VIEW PDF
POST COMMENT

Comments

There are no comments yet.

Authors

This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.

1 Introdução

Lidar com formatos variados de datas e endereços é uma tarefa rotineira para qualquer ser humano. Somos capazes de entender diversos formatos de datas e endereços de forma trivial. No entanto tal atividade tratada por computador pode ser complexa. A complexidade vem do fato da grande variedade de formas que essas entidades podem possuir. O caminho mais tradicional para essa tarefa é o uso de técnicas clássicas de Processamento de Linguagem Natural (PLN), em especial o uso do Regular Expression (RegEx) que é amplamente aplicado em normalizações de textos e inclusão/exclusão de caracteres. Outras ferramentas como o Dateparser [1] são empregadas no tratamento de normalização de datas e apresentam um bom desempenho. Esses métodos de normalização são baseados em estruturas rígidas e apresentam dois problemas: não existe generalização da solução, isto é, se existir um formato não previsto a priori o método falhará. Possuem uma tolerância pobre a dados ruidosos. Este artigo apresenta uma solução eficiente que trata esses dois problemas. Nossa proposta é utilizar um modelo de rede neural profunda estado da arte em PLN.

Nos últimos anos, em particular depois do desenvolvimento da arquiterura de rede neural do transformer [2], as técnicas de PLN, em particular modelos de auto atenção ajudaram no avanço de aprendizado profundo em outras áreas: problemas com dados estruturados em detecção de fraude elétrica [3] e problemas de visão computacional [5]. O grande avanço das técnicas de PLN corrobora para o desenvolvimento prático de soluções em diversos nichos. Neste artigo, treinamos o modelo   T5 [6] para lidar com tais situações. Em essência desenvolvemos dois modelos de normalização: um para datas e outro para endereços. Para o treinamento desses modelos, criamos dois datasets sintéticos, disponíveis neste repositório do GitHub.

O texto é apresentado da seguinte forma: a seção 2 apresenta trabalhos relacionados, a seção 3 aborda a metodologia, a seção 4 detalha como os datasets de endereço e data foram construídos. Os resultados dos experimentos são mostrados na seção 5. A conclusão e próximos desafios estão nas seções 6 e 7 respectivamente.

2 Pesquisas relacionadas

Normalização de texto é uma das tarefas mais tradicionais em PLN. O artigo [7] realiza normalização de texto com um modelo que utiliza redes neurais recorrentes (RNNs), entretanto o principal foco dessa pesquisa é transformar as palavras escritas normalizadas em uma forma audível, falada. Em [8] é apresentado uma normalização lexical de textos com o uso do BERT [9] que enquadra a normalização lexical como uma tarefa de previsão de token. O trabalho descrito em [10] é o mais relacionado ao nosso projeto. Nele os autores treinaram um modelo de RNN em um grande dataset que contém formas de texto falada com o objetivo do modelo aprender a correta normalização do texto, entretanto os autores utilizaram filtros na saída da rede neural para obter melhores resultados.

A natureza do problema de normalização de datas e endereços envolve uma grande coleção de padrões de reconhecimento, de modo que é inviável construir um método sem aprendizado que cubra todos as possibilidades. É justamente nesse ponto onde os algoritmos de aprendizado de máquina profundo são úteis devido à sua capacidade de generalizar para padrões não observados na etapa de treinamento.

3 Metodologia

Nessa pesquisa estudamos um modelo de PLN que pode ser aplicado em etapas de pós-processamento na tarefa de leitura automática de documentos [11]. Uma vez identificado o texto de uma data ou endereço, este será fornecido como entrada para o modelo estudado que deve deve retornar o formato canônico deste texto. A avaliação desempenho será feita através do acurácia com correspondência exata entre a string gerada pelo modelo e o valor esperado.

3.1 Normalização de Datas

Desenvolvemos neste artigo três tipos de normalizações para datas:

  • Datas Completas: DD/MM/AAAA

  • Datas Incompletas: DD/MM ou MM/AAAA

  • Datas Relativas: há dias

3.1.1 Datas Completas

A saída esperada da normalização de datas completas tem a forma: DD/MM/AAAA. Com diferentes formatos e amostras, criamos um dataset com um intervalo de anos, entre até . O conjunto de treino possui diferentes formatos e o conjunto de teste os formatos remanescentes.

3.1.2 Datas Incompletas

A saída esperada da normalização de datas incompletas possui o seguinte formato: DD/MM ou MM/AAAA. Para DD/MM, o dataset possui amostras, para MM/AAAA, o dataset possui amostras. Os diferentes formatos de amostras em ambos os casos também foram dividios em amostras para treino e para testes.

3.1.3 Datas Relativas

A saída esperada da normalização de datas relativas possuem as seguintes formas: para datas futuras em dias, meses ou anos, o número de dias, meses ou anos é seguido da letra dias, dias, ou anos. Para datas no passado é acrescentado o sinal de negativo. Com mais detalhes, os formatos são:

  1. dias futuro ou passado :

  2. meses futuro ou passado :

  3. anos futuro ou passado :

Para experimentos mais robustos, variamos o tamanho do dataset em 3 tamanhos. O dataset de datas relativas possui tipos diferentes de formatos, onde formatos são escolhidos aleatoriamente e utilizados somente no conjunto de testes, também existe a opção de escolha de lingua: Português ou Inglês e nível de ruído.

3.2 Normalizador de Endereços

O rótulo do experimentos de endereço possui a seguinte estrutura: logradouro, número, complemento, bairro, cidade e estado. Os variados tipos do dataset incluem formatos de permutação dessa ordem, ruas e avenidas escritas com a palavra logradouro antes do nome e outros tipos. Os experimentos dessa solução são mostrados na tabela 4.

3.3 Ruído

Uma das grandes vantagens propostas para a utilização de métodos neurais para normalização é a possibilidade lidar com ruídos, isto é, valores inesperados que podem ocorrer devido à erros humanos ou de tecnologias como OCRs. Tendo em mente estas possibilidades, durante o treinamento o modelo será apresentado aos seguintes formatos de ruídos:

  • troca de caracteres semelhantes222Alguns caracteres que podem ser semelhantes em algumas fontes são: , ç , , , , .

  • remoção de caracteres aleatórios.

  • inclusão de caracteres aleatórios.

  • quebra inesperada de palavras.

Para o caso dos endereços, também foram considerados ruídos abreviações comuns, como é o caso de:

3.4 Normalização Unificada

Levando em conta que o treinamento do T5 descrito em [6] foi feito considerando múltiplas tarefas, iremos avaliar também a capacidade deste modelo de normalizar endereços e datas com uma mesma instância do modelo, considerando a inclusão de prefixos ou não.

Usando esta metodologia, propomos avaliar a capacidade de genaralização do normalizador neural de datas e endereços, sua imunidade à ruído e também sua capacidade de normalizar datas e endereços de forma unificada.

4 Datasets

Um ponto chave da nossa proposta é a criação dos datasets. Existem algumas dificuldades em encontrar bons conjuntos de dados para o problema de normalização de datas e endereços, pois é necessário que os dados possuam grande variedade de formatos e estejam em português. Sendo assim, a abordagem adotada por nós neste trabalho foi criar datasets sintéticos para datas e endereços.

4.1 Dataset para Datas

A criação do dataset de datas, foi realizado a partir de formatos encontrados nas seguintes fontes:

  • DateParser [1];

  • LexNLP [12];

  • Wikipédia e portais de notícia;

O ponto mais significativo na criação deste dataset é a variabilidade. Este fator introduz dificuldade ao modelo de prestar muita atenção aos dados do conjunto de treino, de modo a evitar a memorização dos formatos vistos em tempo de treinamento e melhorar a capacidade de generalizaçao do modelo.

Ao todo o dataset possui formatos para datas absolutas, para datas incompletas e para datas relativas para o português brasileiro. No caso da língua inglesa, foram considerados formatos para datas absolutas, para datas incompletas e para datas relativas. Estes formatos variam entre si alterando os separadores, forma de escrita dos números e preposições no caso das datas relativas.

A implementação do gerador do dataset sintético está disponível neste repositório do GitHub na pasta e mais detalhes sobre sua utilização e funcionalidades estão no README do repositório supramencionado.

4.2 Dataset para Endereços

O dataset de endereços foi criado com o uso de uma lista de CEPs disponibilizada em [13]. Com os valores de CEP reais, utilizamos a API disponibilizada por [14] para construir um dataset com nomes reais de logradouros, bairros, cidades e estados brasileiros. Estes foram combinados com valores aleatórios de números e formatos de complementos de modo a apresentar formatos de endereços em português brasileiro. A implementação pode ser encontrada neste repositório do GitHub na pasta e mais detalhes sobre sua utilização e funcionalidades estão no README do repositório supramencionado.

5 Experimentos

A motivação para a escolha do modelo T5 se baseou em três pontos:

  1. o modelo é estado da arte em PLN;

  2. o T5 possui codificador e decodificador;

  3. é possível utilizar o Google colab no treinamento com a versão do T5-small.

O T5 é um dos poucos modelos de PLN que a entrada e saída são textos, ao contrário do BERT [9] que só possui codificador, o T5 já inclui a geração de texto na etapa de decodificação. Utilizamos o modelo e tokenizador da Hugging Face [15], que é a biblioteca mais famosa para modelos de PLN estado da arte com arquitetura transformers.

Utilizamos a acurácia como métrica de avaliação, onde a predição do modelo precisa ser exatamente igual ao rótulo do dataset, logo qualquer caracter diferente predito é considerado como erro na amostra.

5.0.1 Configuração dos treinamentos

Todos os treinamentos foram realizados no Google colab utilizando GPU e não foi realizado grid-search nos hiperparâmetros. Utilizamos mini-batch de para os experimentos de datas completas, relativas e endereços e mini-batch de para datas incompletas. A learning rate e e otimizador AdamW foram usados em todos experimentos. Para os experimentos de datas utilizamos a sequência de entrada e saída de e respectivamente. Nos experimentos dos endereços a sequência para entrada e saída foi a mesma . O código com os notebooks estão no repositório do GitHub, logo a reprodução desses resultados pode ser executada de forma imediata.

5.1 Experimentos com Datas Completas

O dataset utilizado nesse experimento possui a seguinte configuração: amostras no intervalo de ano até , formatos utilizados para o treinamento e formatos utilizados para o teste, escolhidos de forma aleatória. O nível de rúido do dataset foi variado entre o intervalo até . O modelo também foi avaliado em datas abaixo e acima do conjunto de treinamento, isto é, datas inferior ao ano e acima de . Fizemos os testes com o dataset em português Brasil e em inglês, os detalhes dos resultados estão na tabela 1.

Tipo de Nivel de Datas no Datas Inf. Datas Sup.
data ruído intervalo intervalo intervalo
0.98 0.80 0.62
Datas-PT 10% 0.97 0.71 0.60
Completas 30% 0.99 0.72 0.58
50% 0.98 0.77 0.71
0.99 0.86 0.74
Datas-EN 10% 0.99 0.80 0.69
Completas 30% 0.99 0.76 0.55
50% 0.99 0.82 0.78
Tabela 1: Resultados dos experimentos de datas completas.

5.2 Experimentos com Datas Incompletas

O dataset desse experimento possui a seguinte configuração: para datas do tipo DD/MM existem amostras e para datas MM/AAAA existem amostras, ambas no intervalo de ano até . De forma similar, foi usado formatos para o treinamento e formatos para o teste. O nível de rúido do dataset foi variado entre o intervalo até . O modelo também foi avaliado em datas abaixo e acima do conjunto de treinamento, isto é, datas inferior ao ano e acima de . Fizemos os testes com o dataset em português Brasil e em inglês, os resultados estão na tabela 2.

Tipo de Nivel de Datas no Datas Inf. Datas Sup.
data ruído intervalo intervalo intervalo
0.97 0.68 0.53
Datas-PT 10% 0.98 0.72 0.40
Incompletas 30% 0.96 0.63 0.44
50% 0.99 0.65 0.42
0.96 0.83 0.49
Datas-EN 10% 0.98 0.80 0.45
Incompletas 30% 0.97 0.74 0.46
50% 0.96 0.74 0.51
Tabela 2: Resultados dos experimentos de datas incompletas.

5.3 Experimentos com Datas Relativas

O dataset utilizado nesse experimento possui formatos. Foram usados tipos para o treinamento e para o teste. O nível de ruído do dataset foi variado em dois cenários: sem ruído e com ruído de . Também foram utilizados três tamanhos de datasets com português brasileiro e inglês. Os detalhes dos resultados estão na tabela 3.

Tipo de Nivel Dataset Dataset Dataset
Data de Ruído 1800a 4500a 9000a
Datas-EN 0.98 0.96 0.94
Relativas 30% 0.79 0.80 0.89
Datas-PT 0.55 0.80 0.96
Relativas 30% 0.33 0.69 0.80
Tabela 3: Resultados dos experimentos de datas relativas. Dataset a amostras, Dataset a amostras e Dataset a amostras.

5.4 Experimentos com Endereços

Para o experimento de endereços, consideramos entradas de 22 formatos, onde cada formato possui aproximadamente amostras. A saída esperada possui o seguinte formato: Rua, número e complemento, bairro, cidade e estado. Diferente dos experimentos de datas, aqui o dataset só possui está em português brasileiro e o resultado é diretamente afetado pelo nível de ruído, como pode ser visto na tabela 4.

Tipo Nivel Pontuação
de Ruído Acurácia
0.69
Endereços 30% 0.65
50% 0.53
Tabela 4: Resultados da normalização de endereços.

5.5 Experimento Unificado

Fizemos um experimento unificado com um dataset que contém datas relativas, incompletas, completas e endereços. Esse dataset possui amostras com formatos, o dado não possui ruído e das amostras são de endereços. Utilizamos formatos distintos escolhidos aleatóriamente para a etapa de validação do experimento e todos os dados estão em português brasileiro. Para este experimento avaliamos a capacidade do modelo de lidar com datas e endereços em uma mesma instância, verificando a eficácia da aplicação do prefixo. Os resultados estão na tabela 5.

Tipo Nivel Pontuação
de Ruído Acurácia
0.79
Datas e Endereços 10% 0.80
sem prexixo 30% 0.75
0.78
Datas e Endereços 10% 0.83
com prexixo 30% 0.79
Tabela 5: Resultados do experimento unificado.

5.6 Discussão dos resultados

5.6.1 Datas

Com relação a diferença do resultado entre as línguas português brasileiro ou inglês devemos notar que o T5 foi pré-treinado em um corpus de texto em inglês, e os resultados foram melhores na língua inglesa em todos os casos de datas: completas, incompletas e relativas. Com relação ao nível de ruído que simula erros de OCR, o experimento mais sensível ao nível de ruído é o de data relativa, seguido de data completa. Nossa intuição é que o nível ruído está relacionado ao tamanho da sequência, as datas relativas em média possuem maior sequência do que as datas completas, que por sua vez são mais extensas que datas incompletas.

5.6.2 Endereços

Acreditamos que o ponto principal para resultado não ter atingido melhor acurácia vem do fato que o T5 foi pré-treinado em corpus inglês. Semelhante ao resultado de data relativa que também é diretamente afetado pelo nível de ruído. A solução de normalização de endereço possui uma sequência mais longa do que datas, e uma longa sequência com avaliação da acurácia dificulta bons resultados. Uma possível solução para contornar esse desafio seria o uso da métrica BLEU [16], mas ainda sim para o contexto de normalização de texto espera-se na saída que os resultados sejam exatamente iguais aos esperados. Por isso a acurácia com correspondência exata continua considerada por nós commo sendo a melhor métrica.

6 Conclusão

Este artigo apresentou uma solução para normalização de datas e endereços que soluciona dois problemas apresentados em métodos com estrutura rígida, tais como o ReGex e DateParser: generalização e tolerância a dado com ruído. Utilizamos um modelo de PLN com rede neural profundaT5 que contém na versão small milhões de parâmetros. Esse grande modelo traz um bom poder de generalização e tolerância a um dado com ruído.

Além disso, também foi desenvolvido dois datasets sintéticos, um para cada problema que são flexíveis na escolha do tamanho, da língua e no intervalo de interesse do dado. Com relação aos experimentos: em datas utilizamos as línguas português brasileiro e inglesa. A motiviação para o desenvolvimento do dataset em inglês é confirmada pelos melhores resultados dos experimentos de normalização de datas. Para o experimento de endereços notamos uma menor acurácia, entretanto esta tarefa de normalização requer uma saída canônica, o que torna mais difícil a avaliação por acurácia levando em conta a correspondência exata. Por último, o experimento unificado é relevante no sentido que comprova que o modelo desenvolvido neste artigo é robusto, pois com mais de tipos de formatos, nossa proposta conseguiu acurácia acima de considerando endereços e datas.

A reprodutividade sempre foi ponto chave dessa pesquisa, apesar de utilizarmos GPU para os experimentos, utilizamos GPU gratuitas do Google Colab e todo código com os datasets estão disponíveis em um repositório github. Também utilizamos o PyTorch Lightning para reprodução mais facilmente do código e gostaríamos de agradecer ao

Israel Campiotti por dicas valiosas e um template refinado de PyTorch Lightning.

7 Trabalhos Futuros

Pretendemos refazer alguns experimentos com um T5 treinado em português, acreditamos que existirá uma melhor relação de comparação entre a língua inglesa e portuguesa. Também desejamos incluir mais dicionários de diferentes línguas em nossos datasets, possibilitando que outros grupos de pesquisa utilizem essa solução.

Referências

  • [1] Dateparser. Python parser for human readable dates. https://github.com/scrapinghub/dateparser, 3 2020.
  • [2] Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and Kaiser, Łukasz and Polosukhin, Illia. Attention is All you Need. Advances in Neural Information Processing Systems 30. 2017.
  • [3] Paulo Finardi and Israel Campiotti and Gustavo Plensack and Rafael Derradi de Souza and Rodrigo Nogueira and Gustavo Pinheiro and Roberto Lotufo. Electricity Theft Detection with self-attention. ArXix 2020.
  • [4] Irwan Bello, Barret Zoph, Ashish Vaswani, Jonathon Shlens, and Quoc V. Le. Attention augmented convolutional networks, 2019.
  • [5] Irwan Bello, Barret Zoph, Ashish Vaswani, Jonathon Shlens, and Quoc V. Le. Attention augmented convolutional networks, 2019.
  • [6] Colin Raffel and Noam Shazeer and Adam Roberts and Katherine Lee and Sharan Narang and Michael Matena and Yanqi Zhou and Wei Li and Peter J. Liu.

    Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer.

    ArXiv 2019.
  • [7] Pramanik, Subhojeet and Hussain, Aman. Text normalization using memory augmented neural networks. Elsevier BV 2019.
  • [8] Muller, Benjamin and Sagot, Benoît and Seddah, Djamé. Enhancing BERT for Lexical Normalization.

    The 5th Workshop on Noisy User-generated Text (W-NUT) 2019.

  • [9] Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina. Enhancing BERT for Lexical Normalization. Proceedings of the 2019 Conference of the North 2019.
  • [10] Richard Sproat and Navdeep Jaitly. RNN Approaches to Text Normalization: A Challenge. ArXiv 2016.
  • [11] Zhang, Hao and Sproat, Richard and Ng, Axel H. and Stahlberg, Felix and Peng, Xiaochang and Gorman, Kyle and Roark, Brian. Neural Models of Text Normalization for Speech Applications. Computational Linguistics 2019.
  • [12] LexNLP package. LexNLP package. https://github.com/LexPredict/lexpredict-lexnlp, 6 2020.
  • [13] CEP. QualoCEP. https://www.qualocep.com/base-de-cep, 6 2020.
  • [14] WebmaniaBR. WebmaniaBR. https://webmaniabr.com/docs/rest-api-cep-ibge/, 6 2020.
  • [15] Thomas Wolf and Lysandre Debut and Victor Sanh and Julien Chaumond and Clement Delangue and Anthony Moi and Pierric Cistac and Tim Rault and R’emi Louf and Morgan Funtowicz and Jamie Brew. HuggingFace’s Transformers: State-of-the-art Natural Language Processing. ArXiv 2019.
  • [16] BLEU. BLEU. https://en.wikipedia.org/wiki/BLEU, 6 2020.