Skip to main content

Mets des liens entre articles d’un texte de loi français.

Project description

Recherche ~~et qualifie~~ (pas pour l’instant) des liens dans des textes de loi français.

Démarrage rapide

Avant de commencer, un résumé de ce qu’on fait :

  1. Dans cette première étape, nous cherchons à placer des liens dans des textes de loi français, en gros toutes les expressions ressemblant plus ou moins à « article L. 327-3 quatertricies-0 de la loi n° 94-239 du 28 février 1994 ».

  2. Seule une analyse syntaxique est faite à ce stade, il n’est pas affirmé que l’article pointé existe réellement : seront donc retournés à ce stade des candidats de liens.

Démonstration

Les sorties de deux textes sont disponibles :

Sont présentés successivement les candidats de liens :

  • sous forme texte, avec leurs index en nombre de caractères et leurs numéro de ligne,

  • sous forme structuré, avec les données découpées et ordonnées dans un forme facilement réutilisable en Python,

  • sous forme arbre, avec leurs index et l’ensemble des arbres capturés.

Installation et utilisation de base

  1. Installer Python 3 et pip ;

  2. Télécharger cette librairie : git clone https://framagit.org/parlement-ouvert/metslesliens.git

  3. Installer les dépendances avec pip : pip install -r requirements.txt

  4. Obtenir un texte de loi écrit en texte brut : pas (trop) de HTML, ou du moins il faut que les expressions recherchées ne soient pas entrecoupées de balisages. Les textes écrits en Markdown par Archéo Lex sont censés convenir ;

  5. Lancer le programme principal donnelescandidats.py : ./donnelescandidats.py fichier_du_texte.txt

Que faire ensuite ?

  1. Essayer les formats « structuré » et « arbre » dans une optique de réutilisation de la bibliothèque

    Il est possible d’ajouter un paramètre « format » dans le programme principal et la bibliothèque : ./donnelescandidats.py --format=structuré fichier_du_texte.txt ./donnelescandidats.py --format=arbre fichier_du_texte.txt Le format « structuré » retourne les structures Python prêtes à être réutilisées dans d’autres programmes, par exemple de visualisation ou de traitement de la loi. La structure est normalement assez naturelle, noter juste que, pour les articles et autres titres, les tuples (str, str) sont les plages d’articles/titres ; par exemple « les articles 34, 41 à 45 et 56 » donnent la liste [‘34’, (‘41’, ‘45’), ‘56’]. Le format « arbre » permet de voir directement la structure retournée par la grammaire via Parsimonious, ce format est utile pour comprendre le fonctionnement interne de la librairie metslesliens et de la grammaire.

  2. Vérifier la qualité

    Ce programme est en cours de développement, il faudrait désormais confirmer la qualité de la reconnaissance des liens. Pour cela, les humains lecteurs de cette notice sont invité à comparer les résultats du programme avec ce qu’ils estiment être un lien qu’il faudrait reconnaître de façon automatique.

    Un format spécial a été introduit dans ce but, permettant d’afficher un peu plus de contexte autour des pré-candidats (les expressions susceptibles d’être un lien mais non-vérifiées par la grammaire), cela permet a priori de pouvoir vérifier plus rapidement et facilement les potentiels liens : ./donnelescandidats.py --format=debug fichier_du_texte.txt Il y a 20 caractères avant le pré-candidat et 120 pour le pré-candidat, tous sans aucun retour à la ligne. Lorsqu’une expression est reconnue, elle est indiquée entre les caractères “⬤ “ (ce caractère se repère bien dans les pavés de texte).

    Si vous effectuez une telle tâche, d’abord « merci ! », ensuite le mieux est de créer une issue pour dire ce que vous avez vérifié (même et surtout si le résultat du programme était correct) et, s’il y a des manques ou au contraire des liens qui n’auraient pas dûs être reconnus, donner les expressions fautives dans la description de l’issue.

    Pour les plus programmeurs, vous pouvez proposer une merge request en modifiant la grammaire PEG.

  3. Améliorer la grammaire

    Alimentées par les vérifications, les problèmes sur la grammaire peuvent être corigés. Ils sont listés dans la colonne “grammaire” de la liste des issues. Il est parfois nécessaire d’une recherche documentaire, par exemple sur la forme des liens vers les directives européennes ou vers les décisions du Conseil constitutionnel. La correction proprement dite se fait en général en changeant seulement le fichier de grammaire, mais il peut être nécessaire d’adapter aussi le code Python (mais si vous ne savez pas coder, la première étape permet déjà d’avancer).

  4. Ajouter un autre module de qualification (programmeurs)

    Je pense qu’il faudrait ajouter un deuxième module de qualification des candidats de liens, afin de vérifier que lesdits candidats de liens existent réellement dans les textes cibles.

    Cela suppose d’avoir une base de données exhaustive des articles existants, notamment la base LEGI de la DILA et notamment sa forme structurée legi.py. Il s’agirait donc de créer une fonction vérifiant, pour chaque candidat, qu’il existe dans la base LEGI pour les liens externes ou dans le texte en cours pour les liens internes. Cette recherche utilisera probablement comme pivots : le numéro de l’article, la nature du texte, le numéro du texte, la date de vigueur (qui doit donc être donnée en contexte), possiblement la date du texte.

    Le résultat de cette recherche permettrait d’enrichir le résultat, d’abord avec un booléen “existe ou non” (et une non-existence est un problème dans les données ou dans leur traitement), ensuite avec des données supplémentaires comme les numéros LEGIARTI ou LEGITEXT.

    Voir les issues #11 et #17.

  5. Discuter

    Possiblement sur le topic dédié sur le forum Parlement ouvert.

Licence

La licence est WTFPL 2.0. Au-delà du nom provocateur, cette licence permet une redistribution et réutilisation sans limites du code, permettant que les meilleures idées puissent être réutilisées et être utiles à la société.

Quoique la licence ne l’impose aucunement, les réutilisateurs de cette librairie sont invités à se faire connaître, dans les buts : 1) d’évaluer la popularité de la librairie – et donc de motiver les développeurs et donc de pérenniser le développement ; 2) d’éventuellement être prévenus avant un changement non-rétro-compatible ; 3) d’éviter que le premier contact ne soit pas à l’occasion d’un bug, ce qui n’est pas forcément agréable. Dans la mesure du possible et des envies, les réutilisateurs sont également encouragés à participer au développement de la librairie.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metslesliens-1.3.0.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

metslesliens-1.3.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file metslesliens-1.3.0.tar.gz.

File metadata

  • Download URL: metslesliens-1.3.0.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for metslesliens-1.3.0.tar.gz
Algorithm Hash digest
SHA256 b80bcc98db0f196bdf2dbdb9c7e52a592231ff1c740f3d2123c5022d1302cf8c
MD5 7ad524b5749362f0dfaa124e20dc79b7
BLAKE2b-256 e91c57d25a287d589a3d3454ba77f70f9a05c67c780f4c12e15733afc4ab6a75

See more details on using hashes here.

File details

Details for the file metslesliens-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for metslesliens-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec119fbe6c9d064b77284828e5eb3b3a6bd684e4633f13aea41bca5a89f01602
MD5 64cb1910dcc653aef004a6371680bc95
BLAKE2b-256 66fabbddf556c2ebbb1008f0255b3d2ff880c45ac800cac4cb0fb456d0626005

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page