Mise en place d’un système d’acquisition semi-automatique d’un corpus de données hétérogènes

Extraction des données textuelles

Afin d’analyser les articles, nous devons les collecter via le web, en vue de constituer un corpus exploitable. Les articles sont par la suite convertis en format texte ou csv, pour être traités par des scripts informatiques, de façon à extraire les informations spatio-temporelles. Pour cela, nous devons parcourir toutes les pages d’un site d’actualités contenant un article, et collecter les informations de ces pages. Ce procédé est possible grâce au système WordWideWeb (la toile) et à Internet.
Les sites web sont écrits en HTML (HyperText Markup Language), langage de balisage spécifique pour la création de pages web (Figure 1). Ce langage permet de mettre en forme le contenu des pages web, tels que du texte, des liens, des images etc. Ces pages HTML constituent le code source (Figure 2) des pages web, et sont interprétables par les logiciels de navigation pour les afficher aux utilisateurs. Lorsque nous naviguons sur le web, nous visualisons la page web telle que l’auteur l’a écrite et veut que l’utilisateur la voit (Pour apercevoir le code source d’une page, clic droit sur la page et cliquer sur code source de lapage sur Firefox ou Google Chrome ou Ctrl+U sous Windows.).
Les codes sources des pages web permettent d’avoir des données semi-structurées grâce au balises contenant les informations de l’article comme le titre, la date de parution et le texte del’article. Nous pouvons donc extraire le contenu des balises <titre><date> et <texte> des articles présents dans le code sources des pages web, pour récupérer les données textuelles voulues afin de pouvo ir appliquer des programmes informatique dessus.

Outils et méthodes de l’état de l’art

Pour parcourir toutes les pages d’un site web et en extraire automatiquement des données spécifiques du code source, deux techniques sont nécessaires : le crawler (robot d’indexation) et le scraper (extraction de contenus). Ces techniques aspirent des données textuelles présentes sur Internet, écrites par des auteurs. Dans le cadre de projets de recherche scientifique, l’exploration de textes est possible pour des organismes publics de recherche et institutions engagés :
Code de la propriété intellectuelle, article L122-5: « 10° Les copies ou reproductions numériques réalisées à partir d’une source licite, en vue de l’exploration de textes et de données incluses ou associées aux écrits scientifiques pour les besoins de la recherche publique, à l’exclusion de toute finalité commerciale. Un décret fixe les conditions dans lesquelles l’exploration des textes et des données est mise en œuvre, ainsi que les modalités de conservation et de communication des fichiers produits au terme des activités de recherche pour lesquelles elles ont été produites ; ces fichiers constituent des données de la recherche. »

Web Crawling

Le crawler est une technique permettant d’explorer le web (comme une toile d’araignée) en parcourant toutes les pages. L’algorithme a en entrée une ou plusieurs url(s), et consulte ces pages pour notamment retrouver des liens d’autres pages. Avec l’expansion des données sur Internet, de nombreux logiciels pour crawler (Xenu, Botify…) ont été créés. Ils permettent de parcourir un site sans coder, en renseignant au logiciel l’adresse du site web à crawler. Cependant, ces logiciels sont généralement utiles pour connaître la structure du site et extraire des informations, comme le temps de réponse du serveur, des problèmes d’arborescence etc. Nous voulons parcourir des pages web afin d’extraire du contenu assez précis grâce au code source de celles-ci, nous créerons donc notre propre crawler avec Python et des librairies Python spécifiques aux techniques de crawling et de scraping, comme Pyspider, MechanicalSoup ou encore Scrapy.
A noter que d’une manière générale, les sites ne permettent pas d’extraire la totalité de leurs pages avec un programme informatique, si nous envoyons trop de requêtes, nous pouvons nous faire blacklister du site.

Web Scraping

Le scraper est une technique permettant d’extraire du contenu spécifique du code source de pages web. Le contenu à extraire sur les pages est seulement l’article en luimême et non toute la page de l’article (qui contient l’article mais également d’autres informations non pertinentes pour notre analyse comme des commentaires ou les onglets du site). Pour sélectionner le contenu spécifique à extraire, nous utilisons les informations présentes dans les codes sources qui permettent d’avoir une structuration : soit les sélecteurs css ou récupérer le contenu des balises html, comme ci-dessous.

Filtrage et écriture des articles

Une fois les données textes de tous les articles du site récoltées par le script, nous pouvons les écrire dans un fichier csv, en procédant à un petit filtrage pour obtenir de meilleurs résultats : nous supprimons de façon automatique les articles qui sont écrits dans une langue autre que le français (certains articles étaient écrits en Lorem ipsum, des morceaux de faux latin souvent utilisés pour remplir un document), grâce à la librairie python TextBlob (détection de la langue alimentée par Google Translate), ainsi que les articles ayant une longueur inférieure à 15 caractères (commentaires qui sont passés dans le traitement informatique ou articles erronées).
Nous faisons attention à l’écriture des articles : nous concaténons le titre, un point, la date, un point, puis le texte et pour finir le motif xxxxx.
Cette annotation permet de structurer le texte afin d’avoir une séparation entre le titre, la date, le texte grâce au point, et notamment d’avoir une séparation entre chaque article grâce au motif xxxxx, pour créer une sorte de frontière pour que le script puisse distinguer les différents éléments de l’article.
Nous avons ainsi obtenu un corpus d’articles bruts (non classifiés et non annotés).

Définition Traitement Automatique du Langage

Le traitement automatique du langage (TAL, Natural Language Processing (NLP)) est un ensemble de méthodes et d’outils qui a comme objectif de modéliser le langage écrit et parlé afin que l’ordinateur puisse manipuler le langage humain, grâce à l’association de l’informatique, de l’intelligence artificielle et de l’analyse linguistique (analyse morpho lexicale, syntaxique, sémantique et pragmatiq ue).
Le TAL est apparu dans les années 50, en même temps que l’informatique, afin de traduire les messages du camp adverse (URSS vs USA) durant la guerre froide. Nous pouvons citer l’expérience Georgetown-IBM (1954) qui fut une des premières démonstrations de traduction automatique du russe vers l’anglais. Les résultats de la traduction automatique ne furent pas concluants, mais cela a permis d’ouvrir la voie, dans les décennies qui suivirent, à d’autres champs d’applications. En effet, Le TAL permet la mis e au point d’application telles que l’analyse de sentiments, les agents virtuels (chatbots), la reconnaissance de la parole, la traduction automatique, la correction orthographique, la recherche de mots-clés, ou encore l’extraction d’informations.

Outils et méthodes de l’état de l’art

Méthodes de Topic Modeling

Les méthodes actuelles pour effectuer du topic modeling sont l’analyse sémantique latente, l’analyse sémantique latente probabiliste et l’allocation de Dirichlet latente, décrites dans les paragraphes suivants :
Analyse sémantique latente (LSA), par Deerwester et al. en 1990 : modèle statistique permettant de découvrir la relation sémantique des mots dans un ensemble de documents. Cette méthode s’appuie sur les données d’une matrice d’occurrences des mots dans les documents (term-document matrix), et d’une réduction de dimensions de cette représentation vectorielle des textes, afin de faire émerger des liaisons sémantiques entre des termes dans un grand corpus.
Analyse sémantique latente probabiliste (PLSA), par Thomas Hofmann en 1999, est un modèle qui a le même principe que LSA, mais utilise une méthode probabilist e au lieu d’une matrice d’o ccurrences dans les documents.
Allocation de Dirichlet Latente (LDA), par Blei et a l en 2003, est un modèle génératif probabiliste qui est une amélioration de la LSA et PLSA. Ce modèle est basé sur le théorème de Bayes et est génératif, c’est-à-dire qu’il caractérise la distribution statistique de chaque classe en apprenant la distribution de probabilité commune P(x,y) (contrairement au modèle discriminant, qui apprend la distribution de probabilité conditionnelle).

Approche

Après avoir recueilli les articles, nous devrons déterminer lesquels traitent de sécurité alimentaire. En effet, en analysant les articles récoltés, nous constatons que les articles traitent de sujets divers. Nous voulons donc procéder à une identification thématique dans ce corpus. N’ayant pas de données étiquetées pour l’analyse thématique des sujets (par exemple l’étiquette politique, sports etc.), mais assez de données pour effectuer un traitement d’identification du thème, nous appliquerons un algorith me non supervisé aux articles en utilisant le modèle LDA (Latent Dirichlet Allocation), car il permet une catégorisation plus précise des articles, et ce modèle a été utilisé dans des problèmes similaires liés aux catastrophes naturelles [5] [6].
Nous aurons en sortie des thématiques composées de groupe de mots qui auront une probabilité d’occurrence pour le thème donné, et les articles ayant une probabilité d’appartenance à une ou plusieurs thématique(s).

Apprentissage non supervisé avec le modèle LDA

Choix de la librairie Machine Learning

Pour effectuer l’algorithme LDA, nous utilisons la librairie Scikit-learn. Cette bibliothèque peut être utilisée pour des tâches de classification (identifier à quelle catégorie un objet appartient), des tâches de régression (prédire une valeur associée à un objet) ou des tâches de clustering (regroupement automatique d’objets similaires dans des ensembles). Cette librairie est notamment très connue et utilisée par la communauté, nous avons donc à disposition une documentation assez complète.

Résultats

Les résultats du topic modeling avec le modèle LDA ne mettaient pas forcément en évidence le thème de la sécurité alimentaire, car les articles traitant de ce thème ne sont pas majoritaires dans les journaux. Comme nous pouvons le voir dans l’annexe 1 (p.67), les thématiques étaient tro p généralistes et peu pertinentes pour la sécurité alimentaire, seulement trois thématiques (8 ; 61 et 85) correspondaient au thème recherché (céréales, plantes, aliments, repas, nutrition, alimentation, eau), mais ces mots étaient associés au thème de la santé/médecine.

Apprentissage non-supervisé avec le modèle LDA et Word2Vec

Les résultats précédents n’étant pas concluants, nous avons procédé d’une autre manière, en utilisant toujours l’algorithme d’apprentissage non-supervisée avec le modèle LDA, et en ajoutant également le modèle Word2vec et un lexique spécifique à la sécurité alimentaire afin d’avoir une identification d’articles spécifique au thème voulue [7].

Modèle LDA

En entrée, nous aurons le fichier csv contenant les articles bruts (obtenu dans le chapitre précédent). Le script fera le même processus explicité dans la partie ci-dessus (1. Apprentissage non supervisé avec le modèle LDA). Les thématiques seront ainsi créées (nous spécifions au script de rechercher 100 thématiques dans le corpus d’articles). Puis le script concatène le ou les articles dans le fichier de la thématique correspondante (les articles sont séparés par le retour chariot \n), par exemple si les articles 1, 13 et 83 correspondent au thème 10, alors les articles seront concaténés les uns à la suite des autres dans le fichier correspondant au thème 10; 10_lda_topic_subsets.txt.

Lexique

Puis, afin de trouver les thématiques (générées par LDA) les plu s proches du thème de la sécurité alimentaire, nous utilisons un lexique ayant 90 entrées de noms communs, comportant des termes de sécurité alimentaire comme “alimentaire”, ”agriculture”, ”élevage”, ”légumineuse”, ”céréales”, ”malnutrition”, etc. Le lexique provient du site Cultivoo, contenant des informations historiques et scientifiques, dont des lexiques spécifiques. Le script classe les thématiques (qui ont été générées par LDA) en fonction de leur similarité sémantique globale avec le lexique de la sé curité alimentaire (en considérant tous les articles de la thématique comme un seul texte), avec le modèle Word2Vec (plongement lexical).
Pour finir, nous prenons les thématiques les mieux classées (au-dessus de 70 %) et nous classons ensuite les articles présents dans ces meilleures thématiques selon leur similarité individuelle avec le lexique, également avec Word2Vec.

Word2vec

Word2Vec est un ensemble de modèles de réseau neuronal qui traite des données textuelles. La méthode de Word2vec est notamment implémenté dans la bibliothèque python Gensim. Word2vec permet de transformer les mots en vecteurs, et de comparer ces vecteurs entre eux. Cette comparaison permet d’avoir une représentation sémantique des mots : par exemple, les mots chat et chien sont modélisés par des vecteurs peu distants, donc leur lien sémantique est relativement proche. Nous pourrons donc avoir les mots sémantiquement proches d’un mot, les synonymes et les abréviations des mots, ou encore les différentes formes des mot s (fautes de frappe ou d’orthographe.

Résultats

Format des données

En sortie, nous aurons un fichier csv avec les articles les plus cohérents par rapport au lexique de la sécurité alimentaire (articles classés avec la probabilité la plus haute à la moins haute), et un dossier de fichiers .txt, contenant pour chaque fichier .txt un article, afin de pouvoir effectuer plus facilement les traitements d’annotations et d’avoir une meilleure visualisation de chaque article.

Outils et méthodes de l’état de l’art

Outils de reconnaissance d’entités spatiales

NLTK est la première librairie Python spécifique au TAL (2001), mais les traitements sont relativement lents et la librairie ne supporte pas toutes les langues. De plus elle n’utilise ni de modèle de réseau neuronal ni d ‘intégration de vectorisation de mots dans ces traitements.
CORENLP (Stanford) est un outil développé en Java assez robuste et rapide pour le TAL, mais n’intègre pas le plongement lexical de mot ( word embedding) dans ces traitements. Spacy , créé en 2015, est une librairie Python spécifique au TAL, basé sur du machine learning. Elle est simple d’utilisation, possède une communauté assez présente sur Internet, est robuste et rapide. Contrairement aux deux dernières outils présentés, Spacy utilise les modèles de réseaux neuronaux pour entraîner ces modèles et intègre une vectorisation des mots dans ces traitements.

Outils de reconnaissance d’entités temporelles

Pour rappel Timex est le modèle de représentation des entités nommées temporelles le plus répandu et usité depuis les MUC ( Message Understanding Conferences). Nous utiliserons donc un outil de reconnaissance d’entités temporelles suivant ce modèle parmi les outils existants: SUTime, faisant partie de Stanford CORENLP. SUTime est un tagueur d’expressions temporelles, basé sur un système de règles. L’inconvénient de cet outil est de ne traiter que des textes en anglais. TRIPS/TRIOS , développé par UzZaman et Allen en 2011. Ce tagger d’expressions temporelles utilise un modèle probabiliste (conditional random filed CRF) et également un système de règles pour la normalisation d’expressions temporelles. Ce tagueur utilise Wordnet et une ontologie en anglais, et traite alors les textes en anglais. Heideltime développé par Strötgen et Gertz en 2010, est un tagueur temporel multilingue basé sur un système de règles et supportant plusieurs langues (anglais, allemand, français, espagnol, italien, vietnamien, arabe, chinois, russe, croate, portugais, estonien, néerlandais). Heideltime est écrit en java, mais un wrapper Python a été développé afin de pouvoir l’utiliser avec ce langage.

Approche

Une fois les articles classés par rapport au lexique de la sécurité alimentaire, nous pouvons analyser les informations spatio-temporelles de ces textes, grâce à des scripts python et des librairies python spécifiques au traitement de texte.

Reconnaissance d’entités spatiales

Afin de reconnaître les entités spatiales, nous utilisons Spacy, une bibliothèque Python de Traitement Automatique du Langage (TAL). Spacy permet de traiter du texte, comme pour taguer et parser le texte, ou encore reconnaître des entités nommées. Nous utilisons cette librairie pour cette de rnière tâche, afin de repérer les entités spatiales dans les articles. Pour rappel, une entité nommée est une expression désignant un nom de personne, un nom de lieu (entité spatiale), ou un nom d’organisation, une date, une abréviation. Spacy reconnaît ces types d’entités nommées suivants pour le français :
 PER (nom d’une personne, nom de famille),
 LOC (nom d’une localisation : villes, provinces, pays, régions, fleuve, lac, montagne etc.)
 ORG (nom d’une organisation, gouvernemental, etc.)
 MISC (nom d’entités diverses, p.ex. des événements, nationalité, produits, etc.)
Nous utiliserons le modèle ‘fr’ de Spacy, afin que l’outil puisse appliquer des traitements de TAL à des textes français. Ce modèle est entraîné sur deux corpus :
● Le corpus français Sequoia (Dépendances Universelles) pour le parseur et le tagueur. Ce corpus contient des phrases en français, provenant d’Europarl (parlement européen), du journal Est Républicain (journal quotidien), de Wikipédia français (encyclopédie collective en ligne), et des documents de l’Agence Européenne du Médicament.
● Le corpus WikiNER pour la reconnaissance d’entités nommées (données textuelles en français provenant de Wikipédia français). Ces corpus contiennent un langage standard et sont donc spécifiques à notre corpus d’articles de journaux, les résultats de reconnaissance d’entités devraient être satisfaisants.

Résultats

Entités spatiales

Analyse

La bibliothèque Spacy reconnaît assez bien les entités spatiales, les noms de ville sont majoritairement bien reconnus (“Burkina”, “Kaya”, etc.), mais qu’il y a éga lement des erreurs dans l’annotation des lieux (cf. Annexe 2 p.70).

Noms de lieux peu connus

Par exemple, il y a certains oublis de noms de villages, ou de régions, comme le diminutif de certains noms de villes : Bobo ; faisant référence à Bobo -Dioulasso, Ouaga ; faisant référence à Ouagadougou. Certains quartiers peu connus ou nouveaux ne sont également pas reconnus par la bibliothèque comme Sikassa Cira, Kosyam, Accart-ville, Dapoya.

Informations graphiques

Certains mots ayant une capitale sont parfois reconnus en tant qu’entités spatiales, par exemple les mots Monsieur, Ayant, 23 Mars, J’… De nombreux mots sont également annotés en entités spatiales, alors que ce sont des mots communs et n’ont pas de lien avec un lieu, par exemple les mots Programme, ministère des Ressources, Jan 2019, Quelles, SO.GE.A.O. Ces erreurs doivent être dues à la majuscule présente dans ces mots. Le système de reconnaissance d’entités nommées s’appuie sur indices dans le texte tels que des informations graphiques et de la pos ition du mot dans la phrase (si le mot présente une majuscule et n’est pas au début de la phrase, alors le mot a une forte probabilité d’être annoté en tant qu’entité.

Informations morpho-syntaxiques

Si un mot est étiqueté en tant que nom propre alors il est possible que le système de reconnaissance d’entités l’annote en tant qu’entités, comme par exemple le mot programme, Des oublis d’annotations sont également présentes lorsque l’outil rencontre des noms de lieux ayant des mots communs : Hauts-Bassins, Boucle du Mouhoun.

Ponctuation

L’outil de reconnaissance d’entités nommées peut prendre en indice la ponctuation, en effet, il peut y avoir souvent des erreurs dans les acronymes, comme SO.GE.A.O. étant annoté en tant qu’entité spatiale, alors que c’est une organisation.

Ambiguïté sémantique

Également, les entités nommées peuvent avoir plusieurs interprétations, selon le contexte de la phrase, par exemple : Il est 8h et demie lorsque notre fourgonnette stationnait à la mairie de Koubri ; la mairie de Koubri est ici interprétée comme un lieu. En revanche, la phrase C’est autour de 15 milliards de francs CFA que la mairie de Ouaga a investi dans la réalisation d’infrastructures de voirie ; la mairie de Ouaga dans ce cas doit être interprétée comme une organisation, ce qui n’est pas toujours le cas dans les systèmes de reconnaissance d’entités nommées.

Amélioration du système de reconnaissance d’entités spatiales

Pour pallier certaines erreurs faites par Spacy, nous allons apporter des informations issues de lexiques au système de reconnaissance d’entités nommées. Spacy étant basé principalement sur un système d’apprentissage automatique, nous allons ajouter à ce système un gazetier : une liste de noms des lieu x (provinces, régions, communes, villes et villages) du Burkina Faso. Cette liste a été produite et utilisée par l’état Burkinabé pour leur enquête permanente agricole (EPA). Cela nous permettra l’annotation de villes et notamment de villages du Burkina Faso. Nous ajouterons également deux autres lexiques : l’ajout d’un dictionnaire d’adverbes obtenu sur un site d’aide en grammaire et l’ajout d’un lexique avec des mot s génériques qui étaient souvent annotés comme LOC par le système de reconnaissance d’entités spatiales, alors qu’il n’y a aucun lien entre ces mots et des entités de lieux : “S’”, “L’”, “Ndlr”, “Lundi”, “«”, “Ministre de la Culture”, “Mademoiselle”, “Commerce”, “Directeur”, “Agriculture”, “Prévenir”, “Santé” etc.. Nous spécifions au script que s’il rencontre des mots présents dans les dictionnaires des deux post-traitements (adverbes et mots génériques), alors Spacy ne doit pas les annoter en entités spatiales.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela rapport-gratuit.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières
INTRODUCTION 
ENVIRONNEMENT DE TRAVAIL
CHAPITRE 1 – ACQUISITION DU CORPUS 
CONTEXTE
1. Définition corpus
2. Données à disposition
3. Extraction des données textuelles
OUTILS ET METHODES DE L’ETAT DE L’ART
1. Web Crawling
2. Web Scraping
APPROCHE
1. Parcours du web
2. Récupération des données textuelles
3. Filtrage et écriture des articles
RESULTATS
1. Format des données
2. Synthèse
CHAPITRE 2 – IDENTIFICATION DE TEXTES PERTINENTS 
CONTEXTE
1. Définition Fouille de texte
2. Définition Traitement Automatique du Langage
3. Le TAL et la Fouille de texte
4. Apprentissage automatique
5. Topic modeling
OUTILS ET METHODES DE L’ETAT DE L’ART
1. Méthodes de Topic Modeling
2. Outils de Topic Modeling  APPROCHE
1. Apprentissage non supervisé avec le modèle LDA
2. Apprentissage non-supervisé avec le modèle LDA et Word2Vec
RESULTATS
1. Format des données
2. Evaluation
CHAPITRE 3 – IDENTIFICATION D’INFORMATIONS SPATIOTEMPORELLES ET MISE EN LIEN 
CONTEXTE
1. Définition Entités nommées
2. Reconnaissance d’entités nommées
OUTILS ET METHODES DE L’ETAT DE L’ART
1. Outils de reconnaissance d’entités spatiales
2. Outils de reconnaissance d’entités temporelles
APPROCHE
1. Reconnaissance d’entités spatiales
2. Reconnaissance d’entités temporelles
RESULTATS
1. Entités spatiales
2. Entités temporelles
3. Format des données
4. Mise en lien
CONCLUSION
BIBLIOGRAPHIE
SITOGRAPHIE 
TABLE DES FIGURES 
TABLE DES TABLEAUX
TABLE DES ANNEXES
TABLE DES MATIERES 

Lire le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *