Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 56998|Απάντηση: 2

[Πηγή] Εφαρμόστε τον αλγόριθμο ομοιότητας συμβολοσειρών σε C#

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 23/4/2019 12:59:18 μ.μ. | | | |
Πρόσφατα, υπάρχει ένα πρόβλημα που πρέπει να αντιμετωπιστεί, δηλαδή να συγκριθεί η συμβολοσειρά που εισήγαγε ο χρήστης και η συμβολοσειρά που έλαβε το σύστημα, εάν το σφάλμα δεν είναι πολύ μεγάλο, το σύστημα θα θεωρήσει ότι πληροί τις απαιτήσεις και είναι καλύτερο να ορίσετε ένα όριο.
Όταν ασχολείστε με την αναγνώριση CAPTCHA, πρέπει να συγκρίνετε την ομοιότητα των κωδικών χαρακτήρων και να χρησιμοποιήσετε τον "αλγόριθμο επεξεργασίας απόστασης" για να καταγράψετε την αρχή και την εφαρμογή C#.

Σύμφωνα με την εγκυκλοπαίδεια Baidu:

Η απόσταση επεξεργασίας, γνωστή και ως απόσταση Levenshtein (γνωστή και ως απόσταση επεξεργασίας), είναι ο ελάχιστος αριθμός επεξεργασιών που απαιτούνται για την εναλλαγή από τη μία στην άλλη μεταξύ δύο συμβολοσειρών και όσο μεγαλύτερη είναι η απόσταση, τόσο πιο διαφορετικές είναι. Οι λειτουργίες επεξεργασίας με άδεια περιλαμβάνουν την αντικατάσταση ενός χαρακτήρα με έναν άλλο, την εισαγωγή ενός χαρακτήρα και την αφαίρεση ενός χαρακτήρα.

Για παράδειγμα, μετατρέψτε τη λέξη γατάκι σε καθιστή:

Σίτεν (Κ→Σ)

Σιτίνη (Ε→Θ)

καθιστή θέση (→g)

Ο Ρώσος επιστήμονας Vladimir Levenshtein πρότεινε αυτή την ιδέα το 1965. Εξ ου και το όνομα Levenshtein Distance.

Για παράδειγμα

Αν str1="ivan", str2="ivan", τότε υπολογίζεται ότι είναι ίσο με 0. Δεν μετατράπηκε. ομοιότητα=1-0/Math.Max(str1.length,str2.length)=1
Αν str1="ivan1", str2="ivan2", τότε υπολογίζεται ότι είναι ίσο με 1. Το "1" του str1 μετατρέπεται σε "2", μετατρέπει έναν χαρακτήρα, οπότε η απόσταση είναι 1, ομοιότητα = 1-1/Math.Max(str1.length, str2.length) = 0.8

Εφαρμογή:

  • Ανάλυση DNA
  • Ορθογραφικός έλεγχος
  • Αναγνώριση ομιλίας
  • Ανίχνευση λογοκλοπής



Ο αλγόριθμος υλοποιείται σε C#:

Κωδικός δοκιμής:






Από τα αποτελέσματα των δοκιμών, συμπεραίνεται ότιχώροςήΣημεία στίξηςΘέση συμβολοσειράςΔιαφορετικές πόλειςΑποτελέσματα που επηρεάζουν την ομοιότηταΕπομένως, κατά τη σύγκριση της αναγνώρισης συμβολοσειράς, συνιστάται να αφαιρέσετε όλα τα κενά και τα ειδικά σύμβολα στη συμβολοσειρά πριν καλέσετε τον αλγόριθμο

Πόροι:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Στο GitHub, υπάρχει επίσης μια βιβλιοθήκη για συγκρίσεις ομοιότητας συμβολοσειρών C#

Το FuzzyString είναι μια βιβλιοθήκη που αναπτύχθηκε για την καθημερινή μου εργασία για τον συντονισμό των συμβάσεων ονομασίας μεταξύ διαφορετικών μοντέλων πλέγματος. Έχω αφαιρέσει τον κώδικα για το συγκεκριμένο σύστημα ισχύος και έχω συγκεντρώσει αυτό που μπορεί να χρησιμοποιηθεί αποτελεσματικά ως επέκταση συμβολοσειράς για να προσδιορίσω την κατά προσέγγιση ισότητα μεταξύ των δύο συμβολοσειρών. Όλοι οι αλγόριθμοι που χρησιμοποιούνται εδώ έχουν εξαχθεί από διαδικτυακές πηγές, έχουν μετατραπεί σε C# και έχουν μεταγλωττιστεί σε αυτήν τη βιβλιοθήκη. Βρήκα πολλές άλλες παρόμοιες υλοποιήσεις ανοιχτού κώδικα που δεν είναι διαθέσιμες για . ΚΑΘΑΡΑ / C#。 Η προσθήκη *.dll στο έργο σας θα σας δώσει πρόσβαση σε αυτήν την επέκταση και στις μεμονωμένες επεκτάσεις κάτω από την επέκταση ApproximatelyEquals().



Διεύθυνση:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Εγκατάσταση Nuget:

Αλγόριθμοι που περιλαμβάνονται σε αυτό το έργο:

  • Απόσταση χαμάμ
  • Απόσταση Jaccard
  • Απόσταση Jaro
  • Απόσταση Jaro-Winkler
  • Απόσταση Levenshtein
  • Το μεγαλύτερο κοινό
  • Η μεγαλύτερη κοινή υποσυμβολοσειρά της υποακολουθίας
  • Συντελεστής επικάλυψης
  • Ratcliff-Obersβοηθούν την ομοιότητα
  • Απόσταση Sorensen-Dice
  • Συντελεστής Tanimoto



Χρήση:


Έκβαση:



(Τέλος)




Προηγούμενος:Η Τέχνη της Δοκιμής Λογισμικού 3η Έκδοση pdf
Επόμενος:Το "Eight Competencies of Data Analysts" δεν κρυπτογραφεί ολόκληρο το μάθημα
Δημοσιεύτηκε στις 6/5/2019 1:11:34 μ.μ. |
Η γνώση έρχεται
Δημοσιεύτηκε στις 7/9/2021 3:01:05 μ.μ. |
Είναι δυνατόν να δω τον κωδικό μετά την απάντηση;
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com