Un déluge d’information
§ Big data :
⇢ V de Volume
⇢ V de Vélocité
Brève introduction à la ⇢ V de Variété (texte, image, vidéo, son, tags…)
etc.
recherche d’information § Le WWW est une source phénoménale de données, en particulier
textuelle, mais il existe beaucoup d’autres sources : mémoire
Julien Velcin
d’entreprise, données du patrimoine (ex. BnF, INA)
https://velcin.github.io
Julien Velcin - Programmation de spécialité : Python
Les moteurs
de recherche
Image credit: Go-Globe.com
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Hidden for obvious reasons
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Brevets
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Science des données Chaîne de traitement des données
§ Il faut automatiser la manipulation de ces grands volumes : § Extraction, stockage des données :
⇢ Systèmes d’information (information systems) ⇢ Comment gérer l’hétérogénéité des formats ?
Science des données
⇢ Recherche d’information (information retrieval) (data science) ⇢ Quelle structure de stockage ?
⇢ Fouille de données (data mining) § Représentation, indexation :
§ Cela nécessite le recours à : ⇢ Quelle est la meilleure représentation ?
⇢ analyse des données (data analysis) ⇢ Comment indexer les données de manière efficace ?
⇢ traitement automatique de la langue (NLP) § Analyse des données :
⇢ apprentissage automatique (machine learning) ⇢ Comment comparer des données textuelles ?
⇢ Quels algorithmes choisir ?
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Difficultés spécifiques au texte
§ Volume important, vocabulaire très vaste (erreurs, abréviations, argot,
néologismes, noms propres…)
§ Ecart entre la surface des mots et leur sens
§ Relations implicites entre les mots : synonymie, polysémie, liens de
subordination, co-références, etc.
§ Ambiguité sémantique : « Il voit le garçon avec ses lunettes » (qui
possède les lunettes ?)
Analyser les données textuelles
§ Suivant la tâche, la représentation est différente
§ Similarité entre deux textes (à partir de quels éléments, malédiction de la
dimension)
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Expressions régulières Application :
le concordancier
§ Librarie re :
§ findall permet de trouver toutes les occurrences
§ sub remplace une sous-chaîne par une autre
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Aller plus loin avec la construction d’un index Requête « carte » sur l’index des sites Web
es
x de cart
§ L’approche des expressions régulières a plusieurs limitations : es de jeu
uan t des règl e
site expliq e s p rix u anniversair
⇢ le motif cherché doit être contigu ca r t ca d e a
⇢ l’algorithme de correspondance (matching) est coûteux page web A 1 1 2 0 5 0 1 0 1 2 1 0 1
une ligne est
page web B 3 0 0 0 0 0 2 1 0 0 0 0 0
§ L’objectif est d’encoder directement les mots présents dans un un « document »
s it gé o
page web C 4 0 3 1 0 0 1 0 3 1 0 0 1
document en suivant l’hypothèse du « sac de mots » (bag of words)
ev
page web D 0 0 0 3 0 2 0 4 0 0 2 0 0
en grap
d a h iq
etc. 0 0 1 0 1 0 0 0 0 0 0 1 0
nt
de ues
1 0 0 1 0 0 0 1 0 1 2 0 0
sc
a rt
0 0 0 0 0 1 0 0 0 0 0 2 0
es
est-ce que le mot 2
rien à voir
apparaît dans le site n’ayant
document 3 ? une colonne correspond
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
à un mot du dictionnaire
Principales étapes Segmentation du texte en mots
§ Construction du dictionnaire de mots (vocabulaire) § Cette étape de tokenization est assez simple dans les langages
§ Pour chaque document, construire une représentation basée sur ce occidentaux, comme le français ou l’anglais
dictionnaire : § Elle consiste généralement en :
⇢ binaire : 0 si le mot est absent, 1 s’il est présent ⇢ définir ce qui constitue la frontière entre deux « mots »
⇢ nombre d’occurrences (term frequency) ⇢ écrire l’expression régulière correspondante
(il y a d’autres schémas de pondération) ⇢ découper la chaîne en une liste de sous-chaînes (les mots)
§ A partir de ce tableau (matrice), on peut : (en Python avec la fonction split())
⇢ calculer l’importance de chaque mot (nuage de mots clefs) § Construire le vocabulaire consiste à faire l’union de tous les mots
⇢ trouver les documents les pertinents pour une requête trouvés et dédoublonner (avec un ensemble en Python par exemple)
⇢ comparer les documents entre eux (classification, clustering)
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Quelques prétraitements usuels Visualiser le corpus : le nuage de mots
§ Mettre en minuscule les mots du document (cf. fonction lower())
§ Protéger certaines expressions (ex. « H5N1 » ou « Covid-19 »)
§ Supprimer les chiffres, les ponctuations
§ Supprimer les mots trop peu fréquents
§ Supprimer les mots outils
loi de Zipf
Julien Velcin - Programmation de spécialité : Python Julien Velcin - Programmation de spécialité : Python
Réaliser son propre moteur de recherche
§ Requête de l’utilisateur
§ Récupérer les listes des documents
§ Agréger les listes :
⇢ union des ensembles
⇢ pondérer les documents puis les trier
Julien Velcin - Programmation de spécialité : Python