Quantcast
Channel: Oracle
Viewing all articles
Browse latest Browse all 1814

Blog Post: Oracle y la distancia de Levenshtein

$
0
0
La semana pasada asistí a una capacitación de ACL, una herramienta para el análisis de datos muy utilizada por auditores y contadores. Al abordar el tema de funciones, el instructor presentó una función llamada LEVDIST() que permite calcular la distancia entre dos cadenas de caracteres. En ese punto surgió la pregunta: ¿Qué es la distancia entre dos cadenas de caracteres? ¿Cómo se mide? Así fue como me enteré de que la función LEVDIST debe su nombre a la llamada distancia de Levenshtein , también conocida como distancia de edición o distancia entre palabras . La distancia de Levensthein es el número mínimo de operaciones requeridas para transformar una cadena de caracteres en otra. La distancia de Levenshtein debe su nombre al matemático y científico Vladimir Levenshtein que desarrolló, entre otras cosas, el algoritmo que calcula esta distancia. El algoritmo es muy utilizado en programas que necesitan determinar cuán parecidas son dos cadenas de caracteres. Un ejemplo de uso es el caso de los correctores ortográficos. Llegado a este punto me pregunté acerca de la existencia de alguna versión del algoritmo desarrollada en lenguaje PL/SQL. Para mi sorpresa me encontré con el paquete UTL_MATCH , incorporado en la base de datos Oracle a partir de la versión 10g. El paquete UTL_MATCH provee cuatro funciones: EDIT_DISTANCE . Calcula el número de cambios necesarios para transformar una cadena en otra. EDIT_DISTANCE_SIMILARITY . Calcula el número de cambios necesarios para transformar una cadena en otra y retorna un valor entre 0 (sin coincidencia) y 100 (coincidencia perfecta) JARO_WINKLER . Calcula el grado de similitud que existe en dos cadenas JARO_WINKLER_SIMILARITY . Calcula el grado de similitud que existe entre dos cadenas y retorna un valor entre 0 (sin coincidencia) y 100 (coincidencia perfecta) La distancia de Jaro-Winkler también es una medida de similitud entre dos cadenas. Suele ser utilizada con cadenas cortas, tales como nombres de persona. Veamos algunos ejemplos de uso que facilitarán comprender el funcionamiento de la función EDIT_DISTANCE : SQL> select utl_match.edit_distance('hola', 'hola') levdist from dual; LEVDIST ---------- 0 SQL> select utl_match.edit_distance('hola', 'hole') levdist from dual; LEVDIST ---------- 1 SQL> select utl_match.edit_distance('hola', 'bole') levdist from dual; LEVDIST ---------- 2 SQL> select utl_match.edit_distance('hola', 'bote') levdist from dual; LEVDIST ---------- 3 SQL> select utl_match.edit_distance('hola', 'gato') levdist from dual; LEVDIST ---------- 4 SQL> Nos vemos!

Viewing all articles
Browse latest Browse all 1814

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>