Ich suche nach einem Algorithmus, der 2 Zeichenketten nimmt und mir einen "Ähnlichkeitsfaktor" zurückgibt.Finden, wie ähnlich zwei Zeichenketten sind
Grundsätzlich werde ich eine Eingabe haben, die falsch geschrieben sein kann, Buchstaben transponiert haben, usw., und ich muss die nächste Übereinstimmung in einer Liste der möglichen Werte finden, die ich habe.
Dies ist nicht für die Suche in einer Datenbank. Ich werde eine In-Memory-Liste von etwa 500 Strings haben, um alle zu vergleichen, alle unter 30 Zeichen, also kann es relativ langsam sein.
Ich weiß, dass es existiert, ich habe es vorher gesehen, aber ich kann mich nicht an seinen Namen erinnern.
Edit: Danke für das Aufzeigen von Levenshtein und Hamming. Nun, welche sollte ich implementieren? Sie messen grundsätzlich verschiedene Dinge, die beide für das verwendet werden können, was ich will, aber ich bin mir nicht sicher, welches besser geeignet ist.
Ich habe die Algorithmen gelesen, Hamming scheint offensichtlich schneller. Da keiner von beiden erkennen wird, dass zwei Charaktere transponiert werden (z. B. Jordan und Jodran), was meiner Meinung nach ein häufiger Fehler sein wird, der genauer sein wird für das, was ich will? Kann mir jemand etwas über die Kompromisse erzählen?
beide Distanz Hamming und Levenshtein erkennen Umstellungen implementiert prüfen, die jeweils eine Gebühr von 2 zuweisen .Dies ist einer der wenigen typischen Fehler, die die Hamming-Distanz * sinnvoll aufnehmen wird - jede Ein-Zeichen-Eingabe oder -Deletion wird Ihnen sofort große Unterschiede geben. Benutze Levenshtein. –