Los algoritmos de matching son unos algoritmos cuyo objetivo principal es el de, dado un fragmento de texto, encontrar los textos más similares al fragmento original entre un conjunto de candidatos. Al hablar de texto podemos pensar tanto en palabras o pequeñas frases como en documentos enteros.
Lo que intentamos hacer con los algoritmos de matching es una especie de corrector, pero únicamente basado en distancias. Recordemos que el spelling corrector era una mezcla entre distancias y el uso del teorema de Bayes.
Técnicas usadas en los algoritmos de matching
Existen tres tipos de técnicas que podemos emplear cuando hacemos uso de los algoritmos de matching:
- Coincidencia exacta: como es el caso de la distancia de edición. Podemos hacer cálculo de distancia:
- Con respecto al carácter: strings que difieren en caracteres. Aquí podemos ver las diferencias a partir de los strings usados; simplemente tenemos que cambiar de caracteres.
- En el ámbito del token: strings que difieren en palabras.
- Fonéticos: palabras que suenan de manera similar.
- Coincidencia aproximada o difusa.
- Coincidencia mediante aproximaciones.
Candidato/tipo de resultado | Exacta | Aproximada | Transformación |
String | Comparación de strings | Comparación difusa | Ontologías |
Categoría | Gramáticas | Reconocimiento probabilístico | Análisis de tópicos |
Documento | — | Recuperación de información | Traducción automática |
Tipos de algoritmos de matching
Regular expressions (regex)
Suelen emplearse al limpiar el texto o buscar formatos dentro del texto. A modo introductorio, las expresiones regulares son una forma de finite state automata.
Son grafos que siguen una secuencia que nosotros definimos. Por ejemplo, el grafo de la izquierda solo podría generar expresiones como ab, abb, abbb, abbbb y así hasta el infinito. El de la derecha podría generar expresiones como abcb, o abbb, abbbbbb, por ejemplo.
Conceptualmente, las regex funcionan así por debajo.
La definición de estos grafos es posible mediante la librería re de Python, módulo del paquete base de Python dedicado a las expresiones regulares.
Cierto es que no siempre nos hará falta. Algunas veces con un simple string.replace () o string.find () tendremos suficiente. No obstante, para muchas tareas son bastante útiles.
Algunas tareas típicas en las que se utilizan son la búsqueda (y a veces normalización) de emails, URL, números de teléfono, etc. Solo la extracción es interesante, pero mediante su normalización nos permite reducir la cardinalidad del vocabulario y asociar entidades similares a un mismo alias.
Regex online es uno de los mejores recursos online para visualizar qué hacen los regex.
¿Quieres seguir avanzando?
Ahora que hemos visto qué son y cómo funcionan los algoritmos de matching, es el momento de seguir aprendiendo sobre esta interesante disciplina. Para acceder a las opciones laborales del Big Data, uno de los ámbitos con mejores salarios y mayor demanda, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva, adquirirás los conocimientos teóricos y prácticos imprescindibles para abrirte paso en el mundillo en pocos meses. ¡Atrévete a impulsar tu carrera y entra ahora para pedir más información!