Kürzlich gibt es ein Problem, das behoben werden muss, nämlich den vom Benutzer eingegebenen String und den vom System erhaltenen String zu vergleichen; wenn der Fehler nicht sehr groß ist, betrachtet das System ihn als erfüllend für die Anforderungen, und es ist am besten, eine Schwelle festzulegen. Bei der CAPTCHA-Erkennung muss man die Ähnlichkeit der Zeichencodes vergleichen und den "Edit Distance-Algorithmus" verwenden, um das Prinzip und die C#-Implementierung aufzuzeichnen.
Laut der Baidu-Enzyklopädie:
Die Bearbeitungsdistanz, auch bekannt als Levenshtein-Entfernung (auch Bearbeitungsdistanz genannt), ist die minimale Anzahl von Bearbeitungen, die erforderlich ist, um zwischen zwei Strings von einer Zeile auf eine andere zu wechseln, und je größer die Distanz, desto unterschiedlicher sind sie. Permissionierte Bearbeitungsoperationen umfassen das Ersetzen eines Zeichens durch ein anderes, das Einfügen eines Zeichens und das Entfernen eines Zeichens.
Zum Beispiel kann man das Wort Kätzchen in Sitzen umwandeln:
Sitten (K→S)
Sittin (E→I)
Sitzen (→g)
Der russische Wissenschaftler Vladimir Levenshtein schlug dieses Konzept 1965 vor. Daher der Name Levenshtein Distance.
Zum Beispiel
Wenn str1="ivan", str2="ivan", dann wird er als gleich 0 berechnet. Nicht konvertiert. similarity=1-0/Math.Max(str1.length,str2.length)=1 Wenn str1="ivan1", str2="ivan2", dann wird es als gleich 1 berechnet. Die "1" von str1 wandelt sich in "2" um, wandelt ein Zeichen um, sodass der Abstand 1 ist, Ähnlichkeit = 1-1/Math.Max(str1.length, str2.length) = 0,8
Anwendung:
- DNA-Analyse
- Rechtschreibprüfung
- Spracherkennung
- Plagiatserkennung
Der Algorithmus ist in C# implementiert:
Testcode:
Aus den Testergebnissen wird geschlossen, dassRaumoderZeichensetzung、SaitenpositionVerschiedene StädteErgebnisse, die die Ähnlichkeit beeinflussenDaher wird beim Vergleich der Zeichenkettenerkennung empfohlen, alle Leerzeichen und speziellen Symbole aus der Zeichenkette zu entfernen, bevor der Algorithmus aufgerufen wird。
Betriebsmittel:Der Hyperlink-Login ist sichtbar.
Auf GitHub gibt es außerdem eine Bibliothek für den Vergleich von C#-String-Ähnlichkeiten
FuzzyString ist eine Bibliothek, die für meine tägliche Arbeit entwickelt wurde, um Namenskonventionen zwischen verschiedenen Grid-Modellen zu koordinieren. Ich habe den systemspezifischen Code für das Stromnetz entfernt und zusammengestellt, was effektiv als String-Erweiterung genutzt werden kann, um die ungefähre Gleichheit zwischen den beiden Strings zu bestimmen. Alle hier verwendeten Algorithmen wurden aus Online-Quellen extrahiert, in C# konvertiert und in diese Bibliothek kompiliert. Ich habe mehrere andere ähnliche Open-Source-Implementierungen gefunden, die für . nicht verfügbar sind. NET / C#。 Das Hinzufügen von *.dll zu deinem Projekt erhält Zugriff auf diese Erweiterung und die einzelnen Erweiterungen unter der ApproximatelyEquals()-Erweiterung.
Adresse:Der Hyperlink-Login ist sichtbar.
NuGet-Installation:
In diesem Projekt enthaltene Algorithmen:
- Hamming-Distanz
- Jaccard-Distanz
- Jaro-Distanz
- Jaro-Winkler-Distanz
- Levenshtein-Entfernung
- Die längste öffentliche Bevölkerung
- Die längste gemeinsame Teilfolge der Teilfolge
- Überlappungskoeffizient
- Ratcliff-Obershelp-Ähnlichkeit
- Sorensen-Würfel-Entfernung
- Tanimoto-Koeffizient
Verwendung:
Ergebnis:
(Ende)
|