Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Détecter et nettoyer le contenu générique

1,164 views

Published on

Presentation QueDuWeb 2016
Détecter et nettoyer le contenu générique

Published in: Internet
  • Be the first to comment

Détecter et nettoyer le contenu générique

  1. 1. Détecter et nettoyer le contenu générique pendant la phase de collecte de donnés (SCRAP)
  2. 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. 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. 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. 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.
  6. 6. Scrappers Crawlers, spiders : nutch, spidr, scrapy Pentest tools : arachni scanner Saas : 80leg, botify, … (https://www.quora.com/What-are-the-best-web- crawling-services)
  7. 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
  8. 8. Pourquoi nettoyer ?
  9. 9. Quand faire les nettoyages / calculs ? Pendant le scrap ou après le scrap
  10. 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)
  11. 11. Technologies à disposition Détection et nettoyage
  12. 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
  13. 13. Regex PHP autosplog
  14. 14. Regex Ruby YTG
  15. 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. 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. 17. Les frameworks et Apis Plusieurs techniques en oeuvre : densité de liens, taille des séries de mots, « footprint » de balises
  18. 18. Boilerpipe https://github.com/kohlschutter/boilerpipe https://github.com/search?utf8=%E2%9C%93&q=boilerpipe Très performant en anglais et langues latines
  19. 19. JusText Python / C++ / GO https://github.com/miso-belica/jusText Le meilleur en langues ‘exotiques’
  20. 20. Readability (arc 90) Nombreux fork dans tous les languages pour la v1 https://github.com/masukomi/ar90-readability Très peu performant
  21. 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. 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é

×