Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 56998|Antwort: 2

[Quelle] Implementierung des String-Similarity-Algorithmus in C#

[Link kopieren]
Veröffentlicht am 23.04.2019 12:59:18 | | | |
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, dassRaumoderZeichensetzungSaitenpositionVerschiedene 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)




Vorhergehend:Die Kunst des Softwaretests 3. Edition PDF
Nächster:"Acht Kompetenzen von Datenanalysten" verschlüsseln nicht den vollständigen Kurs
Veröffentlicht am 06.05.2019 13:11:34 |
Wissen kommt
Veröffentlicht am 07.09.2021 15:01:05 |
Ist es möglich, den Code nach der Antwort zu sehen?
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com