|
|
Zveřejněno 23.04.2019 12:59:18
|
|
|
|

V poslední době je třeba řešit problém, a to porovnávat řetězec zadaný uživatelem a řetězec získaný systémem; pokud chyba není velká, systém ji považuje za splňující požadavky a je nejlepší nastavit prahovou hodnotu. Při rozpoznávání CAPTCHA je potřeba porovnat podobnost znakových kódů a použít "algoritmus pro vzdálenost úprav" k zaznamenání principu a implementace v C#.
Podle Baidu encyklopedie:
Edit distance, známá také jako Levenshteinova vzdálenost (také známá jako edit distance), je minimální počet úprav potřebných k přechodu mezi dvěma stringy, a čím větší vzdálenost, tím více se liší. Povolené editační operace zahrnují nahrazení jednoho znaku druhým, vložení znaku a odstranění znaku.
Například převeďte slovo kotě na sedící:
Sitten (K→s)
Sittin (E→I)
Sedí (→g)
Ruský vědec Vladimir Levenshtein navrhl tento koncept v roce 1965. Odtud název Levenshteinova vzdálenost.
Například
Pokud str1="ivan", str2="ivan", pak se vypočítá jako 0. Nepřevedl. similarity=1-0/Math.Max(str1.length,str2.length)=1 Pokud str1="ivan1", str2="ivan2", pak se vypočítá jako 1. "1" ze str1 se převede na "2", převede znak, takže vzdálenost je 1, podobnost = 1-1/Math.Max(str1.délka, str2.délka) = 0,8
Aplikace:
- Analýza DNA
- Kontrola pravopisu
- Rozpoznávání řeči
- Detekce plagiátorství
Algoritmus je implementován v C#:
Testovací kód:
Z výsledků testů vyplývá, žeprostorneboInterpunkce、Pozice strunRůzná městaVýsledky ovlivňující podobnostProto se při porovnávání rozpoznávání řetězců doporučuje před vyvolání algoritmu odstranit všechny mezery a speciální symboly v řetězci。
Prostředky:Přihlášení k hypertextovému odkazu je viditelné.
Na GitHubu je také knihovna pro porovnání podobnosti strunových řetězců v C#
FuzzyString je knihovna vyvinutá pro mou každodenní práci pro koordinaci pojmenovávacích konvencí mezi různými modely mřížky. Zbavil jsem se kódu specifického pro energetický systém a sestavil to, co lze efektivně použít jako rozšíření řetězce k určení přibližné rovnosti mezi těmito dvěma řetězci. Všechny zde použité algoritmy byly extrahovány z online zdrojů, převedeny do C# a zkompilovány do této knihovny. Našel jsem několik dalších podobných open source implementací, které nejsou dostupné pro . NET / C#。 Přidání *.dll do vašeho projektu vám umožní přístup k tomuto rozšíření a jednotlivým rozšířením pod rozšířením ApproximatelyEquals().
Adresa:Přihlášení k hypertextovému odkazu je viditelné.
Instalace Nugetu:
Algoritmy zahrnuté v tomto projektu:
- Hammingova vzdálenost
- Jaccardova vzdálenost
- Jaro vzdálenost
- Jaro-Winklerova vzdálenost
- Levenshteinova vzdálenost
- Nejdelší publikum
- Nejdelší společný podřetězec podposloupnosti
- Koeficient překryvu
- Podobnost Ratcliff-Obershelp
- Sorensen-Diceho vzdálenost
- Tanimotův koeficient
Použití:
Výsledek:
(Konec)
|
Předchozí:Umění testování softwaru, 3. edice pdfDalší:"Osm kompetencí datových analytiků" nešifruje celý kurz
|