Sélection automatique de commentaires utilisateurs pertinents

Par Yassine EL OUAHIDI, Justin GUIRAUTANE, Jean SAVARY, étudiants en Data Science à IMT Atlantique.

L’essor des « contenus utilisateurs »

Les opinions des utilisateurs quant aux services/biens proposés, par une plateforme prennent aujourd’hui une place de plus en plus importante lors de la phase de réservation ou d’achat. Selon une étude,94% des utilisateurs n’ont pas acheté un produit en ligne suite à la lecture d’avis négatifs. En parallèle, on constate une augmentation du nombre d’avis propres à un produit ou un service, ainsi qu’une grande diversité dans leur contenu.

Nombre de nouvelles reviews Google par trimestre
Nombre de nouvelles reviews Google par trimestre [https://searchengineland.com/googles-growth-in-online-local-reviews-continues-to-dominate-but-292571]
Pour un même produit, on peut observer divers axes de notations relatifs : pour des logements, on pensera notamment à la propreté, la conformité à l’annonce, etc. Les “reviews” apportent donc bien plus de détails et d’informations précises quant à l’avis vis-à-vis d’un produit/service que ne fournissent pas les notations (généralement une note de 1 à 5). Effectivement, plusieurs notes faibles peuvent correspondre à divers aspects très différents qui ont paru critiques aux utilisateurs. Par exemple, dans notre cas des logements, une personne peut être marquée par la très mauvaise localisation d’un logement alors qu’une autre peut porter une plus grande importance à la propreté. Dans les deux cas, il s’agira d’avis négatifs, dont les notes pourront être semblables, mais qui se perdront dans la masse de commentaires tous aussi disparates.
Il est d’autant plus décisif d’extraire de la valeur de ces “avis utilisateurs”. L’idée à retenir de ce projet est de générer de la valeur pour les utilisateurs à partir de données issues de ces utilisateurs, dans l’idée de construire une boucle vertueuse.

Exploiter les avis utilisateurs, oui … Mais comment ?

La difficulté première de ce projet est d’être en mesure de comparer la pertinence de deux commentaires entre eux au regard de l’intérêt d’un utilisateur. Sur quel aspect va-t-on mesurer la valeur d’un commentaire pour un potentiel acheteur ? Cette réflexion nous a naturellement amenés à la formulation de la problématique suivante :

“Comment définir une relation d’ordre au sein d’un ensemble d’avis utilisateurs relatifs à un produit donné, pour un utilisateur donné ?”

Notons l’importance de la mention « […] produit donné, pour un utilisateur donné ». L’ensemble de nos analyses et constructions de modèles porteront, comme nous le verrons par la suite, sur une simulation respectant le cadre : un produit donné pour une catégorie de produits donnée, pour un utilisateur spécifique.

Cas d’usage

« Archibald souhaite acheter un nouveau produit d’entretien ménager et réalise une recherche sur le site. À ce stade, nous recueillerons l’ensemble des produits disponibles sur la marketplace, répondant à la recherche d’Archibald. La marketplace lui proposera alors, selon son système de recommandation, un certain nombre de produits. À cet instant, après avoir analysé l’ensemble des commentaires disponibles, nous demanderons à Archibald d’indiquer par une phrase les caractéristiques, propres au type de produit qu’il recherche, auxquelles il est sensible. Suite à cela, nous calculerons via notre algorithme de machine learning, un score de similarité entre l’entrée d’Archibald et l’ensemble des commentaires disponibles pour chaque produit. Cette similarité, comme nous le verrons, prendra en compte des notions thématiques (par exemple, Archibald évoque l’odeur du produit d’entretien), mais aussi grammaticale et sémantique. À l’issue de cette brève phase, lorsque Archibald sélectionnera l’un des produits de la liste proposée, nous aurons sélectionné pour lui les 3 commentaires de ce produit les plus à même de satisfaire les critères qu’il a aura entré plus tôt. »

Avant d’être en mesure de réaliser cette « aide à la décision », via une sélection automatique de commentaires pertinents, nous devons satisfaire les besoins suivants : recueillir l’ensemble des commentaires relatifs à un produit, traiter ce texte de manière à appliquer des algorithmes de machine learning, définir une mesure sur laquelle nous comparerons deux commentaires (relation d’ordre).

Notre proposition de valeur

Une fois que nous serons en mesure de comparer divers commentaires au regard de l’intérêt d’un utilisateur, nous pourrons nous présenter comme un tiers de confiance, transparent, apportant une aide à la décision aux clients souhaitant acheter un produit. Notre apport de valeur du côté du site intégrant notre solution est l’augmentation de la satisfaction client via une navigation facilité par la lecture de commentaires sélectionnés spécifiquement. Les utilisateurs trouveront plus rapidement les informations qu’ils cherchent dans les reviews, et gagnerons du temps sur un site équipé de notre solution. Les clients seront plus fidèles au site et plus propices à consulter plus de pages. De cette satisfaction pourra suivre une hausse potentielle du taux de vente.

Plongée au cœur des reviews, l’incroyable récit de notre périple !

Choix du dataset…

Nous avons choisi notre dataset de manière à garantir l’universalité de notre produit, ie ayant pour objectif de pouvoir s’intégrer de manière rapide et simple sur tout type de site de e-commerce. Nous avons donc cherché un dataset contenant au moins les champs suivants : identifiant d’un avis utilisateur, identifiant du produit relatif à l’avis, contenu textuel de l’avis utilisateur. D’autres champs pourront être utilisés pour améliorer le produit, mais dans sa première version nous nous en tenons à cela.

Le prototype que nous avons construit est basé sur une base de données fournie par datafiniti.co.

La base de données utilisée pour mener à bien le prototype est constituée de 70260 commentaires utilisateurs relatifs à un ensemble de 600 produits différents vendus sur 14 sites.

… du site…

Étudions rapidement la distribution des commentaires en fonction du site.

On observe la nette prédominance des sites Walmart (~ 45% du total) et Bestbuy (~ 36% du total).

Étudions alors notre variable d’intérêt : le contenu textuel des commentaires : Walmart apparaît comme le site le plus intéressant pour la suite de notre projet. En effet, les commentaires sont deux fois plus longs, avec une médiane à 14 mots contre 7 pour Bestbuy. Ainsi que des catégories plus intéressantes, car plus propices à trouver des commentaires plus objectifs. Bestbuy contenant majoritairement des commentaires de produits liés à l’audiovisuel (films, musique, …) .

Pour la suite du prototype, nous avons donc uniquement sélectionné les commentaires utilisateurs relatifs aux produits vendus sur Walmart.

… de la catégorie…

Plus spécifiquement dans la catégorie des produits d’entretien ménager (« Household Essentials ») contenant environ 8 552 avis (en ayant retiré les avis en doublons).

… et enfin, du Produit !

En outre, pour l’évaluation du modèle, décrite par la suite, nous utiliserons le produit sélectionné ci-dessous. Pour rappel, comme mentionné dans la problématique, notre produit réalise une sélection de commentaires pour un utilisateur et un produit donnés.

Rentrons dans le cœur du projet : de la donnée brute à la sélection de commentaires !

Traitement des textes

La première étape, sur laquelle repose en grande partie l’efficacité des algorithmes évoqués plus tard, consiste au traitement des données textuelles des commentaires utilisateurs de sorte à les rendre « compréhensibles » par des modèles de machine learning. Pour cette phase, nous utiliserons la librairie de référence « Spacy » sous Python, connue pour ses modèles de traitements de textes certes complexes, mais bien plus performants que des modèles issus de l’autre librairie de référence « NLTK ».

Le pre-processing peut être résumé par le schéma suivant :

« Nous adorons tous la Data Science, mais encore plus les produits d’entretien ménagers » → « nous, adorons, tous, data, science, mais, plus, les, produits, d’entretien, ménagers ».

Passons ensuite à nos modèles. Dans le but énoncé plus haut – la similarité entre l’entrée utilisateur et notre base de commentaires

Comment quantifier la similarité entre deux textes ?

Une similarité entre deux textes peut-être de plusieurs types : sémantique, grammaticale, thématique ou autre. Dans notre cas, nous procédons en deux temps.

  1. D’abord en étudiant la similarité thématique. Nous extrayons les thèmes principaux de tous les commentaires du produit donné, pour ainsi pouvoir sélectionner les commentaires dont les thèmes principaux sont très proches des thèmes extraits de l’entrée utilisateur. Pour cette première étape, nous utilisons un LDA.
  2. Ensuite, en étudiant la similarité sémantique nous cherchons parmi les commentaires en sortie de notre LDA, les 3 étant le plus sémantiquement proches de l’entrée utilisateur. Pour cela, nous utilisons un doc2vec avec pour mesure de similarité, la similarité cosinus.
Etape 1. Extraction des thèmes principaux

Rapide explication du LDA (Latent Dirichlet Allocation). Le LDA fait parti des modèles d’extraction de topics ou « Topic modeling » . Ces algorithmes partent du postulat qu’il existe, au sein d’un corpus de textes, des thèmes latents. Ainsi, ces modèles attribuent à chaque texte un pourcentage d’appartenance à chacun des thèmes détectés au sein d’un corpus.

Nous appliquons donc notre meilleur modèle de LDA, entraîné sur un corpus de commentaires relatifs à la catégorie « Household Essentials », pour attribuer à chaque commentaire des coefficients d’appartenance aux 6 topics identifiés. Nous faisons de même pour l’entrée utilisateur. Les commentaires les plus similaires thématiquement (quantile 75%) sont envoyés en entrée du modèle suivant le doc2vec.

Cette étape, effectuée en amont de notre Doc2vec est primordiale dans notre calcul de similarité. Plutôt que de longues explications, voici un exemple pour mieux comprendre : (a) Si l’on utilise un Doc2vec (de même pour Word2vec) pour prédire les documents similaires à un texte contenant le mot « French », on obtiendra probablement des documents contenant « German » ou « English » , car ces mots sont utilisés dans des contextes grammaticaux similaires. (b) Si l’on utilise un LDA en amont et que l’on cherche à prédire les mots similaires à un texte contenant le mot « French » et évoquant le thème de la « nourriture », on obtiendra cette fois non plus des documents contenant « German » ou « English » mais plutôt « baguette », « vin », « boulangerie ».

Etape 2. Calcul de similarité sémantique entre textes

En sortie de l’étape précédente, nous avions donc plusieurs commentaires qui ont été sélectionnés. Ensuite parmi ces commentaires on sélectionne les 3 commentaires ayant les plus hauts scores de similarité sémantique.
Une fois que deux textes sont représentés sous forme de vecteur grâce au doc2vec, il est possible de calculer leur similarité cosinus.

Nous sommes donc à présent en possession d’une relation d’ordre !

Notre sélection actuelle n’est basée que sur ce score de similarité. Des améliorations ont bien entendu été envisagées, notamment l’ajout de features telle que la longueur du message, le nombre de verbes/adjectifs, etc. Nous avons également songé à entraîner un algorithme supervisé dont la variable à prédire est l’utilité d’un message (ie champ « ce commentaire vous a été utile ? »).

Comment évaluer notre sélection ?

Du non supervisé au supervisé

Notre modèle étant non supervisé, nous n’avons pas accès à une méthode directe permettant de l’évaluer. En effet, nous donnons un top 3 des commentaires les plus pertinents, mais il est impossible de garantir que ce sont bien ceux qu’il fallait choisir dans l’ensemble disponible. Pour pallier cela, une approche classique consiste à rendre le problème supervisé afin de pouvoir l’évaluer. Nous avons alors aléatoirement extrait 100 commentaires d’un produit donné, puis nous avons écrit 100 entrées utilisateurs. Nous avons ensuite associé à chacune des entrées les 3 commentaires que nous jugions les plus pertinents parmi ceux extraits. Grâce à cet « étiquetage » manuel, nous avons donc les entrées et les sorties du modèle qui devient alors supervisé. Finalement, nous comparons le résultat renvoyé par le modèle à celui que nous avons indiqué.

Qu’en est-il des résultats ?

21 % des commentaires sélectionnés par notre modèle sont jugés pertinents par les utilisateurs.

Comme on peut l’imaginer assez naturellement, les scores fournis plus haut peuvent être améliorés en ne considérant pas un top 3, mais un top 5 ou plus. On constate effectivement qu’en augmentant le nombre de commentaires à prédire, on a potentiellement plus de chances de choisir les bons.

Ces scores sont relativement faibles, mais il est difficile d’en conclure quoi que ce soit. En effet, la sélection de commentaires pertinents est un sujet très subjectif. Ainsi, notre test est biaisé par la personne qui a écrit et labellisé les entrées utilisateurs. De plus, notre procédure de test est appliquée sur un faible volume de données qui ne suffit pas à conclure.

Déploiement, commercialisation

Notre produit peut s’intégrer sous forme d’API au sein du site d’un partenaire. Pour faire ses preuves en utilisation, nous pouvons fournir un accès gratuit à nos services durant un période de 2 mois, période durant laquelle notre solution sera soumise à un A/B test dont l’objectif sera de quantifier l’augmentation d’indicateurs de performance utilisés par l’entreprise (le taux de conversion/vente semble pertinent). Après une période de tests, notre outil sera vendu sous forme d’abonnement mensuel, dont le tarif sera calculé sous forme d’un pourcentage du nombre de ventes réalisées.

Simulation de déploiement

Les gains potentiels grâce à notre solution sont aujourd’hui difficilement évaluables. Cependant, l’essor des plateformes d’achat en ligne nous garantit que de plus en plus de gens consommeront en ligne, et seront donc sensibles aux commentaires des autres utilisateurs. En considérant que notre modèle aura une influence sur le volume des ventes d’un produit donné, nous pouvons estimer le gain pour des plateformes à différentes échelles. Ci-dessous, un exemple avec le produit “Clorox wipes” vendu 5.99$ sur walmart.com.