2011-11-21 22 views
12

Estoy escribiendo una interfaz de usuario de escritorio (.Net WinForms) para ayudar a un fotógrafo a limpiar sus metadatos de imagen. Hay una lista de 66k + frases. ¿Alguien puede sugerir un buen componente open source/free .NET que pueda usar y que emplee algún tipo de algoritmo para identificar posibles candidatos para la consolidación? Por ejemplo, puede haber dos o más entradas que en realidad son la misma palabra o frase que solo difieren por el espacio en blanco o la puntuación, o incluso por un ligero error ortográfico. En última instancia, la aplicación dependerá del usuario para actuar en la consolidación de frases, pero contar con una forma efectiva de encontrar automáticamente candidatos potenciales será invaluable.Coincidencia de texto difuso C#

+0

Consulte aquí para obtener más información sobre la coincidencia de texto difuso: http://stackoverflow.com/questions/5859561/getting-the-closest-string-match – jordanhill123

Respuesta

16

Déjame presentarte la fórmula de distancia de Levenshtein. Es increíble:

http://en.wikipedia.org/wiki/Levenshtein_distance

En teoría de la información y la informática, la distancia Levenshtein es una cadena métrica para medir la cantidad de diferencia entre dos secuencias. El término distancia de edición a menudo se usa para referirse específicamente a la distancia de Levenshtein.

Personalmente utilicé esto en un entorno de atención médica, donde los nombres de los proveedores se comprobaron en busca de duplicados. Usando el proceso de Levenshtein, les dimos una calificación de confianza y les permitimos determinar si era un verdadero duplicado o algo único.

+1

Aquí hay una implementación en C#: http://blogs.msdn.com /b/toub/archive/2006/05/05/590814.aspx –

+0

Iba a sugerir el uso de soundex ([http://www.techrepublic.com/blog/programming-and-development/how-do-i- implement-the-soundex-function-in-c/656] (http://www.techrepublic.com/blog/programming-and-development/how-do-i-implement-the-soundex-function-in-c/656)). Después de aplicar soundex, puede ordenar las cadenas por los códigos soundex que producen y marcar códigos equivalentes para que el usuario los revise. Creo que el resultado final puede ser similar al uso de distancia levenshtein? – hmqcnoesy

+0

Una cosa con soundex es que es inútil cuando se buscan cadenas que contienen solo dígitos. – jamiebarrow

Cuestiones relacionadas