ハミングとMLIPNSの文字列の距離

目次
1. ハミング(Hamming)
1.1 ハミングとは
1.2 ハミングのコード例
2. MLIPNS距離
2.1 MLIPNSとは
2.2 MLIPNSのコード例

 

関連記事:

Pythonでの文字列の距離や類似性

距離と類似度の解説

 

前回はPythonでの文字列の距離や類似性について解説しました。今回の記事はHammingとMLIPNSを解説したいと思います。

 

1. ハミング(Hamming)

1.1 ハミング距離とは

ハミング距離はHamming distanceの英語略称で、等しい文字数を持つ二つの文字列の中で、対応する位置にある異なった文字の個数です。例えば、

「101」と「100」の距離は、1です。

「make」と「made」の距離は、1です。

「job」と「jab」の距離は、1です。

あくまでも異なるかどうかでしか見ないため意味合い等は見る事は当然できません。ただしデータの誤り検知のような確実に同じと思われるような所で使われます。

 

1.2 ハミングのコード例

TextDistanceのライブラリでハミング距離を計算します。

すべてのアルゴリズムには、いくつかの一般的な方法があります。

.distance(* sequences)-シーケンス間の距離を計算します。

.similarity(* sequences)-シーケンスの類似性を計算します。

.maximum(* sequences)-距離と類似性の可能な最大値。 distance + similarity == maximum

.normalized_distance(* sequences)-シーケンス間の正規化された距離。 戻り値は0と1の間の浮動小数点数です。ここで、0は等しいことを意味し、1は完全に異なることを意味します。

.normalized_similarity(* sequences)-シーケンスの正規化された類似性。 戻り値は0と1の間の浮動小数点数です。ここで、0は完全に異なることを意味し、1は等しいことを意味します。

 

init引数:

qval–シーケンスをqグラムに分割するためのq値。 可能な値:

・1(デフォルト)-シーケンスを文字で比較します。

・2つ以上-シーケンスをq-gramに変換します。

・なし-シーケンスを単語で分割します。

as_set-トークンベースのアルゴリズムの場合:

・True-tとtttは等しい。

・False(デフォルト)-tとtttは異なります。

 

import textdistance

 

print(textdistance.hamming.distance(‘1011101’, ‘1001001’))

print(textdistance.hamming.similarity(‘1011101’, ‘1001001’))

print(textdistance.hamming.normalized_distance(‘1011101’, ‘1001001’))

print(textdistance.hamming.normalized_similarity(‘1011101’, ‘1001001’))

print(textdistance.Hamming(qval=2).distance(‘1011101’, ‘1001001’))

2

5

0.2857142857142857

0.7142857142857143

4

 

2. MLIPNS距離

2.1 MLIPNSとは

MLIPNSはModified Language-Independent Product Name Searchの英語略称で、Hammingと同様のアルゴリズムでテキストの中でいくつ一緒な文字があるor 違いがあるかで類似度を算出します。しかし1.0(類似)または0.0(類似ではない)のみを返します。 MLIPNSの類似性は、正規化されたハミングの類似性と同じです。

 

2.2 MLIPNSのコード例

TextDistanceのライブラリでMLIPNS距離を計算します。

Distance、similarity、normalized_distance、normalized_similarityを計算します。

import textdistance

 

print(textdistance.mlipns.distance(‘1011101’, ‘1001001’))

print(textdistance.mlipns.similarity(‘1011101’, ‘1001001’))

print(textdistance.mlipns.normalized_distance(‘1011101’, ‘1001001’))

print(textdistance.mlipns.normalized_similarity(‘1011101’, ‘1001001’))

0

1

0.0

1.0

担当者:KW
バンコクのタイ出身 データサイエンティスト
製造、マーケティング、財務、AI研究などの様々な業界にPSI生産管理、在庫予測・最適化分析、顧客ロイヤルティ分析、センチメント分析、SaaS、PaaS、IaaS、AI at the Edge の環境構築などのスペシャリスト