Mapeos de Frase a Filtro: Búsqueda Semántica para Filtros de Producto

Este artículo explica cómo generamos y expandimos los mapeos de frase a filtro que impulsan nuestro sistema de extracción de filtros. Estos mapeos conectan frases en lenguaje natural provenientes de consultas de búsqueda con filtros de producto estructurados.

El Problema: Extraer Filtros del Lenguaje Natural

Cuando los usuarios buscan "mini pc with 16gb ram", necesitamos extraer:

  • Factor de Forma: Mini PC

  • Memoria Principal: 16

Pero los usuarios expresan la misma intención de muchas maneras:

  • "16gb ram mini pc"

  • "mini computer 16 gb memory"

  • "small pc 16gb"

  • "compact desktop with 16 gigs"

Necesitamos un sistema que mapee todas estas variaciones de frases a los valores de filtro correctos.

Proceso de Dos Pasos

Generamos los mapeos de frases en dos pasos:

  1. Paso 3a: Generar frases base a partir de las características del producto usando permutaciones y reglas específicas de cada característica
  2. Paso 4: Expandir con similitud semántica usando embeddings

Este enfoque híbrido combina la precisión basada en reglas con la flexibilidad semántica.

Paso 3a: Generación de Frases Base

Metadatos de Características

Cada característica del producto tiene metadatos en la secuencia de características:

  • Encabezado: Nombre de la categoría (ej., "Processing" para características de procesador)

  • Unidad: Unidad de medida (ej., "GB" para memoria, "GHz" para frecuencia)

Estos metadatos guían la generación de frases.

Generación Basada en Permutaciones

Para cada valor de característica, generamos todas las permutaciones de:

  • Encabezado: "processor"

  • Clave de característica: "series"

  • Valor: "i5"

  • Unidad: (ninguna para series)

Esto produce:

  • "processor series i5"

  • "series processor i5"

  • "i5 processor series"

  • "i5 series processor"

  • "processor i5"

  • "series i5"

  • "i5"

Todas las permutaciones aseguran que coincidamos con las consultas independientemente del orden de las palabras.

Combinaciones de Valor + Unidad

Para características con unidades (memoria, almacenamiento, frecuencia), generamos variantes con y sin espacio:

  • "16 gb" (con espacio)

  • "16gb" (sin espacio)

Estas se combinan con otros componentes:

  • "16gb ram"

  • "ram 16gb"

  • "processor 16gb"

Reglas de Sufijos para Puertos

Para características de conectividad (USB, HDMI, DisplayPort), añadimos sufijos de puerto:

  • "usb port"

  • "usb ports"

  • "2 usb ports"

  • "hdmi port"

Esto coincide con consultas como "mini pc with 2 hdmi ports".

Reglas Específicas por Característica

Cada tipo de característica tiene generación de frases personalizada:

Serie de Procesador (i3, i5, N-series):

  • Las designaciones de procesadores Core generan variantes: nombre del fabricante, marca del núcleo, formas combinadas

  • Los procesadores de la serie N (N100, etc.) crean patrones de combinación similares

  • Cada uno genera múltiples permutaciones con "processor"

Memoria Principal:

  • Los valores numéricos generan variantes de GB con y sin espacio ("16gb", "16 gb")

  • Se añaden automáticamente los calificadores "ram" y "memory" ("16gb memory", "16 gb ram")

Almacenamiento SSD:

  • Los valores numéricos generan variantes de GB ("512gb", "512 gb")

  • Genera variantes de TB automáticamente para valores ≥ 1024 (ej., 1024GB → 1TB)

  • Se añaden automáticamente los calificadores "ssd" y "storage" ("512gb ssd", "512 gb storage")

Factor de Forma:

  • Mini PC → múltiples variantes incluyendo la forma sin espacio

  • All-in-One → "all in one", "aio", formas abreviadas

  • Thin Client → variantes con/sin espacio

  • Industrial PC → formas abreviadas y completas

Generación:

  • Los valores numéricos de generación se convierten en: "12th gen", "12th generation", "gen 12"

Núcleos:

  • 2 → "dual core"

  • 4 → "quad core"

  • 6 → "hexa core"

  • 8 → "octa core"

  • Todos generan variantes "[n] core processor"

Ethernet:

  • "1000" → ["gigabit ethernet", "gbe", "1gbps"]

  • "2500" → ["2.5gbe", "2.5 gigabit", "2.5gbps"]

Sistema Operativo:

  • "Windows 11" → ["windows", "windows 11", "win 11"]

  • "Ubuntu" → ["linux", "ubuntu"]

  • "FreeDOS" → ["freedos", "no os", "without os"]

Lista Blanca para Valores Independientes

Solo características específicas permiten la coincidencia de valores independientes para evitar falsas coincidencias:

  • Serie: "i3", "i5", "N100" (pero no letras individuales)

  • Modelo de Procesador: "N100", "1335U"

  • Sistema Operativo: "Windows", "Linux", "Ubuntu"

  • Generación: "12th", "13th", "14th"

  • Marca de Procesador: "Intel", "ARM"

Por ejemplo, "2" no debería coincidir con "2 cores" cuando la consulta es "2 hdmi ports". La verificación de longitud evita que letras individuales o valores muy cortos y ambiguos coincidan de forma independiente. Las características con componentes de unidad explícitos, como Ethernet o puertos, solo generan combinaciones independientes cuando se califican con su unidad.

Prevención de Colisiones

Los valores de memoria y almacenamiento se superponen (ambos tienen 64, 128, 256, etc.). El Paso 4 aplica reglas de rango de valores para desambiguar:

  • ≤ 64 GB: Memoria Principal (RAM)

  • ≥ 128 GB: Almacenamiento SSD

  • Rango 65-127 GB: Se omite (ambiguo)

Las frases con calificadores explícitos ("ram"/"memory" o "ssd"/"storage") anulan esta regla y pueden coincidir con cualquier valor.

Además, los términos generales vagos que coinciden con demasiados filtros no relacionados se excluyen durante la resolución de colisiones mediante posprocesamiento: términos como "connectivity", "audio", "display", "processor" y "physical" crean demasiada ambigüedad entre múltiples facetas.

Paso 4: Expansión Semántica

Extracción de N-gramas

Extraemos frases frecuentes de consultas de búsqueda reales, desde palabras individuales (1-gramas como "mini") hasta secuencias más largas (hasta 6-gramas como "mini pc with 16gb ram ssd"). Solo se conservan las frases que aparecen al menos 3 veces. Este enfoque de filtrado reduce el ruido mientras preserva los patrones genuinos del lenguaje del usuario.

Generación de Textos de Búsqueda de Filtros

Para cada valor de filtro, generamos textos de búsqueda:

Memoria Principal: 16:

  • "16gb ram memory"

  • "16 main memory"

  • "main memory 16"

Almacenamiento SSD: 512:

  • "512gb storage ssd"

  • "512 ssd storage"

  • "ssd storage 512"

Estos textos de búsqueda representan el filtro en el espacio de embeddings.

Embedding y Coincidencia

Convertimos tanto las frases de consulta como los textos de búsqueda de filtros en embeddings, y luego calculamos la similitud coseno entre ellos. Las frases con puntuaciones de similitud por encima de un umbral configurado se añaden al mapeo de ese filtro.

Frases Semilla Manuales

Inyectamos semillas manuales de alta confianza antes de la expansión:

"Series:i5": [
    "i5",
    "core i5",
    "intel i5",
    "intel core i5",
    "i5 processor",
    "cpu i5",
]

Estas semillas representan frases centrales que sabemos que son correctas para cada filtro. Al incluirlas con puntuaciones de similitud máximas, guían al algoritmo de expansión para encontrar frases relacionadas con significados similares. Estas semillas siempre obtienen similitud 1.0 y guían la expansión.

Embedding Incremental

Almacenamos en caché los embeddings tanto de las frases como de los textos de búsqueda de filtros. Cuando llegan nuevas consultas:

  1. Cargar los embeddings existentes
  2. Generar embeddings solo para las frases nuevas
  3. Añadirlos a la caché

Esto evita volver a generar embeddings de datos sin cambios. Consulta Embedding Strategy para más detalles.

Resolución de Colisiones

Después de completar la coincidencia por similitud, resolvemos las colisiones entre los filtros de Memoria y Almacenamiento:

Desambiguación basada en números:

  • Para frases ambiguas que contienen números: si la frase tiene un valor ≤ 64, conservarla solo para Memoria; si es > 64, conservarla solo para Almacenamiento

  • Esto evita que "16gb" coincida con filtros de Almacenamiento SSD y que "512gb" coincida con filtros de Memoria

Los calificadores explícitos anulan las reglas:

  • Frases con palabras clave "ram", "memory", "cpu", "processor" → solo Memoria

  • Frases con palabras clave "ssd", "storage", "disk", "nvme", "drive" → solo Almacenamiento

  • Ejemplo: "processor 8gb" se mapea a Memoria a pesar de ser numérico

Términos vagos:

  • Descartar frases como "connectivity", "audio", "display" que coinciden con múltiples filtros no relacionados

Formato de Salida

Los mapeos finales se ordenan por similitud (primero la más alta) y luego por longitud (primero la más corta):

{
  "Main Memory:16": [
    {"phrase": "16gb ram", "similarity": 1.0},
# ... (detalles de implementación omitidos)

Integración con la Extracción de Filtros

Estos mapeos impulsan el algoritmo de extracción de filtros:

  1. Llega la consulta: "mini pc with 16gb ram"
  2. Extraer frases: ["mini pc", "16gb ram", "mini", "pc", "16gb", "ram"]
  3. Coincidir frases con filtros usando los mapeos
  4. Devolver filtros: {"Form Factor": ["Mini PC"], "Main Memory": ["16"]}

Consulta Filter Extraction Algorithm para más detalles.

Almacenamiento y Distribución

Los mapeos de frases se persisten como archivos JSON y se utilizan en todo el sistema:

  • Archivo de mapeos base: Generado en el Paso 3a, contiene frases basadas en reglas

  • Archivo de mapeos expandidos: Generado en el Paso 4, contiene los resultados de la expansión semántica

Los mapeos expandidos son utilizados por:

  • Generación de páginas de consulta: Extraer filtros del texto de la consulta

  • Servicio de búsqueda: API de extracción de filtros en tiempo real

  • Coincidencia de productos: Filtrar productos por los filtros extraídos

Características de Rendimiento

Generación Base (Paso 3a):

  • El tiempo de procesamiento escala con el número de valores de filtro

  • Genera una gran cantidad de variantes de frases base

  • El uso de memoria se mantiene moderado durante la generación

Expansión Semántica (Paso 4):

  • El tiempo de procesamiento escala con el volumen de consultas y el tamaño de los embeddings

  • La salida contiene significativamente más frases que la generación base

  • Los requisitos de memoria aumentan debido al almacenamiento de embeddings

La expansión está limitada por CPU debido al cálculo de similitud. Usar NumPy con aceleración BLAS acelera significativamente las operaciones matriciales.

Integración con el Pipeline de SEO

La generación de mapeos de frases son los Pasos 3a y 4 en el pipeline de SEO:

  1. Paso 0: Embed Source Data - Productos, piezas, artículos
  2. Paso 1: Fetch Queries - GSC, Google Ads, live, Algolia
  3. Paso 2: Combine Queries - Fusionar todas las fuentes
  4. Paso 3a: Generate Base Phrase Mappings ← Estás aquí
  5. Paso 3b: Embed Queries - Convertir a vectores
  6. Paso 4: Expand Phrase Mappings ← Estás aquí
  7. Paso 5: Cluster Queries - Agrupar en páginas
  8. Paso 6: Match Products - Coincidencia consulta-producto
  9. Paso 7: Build Query Pages - Generar HTML
  10. Paso 8: Generate Related Searches - Encontrar consultas relacionadas
  11. Paso 11: Migrate to Valkey - Cargar en el servicio de búsqueda

Consulta SEO Pipeline Overview para el flujo completo.

¿Por Qué Dos Pasos?

La generación base (Paso 3a) proporciona:

  • Precisión: Las frases basadas en reglas coinciden exactamente con lo que esperamos

  • Cobertura: Las permutaciones aseguran que todos los órdenes de palabras estén cubiertos

  • Control: Las reglas específicas por característica manejan el conocimiento del dominio

La expansión semántica (Paso 4) proporciona:

  • Flexibilidad: Descubre frases que no anticipamos

  • Lenguaje real del usuario: Aprende de consultas de búsqueda reales

  • Sinónimos: Encuentra frases equivalentes ("16 gigs" para "16gb")

Juntos, equilibran precisión y exhaustividad.

Referencias

Conceptos Técnicos

Documentación de Modelos

Artículos Relacionados

Resumen

Generamos mapeos de frase a filtro en dos pasos:

Paso 3a (Generación Base):

  • Generar todas las permutaciones de encabezado, clave, valor, unidad

  • Aplicar reglas específicas por característica (serie de procesador, memoria, almacenamiento, factor de forma)

  • Añadir sufijos de puerto para características de conectividad

  • Lista blanca de valores independientes para características específicas

  • Generar el conjunto de frases base a partir de reglas

Paso 4 (Expansión Semántica):

  • Extraer frases n-grama de consultas de búsqueda reales

  • Generar embeddings de frases y textos de búsqueda de filtros

  • Coincidir frases con puntuaciones de similitud por encima del umbral

  • Inyectar frases semilla manuales para guiar la expansión

  • Resolver colisiones entre memoria y almacenamiento

  • Generar el conjunto de frases expandido y desambiguado

El resultado es un mapeo exhaustivo que maneja tanto frases esperadas (mediante reglas) como variaciones inesperadas (mediante similitud semántica). Estos mapeos impulsan la extracción de filtros en páginas de consulta, búsqueda y coincidencia de productos.


← Volver al Índice de Documentación