{ "info": { "author": "Seb35", "author_email": "seb35pypi0@seb35.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: Public Domain", "Natural Language :: French", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3 :: Only", "Topic :: Text Processing :: Linguistic" ], "description": "MetsLesLiens\n============\n\nRecherche ~~et qualifie~~ (pas pour l\u2019instant) des liens dans\ndes textes de loi fran\u00e7ais.\n\nD\u00e9marrage rapide\n----------------\n\nAvant de commencer, un r\u00e9sum\u00e9 de ce qu\u2019on fait\u00a0:\n\n1. Dans cette premi\u00e8re \u00e9tape, nous cherchons \u00e0 placer des liens dans des\n textes de loi fran\u00e7ais, en gros toutes les expressions ressemblant\n plus ou moins \u00e0 \u00ab\u202farticle L. 327-3 quatertricies-0 de la loi n\u00b0\n 94-239 du 28 f\u00e9vrier 1994\u202f\u00bb.\n2. Seule une analyse syntaxique est faite \u00e0 ce stade, il n\u2019est pas\n affirm\u00e9 que l\u2019article point\u00e9 existe r\u00e9ellement\u00a0: seront donc\n retourn\u00e9s \u00e0 ce stade des *candidats de liens*.\n\nD\u00e9monstration\n'''''''''''''\n\nLes sorties de deux textes sont disponibles\u00a0:\n\n* `la loi 78-17 `__\n (`texte `__)\n* `le code civil `__\n (`texte `__)\n\nSont pr\u00e9sent\u00e9s successivement les candidats de liens\u00a0:\n\n* sous forme `texte`, avec leurs index en nombre de caract\u00e8res et leurs\n num\u00e9ro de ligne,\n* sous forme `structur\u00e9`, avec les donn\u00e9es d\u00e9coup\u00e9es et ordonn\u00e9es dans\n un forme facilement r\u00e9utilisable en Python,\n* sous forme `arbre`, avec leurs index et l\u2019ensemble des arbres captur\u00e9s.\n\nInstallation et utilisation de base\n'''''''''''''''''''''''''''''''''''\n\n1. Installer Python 3 et pip\u202f;\n2. T\u00e9l\u00e9charger cette librairie\u00a0:\n ``git clone https://framagit.org/parlement-ouvert/metslesliens.git``\n3. Installer les d\u00e9pendances avec pip\u00a0:\n ``pip install -r requirements.txt``\n4. Obtenir un texte de loi \u00e9crit en texte brut\u00a0: pas (trop) de HTML, ou\n du moins il faut que les expressions recherch\u00e9es ne soient pas\n entrecoup\u00e9es de balisages. Les textes \u00e9crits en Markdown par `Arch\u00e9o\n Lex `__ sont cens\u00e9s convenir\u202f;\n5. Lancer le programme principal donnelescandidats.py\u00a0:\n ``./donnelescandidats.py fichier_du_texte.txt``\n\nQue faire ensuite\u202f?\n-------------------\n\n1. Essayer les formats \u00ab\u202fstructur\u00e9\u202f\u00bb et \u00ab\u202farbre\u202f\u00bb dans une optique de\n r\u00e9utilisation de la biblioth\u00e8que\n\n Il est possible d\u2019ajouter un param\u00e8tre \u00ab\u202fformat\u202f\u00bb dans le programme\n principal et la biblioth\u00e8que\u00a0:\n ``./donnelescandidats.py --format=structur\u00e9 fichier_du_texte.txt``\n ``./donnelescandidats.py --format=arbre fichier_du_texte.txt``\n Le format \u00ab\u00a0structur\u00e9\u202f\u00bb retourne les structures Python pr\u00eates \u00e0 \u00eatre\n r\u00e9utilis\u00e9es dans d\u2019autres programmes, par exemple de visualisation\n ou de traitement de la loi. La structure est normalement assez\n naturelle, noter juste que, pour les articles et autres titres,\n les tuples (str, str) sont les plages d\u2019articles/titres\u202f; par exemple\n \u00ab\u202fles articles 34, 41 \u00e0 45 et 56\u202f\u00bb donnent la liste ['34', ('41', '45'),\n '56'].\n Le format \u00ab\u202farbre\u202f\u00bb permet de voir directement la structure retourn\u00e9e\n par la grammaire via Parsimonious, ce format est utile pour comprendre\n le fonctionnement interne de la librairie metslesliens et de la grammaire.\n\n2. V\u00e9rifier la qualit\u00e9\n\n Ce programme est en cours de d\u00e9veloppement, il faudrait d\u00e9sormais\n confirmer la qualit\u00e9 de la reconnaissance des liens. Pour cela, les\n humains lecteurs de cette notice sont invit\u00e9 \u00e0 comparer les r\u00e9sultats\n du programme avec ce qu\u2019ils estiment \u00eatre un lien qu\u2019il faudrait\n reconna\u00eetre de fa\u00e7on automatique.\n\n Un format sp\u00e9cial a \u00e9t\u00e9 introduit dans ce but, permettant d\u2019afficher\n un peu plus de contexte autour des pr\u00e9-candidats (les expressions\n susceptibles d\u2019\u00eatre un lien mais non-v\u00e9rifi\u00e9es par la grammaire), cela\n permet a priori de pouvoir v\u00e9rifier plus rapidement et facilement les\n potentiels liens\u00a0:\n ``./donnelescandidats.py --format=debug fichier_du_texte.txt``\n Il y a 20 caract\u00e8res avant le pr\u00e9-candidat et 120 pour le pr\u00e9-candidat,\n tous sans aucun retour \u00e0 la ligne. Lorsqu\u2019une expression est reconnue,\n elle est indiqu\u00e9e entre les caract\u00e8res \"\u2b24 \" (ce caract\u00e8re se rep\u00e8re\n bien dans les pav\u00e9s de texte).\n\n Si vous effectuez une telle t\u00e2che, d\u2019abord \u00ab\u202fmerci\u202f!\u202f\u00bb, ensuite le\n mieux est de cr\u00e9er une\n `issue `__\n pour dire ce que vous avez v\u00e9rifi\u00e9 (m\u00eame et surtout si le r\u00e9sultat du\n programme \u00e9tait correct) et, s\u2019il y a des manques ou au contraire des\n liens qui n\u2019auraient pas d\u00fbs \u00eatre reconnus, donner les expressions\n fautives dans la description de l\u2019issue.\n\n Pour les plus programmeurs, vous pouvez proposer une `merge\n request `__\n en modifiant la `grammaire\n PEG `__.\n\n3. Am\u00e9liorer la grammaire\n\n Aliment\u00e9es par les v\u00e9rifications, les probl\u00e8mes sur la grammaire peuvent\n \u00eatre corig\u00e9s. Ils sont list\u00e9s dans la colonne `\"grammaire\" `__\n de la liste des issues. Il est parfois n\u00e9cessaire d\u2019une recherche\n documentaire, par exemple sur la forme des liens vers les directives\n europ\u00e9ennes ou vers les d\u00e9cisions du Conseil constitutionnel. La correction\n proprement dite se fait en g\u00e9n\u00e9ral en changeant seulement le fichier de\n grammaire, mais il peut \u00eatre n\u00e9cessaire d\u2019adapter aussi le code Python\n (mais si vous ne savez pas coder, la premi\u00e8re \u00e9tape permet d\u00e9j\u00e0 d\u2019avancer).\n\n4. Ajouter un autre module de qualification (programmeurs)\n\n Je pense qu\u2019il faudrait ajouter un deuxi\u00e8me module de qualification\n des candidats de liens, afin de v\u00e9rifier que lesdits candidats de\n liens existent r\u00e9ellement dans les textes cibles.\n\n Cela suppose d\u2019avoir une base de donn\u00e9es exhaustive des articles\n existants, notamment la base LEGI de la DILA et notamment sa forme\n structur\u00e9e `legi.py `__. Il\n s\u2019agirait donc de cr\u00e9er une fonction v\u00e9rifiant, pour chaque candidat,\n qu\u2019il existe dans la base LEGI pour les liens externes ou dans le\n texte en cours pour les liens internes. Cette recherche utilisera\n probablement comme pivots\u00a0: le num\u00e9ro de l\u2019article, la nature du\n texte, le num\u00e9ro du texte, la date de vigueur (qui doit donc \u00eatre\n donn\u00e9e en contexte), possiblement la date du texte.\n\n Le r\u00e9sultat de cette recherche permettrait d\u2019enrichir le r\u00e9sultat,\n d\u2019abord avec un bool\u00e9en \"existe ou non\" (et une non-existence est un\n probl\u00e8me dans les donn\u00e9es ou dans leur traitement), ensuite avec des\n donn\u00e9es suppl\u00e9mentaires comme les num\u00e9ros LEGIARTI ou LEGITEXT.\n\n Voir les issues `#11 `__\n et `#17 `__.\n\n5. Discuter\n\n Possiblement sur `le topic d\u00e9di\u00e9 sur le forum Parlement\n ouvert `__.\n\nLicence\n-------\n\nLa licence est WTFPL 2.0. Au-del\u00e0 du nom provocateur, cette licence\npermet une redistribution et r\u00e9utilisation sans limites du code,\npermettant que les meilleures id\u00e9es puissent \u00eatre r\u00e9utilis\u00e9es et \u00eatre\nutiles \u00e0 la soci\u00e9t\u00e9.\n\nQuoique la licence ne l\u2019impose aucunement, les r\u00e9utilisateurs de cette\nlibrairie sont invit\u00e9s \u00e0 se faire conna\u00eetre, dans les buts\u00a0: 1)\nd\u2019\u00e9valuer la popularit\u00e9 de la librairie \u2013 et donc de motiver les\nd\u00e9veloppeurs et donc de p\u00e9renniser le d\u00e9veloppement\u202f; 2)\nd\u2019\u00e9ventuellement \u00eatre pr\u00e9venus avant un changement\nnon-r\u00e9tro-compatible\u202f; 3) d\u2019\u00e9viter que le premier contact ne soit pas \u00e0\nl\u2019occasion d\u2019un bug, ce qui n\u2019est pas forc\u00e9ment agr\u00e9able. Dans la mesure\ndu possible et des envies, les r\u00e9utilisateurs sont \u00e9galement encourag\u00e9s\n\u00e0 participer au d\u00e9veloppement de la librairie.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://framagit.org/parlement-ouvert/metslesliens", "keywords": "law,legal,legalese,france", "license": "WTFPL", "maintainer": "", "maintainer_email": "", "name": "metslesliens", "package_url": "https://pypi.org/project/metslesliens/", "platform": "Any", "project_url": "https://pypi.org/project/metslesliens/", "project_urls": { "Homepage": "https://framagit.org/parlement-ouvert/metslesliens" }, "release_url": "https://pypi.org/project/metslesliens/1.3.0/", "requires_dist": [ "parsimonious" ], "requires_python": "", "summary": "Mets des liens entre articles d\u2019un texte de loi fran\u00e7ais.", "version": "1.3.0" }, "last_serial": 3942951, "releases": { "1.3.0": [ { "comment_text": "", "digests": { "md5": "64cb1910dcc653aef004a6371680bc95", "sha256": "ec119fbe6c9d064b77284828e5eb3b3a6bd684e4633f13aea41bca5a89f01602" }, "downloads": -1, "filename": "metslesliens-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "64cb1910dcc653aef004a6371680bc95", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18447, "upload_time": "2018-06-08T13:43:55", "url": "https://files.pythonhosted.org/packages/66/fa/bbddf556c2ebbb1008f0255b3d2ff880c45ac800cac4cb0fb456d0626005/metslesliens-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ad524b5749362f0dfaa124e20dc79b7", "sha256": "b80bcc98db0f196bdf2dbdb9c7e52a592231ff1c740f3d2123c5022d1302cf8c" }, "downloads": -1, "filename": "metslesliens-1.3.0.tar.gz", "has_sig": false, "md5_digest": "7ad524b5749362f0dfaa124e20dc79b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17218, "upload_time": "2018-06-08T13:43:56", "url": "https://files.pythonhosted.org/packages/e9/1c/57d25a287d589a3d3454ba77f70f9a05c67c780f4c12e15733afc4ab6a75/metslesliens-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "64cb1910dcc653aef004a6371680bc95", "sha256": "ec119fbe6c9d064b77284828e5eb3b3a6bd684e4633f13aea41bca5a89f01602" }, "downloads": -1, "filename": "metslesliens-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "64cb1910dcc653aef004a6371680bc95", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18447, "upload_time": "2018-06-08T13:43:55", "url": "https://files.pythonhosted.org/packages/66/fa/bbddf556c2ebbb1008f0255b3d2ff880c45ac800cac4cb0fb456d0626005/metslesliens-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ad524b5749362f0dfaa124e20dc79b7", "sha256": "b80bcc98db0f196bdf2dbdb9c7e52a592231ff1c740f3d2123c5022d1302cf8c" }, "downloads": -1, "filename": "metslesliens-1.3.0.tar.gz", "has_sig": false, "md5_digest": "7ad524b5749362f0dfaa124e20dc79b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17218, "upload_time": "2018-06-08T13:43:56", "url": "https://files.pythonhosted.org/packages/e9/1c/57d25a287d589a3d3454ba77f70f9a05c67c780f4c12e15733afc4ab6a75/metslesliens-1.3.0.tar.gz" } ] }