Nous donnons quelques idées sur les motivations et les réalisations possibles.
exploiter des corpus de texte non structurés ou semi-structurés, en particulier réaliser des extractions d'informations, extractions automatiques, depuis des textes. découverte d'informations linguistiques (co-occurrences, concordancier, reconnaissance d'entités, etc.) récupération d'informations présentes sur le Web
production automatique de documents, production automatique de textes : mots préfixe/suffixe, pipotron, conjugaisons, édition numérique, etc. transformation d'un document (restructuration, changement de formats, édition numrique) changement de formats (texte, html, xml, LaTeX).
Ces traitements automatiques sont envisagés de grands volumes de documents/fichiers/textes. Cela justifie de devoir programmer pour automatiser ces tâches.
Langages de programmation pour les textes
Nous nous appuyons sur les principes définis durant le cours d'algorithmique.
En particulier,
Rappels
Définir d'un vocabulaire commun, lisible, non ambiguë.
Vocabulaire qui définit des opérations élémentaires :
des tâches basiques compréhensibles par tous et réutilisables.
Pour concevoir des opérations de plus haut niveau.
Python fournit sa philosophie, voici le début de son Zen :
Ce que nous retenons de la philospophie des caractéristiques du langage Python
vis-à-vis de nos contraintes vues en algorithmique et de nos besoins sur les textes :
Les programmeurs de Python en font différents usages :
De la philosophie de Perl, plus caractéristiques semblent pertinentes
pour le travail sur les textes. En particulier, Larry Wall etc.
Malgré ces points appropriés pour les textes,
d'autres points voulus par Larry Wall nous interrogent :
Ces idées sont clairement contraires à nos principes algorithmiques.
Finalement,
Usages de Perl
utilisation algorithmique dans tous les cas
Python est plus proche de l'algorithmique mais généraliste et pas dédié aux textes.
Perl est pensé pour les textes mais plus éloigné de nos préoccupations algorithmiques.
évoquons enfin le langage JavaScript
Python
Préfère :
la beauté à la laideur,
l'explicite à l'implicite,
le simple au complexe
et le complexe au compliqué,
le déroulé à l'imbriqué,
l'aéré au compact.
Prends en compte la lisibilité.
Les cas particuliers ne le sont jamais assez pour violer les règles.
Mais, à la pureté, privilégie l'aspect pratique.
Ne passe pas les erreurs sous silence,
... ou bâillonne-les explicitement.
Face à l'ambiguïté, à deviner ne te laisse pas aller.
Sache qu'il ne devrait y avoir qu'une et une seule façon de procéder
[...]
Programmation Perl
Bilan sur les langages
Les corpus et les productions.
Formats fermés, binaires, propriétaires :
- obligation d'utiliser le logiciel qui a créé le document,
- sensible au changement de version du logiciel,
- interopérabilité nulle ou limitée aux logiciels du même éditeur,
- pérennité liée à celle du logiciel,
- mélange du contenu et de la mise en forme,
- sémantique difficilement appréhendable,
- taille importante des fichiers.
Conclusion : formats non appropriés aux traitements automatiques.
Un langage ouvert : HTML
fichier texte modifiable avec n'importe quel éditeur, essentiellement du texte, parsemé de balises, HTML : un exemple avec éléments de mise en forme Ne facilite pas les traitements sémantiques... Un document HTML davantage sémantique Aide à l'extraction automatique d'information. Utilisation de CSS (Cascading StyleSheet) Sur les CSS dédiées à l'apparence, permettent du HTML sémantique, graphiquement plus puissantes que le HTML seul.Le format « Markdown »
Changement de format (pandoc) vers html, epub, LaTeX, etc.
LaTeX
Il s'agit également d'un format basé sur du texte et des instructions, il est ouvert. Les instructions LaTeX permettent de structurer le document. Plus ancien que HTML et destiné à l'édition papier. LaTeX n'est pas WYSIWYG (What You See Is What You Get).
LaTeX désigne aussi le programme qui transforme un fichier LaTeX en un fichier pdf.
TeX créé par Donald E. Knuth en 1978, LaTeX date de 1982, gratuit et fiable, seuls 5 bugs ont nécessité une nouvelle version de TeX en 35 ans d'utilisation, Donald E. Knuth récompense ceux qui découvrent de nouveaux bugs, le dernier : trouvé en 1995, payé 327,68 $, LaTeX respecte les règles de typographie (ligatures, sauts de page, etc.), les documents produits par LaTeX sont prêts à l'impression par un éditeur professionnel.
intérêt donc de produire automatiquement du code LaTeX, pour finalement obtenir des pdf de qualité
Bilan et encodage
attention à l'encodage des textes... UTF-8 ?
être capable de produire ces formats, bénéficier des outils développés par ailleurs pour chaque format
aussi les lire ?
L'environnement : GNU/Linux
logiciel libre et Linux
Éléments constitutifs d'une distribution
- un système d'exploitation, interface entre matériel et logiciels,
- en particulier, un système de fichiers,
- un environnement graphique,
- des logiciels applicatifs.
parmi les logiciels applicatifs :
- une console,
- un éditeur de texte,
- une suite bureautique (traitement de texte, tableur, etc.),
- des archiveurs et des compresseurs,
- des visualisateurs (pdf, images, musiques, vidéos, etc.),
- un navigateur Web, un lecteur de mail, etc.
Distributions Linux
- Ubuntu, Mint, Debian, Mandriva, Gentoo, Fedora, etc.
- environnements graphiques : Xfce, KDE, Gnome, Cinnamon, etc.
- stratégies différentes dans les choix des logiciels applicatifs
- et de la fréquence des mises à jour et nouvelles versions.
Peu importe pour nous. Toutes les distributions Linux disposent nativement de Perl et de Python. On n'utilisera que la console, un éditeur de textes, un navigateur.
de plus Linux présente d'autres intérêts pour le traitement des textes
instructions directement dans le terminal, traitement par lot et début de la programmation sur de grands volumes de documents
MacOS
Linux : fichiers
Système de fichiers. Principe : le système est organisé en hiérarchie de répertoires et de fichiers. Le premier point est de maîtriser ces notions. Le deuxième est d'avoir en tête où vous êtes à chaque étape d'un parcours de cette arborescence, et où sont les fichiers qui vous intéressent.
Notations principales :
- les deux points .. désigne le dossier parent du dossier dans lequel vous vous trouvez,
- l'étoile * désigne tous les fichiers du dossier courant.
Commandes Linux
Navigation dans l'arborescence de fichiers
- cd changer de dossier
- ls lister le contenu d'un dossier
Traitements des fichiers textuels
- wc nombre de lignes, mots, caractères
- grep recherche dans le contenu
- cut extraction
- sort tri des lignes
- uniq lignes sans répétition
find recherche sur les noms des fichiers.
Extraction du texte des documents
- pdftotext extraction depuis un pdf
- tesseract OCRisation depuis une image
Interpréteurs :
- python extraction depuis un pdf
- perl OCRisation depuis une image
Syntaxe des instructions et exemples
Passons en revue les syntaxes possibles pour une commande cmd.
cmd commande sans paramètrels
pdftotext document.pdf tesseract scan.pdf résultat perl .pl python .py
ls -l ls -l -h ls -lh grep -rwi pdftotext -layout tesseract -l fra scan.pdf résultat
les enchaînements (pipe)
cmd1 | cmd2grep coucou document.txt | wc -l
