Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 56998|Vastaus: 2

[Lähde] Toteuta merkkijonojen samankaltaisuusalgoritmi C#:lla

[Kopioi linkki]
Julkaistu 23.4.2019 12.59.18 | | | |
Viime aikoina on ollut ongelma, joka täytyy ratkaista: käyttäjän syöttämää merkkijonoa ja järjestelmän saamaa merkkijonoa vertaillaan, jos virhe ei ole kovin suuri, järjestelmä katsoo sen täyttävän vaatimukset, ja on parasta asettaa kynnysarvo.
CAPTCHA-tunnistuksessa sinun täytyy verrata merkkikoodien samankaltaisuutta ja käyttää "edit distance algorithmia" periaatteen ja C#-toteutuksen tallentamiseen.

Baidu-tietosanakirjan mukaan:

Muokkausetäisyys, joka tunnetaan myös nimellä Levenshteinin etäisyys (tunnetaan myös nimellä muokkausetäisyys), on vähimmäismäärä muokkauksia, joita tarvitaan kahden merkkijonon vaihtamiseen, ja mitä suurempi etäisyys, sitä erilaisempia ne ovat. Sallittuihin muokkausoperaatioihin kuuluu merkin korvaaminen toisella, merkin lisääminen ja merkin poistaminen.

Esimerkiksi käännetään sana kissanpentu muotoon istuminen:

sitten (k→s)

Sittin (e→i)

istuminen (→g)

Venäläinen tiedemies Vladimir Levenshtein esitti tämän käsitteen vuonna 1965. Tästä juontuu nimi Levenshtein Distance.

Esimerkiksi

Jos str1="ivan", str2="ivan", lasketaan olevan yhtä suuri kuin 0. Ei muunnettu. samankaltaisuus=1-0/Math.Max(str1.length,str2.length)=1
Jos str1="ivan1", str2="ivan2", lasketaan olevan yhtä suuri kuin 1. Str1:n "1" muunnetaan muotoon "2", muuntaa merkin, joten etäisyys on 1, samankaltaisuus = 1-1/Math.Max(str1.length, str2.length) = 0.8

Käyttötarkoitus:

  • DNA-analyysi
  • Oikoluku
  • Puheentunnistus
  • Plagioinnin tunnistus



Algoritmi toteutetaan C#:lla:

Testikoodi:






Testitulosten perusteella pääteltiin, ettäavaruustaiVälimerkitKielen sijaintiEri kaupungitTulokset, jotka vaikuttavat samankaltaisuuteenSiksi merkkijonojen tunnistusta verrattaessa suositellaan poistamaan kaikki välilyönnit ja erityissymbolit merkkijonosta ennen algoritmin kutsumista

Varat:Hyperlinkin kirjautuminen on näkyvissä.

GitHubissa on myös kirjasto C#-merkkijonojen samankaltaisuuden vertailuun

FuzzyString on kirjasto, joka on kehitetty päivittäistä työtäni varten koordinoimaan nimeämiskäytäntöjä eri ruudukkomallien välillä. Olen poistanut sähköjärjestelmäkohtaisen koodin ja koonnut sen, mitä voidaan tehokkaasti käyttää merkkijonojen laajennuksena määrittääkseni kahden merkkijonon likimääräisen yhtäläisyyden. Kaikki tässä käytetyt algoritmit on poimittu verkkolähteistä, muunnettu C#:ksi ja käännetty tähän kirjastoon. Löysin useita muita vastaavia avoimen lähdekoodin toteutuksia, joita ei ole saatavilla . NET / C#。 Lisäämällä *.dll projektiisi saat pääsyn tähän laajennukseen ja yksittäisiin laajennuksiin ApproximatelyEquals()-laajennuksen alla.



Osoite:Hyperlinkin kirjautuminen on näkyvissä.

Nuget-asennus:

Tähän projektiin sisältyvät algoritmit:

  • Hamming-etäisyys
  • Jaccardin etäisyys
  • Jaro-etäisyys
  • Jaro-Winkler -etäisyys
  • Levenshteinin etäisyys
  • Pisimmän yleisön
  • Alajonon pisin yhteinen alijono
  • Päällekkäisyyskerroin
  • Ratcliff-Obershelpin samankaltaisuus
  • Sorensen-Dice -etäisyys
  • Tanimoto-kerroin



Käyttö:


Tulos:



(Loppu)




Edellinen:Ohjelmistotestauksen taito 3. painos pdf
Seuraava:"Kahdeksan data-analyytikon osaamista" ei salaa koko kurssia
Julkaistu 6.5.2019 13.11.34 |
Tieto on tulossa
Julkaistu 7.9.2021 15.01.05 |
Onko mahdollista nähdä koodin vastauksen jälkeen?
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com