Ecrire un programme python pour trouver la distance d'édition [python] [distance Levenshtein]

Modifier la distance, c'est quoi

--Indicateur pour comparer deux chaînes ―― Combien de fois pouvez-vous convertir de s1 en s2 en effectuant les trois opérations suivantes? --Remplacer --Insérer

Explication grossière

s1 = "aaa"
s2 = "aab"

--Si la chaîne de caractères est comme ci-dessus, la distance d'édition est de 1. --Un remplacement

s1 = "aba"
s2 = "cc"

--Si la chaîne de caractères est comme ci-dessus, la distance d'édition est de 3 --Remplacement deux fois --Une insertion

la mise en oeuvre

Il existe un module python très utile python-Levenshtein Le document officiel est ici

Installation

Installer avec pip

$ pip install python-Levenshtein

programme

leven.py


import Levenshtein
import sys

args = sys.argv

with open(args[1], "r") as f_ans:
    with open(args[2], "r") as f_ref:
        s_ans = f_ans.read()
        s_ref = f_ref.read()

print(Levenshtein.distance(s_ans, s_ref))

C'est un programme simple qui spécifie simplement deux fichiers texte comme arguments de ligne de commande et crache la distance d'édition.

résultat

Préparez deux fichiers texte.

tmp1.txt


Helllo worb!!

tmp2.txt


Hello world!

Pour convertir de tmp1.txt en tmp2.txt

La distance d'édition doit donc être de 4.

$ python leven.py tmp1.txt tmp2.txt
4

devenu. heureux.

Impressions

Il s'agit d'un article écrit par une personne qui a essayé de l'implémenter par la méthode de planification dynamique, mais a constaté que le module avait été abandonné et qu'il était devenu difficile à mettre en œuvre. Si vous avez des questions, veuillez les laisser dans les commentaires.

Recommended Posts

Ecrire un programme python pour trouver la distance d'édition [python] [distance Levenshtein]
Trouvez la distance d'édition (distance de Levenshtein) avec python
Écrivez un programme pour résoudre le Rubik Cube 4x4x4! 1. Vue d'ensemble
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Écrivez un programme pour résoudre le Rubik Cube 4x4x4! 2. Algorithme
Écrivez un programme pour résoudre le Rubik Cube 4x4x4! 3. Mise en œuvre
Ecrire un programme qui abuse du programme et envoie 100 e-mails
Écrivez un script pour calculer la distance avec le système Elasticsearch 5 sans douleur
[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Ecrire le test dans la docstring python
Ecrire un programme de chiffrement Caesar en Python
Divers commentaires à écrire dans le programme
[Python] Un programme qui arrondit le score
Écrivons un programme pour résoudre le Rubik Cube (Partie 2: IDA * Search)
[Python] Un programme qui calcule le nombre de chaussettes jumelées
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Conseils pour rédiger un aplatissement concis en python
Pourquoi Python doit-il écrire un deux-points?
Écrivons un programme Python et exécutons-le
[Introduction à l'algorithme] Trouvez l'itinéraire le plus court [Python3]
amateur python tente de résumer la liste ②
[Python] Trouvez la matrice de translocation en notation d'inclusion
Je veux écrire dans un fichier avec Python
[Python] Lancer un message sur le canal Slack
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Trouvez le maximum de Python
Réfléchissez à la programmation de Python sur votre iPad
[Python] Un programme qui compte le nombre de vallées
Ecrire un programme de dynamique moléculaire super simple en python
Je veux écrire en Python! (2) Écrivons un test
Comment écrire un type liste / dictionnaire de Python3
De l'achat d'un ordinateur à l'exécution d'un programme sur python
[Python] Comment écrire une docstring conforme à PEP8
Écrire des données dans KINTONE à l'aide du module de requêtes Python
Je veux écrire en Python! (3) Utiliser des simulacres
[Python] Un mémo pour écrire du CSV verticalement avec Pandas
python Spécifie la fonction à exécuter lorsque le programme se termine
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python
Écrire du code dans UnitTest une application Web Python
[Python] Un programme qui compare les positions des kangourous.
Note Python: Le mystère de l'attribution d'une variable à une variable
Comment trouver le premier élément qui correspond aux critères de la liste Python
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
Découvrez la largeur apparente d'une chaîne en python
[python] Remplacez le nom du fichier image par un numéro de série
Exécutez le programme sans créer d'environnement Python! !! (Comment démarrer avec Google Colaboratory)
Une route vers Python intermédiaire
Trouver des erreurs en Python
Comment exécuter un programme Python à partir d'un script shell
Comment utiliser la méthode __call__ dans la classe Python
Changer la destination de sortie standard en un fichier en Python
Probablement le moyen le plus simple de créer un pdf avec Python 3
[Python] Chapitre 01-03 À propos de Python (Ecrire et exécuter un programme à l'aide de PyCharm)
Un programme qui redimensionne automatiquement la taille d'image requise pour les icônes d'application iOS en Python
Comment démarrer le PC à une heure fixe chaque matin et exécuter le programme python
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.