Hướng dẫn php levenshtein vs similar_text - php levenshtein so với similar_text

Tôi đã thấy rằng Jaro Winkler cũng tốt cho những sai lầm chính tả và sự khác biệt nhỏ giữa các chuỗi. Tôi đã sửa đổi mã này để được định hướng đối tượng:

class StringCompareJaroWinkler 
{
    public function compare($str1, $str2)
    {
        return $this->JaroWinkler($str1, $str2, $PREFIXSCALE = 0.1 );
    }

    private function getCommonCharacters( $string1, $string2, $allowedDistance ){

      $str1_len = mb_strlen($string1);
      $str2_len = mb_strlen($string2);
      $temp_string2 = str_split($string2);

      $commonCharacters='';
      for( $i=0; $i < $str1_len; $i++){

        $noMatch = True;
        // compare if char does match inside given allowedDistance
        // and if it does add it to commonCharacters
        for( $j= max( 0, $i-$allowedDistance ); $noMatch && $j < min( $i + $allowedDistance + 1, $str2_len ); $j++){
          if( $temp_string2[$j] == $string1[$i] ){
            $noMatch = False;
        $commonCharacters .= $string1[$i];
        $temp_string2[$j] = '';
          }
        }
      }
      return $commonCharacters;
    }

    private function Jaro( $string1, $string2 ){

      $str1_len = mb_strlen( $string1 );
      $str2_len = mb_strlen( $string2 );

      // theoretical distance
      $distance = (int) floor(min( $str1_len, $str2_len ) / 2.0); 

      // get common characters
      $commons1 = $this->getCommonCharacters( $string1, $string2, $distance );
      $commons2 = $this->getCommonCharacters( $string2, $string1, $distance );

      if( ($commons1_len = mb_strlen( $commons1 )) == 0) return 0;
      if( ($commons2_len = mb_strlen( $commons2 )) == 0) return 0;
      // calculate transpositions
      $transpositions = 0;
      $upperBound = min( $commons1_len, $commons2_len );
      for( $i = 0; $i < $upperBound; $i++){
        if( $commons1[$i] != $commons2[$i] ) $transpositions++;
      }
      $transpositions /= 2.0;
      // return the Jaro distance
      return ($commons1_len/($str1_len) + $commons2_len/($str2_len) + ($commons1_len - $transpositions)/($commons1_len)) / 3.0;

    }

    private function getPrefixLength( $string1, $string2, $MINPREFIXLENGTH = 4 ){

      $n = min( array( $MINPREFIXLENGTH, mb_strlen($string1), mb_strlen($string2) ) );

      for($i = 0; $i < $n; $i++){
        if( $string1[$i] != $string2[$i] ){
          // return index of first occurrence of different characters 
          return $i;
        }
      }
      // first n characters are the same   
      return $n;
    }

    private function JaroWinkler($string1, $string2, $PREFIXSCALE = 0.1 ){

      $JaroDistance = $this->Jaro( $string1, $string2 );
      $prefixLength = $this->getPrefixLength( $string1, $string2 );
      return $JaroDistance + $prefixLength * $PREFIXSCALE * (1.0 - $JaroDistance);
    }
}

$jw = new StringCompareJaroWinkler();
echo $jw->compare("jonas","asjon");

❮ Tham chiếu chuỗi PHP

Thí dụ

Bài Viết NÀy Đạo Giúp ích Cho Bạn?

BÀi VIếT MớI
echo similar_text("Hello World","Hello Peter");
?>

❮ Tham chiếu chuỗi PHP


Tính toán sự tương đồng giữa hai chuỗi và trả về các ký tự phù hợp:

Tham số

Hãy tự mình thử »

Định nghĩa và cách sử dụng The levenshtein() function is faster than the similar_text() function. However, the similar_text() function will give you a more accurate result with less modifications needed.


Hàm tương tự_text () tính toán sự giống nhau giữa hai chuỗi.

Nó cũng có thể tính toán sự giống nhau của hai chuỗi tính theo phần trăm.

Lưu ý: hàm levenshtein () nhanh hơn hàm tương tự_text (). Tuy nhiên, hàm tương tự_text () sẽ cho bạn một kết quả chính xác hơn với ít sửa đổi cần thiết.

Cú pháp giống nhau_text (String1, String2, phần trăm)
Giá trị tham sốTham số
chuỗi2Sự mô tả
chuỗi1Yêu cầu. Chỉ định chuỗi đầu tiên được so sánh

Yêu cầu. Chỉ định chuỗi thứ hai được so sánh

phần trămKhông bắt buộc. Chỉ định một tên biến để lưu trữ sự tương đồng tính theo phần trăm
Chi tiết kỹ thuậtGiá trị trở lại:

Nhiều ví dụ hơn

Thí dụ

Bài Viết NÀy Đạo Giúp ích Cho Bạn?

BÀi VIếT MớI
similar_text("Hello World","Hello Peter",$percent);
echo $percent;
?>

❮ Tham chiếu chuỗi PHP


❮ Tham chiếu chuỗi PHP


  • Trang chủ
  • Phát Triển Web
  • PHP
  • Ha levenshtein () trong php

Hướng dẫn cách sử dụng ha levenshtein () trong lập trình php

Tác dụng của ha levenshtein ()

& Nbsp; ________ 3 & nbsp; hàm tính toán khoảng cách levenshtein giữa hai chuỗi. levenshtein() function calculates Levenshtein distance between two strings.

Bảng sau đây tóm tắt các chi tiết kỹ thuật của chức năng này.

Giá trị trở lại:Trả về khoảng cách Levenshtein giữa hai chuỗi đối số hoặc -1, nếu một trong các chuỗi đối số dài hơn giới hạn 255 ký tự.
Version:Php 4.0.1+


Cú pháp

Cú pháp cơ bản của chức năng & nbsp; ________ 3 & nbsp; được đưa ra với: levenshtein() function is given with:

levenshtein(string1, string2, cost_insert, cost_replacement, cost_delete);(string1, string2, cost_insert, cost_replacement, cost_delete);

Ở dạng đơn giản nhất, hàm sẽ chỉ lấy hai chuỗi làm tham số và sẽ chỉ tính toán số lượng các thao tác chèn, thay thế và xóa cần thiết để biến đổi & nbsp; String1 & nbsp; thành & nbsp; String2. string1 into string2.

Ví dụ sau đây cho thấy & nbsp; ________ 3 & nbsp; chức năng đang hoạt động. levenshtein() function in action.

Thí dụ

";
echo levenshtein("weight", "wait")."
"; echo levenshtein("hour", "our"); ?>

Mẹo: & nbsp; hàm & nbsp; ________ 3 & nbsp; hàm nhanh hơn & nbsp; ________ 7 & nbsp; hàm. Tuy nhiên, & nbsp; ________ 7 & nbsp; cung cấp kết quả tốt hơn với ít sửa đổi hơn. The levenshtein() function is faster than the similar_text() function. However, similar_text() provides better results with less modifications.

Lưu ý: & nbsp; Khoảng cách levenshtein được định nghĩa là số lượng ký tự tối thiểu bạn phải thay thế, chèn hoặc xóa để biến đổi & nbsp; String1 & nbsp; vào & nbsp; String2. Độ phức tạp của thuật toán là & nbsp; ____ 9, trong đó n và m là độ dài của & nbsp; String1 & nbsp; và & nbsp; String2. The Levenshtein distance is defined as the minimum number of characters you have to replace, insert or delete to transform string1 into string2. The complexity of the algorithm is O(m*n), where n and m are the length of string1 and string2.


Thông số

Hàm & nbsp; ________ 3 & nbsp; chấp nhận các tham số sau. levenshtein() function accepts the following parameters.

Tham sốSự mô tả
chuỗi1Yêu cầu. Chỉ định chuỗi đầu tiên được đánh giá cho khoảng cách Levenshtein.
chuỗi2Yêu cầu. Chỉ định chuỗi thứ hai được đánh giá cho khoảng cách Levenshtein.
Cost_insertKhông bắt buộc. Xác định chi phí chèn.
chi phíKhông bắt buộc. Xác định chi phí thay thế.
chi phí_deleteKhông bắt buộc. Xác định chi phí xóa.


Nhiều ví dụ hơn

Dưới đây là một số ví dụ khác cho thấy How & nbsp; ________ 3 & nbsp; chức năng thực sự hoạt động: levenshtein() function actually works:

Ví dụ sau đây cho thấy cách tìm kiếm trận đấu gần nhất của một từ sai chính tả bên trong một mảng các từ. Bạn có thể điều chỉnh độ nhạy của kết quả theo nhu cầu của bạn.

Thí dụ

";

// Specify the sensitivity of the result
if($shortest > 3){
    echo "No appropriate match found." . "
"; } elseif($shortest == 0){ echo "Exact match found: $closest" . "
"; } else{ echo "Did you mean: $closest?"; } ?>

Bài Viết NÀY ĐÃ GIAP ÍCH CHO BạN?

BÀi VIếT MớI