ホームページ >データベース >mysql チュートリアル >MySQL でレーベンシュタイン距離を使用して文字列の類似性パーセンテージを計算するにはどうすればよいですか?

MySQL でレーベンシュタイン距離を使用して文字列の類似性パーセンテージを計算するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-13 05:48:12566ブラウズ

How can I Calculate String Similarity Percentage in MySQL using Levenshtein Distance?

MySQL での文字列の類似性の計算

MySQL のようなデータベース管理システムでは、テキスト文字列の類似性を比較することが一般的な要件です。この記事では、MySQL 関数を使用して 2 つの文字列間の類似性のパーセンテージを計算する多用途のアプローチについて説明します。

レーベンシュタイン距離を使用した文字列の類似性の計算

レーベンシュタイン距離は、編集 (挿入) の数を測定するメトリックです。 、削除、または置換)は、ある文字列を別の文字列に変換するために必要です。類似性スコアが高いほど、文字列間の類似性が高いことを示します。

MySQL では、LEVENSHTEIN() 関数は 2 つの文字列間のレーベンシュタイン距離を計算します。類似性のパーセンテージを取得するには、次の式を使用できます。

Similarity Percentage = (1 - (Levenshtein Distance / Length of Longest String)) * 100

MySQL 実装

このアプローチを MySQL に実装するには、次の 2 つの関数を作成します:

レーベンシュタイン()関数:

CREATE FUNCTION `LEVENSHTEIN`(s1 TEXT, s2 TEXT) RETURNS INT(11)
DETERMINISTIC
BEGIN
    # ... Function implementation ...
END;

LEVENSHTEIN_RATIO() 関数:

CREATE FUNCTION `LEVENSHTEIN_RATIO`(s1 TEXT, s2 TEXT) RETURNS INT(11)
DETERMINISTIC
BEGIN
    # ... Function implementation ...
END;

使用例

質問に示されている例を考慮してください。

SET @a = "Welcome to Stack Overflow";
SET @b = "Hello to stack overflow";

類似度を計算するクエリ@a と @b の間のパーセンテージは次のようになります。

SELECT LEVENSHTEIN_RATIO(@a, @b) AS SimilarityPercentage;

このクエリは値 60 を返し、2 つの文字列間の類似性が 60% であることを示します。

以上がMySQL でレーベンシュタイン距離を使用して文字列の類似性パーセンテージを計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。