|
|
Zverejnené 23. 4. 2019 12:59:18
|
|
|
|

V poslednej dobe sa objavil problém, ktorý je potrebné vyriešiť, a to porovnať reťazec zadaný používateľom a reťazec získaný systémom, ak chyba nie je veľmi veľká, systém ju považuje za spĺňajúcu požiadavky a najlepšie je nastaviť prah. Pri rozpoznávaní CAPTCHA je potrebné porovnať podobnosť kódov znakov a použiť "algoritmus vzdialenosti úprav" na zaznamenanie princípu a implementácie v C#.
Podľa Baidu encyklopédie:
Edit distance, známa aj ako Levenshteinova vzdialenosť (tiež známa ako edit distance), je minimálny počet úprav potrebných na prechod medzi dvoma strunami, a čím väčšia je vzdialenosť, tým viac sa líšia. Povolené úpravy zahŕňajú nahradenie jedného znaku druhým, vloženie znaku a odstránenie znaku.
Napríklad preveďte slovo mačiatko na sedenie:
Sitten (K→s)
Sittin (E→I)
sedenie (→g)
Ruský vedec Vladimir Levenshtein navrhol tento koncept v roku 1965. Odtiaľ pochádza názov Levenshteinova vzdialenosť.
Napríklad
Ak str1="ivan", str2="ivan", potom sa vypočíta ako 0. Nie premenené. podobnosť=1-0/Matematika.Max(str1.dĺžka,str2.dĺžka)=1 Ak str1="ivan1", str2="ivan2", vypočíta sa ako 1. "1" zo str1 sa premení na "2", premení znak, takže vzdialenosť je 1, podobnosť = 1-1/Math.Max(str1.dĺžka, str2.dĺžka) = 0,8
Použitie:
- Analýza DNA
- Kontrola pravopisu
- Rozpoznávanie reči
- Detekcia plagiátorstva
Algoritmus je implementovaný v C#:
Testovací kód:
Z výsledkov testov vyplýva, žepriestoraleboInterpunkcia、Poloha strunyRôzne mestáVýsledky ovplyvňujúce podobnosťPreto sa pri porovnávaní rozpoznávania reťazcov odporúča odstrániť všetky medzery a špeciálne symboly v reťazci pred zavolaním algoritmu。
Zdroje:Prihlásenie na hypertextový odkaz je viditeľné.
Na GitHube je tiež knižnica na porovnanie podobnosti strunov v C#
FuzzyString je knižnica vyvinutá pre moju každodennú prácu na koordináciu pomenovávacích konvencií medzi rôznymi modelmi mriežky. Odstránil som kód špecifický pre energetický systém a zostavil som to, čo sa dá efektívne použiť ako rozšírenie reťazca na určenie približnej rovnosti medzi týmito dvoma reťazcami. Všetky použité algoritmy boli extrahované z online zdrojov, prevedené do C# a skompilované do tejto knižnice. Našiel som niekoľko ďalších podobných open source implementácií, ktoré nie sú dostupné pre . NET / C#。 Pridaním *.dll do vášho projektu získate prístup k tomuto rozšíreniu a jednotlivým rozšíreniam pod rozšírením ApproximatelyEquals().
Adresa:Prihlásenie na hypertextový odkaz je viditeľné.
Inštalácia Nugetu:
Algoritmy zahrnuté v tomto projekte:
- Hammingova vzdialenosť
- Jaccardova vzdialenosť
- Jaro vzdialenosť
- Jaro-Winklerova vzdialenosť
- Levenshteinova vzdialenosť
- Najdlhšie publikum
- Najdlhší spoločný podreťazec podsekvencie
- Koeficient prekrytia
- Podobnosť Ratcliff-Obershelp
- Sorensen-Diceova vzdialenosť
- Tanimotov koeficient
Použitie:
Výsledok:
(Koniec)
|
Predchádzajúci:Umenie softvérového testovania, 3. edícia pdfBudúci:"Osem kompetencií dátových analytikov" nešifruje celý kurz
|