See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 56998|Vastuse: 2

[Allikas] Rakendage stringi sarnasuse algoritm C#-s

[Kopeeri link]
Postitatud 23.04.2019 12:59:18 | | | |
Hiljuti tuleb lahendada probleem, nimelt kasutaja sisestatud stringi ja süsteemi saadud stringi võrdlemine, kui viga pole väga suur, peab süsteem seda nõuetele vastavaks ning on kõige parem seada lävi.
CAPTCHA tuvastuses tuleb võrrelda märgikoodide sarnasust ja kasutada "edit distance algoritmi", et salvestada printsiip ja C# rakendus.

Baidu entsüklopeedia kohaselt:

Redigeerimiskaugus, tuntud ka kui Levenshteini kaugus (tuntud ka kui redigeerimiskaugus), on minimaalne redigeerimiste arv, mis on vajalik kahe stringi vahel vahetamiseks, ning mida suurem on kaugus, seda erinevamad need on. Lubatud redigeerimistoimingud hõlmavad ühe tähemärgi asendamist teisega, tähemärgi lisamist ja tähemärgi eemaldamist.

Näiteks teisendage sõna kassipoeg istumiseks:

sitten (k→s)

Sittin (e→i)

istumine (→g)

Vene teadlane Vladimir Levenshtein pakkus selle kontseptsiooni välja 1965. aastal. Sellest ka nimi Levenshteini kaugus.

Näiteks

Kui str1="ivan", str2="ivan", siis arvutatakse, et see võrdub 0-ga. Ei konverteeritud. sarnasus=1-0/Matemaatika.Max(str1.pikkus,str2.pikkus)=1
Kui str1="ivan1", str2="ivan2", siis arvutatakse võrdne 1-ga. Str1 "1" teisendatakse "2"-ks, teisendab märgi, seega kaugus on 1, sarnasus = 1-1/Math.Max(str1.length, str2.length) = 0.8

Rakendus:

  • DNA analüüs
  • Õigekirjakontroll
  • Kõnetuvastus
  • Plagiaadi tuvastamine



Algoritm on rakendatud C# keeles:

Testkood:






Testitulemustest järeldatakse, etruumvõiKirjavahemärgidKeele asendErinevad linnadTulemused, mis mõjutavad sarnasustSeetõttu on soovitatav stringi tuvastamise võrdlemisel eemaldada kõik tühikud ja erisümbolid stringist enne algoritmi kutsumist

Ressursse:Hüperlingi sisselogimine on nähtav.

GitHubis on olemas ka raamatukogu C# stringide sarnasuse võrdlusteks

FuzzyString on raamatukogu, mis on loodud minu igapäevase töö jaoks, et koordineerida nimetamiskonventsioone erinevate ruudustikumudelite vahel. Olen eemaldanud elektrisüsteemispetsiifilise koodi ja pannud kokku selle, mida saab tõhusalt kasutada stringi laiendusena, et määrata kahe stringi ligikaudne võrdsus. Kõik siin kasutatavad algoritmid on välja võetud veebiallikatest, teisendatud C# keelde ja kompileeritud sellesse teeki. Leidsin mitmeid teisi sarnaseid avatud lähtekoodiga rakendusi, mis pole saadaval . NET / C#。 *.dll lisamine oma projekti annab sulle ligipääsu sellele laiendusele ja individuaalsetele laiendustele ApproximatelyEquals() laienduse all.



Aadress:Hüperlingi sisselogimine on nähtav.

Nuget paigaldus:

Selles projektis kaasatud algoritmid:

  • Hammingi kaugus
  • Jaccardi distants
  • Jaro kaugus
  • Jaro-Winkleri distants
  • Levenshteini kaugus
  • Pikim avalikkus
  • Alamjärjestuse pikim ühine alamstring
  • Kattuvuskoefitsient
  • Ratcliff-Obershelp sarnasus
  • Sorensen-Täringu kaugus
  • Tanimoto koefitsient



Kasutamine:


Tulemus:



(Lõpp)




Eelmine:Tarkvaratestimise kunst 3. väljaanne pdf
Järgmine:"Andmeanalüütikute kaheksa pädevust" ei krüpteeri kogu kursust
Postitatud 06.05.2019 13:11:34 |
Teadmised tulevad
Postitatud 07.09.2021 15:01:05 |
Kas pärast vastamist on võimalik koodi näha?
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com