Sesión 3 ‐ Emparejamiento semántico con RapidFuzz - AnthonyJ7/Documentaci-n-Reto-1---Practicum GitHub Wiki
Fecha: 03 de junio del 2025
Duración: 5 horas
Reto: Homologación de Carreras (UTPL)
Herramientas utilizadas:
- Google Colab Notebook de trabajo
- Python (Lenguaje de Programación)
Documentos informativos:
- Python RapidFuzzy (Github): https://github-com.translate.goog/rapidfuzz/RapidFuzz?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=tc
- Python RapidFuzzy (Linkedin): https://es.linkedin.com/pulse/rapidfuzz-potencia-tu-análisis-de-datos-con-texto-y-magaña-fuentes-0j1xc
Videos informativos:
- Python RapidFuzzy: https://www.youtube.com/watch?v=k4fEvUlqU3U
🎯 Objetivo general de la sesión
Aplicar emparejamiento semántico (fuzzy matching) entre las carreras ofertadas por la Universidad Técnica Particular de Loja (UTPL) y el resto de universidades ecuatorianas. Utilizar la librería RapidFuzz
para obtener las coincidencias más similares, con su respectivo porcentaje de similitud textual, y generar una tabla enriquecida lista para análisis en Power BI.
📂 Dataset base
df_utpl_limpio
: carreras ofertadas por la UTPL, con limpieza previa (6 columnas clave).df_otros_limpio
: carreras de otras universidades, también limpias.- Ambos generados y verificados en la Sesión 2.
🔄 Flujo de trabajo
Paso | Acción | Detalles |
---|---|---|
1 | Importación de librerías | Se utilizó rapidfuzz.process y fuzz.token_sort_ratio para medir similitud. |
2 | Conversión a Series indexada | La lista de carreras (NOMBRE_CARRERA ) del resto de universidades se convirtió en un pandas.Series indexado para poder recuperar el índice real del DataFrame durante el matching. |
3 | Iteración por cada carrera UTPL | Para cada carrera de la UTPL se aplicó process.extract() con limit=3 para obtener las 3 coincidencias más similares. |
4 | Obtención de datos del match | Se extrajeron los valores del DataFrame original df_otros_limpio usando loc[index_match] , lo cual permite acceder a todos los campos adicionales de la carrera emparejada. |
5 | Generación del resultado | Por cada combinación (UTPL - Match), se generó un diccionario con los campos relevantes, que luego se convirtió en un DataFrame llamado df_matches . |
6 | Columnas adicionales agregadas | Se incluyeron: CAMPO_ORIGEN , NIVEL_ORIGEN , MODALIDAD_ORIGEN , PROVINCIA_ORIGEN , y los equivalentes de UTPL (CAMPO_UTPL , etc.) para enriquecer el análisis posterior en Power BI. |
7 | Exportación a Excel | Se exportó el DataFrame a emparejamientos_utpl.xlsx y se descargó desde el entorno Colab. |
📦 Columnas finales del archivo exportado
ID_CARRERA_ORIGEN
UNIVERSIDAD_ORIGEN
CARRERA_ORIGEN
CAMPO_ORIGEN
NIVEL_ORIGEN
MODALIDAD_ORIGEN
PROVINCIA_ORIGEN
ID_CARRERA_UTPL
CARRERA_SIMILAR_UTPL
CAMPO_UTPL
NIVEL_UTPL
MODALIDAD_UTPL
PROVINCIA_UTPL
SCORE_DE_SIMILITUD
🧠 Observaciones
- El argumento
return_index=True
no fue necesario, ya queRapidFuzz
devuelve automáticamente el índice real cuando se usa unpandas.Series
comochoices
. - Se confirmó que las filas emparejadas se identifican correctamente y se evita la pérdida de información por duplicados.
- Se omitieron temporalmente las columnas lógicas (
DIFERENTE_CAMPO
,DIFERENTE_NIVEL
) para enfocarse en una versión estable del archivo para Power BI. - Se recomienda conservar el
ID_CARRERA_*
como claves para uso en visualizaciones relacionales en Power BI.
📌 Próximos pasos (Sesión 4)
- Cargar
emparejamientos_utpl.xlsx
en Power BI. - Diseñar visualizaciones clave:
- Mapa de calor por similitud.
- Tabla jerárquica por nivel, campo, provincia.
- Indicadores de empates totales y promedio de similitud.
- Explorar filtros interactivos por modalidad, provincia, nivel de formación.