Ejemplos de algoritmos de matching

Autor: | Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo veremos unos ejemplos de algoritmos de matching. Recordemos que los algoritmos de matching pretenden encontrar, entre un conjunto de textos, los más parecidos al fragmento original.

A continuación podremos observar algunos ejemplos de algoritmos de matching con las regular expressions o regex para entender de manera precisa cómo funcionan.

Ejemplos de algoritmos de matching

Veamos un pequeño ejemplo para un caso práctico:

#Ejemplos de algoritmos de matching
#Función que nos ayudará a visualizar algunos resultados

from termcolor import colored
def test:pass (ok, text):
       color = 'green' if okelse 'red'
       return colored (text, color)
#Ejemplos de algoritmos de matching
import re

Tenemos el siguiente texto, que hará las veces de texto base o fragmento original:

#Ejemplos de algoritmos de matching
text = 'Todos los animales son iguales, pero algunos son más iguales que otros'

Aquí podemos definir que busque directamente por palabras, es decir, podemos establecer que el algoritmo busque todo lo que sea similar a «todos» y lo que contenga esta palabra lo muestra como resultado. Este sería un matching exacto, lo que quiere decir que no se convierten ni mayúsculas ni minúsculas (como en los casos donde ponemos .lower o .upper).

En este caso, lo tenemos todo en minúsculas, por tanto el algoritmo lo que hará será buscar las palabras que concuerden de manera exacta y precisa con lo que hemos puesto. Veamos:

#Ejemplos de algoritmos de matching
RE_TEST = re.compile (r 'todos')
print (RE_TEST.match (text))

None

Como vemos, no hay ningún resultado que concuerde con la búsqueda, ya que la palabra «todos» sí aparece, pero con mayúscula inicial, y le hemos pasado al algoritmo parámetros de búsqueda de un «todos» completamente en minúscula:

#Ejemplos de algoritmos de matching
RE_TEST = re.compile (r 'Todos')
print (RE_TEST.match (text))

<re.Match object; span = (0, 5), match = ‘Todos’>

En este caso obtenemos una coincidencia, es decir, un match, porque para esta ocasión dispusimos que se buscara la palabra «Todos», con mayúscula inicial, y esta aparece en la oración «Todos los animales son iguales».

Ahora le diremos al algoritmo que nos devuelva todo lo que empieza por T mayúscula o t minúscula ([Tt]) y que continue con «od»:

#Ejemplos de algoritmos de matching
RE_TEST = re.compile (r '[Tt]od')
print (RE_TEST.match (text))

<re.Match object; span = (0, 3), match = ‘Tod’>

Como en el caso anterior, se ha encontrado un match, que es el de la misma frase de «Todos los animales…».

Ahora los parámetros dirán que estamos buscando todo lo que esté rodeado por cualquier caracter (\b) y la palabra «Todos» y que nos devuelva ese resultado:

#Ejemplos de algoritmos de matching
RE_TEST = re.compile (r '\bTodos\b')
print (RE_TEST.match (text))

<re.Match object; span = (0, 5), match = ‘Todos’>

Nos ha devuelto un match también, el de la palabra inicial «Todos» a la que le siguen las palabras «los animales son iguales…».

Ahora utilizaremos los mismos parámetros que en el caso anterior, solo que no pondremos la palabra completa, sino su lemma, «Tod»:

#Ejemplos de algoritmos de matching
RE_TEST = re.compile (r '\bTod\b')
print (RE_TEST.match (text))

None

En este caso, como «Tod» no existe, nos devuelve un resultado nulo. Esto sucede porque hemos determinado que después de «Tod» puede haber cualquier otra palabra, pero no adjunta directamente a «Tod», sino separada por un espacio. Por eso la palabra que indicada como parámetro no aparece; no existe «Tod», sino «Todos». La \b significa que puede haber cualquier espacio.

Obtener un correo electrónico

Podemos aplicar esto para encontrar correos electrónicos:

#Ejemplos de algoritmos de matching
#Parámetros regex
^ -> start of string -> filtrar a partir de lo que empieza el string
+ -> match 1 or more preceding regex
[^@]+ -> todo lo que empiece por @ y tenga más de una concurrencia
@[^@]+ -> que empiece por @ exactamente y luego contenga más de 1 o más caracteres 
\ . -> ' . '
" " "

RE_EMAIL = re.compile ('[^@]+@[^@]+\ .[^@]+')
#Ejemplos de algoritmos de matching
emails_list = [
            '@[email protected]',
            '[email protected]',
            'notan@[email protected]',
            '[email protected]',
            'paginaweb.com',
            '[email protected]'
]
for email in emails_list:
      if RE_EMAIL.match (email):
            print (test_pass (True, email))
      else:
            print (text_pass (False, email))
Ejemplos de algoritmos de matching

¿Quieres seguir avanzando?

Ya has visto algunos ejemplos de algoritmos de matching, pero queda mucho por aprender Para poder acceder a las opciones laborales de este sector, 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. ¡Impulsaa tu carrera y entra ahora para solicitar más información!

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado