La troisième phase du projet Boîte à Outils se fonde sur la sortie étiquetée de BAO 2 et a pour objectif d'extraire les patrons morpho-syntaxiques inhérents du style journalistique français. Pour cela, on s'est servies des possibilités octroyées par le langage Perl ainsi que XSLT et XQuery, dans le cas des fichiers tabulaires.
Les patrons choisis sont ceux qui suivent:
PATRONS |
EXEMPLES |
Dans le but d'effectuer l'extraction de patrons morphosyntaxiques, on a dû avoir recours à des méthodes différentes en fonction du fichier en entrée. Toutes les solutions sont décrites ci-dessous.
Étant donné le format du fichier TreeTagger, qui est constitué en XML, on a implémenté les langages XSLT et XQuery pour en extraire les patrons visés.
En ce qui concerne la récupération des extraits morphosyntaxiques, XSLT s'avère une méthode assez simple et efficace à implémenter. En revanche, pour pouvoir mettre en œuvre leur comptabilisation et classement, il a fallu se servir de la commande xsltproc
en Bash pour vraiment aboutir aux résultats prévus:
xsltproc xslt_PATRON_txt.xsl FICHIER_TREETAGGER.xml | sort | uniq -c | sort -fgr
Pour rendre cette procédure moins pénible, on a conçu un script Bash qui s'occupe de la comptabilisation et classement systématique de tous les patrons pour les rubriques choisies:
Le tableau qui suit détaille toutes les sorties pour chaque rubrique et patron:
XQuery est un langage de requête qui nous permet d’interroger une base de données XML d'une manière efficace et simple. W3School le définit de cette manière:
"XQuery is to XML what SQL is to databases"
Son implémentation sur les fichiers XML étiquetés par TreeTagger est extrêmement rapide, d'autant plus si l'on utilise le logiciel BaseX. Bien que tous les patrons se trouvent dans un même fichier pour chaque rubrique, les résultats sont identiques à ceux qui ont été obtenus moyennant XSLT.
Voici donc le script utilisé en entier:
Et le tableau correspondant avec l'extraction de patrons pour chaque des rubriques choisies:
Contrairement aux années précédentes, où l'usage du logiciel Cordial prévalait, cette fois-ci on s'appuiera sur Talismane comme deuxième outil pour étiqueter morphosyntaxiquement nos données. De la même façon que TreeTagger, qui nécessite du script treetagger2xml_utf8_edited.pl
pour produire une sortie structurée, Talismane se sert du programme talismane2xml_v2_edited.pl
pour tabuler ses résultats. En tout état de cause, cette conversion n'est pas strictement obligatoire si l'on vise à effectuer l'extraction de patrons, puisqu'il est toujours possible de le faire dans le propre fichier TXT à l'aide du langage Perl. À travers les deux versions qu'on détaillera ci-dessous, on a obtenu comme fichier de sortie un document contenant chaque patron et comprenant sa liste correspondante de termes triés par fréquence. Notons que les deux versions donnent des résultats identiques.
Voici deux possibilités différentes pour extraire exactement les mêmes données:
• L'une qui privilégie l'usage des expressions régulières.
• L'autre qui fait prévaloir plutôt les listes et optimise le code.
Dans les deux versions, on a fait très attention à bien effectuer la recherche globale de patrons en utilisant l'option (?=regexp)
, qui nous permet notamment de modifier la recherche séquentielle et sert à capturer des éléments (vérifiant l'expression régulière) qui peuvent être imbriqués dans l'élément trouvé juste avant. Cette méthode est appelée assertion de regard en avant. Pour plus d'informations, cliquez ici.
Voici le script utilisé en entier:
Voici le script utilisé en entier:
Voici le tableau contenant l'extraction de patrons pour chacune des rubriques choisies:
En s'appuyant sur le script de transformation talismane2xml_v2_edited.pl
(qu'on a modifié pour le rendre plus lisible) on a converti la sortie TXT Talismane en format XML et, par là même, on a pu faire l'extraction de patrons via le langage XQuery. Malheureusement, à cause de la grande taille de la plupart de nos fichiers Talismane, il s'est avéré impossible d'implémenter cette méthode, d'autant plus que le propre éditeur de texte refuse même d'ouvrir le fichier...
Dans les lignes qui suivent, on montre alors un aperçu de ce qu'on a pu extraire à partir de la rubrique 651865
, celle qui possède la taille plus petite.
Voici le script de conversion en entier:
Échantillon du document XML correspondant à la rubrique 651865
:
Le script qui suit extrait tous les patrons pour la rubrique traitée:
Et produit ce résultat :