Recentemente, c'è un problema che deve essere affrontato, cioè confrontare la stringa inserita dall'utente con quella ottenuta dal sistema; se l'errore non è molto grande, il sistema la considererà soddisfatta dei requisiti ed è meglio impostare una soglia. Quando si utilizza il riconoscimento CAPTCHA, è necessario confrontare la somiglianza dei codici caratteri e utilizzare l'"algoritmo della distanza di modifica" per tracciare il principio e l'implementazione di C#.
Secondo l'Enciclopedia Baidu:
La distanza di modifica, nota anche come distanza di Levenshtein (nota anche come distanza di modifica), è il numero minimo di modifiche necessarie per passare da una all'altra tra due stringhe, e maggiore è la distanza, più sono diverse. Le operazioni di modifica autorizzate includono la sostituzione di un carattere con un altro, l'inserimento di un personaggio e la rimozione di un personaggio.
Ad esempio, converti la parola gattino in sedendo:
Sitten (K→s)
Sittin (E→i)
Seduta (→G)
Lo scienziato russo Vladimir Levenshtein propose questo concetto nel 1965. Da qui il nome Distanza di Levenshtein.
Per esempio
Se str1="ivan", str2="ivan", allora si calcola come uguale a 0. Non convertito. somiglianza=1-0/Math.Max(str1.lunghezza,str2.lunghezza)=1 Se str1="ivan1", str2="ivan2", allora si calcola come uguale a 1. Il "1" di str1 si converte in "2", converte un carattere, quindi la distanza è 1, somiglianza = 1-1/Math.Max(str1.lunghezza, str2.lunghezza) = 0,8
Applicazione:
- Analisi del DNA
- Correzione ortografica
- Riconoscimento vocale
- Rilevamento del plagio
L'algoritmo è implementato in C#:
Codice di test:
Dai risultati del test si conclude chespaziooPunteggiatura、Posizione della cordaDiverse cittàRisultati che influenzano la somiglianzaPertanto, quando si confronta il riconoscimento delle stringhe, si raccomanda di rimuovere tutti gli spazi e i simboli speciali nella stringa prima di chiamare l'algoritmo。
Risorse:Il login del link ipertestuale è visibile.
Su GitHub c'è anche una libreria per confronti di somiglianza di stringhe C#
FuzzyString è una libreria sviluppata per il mio lavoro quotidiano al fine di coordinare le convenzioni di denominazione tra diversi modelli di griglia. Ho rimosso il codice specifico del sistema di alimentazione e assemblato ciò che può essere effettivamente usato come estensione di stringhe per determinare l'uguaglianza approssimativa tra le due stringhe. Tutti gli algoritmi utilizzati qui sono stati estratti da fonti online, convertiti in C# e compilati in questa libreria. Ho trovato diverse altre implementazioni open source simili che non sono disponibili per . NET / C#。 Aggiungere *.dll al tuo progetto ti darà accesso a questa estensione e alle singole estensioni sotto l'estensione ApproximatelyEquals().
Indirizzo:Il login del link ipertestuale è visibile.
Installazione Nuget:
Algoritmi inclusi in questo progetto:
- Distanza di Hamming
- Distanza di Jaccard
- Distanza di Jaro
- Distanza Jaro-Winkler
- Distanza di Levenshtein
- Il pubblico più longevo
- La sottostringa comune più lunga della sottosequenza
- Coefficiente di sovrapposizione
- Somiglianza tra Ratcliff e Obershelp
- Distanza di Sorensen-Dice
- Coefficiente di Tanimoto
Utilizzo:
Risultato:
(Fine)
|