Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 56998|Svar: 2

[Kilde] Implementér streng-lighedsalgoritmen i C#

[Kopier link]
Opslået på 23/04/2019 12.59.18 | | | |
For nylig er der et problem, der skal løses, nemlig at sammenligne den streng, brugeren indtaster, og den streng, systemet har opnået; hvis fejlen ikke er meget stor, vil systemet betragte den som opfylder kravene, og det er bedst at sætte en tærskel.
Når du bruger CAPTCHA-genkendelse, skal du sammenligne ligheden mellem tegnkoder og bruge "edit distance-algoritmen" til at lave en registrering af princippet og C#-implementeringen.

Ifølge Baidu-encyklopædien:

Redigeringsafstand, også kendt som Levenshtein-afstand (også kendt som redigeringsafstand), er det minimale antal redigeringer, der kræves for at skifte fra den ene til den anden mellem to strenge, og jo større afstand, desto mere forskellige er de. Tilladelsesberettigede redigeringsoperationer inkluderer udskiftning af et tegn med et andet, indsættelse af et tegn og fjernelse af et tegn.

For eksempel, omsæt ordet killing til siddende:

Sitten (K→S)

Sittin (E→i)

siddende (→g)

Den russiske videnskabsmand Vladimir Levenshtein foreslog dette koncept i 1965. Derfor navnet Levenshtein Distance.

For eksempel

Hvis str1="ivan", str2="ivan", så beregnes det til at være lig med 0. Ikke konverteret. lighed=1-0/Math.Max(str1.length,str2.length)=1
Hvis str1="ivan1", str2="ivan2", så beregnes det til at være lig med 1. "1" i str1 konverteres til "2", konverterer et tegn, så afstanden er 1, lighed = 1-1/Math.Max(str1.length, str2.length) = 0,8

Anvendelse:

  • DNA-analyse
  • Stavekontrol
  • Tagenkendelse
  • Plagiatopdagelse



Algoritmen er implementeret i C#:

Testkode:






Ud fra testresultaterne konkluderes det, atrumellerTegnsætningStrengpositionForskellige byerResultater, der påvirker lighedDerfor anbefales det, når man sammenligner strenggenkendelse, at fjerne alle mellemrum og specielle symboler i strengen, før algoritmen kaldes

Ressourcer:Hyperlink-login er synlig.

På GitHub findes der også et bibliotek til sammenligninger af C#-strenge og lighed

FuzzyString er et bibliotek udviklet til mit daglige arbejde for at koordinere navngivningskonventioner mellem forskellige gittermodeller. Jeg har fjernet den elsystemspecifikke kode og samlet, hvad der effektivt kan bruges som en strengudvidelse til at bestemme den omtrentlige lighed mellem de to strenge. Alle algoritmerne, der bruges her, er udtrukket fra onlinekilder, konverteret til C# og kompileret til dette bibliotek. Jeg fandt flere andre lignende open source-implementeringer, som ikke findes for . NET / C#。 Hvis du tilføjer *.dll til dit projekt, får du adgang til denne udvidelse og de enkelte udvidelser under ApproximatelyEquals()-udvidelsen.



Adresse:Hyperlink-login er synlig.

NuGet-installation:

Algoritmer inkluderet i dette projekt:

  • Hamming-distance
  • Jaccard-afstand
  • Jaro-afstand
  • Jaro-Winkler-distancen
  • Levenshtein-afstand
  • Den længst offentlige
  • Den længste fælles delstreng i delsekvensen
  • Overlapskoefficient
  • Ratcliff-Obershelp-lighed
  • Sorensen-Dice afstand
  • Tanimoto-koefficient



Brug:


Udfald:



(Slut)




Tidligere:The Art of Software Testing 3. udgave pdf
Næste:"Otte kompetencer for dataanalytikere" krypterer ikke hele kurset
Opslået på 06/05/2019 13.11.34 |
Viden er på vej
Opslået på 07/09/2021 15.01.05 |
Er det muligt at se koden efter at have svaret?
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com