Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 56998|Odpověď: 2

[Zdroj] Implementujte algoritmus podobnosti řetězců v C#

[Kopírovat odkaz]
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á, žeprostorneboInterpunkcePozice 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 pdf
Další:"Osm kompetencí datových analytiků" nešifruje celý kurz
Zveřejněno 06.05.2019 13:11:34 |
Poznání přichází
Zveřejněno 07.09.2021 15:01:05 |
Je možné vidět kód po odpovědi?
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com