Réaliser une analyse des entités et des sentiments avec son propre crawler

Réaliser une analyse des entités et des sentiments avec son propre crawler

Proposées par les API de Langage Naturel de Google Cloud, les analyses des entités et des sentiments permettent de classifier des termes et d’extraire un sentiment général. Daté de 2015, un brevet de Google intitulé « Classement des résultats de recherche basés sur les métriques des entités » démontre l’intérêt de l’utiliser dans nos actions SEO.

Officiellement lancée en septembre 2017, l’API Google Cloud sur le Langage Naturel permet de classifier facilement et rapidement un contenu, et d’en analyser les sentiments à partir de n’importe quelle source de données (emails, Twitter, etc.).

Dans notre cas, c’est le contenu disponible au travers des tags title et description, et du contenu éditorial qui nous intéresse. Avant de vous présenter le crawler fait maison (que vous pouvez évidemment télécharger pour l’utiliser, l’améliorer, etc.), étudions de plus près le brevet de Google afin de comprendre comment ces analyses peuvent influencer nos actions de SEO.

Traitement automatique du langage naturel

Le traitement automatique du langage naturel mêle la linguistique, l’informatique et, bien entendu, l’intelligence artificielle au travers du machine learning.

Plusieurs champs de recherche lui sont dédiés, qui ne vous sont certainement pas inconnus :

  • Syntaxe (lemmatisation, etc.).
  • Sémantique (génération automatique de texte, correction orthographique, etc.).
  • Traitement du signal (reconnaissance automatique de la parole, etc.).
  • Extraction d’informations (reconnaissance d’entités nommées, analyse de sentiments, etc.).

Classification des résultats de recherche en fonction des entités

Disponible sur le site de Google dédié aux brevets, le document sur le Classement des résultats de recherche par rapport aux entités est ainsi résumé :

Des méthodes, des systèmes et des supports lisibles par ordinateur sont fournis pour le classement des résultats de recherche. Un système de recherche peut déterminer plusieurs paramètres en fonction des résultats de recherche. Le système de recherche peut déterminer des poids pour les métriques, les poids étant basés en partie sur le type d’entité inclus dans la recherche. Le système de recherche peut déterminer un score en combinant les métriques et les poids. Le système de recherche peut classer les résultats de recherche en fonction du score.

Toujours selon le brevet, une entité est une chose ou un concept qui est singulier, unique, bien défini et distinguable.

Dans certaines implémentations, les auteurs soulignent que le système utilise quatre mesures particulières : une mesure de parenté, une mesure de type entité notable, une mesure de contribution et une mesure de valeur.

Mesure de parenté

Elle fait référence à l’idée selon laquelle une entité est liée à un autre sujet, un mot-clé ou encore une autre entité.  Pour cela, leur système doit apprendre quelles entités sont en relation avec les autres et quelles sont leurs caractéristiques par le biais des cooccurrences. Les auteurs définissent ce processus comme suit :

[…] lorsque la requête de recherche contient la référence de l’entité « Empire State Building », qui est déterminée comme étant du type « Skyscraper », la cooccurrence du texte « Empire State Building » et « Skyscraper » dans les pages Web peut déterminer la métrique de l’entité en question.

Mesure de type entité notable

Elle fait référence à l’importance d’une entité par rapport à une requête ou à une autre entité. Google établit la mesure en comparant la popularité globale de l’entité (le nombre de liens, les mentions sociales, etc.) et en divisant cela par la valeur du type d’entité elle-même.

Mesure de contribution

Elle est basée sur des points d’influence externes tels que les revues, les classements de notoriété, etc. et peut être pondérée de telle sorte que des types spécifiques de mesures de contribution (comme les revues) aient plus d’impact. Selon moi, la pondération est similaire à celle utilisée pour la notation des liens externes.

Mesure de valeur

Elle correspond à la valeur perçue d’une catégorie. Selon les auteurs :

La mesure de valeur est basée sur les récompenses et les prix d’une entité. Par exemple, un film peut avoir reçu une variété de prix tels que des Oscars et des Golden Globes, chacun ayant une valeur particulière. Dans certaines implémentations, la métrique du prix est pondérée de telle sorte que les valeurs les plus élevées contribuent le plus fortement à la métrique.

Traduire les informations du brevet en actions SEO

Bien qu’elle soit passionnante, la lecture des brevets de Google est toujours soumise à notre libre arbitre : est-ce que oui ou non la probabilité que cette recherche soit utilisée dans le fonctionnement de l’algorithme est forte ?

Lorsque vous optimisez une page (idéalement à partir de vos données de logs), vous cherchez à démontrer sa légitimité vis-à-vis des pages concurrentes et vous cherchez naturellement à augmenter sa valeur. C’est là tout l’intérêt de l’analyse des entités : comment utiliser leur classification pour aller au plus proche de la compréhension du moteur. Par exemple, les entités peuvent aider à optimiser une arborescence.

Construire son propre crawler

Afin d’automatiser l’ensemble de l’analyse, la construction d’un crawler maison s’imposait. Ce dernier récupère les tags title, description ainsi que le contenu apparaissant dans le body (il y a ici pas mal de bruit malheureusement mais tous les sites n’étant pas conçus de la même façon, il est très difficile d’isoler le contenu éditorial uniquement).

La première partie du crawler est issue du site Data Blogger. La suite du code (Python) a été réalisée par Pierre, Data Scientist NLP (ainsi que le détail de la procédure décrite ci-après).

Pour accéder au crawler complet, avec l’analyse des entités et des sentiments inclus, c’est ici que ça se passe : télécharger l’archive depuis mon Drive.

Récupérer le répertoire « crawler »

Ce dossier contient tout le code et les fonctions nécessaires au bon fonctionnement de notre crawler. La conception de ce crawler a été pensé pour pouvoir automatiser l’extraction d’entités et l’analyse de sentiment sur des pages web.

Description de l’organisation des fichiers et des scripts

Organisation du crawler

Fichiers nécessaires pour crawler :
  • __init__.py : Sert pour un import.
  • items.py : Contient deux classes qui gèrent les items.
  • middlewares.py : Sert pour la création du spider.
  • pipelines.py : Enleve le bruit du code HTML.
  • settings.py : Mise en place du spider.
  • xml2xlsx.py : Extrait des informations d’un fichiers xml pour les stocker dans un fichier .xlsx.
  • links.py : Stocke dans une liste les liens internes du site.
  • spiders/spiders.py : Les deux classes pour l’exécution du spider.
Fichiers nécessaires pour l’analyse de contenu :
  • append_df_to_excel.py : Ajouter le contenu d’un Dataframe dans un fichier xlsx.
  • content_analysis.py : Sert à l’analyse des sentiments et l’extraction d’entités.
  • apikey.json : Utile pour utiliser l’API Google cloud natural (attention, ici vous devrez indiquer vos propres identifiants Google Cloud).
Stocker les résultats :
  • Dossier data : Contiendra le résultat du crawl dans un fichier .xlsx.
Fichier nécessaire pour lancer l’application :
  • main.py : Script principal qui effectue tout le traitement nécessaires pour ressortir un fichier .xlsx contenant les résultats.

Procédure d’utilisation du crawler

  • Téléchargement de l’archive crawler
  • Décompresser l’archive
  • Ouvrir le terminal et se placer dans le répertoire corpus :

cd crawler/corpus/corpus

  • Afin de pouvoir utiliser la fonctionnalité d’analyse de contenu, tapez, dans le terminal, les commandes suivantes (attention à ne pas copier coller car les guillemets ne sont pas les mêmes) :

pip3 install –upgrade google-cloud-language

export GOOGLE_APPLICATION_CREDENTIALS=”apikey.json”

Si rien ne se passe, alors tout va bien ! Il suffit de passer à l’étape suivante 🙂

  • Lancer le programme avec la commande :

python3 main.py

  • Entrer l’url du site à crawler. Celle-ci doit être de la forme :

http[s]://[www.]exemple_site.[fr | com | net | org]

  • Laisser le programme tourner jusqu’à obtenir ceci dans le terminal :

Procédure crawler

Avant de choisir si vous souhaitez faire une analyse de contenu ou non, vous pouvez vérifier dans le dossier data qu’un fichier .xlsx a bien été créé avec le résultat du crawl.

Procédure crawler 2

La forme du fichier Excel est la suivante :

Procédure crawler 3

  • Vous devez choisir sur quel lot de données effectuer l’analyse. Une fois, votre choix fait entre ‘title’, ‘body’, ‘metadescription’, une nouvelle fenêtre devrait s’afficher. Vous pourrez alors choisir les liens sur lesquels l’analyse de contenu doit être faite.

Procédure crawler 4

  • Une nouvelle fenêtre s’ouvre, vous devez confirmer à nouveau :

L’analyse va nécessiter plus ou moins de temps selon le nombre de liens sélectionnés (en moyenne 1 minute).

  • A la fin de l’exécution la fenêtre suivante s’affichera :

Procédure crawler 6

  • Appuyer sur ‘OK’.

Procédure crawler 7

  • L’analyse de contenu se trouve alors dans le même fichier Excel précédemment créé (une analyse de page dans une feuille).

La magnitude (A2) indique la force globale de l’émotion (positive et négative) dans le texte donné, entre 0,0 et +inf. Contrairement au score, la magnitude n’est pas normalisée ; chaque expression d’émotion dans le texte (à la fois positive et négative) contribue à la magnitude du texte (de sorte que les blocs de texte plus longs peuvent avoir des magnitudes plus grandes).

Le terme « salience » fait référence à l’importance ou la pertinence de cette entité par rapport à l’ensemble du texte du document. Cette note peut faciliter la recherche et le résumé de l’information en donnant la priorité aux entités pertinentes. Les notes plus proches de 0,0 sont moins importantes, tandis que les notes plus proches de 1,0 sont très importantes.

Désormais, vous disposez d’une bonne base pour effectuer vos analyses (et n’hésitez pas à faire part de vos expériences dans les commentaires).

Laisser un commentaire

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

Image recognition
Up Next:

Travailler une technique SEO avec Tensorflow

Travailler une technique SEO avec Tensorflow