>  기사  >  백엔드 개발  >  PHP 레벤슈타인()

PHP 레벤슈타인()

王林
王林원래의
2024-08-29 12:54:33802검색

levenshtein()은 두 문자열과 비교하여 Levenshtein 거리라는 거리 단위를 결정하는 데 사용되는 PHP에 내장된 함수입니다. Levenshtein 거리의 정의는 입력 문자열을 다른 문자열로 변환하기 위해 대체, 삽입 또는 삭제와 같이 수정해야 하는 총 문자 수를 나타냅니다.

광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

PHP에서는 기본적으로 위의 3가지 수정(교체, 삭제, 삽입) 모두에 동일한 가중치가 부여됩니다. 그러나 위에 대한 선택적 매개변수를 제공하여 이러한 각 작업의 비용이나 가중치를 입력할 수 있는 옵션이 있습니다. 이 함수에 사용되는 알고리즘은 O(a*b)의 복잡도를 갖습니다. 여기서 a와 b는 각각 문자열 str1과 str2의 길이입니다.

이 기능에 대해 몇 가지 참고할 사항이 있습니다.

  • 이 levenshtein() 함수는 대소문자를 구분하지 않습니다.
  • levenshtein과 유사한 유사_text() 함수라는 함수가 있습니다. 이에 비해 levenshtein() 함수는 더 빠르지만 simiar_text() 함수는 필요한 변경 횟수가 제한되어 더 정확한 결과를 반환합니다. 또한 levenshtein()이 더 비쌉니다.

구문 및 매개변수

여기에서는 구문과 매개변수에 대해 설명합니다.

구문:

levenshtein(str1,str2,insert,replace,delete)

매개변수:

  • str1: 필수 입력 매개변수이며 비교할 첫 번째 문자열입니다.
  • str2: 비교할 두 번째 문자열이며 필수 매개변수이기도 합니다.
  • 삽입: 선택적 매개변수이며 문자가 삽입되는 비용을 나타냅니다.
  • replace: 또한 캐릭터가 교체되는 비용을 나타내는 선택 사항입니다.
  • delete: 캐릭터가 삭제되는 비용을 나타내는 또 다른 선택적 매개변수입니다.

마지막 3개 매개변수의 기본값은 모두 1입니다.

반환값: 이 함수는 두 입력 문자열 사이의 Levenshtein 거리를 출력합니다. 전체 문자열 문자 중 하나라도 255를 넘으면 -1 값을 반환합니다.

PHP levenshtein()의 예

levenshtein 함수의 작동을 이해하기 위해 몇 가지 예를 들어보겠습니다.

예시 #1

코드:

<?php
// PHP code to determine levenshtein distance
// between 2 strings $s1 and $s2
$s1 = 'rdo';
$s2 = 'rst';
print_r(levenshtein($s1, $s2));
?>

출력:

PHP 레벤슈타인()

이것은 2개의 입력 문자열 s1과 s2에 각각 3개의 다른 문자로 구성된 하나의 단어가 있는 기본 예입니다. 이제 levenshtein 함수는 이 두 문자열을 문자별로 비교하여 문자 수의 차이를 알아냅니다. 여기에는 3개 중 공통되지 않는 2개의 문자가 있습니다. 따라서 첫 번째 문자열을 두 번째 문자열과 동일하게 만들려면 여기에 2개의 문자 "s,t"를 추가해야 하므로 출력은 2입니다.

예시 #2

코드:

<?php
// PHP code to determine levenshtein distance
// between 2 strings $s1 and $s2
$s1 = 'first string';
$s2 = 'second string';
print_r(levenshtein($s1, $s2));
?>

출력:

PHP 레벤슈타인()

이 기본 예에서는 여기서 s1과 s2로 표시되는 두 입력 문자열 사이의 levenshtein 거리를 확인할 수 있습니다. 두 문자열의 문자를 비교해 보면 공통점이 하나 있다는 것을 알 수 있습니다. "끈". 그리고 나머지 단어에서는 "첫 번째" 단어와 "두 번째" 단어를 비교하고, 공통 단어 "문자열"과도 비교합니다. 여기서 공통되지 않는 유일한 문자는 "f,e,c,o,d"와 추가 "s"입니다. 따라서 levenshtein 함수는 출력을 6으로 반환합니다. 이는 이 6개의 문자가 이 2개의 입력 문자열 간의 차이이며 이 두 문자열을 문자 측면에서 동일하게 만들 수 있음을 의미합니다.

예시 #3

코드:

<?php
// PHP code to determine levenshtein distance
// between $s1 and $s2
$s1 = 'Common Three Words';
$s2 = 'Common Words';
echo("The Levenshtein distance is: ");
print_r(levenshtein($s1, $s2));
?>

출력:

PHP 레벤슈타인()

이 예에서는 첫 번째 문자열에 3개의 단어가 있는 반면 두 번째 문자열에는 2개의 단어만 있는 것을 볼 수 있습니다. 그리고 우리는 두 번째 문자열에 있는 이 두 단어가 모두 첫 번째 문자열에 이미 존재한다는 것을 알 수 있습니다. 따라서 여기서 문자의 유일한 차이점은 5개의 문자가 포함된 "Three"라는 단어입니다. 여기서 주목해야 할 흥미로운 점은 출력이 6을 제공한다는 것입니다. 이는 추가 공백도 문자로 간주된다는 의미입니다.

예시 #4

<?php
// Giving a misspelled word as input
$ip = 'giraffee';
// sample set array to compare with
$word_list = array('cat','dog','cow','elephant',
'giraffe','eagle','pigeon','parrot','rabbit');
// Since shortest distance is not found yet
$short = -1;
// Looping through array to find the closest word
foreach ($word_list as $word_list) {
// Calculating the levenshtein distance between
// input word and the current word
$levn = levenshtein($ip, $word_list);
// To check for the matching word
if ($levn == 0) {
// This is the closest one which is an perfect match
$closest = $word_list;
$short = 0;
// Here we break from foreach loop
// when the exact match is found
break;
}
// When the distance shown here is less than shortest distance
// found in next iteration or if the next shortest word is
// yet to be found
if ($levn <= $short || $short < 0) {
// Setting the shortest distance and one having
// closest match to the input word
$close = $word_list;
$short = $levn;
}
}
echo "Input word: $ip\n";
if ($short == 0) {
echo "The closest/exact match found to the input word is: $close\n";
} else {
echo "Did you mean to spell: $close?\n";
}
?>

출력:

PHP 레벤슈타인()

위의 예는 이 levenshtein 기능을 구현할 수 있는 다양한 사례 중 하나를 보여줍니다. 여기에서는 올바른 단어 목록이 포함된 사전 정의된 배열 세트와 철자가 틀린 단어를 비교하여 사용자가 철자가 틀린 단어를 수정할 수 있도록 돕고 있습니다.

처음에는 일반적으로 철자가 틀린 사용자의 입력 단어(기린)를 받아들입니다. 우리는 입력 단어(giraffe)에 대한 올바른 철자를 갖는 올바른 동물 이름의 배열 세트를 정의하고 있습니다. foreach 루프는 배열 목록을 반복하고 입력과 일치하는 가장 가까운 단어를 찾는 데 사용되며 이는 levenshtein 함수의 도움으로 수행됩니다. 정확히 일치하거나 가장 가까운 항목이 발견되면 루프가 중단됩니다. 마지막으로 짧은 매개변수와 거리를 비교하고 거리가 0이면 입력 단어에 대해 정확히 일치하는 항목을 찾은 다음 출력에 인쇄한다는 의미입니다.

결론

그래서 기본적으로 levenshtein 함수는 주어진 2개의 입력 문자열의 문자를 문자별로 비교하여 반환되는 정수 값으로 거리를 반환합니다. 처음 두 매개변수는 필수 입력 문자열이고 마지막 3개 매개변수는 삭제, 삽입 또는 교체 작업 비용을 나타내는 선택사항입니다.

위 내용은 PHP 레벤슈타인()의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.