Scraping adaptatif events onogone

Cette page présente des remarques et questions/réponses sur la méthode d'Onogone sur le scraping d’événements

## **Introduction (§1)**

* --> Qu'est-ce que le minimum de bruit possible ? Et s'il reste du bruit ?

## **Introduction - Détection d'évènements : Etat de l’art et limites (§1.1)**

* --> Quelles sont les parties réellement intéressantes ? D'autres parties ne peuvent pas intervenir (La date, le lieu, l'heure, ... ?) ?

## **Introduction - Méthodes d'extraction de contenu (§1.2)**

**Reconnaissance de template**

--> FMO : J'ai pas vraiment compris. Il faudrait un exemple concret.

--> LDO : "Reconnaissance de template" par "Extraction de régions": il s'agit de reprérer les redondances de codes (entêtes, pieds de pages, menu) ?

**Extraction de régions**

régions ancillaires : --> FMO : pas compris (ancillaire = qualifie les opérations préparatoires ou annexes)

--> LDO : "L’adoption des normes définies par schema.org n’est bien entendu pas encore suffisante, surtout en France, pour que notre système repose entièrement dessus" -> Google utilise http://schema.org/SearchResultsPage pour ses résultats de recherche et **Yoast SEO** se normalise à schema.org je crois. Quid de **Open Graph** ?

**Décomposer les pages en sous-parties en se basant :**

* sur le texte et le code HTML de la page,
* sur la structure hiérarchique du DOM,
* sur les indices visuels de la mise en page du document

**Wrapper** :

* Wrapper défini manuellement

* Wrapper défini avec un algorithme d’apprentissage supervisé.

--> FMO : Pour quelles taches précises aurait on besoin d'un apprentissage automatique? pour de l'optimisation de tunning? pour d'autres taches?. Je ne suis pas du tout certain qu'on ait besoin du machine learning.

G**énération automatique de wrapper**

" La littérature existante sur la génération automatique de wrapper est vaste, mais, ... traite de problèmes relativement éloignés du nôtre."

--> Rem FMO : Oui car il s'agit de problèmes étudiés qui sont dans un sens plus complexes (ex basés sur une ontologie) et dans un autre sens plus simples (car scraping non adaptatif). A voir quand même. Cf page Littérature

**Utilisation du web sémantique et notamment les schémas de micro-données**

--> Rem FMO : Pourquoi les schémas de micro-données plutôt que les autres formats? J'ai compris, il faut entendre ici micro-données dans le sens général, c'est à dire incluant les différents type de formats et notamment Microdata ou JSON-LD (on ne parle pas de RDFa ou des micro-formats qui ont perdu leur interet depuis ~2010)

**À noter qu’une solution potentiellement plus simple serait de simplement filtrer les pages de liste pour ne se concentrer que sur les pages de détails.**

--> Rem FMO : On ne peut pas, car il y a parfois des informations qui sont uniquement sur la page de liste.

--> Rem LDO : ☀Doit-on exploiter les sitemap.xml des sites web pour identifier les pages (Priority), et aussi pour obtenir la fréquence de mise à jour des pages du site ? Ex: **[1]**

* Définition : règles heuristiques : heuristique signifie l'art d'inventer, de faire des découvertes
* --> Comment obtenir un set d'entraînement fonctionnel avec des "templates" ? Quels "templates" choisir ?
* Définition : régions ancillaires : rapport à la servante
* --> Modèle généraliste et adaptable > "wrapper" ? Est-ce vraiment sûr ? Les sites évoluent tant que ça ?
* --> Qu'est-ce que les micro-données ?

## **Introduction - Formalisation du problème (§1.3)**

--> LDO : "Les informations ainsi extraites sont ensuite stockées dans une base de données" : laquelle ? MySQL, NoSQL ?

* --> "Scraper" un site, oui, mais comment procéder techniquement parlant ? Un croisement efficace de données possible ?

## **Etape 1 - Preprocessing (§2.1)**

--> LDO : "nettoyage du code": L'utilisation de BeautifulSoup (module Cleaner) + XPaths sont-elles les solutions cibles pour la phase de pré-processing ?

"La reconnaissance de template mentionnée en 1.2. peut éventuellement être intégrée au stade de pre-processing" -> Comment, sous quelle forme ? dans un script python ?

--> Rem LDO : Plusieurs questions concernant la problématique de crawling d'un site web

- *fréquence* : quelle est le best practice concernant l'intervalle d'interrogation des requêtes HTTP ? (détermination d'un nombre aléatoire entre 2 et 10 secondes).

- referer : faut-il considérer qu'une solution de rotation d'IP est obligatoire ? J'ai utilisé un dictionnaire de proxy sur port 80 -> http://gimmeproxy.com/api/getProxy?country=US&port=80, reste à mettre en place un mécanisme qui teste que la requête est correctement acheminée.

- sender http: j'ai utilisé pour exécuter les requêtes HTTP soit webdriver.ChromeOptions() soit requests avec définition des header http. Remarques ?

Dans quel cas, peut-on savoir si l'on va devoir utiliser Selenium ou bien qu'on va pouvoir s'en affranchir ?

- header http : les entêtes doivent-elles tourner ? je pense notamment au user-agent.

* --> Pourquoi reconnaissance de "templates" pourrait ralentir processus ?

## **Etape 2 - Vérification de la présence d’informations pertinentes (§2.2)**

--> LDO : "durée du crawl global" : en terme d'architecture, il faut prévoir de paralléliser les traitements sur des machines virtuelles ?

**C'est un problème d’apprentissage supervisé.**

--> Question FMO à Onogone : Je veux bien, mais alors il faut indiquer la méthode. Quelle méthode?

--> LDO : Je ne matérialise pas du tout ce qu'il y a derrière "apprentissage supervisé".

* --> Exemple d'un faux-positif ?

### **Méthode 1 : classification textuelle (§2.2.1)**

Vectorisation : FMO: quezako? Il faut comprendre ce terme pour comprendre la suite.

--> LDO : Ormis la problématique de peformance de word embeddings, en cible faut-il favoriser la technique du word embeddings ou celle du bag of words ?

*NLTK: ça semble très intéressant.*

"on définira comme l’ensemble du texte affiché et présent dans la balise <body> du document": ok mais :

1. est-ce que le corpus extrait du body contient les balises html ou bien on les nettoie avant le traitement ?

2. comment définit-on les top words (ce sont les catégories ?),

Que fait concrètepent lAPI de NLP Onogone ? est-ce une api pour traiter le langage naturel qui s'appuie sur la mise en oeuvre de NLTK ?

--> Rem LDO : Quid de l'exploitation des flux RSS bien que tous les sites n'en possèdent pas ?

* --> Vectorisation : comme en C++ (bibliothèque STL) regroupant des éléments de même catégorie ?
* --> Synonymes : ne peuvent-ils pas être supprimés que pour garder l'essentiel ?

### **Méthode 2 : classification visuelle (§2.2.2)**

--> Rem FMO : personnellement, je pencherais plus pour la classification textuelle dans un 1er temps.

--> LDO : le modèle hybride combinant classification textuelle et visuelle me paraît intéressant dès lors qu'il est prouvé que la classification visuelle apporte une valeur ajoutée ou encore une information non accessible par la classification textuelle, et que la mise en place light est envisageable.

--> Rem LDO: A ce sujet, qu'en est-il de l'analyse spatiale des catégories ? est-ce à cette étape qu'il faut l'envisager ?

* --> Classification visuelle : vraiment utile ? Set d'entraînement facile à acquérir ? Et pour des sites fabriqués à la main (c'est-à-dire mal mis en page) ?

### **Détection du type de page (liste ou détail) (§2.2.4)**

**Idéalement, l’algorithme d’extraction d’information devrait être suffisamment généraliste pour pouvoir fonctionner dans les deux cas.**

--> Rem FMO : personnellement, je ne pense pas. A mon avis, à l'étape 3, on doit savoir si l'on est sur une page liste ou sur une page détail. Et même plus : il faut d'abord extraire les informations des pages listes puis parcourir les pages détail une à une en sachant à quel évènement de la page liste elle se rattache. Donc à l'étape 3, il est forcément nécessaire de développer deux process différents pour extraire l’information de chacun des deux types de pages.

--> Question FMO à Onogone : Pourquoi ne pas utiliser les liens entre page de liste et page de détail?

--> LDO : de mon point de vue le classificateur devra détecter 3 catégories : « non-pertinent », « page de liste » et « page de détail » car il y aura des cas de pages en mode liste/détail.

* --> Pourquoi 3 catégories : non-pertinent, page de liste et page de détail ?

## **Présupposés et formalisations (§2.3.1)**

--> LDO : "Pour l’identification des champs, l’on utilisera en sus des balises d’éléments dits inline telles <span>, <br>" : il manque pour moi les balises <h1>, <h2>, <h3> et <p>.

## **Méthode d’évaluation des champs (§2.3.2)**

* --> Lorsqu'on lit des phrases longues sur des informations (date, lieu, ...), comment réduire le bruit des mots dans ces phrases ?
* --> Gestion des autres langues possible facilement ? Traduction impliquée ?
* --> Utilisation "regex" comme en C++ viable (numéros, mails, ...) ?
* --> Si tous les scripts JavaScript sont ignorés, comment récupérer le contenu dynamique ?

## **Extraction d'information (§2.4)**

* --> Peut-on classer les mots dans les catégories (a et à, ou et où, ...) ?

## **Gestion des doublons et croisement des données (§2.5)**

* --> Comment gérer proprement les répétitions de mots ?