Nesen ir problēma, kas jārisina, tas ir, salīdzināt lietotāja ievadīto virkni un sistēmas iegūto virkni, ja kļūda nav ļoti liela, sistēma to uzskatīs par atbilstošu prasībām, un vislabāk ir noteikt slieksni. Iesaistoties CAPTCHA atpazīšanā, jums ir jāsalīdzina rakstzīmju kodu līdzība un jāizmanto "rediģēšanas attāluma algoritms", lai reģistrētu principu un C# ieviešanu.
Saskaņā ar Baidu enciklopēdiju:
Rediģēšanas attālums, kas pazīstams arī kā Levenšteina attālums (pazīstams arī kā rediģēšanas attālums), ir minimālais rediģēšanas skaits, kas nepieciešams, lai pārslēgtos no vienas uz otru starp divām virknēm, un, jo lielāks attālums, jo tās atšķiras. Atļautās rediģēšanas darbības ietver vienas rakstzīmes aizstāšanu ar citu, rakstzīmes ievietošanu un rakstzīmes noņemšanu.
Piemēram, pārveidojiet vārdu kaķēns uz sēdēšanu:
Sitten (K→s)
Sittin (E→i)
sēdēšana (→g)
Krievu zinātnieks Vladimirs Levenšteins ierosināja šo koncepciju 1965. gadā. Līdz ar to nosaukums Levenshtein attālums.
Piemēram
Ja str1="ivan", str2="ivan", tad tiek aprēķināts, ka tas ir vienāds ar 0. Nav konvertēts. līdzība = 1-0 / Math.Max (str1.garums, str2 garums) = 1 Ja str1="ivan1", str2="ivan2", tad tiek aprēķināts, ka tas ir vienāds ar 1. Str1 "1" pārvēršas par "2", pārvērš rakstzīmi, tātad attālums ir 1, līdzība = 1-1/Math.Max(str1.length, str2.length) = 0.8
Pieteikums:
- DNS analīze
- Pareizrakstības pārbaude
- Runas atpazīšana
- Plaģiāta noteikšana
Algoritms ir ieviests C#:
Testa kods:
No testa rezultātiem secina, kakosmossvaiPieturzīmes、Virknes novietojumsDažādas pilsētasRezultāti, kas ietekmē līdzībuTāpēc, salīdzinot virknes atpazīšanu, pirms algoritma izsaukšanas ieteicams noņemt visas atstarpes un īpašos simbolus virknē。
Resursu:Hipersaites pieteikšanās ir redzama.
Vietnē GitHub ir arī bibliotēka C# virkņu līdzības salīdzināšanai
FuzzyString ir bibliotēka, kas izstrādāta manam ikdienas darbam, lai koordinētu nosaukumu piešķiršanas konvencijas starp dažādiem režģa modeļiem. Es esmu noņēmis enerģijas sistēmai specifisku kodu un saliku kopā to, ko var efektīvi izmantot kā virknes paplašinājumu, lai noteiktu aptuveno vienlīdzību starp abām virknēm. Visi šeit izmantotie algoritmi ir iegūti no tiešsaistes avotiem, konvertēti uz C# un apkopoti šajā bibliotēkā. Es atradu vairākas citas līdzīgas atvērtā koda implementācijas, kas nav pieejamas . NET / C#。 Pievienojot projektam *.dll, jūs varēsiet piekļūt šim paplašinājumam un atsevišķiem paplašinājumiem paplašinājumā ApproximatelyEquals().
Adrese:Hipersaites pieteikšanās ir redzama.
Nuget instalēšana:
Šajā projektā iekļautie algoritmi:
- Hamming attālums
- Žakarda attālums
- Jaro attālums
- Jaro-Winkler attālums
- Levenšteinas attālums
- Garākā sabiedrība
- Apakšsecības garākā kopējā apakšvirkne
- Pārklāšanās koeficients
- Ratcliff-Obershelp līdzība
- Sorensena-kauliņu attālums
- Tanimoto koeficients
Lietošana:
Rezultātu:
(Beigas)
|