Recientemente, hay un problema que debe abordarse, es decir, comparar la cadena introducida por el usuario con la cadena obtenida por el sistema; si el error no es muy grande, el sistema considerará que cumple con los requisitos y es mejor establecer un umbral. Al realizar el reconocimiento CAPTCHA, necesitas comparar la similitud de los códigos de caracteres y usar el "algoritmo de distancia de edición" para hacer un registro del principio y la implementación en C#.
Según la Enciclopedia Baidu:
La distancia de edición, también conocida como distancia de Levenshtein (también conocida como distancia de edición), es el número mínimo de ediciones necesarias para cambiar de una a otra entre dos cadenas, y cuanto mayor es la distancia, más diferentes son. Las operaciones de edición con permisos incluyen reemplazar un carácter por otro, insertar un carácter y eliminar un personaje.
Por ejemplo, convierte la palabra gatita en sentado:
Sentado (K→s)
Sittin (E→I)
sentado (→G)
El científico ruso Vladimir Levenshtein propuso este concepto en 1965. De ahí el nombre de Distancia Levenshtein.
Por ejemplo
Si str1="iván", str2="iván", entonces se calcula que es igual a 0. No convertido. similitud=1-0/Math.Max(str1.longitud,str2.longitud)=1 Si str1="ivan1", str2="ivan2", entonces se calcula que es igual a 1. El "1" de str1 se convierte en "2", convierte un carácter, así que la distancia es 1, similitud = 1-1/Math.Max(str1.longitud, str2.longitud) = 0,8
Aplicación:
- Análisis de ADN
- Corrector ortográfico
- Reconocimiento de voz
- Detección de plagio
El algoritmo está implementado en C#:
Código de prueba:
A partir de los resultados de las pruebas, se concluye queespaciooPuntuación、Posición de las cuerdasDiferentes ciudadesResultados que afectan la similitudPor lo tanto, al comparar el reconocimiento de cadenas, se recomienda eliminar todos los espacios y símbolos especiales de la cadena antes de llamar al algoritmo。
Recursos:El inicio de sesión del hipervínculo es visible.
En GitHub también hay una biblioteca para comparaciones de similitudes de cadenas en C#
FuzzyString es una biblioteca desarrollada para mi trabajo diario que coordina convenciones de nombres entre diferentes modelos de cuadrícula. He eliminado el código específico del sistema eléctrico y he montado lo que puede usarse eficazmente como una extensión de cadena para determinar la igualdad aproximada entre las dos cadenas. Todos los algoritmos usados aquí han sido extraídos de fuentes en línea, convertidos a C# y compilados en esta biblioteca. He encontrado varias otras implementaciones de código abierto similares que no están disponibles para . NET / C#。 Añadir *.dll a tu proyecto te dará acceso a esta extensión y a las extensiones individuales bajo la extensión ApproximatelyEquals().
Dirección:El inicio de sesión del hipervínculo es visible.
Instalación de Nuget:
Algoritmos incluidos en este proyecto:
- Distancia de Hamming
- Distancia de Jaccard
- Distancia de Jaro
- Distancia Jaro-Winkler
- Distancia de Levenshtein
- El público más largo
- La subcadena común más larga de la subsecuencia
- Coeficiente de solapamiento
- Similitud entre Ratcliff y Obershelp
- Distancia de Sorensen-Dice
- Coeficiente de Tanimoto
Uso:
Resultado:
(Fin)
|