Algoritmos de comparación de texto y su uso en la comparación de marcas
Levenshtein, Jaccard, TF-IDF y embeddings semánticos: una guía técnica de los algoritmos que permiten medir cuánto se parecen dos nombres de marca.
Comparar dos textos parece trivial hasta que intentas programarlo. ¿"Coca" y "Koka" son parecidos? ¿Cuánto? ¿Y "Aurora" y "Amanecer"? Detrás de cada respuesta hay un algoritmo distinto. Esta guía recorre las familias de algoritmos de comparación de texto y cómo se aplican a la detección de conflictos entre marcas.
El problema de comparar cadenas
Una marca es, en su nivel más básico, una cadena de caracteres. Pero "parecerse" tiene varias capas:
- •Similitud léxica: se escriben parecido (mismos caracteres).
- •Similitud fonética: suenan parecido (mismo sonido).
- •Similitud semántica: significan lo mismo (mismo concepto).
Cada capa requiere su propia familia de algoritmos. Veámoslas.
Familia 1: Distancia de edición
Estos algoritmos miden cuántas operaciones hacen falta para transformar una cadena en otra.
Distancia de Levenshtein
La más conocida. Cuenta el número mínimo de inserciones, eliminaciones y sustituciones de un solo carácter.
Se calcula con programación dinámica, llenando una matriz que compara prefijos de ambas cadenas. Para normalizar el resultado entre 0 y 1, se divide la distancia entre la longitud de la cadena más larga.
Damerau-Levenshtein
Una variante que añade la transposición de caracteres adyacentes como una sola operación. Es útil porque muchos errores tipográficos son transposiciones.
Distancia de Jaro-Winkler
Diseñada originalmente para comparar nombres propios. Da más peso a los prefijos coincidentes, lo que la hace excelente para marcas, donde el inicio del nombre suele ser lo más distintivo.
Familia 2: Similitud basada en conjuntos
En lugar de operaciones de edición, estos métodos tratan las palabras como conjuntos de fragmentos y miden su solapamiento.
N-gramas
Un n-grama es una subcadena de n caracteres consecutivos. "Marca" en bigramas (n=2) es: ma, ar, rc, ca.
Coeficiente de Jaccard
Mide la similitud entre dos conjuntos como el tamaño de la intersección dividido por el de la unión:
- •Si dos marcas comparten muchos n-gramas, su índice de Jaccard se acerca a 1.
- •Es robusto a diferencias de longitud y a reordenamientos parciales.
| Algoritmo | Qué mide | Fortaleza para marcas |
|---|---|---|
| Levenshtein | Operaciones de edición | Erratas y variantes cortas |
| Damerau-Levenshtein | Edición + transposición | Errores tipográficos |
| Jaro-Winkler | Coincidencia con peso al prefijo | Nombres con inicio común |
| Jaccard sobre n-gramas | Solapamiento de fragmentos | Distinta longitud, reordenamientos |
Familia 3: Modelos vectoriales clásicos
Cuando comparamos frases o nombres compuestos, conviene representarlos como vectores.
TF-IDF
TF-IDF (Term Frequency – Inverse Document Frequency) pondera cada término por su frecuencia en el texto y su rareza en el conjunto. Palabras genéricas como "compañía" o "del" pesan poco; las distintivas, mucho. Luego se compara con similitud del coseno.
Familia 4: Similitud fonética
La similitud léxica no detecta que "Koaka" suena como "Coca". Para eso se codifica el sonido de la palabra.
- •Soundex: convierte la palabra en un código de letra + dígitos según las consonantes.
- •Metaphone y Double Metaphone: producen una representación más precisa de la pronunciación, con soporte multilingüe.
Dos nombres con el mismo código fonético se consideran homófonos. En español conviene adaptar las reglas al seseo, el yeísmo y la equivalencia B/V.
Familia 5: Similitud semántica con embeddings
La frontera más reciente. Algunos conflictos no son ni léxicos ni fonéticos, sino de significado: "Aurora" y "Amanecer", o "Manzana" y "Apple".
Los embeddings de palabras (word embeddings) representan cada término como un vector en un espacio donde la cercanía equivale a relación semántica. Modelos modernos basados en transformadores generan embeddings sensibles al contexto.
Para comparar, de nuevo se usa similitud del coseno entre los vectores.
Cómo se combinan en la práctica
Ningún algoritmo único cubre todas las capas. Un motor de comparación de marcas serio orquesta varios:
1. Normaliza el texto (minúsculas, sin acentos ni signos).
2. Calcula similitud léxica (Levenshtein, Jaccard, Jaro-Winkler).
3. Calcula similitud fonética (Metaphone adaptado al español).
4. Calcula similitud semántica (embeddings).
5. Combina las puntuaciones en un veredicto único de colisión.
El resultado es mucho más fiable que cualquier algoritmo aislado: se detectan tanto las copias evidentes como las coincidencias sutiles de sonido o significado.
Conclusión
La comparación de texto no es un problema único, sino un conjunto de problemas en capas. Levenshtein y sus parientes resuelven la similitud de escritura; Soundex y Metaphone, la de sonido; TF-IDF y los embeddings, la de significado. La detección moderna de conflictos de marca combina lo mejor de cada familia para no dejar pasar ningún tipo de coincidencia.
Referencias
- •Levenshtein, V. I. (1966). "Binary codes capable of correcting deletions, insertions, and reversals". Soviet Physics Doklady, 10(8), 707–710.
- •Damerau, F. J. (1964). "A technique for computer detection and correction of spelling errors". Communications of the ACM, 7(3), 171–176.
- •Winkler, W. E. (1990). "String Comparator Metrics and Enhanced Decision Rules in the Fellegi-Sunter Model of Record Linkage". Proceedings of the Section on Survey Research Methods.
- •Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press.
- •Jaccard, P. (1912). "The distribution of the flora in the alpine zone". New Phytologist, 11(2), 37–50.
- •Philips, L. (2000). "The Double Metaphone Search Algorithm". C/C++ Users Journal, 18(6).
- •Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). "Efficient Estimation of Word Representations in Vector Space". ICLR Workshop.
- •Devlin, J., Chang, M.-W., Lee, K., & Toutanova, K. (2019). "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding". NAACL.
¿Listo para buscar tu marca?
Verifica si tu marca ya existe en el repositorio del SENADI antes de invertir en el registro.
Buscar mi marca gratis