MySQL で文字列の類似性を計算する方法
MySQL で 2 つの文字列間の類似性を計算するには、文字列操作関数と数式を利用できます。 。 2 つの文字列がある次の例を考えてみましょう。
SET @a = "Welcome to Stack Overflow"; SET @b = "Hello to stack overflow";
重複する単語を使用した類似度の計算
両方の文字列に出現する単語の数を数えて、次を使用します。それは類似性の尺度としてです。この場合、次の単語が重複します:
類似性の計算インデックス
類似性インデックスは次のように計算されます。
similarity = count(similar words between @a and @b) / (count(@a) + count(@b) - count(intersection))
レーベンシュタイン関数の使用
MySQL は、次の関数をネイティブにサポートしていません。文字列の類似性。ただし、levenshtein と呼ばれるユーザー定義関数 (UDF) を使用して、ある文字列を別の文字列に変換するために必要な編集 (挿入、削除、または置換) の数を測定するレーベンシュタイン距離を計算できます。
レーベンシュタイン UDF の作成
CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC ...
用レーベンシュタイン UDF の詳細については、提供されているコード スニペットを参照してください。
類似性比の計算
最後に、レーベンシュタイン距離を正規化することで類似性比を計算できます。 2 つの文字列の最大長に対して:
CREATE FUNCTION `levenshtein_ratio`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC ...
たとえば、レーベンシュタイン比関数を使用した @a と @b の類似性比は次のように計算できます。
SELECT levenshtein_ratio(@a, @b);
これにより、類似性比がパーセンテージ値として返されます。
以上が重複する単語とレーベンシュタイン距離を使用して MySQL で文字列の類似性を測定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。