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

Post on 10-Jan-2017

834 views 2 download

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

Détecter et nettoyer le contenu génériquependant la phase de collecte de donnés (SCRAP)

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

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, …

Les entités nomméesConsiste à 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.

Les stops wordsLes 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.

Scrappers

Crawlers, spiders : nutch, spidr, scrapy

Pentest tools : arachni scanner

Saas : 80leg, botify, … (https://www.quora.com/What-are-the-best-web-crawling-services)

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

Pourquoi nettoyer ?

Quand faire les nettoyages / calculs ?Pendant le scrap ou après le scrap

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)

Technologies à dispositionDétection et nettoyage

Expressions régulièresLes 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

Regex PHP autosplog

Regex Ruby YTG

Dom parserParcourir 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

Chercher /remplacerFonctionne 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, …)

Les frameworks et ApisPlusieurs techniques en oeuvre : densité de liens, taille des séries de mots, « footprint » de balises

Boilerpipe

https://github.com/kohlschutter/boilerpipe

https://github.com/search?utf8=%E2%9C%93&q=boilerpipe

Très performant en anglais et langues latines

JusText

Python / C++ / GO

https://github.com/miso-belica/jusText

Le meilleur en langues ‘exotiques’

Readability (arc 90)

Nombreux fork dans tous les languages pour la v1

https://github.com/masukomi/ar90-readability

Très peu performant

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

ConseilsUtilisez 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é