Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 56998|Válasz: 2

[Forrás] A string-hasonlóság algoritmusának megvalósítása C#-ban

[Linket másol]
Közzétéve 2019. 04. 23. 12:59:18 | | | |
Mostanában felmerült egy probléma, amit kezelni kell, vagyis a felhasználó által beírt string és a rendszer által kapott string összehasonlítása esetén ha a hiba nem túl nagy, a rendszer úgy tekinti, hogy megfelel a követelményeknek, és a legjobb egy küszöbértéket beállítani.
CAPTCHA felismerés során össze kell hasonlítanod a karakterkódok hasonlóságát, és a "szerkesztési távolság algoritmusát" kell használnod, hogy rögzítsd az elvet és a C# implementációt.

A Baidu enciklopédia szerint:

A szerkesztési távolság, más néven Levenshtein távolság (más néven szerkesztési távolság), a minimális szerkesztések száma, amely két húr között az egyik közötti váltáshoz szükséges, és minél nagyobb a távolság, annál eltérőbbek egymástól. Az engedélyezett szerkesztési műveletek közé tartozik egy karakter helyettesítése egy másikkal, egy karakter behelyezése és egy karakter eltávolítása.

Például a kiscica szót ültető szóra alakítsuk:

sitten (K→s)

Sittin (e→i)

Ülve (→g)

Az orosz tudós, Vladimir Levenshtein 1965-ben javasolta ezt a koncepciót. Innen ered a Levenshtein Távolság név.

Például

Ha str1="ivan", str2="ivan", akkor úgy számoljuk, hogy 0-val egyenlő. Nem átalakították. hasonlóság=1-0/Math.Max(str1.length,str2.length)=1
Ha str1="ivan1", str2="ivan2", akkor az 1-nek felel meg. Az str1 "1"-e "2"-re alakul át, egy karaktert alakít át, így a távolság 1, hasonlóság = 1-1/Math.Max(str1.length, str2.length) = 0,8

Alkalmazás:

  • DNS-elemzés
  • Helyesírás-ellenőrzés
  • Beszédfelismerés
  • Plágium felderítése



Az algoritmus C#-ban van megvalósítva:

Tesztkód:






A teszteredményekből következik ki, hogytérvagyÍrásjelekHúr pozíciójaKülönböző városokEredmények, amelyek befolyásolják a hasonlóságotEzért a stringfelismerés összehasonlításakor ajánlott eltávolítani az algoritmus meghívása előtt az összes teret és speciális szimbólumot a húrból

Erőforrások:A hiperlink bejelentkezés látható.

A GitHubon van egy könyvtár C# string hasonlóság-összehasonlításokra is

A FuzzyString egy könyvtár, amelyet a napi munkámhoz fejlesztettem, hogy koordináljam a különböző rácsmodellek közötti elnevezési konvenciókat. Eltávolítottam az energiarendszer-specifikus kódot, és összeállítottam, amit hatékonyan lehet stringkiterjesztésként használni, hogy meghatározzam a két húr közelítő egyenlőségét. Az itt használt összes algoritmust online forrásokból nyerték ki, átalakították C#-ra, és ebből a könyvtárból kompolálták. Találtam több hasonló nyílt forráskódú implementációt, amelyek nem elérhetők . NET / C#。 Ha hozzáadod a *.dll a projektedhez, hozzáférést kapsz ehhez a kiterjesztéshez és az ApproximatelyEquals() kiterjesztés alatt szereplő egyes kiterjesztésekhez.



Cím:A hiperlink bejelentkezés látható.

Nuget telepítés:

A projektben szereplő algoritmusok:

  • A hamming távolság
  • Jaccard távolság
  • Jaro távolság
  • Jaro-Winkler távolság
  • Levenshtein távolság
  • A leghosszabb közönség
  • Az al-sorozat leghosszabb közös alhúrja
  • Átfedési együttható
  • Ratcliff-Obershelp hasonlóság
  • Sorensen-Dice távolság
  • Tanimoto együttható



Használat:


Eredmény:



(Vége)




Előző:A szoftvertesztelés művészete 3. kiadás pdf
Következő:Az "Adatelemzők nyolc kompetenciája" nem titkosítja a teljes kurzust
Közzétéve 2019. 05. 06. 13:11:34 |
Jön a tudás
Közzétéve 2021. 09. 07. 15:01:05 |
Lehetséges a kódot a válasz után látni?
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com