Google Search Console Clustering

Depuis TechSEOBoost, où j’ai présenté mon générateur de texte basé sur GPT-2 et Google Colab, j’ai vu passer de nombreux projets innovants basés sur les même technologies, notamment avec la Google Search Console.

Je vais donc reprendre le code Open Source de JR OAkes (sorti ce début février 2020) qui permet de catégoriser les requêtes de Google Search Console, d’agréger les données par catégorie et surtout d’utiliser BERT pour trouver des catégories sémantiquement liées.

Ce que j’aime dans cette démarche, c’est que le modèle est expliqué et reproductible, par contre, j’avais envie d’aller plus loin en ajoutant un connecteur Search Console pour travailler avec ses propres données mais surtout de permettre un mode multilingue ( Français, Anglais, Italien, Néerlandais, Allemand, Portuguais ) et ainsi catégoriser quelque soit la langue.

Envie de tester , c’est ici et bien sûr vous pouvez encore l’améliorer
https://colab.research.google.com/drive/14JC2uQniiVDNAUpVEjdNTyK7rmepwjWB

Point de départ

L’article original se trouve ici : https://searchengineland.com/using-the-apriori-algorithm-and-bert-embeddings-to-visualize-change-in-search-console-rankings-328702. Il a été écrit par JR Oakes.

Tout son travail se base sur l’algorithme Apriori qui a été proposé par Rakesh Agrawal et Ramakrishnan Sikrant en 1994 dans le domaine de l’apprentissage des règles d’association. C’est un algorithme qui sert à reconnaître des propriétés qui reviennent souvent dans un ensemble de données et ainsi d’en déduire une catégorisation.
Par exemple, un site ecommerce peut utiliser cet algorithme pour trouver des produits qui sont souvent achetés ensemble.

L’originalité trouvée par l’auteur est que plutôt que de s’intéresser aux transactions, il va le faire fonctionner sur des requêtes issus de la la Search Console.

Ensuite, JR oakes utilise les meilleurs technologies du moment avec Spacy, HuggingFace et bien sûr BERT que je vais détailler après.

Un petit mot sur Google Colab

Google Colab est un service cloud, offert par Google basé sur Jupyter Notebook qui est destiné à la formation mais aussi à la recherche. Cette plateforme vous permet d’entraîner des modèles de Machine Learning directement dans le cloud sans avoir à installer quoi que ce soit sur votre ordinateur.

Si vous avez cliqué sur lien que je vous ai donné dans l’article, vous ne pouvez rien exécuter par défaut !

La première chose est de l’ouvrir en “mode brouillon” en cliquant ici :

Ouvrir en mode brouillon

Ensuite vous devez exécuter chacune des étapes dans l’ordre en cliquant sur le bouton “Lecture” et en complétant les formulaires que je vais vous expliquer..

Vous êtes prêt(e)s, c’est parti.

Avant de démarrer , un petit mot sur Hugging face

Créé il y a plus d’un an sur la plateforme GitHub, la startup Hugging Face a lancé le projet «Transformers» qui vise à créer une communauté autour d’une librairie dédiée au NLP. A ce jour, il y plus de de 250 contributeurs qui alimentent ce projet très ambitieux déjà utilisé par plus de 1 000 entreprises très connues.

A l’heure où j’écris ces lignes, tous les modèles se trouvent ici https://huggingface.co/models mais le moteur de recherche par tags ne fonctionne pas très bien , donc il faut trouver sa langue dans le nom du modèle. Ici, j’ai testé avec CamemBERT et FlauBERT, deux modèles très performants pour le français.

Avant de démarrer le Jupyter Notebook, vous avez juste à écrire le nom de votre modèle et choisir votre langue.

Choix du modèle

Vous êtes prêts, allons chercher nos données avec l’API Google Search Console.

Créer son accès à l’API Google Search Console

Pour pouvoir récupérer automatiquement vos données, vous allez devoir vous créer un accès.

Si vous suivez bien ces étapes, vous allez obtenir les informations nécessaires..

1) Créer un nouveau projet ou utilisez un projet existant dans la console des API de Google à l’adresse suivante: https://code.google.com/apis/console

2) Cliquez sur Library et Vérifier que vous avez bien activer l’API Google Search Console, si cela n’est pas le cas, cliquez sur “Enable” pour activer l’API : https://console.developers.google.com/apis/library

2) Choisissez « Credentials » dans le menu de gauche.

3) Choisissez « Create Credentials ».

4) Générer une clé API pour votre application.

5) Notez votre ID client, votre secret client pour les copier plus tard dans la cellule suivante

Si vous cliquez sur ce bouton, un lien sera généré, ensuite il suffit de se laisser guider entre les étapes d’authentification.

Une fois que vous avez autorisé l’application, vous allez obtenir un code qu’il faut venir copier/coller dans le Notebook, et si c’est réussi, le sélecteur de projets apparaît.

Avec Google Colab, vous pouvez créer des formulaires très évolués et si vous utilisez le formulaire “Choose your project”, le code va générer un sélecteur avec l’ensemble de vos projets dans la Search Console.

Ainsi vous pouvez tester très facilement sur le projet que vous souhaitez.
C’est à dire qu’une fois que vous avez créé vos accès, vous avez un outil prêt à l’emploi.

Récupération et préparation des données

Ensuite les formulaires suivant “Get your data” et “Prepare Comparative data” vous permettent de récupérer les données au format attendu par la librairie Python.

Si vous indiquez une période de 30 jours, le script va couper les données en deux et faire la comparaison entre les 15 derniers jours et les 15 précédents derniers jours.

Avant le code source fonctionnait avec des données par défaut, désormais il prépare vos données dans le bon format pour la suite, j’ai aussi géré le cas tordu des accents.

Nos formations data science pour le SEO

Vous souhaitez accélérer votre apprentissage de la manipulation de données, machine learning, programmation R / Python ? Découvrez la formation DATA SEO LABS Niveau 1.

Testons la librairie QueryCat pour catégoriser les requêtes

La fonction querycat.Categorize prend les arguments suivants:
– Premier argument : Un dataframe Pandas qui comprend au moins une colonne avec les requêtes.
– col : Le nom de la colonne qui contient les requêtes
– alg : L’algorithme à utiliser : apriori (Algorithme Apriori), ou fpgrowth
– min_support : Le nombre de fois où une requête doit apparaître pour être inclus.

Après son exécution, le code affiche le nombre de catégories trouvées, ainsi que la fréquence des requêtes dans chaque catégorie.

Voici un retour :

Ici, il a identifié 15 catégories

Ensuite, il existe un formulaire pour voir ses données ‘Show original data’ pour voir les catégories ajoutés à chaque requête et vous pouvez sauver le dataset pour l’exploiter dans Excel avec cette ligne de code :

catz.df.to_csv('filename.csv', index=False) 

Et enfin un formulaire “Make use of original data” qui permet de calculer les différences à la hausse ou à la baisse entre les deux périodes.

Ensuite on arrive à la partie la plus intéressante avec BERT

BERT est donc inclus dans la librairie Hugging Face expliqué au début.
Cette librairie est elle-même incluse dans la fonction querycat.BERTSim qui permet d’identifier rapidement les catégories les plus proches sémantiquement parlant.

Pour initialiser la classe BERTSim, vous devez spécifier le modèle à utiliser, dans le Google Colab mais normalement vous l’avez défini dès le début si vous avez bien suivi cet article.

Ensuite il y a surtout deux fonctions très utiles :

  • une fonction get_similar_df qui calcule le score de similarité entre les catégories
  • une fonction diff_plot qui permet de visualiser le résultat dans un espace en 2D

Calculer un score de Similarité

La fonction get_similar_df prend une seul paramètre en entrée qui correspond à une catégorie, et retourne les catégories les plus similaires à ce terme, avec un score de similarité de 0 à 1 en se basant sur un cosinus de similarité pour les connaisseurs.

Exemple où BERT comprend le rapprochement entre croisière, voyage et itinéraire

Visualisez les résultats

En faisant appel à la fonction diff_plot, vous visualisez vos catégories dans un espace sémantique bidimensionnel, avec des informations sur les variations de clics :

  • le vert pour une variation positive
  • le rouge pour une variation négative
  • la taille des bulles correspond à l’ampleur du changement

Avec cette fonction, vous pouvez tester des algorithmes connusde réduction de dimension ( tnse, umap, pca ) pour passer d’un embeddings à 768 dimensions ou plus à seulement deux dimensions.

Conclusion

Désormais, vous avez une solution clé en main :

  • pour catégoriser les requêtes de la Search Console dans 6 langues différentes
  • de le faire sur la période que vous souhaitez ( la seule limite est l’historique de la Search Console limité à 18 mois )
  • pour trouver les catégories sémantiquement proches avec BERT
  • pour visualiser le résultat et relancer les calculs chaque semaine/mois pour suivre les évolutions.

Rendez-vous dans le slack de DATA SEO LABS, si vous avez des questions.

Laisser un commentaire