Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fichiers doublon dans la base LEGI #11

Open
Seb35 opened this issue Mar 20, 2017 · 1 comment
Open

Fichiers doublon dans la base LEGI #11

Seb35 opened this issue Mar 20, 2017 · 1 comment

Comments

@Seb35
Copy link
Member

Seb35 commented Mar 20, 2017

Je n’avais pas remarqué ce phénomène avant que tu ne fasses la modification Legilibre/legi.py#8, @Changaco. Est-ce que tu pourrais détailler ce que tu comprends de ce phénomène et le changement de comportement que tu as fait dans legi.py ?

En regardant les résultats dans duplicate_files de legi.py (je n’ai pas encore refait tourner legi.py avec la nouvelle version, j’essaye pour l’instant de comprendre au niveau des fichiers XML), je constate effectivement que certains fichiers XML (tous les sous-dossiers texte/version, texte/struct, articles et section_ta sont touchés) sont identiques ou très similaires, à la différence principale qu’ils n’ont pas le même CID, et parfois il y a des changements mineurs (j’ai vu : ajout de référence de lien, changement de la casse dans le titre d’un décret, changement d’état entre VIGUEUR_DIFF et VIGUEUR, changement de date de publication entre 2015-10-25 et 2999-01-01).

De ce que je vois dans duplicate_files, c’est que :

  • les paires sont toujours CID=LEGITEXT… ou CID=JORFTEXT…,
  • les paires semblent être soit LEGITEXT+JORFTEXT, soit en_vigueur/non_vigueur,
  • en combinant CID et dossier ((code|TNC)_(en|non)vigueur), il semble y avoir des paires impossibles ou peu probables : par exemple il n’y a aucune paire LEGITEXT+(code(en|non)_vigueur) et JORFTEXT (ça ne veut pas forcément dire que c’est impossible, juste il n’y en a pas, donc on peut se permettre d’imaginer que c’est impossible ; en l’occurence sur cette paire, c’est plutôt une qualité de cohérence : les codes ont toujours un identifiant propre LEGITEXT et ne sont par référencés par leur identifiant de parution au JORF, autrement dit le JORF doit utiliser directement l’identifiant LEGITEXT au lieu de créer un doublon)

Les conclusions temporaires que je tire sont :

  • que les fichiers XML ne semblent pas bénéficier de contraintes fortes sur des conditions de cohérence (disons qu’on s’y attendait un peu étant donné les anomalies ressorties par legi.py)
  • qu’il y a un travail en cours de classement entre les états vigueur/non-vigueur et possiblement de transfert de JORFTEXT vers LEGITEXT en lien possible avec le travail de numérisation.

Tout complément d’information est le bienvenu !

@Changaco
Copy link
Member

Changaco commented Mar 20, 2017

La source principale des doublons est la division de la base LEGI en 4 dossiers {code,TNC}_{vigueur,non_vigueur}:

select count(*) from duplicate_files where dossier <> other_dossier;
22519

Si je me souviens bien cette séparation obsolète en 4 parties servait à vendre des licences limitées à un dossier (par exemple uniquement les codes en vigueur) avant que LEGI ne soit libérée.

L'autre source de doublons est la réutilisation de certains id dans plusieurs cid. Il s'agit probablement d'une optimisation visant à ne pas attribuer un nouveau numéro à deux éléments identiques présents dans deux "versions" d'un même texte.

select count(*) from duplicate_files where cid <> other_cid;
244

Afin de pouvoir utiliser les id comme clés primaires legi.py doit se débarrasser des doublons. Pour ça il regarde la date de dernière modification du fichier (mtime) et utilise le plus récent. Legilibre/legi.py#8 a ajouté le stockage des données des fichiers plus anciens dans duplicate_files.data pour que la base soit toujours complète.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants