Algorithme d'extraction de contenu de site web
Cet article présente un algorithme qui permet d'extraire de m'importe que site web, son contenu, tout en ignorant les informations superflues tels que les bannière publicitaire, menus, formulaire etc.

Cet algorithme est utilisé par Wutsi pour faciliter l'importation de contenu de blogs hébergés dans des site externes (Ex: MondoBlog, Medium, Wordpress etc.) .
L'algorithme
Pour régler ce problème, nous avons conçu un algorithme capable d'analyser n'importe quel article sur le web, éliminer le superflu et identifier le contenu principal lié au sujet de l'article.
Cet algorithme s'exécute en 2 phases:
- Une phase de nettoyage
- Une phase d'extraction
La Phase de Nettoyage
Cette première phase est d'éliminer du document toutes les informations non pertinentes:
- Les commentaires
- Les balises HTML non textuelles : head, style, script, nav, iframe, noscript, header, footer, aside
- Les modules d'intégration avec les réseaux sociaux.
- Les balises HTML ayant des identifiants (id ou class) associées à des sections inutiles: footer, comments, related_posts, top_nav, addthis_tool, embedly-card etc. Ces identifiants sont très populaires dans les sites hébergés chez Wordpress.

La dernière étape consiste à éliminer toutes les balises vides du document, qui résultent du nettoyage effectué lors des étapes 1 à 4

La phase d'extraction
Apres avoir simplifié la structure du document, la prochaine phase est d'extraire le vrai contenu de l'article.
La stratégie d'extraction de contenu est basée sur l'algorithme eatiht, qui a été porté du language Python a Java, et amélioré. L'algorithme eatiht est basé sur les 2 principes suivants:
- Le contenu utile est long
- Le contenu utile est groupé en paquets
On va utiliser le document HTML suivant comme exemple, pour démontrer comment l'algorithme fonctionne.

1. La sélection
La 1ere étape d'extraction est de sélectionner tous les noeuds du document ayant 20 caractères et plus. La limite de 20 caractères permet d'identifier les noeuds qui sont assez longs pour être considérés comme contenu utile.
Le résultat de la sélection sur notre document:

Ensuite on filtre les parents des noeuds sélectionnés, pour arriver au résultat suivant:

2. Le partitionnement
Cette étape attribut un score a chacun des noeuds sélectionnés. Le score de chaque noeud est le nombre total de phrases qu'il contient.
Le score de chacun des noeuds:

3. ArgMax
L'étape suivante sélectionne le argmax, qui est le noeud ayant le score le plus élevé. Le argmax identifie la zone ou se trouve le vrai contenu de l'article.
Dans le cas de notre exemple:

4. La Fusion
La dernière étape est de fusionner avec le argmax, tous les noeuds qui ont le même parent que le argmax. Le résultat obtenu est le contenu final à extraire.
Le résultat final de la fusion:

Résultats
Après plusieurs tests fait sur 30 blogs sur MondoBlog, Medium ou Wordpress, on a observé les résultats suivant:
- Le taux de succès d'importation du texte est de 100%.
- Le taux de succès d'importation des images est de 50%. 1 fois sur 2, l'auteur doit importer manuellement les images dans le texte après avoir importé un article. Surtout les articles importés de Medium.
- Le contenu embedded des média sociaux est ignoré: vidéo YouTube, tweets, images Instagram etc.
La prochaine étape est d'améliorer l'algorithme afin d'arriver a un taux d'importation de 100% pour les textes et images.
Grace a cet algorithme, 80% du travail d'importation est automatisé par Wutsi. L'auteur doit intervenir manuellement pour régler le dernier 20% du contenu manquant.
What's Next?
- Le code de l'algorithme d'extraction est disponible sur Github.
- Importer vos articles et blogs dans Wutsi.