Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 56998|Antwoord: 2

[Bron] Implementeer het string-similariteitsalgoritme in C#

[Link kopiëren]
Geplaatst op 23-04-2019 12:59:18 | | | |
Onlangs is er een probleem dat moet worden opgelost, namelijk het vergelijken van de door de gebruiker ingevoerde string en de string die door het systeem is verkregen; als de fout niet erg groot is, zal het systeem deze als aan de eisen beschouwen en is het het beste om een drempel in te stellen.
Bij het uitvoeren van CAPTCHA-herkenning moet je de gelijkenis van tekencodes vergelijken en het "edit distance algorithm" gebruiken om een registratie te maken van het principe en de C#-implementatie.

Volgens de Baidu Encyclopedie:

Bewerkingsafstand, ook wel Levenshtein-afstand genoemd (ook wel bewerkingsafstand genoemd), is het minimale aantal bewerkingen dat nodig is om tussen twee strings van de ene naar de andere te schakelen, en hoe groter de afstand, hoe verschillender ze zijn. Bewerkingsbewerkingen met toestemming omvatten het vervangen van het ene teken door het andere, het invoegen van een teken en het verwijderen van een teken.

Zet bijvoorbeeld het woord kitten om in zitten:

Sitten (K→s)

Sittin (E→i)

Zittend (→g)

De Russische wetenschapper Vladimir Levenshtein stelde dit concept in 1965 voor. Vandaar de naam Levenshtein Afstand.

Bijvoorbeeld

Als str1="ivan", str2="ivan", dan wordt het berekend als gelijk aan 0. Niet omgezet. gelijkheid=1-0/Math.Max(str1.length,str2.length)=1
Als str1="ivan1", str2="ivan2", dan wordt het berekend als gelijk aan 1. De "1" van str1 zet om in "2", zet een karakter om, dus de afstand is 1, gelijkenis = 1-1/Math.Max(str1.length, str2.length) = 0.8

Toepassing:

  • DNA-analyse
  • Spellingscontrole
  • Spraakherkenning
  • Plagiaatdetectie



Het algoritme is geïmplementeerd in C#:

Testcode:






Uit de testresultaten wordt geconcludeerd datruimteofInterpunctieSnaarpositieVerschillende stedenResultaten die de gelijkenis beïnvloedenDaarom wordt bij het vergelijken van stringherkenning aanbevolen om alle ruimtes en speciale symbolen in de string te verwijderen voordat het algoritme wordt aangeroepen

Weg:De hyperlink-login is zichtbaar.

Op GitHub is er ook een bibliotheek voor gelijkenisvergelijkingen van C#-strings

FuzzyString is een bibliotheek die is ontwikkeld voor mijn dagelijkse werk om naamgevingsconventies tussen verschillende gridmodellen te coördineren. Ik heb de code voor het energiesysteem verwijderd en samengesteld wat effectief als stringuitbreiding kan worden gebruikt om de benaderende gelijkheid tussen de twee strings te bepalen. Alle hier gebruikte algoritmen zijn uit online bronnen gehaald, omgezet naar C# en gecompileerd in deze bibliotheek. Ik heb verschillende andere vergelijkbare open source implementaties gevonden die niet beschikbaar zijn voor . NET / C#。 Door *.dll aan je project toe te voegen, krijg je toegang tot deze extensie en de individuele extensies onder de extensie ApproximatelyEquals().



Adres:De hyperlink-login is zichtbaar.

NuGet-installatie:

Algoritmen die in dit project zijn opgenomen:

  • Hammingafstand
  • Jaccard-afstand
  • Jaro-afstand
  • Jaro-Winkler-afstand
  • Levenshtein-afstand
  • Het langst publieke
  • De langste gemeenschappelijke deelreeks van de deelreeks
  • Overlapcoëfficiënt
  • Ratcliff-Obershelp-overeenkomst
  • Sorensen-Dice afstand
  • Tanimoto-coëfficiënt



Gebruik:


Resultaat:



(Einde)




Vorig:De kunst van softwaretesten 3e editie pdf
Volgend:"Acht Competenties van Data-analisten" versleutelt niet de volledige cursus
Geplaatst op 06-05-2019 13:11:34 |
Kennis komt eraan
Geplaatst op 07-09-2021 15:01:05 |
Is het mogelijk om de code te zien nadat je hebt gereageerd?
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com