Lab 2 de procesamiento de lenguaje natural: búsqueda semántica con embeddings locales comparada contra una búsqueda simple por palabras clave.
python3 laboratorio_2_puente_joaquin_garcia_nelson.pyNo requiere librerías externas: todo corre con la librería estándar de Python.
La salida de la última corrida está en evidencia_ejecucion.txt.
- Corpus de 24 oraciones en español, agrupadas en 6 temas (IA, mascotas, cocina, clima, deportes, transporte).
- 6 consultas de prueba redactadas con intención de Star Wars, pero
apoyadas en palabras ambiguas (
entrenamiento,torneo,jardin,tormenta,mascota) que también pertenecen al vocabulario cotidiano del corpus. Ninguna de las dos búsquedas entiende la intención: las dos devuelven la lectura mundana de la palabra, y ninguna puede responder "no tengo nada sobre este tema". Incluye un caso de control totalmente fuera de vocabulario. - Embeddings locales generados desde cero: co-ocurrencia con ventana deslizante → pesos PPMI → proyección aleatoria a 256 dimensiones. El embedding de una oración es el promedio de sus vectores de palabra ponderado por IDF.
- Ranking top-k por similitud coseno, con umbral mínimo para filtrar el ruido de la proyección.
- Búsqueda simple por palabras clave: traslape exacto de términos, normalizado por el largo de la consulta.
- Comparación cualitativa entre ambos métodos: traslape de Jaccard por consulta y análisis de dónde gana cada uno.
Están al inicio del archivo: DIMENSIONES, VENTANA, TOP_K,
UMBRAL_MINIMO, PESO_IDENTIDAD y SEMILLA. La semilla es fija, así que la
corrida es reproducible.