Voyages Virtuels : Première analyse computationnelle des habitudes de navigation sur OpenEdition
Introduction
Cette analyse computationnelle s’inscrit dans le cadre d’un travail de thèse au sein de l’Observatoire des usages du projet COMMONS. Son objectif est de documenter les pratiques de navigation des utilisateurs des plateformes sur OpenEdition afin de mieux comprendre les lecteurs et de fluidifier l’accès aux ressources.
Pour simplifier l’analyse initiale, nous nous concentrons sur une étude de cas restreinte pour 2024, portant sur deux revues et une collection de livres sur OpenEdition : La revue de la BNU, trois collections spécifiques de UGA Éditions (Éco topiques, Langues Gestes Paroles, et Carrefours des Idées), ainsi que la revue Hommes & Migrations.
L’étude vise à répondre à des questions générales telles que : « Existe-t-il des parcours de navigation typiques ? » Elle aborde également des questions spécifiques aux cas étudiés : Y a-t-il des différences significatives dans les schémas de navigation entre les trois cas ou sont-ils similaires ?
Pour mener à bien cette étude, il est essentiel de commencer par le traitement des données de navigation. La section suivante détaille les étapes nécessaires pour définir et créer des sessions de navigation à partir des logs1 collectés.
Données & Prétraitement
Données
L’analyse est basée sur les logs d’utilisation du mois d’octobre 2022, produits par les interactions des utilisateurs avec les plateformes et stockés sur les serveurs par le service données d’OpenEdition. Les logs suivent le format nginx :
$remote_addr – $remote_user [$time_local] “$request” $status $body_bytes_sent “$http_referer” “$http_user_agent” “$http_x_forwarded_for”;
La structure détaillée des logs est la suivante :
- remote_addr : L’adresse IP du client.
- remote_user : Le nom de l’utilisateur authentifié.
- time_local : L’heure locale à laquelle la requête a été reçue.
- request : La requête faite par le client (contient la page consultée)
- status : Le code de statut HTTP renvoyé par le serveur (par exemple, 200 pour OK ou 404 si jamais la ressource n’a pas été trouvée).
- body_bytes_sent : Le nombre d’octets envoyés au client en réponse à la requête.
- http_referer : L’URL de référence2, contenant l’URL de la page ayant lié à la page de la requête.
- http_user_agent : Informations sur le système d’exploitation et le navigateur.
- http_x_forwarded_for : L’en-tête HTTP permettant de voir l’ensemble de la chaîne d’adresses IP impliquées dans la requête, mais généralement vide dans notre cas.
Les fichiers logs sont séparés par plateforme :
- Books
- Journals
- Hypothèse
- Calenda
- Search-API
Le but est de construire des sessions de navigation utilisateurs à partir de ces logs afin de les analyser.
Prétraitement
Le prétraitement des données est effectué selon les étapes suivantes :
- Parsing des logs
- Détection de bots
- Nettoyage des lignes de logs serveurs
- Segmentation des sessions d’utilisations
1. Parsing des logs
La première étape consiste à découper les logs en morceaux significatifs, afin d’extraire les informations et les structurer dans des tableurs exploitables. Les fichiers logs sont souvent stockés sous forme compressée, nécessitant ainsi une extraction préalable pour obtenir une structure de données utilisable pour les étapes suivantes.
Le parseur effectue plusieurs actions cruciales :
– Extraction et décompression : il extrait les données à partir des fichiers compressés pour les rendre accessibles à l’analyse.
– Vérification de conformité : chaque ligne de log est vérifiée pour sa conformité en termes de structure et de contenu. La structure de chaque ligne doit correspondre au schéma défini précédemment. De plus, le contenu doit respecter les normes établies, telles que le format des adresses IP (soit IPV4, soit IPV6).
2. Détection de bots
L’objectif central de nos analyses étant de saisir les schémas de navigation humaine, il est crucial de détecter et écarter les bots3. Pour ce faire, nous nous appuyons principalement sur le champ “http_user_agent” des logs. Une liste exhaustive des bots est utilisée pour les détecter dans les logs.
Il est important de noter qu’une observation préliminaire a révélé que plus de 50 % du trafic sur OpenEdition est généré par des bots. En identifiant et en filtrant ces interactions, nous nous assurons que les données analysées représentent le comportement des utilisateurs humains, facilitant ainsi l’analyse et l’interprétation des résultats.
3. Nettoyage des logs
Après la détection des bots, il est nécessaire de nettoyer les logs en éliminant les lignes associées aux activités du serveur. Ces requêtes ne sont pas générées par des utilisateurs humains, mais par des scripts des serveurs4 d’OpenEdition.
Chaque ligne de log est soumise à une série de filtres pour déterminer si elle provient du côté serveur. En retirant ces entrées, nous nous assurons que seules les interactions réelles des utilisateurs sont prises en compte dans l’analyse, garantissant une représentation plus précise du comportement des utilisateurs et facilitant l’extraction de modèles significatifs.
4. Segmentation des sessions d’utilisations
L’objectif de cette étape est de regrouper les lignes de logs pour former des sessions d’utilisation sur les plateformes d’OpenEdition. Cette phase nécessite des ressources considérables en termes de mémoire et de puissance de calcul. Dans notre étude, une session est définie selon certains critères spécifiques :
Critères de regroupement :
– Même adresse IP
– Même ‘http_user_agent’
– Correspondance du référent (referer) de la ligne actuelle avec le lien de la ligne précédente
– Durée maximale entre deux requêtes successives ne dépassant pas un seuil prédéfini (si aucune correspondance avec le referer)
Ce processus de segmentation peut être représenté par le schéma suivant pour savoir si la ligne actuelle fait partie de la même session.
En appliquant ces critères, nous pouvons regrouper les interactions des utilisateurs en sessions distinctes, ce qui permet de commencer à analyser leur comportement.
Analyses des parcours de navigation
Le but de cette analyse est d’étudier le parcours de navigation des utilisateurs d’OpenEdition en termes de sites d’éditeurs. Cette analyse peut être décomposée en deux étapes principales :
- Cartographie des sites d’OpenEdition
- Analyse des formes de parcours de navigation
Cartographie des sites web
L’objectif de cette étape est de construire une cartographie des revues et des collections de livres hébergées par OpenEdition, afin d’obtenir une vue d’ensemble de la façon dont les utilisateurs naviguent entre les sites. Deux revues ou collections seront considérées comme d’autant plus proches qu’elles sont fréquemment consultées au cours d’une même session.
Pour ce faire, nous utilisons l’algorithme Word2Vec5 pour obtenir une représentation numérique de chaque site. Ces représentations numériques, sous forme de vecteurs, peuvent être visualisées comme de longs tableaux de nombres. Pour les représenter sur une carte, ces tableaux doivent être réduits à deux dimensions.
L’algorithme utilisé pour cette réduction est UMAP (Uniform Manifold Approximation and Projection)6, reconnu pour sa capacité à préserver les structures globales et locales des données. En utilisant UMAP, nous pouvons créer une carte qui montre la proximité relative des différents sites d’OpenEdition en fonction de leur consultation au cours des sessions de navigation.
Pour télécharger le fichier cliquer sur le lien ci-dessous:
Désormais, une session de navigation, jusqu’ici représentée comme une séquence de sites, peut être envisagée comme une série de tableaux numériques contenant des informations de proximité. Cependant, nous allons dépasser cette séquentialité et considérer ces tableaux numériques comme un ensemble de points dans un nuage de données. Ce nuage sera ensuite analysé, comme illustré dans le schéma ci-dessous :
Analyse de la forme des parcours de navigation
L’objectif de cette étape est d’explorer la forme des nuages de points obtenus lors de l’étape précédente. Nous allons étudier comment ces nuages de points sont organisés en les reliant progressivement et en observant quelles formes apparaissent et persistent le plus longtemps, selon la méthode de la persistent homology7 . Les formes sont ensuite regroupées à l’aide de l’algorithme DBSCAN8. Dans l’état actuel, avec le jeu de données de 2022, cette analyse révèle l’existence de quatre types distincts de navigations.
Profil n°1
Des sessions de navigations sur le même site web
Profil n°2
Des sessions de navigations courtes ou moyennes, navigation dans au moins deux sites
Profil n°3
Sessions de navigation longues avec des sites web moyennement proches
Profil n°4
Sessions de navigations complexes et longues contenant des sites avec des représentations lointaines.
Une fois que les types de navigation sont définis, nous pouvons examiner le pourcentage de chaque profil sur chaque site dans notre étude de cas :
Les proportions des profils semblent relativement similaires pour les trois sites ; le profil n°2 est notablement le plus fréquent, correspondant à des sessions de navigation de courte à moyenne en termes de requêtes et impliquant au moins deux sites différents. Cependant, il est aussi remarquable qu’il y ait peu de sessions de navigation complexes, comment peut-on expliquer cette différence ?
Discussion
Bien que notre analyse à partir des données d’octobre 2022 ait révélé quatre types distincts de parcours de navigation, ce travail est encore en cours et nécessite des ajustements méthodologiques pour parvenir à des conclusions plus robustes.
Étapes de l’analyse : nous avons débuté par la collecte et le prétraitement des données à partir des logs nginx, en extrayant les interactions des utilisateurs tout en filtrant les bots et les activités automatisées.
Ensuite, nous avons utilisé l’algorithme Word2Vec pour transformer les données de navigation en représentations numériques des sites, suivies d’une réduction dimensionnelle avec UMAP pour visualiser la proximité spatiale entre ces sites. Pour explorer les formes des parcours de navigation, nous avons calculé l’homologie de persistance afin d’identifier les motifs persistants et les avons regroupés avec DBSCAN pour classer les types de parcours de navigation observés.
Résultats observés : les résultats actuels offrent déjà des perspectives intéressantes sur les comportements des utilisateurs pour chaque type de session de navigation. Nous avons constaté une prévalence significative du profil n°2, caractérisé par des sessions impliquant plusieurs sites mais de courte à moyenne en termes de requêtes. Toutefois, il est également notable que les parcours de navigation complexes sont moins fréquents, suggérant une tendance générale vers des interactions directes avec les contenus disponibles sur OpenEdition.
Perspectives pour les futurs travaux : pour consolider nos observations, il sera crucial de réaliser une validation à plus long terme sur des périodes temporelles étendues. De plus, des raffinements analytiques sont nécessaires pour capturer des variations fines dans les parcours de navigation et explorer de nouvelles approches algorithmiques.
Une question plus générale qui se pose est de savoir si les sites similaires partagent des modèles de navigation utilisateur communs. Nous prévoyons de mener une analyse statistique approfondie pour évaluer la répartition de chaque type de navigation sur chaque site.
Références
– Castellano, G., Fanelli, A. M., & Torsello, M. A. (2007). Log Data Preparation for Mining Web Usage Patterns. *IADIS International Conference Applied Computing*. ⟨https://www.researchgate.net/publication/228947977_Log_Data_Preparation_for_Mining_Web_Usage_Patterns⟩
– Ester, M., Kriegel, H.-P., Sander, J., & Xu, X. (1996). A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise. *Knowledge Discovery and Data Mining*. ⟨https://api.semanticscholar.org/CorpusID:355163⟩
– Kaabachi, B., & Dumas Primbault, S. (2023). A Topological Data Analysis of Navigation Paths within Digital Libraries. *Computational Humanities Research 2023, Dec 2023, Paris, France*. ⟨https://hal.science/hal-04301567v1/document⟩
– Koplik, G. (2019, October 29). Persistent Homology: A Non-Mathy Introduction with Examples. *Towards Data Science*. ⟨https://towardsdatascience.com/persistent-homology-with-examples-1974d4b9c3d0⟩
– McInnes, L., & Healy, J. (2018). UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction. *ArXiv*. ⟨https://api.semanticscholar.org/CorpusID:3641284⟩
– Mikolov, T., Chen, K., Corrado, G. S., & Dean, J. (2013). Efficient Estimation of Word Representations in Vector Space. *International Conference on Learning Representations*. ⟨https://api.semanticscholar.org/CorpusID:5959482⟩
– Otter, N., Porter, M. A., Tillmann, U., et al. (2017). A roadmap for the computation of persistent homology. *EPJ Data Science*. ⟨https://doi.org/10.1140/epjds/s13688-017-0109-5⟩
- Les logs sont des fichiers ou des enregistrements numériques qui capturent les activités et les interactions des utilisateurs avec un site web. [↩]
- Un referer (ou referrer) est l’URL de la page web précédemment visitée qui a dirigé un utilisateur vers la page web actuelle. [↩]
- Ici un bot représente un programme automatisé qui parcourt le web pour collecter, analyser et indexer les informations des sites web. [↩]
- Un script serveur s’exécute automatiquement lorsqu’un utilisateur accède à une page web dynamique, générant du contenu personnalisé en fonction des données du serveur, comme un script PHP qui affiche un message de bienvenue avec le nom de l’utilisateur récupéré d’une base de données. Ce n’est donc pas une requête faite explicitement par l’utilisateur et doit donc être écartée. [↩]
- Word2vec est un algorithme qui transforme des mots en vecteurs dans un espace mathématique. Dans notre étude, nous avons appliqué cette méthode en considérant les sites web comme des mots, les sessions de navigation comme des phrases, et toutes ces sessions comme un corpus. Afin d’avoir une représentation globale, la taille de la fenêtre choisie correspond à la longueur maximale d’une séquence de navigation. Nous avons opté pour le modèle Skip Gram et l’avons entraîné sur 40 cycles d’apprentissage pour obtenir des représentations efficaces. [↩]
- UMAP (Uniform Manifold Approximation and Projection) est un algorithme de réduction de dimension. Dans notre cas spécifique, nous avons choisi d’utiliser la similarité cosinus pour mesurer les relations entre les points de données. En fixant une distance minimale de 0,001 et en sélectionnant 3 voisins, l’algorithme crée des clusters plus précis localement dans l’espace réduit. Le modèle a été entraîné sur 500 itérations afin d’optimiser cette représentation spécifique des données, facilitant ainsi leur visualisation et leur compréhension. [↩]
- La méthode consiste à ajuster progressivement le diamètre d’un cercle autour de chaque point et à observer quels points se connectent. En augmentant le rayon, certains trous vont apparaître puis disparaître. Ces trous sont importants car ils caractérisent la forme des nuages de points. On obtient ainsi ce qu’on appelle un diagramme de persistance, qui indique à quel rayon un trou apparaît et à quel moment il disparaît. Ensuite, nous calculons l’entropie de la persistance (la durée de vie d’un trou donc la différence entre le rayon quand il disparaît moins le rayon quand il apparaît) de ces trous dans chaque dimension pour obtenir une représentation vectorielle de la forme du nuage. [↩]
- L’algorithme DBSCAN regroupe des points proches entre eux en clusters basés sur leur densité, en définissant les points denses comme des noyaux, en étendant les clusters avec les points voisins, et en marquant les points isolés ou de faible densité comme des anomalies. L’algorithme est appliqué sur les représentations vectorielles obtenues avec la “persistent homology”. [↩]
OpenEdition vous propose de citer ce billet de la manière suivante :
aabid (11 juillet 2024). Voyages Virtuels : Première analyse computationnelle des habitudes de navigation sur OpenEdition. OpenEdition Lab. Consulté le 11 octobre 2024 à l’adresse https://doi.org/10.58079/1209i