** La distance de Levenshtein ** indique la différence entre les deux chaînes. Aussi connu sous le nom de distance d'édition. Un seul caractère ** Insérer / Supprimer / Remplacer ** définit le nombre minimum d'étapes requises pour transformer une chaîne en une autre. Référence: [Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%83%99%E3%83%B3%E3%82%B7%E3 % 83% A5% E3% 82% BF% E3% 82% A4% E3% 83% B3% E8% B7% 9D% E9% 9B% A2)
L'environnement utilise Google Colaboratory. La version Python est ci-dessous.
import platform
print("python " + platform.python_version())
# python 3.6.9
De plus, il est nécessaire d'installer la bibliothèque pour calculer la distance de Levenstein à l'avance.
pip install python-Levenshtein
Maintenant écrivons le code. Tout d'abord, importez la bibliothèque pour calculer la distance de Levenstein.
import Levenshtein
À titre d'essai, calculons la distance de Levenstein entre «Rievenstein» et «Levenshtein».
#Calculer la distance de Levenstein
Levenshtein.distance('Rievenstein', 'Levenshtein')
# 3
Le résultat était de 3. c'est,
C'est parce que j'ai effectué l'opération trois fois.
Vous pouvez vérifier le type d'opération que vous avez effectué ci-dessous.
Levenshtein.editops('Rievenstein', 'Levenshtein')
# [('delete', 0, 0), ('replace', 1, 0), ('insert', 7, 6)]
Le contenu affiché ici est (Opération effectuée, quel caractère numérique dans la première chaîne, quel numéro dans la deuxième chaîne) est. En d'autres termes
Cela signifie que.
Vous pouvez également calculer la similitude de votre similitude, et non le nombre de fois où vous avez effectué l'opération.
Levenshtein.ratio('Rievenstein', 'Levenshtein')
# 0.8181818181818182
S'il y a plusieurs chaînes, il est également possible d'extraire la chaîne qui est la valeur centrale des chaînes.
Levenshtein.median(['Rievenstein',
'Levenshtein',
'Revenshtein',
'Lievenstein',
'Levenshtain',
'Levennshtein'])
# 'Levenshtein'
La distance de Hamming est le nombre de caractères différents aux positions correspondantes dans deux chaînes de ** nombre égal de caractères **. Référence: [Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%9F%E3%83%B3%E3%82%B0%E8%B7%9D%E9 % 9B% A2)
Cela peut également être calculé en utilisant la même bibliothèque.
Levenshtein.hamming('Rievenstein', 'Levenshtein')
# 7
La distance de bourdonnement compare les chaînes Rievenstein et Levenshtein uniquement aux caractères du même emplacement. Ce sera comme suit.
En regardant les choses de cette manière, la distance de bourdonnement est sortie comme 7 parce que les 7 caractères sauf le dernier "tein" sont différents.
La distance de bourdonnement doit être ** égale en nombre de caractères. ** Une erreur se produira si le nombre de caractères est différent.
Il existe également la distance Jaro-Winkler, qui mesure la correspondance partielle entre deux chaînes. Plus il est proche de 1, plus il est similaire, et plus il est proche de 0, plus il est différent. Il semble être utilisé pour juger des fautes d'orthographe.
Levenshtein.jaro_winkler('Rievenstein', 'Levenshtein')
# 0.8787878787878789
J'ai utilisé Python pour calculer la distance de Levenstein. J'ai également calculé la distance Humming et la distance Jaro Winkler comme d'autres distances d'édition. Bien sûr, veuillez calculer la distance d'édition de diverses chaînes de caractères similaires et calculer la similitude.
Veuillez vous référer à ce qui suit pour les détails de la bibliothèque utilisée cette fois. https://rawgit.com/ztane/python-Levenshtein/master/docs/Levenshtein.html#Levenshtein-median
Recommended Posts