文字列の類似度を計算する

ロウ
2022-01-14
ロウ
2022-01-14

前書き

今回は二つの手法で文字列の類似度の算出をやってみます。

レーベンシュタイン距離法(Levenshtein distance)

レーベンシュタイン距離法とは、一文字の挿入(insertions)・削除(deletions)・置換(substitutions)によって、ある文字列を別の文字列に変換するときに最小編集距離であること。

pipでライブラリpython-Levenshteinをインストールします。

```
pip install python-Levenshtein ```

二つ文字列の類似度を計算する:

```
import Levenshtein

string1 = "クラウドサーカス株式会社"
string2 = "クラウドサーカス"

# 二つの文字列のレーベンシュタイン距離を計算する
ld = Levenshtein.distance(string1, string2)
print(ld) # 計算結果: 4

# 二つの文字列の類似度を計算します。 類似度は0から1の間の値となる。
lr = Levenshtein.ratio(string1, string2)
print(lr) # 計算結果: 0.8 ```

ゲシュタルトパターンマッチング (Gestalt Pattern Matching)

文字列の類似度を計算するアルゴリズムの一つであり、Pythonの標準ライブラリdifflibを利用できる。

```
import difflib

string1 = "クラウドサーカス株式会社"
string2 = "クラウドサーカス"

ratio = difflib.SequenceMatcher(None, string1, string2).ratio()
print(ratio) # 計算結果: 0.8 ```