Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 56998|Odpoveď: 2

[Zdroj] Implementujte algoritmus podobnosti reťazcov v C#

[Kopírovať odkaz]
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, žepriestoraleboInterpunkciaPoloha 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 pdf
Budúci:"Osem kompetencií dátových analytikov" nešifruje celý kurz
Zverejnené 6. 5. 2019 13:11:34 |
Poznanie prichádza
Zverejnené 7. 9. 2021 15:01:05 |
Je možné vidieť kód po odpovedi?
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com