PC & Mobile

Amélioration de la qualité des données avec la recherche de similarité de produit

Amélioration de la qualité des données avec la recherche de similarité de produit


La mauvaise qualité des données est un goulot d'étranglement pour toutes les entreprises de commerce électronique, car elle peut nuire à sa compétitivité et entraver la gestion des données. La recherche de similarité de produit ou communément appelée correspondance de produit peut aider les commerçants à éliminer cette difficulté, car elle détecte les entrées de produit et le contenu en double.

Ceci est utile pour les magasins de commerce électronique et les marchés. C’est un problème courant sur les marchés: chaque fois que de nouveaux produits sont importés par un nouveau vendeur, il est nécessaire de vérifier si les articles existent déjà dans leur catalogue. Ce n'est pas une procédure facile et directe. Les données peuvent différer dans la description, le nom ou même les images, mais font toujours référence au même produit. Les identifiants universels tels que GTIN ou EAN ne sont pas toujours disponibles et parfois même incorrects (plus sur la nécessité de faire correspondre les produits sur les marchés dans la correspondance de produits dans le commerce électronique en utilisant l'apprentissage en profondeur). Dans le cas des magasins de commerce électronique, les mêmes produits peuvent être importés par erreur avec un identifiant différent et des informations identiques ou similaires.

Exemple de produits similaires

En outre, il est courant que les magasins de commerce électronique utilisent des descriptions similaires pour des produits du même type pour des raisons de commodité, une pratique qui se traduit par une position inférieure dans les moteurs de recherche:

Il est facile de prendre des raccourcis avec des descriptions de produits sur les sites Web de commerce électronique, en particulier avec des produits similaires. Cependant, considérons que Google juge le contenu des sites Web de commerce électronique de la même manière que les sites de contenu classiques. Cela seul devrait suffire à faire réaliser à un référencement professionnel un référencement naturel, convaincant et robuste, en particulier pour les sites de commerce électronique de niveau intermédiaire qui ne disposent pas de suffisamment d'autorité de domaine pour rivaliser avec leurs concurrents plus importants. Chaque petit geste compte. Le partage de courts paragraphes, spécifications et autres contenus entre les pages de produits augmente la probabilité que les moteurs de recherche diminuent leur perception de la qualité du contenu d'une page de produit et, par conséquent, leur position dans le classement. (source: contenu mince et en double: SEO eCommerce)

La détection de contenu de produit en double est le principal cas d'utilisation que la recherche de similarité de produit vise à traiter avec quelques cas d'utilisation supplémentaires. Par exemple, les recommandations de produits basées sur le contenu pourraient tirer parti de la similarité des produits pour recommander des articles de remplacement présentant les mêmes caractéristiques pour des produits en rupture de stock. En outre, cela peut aider à améliorer les informations de données: si certaines données de produit ne possèdent pas certaines valeurs d'attribut, il est possible de suggérer des attributs potentiels que l'on trouve dans ses produits les plus similaires.

Défis

La recherche de similarité de produit multi-projet, c’est-à-dire la recherche de correspondance de produit dans deux inventaires différents, pose un défi car les informations sur le produit présentent très probablement des structures et des valeurs de données très différentes. Pour commencer, les informations textuelles disponibles peuvent être dans différentes langues, ce qui nécessite une traduction automatique comportant un risque d'imprécision. Les images de produit peuvent afficher le même produit dans des paramètres complètement différents (conditions d'éclairage différentes, arrière-plan, emballage, profondeur, rotation, contexte, etc.). Et en ce qui concerne les attributs, les différences peuvent apparaître à la fois dans les noms d’attributs (par exemple,Couleur' contre 'Couleur") Et les valeurs ("petit' ou 'S' ou '34’).

L'évolutivité devient également un problème lorsque le magasin ou le marché contient un grand nombre de produits. Pour numériser un catalogue entier afin de détecter des paires de produits similaires, vous devez comparer chaque variante de produit. Ceci est traduit mathématiquement en n! / 2! (n-2)! paires où n est le nombre de variantes de produit. Cela signifie 499500 comparaisons de paires pour seulement un petit projet de 1000 variantes.

Dernier point mais non le moindre, les données peuvent être manquantes et bruitées. Les descriptions peuvent contenir des balises de formatage, de nombreux attributs peuvent être sans intérêt pour la mesure de similarité (par exemple, des codes internes) et les valeurs d’attribut peuvent être rares, c’est-à-dire que de nombreux produits contiennent un attribut particulier, mais seuls quelques produits ont une valeur. Cela nécessite une étape de prétraitement qui doit être ajustée selon des normes communes, en ignorant par exemple les spécificités d’une entreprise en matière de données.

la mise en oeuvre

L'API de produits similaires offre à un magasin la possibilité d'analyser l'intégralité de son catalogue pour rechercher des produits similaires les uns aux autres en termes d'informations de données. Il exploite diverses informations sur le produit: produit nom, description, valeurs d'attribut, prix et nombre de variantes. Ces sources de données comprennent différents types de données: les noms et descriptions sont des données textuelles, le prix et le nombre de variantes sont numériques et les attributs comprennent des types de données mélangés. Par conséquent, le système se compose essentiellement de composants indépendants plus petits, un pour chaque source d’information, et chaque composant calcule la similarité pour la source d’information respective.

Les utilisateurs peuvent choisir laquelle de ces sources de données devrait être considérée et même spécifier les caractéristiques qui devraient avoir une influence plus grande sur le score de similarité, puisque le résultat final est un score de similarité moyen pondéré pour chaque paire de produits examinés. En outre, il offre la possibilité de limiter la recherche à des produits ou types de produits spécifiques.

Diagramme de flux de données pour la comparaison de deux produits

Le code est écrit en Python et comprend des méthodes issues des bibliothèques de données les plus populaires: NumPy, Scikit-learn, Pandas, SciPy.

Similarité de texte pour des noms et des descriptions:

Les noms de produits et les descriptions portent sans aucun doute des informations importantes, mais comme dans tout cas de traitement non linéaire, toute instance de texte doit être convertie en vecteur. Ceci est réalisé avec l’utilisation d’un vectoriseur de texte tel que tf-idf et le vectorizer count, qui sont généralement utilisés, mais nous avons opté pour le vectoriseur Hashing de Scikit-learn. Le vectoriseur de hachage est similaire au vectoriseur de comptage mais ne conserve pas de vocabulaire. Il ne prend pas non plus en compte les fréquences de document inverses telles que tf-idf, qui pénalise les mots qui apparaissent plus fréquemment dans l’ensemble du corpus. Par conséquent, il fournit des temps de réponse plus courts avec une précision suffisante pour nos cas d'utilisation.

Similarité numérique pour prix et nombre de variantes:

Le prix du produit peut être un indicateur fort d'une non-concordance mais n'est pas concluant pour détecter une correspondance uniquement. Cela est dû au fait que des produits identiques peuvent avoir des prix encore différents et que des produits non identiques peuvent avoir les mêmes gammes de prix. De même, le nombre de variantes n’est pas déterminant, mais peut être utile dans certains cas d’utilisation. Il est donc davantage considéré comme une fonctionnalité supplémentaire, qu’il appartient au choix de l’utilisateur d’utiliser ou non. Etant donné que le prix et le nombre de variantes sont numériques, la méthode est simple: nous mettons à l'échelle les valeurs dans une plage standard fixe, généralement [0,1], et utilisez une métrique de distance numérique pour calculer la différence entre deux valeurs.

Il convient de noter que les produits contiennent généralement plusieurs valeurs de prix (par exemple, un prix normal, un prix saisonnier, certains prix discount, des prix pour différents pays, etc.) et que celles-ci sont également définies dans une devise spécifique. Ainsi, pour la comparaison des prix, nous convertissons toutes les valeurs dans la même devise et utilisons la médiane de tous les prix en tant que représentant de la variante de produit.

Similarité de données mixte pour les attributs:

Les attributs de produit sont des cas particuliers de données car ils ont des types de données mélangés. Lorsque les données sont du même type, par ex. numérique, comme les prix ou les vecteurs de texte décrits ci-dessus, une métrique de similarité peut être directement appliquée. Mais si les données sont représentées par un ensemble d’entités numériques, nominales, booléennes et même multivaluées (c’est-à-dire que chaque instance est décrite comme une collection de valeurs), il n’existe aucune métrique de similarité commune permettant de comparer tous ces types de manière significative. façon. Pour une meilleure compréhension, considérons le tableau suivant représentant un échantillon des attributs des produits vitivinicoles.

Petit ensemble de valeurs d'attribut des produits vinicoles

Nous distinguons les attributs suivants:

  • numérique: Contenu
  • booléen: est disponible
  • nominal: Couleur, pays, acidité
  • multi-valeurs: disponibilité de pays, aliments

Notre implémentation d’une métrique de distance capable de traiter différents types de variables est basée sur la métrique de distance de Gower¹: nous calculons les distances entre deux instances différemment pour chaque type de variable et les combinons dans un score final de distance pondérée. Deux décisions fondamentales devaient être prises ici: quelle métrique de distance devrait être utilisée pour chaque type et comment la distance entre les valeurs manquantes devait être traitée. Pour les valeurs manquantes, l'hypothèse est que la distance entre une valeur manquante et toute autre valeur (même si elle est également manquante) doit être maximale, à savoir 1,0. Les mesures de distance pour chaque type de données sont décrites ci-après.

Pour les attributs numériques, il est simple et similaire au cas de la similarité de prix. Nous normalisons les valeurs et utilisons le Distance euclidienne. Les attributs booléens peuvent être convertis en valeurs numériques (0 et 1) et être traité de la même manière avec une métrique de distance numérique, ce qui donnera éventuellement une similarité maximale pour des valeurs identiques et zéro dans le cas contraire.

Données catégoriques (également appelées nominales), telles que pays et Couleur, doivent être comparés de la même façon: les valeurs identiques doivent avoir la similarité maximale et zéro si elles sont différentes. Une approche couramment appliquée consiste à coder les valeurs catégoriques avec des valeurs numériques. Cependant, traiter ces valeurs de la même manière que numérique n’a pas de sens et constitue une idée plutôt médiocre car les équivalents numériques n’ont pas d’autre sens que le codage. Par exemple, la valeur encodée avec 'dix' ne devrait pas être considéré comme très similaire à la valeur codée avec «9» que celui codé comme '1' et la distance entre ces valeurs ne porte aucune information sémantique. Par conséquent, une métrique différente est nécessaire - une métrique qui vérifie fondamentalement si les valeurs sont identiques ou non. Dans ce cas, nous avons utilisé le Distance de Hamming en tant que métrique (pour plus d’informations, voir le cédiste de SciPy).

Toutefois, les données catégorielles peuvent également être traitées sous forme de texte dans certains cas. Par exemple, pour un attribut ‘Couleur’Et des éléments avec des valeurs 'vert', 'vert clair' et 'rouge', une approche catégorique calcule zéro similarité entre chaque paire et les traite comme des catégories complètement distinctes, tandis que la similarité de texte n’ignore pas la similarité existant entre les deux cas de couleur verte. Ceci est difficile à réaliser sans supervision humaine et n'a pas de sens dans tous les cas. De plus, la similarité de texte est coûteuse en calcul.

Par conséquent, nous avons également inclus une méthode de similarité de distance de texte pour les attributs nominaux. Comme il nécessite beaucoup de calcul, il n'est activé que pour de petits ensembles de produits et un nombre limité d'attributs nominaux. Il est basé sur le Levenshtein distance entre les valeurs du python fuzzywuzzy bibliothèque. La distance de Levenshtein entre deux textes est une mesure de distance de chaîne qui indique le nombre de modifications à un seul caractère requises pour convertir une chaîne en une autre.

Enfin et surtout, pour les attributs à valeurs multiples, où chaque élément peut avoir un ensemble de valeurs, nous appliquons le Jaccard distance. La distance de Jaccard entre deux ensembles de valeurs est définie comme la taille de leur intersection divisée par la taille de leur union, c'est-à-dire le nombre de leurs valeurs communes divisées par le nombre total de valeurs uniques qui apparaissent dans les deux ensembles.

La gestion des attributs dans ce contexte est également difficile pour des raisons autres que les types mixtes. Sans inspection des données, il est difficile de distinguer automatiquement les attributs significatifs à prendre en compte et ceux qui ajoutent du bruit, ou si les données catégorielles doivent être traitées sous forme de texte ou de valeurs distinctes. En outre, lorsque deux inventaires sont comparés, un chevauchement des attributs correspondants doit être trouvé et le cas où les attributs correspondent mais où les valeurs sont différentes (par exemple,S"Pour la taille dans l'un mais"petitDans l’autre) doit également être abordé.

En plus de cela, nous avons voulu pondérer les attributs afin que les plus importants influencent davantage le résultat, ce qui nécessite une métrique commune d'importance pour tous les types de données. Pour évaluer leur importance relative et décider des attributs à utiliser, nous avons considéré la variance et la densité de leurs valeurs comme un indicateur de leur capacité de discrimination. Cependant, il n'existe pas de mesure de variance unique applicable à chaque type de données et, en guise de contrepartie de variance, nous avons utilisé l'entropie des valeurs. Mais cela uniquement une fois que les attributs avec une entropie égale à 1 ont été supprimés, car cela signifie que tous les éléments ont des valeurs uniques et que l'attribut n'ajoute donc aucune valeur pour l'identification d'éléments similaires.

Enfin, lorsque deux inventaires différents sont comparés et que le chevauchement des attributs de correspondance est faible, car cela ne explique qu'en partie le score de similarité, nous nous assurons que cela se reflète dans le score final.

Exemple de réponse de l'API Produits similaires

La fonctionnalité est actuellement fournie en phase de test bêta. Pour gérer le nombre élevé de comparaisons de paires expliqué ci-dessus, le nombre total de produits analysés dans une demande est actuellement limité. Cela peut être amélioré en passant à un framework distribué tel que Dask. Nous attendons avec intérêt les commentaires des clients afin de mieux comprendre les cas d'utilisation et d'identifier le potentiel d'optimisation.

¹ Gower, J. C. (1971) Un coefficient général de similitude et certaines de ses propriétés, Biometrics, 27, 857–874.

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close