Autres billets
Tags
seo montre conf metrique tempusFugit client Université vente airweb formation ref Porno ROI spam split test twitter algo captcha divers horloge Job math nul PPC produit projet psycho pub recsys relation client reputation sem sensing
Blogroll
Dans le folklore SEO, il y a de nombreux serpents de mer de la catégorisation de pages web en page spammy ou légitimes. On peut mentionner le Trustrank (théorisé par Gyongyi, Garcia-Molina et Pedersen [2] en 2004, personne ne sait si il est implanté dans un moteur), l'analyse des liens et l'utilisation de classifiers (par Becchetti, Castillo, Donato, Baeza-yates et Leonardi [1]) et aussi, et c'est le sujet de ce billet, le classifier basé sur des critères in text de Ntoulas, Najork, Manasse et Fetterly [3]. Et c'est amusant, chacun des articles dont je viens de parler est relié à certains des grands moteurs de recherche ([1] et [2] c'est Yahoo ! même si Gyongyi bosse maintenant chez Google et [3] c'est Microsoft).
Passons sur la définition donnée par Ntoulas et ses collègues de ce qu'est le spam sur le web («Web spam, you know it when you see it ») puisque de toute façon ils ont utilisé une base de spam classifié à la main par des volontaires, puis ont confronté les résultats de leur méthode avec le classement fait par ces volontaires.
Passons également sur les résultats surprenants de la classification humaine concernant leur échantillon de test. On y apprend 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 (où sont les polonais, pourtant jamais les derniers lorsque l'on parle de BH SEO ?).
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.

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 :
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 crtères qu'on trouve dans l'arbre jusqu'a une feuille spam ou non-spam.

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. Par ailleurs leur méthodologie de test de la méthode n'est pas satisfaisante puisqu'ils testent la méthode sur l'échantillon qui a servis à la mettre au point, ce qui rend bien sur très bon les résultats numériques finaux. Enfin, on notera que la plupart des critères in text ne détectent pas une page générée avec un générateur Markovien, alors qu'on voit facilement qu'un tel texte n'à aucun sens. Au final la méthode est utile en première étape de filtrage, mais pas plus probablement. Par ailleurs elle est couteuse en temps de calcul, donc pas forcément applicable à des gros index comme ceux manipulés par les moteurs de recherche.
[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.
Le critère sur la longueur des mots paraît assez ardu à appliquer, vu que la longueur moyenne des mots dépend essentiellement de la langue : les Allemands sont adeptes des mots à rallonge, les Anglais des mots courts, nous autres Français utilisons des tonnes d'articles et de pronoms, et je ne parle pas des langues qui n'utilisent pas l'alphabet latin.
Du coup, si on peut adapter sur les sites en .fr ou équivalents des diverses nationalités, ces sites étant probablement rédigés dans la langue de leur pays (une langue différente de la nationalité d'affiliation ne peut-elle d'ailleurspas constituer un critère ?, je suppose qu'il en va tout autrement sur les sites en .com, .biz et consorts.
Bien evidemment, il faut avoir determiné la langue du texte au préalable (ce n'est pas une tache très difficile a priori).
Encore un article très intéressant. Par contre, sur la longueur moyenne des mots, une page comme Krinein (ou Wikipedia) et une page comme un Skyblog auront forcément des longueurs moyennes de mots différents. Pourtant ni l'un, ni l'autre en sont des spams dont cette méthode a des limites (forcément me direz-vous). Enfin bon si on classe les Skyblogs comme du spam , personne ne s'en plaindra :p
Le kikoo-lol-mdr pose déjà des problèmes quant à l'identification du langage...
Par contre, qu'on laisse les skyblogs tranquilles sinon les kikoo-lolleurs vont envahir les kriblogs et on l'aura dans l'os... Pour un aperçu du massacre, voir les nombreux posts sur yu-gi-oh dans la section jeux vidéo.