¿Cómo funcionan los fuzzy matches? Explicación muy básica

Hace algún tiempo, cuando me dio por desarrollar mi propia herramienta de traducción asistida, estuve investigando sobre cómo se calculaban los fuzzy matches / concordancias parciales. Quería saber cuál era la magia que se ocultaba tras esa sencilla combinación de teclas que recuperaba traducciones de segmentos parecidos al que estabas traduciendo.

Lo cierto es que, el método empleado, por suerte, no es ningún misterio. Aunque cada herramienta lo ha personalizado y configurado a su gusto, añadiendo o quitando parámetros y opciones, todas ellas parten de una misma base: la distancia de edición o distancia de Levenshtein.

¿Qué es la distancia de edición?
Si acudimos a Wikipedia, la definición que encontramos es la siguiente:

[La distancia de edición] es el número mínimo de operaciones requeridas para transformar una cadena de caracteres en otra, se usa ampliamente en teoría de la información y ciencias de la computación.

Respecto a las operaciones mencionadas en la definición, se añade:

Se entiende por operación, bien una inserción, eliminación o la sustitución de un carácter.

¿Cómo se calcula la distancia de edición?
Se emplea un algoritmo ideado por Vladimir Levenshtein en 1965 (tecnología punta, como se puede apreciar), de ahí que la Distancia de edición sea más conocida en el mundillo informático como Distancia de Levenshtein.
No voy a poner el código, pero se puede consultar aquí adaptado a la mayoría de lenguajes de programación que se usan en la actualidad.
Básicamente, y como ya he mencionado, este algoritmo calcula los cambios que tiene que sufrir una cadena para convertirse en otra.

¿Cómo acaba esto convertido en un fuzzy match?
Las cadenas sobre las que se calcula la distancia de edición son el segmento original con el que estás trabajando y el resto de segmentos del proyecto o memoria de traducción. De este modo, se calcula la distancia de edición y, para aquellos casos en los que la distancia de edición es inferior al 70% (el umbral estándar que hay en la mayoría de herramientas de traducción asistida), se almacena una referencia a dicho segmento para recuperar su traducción en caso de necesitarla.

¿Es así de sencillo?
Sí y no. Este es el funcionamiento básico, a partir del cual se parte. Pero, como ya se ha comentado más arriba, existen variaciones y personalizaciones que juegan con este algoritmo como base y lo mejoran. Por ejemplo, existe la Distancia de Damerau-Levenshtein, que calcula de forma diferente el número de operaciones requeridas para transformar una cadena en otra y, por tanto, ofrece otros resultados.

Fuentes:
Distancia de Levenshtein

¿Qué os ha parecido que la principal característica de las herramientras de traducción asistida se base en una idea de 1965? :slight_smile:

6 Me gusta