レーベンシュタイン距離を除いて、文字列の類似性アルゴリズムに慣れていません。これは、私が使用しているものであり、理想的ではないことが判明したためです。
だから私は実装したい再帰アルゴリズムのアイデアを持っていますが、それがすでに存在するかどうかを知りたいので、他の人の専門知識を活用できます。
例によるアルゴリズムは次のとおりです。
文字列 1: "ポール ジョンソン"
文字列 2: "ジョン ポールソン"
ステップ 1: すべての最長一致を見つける
マッチ1:「ポール」
マッチ2:「ジョン」
マッチ3:「息子」
マッチ 4: " "
ステップ 2: 次の式を使用して各一致のスコアを計算します: ((match.len/string.len)*match.len) これにより、文字列の長さに基づいて、より長い文字列をバランスの取れた割合で重み付けできます。
マッチ 1: (4/12)*4 = 1.333...
マッチ 2: 1.333...
マッチ 3: .75
マッチ 4: .083
ステップ 3: ステップ 1 と 2 をより大きなスケールで実行します (マッチのマッチ)。これは正確にはわかりません。しかし、私の考えでは、「息子」が「ポール・ジョン」の後に来て、「ジョン・ポール」の後に来たら、それは何かを数えるべきだと思います.
ステップ 4: 計算されたすべてのスコアを合計します。
スコア: 1.333 + 1.333 + .75 + .083333 = 3.4999... (プラス、ステップ 3 で生成されるスコア)
これは誰にとっても見覚えがありますか?他の誰かが実際にこれらの線に沿ってアルゴリズムを作成するのに苦労したことを願っているので、自分でそれを理解する必要はありません.