Funzione PHP Levenshtein

Funzione PHP Levenshtein
La distanza di Levenshtein viene calcolata contando il numero totale di caratteri necessari per modificare una stringa inserendo, aggiornando o eliminando uno o più caratteri per ottenere un'altra stringa. PHP ha una funzione integrata denominata Levenshtein () per calcolare la distanza di Levenshtein tra due stringhe confrontando le stringhe. Questa funzione confronta i valori della stringa in modo sensibile ai casi. PHP ha un'altra funzione denominata simile_text () per svolgere la stessa attività ma la funzione Levenshtein () restituisce risultati più accurati e funziona più velocemente. I diversi usi della funzione Levenshtein () sono mostrati in questo tutorial.

Sintassi:
int levenshtein (string $ string1, string $ string2, int $ insertion_cost = 1, int $ sostituzione_cost = 1,
int $ deletion_cost = 1)

Questa funzione ha cinque argomenti. Il primo e il secondo argomento sono obbligatori e gli altri cinque argomenti sono opzionali. Gli scopi di questi cinque argomenti sono descritti di seguito:

  • $ string1: contiene la prima stringa che viene confrontata con il secondo argomento.
  • $ string2: contiene la seconda stringa che viene confrontata con il primo argomento.
  • $ insertion_cost: contiene il costo per l'inserimento.
  • $ sostituzione_cost: contiene il costo per la sostituzione.
  • $ deletion_cost: contiene il costo per la cancellazione.

Questa funzione restituisce la distanza di Levenshtein tra i valori della prima e del secondo argomento della funzione. Se il numero totale di caratteri delle stringhe è più di 255, la funzione restituisce -1.

Diversi esempi di funzione Levenshtein ()

I diversi usi della funzione Levenshtein () sono mostrati in questa parte del tutorial usando più esempi.

Esempio 1: confronta due stringhe di una sola parola

Crea un file PHP con il seguente script che calcola la distanza Levenshtein tra due singole parole usando la funzione Levenshtein (). Il valore della distanza di Levenshtein è stampato in seguito.

// Definisci la prima stringa
$ str1 = 'food';
// Definisci la seconda stringa
$ STR2 = 'Feel';
// Calcola la distanza di Levenshtein
eco "

La distanza di Levenshtein è ".Levenshtein ($ STR1, $ STR2)."

";
?>

Produzione:

Viene visualizzato il seguente output dopo aver eseguito lo script precedente. La distanza di Levenshtein di due parole, "Fool" e "Feel", è 2 che è stampata nell'output:

Esempio 2: confronta due stringhe di più parole

Crea un file PHP con il seguente script che clacola la distanza di Levenshtein tra due stringhe di più parole usando la funzione Levenshtein (). Il valore della distanza di Levenshtein è stampato in seguito. Qui, la prima stringa contiene tre parole e la seconda stringa contiene due parole. Una parola è comune in entrambe le stringhe. La distanza di Levenshtein di queste due stringhe viene stampata in seguito.

// Definisci la prima stringa
$ STR1 = 'PHP Programming Language';
// Definisci la seconda stringa
$ str2 = 'Java Programming';
// Calcola la distanza di Levenshtein
eco "

La distanza di Levenshtein è ".Levenshtein ($ STR1, $ STR2)."

";
?>

Produzione:

Viene visualizzato il seguente output dopo aver eseguito lo script precedente. Qui, il primo valore di stringa è "Linguaggio di programmazione PHP"E la seconda stringa è"Programmazione Java". La parola "Programmazione"È comune in entrambe le stringhe. Sono necessari quattro caratteri per modificare per ottenere "java" da "php" e 9 caratteri (lingua) sono necessari per rimuovere dalla prima stringa per ottenere la seconda stringa. Quindi, la distanza di Levenshtein è 4+9 = 13.

Esempio 3: cerca la partita esatta o più vicina nell'array

Crea un file PHP con il seguente script che cerca una stringa particolare in un array. Scopri il valore dall'array che corrisponde esattamente o parzialmente al valore della stringa di ricerca calcolando la distanza Levenshtein tra la stringa di ricerca e ogni elemento dell'array. Il valore della stringa di ricerca è prelevato dal parametro URL. Se non viene fornito alcun parametro URL, il valore della stringa predefinito viene utilizzato per la stringa di ricerca. Il valore iniziale di $ short_distance è impostato su -1 prima di iterarsi i valori dell'array per trovare la corrispondenza esatta o più vicina. Il primo per ciascuno Loop viene utilizzato per stampare i valori esistenti dell'array. Il secondo per ciascuno Il ciclo viene utilizzato per iterare i valori dell'array e calcolare la distanza di Levenshtein tra ciascun valore dell'array e la stringa di ricerca in ogni iterazione. Se la distanza di Levenshtein diventa 0 in qualsiasi iterazione, nell'array esiste la corrispondenza esatta della stringa di ricerca. Altrimenti, la corrispondenza più vicina della stringa di ricerca viene recuperata dai valori dell'array in base al valore della distanza di Levenshtein più basso.

// Imposta il valore di ricerca
$ Search = ISSET ($ _ GET ['src'])? $ _Get ['src']: "java";
// imposta il valore della distanza predefinito
$ short_distance = -1;
// dichiara un array
$ lingue = array ('php', 'perl', 'python', 'bash', 'java', 'c ++', 'c#', 'java');
Echo "I valori dell'array sono:
";
foreach ($ lingue come $ lang)
Echo $ Lang."
";
Echo "Cerca parola: $ Search";
// Cerca il valore esatto o più vicino nell'array che corrisponde al valore di ricerca
foreach ($ lingue come $ lingua)
// Calcola la distanza di Levenshtein
$ lev_distance = levenshtein ($ search, $ lingua);
// controllando la partita esatta
if ($ lev_distance == 0)
$ short_distance = 0;
eco "
La partita esatta si trova.";
rottura;

// Cerca la partita più vicina
if ($ lev_distance <= $short_distance || $short_distance < 0)
// ripristina la breve distanza
$ short_distance = $ lev_distance;
// ripristina il valore più vicino
$ Close_Value = $ lingua;


// Stampa il valore abbinato più vicino
if ($ short_distance> 0)
eco "
Il valore più vicino della parola di ricerca è ".$ Close_Value;
?>

Produzione:

Viene visualizzato il seguente output dopo l'esecuzione dello script precedente se non viene fornito alcun parametro URL. In questo caso, il valore di ricerca predefinito è "Giava"Che esiste nell'array. Quindi, la distanza di Levenshtein diventa 0 per questo valore di ricerca quando si calcola la distanza di Levenshtein con il quinto elemento dell'array che è anche "Giava":

Viene visualizzato il seguente output dopo l'esecuzione dello script precedente per il valore di ricerca che è "Pitone"Questo è dato nel parametro URL. In questo caso, il valore di ricerca "Pitone"Esiste nell'array. Quindi, la distanza di Levenshtein diventa 0 per questo valore di ricerca quando si calcola la distanza di Levenshtein con il terzo elemento dell'array che è anche "Pitone":

Viene visualizzato il seguente output dopo l'esecuzione dello script precedente per il valore di ricerca "Python3"Questo è indicato nel parametro URL. In questo caso, il valore di ricerca è "Python3"Che parzialmente corrisponde a un elemento dell'array che è"Pitone". Quindi, la distanza di Levenshtein diventa 1 per questo valore di ricerca quando si calcola la distanza di Levenshtein con il terzo elemento dell'array:

Conclusione

I diversi usi della funzione Levenshtein () che sono mostrati in questo tutorial aiuteranno i nuovi utenti di Python a conoscere lo scopo di utilizzare questa funzione ed essere in grado di utilizzarla correttamente nel proprio script.