Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 56998|Odgovoriti: 2

[Vir] Implementirajte algoritem podobnosti nizov v C#

[Kopiraj povezavo]
Objavljeno na 23. 04. 2019 12:59:18 | | | |
V zadnjem času se pojavi težava, ki jo je treba rešiti, in sicer, da je treba primerjati niz, ki ga je uporabnik vnesel, in niz, ki ga sistem dobi; če napaka ni zelo velika, bo sistem ocenil, da izpolnjuje zahteve, in najbolje je postaviti prag.
Pri prepoznavanju CAPTCHA morate primerjati podobnost znakovnih kod in uporabiti "algoritem za urejanje razdalje" za zapis principa in implementacije v C#.

Po Baidu enciklopediji:

Razdalja urejanja, znana tudi kot Levenshteinova razdalja (znana tudi kot razdalja urejanja), je minimalno število urejev, potrebnih za prehod med dvema strunama, in večja kot je razdalja, bolj se razlikujeta. Urejanje z dovoljenji vključuje zamenjavo enega znaka z drugim, vstavljanje znaka in odstranjevanje znaka.

Na primer, besedo mucek spremenite v sedenje:

Sitten (K→s)

Sittin (E→I)

sedenje (→g)

Ruski znanstvenik Vladimir Levenshtein je ta koncept predlagal leta 1965. Od tod tudi ime Levenshteinova razdalja.

Na primer

Če je str1="ivan", str2="ivan", se izračuna, da je enak 0. Ni bila pretvorjena. podobnost=1-0/Matematika.Max(str1.dolžina,str2.dolžina)=1
Če je str1="ivan1", str2="ivan2", se izračuna, da je enako 1. "1" v str1 se pretvori v "2", pretvori znak, tako da je razdalja 1, podobnost = 1-1/Math.Max(str1.length, str2.length) = 0,8

Uporaba:

  • Analiza DNK
  • Preverjanje črkovanja
  • Prepoznavanje govora
  • Zaznavanje plagiatorstva



Algoritem je implementiran v C#:

Testna koda:






Iz rezultatov testov je razvidno, daprostoraliLočilaPoložaj strunRazlična mestaRezultati, ki vplivajo na podobnostZato je pri primerjavi prepoznavanja nizov priporočljivo odstraniti vse presledke in posebne simbole v nizu, preden pokličete algoritem

Sredstva:Prijava do hiperpovezave je vidna.

Na GitHubu obstaja tudi knjižnica za primerjavo podobnosti nizov v C#

FuzzyString je knjižnica, razvita za moje vsakodnevno delo za usklajevanje konvencij poimenovanja med različnimi modeli mrež. Odstranil sem kodo, specifično za energetski sistem, in sestavil tisto, kar se lahko učinkovito uporabi kot razširitev nizov za določitev približne enakosti med obema nizoma. Vsi algoritmi, uporabljeni tukaj, so bili izvlečeni iz spletnih virov, pretvorjeni v C# in prevedeni v to knjižnico. Našel sem še več podobnih odprtokodnih implementacij, ki niso na voljo za . NET / C#。 Dodajanje *.dll v vaš projekt vam bo omogočilo dostop do te razširitve in posameznih razširitev pod razširitvijo ApproximatelyEquals().



Naslov:Prijava do hiperpovezave je vidna.

Namestitev NuGeta:

Algoritmi, vključeni v ta projekt:

  • Hammingova razdalja
  • Jaccardova razdalja
  • Jaro razdalja
  • Jaro-Winklerjeva razdalja
  • Levenshteinova razdalja
  • Najdaljša javnost
  • Najdaljši skupni podniz podzaporedja
  • Koeficient prekrivanja
  • Podobnost med Ratcliffom in Obershelp
  • Sorensen-Diceova razdalja
  • Tanimotov koeficient



Uporaba:


Rezultat:



(Konec)




Prejšnji:Umetnost testiranja programske opreme, 3. izdaja pdf
Naslednji:"Osem kompetenc podatkovnih analitikov" ne šifrira celotnega tečaja
Objavljeno na 6. 05. 2019 13:11:34 |
Znanje prihaja
Objavljeno na 7. 09. 2021 15:01:05 |
Ali je mogoče videti kodo po odgovoru?
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com