Qu’est ce que le spam sur le web ?

Spam_with_cans

Qu’est ce que le spam sur le web ?

Voilà un article qui est à la fois récent et vieux. Vieux, car il s'agit d'une version largement remaniée d'un de mes premiers articles de blog (en 2008, sur spoonylife), et récent car outre sa réécriture, il prend un nouveau sens au regard d'évènements à venir (que de mystère... n'est-ce pas ?).

Bref, dans cet article je vais vous parler d'une étude scientifique réalisée il y a maintenant plusieurs années (en 2006) et publiée (en partie) dans l'article suivant :

Alexandros Ntoulas, Marc Najork, Mark Manasse, Dennis Fetterly: Detecting spam web pages through content analysis. WWW 2006: 83-92. 2006.

Pour les plus motivés, l'article et les slides de l'époque se trouvent ici : http://www2006.org/programme/item.php?id=3052

Depuis le temps que les moteurs (et surtout google, il faut bien le dire) luttent contre le webspam, de très nombreuses approches différentes ont été proposées par les chercheurs pour mener la vie dure à nos amis BH. Parmi ces approches on trouve par exemple le Trustrank (théorisé par Gyongyi, Garcia-Molina et Pedersen [2] en 2004, ce n'est pas ce que la plupart des gens appellent le Trustrank, je laisse Laurent nous en parler en commentaires ;)), l'analyse des liens et l'utilisation de classifieurs (par Becchetti, Castillo, Donato, Baeza-yates et Leonardi [1]), la détection et le déclassement de structures abusives (par Largillier et moi [4] et [5]) et aussi, et c'est le sujet de ce billet, le classifieur basé sur des critères in text de Ntoulas, Najork, Manasse et Fetterly [3].

Définir formellement le webspam c'est difficile, et ce que l'on dit généralement c'est «Web spam, you know it when you see it ». Ca sonne comme une blague, mais c'est cette définition qui va servir : on va utiliser le jugement humain pour constituer une base de connaissances sur le spam. Pour cela, il faut stocker une très grande quantité de pages web, puis en tirer au hasard au sein de ces pages un grand nombre, par exemple quelques dizaine de milliers, pour créer ce que l'on appelle un dataset. Ensuite, on va demander à des humains de noter la qualité des pages, pour en trouver qui sont du spam, et au final, chaque page de notre dataset va être catégorisée spam ou non-spam. Cette méthode de catégorisation d'un dataset est celle qui est utilisée dans l'article de Ntoulas et al., sur environ 18000 pages.

Une deuxième étape est alors d'extraire les caractéristiques du dataset pour déterminer ce qui caractérise le spam et qui est détectable algorithmiquement. Par exemple, on apprend dans cette étude (datant de 2006) que 70% des sites en .biz sont des sites spammy tandis que a peine 5% des sites en .org en sont et 0% des sites en .edu. On y voit également que les rois du spam sont les français et les allemands.

Le cœur de leur article est sur les critères in text qui permettent de classifier efficacement des pages web selon leur « spamicity ». Quelle est la méthodologie ? Elle est très simple. Imaginons que je pense que le nombre de mots dans le <title> est discriminant pour le spam. Ce que je dois faire (et qu’ils on fait, la figure provient de leurs slides de présentation) est de tracer la courbe suivante, qui donne la proportion de pages qui contient un certain nombre de mots dans le titre, corrélé (courbe violette) par la proportion de spam qui correspond.

bouououh du spam!

Avec cette courbe, on voit alors que les pages qui ont un grand nombre de mots dans le titre ont une forte probabilité d'être du spam (par exemple probabilité 83% avec un titre de 45 mots, alors que la probabilité d'être du spam est de 1% pour 5 mots dans le titre).
Les auteurs de l'article ont ainsi passés de nombreux critères possibles en revue pour en retenir de nombreux dont :

  • Taille de la page : une grande page c'est toujours un drapeau rouge a soulever.
  • Nombre de points, tirets et autres séparateurs dans l'URL : l'idée est qu'une page de spam a une URL généré automatiquement et qui contient les mots clés séparés brutalement.
  • Longueur du nom de domaine : un long domaine c'est forcément louche car généralement on choisit un acronyme ou une courte suite de mots.
  • Nombre de mots dans la page : une page vide ou trop pleine ? Bizarre, non ?
  • Nombre de mots dans le titre : comme son nom l'indique
  • Fraction du texte qui est du texte d'ancre de lien : si tous les mots de la page sont des liens, on a sans doute une page de spam qui fait abusivement des liens.
  • Longueur moyenne des mots : dans un texte standard, les mots apparaissent avec certaines probabilités, par conséquent les mots ont une longueur moyenne particulière. Un texte artificiellement généré est souvent déviant car la présence de certains mots est renforcée.
  • Rapport de compression, rapport contenu/contenant : quelle est la taille de la page compressée par rapport à sa version normale ? Quelle est la proportion de code par rapport au réel contenu ?

Il y a bien d'autres critères, mais je ne vais pas tous les lister ici, je vous renvoie à la lecture de l'article pour en savoir plus. Une fois ces critères mis au point, la suite du processus consiste à faire un arbre de décision qui va permettre de décider si une page est du spam ou non. J'ai dessiné dans la figure suivante un exemple bidon qui montre l'idée d'un tel arbre de décision. Il suffit ensuite d'appliquer les critères qu'on trouve dans l'arbre jusqu’à une feuille spam ou non-spam.

arbre de decision

Avec cette approche, les auteurs annoncent qu'ils identifient correctement 86% du spam de leur échantillon comme tel, et 99% du non-spam comme étant légitime. Les chiffres paraissent plutôt flatteurs pour une méthode très simple, mais qui nécessite un tuning très fin à la main. Il y a cinq ans je disais que la méthode n'était pas super applicable, mais bien sur maintenant les infrastructures permettent assez facilement de la mettre en œuvre, et on obtiendrait alors ce qu'un moteur appellerait des filtres.

En résumé, cette approche permet de connaitre ce qui est considéré comme du spam ou du contenu de faible qualité par des quality raters. Cette approche permet de créer des filtres au niveau du moteur de recherche. Et enfin, les résultats d'une telle étude permettent aux SEO de comprendre ce qu'il ne faut pas faire.

Le seul souci ? L'étude date de 2006, et même si les résultats sont toujours utiles (car peu de choses ont substantiellement changées), il faudrait réellement les remettre à jour, pour intégrer des nouveaux critères et pour tuner les anciens. Et cette remise à jour, je vous en parlerai très prochainement.

[1] Becchetti, L., Castillo, C., Donato, D., Baeza-YATES, R., and Leonardi, S. 2008. Link analysis for Web spam detection. ACM Trans. Web 2, 1 (Feb. 2008 ), 1-42.
[2] Zoltán Gyöngyi, Hector Garcia-Molina, Jan Pedersen. Combating Web Spam with TrustRank. 30th International Conference on Very Large Data Bases (VLDB), Toronto, Ontario, Canada, 2004.
[3] Alexandros Ntoulas, Marc Najork, Mark Manasse, and Dennis Fetterly. Detecting Spam Web Pages Through Content Analysis. 15th International World Wide Web Conference (May 2006), pages 83-92.
[4] Thomas Largillier, Sylvain Peyronnet: Webspam demotion: Low complexity node aggregation methods. Neurocomputing 76(1): 105-113 (2012)
[5] Thomas Largillier, Sylvain Peyronnet: Detecting Webspam Beneficiaries Using Information Collected by the Random Surfer. IJOCI 2(2): 36-48 (2011)

Comments ( 6 )

  • Un article très intéressant (d’autant plus si l’idée principale a été communiqué en 2006!).
    Il sera certainement très difficile de remplacer le jugement humain, mais aujourd’hui Google a suffisamment d’indicateurs statistiques et de sources de données (algorithmiques, humaines, et logicielles) pour être un véritable obstacle au spam le plus sale. Néanmoins, je reste persuadé qu’il subsistera toujours quelques failles, les exploiter ne sera juste plus donné à tout le monde 😉

  • En fait, ce texte me montre par A+B ce que je pensais déjà sans oser me l’avouer mais tout ce qui s’est passé chez Google ces dernieres années finalement, est téléguidée depuis plusieurs années.

    Comment a t’on pu ne pas voir venir les Pandas et autres pinguoins alors qu’ils étaient dans les tuyaux depuis tout ce temps ?

    Juste hallucinant ! Merci pour le partage .

  • La conclusion nous tient en haleine car la mise à jour promet de découvrir les pistes à surveiller, (ne pas) suivre, (ne pas) exploiter ?

    Merci également.

  • Bonjour,

    Voici effectivement des critères on-site faciles à détecter par des algorithmes. Google tente désormais de lutter contre certaines techniques de linking, avec plus ou moins de succès…

    Amitiés,

  • Mimeides

    Article interessant …. c’est la premiere fois que je viens sur le site et c’est assez intéressant ….. surtout losque vous parler d’analyse textuelle (proba d’apparition de certains mots anormalement haute ) et IA (arbre) …. apres perso je ne suis pas sur que Spam/Non Spam soit une priorité absolu pour les Google , Yahoo … c e qui les in-teresse en ce moment c’est augmenter la vitesse de calcul sur le Big Data.

  • Pingback:On a besoin de vous : étude sur le webspam 2013 | Frères Peyronnet