![]() |
Comparar cadenas y sacar su semejanza en %
Buenas.
Estoy haciendo una migración, resulta que tengo la mala suerte de que varias tablas tienen el mismo campo pero resulta que están algo alterados. Osea que dos campos aparentemente iguales, que tendrian que tener el mismo contenido lo tienen algo diferente, tienen acento o alguna barra etc... ¿Como podria hacer para comparar esos dos campos, y mediante una funcion me devuelva el % de similitud. Ejm: texto1= Garcia Leonidas Solomillero texto2= Garci a Leonidas-Solomilléro Pues que la funcion de marcase que hay un 85% de que ambos textos son coincidentes... Estoy probando con separar las palabras guardar su longitud y posicion y despues ir comparando una a una... pero vamos que por salir no me sale. Un empujoncin please?? |
Se me ocurre que puedes eliminar los símbolos "inutiles" ['\','-','.',' '] (incluyendo espacios), convertir la cadena en minúsculas y convertir todas las letras acentuadas a normales (á->a; é->e; ñ->n).
Con esto la verificacion será posible texto1='Garcia Leonidas Solomillero' -> garcialeonidassolomillero texto2='Garci a Leonidas-Solomilléro' -> garcialeonidassolomillero Nota; es necesario que decidas bien en qué momento eliminar el espacio para casos especiales. Saludos |
Yo hice algo así hace un tiempo... si lo encuentro te lo envío.
- Pasa todo a mayúsculas (o minúsculas si lo prefieres) - Convierte algunas cosas: Ñ->N, vocales acentuadas a vocales, - Elimina todo lo que no sea una letra o un número o un espacio. - Elimina espacios dobles. (Gacia__jose = Garcia_Jose) En mi procedimiento : - comparaba primero si eran iguales. --> 100% - Luego comparaba cadenas de 5 caracteres - Luego de 4 - Luego de 3 Si había coincidencias daba más puntos Con esto JOSE GARCIA es muy parecido a GARCIA JOSE. |
He estado planteando precisamente lo que me habeis expuesto,
limpiar ambos textos y despues compararlos insitu. Muchas gracias por la ayuda y por el empujón. Saludos |
Estaba aburrido e hice esta funcion:
Las primeras comprobaciones devuelven de 100% a 94% y son simples. La segunda comprobación evalúa palabras y devuelva valores entre 0% 93% Duilio Juan, ISOLA HOMOLA - Original Duilio Juan, ISOLA HOMOLA - 100% ISOLA HOMOLA, Duilio Juan - 93% ISOLA HOMOLA, Duilio - 80% Isola, Duilio - 56% Isola, DuilioJuan - 10%
|
He de expresar mi agradecimiento, pues la función es una obra de arte.
Ya tenía avanzada la idea original, pero no me queda mas remedio que quitarme el sombrero. Chapo!!! Gracias por tu tarde aburrida. Espero poder devolver algún dia tan magna función. Saludos PD: Yalastoy probando |
| La franja horaria es GMT +2. Ahora son las 09:52:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi