Função PHP Levenshtein

Função PHP Levenshtein
A distância de Levenshtein é calculada contando o número total de caracteres necessários para modificar uma string inserindo, atualizando ou excluindo um ou mais caracteres para obter outra string. O PHP tem uma função interna chamada Levenshtein () para calcular a distância de Levenshtein entre duas cordas comparando as cordas. Esta função compara os valores da string de maneira sensível ao caso. O PHP tem outra função chamada similar_text () para realizar a mesma tarefa, mas a função Levenshtein () retorna resultados mais precisos e funciona mais rapidamente. Os diferentes usos da função Levenshtein () são mostrados neste tutorial.

Sintaxe:
Int Levenshtein (String $ String1, String $ String2, Int $ insertion_cost = 1, int $ replacement_cost = 1,
int $ deletion_cost = 1)

Esta função tem cinco argumentos. O primeiro e o segundo argumentos são obrigatórios e os outros cinco argumentos são opcionais. Os propósitos desses cinco argumentos são descritos no seguinte:

  • $ string1: ele contém a primeira string que é comparada com o segundo argumento.
  • $ string2: ele contém a segunda sequência que é comparada com o primeiro argumento.
  • $ insertion_cost: contém o custo de inserção.
  • $ substituta_cost: ele contém o custo de substituição.
  • $ deletion_cost: ele contém o custo de exclusão.

Esta função retorna a distância de Levenshtein entre o primeiro e o segundo argumento dos valores da função. Se o número total de caracteres das cordas for superior a 255, a função retornará -1.

Exemplos diferentes da função Levenshtein ()

Os diferentes usos da função Levenshtein () são mostrados nesta parte do tutorial usando vários exemplos.

Exemplo 1: Compare duas cordas de uma única palavra

Crie um arquivo PHP com o seguinte script que calcula a distância de Levenshtein entre duas palavras únicas usando a função Levenshtein (). O valor da distância de Levenshtein é impresso posteriormente.

// Defina a primeira corda
$ str1 = 'tolo';
// Defina a segunda sequência
$ str2 = 'sentimento';
// Calcule a distância de Levenshtein
eco "

A distância de Levenshtein é ".Levenshtein ($ str1, $ str2)."

";
?>

Saída:

A saída a seguir aparece após a execução do script anterior. A distância de Levenshtein de duas palavras, "tolo" e "sentir", é 2, que é impressa na saída:

Exemplo 2: Compare duas cordas de várias palavras

Crie um arquivo PHP com o seguinte script que clacula a distância de Levenshtein entre duas cordas de várias palavras usando a função Levenshtein (). O valor da distância de Levenshtein é impresso posteriormente. Aqui, a primeira string contém três palavras e a segunda sequência contém duas palavras. Uma palavra é comum em ambas as cordas. A distância de Levenshtein dessas duas cordas é impressa posteriormente.

// Defina a primeira corda
$ str1 = 'linguagem de programação PHP';
// Defina a segunda sequência
$ str2 = 'programação java';
// Calcule a distância de Levenshtein
eco "

A distância de Levenshtein é ".Levenshtein ($ str1, $ str2)."

";
?>

Saída:

A saída a seguir aparece após a execução do script anterior. Aqui, o primeiro valor da string é “Linguagem de programação PHP”E a segunda sequência é“Programação Java”. A palavra "Programação”É comum em ambas as cordas. Quatro caracteres são obrigados a modificar para obter "java" de "php" e 9 caracteres (idioma) são necessários para remover da primeira string para obter a segunda string. Então, a distância de Levenshtein é 4+9 = 13.

Exemplo 3: Pesquise a correspondência exata ou mais próxima da matriz

Crie um arquivo php com o seguinte script que pesquisa uma string específica em uma matriz. Descubra o valor da matriz que corresponde exatamente ou parcialmente ao valor da string de pesquisa calculando a distância de Levenshtein entre a sequência de pesquisa e cada elemento da matriz. O valor da string de pesquisa é retirado do parâmetro URL. Se nenhum parâmetro de URL for fornecido, o valor padrão da string será usado para a sequência de pesquisa. O valor inicial de $ Short_distance é definido como -1 antes de itera os valores da matriz para encontrar a correspondência exata ou mais próxima. O primeiro para cada O loop é usado para imprimir os valores existentes da matriz. O segundo para cada O loop é usado para iterar os valores da matriz e calcular a distância de levanteshtein entre cada valor da matriz e a sequência de pesquisa em cada iteração. Se a distância de Levenshtein se tornar 0 em qualquer iteração, a correspondência exata da sequência de pesquisa existe na matriz. Caso contrário, a correspondência mais próxima da string de pesquisa é recuperada dos valores da matriz com base no menor valor de distância da Levenshtein.

// Defina o valor de pesquisa
$ search = isset ($ _ get ['src']))? $ _Get ['src']: "java";
// Defina o valor da distância padrão
$ short_distance = -1;
// declarar uma matriz
$ linguagens = array ('php', 'perl', 'python', 'bash', 'java', 'c ++', 'c#', 'java');
eco "Os valores da matriz são:
";
foreach ($ idiomas como $ lang)
eco $ lang."
";
eco "Palavra de pesquisa: $ pesquisa";
// Pesquise o valor exato ou mais próximo na matriz que corresponde ao valor da pesquisa
foreach ($ idiomas como $ idioma)
// Calcule a distância de Levenshtein
$ lev_distance = Levenshtein ($ pesquisa, $ idioma);
// verificando a correspondência exata
if ($ lev_distance == 0)
$ short_distance = 0;
eco "
A correspondência exata é encontrada.";
quebrar;

// Pesquise a partida mais próxima
If ($ lev_distance <= $short_distance || $short_distance < 0)
// Redefina a curta distância
$ short_distance = $ lev_distance;
// Redefina o valor mais próximo
$ close_value = $ idioma;


// Imprima o valor mais próximo correspondente
if ($ short_distance> 0)
eco "
O valor mais próximo da palavra de pesquisa é ".$ close_value;
?>

Saída:

A saída a seguir aparece após a execução do script anterior se nenhum parâmetro de URL for fornecido. Nesse caso, o valor de pesquisa padrão é “Java”Que existe na matriz. Assim, a distância de Levenshtein se torna 0 para esse valor de pesquisa ao calcular a distância de Levenshtein com o quinto elemento da matriz que também é “Java”:

A saída a seguir aparece após a execução do script anterior para o valor de pesquisa que é “Pitão”Isso é dado no parâmetro URL. Nesse caso, o valor de pesquisa “Pitão”Existe na matriz. Portanto, a distância de Levenshtein se torna 0 para esse valor de pesquisa ao calcular a distância de Levenshtein com o terceiro elemento da matriz que também é “Pitão”:

A saída a seguir aparece após a execução do script anterior para o valor de pesquisa “Python3”Isso é dado no parâmetro URL. Nesse caso, o valor da pesquisa é “Python3”, Que corresponde parcialmente a um elemento da matriz que é“Pitão”. Portanto, a distância de Levenshtein se torna 1 para esse valor de pesquisa ao calcular a distância de Levenshtein com o terceiro elemento da matriz:

Conclusão

Os diferentes usos da função Levenshtein () que são mostrados neste tutorial ajudarão os novos usuários do Python a conhecer o objetivo de usar essa função e poder usá -la adequadamente em seu script.