--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
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
Il existe un module python très utile python-Levenshtein
Le document officiel est ici
Installer avec pip
$ pip install python-Levenshtein
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.
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.
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