title: Les 100 premiers mots-clés recherchés par les utilisateurs d'AOL slug: les-100-premiers-mots-cles-recherches-par-les-utilisateurs-d-aol date: 2006-08-09 08:49:35 type: post vignette: images/logos/aol_data.png contextual_title1: Réflexions sur les conférences de geeks contextual_url1: 20090327-reflexions-sur-les-conferences-de-geeks contextual_title2: Son propre TinyURL en Python et HTML5 avec webpy contextual_url2: 20090221-son-propre-tinyurl-en-python-et-html5-avec-webpy contextual_title3: Analyse des données utilisateur d'AOL : suite et fin contextual_url3: 20060814-analyse-des-donnees-utilisateur-d-aol-suite-et-fin
Vous n'êtes pas sans savoir que des données reatives aux utilisateurs d'AOL ont été mises en ligne dernièrement (version anglaise, je pense que les serveurs sont plus régulièrement mis à jour si vous voulez récupérer les données). Voici le script et les 100 premiers mots-clés de recherche réalisées par ces utilisateurs. Attention les données n'ont pas été filtrées donc ce post peut contenir des mots heurtant la sensibilité des plus jeunes lecteurs.
Un site est déjà en ligne pour fouiller dans toutes ces données mais je voulais connaître les meilleurs mots-clés.
freq = {} for i in range(1, 11): if i in range(1, 10): i = '0'+str(i) for line in open('user-ct-test-collection-'+str(i)+'.txt'): for word in line.split('\t')[1].split(): if len(word) >= 3: try: freq[word] += 1 except KeyError: freq[word] = 1 total = float(sum(freq.values())) items = freq.items() items.sort(lambda a, b: -cmp(a[1], b[1])) for word, count in items[:100]: print count, word, round(count/total*100., 2)
Les résultats sont dans l'ordre décroissant, chaque ligne correspond à position. occurences, mot-clé, taux d'apparition
Des commentaires sur ces résultats ce soir, faut que j'aille bosser là ;-). La pause déjeuner devrait suffire.
On remarque déjà que les 3 premiers (the, for et and) sont à exclure... ou pas. Le and est probablement utilisé en tant qu'opérateur logique mais le the par exemple est un bon indicateur de l'utilisation des articles dans les moteurs de recherche. Il faut donc peut-être se tourner vers une référencement avec article et non plus par suite de mots-clés (d'où la pertinence d'avoir un contexte).
Ensuite le champ lexical de la pornographie est très présent mais beaucoup moins que ce que je pensais. Hônnetement, je m'attendais à sex dans le top 5. C'est presque rassurant (bon je me suis pas risqué à faire le total pour rester optimiste).
Ce qui est étonnant aussi c'est l'absence du mot mp3 des recherches. Je ne sais pas si c'est par peur de la RIAA, qui sait ? Les personnes utilisant le moteur de recherche d'AOL sont sûrement très respectueuses des lois (ou alors ont compris qu'il existait d'autres outils pour ça).
Les recherches sont un bon indicateur des tendances avec myspace qui a le vent en poupe, par contre il n'y a aucune star qui arrive à entrer dans le top 100 (bon à part John...). On remarque aussi qu'il y a beaucoup de recherches effectuées en utilisant en mot-clé le nom d'un autre moteur de recherche (j'avoue ne pas trop comprendre). De même, les mots-clés http, www ou com montrent l'ignorance de leur signification par les chercheurs.
Je trouve que l'on retrouve aussi beaucoup de localités présentes dans ces recherches, il faudrait pouvoir comparer à des données datant de quelques années mais c'est peut-être un nouvel aspect du web (ce qui m'étonne à moitié sinon personne n'aurait lancé la cartographie en ligne).
On dit souvent que les 3 premiers liens d'un moteur de recherche sont les seuls suivis. Je voulais vérifier si cela était vrai pour ces données, c'est pas tous les jours qu'on a cette d'aubaine !
nofollowed, followed, first_rank, second_rank, third_rank = 0, 0, 0, 0, 0 for i in range(1, 11): if i in range(1, 10): i = '0'+str(i) for line in open('user-ct-test-collection-'+str(i)+'.txt'): #for line in open('user-ct-test-collection-01.txt'): rank = line.split('\t')[3] if rank: followed += 1 if rank == '1': first_rank += 1 elif rank == '2': second_rank += 1 elif rank == '3': third_rank += 1 else: nofollowed += 1 total = float(nofollowed + followed) print 'Total', total, round(total/total*100., 2), '%' print 'Non suivi', nofollowed, round(nofollowed/total*100., 2), '%' print 'Suivi', followed, round(followed/total*100., 2), '%' print 'Premier suivi', first_rank, round(first_rank/total*100., 2), '% soit', round(first_rank/float(followed)*100., 2), '% des liens suivis' print 'Deuxieme suivi', second_rank, round(second_rank/total*100., 2), '% soit', round(second_rank/float(followed)*100., 2), '% des liens suivis' print 'Troisieme suivi', third_rank, round(third_rank/total*100., 2), '% soit', round(third_rank/float(followed)*100., 2), '% des liens suivis'
Chaque ligne correspond à : Type, nombre, taux par rapport au total
16946938
46.57 %19442639
53.43 %8220278
22.59 % soit 42.28 % des liens suivis2316738
6.37 % soit 11.92 % des liens suivis1640751
4.51 % soit 8.44 % des liens suivisSur 36 millions de recherches, seules 54% sont considérées comme étant pertinentes par l'utilisateur. C'est énormément peu (il serait très intéressant d'avoir les données de Google pour comparer la recherche est faite par Google, encore plus étonnant !). Et ensuite sur ces 54%, il vaut en effet mieux être placé en tête de peloton mais moins que ce que je pensais, il reste tout de même 40% des liens suivis qui le sont par les résultats inférieurs. Quoiqu'il en soit, la lutte pour la première place est justifiée !
Les données sont celles des utilisateurs du moteur de recherche d'AOL et je ne pense pas que les recherches effectuées sur Google par exemple soient de même nature, surtout en ce qui concerne les recherches fructueuses. Ces résultats sont bruts et il serait très intéressant de les affiner davantage en fonction d'un secteur d'activité donné. Est-ce que tel type d'utilisateur utilise plusieurs mots-clés ? Et suit-il le premier lien ? etc.
Si vous ne donnez pas dans le p0rn, il peut-être intéressant de référencer un site de « new lyrics for free ». On comprend aussi pourquoi un moteur de recherche a toujours l'avantage sur ses concurrents en analysant ses recherches. Par exemple au sujet du nombre important de localités recherchées, il est évident que Google a fait une étude poussée là-dessus avant de s'investir dans GoogleMap et devant le nombre de recherches ils étaient certains de la future popularité de leur service.
Pour véritablement arriver à des conclusions solides, il faudrait les données de plusieurs moteurs de recherche réparties sur plusieurs dates. C'est impossible à avoir, il n'y a donc actuellement que les moteurs de recherche qui peuvent se précipiter sur ces données pour identifier les différents profils d'utilisateurs ;-).
Conclusion personnelle : je crois que l'aspect scientifique me manque un peu en ce moment... (sans compter le python).
[edit du 15/08] : Suite de l'analyse des données sur ce site.