Escrito por Varun Joshi y Gauri Kamat
A medida que el comercio electrónico continúa dominando el espacio minorista, el desafío de hacer coincidir con precisión productos entre plataformas y bases de datos se vuelve más complejo. En este artículo, demostramos que la comparación de productos puede ser simplemente un ejemplo de un marco estadístico más amplio de resolución de entidades.
La coincidencia de productos (PM) se refiere al problema de determinar si dos listados separados realmente se refieren al mismo producto. Hay una variedad de situaciones en las que esto es importante. Por ejemplo, considere los casos de uso siguientes:
- Con la rápida expansión de los mercados en línea, las plataformas de comercio electrónico (por ejemplo, amazon) tienen miles de vendedores que ofrecen sus productos, y periódicamente se incorporan nuevos vendedores a la plataforma. Además, estos vendedores potencialmente agregan miles de productos nuevos a la plataforma todos los días (1). Sin embargo, es posible que el mismo producto ya esté disponible en el sitio web a través de otros vendedores. Se requiere coincidencia de productos para agrupar estas diferentes ofertas en una sola lista para que los clientes puedan tener una visión clara de las diferentes ofertas disponibles para un producto.
- En los mercados de comercio electrónico, los vendedores también pueden crear listados duplicados para adquirir más bienes inmuebles en la página de búsqueda. En otras palabras, pueden publicar el mismo producto varias veces (con ligeras variaciones en el título, la descripción, etc.) para aumentar la probabilidad de que el cliente vea su producto. Para mejorar la experiencia del cliente, se requiere la coincidencia de productos para detectar y eliminar dichos listados duplicados.
- Otro caso de uso importante es el análisis de la competencia. Para fijar precios competitivos y tomar decisiones sobre el inventario, las empresas de comercio electrónico deben conocer las ofertas del mismo producto en toda su competencia.
- Por último, los servicios de comparación de precios, como Google Shopping (2), necesitan comparar productos para calcular el precio de un producto en diferentes plataformas.
En este artículo, mostramos cómo el marco de resolución de entidades (ER) nos ayuda a resolver el problema de PM. Específicamente, describimos un marco ampliamente utilizado en ER y demostramos su aplicación en un conjunto de datos de PM sintético. Comenzamos proporcionando antecedentes relevantes sobre ER.
La resolución de entidades (ER) es una técnica que identifica entidades duplicadas dentro o entre fuentes de datos. ER dentro de la misma base de datos se llama comúnmente deduplicaciónmientras que ER en múltiples bases de datos se llama vinculación de registros. Cuando se encuentran disponibles identificadores únicos (como números de seguro social), ER es una tarea bastante sencilla. Sin embargo, estos identificadores normalmente no están disponibles por motivos de privacidad de datos. En estos casos, ER se vuelve considerablemente más complejo.
¿Por qué es importante la sala de emergencias? ER puede ayudar a aumentar las bases de datos existentes con datos de fuentes adicionales. Esto permite a los usuarios realizar nuevos análisis, sin el costo adicional de recopilar más datos. ER ha encontrado aplicaciones en múltiples dominios, incluido el comercio electrónico, la investigación sobre derechos humanos y la atención médica. A solicitud reciente Implica contar las víctimas de la guerra civil salvadoreña, aplicando la ER a encuestas retrospectivas de mortalidad. Otro interesante aplicación está deduplicando los nombres de los inventores en una base de datos de patentes mantenida por la Oficina de Patentes y Marcas de EE. UU.
ER determinista y probabilística
Los métodos deterministas de ER se basan en una concordancia exacta en todos los atributos de cualquier par de registros. Por ejemplo, supongamos que tenemos dos archivos A y B. Digamos que estamos comparando registros a del archivo A y b del archivo B. Además, supongamos que la comparación se basa en dos atributos: tipo de producto (por ejemplo, ropa, electrónica) y año de fabricación. Una regla determinista declara (a, b) para ser un enlace, si tipo de productoᵃ = tipo de productoᵇ y añoᵃ= añoᵇ. Esto es viable, siempre que todos los atributos sean categóricos. Si tenemos un atributo textual como el nombre del producto, entonces el enlace determinista puede producir errores. Por ejemplo, si nombreᵃ = “Sony TV 4” y nombreᵇ = “Sony TV4”, entonces (a, b) será declarado sin vínculo, aunque los dos nombres solo difieran por un espacio.
Entonces lo que necesitamos es algo que tenga en cuenta los niveles parciales de acuerdo. Aquí es donde se puede utilizar la ER probabilística. En ER probabilístico, cada par (a, b) se le asigna una probabilidad de ser un enlace, basada en (1) cuántos atributos coinciden; y (2) qué tan de acuerdo están. Por ejemplo, si tipo de productoᵃ = tipo de productoᵇ, añoᵃ= añoᵇ, y nombreᵃ y nombreᵇ están bastante cerca, entonces (a, b) se le asignará una alta probabilidad de ser un enlace. Si tipo de productoᵃ = tipo de productoᵇ, añoᵃ= añoᵇ, pero nombreᵃ y nombreᵇ son polos opuestos (por ejemplo, “AirPods” y “Sony TV4”), entonces esta probabilidad será mucho menor. Para atributos textuales, el ER probabilístico se basa en métricas de distancia de cuerdatales como el Jaro Winkler y el levenshtein distancias.
El modelo Fellegi-Sunter
El modelo Fellegi-Sunter (3) proporciona un marco probabilístico que permite a los analistas cuantificar la probabilidad de una coincidencia entre registros, en función de la similitud de sus atributos. El modelo opera calculando un peso de coincidencia para cada par de registros de ambos archivos. Este peso refleja el grado de acuerdo entre sus respectivos atributos. Para un par de registros determinado, el peso de coincidencia es
donde mᵢ es la probabilidad de que los dos registros coincidan en el atributo i dado que son compatibles; uᵢ es la probabilidad de que los dos registros coincidan en el atributo i dado que no son compatibles; y lambda es la probabilidad previa de una coincidencia, es decir, la probabilidad de coincidencia sin otra información sobre el par de registros. El metro La probabilidad generalmente refleja la calidad de las variables utilizadas para vincular, mientras que la tu La probabilidad refleja un acuerdo incidental entre pares de registros que no coinciden.
El peso de coincidencia se convierte en una probabilidad de coincidencia entre dos registros.
Finalmente, la probabilidad de coincidencia se compara con un valor umbral elegido para decidir si el par de registros coincide, no coincide o requiere una revisión manual adicional.
Generación de datos
Generamos datos para reflejar un escenario realista de coincidencia de productos. Específicamente, generamos el archivo A que comprende 79 registros y el archivo B que comprende 192 registros. Hay 59 registros superpuestos entre los dos archivos. Ambos archivos contienen cuatro variables de enlace, a saber, el nombre del producto, el tipo de producto, la marca y el precio. Por ejemplo, un registro en el archivo A que representa los airpods de Apple tiene el nombre de producto “Apple AirPods”, el tipo de producto “Auriculares”, la marca registrada es “Apple” y el precio del producto es $200. El nombre, el tipo y la marca del producto son variables con valores de cadena, mientras que el precio es una variable numérica con valores continuos. También generamos errores en cada una de las variables de vinculación. En los campos con valores de cadena, introducimos errores de eliminación; por ejemplo, un Apple Watch serie 6 puede registrarse como “Apple Watch Series 6” en el archivo A y como “Apple Watch 6” en el archivo B. También introducimos errores de cambio de mayúsculas y minúsculas en los campos de cadena; por ejemplo, el mismo producto puede registrarse como “apple watch series 6” en el archivo A y como “Apple Watch 6” en el archivo B. La naturaleza continua de la variable de precio puede inducir automáticamente errores. Por ejemplo, un producto puede tener un precio de 55 dólares en un archivo, pero de 55,2 dólares en el otro.
Para la generación de datos sintéticos, utilizamos la versión gratuita de ChatGPT (es decir, GPT 3.5) (4). Se utilizaron los siguientes tres mensajes para la generación de datos:
Pregunta 1: generar el conjunto de datos con enlaces
Generate a synthetic dataset which links 59 distinct products from two different sources.
The dataset should have the following columns: Title_A, Product_Type_A, Brand_A, Price_A, Title_B, Product_Type_B, Brand_B, Price_B.
Each row of the dataset refers to the same product but the values of the corresponding columns from Dataset A and Dataset B can be slightly different. There can be typos or missing value in each column. As an example, check out the following couple of rows:
Title_A | Product_Type_A | Brand_A | Price_A | Title_B | Product_Type_B | Brand_B | Price_B
Levis Men 505 Regular | Jeans | Levis | 55 | Levs Men 505 | Jeans | Levis | 56
Toshiba C350 55 in 4k | Smart TV | Toshiba | 350 | Toshiba C350 4k Fire TV | Smart TV | Toshiba Inc | 370
Nike Air Max 90 | Sneakers | Nike | 120 | Nike Air Max 90 | Shoes | Nikes | 120
Sony WH-1000XM4 | Headphones | Sony | 275 | Sony WH-1000XM4 | | Sony | 275 |
Make sure that |Price_A - Price_B| *100/Price_A <= 10
Output the dataset as a table with 59 rows which can be exported to Excel
El mensaje anterior genera el conjunto de datos con enlaces. El número de filas se puede modificar para generar un conjunto de datos con un número diferente de enlaces.
Para generar más registros para cada conjunto de datos individual (conjunto de datos A o conjunto de datos B), se utilizaron las dos indicaciones siguientes.
Pregunta 2: para generar más registros para el conjunto de datos A
Generate 20 more distinct products for the above dataset. But this time, I only need the information about dataset A. The dataset should have the following columns: Title_A, Product_Type_A, Brand_A, Price_A
Pregunta 3: generar más registros para el conjunto de datos B
Now generate 60 more distinct products for the above dataset. But this time, I only need the information about dataset B. The dataset should have the following columns: Title_B, Product_Type_B, Brand_B, Price_B. Don't just get me electronic products. Instead, try to get a variety of different product types e.g., clothing, furniture, auto, home improvement, household essentials, etc.
Vinculación de registros
Nuestro objetivo es identificar los registros superpuestos entre los archivos A y B utilizando el modelo Fellegi-Sunter (FS). Implementamos el modelo FS usando el splink paquete (5) en Python.
Para comparar el título del producto, el tipo de producto y la marca, utilizamos el valor predeterminado nombre función de comparación disponible en el splink paquete. En concreto, la función de comparación tiene los siguientes 4 niveles de comparación:
- Coincidencia exacta
- Damerau-Levenshtein Distancia <= 1
- Similitud con Jaro Winkler >= 0,9
- Similitud con Jaro Winkler >= 0,8
Si un par de productos no cae en ninguno de los 4 niveles, un valor predeterminado Algo más El nivel se asigna a la pareja.
El splink El paquete no tiene una función para comparar columnas numéricas. Por lo tanto, para comparar precios, primero convertimos el precio en una variable categórica dividiéndolo en los siguientes grupos: (=$1000). Luego, verificamos si el precio cae en el mismo segmento para un par de registros. En otras palabras, utilizamos el Coincidencia exacta nivel de comparación.
Todas las comparaciones se pueden especificar a través de un diccionario de configuración en el splink paquete
Los parámetros del modelo FS se estiman mediante el algoritmo de maximización de expectativas. En splinkhay funciones integradas para hacer esto
Para evaluar el rendimiento del modelo FS, tomamos nota de la cantidad de registros vinculados, la precisión, la recuperación y la puntuación F1 de la predicción. La precisión se define como la proporción de registros vinculados que son vínculos verdaderos. Y la recuperación se define como la proporción de enlaces verdaderos que se identifican correctamente. La puntuación F1 es igual a 2*Precisión*Recuperación/(Precisión + Recuperación). splink proporciona una función para generar todas estas métricas como se muestra a continuación
El código completo para entrenar y evaluar este modelo está disponible aquí: https://github.com/vjoshi345/product-matching-article/blob/main/train_synthetic_fellegi_sunter.py
Ejecutamos el modelo FS en todos los pares posibles de productos de los dos conjuntos de datos. En concreto, hay 15.168 pares de productos (79 * 192). El splink El paquete tiene una función para generar automáticamente predicciones (es decir, enlaces coincidentes) para diferentes umbrales de probabilidad de coincidencia. A continuación mostramos la matriz de confusión para la probabilidad de coincidencia = 0,913 (el umbral para el cual obtenemos la puntuación F1 más alta).
Número total de registros vinculados = 82
Precisión = 58/82 = 0,707
Recordar = 58/59 = 0,983
F1 = (2 * 0,707 * 0,983)/(0,707 + 0,983) = 0,823
El propósito de este artículo fue mostrar cómo la coincidencia de productos es un caso específico del problema más general de Resolución de entidades. Demostramos esto utilizando uno de los modelos populares del marco ER para resolver el problema de coincidencia de productos. Como queríamos que este fuera un artículo introductorio, creamos un conjunto de datos sintéticos relativamente simple. En un escenario del mundo real, los datos serán mucho más complejos con docenas de variables diferentes, por ejemplo, descripción del producto, color, tamaño, etc. Para una coincidencia precisa, necesitaríamos técnicas de PNL más avanzadas más allá de las métricas de distancia del texto. Por ejemplo, podemos utilizar incrustaciones derivadas de modelos Transformer para hacer coincidir semánticamente productos. Esto puede ayudarnos a relacionar dos productos con descripciones sintácticamente diferentes, por ejemplo, dos productos con Tipo de producto. Vaqueros y Vaqueros respectivamente.
Además, la cantidad de productos para conjuntos de datos del mundo real estará en el rango de cientos de millones con potencialmente cientos de miles de enlaces. Estos conjuntos de datos requieren métodos más eficientes, así como recursos informáticos, para una correspondencia eficaz de productos.
(1): https://medium.com/walmartglobaltech/product-matching-in-ecommerce-4f19b6aebaca
(2): https://compras.google.com/?pli=1
(3) I. Fellegi y AB Sunter (1969). Una teoría del enlace de registros. Revista de la Asociación Estadounidense de Estadística
(5): https://moj-analytical-services.github.io/splink/index.html