Actualmente estoy trabajando en un proyecto que requiere que haga coincidir nuestra base de datos de Bandas y recintos con una serie de servicios externos.¿Cómo puedo determinar si dos nombres de bandas similares representan la misma banda?
Básicamente estoy buscando alguna dirección sobre el mejor método para determinar si dos nombres son iguales. Por ejemplo:
- Nuestro nombre local de base de datos - "The Pig and Whistle"
- servicio 1 - "Pig and Whistle"
- servicio 2 - "El cerdo & silbato"
- , etc, etc
Creo que las principales diferencias van a ser cosas como "falta" o "&" en lugar de "y", pero también podría haber cosas como ortografía y palabras ligeramente diferentes en orde diferente rs.
¿Qué algoritmos/técnicas se usan comúnmente en esta situación? ¿Necesito filtrar palabras irrelevantes o hacer algún tipo de revisión ortográfica?
¿Has visto algún ejemplo de algo similar en C#?
ACTUALIZACIÓN: En caso de que alguien está interesado en AC# ejemplo, hay un montón puede acceder haciendo a El (y probablemente el más fácil) manera google code search for Levenshtein distance
Impresionante, ¿crees que todavía sería efectivo decir si eliminé palabras como "the", "and" y "&"? –
Asignar una distancia de cero es equivalente a eliminarlos de la cadena, sí. También podría quitar el espacio en blanco/puntuación para evitar que los espacios adicionales lo afecten. Pero solo tenga cuidado de que esos no sean significativos para el nombre de la banda. Por ejemplo, "!!!" es el nombre de una banda (http: //en.wikipedia.org/wiki/ !!!). –
Es posible que desee considerar la eliminación de palabras de parada de las cadenas de texto - (como "el" "un" "y" etc.) las bases de datos de palabras en inglés son bastante fáciles de encontrar. –