Función PHP Levenshtein

Función PHP Levenshtein
La distancia de Levenshtein se calcula contando el número total de caracteres que se requieren para modificar una cadena insertando, actualizando o eliminando uno o más caracteres para obtener otra cadena. PHP tiene una función incorporada llamada Levenshtein () para calcular la distancia de Levenshtein entre dos cadenas comparando las cadenas. Esta función compara los valores de la cadena de forma sensible a los casos. PHP tiene otra función llamada similar_text () para hacer la misma tarea, pero la función LevensHtein () devuelve resultados más precisos y funciona más rápido. Los diferentes usos de la función Levenshtein () se muestran en este tutorial.

Sintaxis:
int levenshtein (string $ string1, string $ string2, int $ insertion_cost = 1, int $ reemplaation_cost = 1,
int $ deletion_cost = 1)

Esta función tiene cinco argumentos. Los argumentos del primer y segundo son obligatorios y los otros cinco argumentos son opcionales. Los propósitos de estos cinco argumentos se describen a continuación:

  • $ string1: contiene la primera cadena que se compara con el segundo argumento.
  • $ string2: contiene la segunda cadena que se compara con el primer argumento.
  • $ insertion_cost: contiene el costo de inserción.
  • $ reemplazo_cost: contiene el costo de reemplazo.
  • $ deletio_cost: contiene el costo de eliminación.

Esta función devuelve la distancia de Levenshtein entre los valores de argumento del primer y segundo de la función. Si el número total de caracteres de las cadenas es más de 255, la función devuelve -1.

Diferentes ejemplos de función Levenshtein ()

Los diferentes usos de la función Levenshtein () se muestran en esta parte del tutorial utilizando múltiples ejemplos.

Ejemplo 1: Compare dos cuerdas de una sola palabra

Cree un archivo PHP con el siguiente script que calcula la distancia de Levenshtein entre dos palabras individuales usando la función Levenshtein (). El valor de la distancia de Levenshtein se imprime más tarde.

// Defina la primera cadena
$ str1 = 'tonto';
// Defina la segunda cadena
$ str2 = 'Feel';
// Calcular la distancia de Levenshtein
eco "

La distancia de Levenshtein es ".Levenshtein ($ str1, $ str2)."

";
?>

Producción:

La siguiente salida aparece después de ejecutar el script anterior. La distancia de Levenshtein de dos palabras, "Fool" y "Feel", es 2 que se imprime en la salida:

Ejemplo 2: Compare dos cadenas de múltiples palabras

Cree un archivo PHP con el siguiente script que clacula la distancia de Levenshtein entre dos cadenas de múltiples palabras usando la función Levenshtein (). El valor de la distancia de Levenshtein se imprime más tarde. Aquí, la primera cadena contiene tres palabras y la segunda cadena contiene dos palabras. Una palabra es común en ambas cuerdas. La distancia de Levenshtein de estas dos cuerdas se imprime más tarde.

// Defina la primera cadena
$ str1 = 'lenguaje de programación PHP';
// Defina la segunda cadena
$ str2 = 'programación Java';
// Calcular la distancia de Levenshtein
eco "

La distancia de Levenshtein es ".Levenshtein ($ str1, $ str2)."

";
?>

Producción:

La siguiente salida aparece después de ejecutar el script anterior. Aquí, el primer valor de cadena es "Lenguaje de programación de PHP"Y la segunda cadena es"Programación de Java". La palabra "Programación"Es común en ambas cuerdas. Se requieren que cuatro caracteres se modifiquen para obtener "Java" de "PHP" y 9 caracteres (lenguaje) deben eliminar de la primera cadena para obtener la segunda cadena. Entonces, la distancia de Levenshtein es 4+9 = 13.

Ejemplo 3: busque la coincidencia exacta o más cercana en la matriz

Cree un archivo PHP con el siguiente script que busca una cadena particular en una matriz. Descubra el valor de la matriz que coincide exactamente o parcialmente el valor de la cadena de búsqueda calculando la distancia de Levenshtein entre la cadena de búsqueda y cada elemento de la matriz. El valor de la cadena de búsqueda se toma del parámetro URL. Si no se da un parámetro URL, el valor de cadena predeterminado se usa para la cadena de búsqueda. El valor inicial de $ short_distance se establece en -1 antes de iterar los valores de la matriz para encontrar la coincidencia exacta o más cercana. La primera para cada El bucle se usa para imprimir los valores existentes de la matriz. El segundo para cada El bucle se usa para iterar los valores de la matriz y calcular la distancia de Levenshtein entre cada valor de matriz y la cadena de búsqueda en cada iteración. Si la distancia de Levenshtein se convierte en 0 en cualquier iteración, la coincidencia exacta de la cadena de búsqueda existe en la matriz. De lo contrario, la coincidencia más cercana de la cadena de búsqueda se recupera de los valores de la matriz en función del valor de distancia de Levenshtein más bajo.

// Establecer el valor de búsqueda
$ search = isset ($ _ get ['src'])? $ _Get ['src']: "java";
// Establecer valor de distancia predeterminado
$ short_distance = -1;
// declarar una matriz
$ lenguaje = array ('php', 'perl', 'python', 'bash', 'java', 'c ++', 'c#', 'java');
Los valores de la matriz de eco "son:
";
foreach ($ idiomas como $ lang)
echo $ lang."
";
Echo "Palabra de búsqueda: $ búsqueda";
// busca el valor exacto o más cercano en la matriz que coincide con el valor de búsqueda
foreach ($ idiomas como $ idioma)
// Calcular la distancia de Levenshtein
$ Lev_Distance = Levenshtein ($ Search, $ lenguaje);
// Comprobando el partido exacto
if ($ lev_distance == 0)
$ short_distance = 0;
eco "
Se encuentra la coincidencia exacta.";
romper;

// busca el partido más cercano
if ($ lev_distance <= $short_distance || $short_distance < 0)
// reiniciar la distancia corta
$ short_distance = $ lev_distance;
// restablecer el valor más cercano
$ Close_Value = $ idioma;


// imprime el valor coincidente más cercano
if ($ short_distance> 0)
eco "
El valor más cercano de la palabra de búsqueda es ".$ Close_Value;
?>

Producción:

La siguiente salida aparece después de ejecutar el script anterior si no se da un parámetro URL. En este caso, el valor de búsqueda predeterminado es "Java"Que existe en la matriz. Entonces, la distancia de Levenshtein se convierte en 0 para este valor de búsqueda al calcular la distancia de Levenshtein con el quinto elemento de la matriz que también es "Java":

La siguiente salida aparece después de ejecutar el script anterior para el valor de búsqueda que es "Pitón"Eso se da en el parámetro de URL. En este caso, el valor de búsqueda "Pitón"Existe en la matriz. Entonces, la distancia de Levenshtein se convierte en 0 para este valor de búsqueda al calcular la distancia de Levenshtein con el tercer elemento de la matriz que también es "Pitón":

La siguiente salida aparece después de ejecutar el script anterior para el valor de búsqueda "Python3"Que isen dio en el parámetro de URL. En este caso, el valor de búsqueda es "Python3"Que coincide parcialmente con un elemento de la matriz que es"Pitón". Entonces, la distancia de Levenshtein se convierte en 1 para este valor de búsqueda al calcular la distancia de Levenshtein con el tercer elemento de la matriz:

Conclusión

Los diferentes usos de la función Levenshtein () que se muestran en este tutorial ayudarán a los nuevos usuarios de Python a conocer el propósito de usar esta función y poder usarla correctamente en su script.