Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 56998|Svare: 2

[Kilde] Implementer strenglikhetsalgoritmen i C#

[Kopier lenke]
Publisert på 23.04.2019 12:59:18 | | | |
Nylig har det oppstått et problem som må løses, nemlig å sammenligne strengen som er lagt inn av brukeren og strengen som systemet oppnår – hvis feilen ikke er veldig stor, vil systemet vurdere den som oppfylt kravene, og det er best å sette en terskel.
Når du bruker CAPTCHA-gjenkjenning, må du sammenligne likheten mellom tegnkoder og bruke "edit distance algorithm" for å lage en oversikt over prinsippet og C#-implementeringen.

Ifølge Baidu-leksikonet:

Redigeringsavstand, også kjent som Levenshtein-avstand (også kjent som redigeringsavstand), er det minste antallet redigeringer som kreves for å bytte mellom to strenger, og jo større avstand, desto mer forskjellige er de. Tillatelsesbaserte redigeringsoperasjoner inkluderer å erstatte ett tegn med et annet, sette inn et tegn og fjerne et tegn.

For eksempel, konverter ordet kattunge til sittende:

Sitten (K→S)

Sittin (E→I)

sittende (→g)

Den russiske vitenskapsmannen Vladimir Levenshtein foreslo dette konseptet i 1965. Derfor navnet Levenshtein Distance.

For eksempel

Hvis str1="ivan", str2="ivan", beregnes det til å være lik 0. Ikke konvertert. likhet=1-0/Math.Max(str1.length,str2.length)=1
Hvis str1="ivan1", str2="ivan2", så beregnes det til å være lik 1. "1" i str1 konverteres til "2", konverterer et tegn, så avstanden er 1, likhet = 1-1/Math.Max(str1.length, str2.length) = 0,8

Anvendelse:

  • DNA-analyse
  • Stavekontroll
  • Talegjenkjenning
  • Plagiatdeteksjon



Algoritmen er implementert i C#:

Testkode:






Ut fra testresultatene konkluderes det med atromellerTegnsettingStrengposisjonUlike byerResultater som påvirker likhetDerfor anbefales det, når man sammenligner strenggjenkjenning, å fjerne alle mellomrom og spesialsymboler i strengen før man kaller algoritmen

Ressurser:Innloggingen med hyperkoblingen er synlig.

På GitHub finnes det også et bibliotek for sammenligninger av C#-streng-likhet

FuzzyString er et bibliotek utviklet for mitt daglige arbeid for å koordinere navnekonvensjoner mellom ulike rutenettmodeller. Jeg har fjernet den systemspesifikke koden og satt sammen det som effektivt kan brukes som en strengutvidelse for å bestemme den omtrentlige likheten mellom de to strengene. Alle algoritmene som brukes her er hentet ut fra nettbaserte kilder, konvertert til C# og kompilert inn i dette biblioteket. Jeg fant flere andre lignende open source-implementasjoner som ikke er tilgjengelige for . NET / C#。 Å legge til *.dll i prosjektet ditt gir deg tilgang til denne utvidelsen og de individuelle utvidelsene under ApproximatelyEquals()-utvidelsen.



Adresse:Innloggingen med hyperkoblingen er synlig.

NuGet-installasjon:

Algoritmer inkludert i dette prosjektet:

  • Hamming-distanse
  • Jaccard-distanse
  • Jaro-distanse
  • Jaro-Winkler-distansen
  • Levenshtein-avstand
  • Den lengst offentlige
  • Den lengste felles delstrengen i delsekvensen
  • Overlappskoeffisient
  • Ratcliff-Obershelp-likhet
  • Sorensen-Dice avstand
  • Tanimoto-koeffisienten



Bruk:


Utfall:



(Slutt)




Foregående:The Art of Software Testing 3. utgave pdf
Neste:"Åtte kompetanser for dataanalytikere" krypterer ikke hele kurset
Publisert på 06.05.2019 13:11:34 |
Kunnskap kommer
Publisert på 07.09.2021 15:01:05 |
Er det mulig å se koden etter å ha svart?
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com