Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP levenshtein() 함수 – 두 문자열 간 유사도(거리) 계산하기

levenshtein() 함수는 두 문자열 간의 레벤슈타인 거리(Levenshtein Distance)를 계산하는 데 사용되는 PHP 내장 함수입니다. 레벤슈타인 거리란 첫 번째 문자열을 두 번째 문자열로 변환하기 위해 필요한 최소한의 문자 삽입(insert), 교체(replace), 삭제(delete) 작업 횟수를 의미합니다. 이 함수는 대소문자를 구분하지 않습니다.

구문

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

매개변수

  • str1 − 비교할 첫 번째 문자열입니다.

  • str2 − 비교할 두 번째 문자열입니다.

  • insert − 문자를 삽입할 때 부여되는 비용(기본값: 1)입니다.

  • replace − 문자를 교체할 때 부여되는 비용(기본값: 1)입니다.

  • delete − 문자를 삭제할 때 부여되는 비용(기본값: 1)입니다.

반환 값

levenshtein() 함수는 인자로 전달된 두 문자열 간의 레벤슈타인 거리를 정수 형태로 반환합니다. 만약 문자열 중 하나라도 255자를 초과하면 -1을 반환합니다.

예제

다음은 levenshtein() 함수의 기본적인 사용 예제입니다.

<?php
   echo levenshtein("Welcome","elcome");
?>

출력 결과

1

위 예제에서 "Welcome"과 "elcome"은 한 글자('W')만 차이가 나므로, 결과로 1이 출력됩니다.

활용 예시

레벤슈타인 거리는 맞춤법 검사, 검색어 자동 완성, 오타 수정 등 유사 문자열을 찾아야 하는 다양한 분야에서 활용됩니다. 아래는 주어진 단어 목록 중 입력 문자열과 가장 유사한 단어를 찾는 실전 예제입니다.

<?php
   $words = array("apple", "apply", "ample", "maple");
   $input = "aple";

   $shortest = -1;
   foreach ($words as $word) {
      $lev = levenshtein($input, $word);
      if ($shortest < 0 || $lev < $shortest) {
         $closest = $word;
         $shortest = $lev;
      }
   }
   echo "가장 유사한 단어: " . $closest;
?>

출력 결과

가장 유사한 단어: apple

이처럼 levenshtein() 함수를 활용하면 사용자가 잘못 입력한 단어에 대해 가장 근접한 올바른 단어를 제안하는 기능을 손쉽게 구현할 수 있습니다.