1. Détecter et nettoyer le contenu générique
pendant la phase de collecte de donnés (SCRAP)
2. Qui suis-je ?
Benoit Chevillot
Gerant de Divioseo à Dijon
06 07 44 57 57
info@divioseo.fr
Automatisation web
Développement web
Applications mobiles
Améliorations de la performance
Maintenance Ecommerce
3. Qu’est ce que le contenu générique ?
In information technology, a boilerplate is a unit of writing that can be
reused over and over without change. By extension, the idea is sometimes
applied to reusable programming as in "boilerplate code." The term derives
from steel manufacturing, where boilerplate is steel rolled into large plates
for use in steam boilers
En HTML : les footers, headers, éléments de navigations, …
4. Les entités
nommées
Consiste à rechercher des objets
textuels (c'est-à-dire un mot, ou un
groupe de mots) catégorisables dans
des classes telles que noms de
personnes, noms d'organisations ou
d'entreprises, noms de lieux, quantités,
distances, valeurs, dates, etc.
5. Les stops words
Les mots vides (ou stop words, en
anglais) sont des mots qui sont tellement
communs qu'il est inutile de les indexer
ou de les utiliser dans une recherche. En
français, des mots vides évidents
pourraient être « le », « la », « de », « du »,
« ce »…
Un mot qui apparaît avec une fréquence
semblable dans chacun des textes de
la collection n'est pas discriminant,
ne permet pas de distinguer les textes les
uns par rapport aux autres.
7. Pourquoi
nettoyer ?
- Garder seulement le contenu
pertinent
- Ne pas parasiter les résultats
- Gagner de la place en
stockage
- Gagner en temps de traitement
- Eviter les problèmes
10. Quand faire les nettoyages / calculs ?
Pendant : résultat temps réel, pas de cloisonnement entre les actions de
récupération et de traitement
Après : le post traitement permet de mener des actions d’extraction et
raffinage à posteriori, et donc de pouvoir utiliser des crawls existants comme
matière première
Que faire ? : les deux mon capitaine. Des opérations de nettoyage légère au
crawl (détection de langue, suppression du boilerplate) et opérations
intensives post crawl (calcul des cooccurences ou détection des entités
nommées pr exemple)
12. Expressions
régulières
Les expressions rationnelles sont
issues des théories mathématiques des
langages formels des années 1940.
Les expressions rationnelles sont
aujourd’hui utilisées par les
informaticiens dans l’édition et le
contrôle de texte ainsi que dans la
manipulation des langues formelles que
sont les langages de l’informatique.
from blog.it.edu
15. Dom parser
Parcourir le Document Object Model
pour exclure / garder seulement les
chemins intéressants
Xpath : //p[contains(@class, ‘mytext’)]
Css query : p.mytext
Quelques outils :
PHP Simple HTML DOM
Ruby Nokogiri
from wp2x.com
16. Chercher /
remplacer
Fonctionne partout : ctrl + F même
dans word !
Pour être sérieux en ligne de
commande :
Awk, sed
N’importe quel éditeur de code (vim,
notepad, sublimetext, coda, …)
17. Les frameworks et Apis
Plusieurs techniques en oeuvre : densité de liens, taille des séries
de mots, « footprint » de balises
19. JusText
Python / C++ / GO
https://github.com/miso-belica/jusText
Le meilleur en langues ‘exotiques’
20. Readability (arc 90)
Nombreux fork dans tous les languages pour la v1
https://github.com/masukomi/ar90-readability
Très peu performant
21. Name entity Recognizer (stanford)
Codé en java : http://nlp.stanford.edu/software/CRF-NER.shtml
Permet « d’entrainer » le système pour améliorer les détections
Détection de noms propre, sociétés, dates, pays, villes
22. Conseils
Utilisez plusieurs méthodes pour vos nettoyages et stockez les résultats (voir chainez les)
Pensez aux blacklists de mots clef (rappelez vous des voyants)
Supprimer les dates et série de chiffres (sauf si vous minez des numéros de téléphone bien sur)
Gardez les séries de mots (+ ponctuation) de plus de 6 mots.
Focalisez vous sur les balises de « type » texte, Hn, p, blockquote
Utilisez un ‘réparateur’ de code HTML comme tidy par exemple, vous améliorerez ainsi le taux d’extraction
Utilisez le bon charset lors de votre nettoyage, détectez le au préalable (extraction de meta charset) sinon vous
risquez la galère utf-8
Gardez si possible une version brut de la source de données pour faire un post traitement non anticipé