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.
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
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
CurtirCurtir
Eduardo, atualizei a ferramenta e o link para esta.
Vide o texto do post.
CurtirCurtir
Onde está a macro? Não achei no arquivo
CurtirCurtir
SENSACIONAL! Obrigado por compartilhar esse conhecimento
CurtirCurtido por 1 pessoa
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?
CurtirCurtir
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.
CurtirCurtir
Excelente. Mas poderia detalhar um pouco mais o algoritmo? Achei fantástico.
CurtirCurtir
Esse algoritmo só conta o número de caracteres iguais em cada string e compara. É bem simples, e rápido, embora impreciso. Há diversos outros bem mais complexos.
CurtirCurtido por 1 pessoa