Búsqueda difusa:
una técnica para encontrar las strings que coinciden con un patrón aproximadamente (en lugar de exactamente). Los usuarios/revisores a menudo capturan los nombres de forma imprecisa. El error de escritura es un error muy común que comete el revisor al capturar los nombres, lo que genera inconsistencias en los datos. Pero a veces, necesitamos buscar o hacer coincidir estos datos inexactos de todos modos. Por ejemplo, los usuarios deben hacer coincidir los registros de clientes existentes en lugar de crear duplicados no deseados.
Declaración del problema:
encontrar todo tipo de errores que se describen en la siguiente tabla, por ejemplo, error de ortografía, nombre incompleto, problema de formato, falta de sufijo.
Primer nombre | Apellido | Primer nombre | Apellido | Tipo de error |
---|---|---|---|---|
Benjamín | Alguacil | Benjamín | alguacil | Error de ortografía |
Cacao | Fairchil | Cacao | justo | Error de ortografía |
danuzio | Pinheiro | danuzio | pinherio | Error de ortografía |
jeff | voz | jeff | Voigt | Error de ortografía |
María | prendergast | María | Prendergrast | Error de ortografía |
Miguel | Heinrich | Miguel | enriquecimiento | Error de ortografía |
nghia | Le | nghia | Sotavento | Error de ortografía |
leonardo | Madrigal | leonardo | madrigal del valle | Nombre incompleto |
Yolanda | Balcázar | Yolanda | Balcazar-Rodríguez | Nombre incompleto |
j | García Martínez | j | García-Martínez | Problema de formato |
lauren | Señor – Tuley | lauren | Lord-Tuley | Problema de formato |
Virginia | polea alberts | Virginia | Polea-Alberts | Problema de formato |
Connie | Marcas | Connie | Marcas IV | Falta el sufijo |
Daniel | Ladd | Daniel | ladd jr | Falta el sufijo |
Rodrigo | Delgado | Rodrigo | Delgado Jr. | Falta el sufijo |
Tomás | Grifo | Tomás | grifo iii | Falta el sufijo |
Wayne | Maricón | Wayne | nance | Falta el sufijo |
Enfoque para resolver:
la función SOUNDEX() puede encontrar la inconsistencia en los nombres. SOUNDEX() puede evaluar la similitud de dos nombres. SOUNDEX() solo funciona bien cuando tenemos 1 o 2 tokens. Los nombres generalmente contienen 1 o 2 tokens, por lo que funciona bien con Name. Pero si queremos encontrar nombres similares para la empresa, no es tan útil ya que contiene varios tokens.
Datos:
Benjamin Sheriff y Benjamin Sherrif donde FirstName es el mismo pero cualquiera de los LastName tiene un error ortográfico. Asimismo, hay muchos errores en estos datos, como problemas de formato, nombres incompletos.
Primer nombre | Apellido |
---|---|
Benjamín | Alguacil |
Benjamín | alguacil |
Virginia | polea alberts |
Virginia | Polea-Alberts |
Geoffery | Bown |
Geoffrey | Bown |
Antonio | Castoldí |
Antonio | Castoldí |
Rodrigo | Delgado |
Rodrigo | Delgado Jr. |
leonardo | Madrigal |
leonardo | madrigal del valle |
michelle | Myers |
Mitchell | Myers |
Código:
Caso-1: FirstName es exactamente igual pero LastName es de un tipo similar.
Caso-2: LastName es exactamente igual pero FirstName es de un tipo similar.
Analicémoslo uno por uno de la siguiente manera.
Caso-1:
FirstName es exactamente igual pero LastName es de tipo similar:
select distinct ss.firstname,ss.lastname,sd.firstname,sd.lastname from load as ss, load as sd where ss.firstName=sd.firstName and SOUNDEX(ss.lastName)=SOUNDEX(sd.lastname) and left(ss.lastname,2)=left(sd.lastname,2) and ss.lastName<>sd.lastName
Producción :
Primer nombre | Apellido | Primer nombre | Apellido |
---|---|---|---|
Benjamín | Alguacil | Benjamín | alguacil |
Benjamín | alguacil | Benjamín | Alguacil |
leonardo | Madrigal | leonardo | madrigal del valle |
leonardo | madrigal del valle | leonardo | Madrigal |
Rodrigo | Delgado | Rodrigo | Delgado Jr. |
Rodrigo | Delgado Jr. | Rodrigo | Delgado |
Virginia | polea alberts | Virginia | Polea-Alberts |
Virginia | Polea-Alberts | Virginia | polea alberts |
Caso-2:
LastName es exactamente igual pero FirstName es de tipo similar:
select distinct ss.lastname,ss.firstname,sd.lastname,sd.firstname from load as ss, load as sd where ss.lastname=sd.lastname and SOUNDEX(ss.firstname)=SOUNDEX(sd.firstname) and left(ss.firstname,2)=left(sd.firstname,2) and ss.firstname<>sd.firstname
Producción :
S. No. | Primer nombre | Apellido | Primer nombre | Apellido |
---|---|---|---|---|
1. | Antonio | Castoldí | Antonio | Castoldí |
2. | Antonio | Castoldí | Antonio | Castoldí |
3. | Geoffery | Bown | Geoffrey | Bown |
4. | Geoffrey | Bown | Geoffery | Bown |
5. | michelle | Myers | Mitchell | Myers |
6. | Mitchell | Myers | michelle | Myers |
Referencia:
Enlace Github – https://github.com/SuryaSD/Finding-Similar-Types-of-Names-Fuzzy-Search
Publicación traducida automáticamente
Artículo escrito por suryadas218 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA