Classifier les pages web selon leur genre : focus sur la méthode n-gram

Dans la partie précédente nous avons vu que classer les sites web selon leur genre est un défi complexe, car les catégories évoluent avec le temps. Des genres pertinents il y a 20 ans ne reflètent plus forcément l’internet d’aujourd’hui. De plus, la classification peut se baser sur divers éléments : l’apparence visuelle, la structure, ou encore la fonction de la page. Cette variabilité complique la création d’une taxonomie universelle.

Plusieurs approches existent pour classifier les pages web. Comme pour l’extraction de contenu principal, la première étape consiste à analyser les informations de la page à travers des moteurs de recherche internes. Shepherd et Watters, en introduisant la notion de “cybergenres”, ont identifié trois rôles clés pour catégoriser les pages : le contenu (Analyse du texte et des informations sémantiques), la forme (Structure de la page, incluant les balises HTML) et la fonction (Interaction des utilisateurs avec la page via des liens et des actions).

Les approches traditionnelles utilisent des techniques telles que le comptage des mots, la fréquence de la ponctuation ou encore les modèles Bag of Words (BOW) pour analyser les sites. Cependant, une méthode plus efficace a émergé : la méthode n-gram, introduite pour la première fois en 2007, qui a considérablement amélioré le classement des pages selon leur genre.

Un dataset commun : 7-genre

Juste avant de commencer, j’ai décidé de traiter cette approche sur des études ayant comparés leurs résultats entre eux sur un même dataset. Il s’agit du dataset 7-genre :

Cette base de données permet de standardiser les évaluations et de comparer l’effet des différentes méthodes sur la qualité du référencement des pages. Je précise ici que PHP désigne les “personnal home page” tandis que les Spages désigne les “search page”.

C’est quoi un n-gram ?

Une représentation n-gram d’un texte est une suite de caractères ou de mots de taille n, reprenant l’ordre et toutes les combinaisons possibles. Par exemple, le mot “pomme” en bigrammes se représente ainsi : {’po’, ’om’, ’mm’, ’me’}. Ici, n correspond au nombre de caractères par token. Ci-dessous, en jaune, des character n-gram allant de 2-gram à 5-gram pour vous aider à visualiser. Le jaune représente une fenêtre coulissante qui glisse sur toute la ligne de texte.

À quoi servent les n-grams ?

Cette méthode est toute récente : elle a 77 ans. Pour la plupart, quand Claude Shannon à introduit cette idée en 1948 afin de prédire une suite de caractère ou de mots en connaissant le début d’un texte, vous n’étiez pas nés, moi non plus d’ailleurs. Le monsieur en question à été un pilier dans le TALN (ou traitement automatique du langage naturel) probabiliste. Les n-grams permettent de modéliser la probabilité d’une séquence de symboles. Elle permet aussi d’analyser des structures redondantes. Cette approche a pour particularité d’automatiquement capturer les racines des mots. En effet, les suites de caractères représentant les racines auront une plus forte probabilité que les affixes (préfixe/suffixe/…).

Si nous prenons par exemple les trigramme de cette suite de mot : lucide, elucider, luciole, Lucas, Lucie. Je vous passe toute les combinaisons possible mais en comtant le nombre d’occurrence sur toute la suite, on finit par isoler la racine “luc” qui par ailleurs vient du latin “lux, lucis” qui veut dire lumière.

📖 Tu as pris un exemple qui marche bien mais quand j’essaye : aéroport, port, transport tes morceaux de mots à 3 caractère ça ne fonctionne plus et on est obligé de changer la taille à chaque fois.

De la glue pour bricoler des n-grams plus pertinent

Dans leur étude publiée en 2007, Ioannis Kanaris et Efstathios Stamatatos sont non seulement parmit les premiers à appliquer les n-grams pour classifier des pages webs selon leur genre, mais en plus ils n’utilisent pas la méthode la plus facile à expliquer ! L’objectif est d’entraîner un SVM (Support Vector Machine) sur un ensemble de n-gram considérés comme “dominants” pour le genre comme par exemple : “price”, “sale”, “buy” sont probablements des n-grams dominants du genre eshop.

📖 Pourquoi la taille est variable ?

C’est justement le coeur de leur stratégie. Les mots et les racines étant de tailles variables on va calculer toute les combinaisons de n-gram d’un texte allant de 2-gram à 5-gram (en tout cas dans leur étude). On s’inspire ensuite de la méthode LocalMaxs proposée initialement par Silva et Lopes pour repérer les n-grammes dominants. La version qu’emploient Kanaris et Stamatatos calcule un indicateur (sorte de « force de cohésion » ou glue) grâce à la Symmetrical Conditional Probability (SCP) :

où p(x,y) est la probabilité d’observer la suite de caractères x suivie de y, et p(x), p(y) la probabilité d’observer séparément x et y.

  • Pour un n-gramme de longueur n (par exemple « expo »), on considère les différents points de coupure internes (par ex. « e|xpo », « ex|po », etc.), et on calcule la SCP de la partie gauche et droite de la coupure. La méthode LocalMaxs compare ces valeurs afin de décider si cet n‑gramme est « dominant » (colle fortement) ou bien si, au contraire, il est « surpassé » par un n‑gramme plus long ou plus court qui inclut quasiment la même suite.

LocalMaxs

L’algorithme cherche, pour chaque n‑gramme C, à vérifier s’il possède une glue (SCP) plus élevée que :

  • ses n‑grammes plus courts (ses « antécédents »),
  • ses n‑grammes plus longs (ses « successeurs »).

Grosso modo, si la SCP de C est strictement plus grande que celle de ses antécédents et de ses successeurs, alors C est déclaré « dominant ». La suite de la méthode est relativement simple, on représente la page par le biais de ces n-grams dominants en comtant la fréquence de ceux-ci et on entraîne un SVM pour la classification des pages web selon leur genre. Cette méthode se concentre principalement sur le texte bien que l’étude mentionne également une analyse structurelle des balises html qui améliore légèrement les résultats.

Quelle taille idéale pour classifier les genres de page web ?

La méthode “glue” avec n-gram variable est très coûteuse. Donc on se pose la question, si on veut pas se compliquer mais trouver la meilleure taille de n-gram à utiliser, ce serait laquelle ? En 2014, Kumari et al. on décidé de comparer les performances d’un SVM entraîné sur plusieurs taille de n-gram allant de 3 à 8. Pour chaque longueur ils ont ensuite comté le nombre d’occurence du n-gram pour construire un vecteur de représentation. Ils ont trouvés que les pentagrammes (5-gram) était le meilleur compromis.

Performance d’un SVM sur le dataset 7-Genre en variant la longueur des n-gram

Comment l’expliquer ?

Avec des tailles de n-gram trop petites et avec des mots comme : chanter, nous chantons, chaussette… dans la tâche de racinisation d’un mots un n-gram trop petit comme le trigramme serait incapable de séparer chaussette de chanson. De la même manière avec un n-gram trop long comme un 6-gram, il est impossible de trouver une racine dans cet exemple. Plus largement le nombre de n-gram distinct augmente et fait office de bruit.

On peut tout de même émettre une critique sur cet article, cette longueur est la bonne sur le dataset étudié, le dataset 7-genre qui ne contient que des pages en anglais. Cette étude permet d’illustrer parfaitement qu’il y’a toujours une longueur optimale à aller chercher et exprimant le risque d’un n-gram trop court ou trop long mais on est incapable de dire si cela s’applique à toute les langues, tous les datasets voire même tous les genres de page.

Peut-on faire une bonne classification sans machine learning ?

C’est une très bonne question et oui Mason et al. l’on fait en 2009 ! Dans un premier temps ils ont constaté que la fréquence des n-gram d’un texte possède une distribution zipf tout comme le vocabulaire d’une langue naturelle. Une distribution zipf ça ressemble à ça :

Distribution zipf des mots de la langues anglais

📖 Qu’est-ce que ça veut dire ?

Ça veut dire que très peu de mots du vocabulaire sont en réalité massivement utilisés. Représenter un texte sous forme de fréquence de n-gram c’est embêtant parce que ça donne de très grands vecteurs dont la plupart ont de nombreux n-gram avec une occurrence faible. Voici la distribution en bigramme dans l’étude de Mason et al. :

Vous voyez la courbe ? La première fois je l’ai loupé. Ce que nous dis cette courbe c’est que presque tous le vocabulaire à au finale une fréquence très faible. La première décision de J. Mason est de “couper” se qui dépasse. Désormais on ne considérera que les 500 n-gram les plus fréquent.

Dans un second temps. On ne vas pas utiliser de SVM comme les deux premières approches. On calcule la fréquance normalisée de n-gram de la page puis on calcule une moyenne au niveau du genre. On tri et isole les 500 n-gram les plus fréquents du genre ce qui nous donne un vecteur unique pour un genre : son “profile type”. On calcule ensuite la distance entre un candidat et chaque profile type avec la formule suivante proposée par Kešelj et al. (2003) :

Où :

  • S₁ et S₂ sont les deux profils de n-grammes à comparer (ex. une page test et un genre).
  • f₁(m) est la fréquence normalisée de l’n-gramme m dans le profil S₁.
  • f₂(m) est la fréquence normalisée du même n-gramme dans le profil S₂.
  • La somme est calculée sur tous les n-grammes présents dans l’un ou l’autre des profils (S₁ ∪ S₂).

Cette étude propose également une approche subdivisant le genre listing considéré comme trop “hétérogène” : checklist, hotlist, sitemap, table. Les résultats montre que la subdivison à grandement amélioré les résultats. On peut déduire de cette étude qu’il est important qu’une catégorie soit homogène dans son contenu textuel pour éviter de biaiser le profile type créé. Cette méthode est très intéressante au vue de sa très grande simplicité mais dépend de la taxonomie employée.

Quelle sous-approche gagne ?

J’ai refais ce tableau issu de Kumari et al. publié en 2014 (refais car il y’a des études que je n’ai pas couvert ici et que l’auteur à malencontreusement arrondit en dessous la performance de ses confrères)

Kanaris et al.96,5%(glue)
Kumari et al.95,78%(taille de n-gram)
Mason et al.94,6%(sans SVM)

Chaque étude a au moins été évaluée sur le dataset 7-genre ce qui permet d’avoir un aperçu de chaque performance. On remarque tout de suite que la méthode la plus performante semble être l’approche glue. Lorsque notre grille de lecture est le coût de calcul ou la complexité d’une approche on peut tout de même féliciter l’approche sans SVM qui possède un très bon score même en troisième position.

Conclusion

Cette approche semble dépassée en 2025 quand on voit ce que peut réaliser un LLM mais cela ne veut pas dire qu’il n’y a pas des choses à en tirer. Dans un première temps une méthode plus light de temps ça ne fait pas de mal, un LLM c’est coûteux en temps, en eau et en électricité, surtout quand on le compare à ce type d’approche. Revenons aux n-gram. On a vu qu’une taille trop petite nous rends incapable de distinguer les segments d’un contexte, à l’inverse, si c’est trop long ça devient un vocabulaire quasi unique, un bruit. On a également vu que prendre tout le vocabulaire ne sert à rien. Il convient donc de choisir la bonne taille mais également de prendre les n-grams les plus pertinents. Soit en prenant la moyenne normalisée des n-grams d’un même genre, soit en utilisant l’algorithme glue pour extraire les n-grams dominants.

La méthode n-gram est loin d’être la seule approche intéressante dans la classification du genre. Nous pourrions par exemple parler de l’utilisation des liens et des pages voisines pour enrichir le contenu textuel de la page analysée avec davantage de n-gram pertinents, de sorties multi-label dans le cas d’hybridisme de genre ou encore de la création de « design pattern » pour classifier une page web selon sa structure. Nous nous pencherons sur ces méthodes une prochaine fois !

Références
  • Mason et al. – 2009 – An n-gram based approach to automatically identifying web page genre
  • Kumari et al. – 2014 – Web page genre classification Impact of n-gram lengths
  • Kanaris and Stamatatos – 2007 – Webpage genre identification using variable-length character n-grams
  • Marina Santini – 2006 – Some Issues in Automatic Genre Classification of Web Pages
  • Kešelj et al. – 2003 – N-GRAM-BASED AUTHOR PROFILES FOR AUTHORSHIP ATTRIBUTION
  • Silva et Lopez – 1999 – A Local Maxima method and a Fair Dispersion Normalization for extracting multi-word units from corpora
FAQ
  1. Qu’est-ce que la classification de pages web selon le genre ?

La classification des pages web consiste à regrouper les sites en fonction de leur type de contenu, de leur structure ou de leur fonctionnalité. Cela permet d’améliorer les résultats de recherche, d’optimiser le SEO et de mieux cibler les informations pertinentes.

2. C’est quoi un n-gram et pourquoi l’utiliser pour les pages web ?

Un n-gram est une suite de n caractères ou de n mots consécutifs extraits d’un texte. Par exemple, le mot “site” en bigrams (2-grammes) donne : si, it, te. Les n-grams sont utilisés pour analyser la fréquence des mots-clés sur un site, identifier les structures répétitives dans le contenu web, améliorer la classification des pages selon leur type et optimiser la visibilité sur Google grâce à une meilleure compréhension du contenu.

3. Comment la méthode n-gram améliore-t-elle la recherche d’informations sur internet ?

La méthode n-gram permet d’identifier les mots-clés dominants sur une page, classer les pages selon leur contenu textuel, leurs balises HTML, et leurs liens, améliorer les résultats de recherche en différenciant, par exemple, un site e-commerce d’une page FAQ et aider les moteurs de recherche comme Google à mieux comprendre le type d’information proposé.

4. Les n-grams peuvent-ils analyser les images et les balises ?

Non directement. Les n-grams analysent principalement le contenu textuel. Cependant les balises ALT des images, les meta descriptions, et les titres sont pris en compte sous forme de texte et l’analyse des liens et des ancres (texte cliquable) peut également être effectuée pour comprendre le contexte des images.

5. Quelle est la meilleure taille de n-gram pour la classification des pages web ?

Selon Kumari et al. (2014), la taille optimale est le pentagramme (5-gram). Les n-gram court (ex. bigram) sont trop généraux, il peut confondre des mots comme chanter et chaussette. Un n-gram long (ex. 7-gram) est trop spécifique, il génère du bruit en créant des séquences uniques. Le 5-gram est l’équilibre entre la précision des résultats et la pertinence du contenu.

6. Comment les n-grams peuvent-ils améliorer le SEO d’un site ?

La méthode n-gram améliore le SEO en identifiant les mots-clés dominants sur une page, optimisant les balises HTML et les meta descriptions, améliorant la cohérence du contenu avec les requêtes Google et réduisant le contenu dupliqué et en ciblant des niches précises.

7. Peut-on classifier les pages web sans machine learning ?

Oui ! Mason et al. (2009) ont montré qu’il est possible de compter les 500 n-grams les plus fréquents d’un site, créer un profil type pour chaque genre de page et comparer une page test à ces profils à l’aide d’une mesure de distance. Cette méthode simple a atteint une précision de 94,6 %, sans algorithme complexe.

8. Comment la méthode “glue” améliore-t-elle la pertinence des n-grams ?

La méthode “glue”, introduite par Kanaris et Stamatatos (2007), utilise la Symmetrical Conditional Probability (SCP) pour identifier les n-grams dominants, prioriser les mots-clés les plus pertinents pour un genre donné (ex. pricebuysale pour un site e-commerce) et comparer chaque n-gram avec ses antécédents et successeurs pour garder les plus cohérents.

9. Les genres de pages peuvent-ils être subdivisés pour une meilleure classification ?

Oui. Certains genres sont hétérogènes, comme le listing, subdivisé en quatre sous-genres : Checklist (Liste de tâches ou de vérifications), Hotlist (Liens recommandés), Sitemap (Structure du site) et Table (Informations organisées en tableau). De même, les pages personnelles (PHP) pourraient être divisées en pages académiques, administratives, portfolios, etc.

10. Quelle méthode donne les meilleurs résultats pour classifier les pages web ?

La méthode glue reste la plus précise, mais la méthode de Mason, sans apprentissage automatique, offre un excellent compromis entre performance et coût de calcul.

11. Comment les n-grams peuvent-ils enrichir le contenu d’un site pour le SEO ?

Les n-grams jouent un rôle clé dans l’optimisation des sites web pour les moteurs de recherche, comme Google, en identifiant les mots-clés dominants et les expressions courantes utilisées par les utilisateurs. En analysant la structure des contenus, ils permettent de repérer les séquences de mots les plus pertinentes pour chaque type de page. Cela améliore non seulement la qualité des informations proposées, mais aussi la pertinence des balises HTML, des meta descriptions, et même des liens internes. Cette optimisation contribue directement à un meilleur classement dans les résultats de recherche.

12. Les n-grams peuvent-ils détecter les pages de mauvaise qualité ?

Oui, les n-grams peuvent identifier les sites présentant un contenu de faible qualité en analysant la fréquence des mots-clés, la structure des balises, et la cohérence du contenu. Un site contenant un excès de mots-clés répétitifs ou des phrases sans sens sera repéré comme suspect par les moteurs de recherche, ce qui peut affecter son classement. En revanche, une utilisation bien dosée des n-grams améliore la qualité globale du contenu, assurant un référencement SEO optimal tout en respectant les attentes des utilisateurs.

13. Comment les n-grams peuvent-ils améliorer la recherche d’informations sur internet ?

Les n-grams jouent un rôle clé pour affiner la recherche d’informations sur internet, en particulier sur les sites web. En analysant la structure des mots et des phrases, ils permettent de mieux comprendre le contenu des pages. Cette analyse aide les moteurs de recherche, comme Google, à fournir des résultats plus pertinents en associant les requêtes des utilisateurs aux pages dont le contenu correspond le mieux. Ainsi, les sites bien optimisés grâce aux n-gramsapparaissent plus facilement dans les premières pages de résultats.