Comparação de strings

Comparação de strings

Como fazer para compara duas palavras de uma lista?

Normalmente, utiliza-se uma função nativa do excel, como o procv ou um corresp.

Mas, na vida real, nem sempre dá para fazer assim. Há diferenças de padrões de nomes, digitação de informação manual, etc, de modo que possa ser interessante fazer uma busca por similaridade.

Por exemplo, digamos que as palavras “Marrocos” e “Martocos” estão na minha lista. Provavelmente a segunda é um erro de digitação, e na verdade a pessoa queria se referir à primeira palavra.

Existem funções que calculam a similaridade entre duas strings, e vou descrever uma aqui.

Vide a planilha em https://drive.google.com/open?id=1UFInO4JFG14ymFqWt1hkyGnbbGVM2E9L (lembre-se de ativar macros).

A macro dentro dela utiliza um método de contagem de letras.

image001.png

Ela conta todos os “a”s das palavras, depois todos os “b”s, etc. E calcula a distância entre o número de “a”s da primeira e da segunda palavra. Faz isto para todas as letras.

Se forem iguais, a distância vai ser 1. se forem bem parecidas, a distância vai ser próxima de 1. Quanto próxima de  zero, menos iguais serão.

É uma função relativamente simples, que pode ser adaptada para utilização em vários casos.

Um exemplo real de utilização é para saneamento do cadastro de materiais. Empresas podem ter 100 mil, 200 mil materiais cadastrados, e muitos deles podem ser os mesmos. Mas uma busca manual de todo o cadastro é impensavelmente longa e trabalhosa. O algoritmo de similaridade pode ser utilizado para fazer um primeiro filtro, deixando apenas as candidatas mais óbvias.

Já ouvi dizer que, a fim de saber se a autoria de um livro é de autor X ou Y, utiliza-se técnica semelhante. Conta-se as palavras, e faz-se uma comparação entre este “diagrama” espectral do livro e o diagrama dos autores. Cada um tem um estilo favorito, palavras de que gosta, que acabam sendo as mais utilizadas, principalmente em livros e textos longos.

Em caso de dúvidas ou sugestões, utilizar os comentários.

Arnaldo Gunzi


Ideias técnicas com uma pitada de filosofia: https://ideiasesquecidas.com

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/

Fev 2016

Postado em VBA

9 comentários sobre “Comparação de strings

  1. Boa noite Arnaldo Gunzi, Tentei baixar o arquivo do Excel mas parece que ele não está mais no caminho informado. Poderia colocá-lo novamente? Obrigado e parabéns pelo site. Eduardo

    Curtir

  2. Muito legal, mas como isso se aplicaria na prática no exemplo proposto de saneamento de um cadastro de 100mil linhas, sendo que o código compara A1 x B1, A2 x B2…. Como eu encontraria os itens possivelmente duplicados? Eu teria que copiar um item da lista A para todas as linhas da lista B, para saber quais os itens da lista A tem maior semelhança, e repetir esse processo manual item por item da lista?

    Curtir

    1. Luiz. Você teria que fazer via macro. Uma macro para ler as bases de dados, e comparar as combinações 2 a 2. O resultado final seria uma lista dos suspeitos de serem o mesmo. Usei isto em um projeto de saneamento de cadastro. Tinha uns 100 mil itens. Ficou uma semana processando.

      Curtir

Deixe um comentário