diff --git a/data/bert+rb.annotations.train.jsonlines b/data/bert+rb.annotations.train.jsonlines new file mode 100644 index 0000000000000000000000000000000000000000..b428aa56295b1674a8e454d5369296574c5b3933 --- /dev/null +++ b/data/bert+rb.annotations.train.jsonlines @@ -0,0 +1,159 @@ +{"id": "eval_0", "text": "afin de vérifier le kilométrage , pour les véhicules équipés d ' un compteur kilométrique , les informations communiquées lors du précédent contrôle technique sont mises à la disposition des organismes de contrôle technique dès qu ' elles sont disponibles par voie électronique .", "tags": [{"start": 7, "end": 31, "tag": "action"}, {"start": 108, "end": 169, "tag": "action"}, {"start": 232, "end": 243, "tag": "action"}, {"start": 186, "end": 223, "tag": "actor"}, {"start": 38, "end": 89, "tag": "artifact"}, {"start": 0, "end": 89, "tag": "condition"}, {"start": 108, "end": 121, "tag": "condition"}, {"start": 52, "end": 60, "tag": "condition"}, {"start": 255, "end": 277, "tag": "condition"}, {"start": 139, "end": 158, "tag": "reference"}, {"start": 204, "end": 223, "tag": "reference"}, {"start": 121, "end": 158, "tag": "time"}]} +{"id": "eval_1", "text": "au cas où il n ' est pas en état de circuler dans des conditions normales de sécurité , ou qu ' il y a une irrégularité grave du point de vue des documents de bord , le véhicule doit être remorqué ou transporté .", "tags": [{"start": 35, "end": 85, "tag": "action"}, {"start": 182, "end": 210, "tag": "action"}, {"start": 165, "end": 177, "tag": "actor"}, {"start": 165, "end": 177, "tag": "artifact"}, {"start": 145, "end": 163, "tag": "artifact"}, {"start": 0, "end": 163, "tag": "condition"}, {"start": 177, "end": 182, "tag": "modality"}]} +{"id": "eval_2", "text": "au sens de la présente loi et des règlements pris en son exécution , les voies publiques comprennent la voirie de l ' etat et la voirie communale .", "tags": [{"start": 68, "end": 88, "tag": "artifact"}, {"start": 100, "end": 145, "tag": "artifact"}, {"start": 125, "end": 145, "tag": "artifact"}, {"start": 0, "end": 66, "tag": "condition"}, {"start": 10, "end": 26, "tag": "reference"}, {"start": 29, "end": 66, "tag": "reference"}]} +{"id": "eval_3", "text": "avant d ' entrer en fonction , l ' inspecteur de contrôle technique prête devant le ministre le serment suivant : je jure de remplir mes fonctions avec intégrité , exactitude et impartialité .", "tags": [{"start": 9, "end": 28, "tag": "action"}, {"start": 124, "end": 190, "tag": "action"}, {"start": 30, "end": 67, "tag": "actor"}, {"start": 80, "end": 92, "tag": "actor"}, {"start": 151, "end": 190, "tag": "artifact"}, {"start": 0, "end": 28, "tag": "condition"}, {"start": 121, "end": 190, "tag": "condition"}]} +{"id": "eval_4", "text": "avant de décerner un avertissement taxé en relation avec une contravention donnant lieu à une réduction de points le membre de la police grand-ducale ou de l ' administration des douanes et accises avise le contrevenant de la réduction de points qu ' entraîne le règlement de cet avertissement taxé .", "tags": [{"start": 113, "end": 197, "tag": "actor"}, {"start": 203, "end": 298, "tag": "actor"}, {"start": 17, "end": 113, "tag": "artifact"}, {"start": 0, "end": 113, "tag": "condition"}, {"start": 259, "end": 298, "tag": "reference"}, {"start": 0, "end": 113, "tag": "time"}]} +{"id": "eval_5", "text": "ce contrôle donne lieu à la délivrance par l ' organisme qui a effectué le contrôle technique d ' un certificat de contrôle technique ;", "tags": [{"start": 42, "end": 93, "tag": "actor"}, {"start": 97, "end": 133, "tag": "artifact"}]} +{"id": "eval_6", "text": "ce délai prend cours à la date où , soit la dernière condamnation pour l ' une desdites infractions est devenue irrévocable , soit l ' intéressé s ' est acquitté du dernier avertissement taxé pour l ' une de ces infractions .", "tags": [{"start": 144, "end": 161, "tag": "action"}, {"start": 186, "end": 223, "tag": "action"}, {"start": 130, "end": 144, "tag": "actor"}, {"start": 40, "end": 99, "tag": "artifact"}, {"start": 161, "end": 223, "tag": "artifact"}, {"start": 20, "end": 223, "tag": "condition"}, {"start": 70, "end": 99, "tag": "reference"}, {"start": 196, "end": 223, "tag": "reference"}, {"start": 22, "end": 223, "tag": "time"}]} +{"id": "eval_7", "text": "ces directives sont reprises dans le droit national par des règlements grand-ducaux , lesquels peuvent disposer que ces directives ne seront pas publiées au mémorial et que leur publication au journal officiel de l ' union européenne en tient lieu .", "tags": [{"start": 14, "end": 28, "tag": "action"}, {"start": 102, "end": 247, "tag": "action"}, {"start": 130, "end": 153, "tag": "action"}, {"start": 0, "end": 14, "tag": "actor"}, {"start": 115, "end": 130, "tag": "actor"}, {"start": 33, "end": 51, "tag": "actor"}, {"start": 55, "end": 247, "tag": "actor"}, {"start": 212, "end": 233, "tag": "actor"}, {"start": 153, "end": 165, "tag": "location"}, {"start": 212, "end": 233, "tag": "location"}, {"start": 0, "end": 14, "tag": "reference"}, {"start": 115, "end": 130, "tag": "reference"}, {"start": 33, "end": 51, "tag": "reference"}]} +{"id": "eval_8", "text": "ces documents sont remplacés pour les véhicules de l ' armée et destinés à son usage exclusif par une fiche caractéristique dont un règlement grand-ducal détermine les inscriptions , et qui est délivrée par le chef de l ' etat-major .", "tags": [{"start": 13, "end": 28, "tag": "action"}, {"start": 189, "end": 202, "tag": "action"}, {"start": 33, "end": 60, "tag": "actor"}, {"start": 206, "end": 232, "tag": "actor"}, {"start": 0, "end": 13, "tag": "artifact"}, {"start": 97, "end": 232, "tag": "artifact"}, {"start": 72, "end": 93, "tag": "condition"}, {"start": 128, "end": 153, "tag": "reference"}]} +{"id": "eval_9", "text": "ces délais sont portés à quatre ans pour les véhicules historiques .", "tags": [{"start": 10, "end": 22, "tag": "action"}, {"start": 0, "end": 10, "tag": "actor"}, {"start": 40, "end": 66, "tag": "artifact"}, {"start": 24, "end": 35, "tag": "time"}]} +{"id": "eval_10", "text": "ces frais sont fixés par règlement grand-ducal .", "tags": [{"start": 9, "end": 20, "tag": "action"}, {"start": 0, "end": 9, "tag": "actor"}, {"start": 24, "end": 46, "tag": "artifact"}, {"start": 24, "end": 46, "tag": "reference"}]} +{"id": "eval_11", "text": "cet accord n ' est pas requis dans le cas des règlements édictés par le collège des bourgmestre et échevins et dont l ' effet n ' excède pas soixante-douze heures .", "tags": [{"start": 10, "end": 29, "tag": "action"}, {"start": 68, "end": 107, "tag": "actor"}, {"start": 41, "end": 162, "tag": "artifact"}, {"start": 29, "end": 162, "tag": "condition"}, {"start": 140, "end": 162, "tag": "time"}]} +{"id": "eval_12", "text": "cette amende a le caractère d ' une peine de police .", "tags": [{"start": 0, "end": 12, "tag": "actor"}]} +{"id": "eval_13", "text": "cette restriction est levée dès que le véhicule est réparé ou mis en conformité .", "tags": [{"start": 17, "end": 27, "tag": "action"}, {"start": 61, "end": 79, "tag": "action"}, {"start": 35, "end": 47, "tag": "artifact"}, {"start": 65, "end": 79, "tag": "condition"}]} +{"id": "eval_14", "text": "cette réduction intervient de plein droit .", "tags": [{"start": 0, "end": 15, "tag": "artifact"}]} +{"id": "eval_15", "text": "cette somme correspond au montant de l ' avertissement taxé .", "tags": [{"start": 0, "end": 11, "tag": "artifact"}, {"start": 36, "end": 59, "tag": "artifact"}, {"start": 11, "end": 22, "tag": "modality"}]} +{"id": "eval_16", "text": "cette suspension est constatée par un arrêté pris par le ministre ;", "tags": [{"start": 16, "end": 30, "tag": "action"}, {"start": 53, "end": 65, "tag": "actor"}, {"start": 34, "end": 65, "tag": "artifact"}, {"start": 16, "end": 30, "tag": "modality"}]} +{"id": "eval_17", "text": "dans ce cas , le paiement de la taxe ne préjudicie pas au sort d ' une action en justice .", "tags": [{"start": 28, "end": 36, "tag": "artifact"}, {"start": 36, "end": 54, "tag": "modality"}]} +{"id": "eval_18", "text": "dans le cas des règlements d ' urgence édictés par le collège des bourgmestre et échevins , cet accord est requis avant la confirmation éventuelle de ces règlements par le conseil communal .", "tags": [{"start": 38, "end": 89, "tag": "action"}, {"start": 102, "end": 113, "tag": "action"}, {"start": 50, "end": 89, "tag": "actor"}, {"start": 168, "end": 188, "tag": "actor"}, {"start": 149, "end": 164, "tag": "artifact"}, {"start": 0, "end": 89, "tag": "condition"}, {"start": 119, "end": 188, "tag": "time"}]} +{"id": "eval_19", "text": "dans le cas où la personne a consommé des boissons alcooliques en quantité telle que le taux d ' alcool est de respectivement d ' au moins 0 , 25 mg ou 0 , 10 mg d ' alcool par litre d ' air expiré sans atteindre 0 , 35 mg d ' alcool par litre d ' air expiré , les membres de la police grand-ducale habilités à cet effet par le directeur général de la police grand-ducale peuvent décerner un avertissement taxé .", "tags": [{"start": 26, "end": 37, "tag": "action"}, {"start": 379, "end": 410, "tag": "action"}, {"start": 14, "end": 26, "tag": "actor"}, {"start": 260, "end": 371, "tag": "actor"}, {"start": 324, "end": 371, "tag": "actor"}, {"start": 37, "end": 62, "tag": "artifact"}, {"start": 388, "end": 410, "tag": "artifact"}, {"start": 0, "end": 258, "tag": "condition"}, {"start": 298, "end": 308, "tag": "condition"}, {"start": 320, "end": 371, "tag": "condition"}, {"start": 371, "end": 379, "tag": "modality"}]} +{"id": "eval_20", "text": "dans les deux mois qui suivent , la personne agréée est tenue de se mettre en conformité avec les exigences de son agrément et d ' introduire une demande de modification de ce dernier .", "tags": [{"start": 64, "end": 74, "tag": "action"}, {"start": 130, "end": 183, "tag": "action"}, {"start": 32, "end": 51, "tag": "actor"}, {"start": 110, "end": 123, "tag": "artifact"}, {"start": 0, "end": 30, "tag": "condition"}, {"start": 51, "end": 61, "tag": "modality"}, {"start": 4, "end": 30, "tag": "time"}]} +{"id": "eval_21", "text": "dans les mêmes conditions ainsi qu ' en cas de mainlevée d ' une restriction d ' emploi ou de validité ou en cas de mainlevée d ' un refus de transcription , il peut obliger l ' intéressé à accomplir une période probatoire qui n ' excédera pas douze mois ;", "tags": [{"start": 165, "end": 254, "tag": "action"}, {"start": 60, "end": 102, "tag": "artifact"}, {"start": 129, "end": 155, "tag": "artifact"}, {"start": 199, "end": 254, "tag": "artifact"}, {"start": 0, "end": 155, "tag": "condition"}, {"start": 157, "end": 165, "tag": "modality"}, {"start": 243, "end": 254, "tag": "time"}]} +{"id": "eval_22", "text": "dans les mêmes conditions il peut aussi retirer les certificats d ' identification relatifs aux signes distinctifs particuliers et aux plaques spéciales sous le couvert de lesquels des véhicules routiers sont mis en circulation sur la voie publique ainsi que les plaques rouges et les autorisations de leur utilisation .", "tags": [{"start": 39, "end": 318, "tag": "action"}, {"start": 203, "end": 212, "tag": "action"}, {"start": 47, "end": 318, "tag": "artifact"}, {"start": 91, "end": 127, "tag": "artifact"}, {"start": 180, "end": 203, "tag": "artifact"}, {"start": 280, "end": 318, "tag": "artifact"}, {"start": 0, "end": 25, "tag": "condition"}, {"start": 91, "end": 318, "tag": "condition"}, {"start": 231, "end": 248, "tag": "location"}, {"start": 25, "end": 33, "tag": "modality"}]} +{"id": "eval_23", "text": "dans la mesure où plusieurs durées de validité du certificat de contrôle technique sont susceptibles de s ' appliquer à un véhicule routier déterminé le jour de la délivrance du certificat , l ' échéance la plus rapprochée est d ' application , exception faite des véhicules historiques ainsi que des véhicules routiers qui sont destinés au service d ' incendie et à la protection civile et qui sont immatriculés comme tels en raison de leur conception et de leur équipement ainsi que de leur affectation aux services d ' intervention en question .", "tags": [{"start": 103, "end": 117, "tag": "action"}, {"start": 394, "end": 412, "tag": "action"}, {"start": 264, "end": 286, "tag": "actor"}, {"start": 300, "end": 546, "tag": "actor"}, {"start": 337, "end": 361, "tag": "actor"}, {"start": 504, "end": 546, "tag": "actor"}, {"start": 46, "end": 82, "tag": "artifact"}, {"start": 119, "end": 149, "tag": "artifact"}, {"start": 0, "end": 188, "tag": "condition"}, {"start": 260, "end": 546, "tag": "condition"}, {"start": 222, "end": 226, "tag": "modality"}, {"start": 329, "end": 333, "tag": "modality"}, {"start": 539, "end": 543, "tag": "modality"}, {"start": 149, "end": 188, "tag": "time"}, {"start": 190, "end": 222, "tag": "time"}]} +{"id": "eval_24", "text": "des numéros d ' immatriculation personnalisés peuvent être accordés sur demande écrite , moyennant paiement d ' une taxe ;", "tags": [{"start": 53, "end": 67, "tag": "action"}, {"start": 0, "end": 45, "tag": "artifact"}, {"start": 67, "end": 86, "tag": "condition"}, {"start": 45, "end": 53, "tag": "modality"}]} +{"id": "eval_25", "text": "elle n ' est pas non plus donnée dans un délai de 24 mois qui suit le terme d ' une suspension du droit de conduire .", "tags": [{"start": 0, "end": 32, "tag": "action"}, {"start": 37, "end": 115, "tag": "time"}, {"start": 66, "end": 115, "tag": "time"}]} +{"id": "eval_26", "text": "elle reste applicable pour l ' appréciation des infractions commises avant l ' entrée en vigueur de la présente loi .", "tags": [{"start": 59, "end": 115, "tag": "action"}, {"start": 43, "end": 115, "tag": "artifact"}, {"start": 21, "end": 115, "tag": "condition"}, {"start": 0, "end": 21, "tag": "modality"}, {"start": 99, "end": 115, "tag": "reference"}, {"start": 74, "end": 115, "tag": "time"}]} +{"id": "eval_27", "text": "elles peuvent , notamment sur les voies publiques des quartiers résidentiels , prévoir des modalités particulières d ' utilisation des emplacements de stationnement et de parcage en faveur des véhicules des résidents .", "tags": [{"start": 78, "end": 216, "tag": "action"}, {"start": 130, "end": 178, "tag": "artifact"}, {"start": 192, "end": 216, "tag": "artifact"}, {"start": 15, "end": 76, "tag": "condition"}, {"start": 49, "end": 76, "tag": "location"}, {"start": 0, "end": 13, "tag": "modality"}]} +{"id": "eval_28", "text": "elles peuvent aussi réserver le stationnement et le parcage de certains emplacements signalés comme tels aux véhicules utilisés par des personnes dont la mission ou la condition physique justifie pareille dérogation ;", "tags": [{"start": 19, "end": 215, "tag": "action"}, {"start": 62, "end": 104, "tag": "artifact"}, {"start": 104, "end": 215, "tag": "artifact"}, {"start": 84, "end": 93, "tag": "condition"}, {"start": 104, "end": 215, "tag": "condition"}, {"start": 62, "end": 104, "tag": "location"}, {"start": 0, "end": 13, "tag": "modality"}]} +{"id": "eval_29", "text": "elles sont dédommagées sur base forfaitaire pour le déchet de recettes résultant du non- paiement des taxes de stationnement et de parcage sur leur territoire respectif .", "tags": [{"start": 0, "end": 22, "tag": "action"}, {"start": 48, "end": 168, "tag": "artifact"}, {"start": 101, "end": 138, "tag": "artifact"}, {"start": 43, "end": 168, "tag": "condition"}, {"start": 142, "end": 168, "tag": "location"}]} +{"id": "eval_30", "text": "en l ' absence d ' un examen sommaire de l ' haleine , d ' un examen de l ' air expiré , d ' une prise de sang ou d ' un examen médical , l ' ivresse ou l ' influence de l ' alcool peut être établie par tous les autres moyens de preuve prévus en matière pénale .", "tags": [{"start": 185, "end": 198, "tag": "action"}, {"start": 18, "end": 52, "tag": "artifact"}, {"start": 58, "end": 86, "tag": "artifact"}, {"start": 92, "end": 110, "tag": "artifact"}, {"start": 117, "end": 135, "tag": "artifact"}, {"start": 0, "end": 135, "tag": "condition"}, {"start": 235, "end": 242, "tag": "condition"}, {"start": 180, "end": 185, "tag": "modality"}, {"start": 242, "end": 260, "tag": "reference"}]} +{"id": "eval_31", "text": "en cas d ' acquittement du prévenu , toute somme dont il s ' est éventuellement acquitté lui est restituée .", "tags": [{"start": 88, "end": 106, "tag": "action"}, {"start": 36, "end": 88, "tag": "artifact"}, {"start": 0, "end": 34, "tag": "condition"}, {"start": 53, "end": 88, "tag": "modality"}]} +{"id": "eval_32", "text": "en cas d ' impossibilité constatée par un médecin de procéder à une prise de sang , la personne concernée doit se soumettre à un examen médical à l ' effet de constater si elle se trouve sous l ' emprise d ' une des substances prévues au point 1 .", "tags": [{"start": 52, "end": 81, "tag": "action"}, {"start": 110, "end": 123, "tag": "action"}, {"start": 158, "end": 245, "tag": "action"}, {"start": 38, "end": 49, "tag": "actor"}, {"start": 83, "end": 105, "tag": "actor"}, {"start": 125, "end": 143, "tag": "artifact"}, {"start": 211, "end": 245, "tag": "artifact"}, {"start": 0, "end": 81, "tag": "condition"}, {"start": 226, "end": 234, "tag": "condition"}, {"start": 105, "end": 110, "tag": "modality"}, {"start": 234, "end": 245, "tag": "reference"}]} +{"id": "eval_33", "text": "en cas d ' impossibilité de contacter le propriétaire ou le détenteur d ' un véhicule , ce véhicule peut de l ' accord du procureur d ' etat être considéré comme délaissé .", "tags": [{"start": 27, "end": 85, "tag": "action"}, {"start": 140, "end": 155, "tag": "action"}, {"start": 37, "end": 85, "tag": "actor"}, {"start": 37, "end": 85, "tag": "artifact"}, {"start": 0, "end": 85, "tag": "condition"}, {"start": 99, "end": 104, "tag": "modality"}]} +{"id": "eval_34", "text": "en cas d ' impossibilité de procéder à une prise d ' urine , la quantité de sang est augmentée du double .", "tags": [{"start": 27, "end": 58, "tag": "action"}, {"start": 80, "end": 94, "tag": "action"}, {"start": 38, "end": 58, "tag": "artifact"}, {"start": 60, "end": 80, "tag": "artifact"}, {"start": 0, "end": 58, "tag": "condition"}]} +{"id": "eval_35", "text": "en cas de concours idéal d ' infractions , seule la réduction de points la plus élevée est appliquée .", "tags": [{"start": 0, "end": 40, "tag": "condition"}, {"start": 86, "end": 100, "tag": "modality"}]} +{"id": "eval_36", "text": "en cas de concours réel , la réduction de points se cumule dans la limite de 6 points , lorsqu ' il s ' agit exclusivement de contraventions , et dans la limite de 8 points , lorsqu ' il y a au moins un délit parmi les infractions retenues .", "tags": [{"start": 48, "end": 58, "tag": "action"}, {"start": 183, "end": 190, "tag": "action"}, {"start": 76, "end": 85, "tag": "artifact"}, {"start": 163, "end": 172, "tag": "artifact"}, {"start": 199, "end": 208, "tag": "artifact"}, {"start": 214, "end": 239, "tag": "artifact"}, {"start": 0, "end": 23, "tag": "condition"}, {"start": 87, "end": 96, "tag": "condition"}, {"start": 174, "end": 183, "tag": "condition"}, {"start": 122, "end": 140, "tag": "condition"}, {"start": 208, "end": 239, "tag": "condition"}]} +{"id": "eval_37", "text": "en cas de doute , la validité du certificat de contrôle technique peut être vérifiée avant du reconnaître .", "tags": [{"start": 70, "end": 84, "tag": "action"}, {"start": 90, "end": 105, "tag": "action"}, {"start": 29, "end": 65, "tag": "artifact"}, {"start": 0, "end": 15, "tag": "condition"}, {"start": 65, "end": 70, "tag": "modality"}]} +{"id": "eval_38", "text": "en cas de non- respect par l ' atelier des conditions de son agrément , le ministre peut procéder au retrait temporaire ou définitif de l ' agrément .", "tags": [{"start": 88, "end": 148, "tag": "action"}, {"start": 26, "end": 38, "tag": "actor"}, {"start": 71, "end": 83, "tag": "actor"}, {"start": 135, "end": 148, "tag": "artifact"}, {"start": 0, "end": 69, "tag": "condition"}, {"start": 83, "end": 88, "tag": "modality"}]} +{"id": "eval_39", "text": "en cas de non- respect par l ' intéressé des conditions de son agrément , le ministre peut procéder au retrait temporaire ou définitif de celui-ci .", "tags": [{"start": 90, "end": 146, "tag": "action"}, {"start": 26, "end": 40, "tag": "actor"}, {"start": 73, "end": 85, "tag": "actor"}, {"start": 58, "end": 71, "tag": "artifact"}, {"start": 0, "end": 71, "tag": "condition"}, {"start": 85, "end": 90, "tag": "modality"}]} +{"id": "eval_40", "text": "en cas de remise en circulation au luxembourg d ' un véhicule qui y a été immatriculé et qui a changé de propriétaire , ce véhicule doit faire l ' objet d ' une transcription .", "tags": [{"start": 49, "end": 117, "tag": "artifact"}, {"start": 119, "end": 131, "tag": "artifact"}, {"start": 0, "end": 117, "tag": "condition"}, {"start": 31, "end": 45, "tag": "location"}, {"start": 131, "end": 136, "tag": "modality"}]} +{"id": "eval_41", "text": "en cas de récidive le maximum de l ' amende est prononcé .", "tags": [{"start": 43, "end": 56, "tag": "action"}, {"start": 32, "end": 43, "tag": "artifact"}, {"start": 0, "end": 18, "tag": "condition"}]} +{"id": "eval_42", "text": "en cas de surcharge constatée , les frais occasionnés par le pesage sont à charge du propriétaire ou du détenteur du véhicule .", "tags": [{"start": 81, "end": 97, "tag": "actor"}, {"start": 100, "end": 125, "tag": "actor"}, {"start": 113, "end": 125, "tag": "artifact"}, {"start": 0, "end": 29, "tag": "condition"}, {"start": 41, "end": 53, "tag": "condition"}]} +{"id": "eval_43", "text": "en vue de l ' instruction des dossiers , elle peut s ' entourer de toutes les informations requises et s ' adjoindre d ' experts .", "tags": [{"start": 50, "end": 63, "tag": "action"}, {"start": 102, "end": 116, "tag": "action"}, {"start": 25, "end": 38, "tag": "artifact"}, {"start": 66, "end": 99, "tag": "artifact"}, {"start": 40, "end": 50, "tag": "modality"}]} +{"id": "eval_44", "text": "en vue de sa mise en fourrière , les membres de la police grand-ducale pourront , en cas de besoin , ouvrir ou faire ouvrir les portières du véhicule aux frais et risques du contrevenant .", "tags": [{"start": 100, "end": 186, "tag": "action"}, {"start": 32, "end": 70, "tag": "actor"}, {"start": 170, "end": 186, "tag": "actor"}, {"start": 123, "end": 149, "tag": "artifact"}, {"start": 81, "end": 98, "tag": "condition"}, {"start": 70, "end": 79, "tag": "modality"}]} +{"id": "eval_45", "text": "en vue de son agrément , l ' atelier intéressé doit présenter les garanties nécessaires d ' honorabilité et de qualification professionnelle .", "tags": [{"start": 51, "end": 140, "tag": "action"}, {"start": 24, "end": 46, "tag": "actor"}, {"start": 9, "end": 22, "tag": "artifact"}, {"start": 61, "end": 140, "tag": "artifact"}, {"start": 0, "end": 22, "tag": "condition"}, {"start": 46, "end": 51, "tag": "modality"}]} +{"id": "eval_46", "text": "en vue de son agrément , l ' intéressé doit en outre fournir la preuve de sa qualification professionnelle qui s ' apprécie sur base de la disponibilité des ressources humaines et des infrastructures et équipements requis en vue de l ' exécution de la mission ainsi que sur base de la formation et de l ' expérience professionnelles du personnel effectivement affecté à dispenser la formation afférente .", "tags": [{"start": 52, "end": 402, "tag": "action"}, {"start": 369, "end": 402, "tag": "action"}, {"start": 24, "end": 38, "tag": "actor"}, {"start": 332, "end": 402, "tag": "actor"}, {"start": 60, "end": 402, "tag": "artifact"}, {"start": 135, "end": 259, "tag": "artifact"}, {"start": 281, "end": 402, "tag": "artifact"}, {"start": 0, "end": 22, "tag": "condition"}, {"start": 345, "end": 367, "tag": "condition"}, {"start": 106, "end": 402, "tag": "condition"}, {"start": 38, "end": 43, "tag": "modality"}]} +{"id": "eval_47", "text": "est considéré comme numéro d ' immatriculation personnalisé tout numéro attribué en dehors de l ' ordre alphanumérique de la série courante et des séries spéciales .", "tags": [{"start": 0, "end": 13, "tag": "action"}, {"start": 19, "end": 59, "tag": "artifact"}, {"start": 19, "end": 163, "tag": "artifact"}, {"start": 80, "end": 163, "tag": "condition"}]} +{"id": "eval_48", "text": "est passible d ' un emprisonnement de huit jours à un an et d ' une amende de 251 à 5 .000 euros , ou d ' une de ces peines seulement , toute personne qui aura importé ou mis en vente des véhicules routiers ou des éléments et composants de véhicules routiers qui ne satisfont pas aux exigences du présent article .", "tags": [{"start": 135, "end": 312, "tag": "actor"}, {"start": 12, "end": 312, "tag": "condition"}, {"start": 293, "end": 312, "tag": "reference"}]} +{"id": "eval_49", "text": "est puni des peines prévues au paragraphe 1er , même en l ' absence de signes manifestes d ' ivresse , tout conducteur d ' un véhicule ou d ' un animal , ainsi que tout piéton impliqué dans un accident , s ' il a consommé des boissons alcooliques en quantité telle que le taux d ' alcool est d ' au moins 1 , 2 g d ' alcool par litre de sang ou d ' au moins 0 , 55 mg d ' alcool par litre d ' air expiré .", "tags": [{"start": 0, "end": 8, "tag": "action"}, {"start": 207, "end": 221, "tag": "action"}, {"start": 102, "end": 201, "tag": "actor"}, {"start": 163, "end": 201, "tag": "actor"}, {"start": 122, "end": 134, "tag": "artifact"}, {"start": 141, "end": 151, "tag": "artifact"}, {"start": 221, "end": 246, "tag": "artifact"}, {"start": 19, "end": 27, "tag": "condition"}, {"start": 47, "end": 100, "tag": "condition"}, {"start": 175, "end": 184, "tag": "condition"}, {"start": 203, "end": 207, "tag": "condition"}, {"start": 246, "end": 403, "tag": "condition"}, {"start": 27, "end": 45, "tag": "reference"}]} +{"id": "eval_50", "text": "est également considéré comme abandonné le véhicule qui a été immobilisé dans les conditions des hypothèses sous 2 et 4 du paragraphe 1er de l ' article 17 , et qui n ' a pas été déplacé dans les 8 jours après l ' échéance du délai que les membres de la police grand-ducale ont imparti pour ce faire à son conducteur ou à son propriétaire ou à son détenteur .", "tags": [{"start": 55, "end": 72, "tag": "action"}, {"start": 164, "end": 186, "tag": "action"}, {"start": 39, "end": 357, "tag": "actor"}, {"start": 235, "end": 273, "tag": "actor"}, {"start": 301, "end": 316, "tag": "actor"}, {"start": 321, "end": 338, "tag": "actor"}, {"start": 343, "end": 357, "tag": "actor"}, {"start": 39, "end": 357, "tag": "artifact"}, {"start": 51, "end": 357, "tag": "condition"}, {"start": 55, "end": 72, "tag": "modality"}, {"start": 164, "end": 186, "tag": "modality"}, {"start": 0, "end": 23, "tag": "modality"}, {"start": 92, "end": 155, "tag": "reference"}, {"start": 191, "end": 203, "tag": "time"}, {"start": 209, "end": 357, "tag": "time"}]} +{"id": "eval_51", "text": "il avise la personne qu ' elle peut demander à titre de preuve contraire à être soumise à une prise de sang .", "tags": [{"start": 0, "end": 8, "tag": "action"}, {"start": 35, "end": 107, "tag": "action"}, {"start": 74, "end": 87, "tag": "action"}, {"start": 8, "end": 20, "tag": "actor"}, {"start": 55, "end": 72, "tag": "artifact"}, {"start": 44, "end": 72, "tag": "condition"}, {"start": 25, "end": 35, "tag": "modality"}]} +{"id": "eval_52", "text": "il doit disposer d ' un système d ' assurance-qualité qui est accrédité selon les normes techniques à déterminer par règlement grand-ducal .", "tags": [{"start": 7, "end": 138, "tag": "action"}, {"start": 20, "end": 138, "tag": "artifact"}, {"start": 16, "end": 138, "tag": "condition"}, {"start": 0, "end": 7, "tag": "modality"}, {"start": 116, "end": 138, "tag": "reference"}]} +{"id": "eval_53", "text": "il doit établir que son personnel , responsable d ' effectuer les opérations de contrôle technique , est titulaire d ' un agrément en tant qu ' inspecteur de contrôle technique valable , délivré par le ministre conformément à l ' article 4quater .", "tags": [{"start": 7, "end": 245, "tag": "action"}, {"start": 51, "end": 98, "tag": "action"}, {"start": 186, "end": 245, "tag": "action"}, {"start": 19, "end": 98, "tag": "actor"}, {"start": 198, "end": 210, "tag": "actor"}, {"start": 118, "end": 245, "tag": "artifact"}, {"start": 114, "end": 245, "tag": "condition"}, {"start": 0, "end": 7, "tag": "modality"}, {"start": 225, "end": 245, "tag": "reference"}]} +{"id": "eval_54", "text": "il doit être restitué sans délai au ministre .", "tags": [{"start": 7, "end": 21, "tag": "action"}, {"start": 32, "end": 44, "tag": "actor"}, {"start": 21, "end": 32, "tag": "condition"}, {"start": 0, "end": 7, "tag": "modality"}]} +{"id": "eval_55", "text": "il en est exceptionnellement de même pour suppléer à la carence des communes de réglementer la circulation sur la voirie de l ' etat à l ' intérieur des agglomérations , lorsque l ' intérêt de la sécurité et de la commodité des usagers de la route et des riverains l ' exige .", "tags": [{"start": 41, "end": 167, "tag": "action"}, {"start": 79, "end": 167, "tag": "action"}, {"start": 63, "end": 76, "tag": "actor"}, {"start": 110, "end": 132, "tag": "artifact"}, {"start": 189, "end": 264, "tag": "condition"}]} +{"id": "eval_56", "text": "il est interdit de conduire un véhicule ou un animal à une vitesse dangereuse selon les circonstances ou de dépasser les limitations de vitesse prescrites par les dispositions réglementaires prises en exécution des articles 1er , 3 et 5 de la présente loi .", "tags": [{"start": 18, "end": 101, "tag": "action"}, {"start": 107, "end": 255, "tag": "action"}, {"start": 27, "end": 52, "tag": "artifact"}, {"start": 42, "end": 52, "tag": "artifact"}, {"start": 15, "end": 255, "tag": "condition"}, {"start": 0, "end": 15, "tag": "modality"}, {"start": 158, "end": 255, "tag": "reference"}]} +{"id": "eval_57", "text": "il est tenu compte d ' une élimination adéquate d ' alcool par l ' organisme entre le moment de l ' examen de l ' air expiré et celui de la prise de sang .", "tags": [{"start": 62, "end": 76, "tag": "actor"}, {"start": 109, "end": 124, "tag": "artifact"}, {"start": 76, "end": 153, "tag": "condition"}, {"start": 82, "end": 153, "tag": "time"}]} +{"id": "eval_58", "text": "il peut en outre prévoir les conditions suivant lesquelles le ministre peut exempter certaines catégories de véhicules de l ' immatriculation , les circonstances particulières dans lesquelles le ministre peut autoriser le report temporaire de l ' immatriculation définitive d ' un véhicule routier au luxembourg , ainsi que les conditions dans lesquelles le ministre peut autoriser la mise en circulation d ' un véhicule routier sur la voie publique sous le couvert d ' un signe distinctif particulier , d ' une plaque spéciale ou d ' un numéro de plaque rouge .", "tags": [{"start": 75, "end": 141, "tag": "action"}, {"start": 208, "end": 311, "tag": "action"}, {"start": 371, "end": 560, "tag": "action"}, {"start": 58, "end": 70, "tag": "actor"}, {"start": 191, "end": 203, "tag": "actor"}, {"start": 354, "end": 366, "tag": "actor"}, {"start": 84, "end": 118, "tag": "artifact"}, {"start": 242, "end": 311, "tag": "artifact"}, {"start": 469, "end": 501, "tag": "artifact"}, {"start": 507, "end": 527, "tag": "artifact"}, {"start": 534, "end": 560, "tag": "artifact"}, {"start": 39, "end": 141, "tag": "condition"}, {"start": 175, "end": 311, "tag": "condition"}, {"start": 338, "end": 560, "tag": "condition"}, {"start": 297, "end": 311, "tag": "location"}, {"start": 432, "end": 449, "tag": "location"}, {"start": 0, "end": 7, "tag": "modality"}]} +{"id": "eval_59", "text": "il peut être créé un permis de conduire pour les chauffeurs qui exercent à titre principal la profession de conducteur de véhicules automoteurs .", "tags": [{"start": 7, "end": 17, "tag": "action"}, {"start": 44, "end": 143, "tag": "actor"}, {"start": 107, "end": 143, "tag": "actor"}, {"start": 121, "end": 143, "tag": "artifact"}, {"start": 39, "end": 143, "tag": "condition"}, {"start": 0, "end": 7, "tag": "modality"}]} +{"id": "eval_60", "text": "ils pourront conduire le véhicule ou le faire transporter ou remorquer vers le lieu de la mise en fourrière .", "tags": [{"start": 12, "end": 107, "tag": "action"}, {"start": 36, "end": 70, "tag": "action"}, {"start": 21, "end": 33, "tag": "artifact"}, {"start": 75, "end": 107, "tag": "location"}, {"start": 0, "end": 12, "tag": "modality"}]} +{"id": "eval_61", "text": "l ' affectation du nombre initial de points intervient au moment de la délivrance ou de la transcription du permis de conduire .", "tags": [{"start": 15, "end": 43, "tag": "artifact"}, {"start": 104, "end": 126, "tag": "artifact"}, {"start": 43, "end": 54, "tag": "modality"}, {"start": 54, "end": 126, "tag": "time"}]} +{"id": "eval_62", "text": "l ' analyse de sang consiste en une détermination quantitative dans le plasma au moyen de techniques de chromatographie liquide ou gazeuse couplées à la spectrométrie de masse avec usage de standards internes deutérés pour une ou plusieurs des substances visées ci-dessus .", "tags": [{"start": 138, "end": 175, "tag": "action"}, {"start": 208, "end": 271, "tag": "action"}, {"start": 67, "end": 77, "tag": "artifact"}, {"start": 89, "end": 271, "tag": "artifact"}, {"start": 149, "end": 175, "tag": "artifact"}, {"start": 189, "end": 271, "tag": "artifact"}, {"start": 222, "end": 271, "tag": "artifact"}]} +{"id": "eval_63", "text": "l ' assiette de ce dédommagement est constituée par le montant des avertissements taxés décernés en matière de stationnement et de parcage payants .", "tags": [{"start": 32, "end": 47, "tag": "action"}, {"start": 62, "end": 146, "tag": "artifact"}, {"start": 130, "end": 146, "tag": "artifact"}]} +{"id": "eval_64", "text": "l ' attribution des numéros d ' immatriculation se fait en série courante dans l ' ordre alphabétique et numérique selon des modalités à déterminer par règlement grand-ducal .", "tags": [{"start": 19, "end": 47, "tag": "artifact"}, {"start": 73, "end": 114, "tag": "condition"}, {"start": 114, "end": 173, "tag": "condition"}, {"start": 47, "end": 55, "tag": "modality"}, {"start": 151, "end": 173, "tag": "reference"}]} +{"id": "eval_65", "text": "l ' envoi des pièces manquantes fait l ' objet d ' un nouvel accusé de réception du ministre adressé au demandeur dans les quinze jours à compter de la réception desdites pièces .", "tags": [{"start": 31, "end": 46, "tag": "action"}, {"start": 80, "end": 92, "tag": "actor"}, {"start": 100, "end": 113, "tag": "actor"}, {"start": 13, "end": 31, "tag": "artifact"}, {"start": 50, "end": 177, "tag": "artifact"}, {"start": 46, "end": 177, "tag": "condition"}, {"start": 118, "end": 177, "tag": "time"}]} +{"id": "eval_66", "text": "l ' examen de l ' air expiré , la prise de sang et l ' examen médical sont ordonnés soit par le juge d ' instruction , soit par le procureur d ' etat , soit par les membres de la police grand-ducale .", "tags": [{"start": 69, "end": 83, "tag": "action"}, {"start": 92, "end": 116, "tag": "actor"}, {"start": 127, "end": 149, "tag": "actor"}, {"start": 160, "end": 198, "tag": "actor"}, {"start": 13, "end": 28, "tag": "artifact"}, {"start": 30, "end": 47, "tag": "artifact"}, {"start": 50, "end": 69, "tag": "artifact"}]} +{"id": "eval_67", "text": "l ' examen de l ' air expiré est effectué par les membres de la police grand-ducale .", "tags": [{"start": 45, "end": 83, "tag": "actor"}, {"start": 13, "end": 28, "tag": "artifact"}, {"start": 28, "end": 41, "tag": "modality"}]} +{"id": "eval_68", "text": "l ' examen de la capacité financière s ' effectue sur base des comptes annuels de l ' organisme , d ' un plan d ' entreprise portant sur un exercice comptable à compter de l ' introduction de la demande d ' agrément ainsi que du rapport d ' un réviseur d ' entreprise agréé , accompagné de tous les documents requis à établir par un ou plusieurs établissements bancaires et par les autorités administratives compétentes .", "tags": [{"start": 317, "end": 419, "tag": "action"}, {"start": 81, "end": 95, "tag": "actor"}, {"start": 240, "end": 419, "tag": "actor"}, {"start": 329, "end": 370, "tag": "actor"}, {"start": 377, "end": 419, "tag": "actor"}, {"start": 228, "end": 419, "tag": "artifact"}, {"start": 289, "end": 419, "tag": "artifact"}, {"start": 101, "end": 215, "tag": "artifact"}, {"start": 49, "end": 419, "tag": "condition"}, {"start": 136, "end": 215, "tag": "time"}]} +{"id": "eval_69", "text": "l ' examen médical ne peut être effectué que par un médecin autorisé à exercer sa profession au luxembourg .", "tags": [{"start": 70, "end": 106, "tag": "action"}, {"start": 48, "end": 106, "tag": "actor"}, {"start": 44, "end": 106, "tag": "condition"}, {"start": 92, "end": 106, "tag": "location"}, {"start": 18, "end": 40, "tag": "modality"}]} +{"id": "eval_70", "text": "l ' excédent éventuel est versé à la caisse des consignations et est tenu à la disposition du propriétaire ou du détenteur du véhicule ou de leurs ayants cause .", "tags": [{"start": 21, "end": 31, "tag": "action"}, {"start": 64, "end": 73, "tag": "action"}, {"start": 0, "end": 21, "tag": "actor"}, {"start": 90, "end": 106, "tag": "actor"}, {"start": 109, "end": 134, "tag": "actor"}, {"start": 140, "end": 159, "tag": "actor"}, {"start": 122, "end": 134, "tag": "artifact"}, {"start": 33, "end": 61, "tag": "location"}]} +{"id": "eval_71", "text": "l ' exécution et l ' application des tests standardisés sont déterminées par règlement grand-ducal .", "tags": [{"start": 32, "end": 55, "tag": "artifact"}, {"start": 55, "end": 72, "tag": "modality"}, {"start": 72, "end": 98, "tag": "reference"}]} +{"id": "eval_72", "text": "l ' honorabilité d ' un atelier s ' apprécie sur base des antécédents judiciaires des personnes chargées de sa direction et de sa gestion effective .", "tags": [{"start": 31, "end": 44, "tag": "action"}, {"start": 20, "end": 31, "tag": "actor"}, {"start": 81, "end": 120, "tag": "actor"}, {"start": 126, "end": 147, "tag": "actor"}, {"start": 44, "end": 147, "tag": "condition"}]} +{"id": "eval_73", "text": "l ' intéressé doit disposer des structures et des procédés internes nécessaires pour permettre d ' exercer en permanence un contrôle approprié de l ' adéquation des moyens humains et techniques en place .", "tags": [{"start": 98, "end": 202, "tag": "action"}, {"start": 0, "end": 13, "tag": "actor"}, {"start": 31, "end": 202, "tag": "artifact"}, {"start": 49, "end": 67, "tag": "artifact"}, {"start": 160, "end": 202, "tag": "artifact"}, {"start": 27, "end": 202, "tag": "condition"}, {"start": 13, "end": 18, "tag": "modality"}]} +{"id": "eval_74", "text": "l ' intéressé en est informé par écrit .", "tags": [{"start": 13, "end": 28, "tag": "action"}, {"start": 0, "end": 13, "tag": "actor"}]} +{"id": "eval_75", "text": "l ' intéressé est informé par écrit de cette reconstitution de points .", "tags": [{"start": 13, "end": 25, "tag": "action"}, {"start": 0, "end": 13, "tag": "actor"}, {"start": 38, "end": 69, "tag": "artifact"}]} +{"id": "eval_76", "text": "l ' option du premier alinéa du présent paragraphe n ' est plus donnée dès le moment où , sous l ' effet de condamnations judiciaires devenues irrévocables ou d ' avertissements taxés dont l ' intéressé s ' est acquitté , le nombre de points affecté au permis de conduire est réduit à zéro .", "tags": [{"start": 50, "end": 70, "tag": "action"}, {"start": 241, "end": 282, "tag": "action"}, {"start": 188, "end": 202, "tag": "actor"}, {"start": 162, "end": 219, "tag": "artifact"}, {"start": 10, "end": 50, "tag": "artifact"}, {"start": 70, "end": 289, "tag": "condition"}, {"start": 10, "end": 50, "tag": "reference"}, {"start": 74, "end": 289, "tag": "time"}]} +{"id": "eval_77", "text": "l ' organisme de contrôle technique doit être accrédité conformément au règlement ce n° 65/2008 du parlement européen et du conseil du 9 juillet 2008 fixant les prescriptions relatives à l ' accréditation et à la surveillance du marché pour la commercialisation des produits et abrogeant le règlement cee n° 339/93 du conseil .", "tags": [{"start": 40, "end": 55, "tag": "action"}, {"start": 149, "end": 274, "tag": "action"}, {"start": 0, "end": 35, "tag": "actor"}, {"start": 120, "end": 131, "tag": "actor"}, {"start": 314, "end": 325, "tag": "actor"}, {"start": 156, "end": 274, "tag": "artifact"}, {"start": 240, "end": 274, "tag": "artifact"}, {"start": 35, "end": 40, "tag": "modality"}, {"start": 131, "end": 149, "tag": "time"}]} +{"id": "eval_78", "text": "l ' organisme doit tenir un registre de sécurité qui comprend l ' ensemble des documents , informations et données renseignant sur l ' état du ou des centres de contrôle technique qu ' il exploite de même que sur les moyens et mesures de protection et de prévention mis en œuvre .", "tags": [{"start": 18, "end": 278, "tag": "action"}, {"start": 0, "end": 13, "tag": "actor"}, {"start": 24, "end": 278, "tag": "artifact"}, {"start": 61, "end": 278, "tag": "artifact"}, {"start": 130, "end": 196, "tag": "artifact"}, {"start": 212, "end": 278, "tag": "artifact"}, {"start": 145, "end": 196, "tag": "location"}, {"start": 13, "end": 18, "tag": "modality"}]} +{"id": "eval_79", "text": "l ' ouverture hebdomadaire de tout centre de contrôle technique exploité par l ' organisme de contrôle technique doit s ' étendre sur au moins quarante heures en dehors des semaines comportant un jour férié légal et sans préjudice de la possibilité de fermer annuellement le centre pendant deux semaines au maximum en vue de pourvoir à son entretien technique .", "tags": [{"start": 251, "end": 359, "tag": "action"}, {"start": 324, "end": 359, "tag": "action"}, {"start": 29, "end": 112, "tag": "actor"}, {"start": 76, "end": 112, "tag": "actor"}, {"start": 29, "end": 112, "tag": "artifact"}, {"start": 63, "end": 72, "tag": "condition"}, {"start": 158, "end": 359, "tag": "condition"}, {"start": 129, "end": 158, "tag": "condition"}, {"start": 181, "end": 192, "tag": "condition"}, {"start": 112, "end": 117, "tag": "modality"}, {"start": 0, "end": 112, "tag": "time"}, {"start": 289, "end": 303, "tag": "time"}]} +{"id": "eval_80", "text": "la composition , les attributions , les modalités de fonctionnement et les indemnités de la commission d ' examen sont déterminées par règlement grand-ducal .", "tags": [{"start": 113, "end": 130, "tag": "action"}, {"start": 88, "end": 113, "tag": "actor"}, {"start": 0, "end": 113, "tag": "artifact"}, {"start": 130, "end": 156, "tag": "reference"}]} +{"id": "eval_81", "text": "la constatation par les membres de la police grand-ducale de l ' impossibilité de contacter le propriétaire ou le détenteur du véhicule vaut information .", "tags": [{"start": 81, "end": 135, "tag": "action"}, {"start": 19, "end": 57, "tag": "actor"}, {"start": 91, "end": 135, "tag": "actor"}, {"start": 123, "end": 135, "tag": "artifact"}, {"start": 57, "end": 135, "tag": "condition"}, {"start": 135, "end": 140, "tag": "modality"}]} +{"id": "eval_82", "text": "la durée d ' application d ' une suspension du droit de conduire qui intervient dans les conditions du paragraphe 3 , la durée d ' exécution d ' une interdiction de conduire judiciaire sans exceptions , non assortie du sursis , et la durée d ' application d ' un retrait administratif du permis de conduire qui intervient dans les conditions du paragraphe 1er de l ' article 2 ne comptent pas pour le calcul du délai du présent paragraphe .", "tags": [{"start": 144, "end": 225, "tag": "artifact"}, {"start": 8, "end": 115, "tag": "condition"}, {"start": 202, "end": 215, "tag": "condition"}, {"start": 126, "end": 225, "tag": "condition"}, {"start": 239, "end": 376, "tag": "condition"}, {"start": 99, "end": 115, "tag": "reference"}, {"start": 341, "end": 376, "tag": "reference"}, {"start": 416, "end": 438, "tag": "reference"}]} +{"id": "eval_83", "text": "la durée d ' exécution d ' une interdiction de conduire judiciaire sans exceptions , non assortie du sursis , la durée d ' application d ' un retrait administratif du permis de conduire qui intervient dans les conditions du paragraphe 1er de l ' article 2 ou d ' une suspension du droit de conduire ne comptent pas pour le calcul de la durée de ce délai .", "tags": [{"start": 26, "end": 107, "tag": "artifact"}, {"start": 8, "end": 107, "tag": "condition"}, {"start": 84, "end": 97, "tag": "condition"}, {"start": 118, "end": 298, "tag": "condition"}, {"start": 298, "end": 314, "tag": "modality"}, {"start": 220, "end": 255, "tag": "reference"}, {"start": 0, "end": 107, "tag": "time"}, {"start": 109, "end": 298, "tag": "time"}, {"start": 332, "end": 353, "tag": "time"}]} +{"id": "eval_84", "text": "la durée de la publication par voie électronique correspond à celle des effets du règlement publié .", "tags": [{"start": 78, "end": 98, "tag": "artifact"}, {"start": 48, "end": 59, "tag": "modality"}, {"start": 0, "end": 48, "tag": "time"}]} +{"id": "eval_85", "text": "la décision ministérielle est motivée .", "tags": [{"start": 25, "end": 37, "tag": "action"}, {"start": 0, "end": 25, "tag": "actor"}]} +{"id": "eval_86", "text": "la décision ministérielle intervient au plus tard dans les trois mois à compter de la réception du dossier complet .", "tags": [{"start": 0, "end": 25, "tag": "actor"}, {"start": 49, "end": 114, "tag": "condition"}, {"start": 54, "end": 114, "tag": "time"}]} +{"id": "eval_87", "text": "la loi du 3 août 1953 concernant la réglementation de la circulation sur toutes les voies publiques est abrogée .", "tags": [{"start": 99, "end": 111, "tag": "action"}, {"start": 0, "end": 99, "tag": "artifact"}, {"start": 72, "end": 99, "tag": "location"}, {"start": 0, "end": 99, "tag": "reference"}]} +{"id": "eval_88", "text": "la mise en fourrière est constatée par procès-verbal qui comporte l ' indication sommaire des circonstances et conditions dans lesquelles la mesure a été exécutée , et qui est sans délai dressé et transmis au procureur d ' etat .", "tags": [{"start": 20, "end": 34, "tag": "action"}, {"start": 171, "end": 193, "tag": "action"}, {"start": 38, "end": 227, "tag": "artifact"}, {"start": 34, "end": 227, "tag": "condition"}]} +{"id": "eval_89", "text": "la mise en œuvre de cette gestion peut être déterminée par un règlement grand-ducal .", "tags": [{"start": 19, "end": 33, "tag": "artifact"}, {"start": 33, "end": 54, "tag": "modality"}, {"start": 58, "end": 83, "tag": "reference"}]} +{"id": "eval_90", "text": "la participation à la formation continue est soumise à un droit d ' inscription fixé par règlement grand-ducal sans pouvoir dépasser le montant de 1 .000 euros par an .", "tags": [{"start": 79, "end": 110, "tag": "action"}, {"start": 40, "end": 52, "tag": "modality"}, {"start": 84, "end": 110, "tag": "reference"}]} +{"id": "eval_91", "text": "la participation à la formation de base est soumise à un droit d ' inscription fixé par règlement grand-ducal sans pouvoir dépasser le montant de 1 .000 euros par an .", "tags": [{"start": 51, "end": 109, "tag": "condition"}, {"start": 39, "end": 51, "tag": "modality"}, {"start": 87, "end": 109, "tag": "reference"}]} +{"id": "eval_92", "text": "la personne présentant le véhicule routier au contrôle est informée de toutes les défectuosités ou non- conformités identifiées sur le véhicule et devant être corrigées .", "tags": [{"start": 54, "end": 67, "tag": "action"}, {"start": 115, "end": 143, "tag": "action"}, {"start": 146, "end": 168, "tag": "action"}, {"start": 0, "end": 54, "tag": "actor"}, {"start": 22, "end": 42, "tag": "artifact"}, {"start": 11, "end": 22, "tag": "condition"}, {"start": 67, "end": 143, "tag": "condition"}]} +{"id": "eval_93", "text": "la prise d ' urine , la prise de sang et l ' examen médical sont ordonnés soit par le juge d ' instruction , soit par le procureur d ' etat soit par les membres de la police grand-ducale .", "tags": [{"start": 59, "end": 73, "tag": "action"}, {"start": 148, "end": 186, "tag": "actor"}, {"start": 10, "end": 18, "tag": "artifact"}]} +{"id": "eval_94", "text": "la procédure de modification suit les modalités de celle prévue en vue de sa délivrance .", "tags": [{"start": 28, "end": 33, "tag": "modality"}, {"start": 50, "end": 87, "tag": "reference"}]} +{"id": "eval_95", "text": "la publication des règlements qui , le cas échéant , peuvent intervenir sur base de la délégation de compétence prévue à l ' article 76 , alinéa 2 de la constitution en vue de l ' exécution de la présente loi sont publiés au mémorial ou sur le site électronique installé à cet effet par le gouvernement .", "tags": [{"start": 60, "end": 208, "tag": "action"}, {"start": 111, "end": 208, "tag": "action"}, {"start": 208, "end": 221, "tag": "action"}, {"start": 286, "end": 302, "tag": "actor"}, {"start": 14, "end": 208, "tag": "artifact"}, {"start": 149, "end": 165, "tag": "artifact"}, {"start": 192, "end": 208, "tag": "artifact"}, {"start": 221, "end": 233, "tag": "artifact"}, {"start": 240, "end": 302, "tag": "artifact"}, {"start": 14, "end": 208, "tag": "condition"}, {"start": 261, "end": 270, "tag": "condition"}, {"start": 221, "end": 233, "tag": "location"}, {"start": 240, "end": 302, "tag": "location"}, {"start": 118, "end": 165, "tag": "reference"}]} +{"id": "eval_96", "text": "à moins d ' en disposer autrement , ces règlements entrent en vigueur le jour de leur publication .", "tags": [{"start": 35, "end": 50, "tag": "actor"}, {"start": 0, "end": 33, "tag": "condition"}, {"start": 69, "end": 97, "tag": "time"}]} +{"id": "eval_97", "text": "dans le cadre des contrôles de véhicules effectués dans l ' exercice des fonctions qui leur sont conférées par la législation sur les transports routiers ainsi que , pour autant que la masse maximale des véhicules à contrôler dépasse 3 .500 kg , par les articles 11 et 17 , paragraphe 1 , les fonctionnaires de l ' administration des douanes et accises sont chargés d ' assurer l ' exécution des dispositions de la présente loi et des dispositions réglementaires prises en son exécution , pour autant qu ' elles concernent l ' aménagement des véhicules et de leurs chargements ainsi que les plaques d ' immatriculation , les numéros d ' identification et les documents de bord , et de dresser procès-verbal des infractions à ces dispositions .", "tags": [{"start": 369, "end": 676, "tag": "action"}, {"start": 684, "end": 741, "tag": "action"}, {"start": 288, "end": 352, "tag": "actor"}, {"start": 199, "end": 225, "tag": "artifact"}, {"start": 620, "end": 651, "tag": "artifact"}, {"start": 654, "end": 676, "tag": "artifact"}, {"start": 40, "end": 50, "tag": "condition"}, {"start": 365, "end": 741, "tag": "condition"}, {"start": 352, "end": 365, "tag": "modality"}, {"start": 106, "end": 153, "tag": "reference"}, {"start": 245, "end": 286, "tag": "reference"}, {"start": 391, "end": 486, "tag": "reference"}, {"start": 430, "end": 486, "tag": "reference"}, {"start": 0, "end": 153, "tag": "time"}]} +{"id": "eval_98", "text": "en vue de l ' obtention de l ' agrément ministériel en tant qu ' inspecteur de contrôle technique dont question à l ' article 4ter , l ' intéressé doit être détenteur du certificat de qualification d ' inspecteur de contrôle technique délivré par le ministre ayant la Formation professionnelle dans ses attributions ;", "tags": [{"start": 234, "end": 315, "tag": "action"}, {"start": 132, "end": 146, "tag": "actor"}, {"start": 246, "end": 315, "tag": "actor"}, {"start": 26, "end": 130, "tag": "artifact"}, {"start": 166, "end": 315, "tag": "artifact"}, {"start": 166, "end": 315, "tag": "condition"}, {"start": 146, "end": 151, "tag": "modality"}, {"start": 113, "end": 130, "tag": "reference"}]} +{"id": "eval_99", "text": "en vue de l ' obtention de l ' agrément ministériel en tant qu ' inspecteur de contrôle technique dont question à l ' article 4ter , l ' intéressé doit avoir une connaissance adéquate des trois langues administratives telles que définies par la loi du 24 février 1984 sur le régime des langues ;", "tags": [{"start": 151, "end": 293, "tag": "action"}, {"start": 132, "end": 146, "tag": "actor"}, {"start": 64, "end": 130, "tag": "actor"}, {"start": 26, "end": 130, "tag": "artifact"}, {"start": 183, "end": 293, "tag": "condition"}, {"start": 146, "end": 151, "tag": "modality"}, {"start": 241, "end": 293, "tag": "reference"}, {"start": 113, "end": 130, "tag": "reference"}]} +{"id": "eval_100", "text": "en vue de l ' obtention de l ' agrément ministériel en tant qu ' inspecteur de contrôle technique dont question à l ' article 4ter , l ' intéressé doit posséder les qualités physiques , intellectuelles et morales nécessaires pour effectuer des opérations de contrôle technique .", "tags": [{"start": 229, "end": 276, "tag": "action"}, {"start": 132, "end": 146, "tag": "actor"}, {"start": 64, "end": 130, "tag": "actor"}, {"start": 26, "end": 130, "tag": "artifact"}, {"start": 239, "end": 276, "tag": "artifact"}, {"start": 0, "end": 130, "tag": "condition"}, {"start": 146, "end": 151, "tag": "modality"}, {"start": 111, "end": 130, "tag": "reference"}]} +{"id": "eval_101", "text": "des points négatifs ne sont pas mis en compte .", "tags": [{"start": 0, "end": 19, "tag": "actor"}, {"start": 19, "end": 45, "tag": "modality"}]} +{"id": "eval_102", "text": "l ' organisme doit tenir un registre de sécurité qui comprend l ' ensemble des documents , informations et données renseignant sur l ' état du ou des centres de contrôle technique qu ' il exploite de même que sur les moyens et mesures de protection et de prévention mis en oeuvre .", "tags": [{"start": 18, "end": 279, "tag": "action"}, {"start": 0, "end": 13, "tag": "actor"}, {"start": 24, "end": 279, "tag": "artifact"}, {"start": 61, "end": 279, "tag": "artifact"}, {"start": 130, "end": 196, "tag": "artifact"}, {"start": 212, "end": 279, "tag": "artifact"}, {"start": 145, "end": 196, "tag": "location"}, {"start": 13, "end": 18, "tag": "modality"}]} +{"id": "eval_103", "text": "la mise en oeuvre de cette gestion peut être déterminée par un règlement grand-ducal .", "tags": [{"start": 20, "end": 34, "tag": "artifact"}, {"start": 59, "end": 84, "tag": "artifact"}, {"start": 55, "end": 84, "tag": "condition"}, {"start": 34, "end": 39, "tag": "modality"}]} +{"id": "eval_104", "text": "pour la détermination de la présence de stupéfiants dans l ' organisme , l ' analyse du sang est positive dès qu ' une ou plusieurs des substances prévues à l ' alinéa 1 du paragraphe 4 de l ' article 12 de la loi modifiée du 14 février 1955 précitée , y ont été décelées dans des quantités supérieures ou égales aux seuils maxima correspondants y spécifiés .", "tags": [{"start": 84, "end": 92, "tag": "artifact"}, {"start": 131, "end": 250, "tag": "artifact"}, {"start": 58, "end": 60, "tag": "condition"}, {"start": 74, "end": 76, "tag": "condition"}, {"start": 112, "end": 114, "tag": "condition"}, {"start": 158, "end": 160, "tag": "condition"}, {"start": 190, "end": 192, "tag": "condition"}, {"start": 131, "end": 250, "tag": "condition"}, {"start": 271, "end": 357, "tag": "condition"}, {"start": 56, "end": 70, "tag": "location"}, {"start": 154, "end": 250, "tag": "reference"}]} +{"id": "eval_105", "text": "le mandat autorise le mandataire , au minimum à garder la documentation technique à la disposition de l ' ilnas pendant au moins la période précisée dans les annexes des accords internationaux sur le transport de marchandises dangereuses pour les fabricants .", "tags": [{"start": 47, "end": 257, "tag": "action"}, {"start": 18, "end": 32, "tag": "actor"}, {"start": 242, "end": 257, "tag": "actor"}, {"start": 54, "end": 81, "tag": "artifact"}, {"start": 165, "end": 257, "tag": "artifact"}, {"start": 34, "end": 45, "tag": "condition"}, {"start": 139, "end": 148, "tag": "condition"}, {"start": 45, "end": 257, "tag": "condition"}, {"start": 9, "end": 18, "tag": "modality"}, {"start": 153, "end": 257, "tag": "reference"}, {"start": 128, "end": 257, "tag": "time"}]} +{"id": "eval_106", "text": "le mandat autorise le mandataire , au minimum à la demande motivée de l ' ilnas , à lui communiquer toutes les informations et tous les documents nécessaires pour démontrer la conformité de l ' équipement sous pression transportable , dans une des trois langues administratives du luxembourg", "tags": [{"start": 83, "end": 99, "tag": "action"}, {"start": 162, "end": 291, "tag": "action"}, {"start": 18, "end": 32, "tag": "actor"}, {"start": 69, "end": 79, "tag": "actor"}, {"start": 189, "end": 232, "tag": "artifact"}, {"start": 34, "end": 79, "tag": "condition"}, {"start": 9, "end": 18, "tag": "modality"}]} +{"id": "eval_107", "text": "le mandat autorise le mandataire , au minimum à la demande de l ' ilnas , à coopérer avec lui à la mise en oeuvre de toute mesure prise en vue d ' éliminer les risques présentés par les équipements sous pression transportables couverts par le mandat .", "tags": [{"start": 75, "end": 249, "tag": "action"}, {"start": 146, "end": 249, "tag": "action"}, {"start": 18, "end": 32, "tag": "actor"}, {"start": 181, "end": 249, "tag": "artifact"}, {"start": 34, "end": 71, "tag": "condition"}, {"start": 129, "end": 135, "tag": "condition"}, {"start": 167, "end": 177, "tag": "condition"}, {"start": 226, "end": 235, "tag": "condition"}, {"start": 73, "end": 249, "tag": "condition"}, {"start": 9, "end": 18, "tag": "modality"}, {"start": 0, "end": 9, "tag": "reference"}, {"start": 18, "end": 28, "tag": "reference"}, {"start": 239, "end": 249, "tag": "reference"}]} +{"id": "eval_108", "text": "à moins d ' effectuer un dépassement , les conducteurs d ' unités de transport munies de panneaux orange , doivent observer , par rapport aux véhicules les précédant , un intervalle qui est d ' au moins 50 m en agglomération et d ' au moins 100 m en dehors des agglomérations .", "tags": [{"start": 11, "end": 36, "tag": "action"}, {"start": 114, "end": 275, "tag": "action"}, {"start": 38, "end": 104, "tag": "actor"}, {"start": 88, "end": 104, "tag": "artifact"}, {"start": 137, "end": 165, "tag": "artifact"}, {"start": 0, "end": 36, "tag": "condition"}, {"start": 78, "end": 85, "tag": "condition"}, {"start": 151, "end": 165, "tag": "condition"}, {"start": 106, "end": 114, "tag": "modality"}]} +{"id": "eval_109", "text": "le ministre peut spécifier les modalités d ' application des dispositions de l ' annexe ii et déterminer celles relatives au contrôle des équipements , organes et éléments accessoires .", "tags": [{"start": 16, "end": 183, "tag": "action"}, {"start": 93, "end": 183, "tag": "action"}, {"start": 0, "end": 11, "tag": "actor"}, {"start": 56, "end": 90, "tag": "artifact"}, {"start": 133, "end": 183, "tag": "artifact"}, {"start": 11, "end": 16, "tag": "modality"}, {"start": 56, "end": 90, "tag": "reference"}]} +{"id": "eval_110", "text": "l ' embrayage doit être progressif et pouvoir être réglé facilement .", "tags": [{"start": 18, "end": 67, "tag": "action"}, {"start": 37, "end": 67, "tag": "action"}, {"start": 0, "end": 13, "tag": "actor"}, {"start": 13, "end": 18, "tag": "modality"}]} +{"id": "eval_111", "text": "le ministre est l ' autorité compétente pour la vérification et le scellement des taximètres et de leurs dispositifs complémentaires ainsi que de l ' installation afférente ou du dispositif de fermeture dont question au paragraphe 3 de l ' article 13 .", "tags": [{"start": 0, "end": 11, "tag": "actor"}, {"start": 98, "end": 132, "tag": "actor"}, {"start": 77, "end": 92, "tag": "artifact"}, {"start": 98, "end": 132, "tag": "artifact"}, {"start": 175, "end": 250, "tag": "artifact"}]} +{"id": "eval_112", "text": "il est interdit de transporter des passagers .", "tags": [{"start": 18, "end": 44, "tag": "action"}, {"start": 0, "end": 15, "tag": "modality"}]} +{"id": "eval_113", "text": "l ' accès à la qualification initiale ne nécessite pas la détention préalable du permis de conduire correspondant .", "tags": [{"start": 37, "end": 54, "tag": "modality"}, {"start": 54, "end": 113, "tag": "time"}]} +{"id": "eval_114", "text": "si un disque a été volé , perdu , détruit , endommagé ou rendu autrement inutilisable , l ' entrepreneur de taxi concerné est tenu d ' en informer immédiatement la snct .", "tags": [{"start": 56, "end": 85, "tag": "action"}, {"start": 134, "end": 168, "tag": "action"}, {"start": 87, "end": 121, "tag": "actor"}, {"start": 2, "end": 12, "tag": "artifact"}, {"start": 0, "end": 2, "tag": "condition"}, {"start": 121, "end": 130, "tag": "modality"}]} +{"id": "eval_115", "text": "le signal peut être répété au revers du panneau .", "tags": [{"start": 14, "end": 26, "tag": "action"}, {"start": 0, "end": 9, "tag": "actor"}, {"start": 36, "end": 47, "tag": "artifact"}, {"start": 26, "end": 47, "tag": "location"}, {"start": 9, "end": 14, "tag": "modality"}]} +{"id": "eval_116", "text": "si l ' intéressé est atteint d ' anomalies de la tension artérielle , le permis de conduire peut être délivré ou renouvelé sur avis motivé de la commission médicale , qui dans son avis tiendra compte des autres données de l ' examen , des complications éventuelles associées et du danger qu ' elles peuvent constituer pour la sécurité de la circulation .", "tags": [{"start": 96, "end": 352, "tag": "action"}, {"start": 2, "end": 16, "tag": "actor"}, {"start": 141, "end": 352, "tag": "actor"}, {"start": 32, "end": 67, "tag": "artifact"}, {"start": 0, "end": 2, "tag": "condition"}, {"start": 51, "end": 54, "tag": "condition"}, {"start": 150, "end": 153, "tag": "condition"}, {"start": 28, "end": 67, "tag": "condition"}, {"start": 122, "end": 352, "tag": "condition"}, {"start": 91, "end": 96, "tag": "modality"}]} +{"id": "eval_117", "text": "le signal c , 6 indique que l ' accès est interdit aux véhicules ayant une hauteur totale supérieur à num mètres .", "tags": [{"start": 0, "end": 15, "tag": "actor"}, {"start": 50, "end": 112, "tag": "artifact"}, {"start": 50, "end": 112, "tag": "condition"}]} +{"id": "eval_118", "text": "lorsque des modalités particulières en matière de stationnement ou de parcage sont prévues en faveur des résidents , le symbole du disque est également suivi de l ' inscription sauf résidents avec vignette et , le cas échéant , de l ' inscription du secteur de stationnement résidentiel .", "tags": [{"start": 77, "end": 90, "tag": "action"}, {"start": 137, "end": 157, "tag": "action"}, {"start": 116, "end": 137, "tag": "artifact"}, {"start": 230, "end": 286, "tag": "artifact"}, {"start": 246, "end": 286, "tag": "location"}, {"start": 77, "end": 90, "tag": "modality"}, {"start": 137, "end": 157, "tag": "modality"}]} +{"id": "eval_119", "text": "le ministre peut , par décision individuelle et à titre exceptionnel , autoriser l ' usage d ' un numéro de plaque rouge pour des besoins spéciaux autres que ceux visés à l ' article 4 , paragraphe 2 , alinéa 5 de la loi précitée du 14 février 1955 .", "tags": [{"start": 70, "end": 248, "tag": "action"}, {"start": 0, "end": 11, "tag": "actor"}, {"start": 94, "end": 120, "tag": "artifact"}, {"start": 18, "end": 68, "tag": "condition"}, {"start": 162, "end": 168, "tag": "condition"}, {"start": 120, "end": 248, "tag": "condition"}, {"start": 11, "end": 16, "tag": "modality"}, {"start": 168, "end": 248, "tag": "reference"}]} +{"id": "eval_120", "text": "si , à cet effet , la mise hors service du frein est nécessaire , celle-ci doit prendre automatiquement fin dès que le véhicule reprend sa marche normale .", "tags": [{"start": 79, "end": 107, "tag": "action"}, {"start": 115, "end": 127, "tag": "actor"}, {"start": 39, "end": 48, "tag": "artifact"}, {"start": 0, "end": 2, "tag": "condition"}, {"start": 39, "end": 48, "tag": "condition"}, {"start": 74, "end": 79, "tag": "modality"}, {"start": 115, "end": 127, "tag": "time"}, {"start": 135, "end": 153, "tag": "time"}]} +{"id": "eval_121", "text": "les sous-catégories du modèle 7 indiquent que le stationnement ou le parcage sont à durée limitée .", "tags": [{"start": 19, "end": 31, "tag": "actor"}, {"start": 81, "end": 97, "tag": "condition"}, {"start": 19, "end": 31, "tag": "reference"}, {"start": 83, "end": 97, "tag": "time"}]} +{"id": "eval_122", "text": "les équipements de contrôle nécessaires dépendent des catégories de véhicule routier à contrôler décrites dans le tableau i .", "tags": [{"start": 0, "end": 39, "tag": "artifact"}, {"start": 53, "end": 123, "tag": "artifact"}, {"start": 49, "end": 123, "tag": "condition"}, {"start": 39, "end": 49, "tag": "modality"}, {"start": 110, "end": 123, "tag": "reference"}]} +{"id": "eval_123", "text": "la configuration du symbole peut varier selon l ' emplacement de la voie de détresse par rapport à la voie publique où le signal est posé .", "tags": [{"start": 32, "end": 137, "tag": "action"}, {"start": 128, "end": 137, "tag": "action"}, {"start": 0, "end": 27, "tag": "actor"}, {"start": 16, "end": 27, "tag": "artifact"}, {"start": 64, "end": 84, "tag": "artifact"}, {"start": 118, "end": 128, "tag": "artifact"}, {"start": 39, "end": 137, "tag": "condition"}, {"start": 45, "end": 137, "tag": "location"}, {"start": 27, "end": 32, "tag": "modality"}]} +{"id": "eval_124", "text": "les cours pratiques sont subdivisés en quatre unités d ' instruction .", "tags": [{"start": 19, "end": 35, "tag": "action"}, {"start": 0, "end": 19, "tag": "actor"}, {"start": 38, "end": 68, "tag": "artifact"}]} +{"id": "eval_125", "text": "les contrôles , inspections et essais prescrits doivent être exécutés conformément aux dispositions afférentes prévues à l ' annexe ii .", "tags": [{"start": 69, "end": 134, "tag": "condition"}, {"start": 47, "end": 55, "tag": "modality"}, {"start": 120, "end": 134, "tag": "reference"}]} +{"id": "eval_126", "text": "les contrôles sur route portent , d ' une manière générale , sur les éléments suivants .", "tags": [{"start": 64, "end": 86, "tag": "artifact"}]} +{"id": "eval_127", "text": "les dispositions du présent paragraphe ne s ' appliquent pas .", "tags": [{"start": 38, "end": 56, "tag": "action"}, {"start": 0, "end": 38, "tag": "artifact"}, {"start": 38, "end": 56, "tag": "modality"}, {"start": 0, "end": 38, "tag": "reference"}]} +{"id": "eval_128", "text": "ces données sont introduites dans le système par l ' organisme de contrôle technique ayant procédé aux opérations de contrôle technique routier .", "tags": [{"start": 11, "end": 28, "tag": "action"}, {"start": 48, "end": 143, "tag": "actor"}, {"start": 0, "end": 11, "tag": "artifact"}, {"start": 44, "end": 143, "tag": "condition"}]} +{"id": "eval_129", "text": "les infractions aux dispositions du présent règlement sont punies conformément aux dispositions de l ' article 7 modifié de la loi du 14 février 1955 concernant la circulation sur toutes les voies publiques , tel que cet article a été amendé par la loi du 13 juin 1994 relative au régime des peines .", "tags": [{"start": 53, "end": 65, "tag": "action"}, {"start": 0, "end": 53, "tag": "artifact"}, {"start": 15, "end": 53, "tag": "condition"}, {"start": 149, "end": 160, "tag": "condition"}, {"start": 179, "end": 206, "tag": "location"}, {"start": 98, "end": 298, "tag": "reference"}, {"start": 216, "end": 228, "tag": "reference"}, {"start": 241, "end": 298, "tag": "reference"}]} +{"id": "eval_130", "text": "la liquidation des frais d ' enlèvement dus aux dépanneurs se fait à la diligence de la police grand-ducale suivant la procédure prévue pour la liquidation des frais de justice et par imputation sur les crédits afférents du ministère de la justice .", "tags": [{"start": 58, "end": 66, "tag": "action"}, {"start": 128, "end": 247, "tag": "action"}, {"start": 84, "end": 107, "tag": "actor"}, {"start": 43, "end": 58, "tag": "actor"}, {"start": 14, "end": 58, "tag": "artifact"}, {"start": 155, "end": 176, "tag": "artifact"}, {"start": 198, "end": 247, "tag": "artifact"}, {"start": 14, "end": 58, "tag": "condition"}, {"start": 128, "end": 135, "tag": "condition"}, {"start": 39, "end": 43, "tag": "condition"}, {"start": 107, "end": 247, "tag": "condition"}, {"start": 58, "end": 66, "tag": "modality"}]} +{"id": "eval_131", "text": "les documents à produire en vertu des dispositions du présent article ainsi que de celles des articles 11 et 12 doivent permettre l ' identification du véhicule visé par son numéro d ' identification , pour autant que le véhicule en soit pourvu , ainsi que l ' identification , pour les personnes physiques concernées par les opérations visées , par leur numéro d ' identification prévu par la loi du 19 juin 2013 relative à l ' identification des personnes physiques et , pour les personnes morales concernées par ces opérations , par leur numéro d ' identité prévu par la loi modifiée du 30 mars 1979 organisant l ' identification numérique des personnes physiques et morales .", "tags": [{"start": 15, "end": 111, "tag": "action"}, {"start": 282, "end": 343, "tag": "actor"}, {"start": 477, "end": 529, "tag": "actor"}, {"start": 0, "end": 111, "tag": "artifact"}, {"start": 148, "end": 199, "tag": "artifact"}, {"start": 148, "end": 160, "tag": "artifact"}, {"start": 13, "end": 111, "tag": "condition"}, {"start": 160, "end": 165, "tag": "condition"}, {"start": 336, "end": 341, "tag": "condition"}, {"start": 306, "end": 317, "tag": "condition"}, {"start": 499, "end": 510, "tag": "condition"}, {"start": 380, "end": 386, "tag": "condition"}, {"start": 560, "end": 566, "tag": "condition"}, {"start": 602, "end": 613, "tag": "condition"}, {"start": 111, "end": 119, "tag": "modality"}, {"start": 33, "end": 69, "tag": "reference"}, {"start": 89, "end": 111, "tag": "reference"}, {"start": 390, "end": 467, "tag": "reference"}, {"start": 570, "end": 677, "tag": "reference"}]} +{"id": "eval_132", "text": "toutefois , pour les motocycles d ' une cylindrée dépassant 125 cm3 , il suffit d ' un seul feu-stop répondant aux conditions du présent alinéa .", "tags": [{"start": 100, "end": 143, "tag": "action"}, {"start": 16, "end": 67, "tag": "artifact"}, {"start": 83, "end": 143, "tag": "artifact"}, {"start": 11, "end": 67, "tag": "condition"}, {"start": 100, "end": 110, "tag": "condition"}, {"start": 49, "end": 59, "tag": "condition"}, {"start": 79, "end": 143, "tag": "condition"}, {"start": 69, "end": 79, "tag": "modality"}, {"start": 125, "end": 143, "tag": "reference"}]} +{"id": "eval_133", "text": "le présent règlement sera publié au mémorial et entrera en vigueur le 15 avril 1988 .", "tags": [{"start": 20, "end": 32, "tag": "action"}, {"start": 47, "end": 66, "tag": "action"}, {"start": 0, "end": 20, "tag": "actor"}, {"start": 32, "end": 44, "tag": "artifact"}, {"start": 32, "end": 44, "tag": "location"}, {"start": 20, "end": 32, "tag": "modality"}, {"start": 66, "end": 83, "tag": "time"}]} +{"id": "eval_134", "text": "les véhicules destinés à la location sans chauffeur ne sont pas soumis aux dispositions des articles 56bis et 56ter .", "tags": [{"start": 51, "end": 70, "tag": "action"}, {"start": 0, "end": 51, "tag": "actor"}, {"start": 22, "end": 51, "tag": "condition"}, {"start": 51, "end": 70, "tag": "modality"}, {"start": 70, "end": 115, "tag": "reference"}]} +{"id": "eval_135", "text": "la commission consultative se compose de deux représentants proposés par le ministre .", "tags": [{"start": 26, "end": 37, "tag": "action"}, {"start": 59, "end": 84, "tag": "action"}, {"start": 0, "end": 26, "tag": "actor"}, {"start": 72, "end": 84, "tag": "actor"}, {"start": 40, "end": 84, "tag": "artifact"}]} +{"id": "eval_136", "text": "la commission consultative se compose de un représentant proposé par le ministre ayant la formation professionnelle dans ses attributions .", "tags": [{"start": 26, "end": 37, "tag": "action"}, {"start": 0, "end": 26, "tag": "actor"}, {"start": 40, "end": 137, "tag": "actor"}, {"start": 68, "end": 137, "tag": "actor"}, {"start": 37, "end": 137, "tag": "condition"}]} +{"id": "eval_137", "text": "la commission consultative se compose de un représentant des centres de formation .", "tags": [{"start": 26, "end": 37, "tag": "action"}, {"start": 0, "end": 26, "tag": "actor"}, {"start": 40, "end": 81, "tag": "actor"}, {"start": 60, "end": 81, "tag": "artifact"}]} +{"id": "eval_138", "text": "pour les voies ci-après , l ' accès est interdit aux conducteurs de véhicules dans le sens indiqué .", "tags": [{"start": 35, "end": 48, "tag": "action"}, {"start": 48, "end": 77, "tag": "actor"}, {"start": 4, "end": 23, "tag": "artifact"}, {"start": 77, "end": 98, "tag": "condition"}, {"start": 4, "end": 23, "tag": "location"}]} +{"id": "eval_139", "text": "cette prescription ne s ' applique ni aux véhicules dont le moteur en marche assure le fonctionnement d ' appareils installés sur le véhicule , ni aux véhicules dont le conducteur assure une distribution de porte à porte , sous réserve toutefois d ' observer les prescriptions du premier alinéa .", "tags": [{"start": 115, "end": 141, "tag": "action"}, {"start": 249, "end": 294, "tag": "action"}, {"start": 37, "end": 141, "tag": "actor"}, {"start": 146, "end": 294, "tag": "actor"}, {"start": 165, "end": 179, "tag": "actor"}, {"start": 56, "end": 76, "tag": "artifact"}, {"start": 105, "end": 141, "tag": "artifact"}, {"start": 129, "end": 141, "tag": "artifact"}, {"start": 37, "end": 141, "tag": "condition"}, {"start": 115, "end": 125, "tag": "condition"}, {"start": 146, "end": 294, "tag": "condition"}, {"start": 18, "end": 34, "tag": "modality"}, {"start": 276, "end": 294, "tag": "reference"}]} +{"id": "eval_140", "text": "ce feu doit s ' allumer lorsque le frein sur la roue arrière est actionné .", "tags": [{"start": 11, "end": 23, "tag": "action"}, {"start": 60, "end": 73, "tag": "action"}, {"start": 0, "end": 6, "tag": "artifact"}, {"start": 31, "end": 60, "tag": "artifact"}, {"start": 44, "end": 60, "tag": "location"}, {"start": 6, "end": 11, "tag": "modality"}]} +{"id": "eval_141", "text": "l ' intéressé auquel est attribuée la licence d ' exploitation de taxi doit commencer le service de taxis dans un délai de deux mois à compter de la délivrance de la licence d ' exploitation de taxi ou de la date de livraison du taxi zéro émissions indiquée au ministre dans la demande .", "tags": [{"start": 75, "end": 285, "tag": "action"}, {"start": 34, "end": 70, "tag": "artifact"}, {"start": 162, "end": 198, "tag": "artifact"}, {"start": 225, "end": 248, "tag": "artifact"}, {"start": 70, "end": 75, "tag": "modality"}, {"start": 269, "end": 285, "tag": "reference"}, {"start": 110, "end": 285, "tag": "time"}, {"start": 204, "end": 285, "tag": "time"}]} +{"id": "eval_142", "text": "les réservoirs à air des freins à commande pneumatique dont sont équipés les autobus , les autocars et les véhicules automoteurs destinés au transport de choses , doivent avoir des dimensions telles qu ' après le nombre de freinages indiqué ci-après la pression dans les réservoirs ne doit pas être inférieure à la moitié de la pression initiale .", "tags": [{"start": 59, "end": 72, "tag": "action"}, {"start": 293, "end": 345, "tag": "action"}, {"start": 0, "end": 160, "tag": "actor"}, {"start": 72, "end": 160, "tag": "actor"}, {"start": 249, "end": 281, "tag": "actor"}, {"start": 0, "end": 160, "tag": "artifact"}, {"start": 128, "end": 137, "tag": "condition"}, {"start": 203, "end": 249, "tag": "condition"}, {"start": 232, "end": 249, "tag": "condition"}, {"start": 309, "end": 345, "tag": "condition"}, {"start": 198, "end": 249, "tag": "condition"}, {"start": 261, "end": 281, "tag": "condition"}, {"start": 281, "end": 289, "tag": "modality"}, {"start": 162, "end": 170, "tag": "modality"}]} +{"id": "eval_143", "text": "tout conducteur doit conduire de façon à rester constamment maître de son véhicule ou de ses animaux .", "tags": [{"start": 20, "end": 100, "tag": "action"}, {"start": 0, "end": 15, "tag": "actor"}, {"start": 69, "end": 82, "tag": "artifact"}, {"start": 88, "end": 100, "tag": "artifact"}, {"start": 29, "end": 100, "tag": "condition"}, {"start": 15, "end": 20, "tag": "modality"}]} +{"id": "eval_144", "text": "le signe distinctif particulier et la plaque spéciale ainsi que leurs supports répondent aux prescriptions fixées par règlement ministériel qui détermine .", "tags": [{"start": 0, "end": 78, "tag": "artifact"}, {"start": 34, "end": 53, "tag": "artifact"}, {"start": 63, "end": 78, "tag": "artifact"}, {"start": 88, "end": 153, "tag": "condition"}, {"start": 113, "end": 153, "tag": "reference"}]} +{"id": "eval_145", "text": "cette disposition est indiquée par le signal c , 14 portant l ' inscription 30 .", "tags": [{"start": 17, "end": 30, "tag": "action"}, {"start": 0, "end": 17, "tag": "actor"}, {"start": 34, "end": 78, "tag": "artifact"}]} +{"id": "eval_146", "text": "tout motocycle doit être équipé de deux dispositifs de freinage indépendants , dont l ' un doit agir sur la ou les roues avant et l ' autre sur la ou les roues arrière .", "tags": [{"start": 19, "end": 31, "tag": "action"}, {"start": 95, "end": 126, "tag": "action"}, {"start": 0, "end": 14, "tag": "actor"}, {"start": 34, "end": 167, "tag": "artifact"}, {"start": 110, "end": 126, "tag": "artifact"}, {"start": 149, "end": 167, "tag": "artifact"}, {"start": 14, "end": 19, "tag": "modality"}, {"start": 90, "end": 95, "tag": "modality"}]} +{"id": "eval_147", "text": "par dérogation aux dispositions du deuxième alinéa du paragraphe 1er de l ' article 87 , les permis de conduire des catégories a , a1 , a2 , am , b , be et f , délivrés avant le 1er septembre 2015 et dont le titulaire est âgé d ' au moins 70 ans , expirent à la date limite y inscrite .", "tags": [{"start": 204, "end": 217, "tag": "actor"}, {"start": 111, "end": 157, "tag": "artifact"}, {"start": 168, "end": 196, "tag": "condition"}, {"start": 273, "end": 284, "tag": "condition"}, {"start": 199, "end": 245, "tag": "condition"}, {"start": 14, "end": 86, "tag": "reference"}, {"start": 174, "end": 196, "tag": "time"}, {"start": 258, "end": 284, "tag": "time"}]} +{"id": "eval_148", "text": "l ' opérateur économique s ' assure que toutes les mesures correctives appropriées sont prises pour les équipements sous pression transportables qu ' il a mis à disposition sur le marché de l ' union européenne .", "tags": [{"start": 24, "end": 35, "tag": "action"}, {"start": 82, "end": 94, "tag": "action"}, {"start": 149, "end": 158, "tag": "action"}, {"start": 0, "end": 24, "tag": "actor"}, {"start": 39, "end": 82, "tag": "artifact"}, {"start": 99, "end": 210, "tag": "artifact"}, {"start": 94, "end": 210, "tag": "condition"}, {"start": 176, "end": 210, "tag": "location"}]} +{"id": "eval_149", "text": "le signal e , 21f indique le numéro d ' identification d ' un itinéraire cyclable du réseau cyclable national .", "tags": [{"start": 0, "end": 17, "tag": "actor"}, {"start": 25, "end": 109, "tag": "artifact"}, {"start": 81, "end": 109, "tag": "location"}]} +{"id": "eval_150", "text": "si celui qui crée un chantier reste en défaut de mettre la signalisation en place conformément aux prescriptions , il y est suppléé aux frais du défaillant .", "tags": [{"start": 48, "end": 81, "tag": "action"}, {"start": 114, "end": 131, "tag": "action"}, {"start": 2, "end": 29, "tag": "actor"}, {"start": 141, "end": 155, "tag": "actor"}, {"start": 55, "end": 72, "tag": "artifact"}, {"start": 35, "end": 112, "tag": "condition"}, {"start": 17, "end": 29, "tag": "location"}, {"start": 114, "end": 131, "tag": "modality"}, {"start": 94, "end": 112, "tag": "reference"}]} +{"id": "eval_151", "text": "le signal h , 2 , dont les illustrations ci-dessus sont des exemples , indique la fin d ' une zone formée d ' un ensemble de voies et places soumises aux dispositions réglementaires qu ' indiquent le ou les signaux qu ' il porte .", "tags": [{"start": 0, "end": 68, "tag": "actor"}, {"start": 89, "end": 228, "tag": "artifact"}, {"start": 109, "end": 228, "tag": "artifact"}, {"start": 202, "end": 219, "tag": "artifact"}, {"start": 17, "end": 68, "tag": "condition"}, {"start": 98, "end": 105, "tag": "condition"}, {"start": 140, "end": 149, "tag": "condition"}, {"start": 149, "end": 228, "tag": "reference"}, {"start": 78, "end": 228, "tag": "time"}]} +{"id": "eval_152", "text": "les endroits ci-après sont considérés comme places de parcage réservées aux cycles pour une durée maximale de 48 heures .", "tags": [{"start": 21, "end": 37, "tag": "action"}, {"start": 43, "end": 119, "tag": "artifact"}, {"start": 0, "end": 21, "tag": "location"}, {"start": 87, "end": 119, "tag": "time"}]} +{"id": "eval_153", "text": "la distance entre le sol et le bord supérieur de la plage éclairante de tout indicateur de direction ne doit pas dépasser 1500 mm .", "tags": [{"start": 17, "end": 24, "tag": "artifact"}, {"start": 27, "end": 100, "tag": "artifact"}, {"start": 100, "end": 112, "tag": "modality"}]} +{"id": "eval_154", "text": "toutefois , si l ' ensemble des véhicules couplés est composé de deux véhicules automoteurs , le véhicule remorqué doit avoir également un conducteur , à moins que la direction du véhicule remorqué ne soit assurée par le véhicule tracteur .", "tags": [{"start": 49, "end": 61, "tag": "action"}, {"start": 119, "end": 149, "tag": "action"}, {"start": 197, "end": 213, "tag": "action"}, {"start": 14, "end": 49, "tag": "actor"}, {"start": 64, "end": 91, "tag": "actor"}, {"start": 93, "end": 114, "tag": "actor"}, {"start": 135, "end": 149, "tag": "actor"}, {"start": 217, "end": 238, "tag": "actor"}, {"start": 64, "end": 91, "tag": "artifact"}, {"start": 93, "end": 114, "tag": "artifact"}, {"start": 217, "end": 238, "tag": "artifact"}, {"start": 11, "end": 14, "tag": "condition"}, {"start": 27, "end": 49, "tag": "condition"}, {"start": 61, "end": 91, "tag": "condition"}, {"start": 176, "end": 197, "tag": "condition"}, {"start": 213, "end": 238, "tag": "condition"}, {"start": 114, "end": 119, "tag": "modality"}, {"start": 197, "end": 213, "tag": "modality"}]} +{"id": "eval_155", "text": "par ailleurs une nouvelle vignette peut être apposée sur un taximètre en cas de dégradation accidentelle de la vignette dont ce taximètre est pourvu , à condition que l ' installateur bénéficiant d ' un agrément par le fabricant de taximètre pour le taximètre en question se soit assuré qu ' il n ' y a pas de doute sur la raison de la dégradation en question .", "tags": [{"start": 39, "end": 52, "tag": "action"}, {"start": 166, "end": 271, "tag": "actor"}, {"start": 12, "end": 34, "tag": "artifact"}, {"start": 56, "end": 69, "tag": "artifact"}, {"start": 124, "end": 137, "tag": "artifact"}, {"start": 246, "end": 271, "tag": "artifact"}, {"start": 195, "end": 271, "tag": "condition"}, {"start": 286, "end": 291, "tag": "condition"}, {"start": 315, "end": 359, "tag": "condition"}, {"start": 34, "end": 39, "tag": "modality"}]} +{"id": "eval_156", "text": "il en est de même pour les candidats présentant des troubles comportementaux graves dus à la sénescence ou des troubles majeurs de la capacité de jugement , du comportement ou de l ' adaptation liés à la personnalité .", "tags": [{"start": 36, "end": 216, "tag": "action"}, {"start": 22, "end": 216, "tag": "actor"}, {"start": 47, "end": 216, "tag": "artifact"}, {"start": 106, "end": 216, "tag": "artifact"}, {"start": 156, "end": 172, "tag": "artifact"}, {"start": 178, "end": 193, "tag": "artifact"}, {"start": 200, "end": 216, "tag": "artifact"}, {"start": 17, "end": 216, "tag": "condition"}]} +{"id": "eval_157", "text": "le présent règlement ministériel sera publié au mémorial .", "tags": [{"start": 32, "end": 44, "tag": "action"}, {"start": 0, "end": 32, "tag": "actor"}, {"start": 0, "end": 32, "tag": "artifact"}, {"start": 44, "end": 56, "tag": "location"}, {"start": 32, "end": 44, "tag": "modality"}]} +{"id": "eval_158", "text": "le certificat médical doit être conforme au modèle figurant en annexe du présent règlement .", "tags": [{"start": 26, "end": 90, "tag": "action"}, {"start": 0, "end": 21, "tag": "actor"}, {"start": 40, "end": 90, "tag": "artifact"}, {"start": 40, "end": 90, "tag": "condition"}, {"start": 21, "end": 26, "tag": "modality"}, {"start": 59, "end": 90, "tag": "reference"}]} diff --git a/main.py b/main.py deleted file mode 100644 index ffee003d775e47fb81fe6c73d032c71f63b8aadd..0000000000000000000000000000000000000000 --- a/main.py +++ /dev/null @@ -1,25 +0,0 @@ -from transformers import BertTokenizer, BertModel -import torch - -# Load tokenizer and model -tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') -model = BertModel.from_pretrained('bert-base-uncased', output_attentions=True) - -# Encode input text -inputs = tokenizer("Example sentence for BERT attention visualization.", return_tensors="pt") - -# Forward pass, get attentions -outputs = model(**inputs) -attentions = outputs.attentions # Tuple of attention tensors for each layer - -# Get the token index for a word of interest, e.g., "attention" -token_id = tokenizer.convert_tokens_to_ids("attention") - -# Find the positions of this token in the input sequence -token_positions = (inputs['input_ids'][0] == token_id).nonzero(as_tuple=True)[0] - -# Access the attention from one of these positions, e.g., first layer, first head -attention_layer_head = attentions[0][0, :, token_positions[0], :] - -# Now `attention_layer_head` contains the attention weights from the word "attention" to all other tokens in this specific layer and head -print(attention_layer_head) diff --git a/modules/data_generator/bert+rb_dataset_generator.py b/modules/data_generator/bert+rb_dataset_generator.py new file mode 100644 index 0000000000000000000000000000000000000000..709af840d405a5b47e5a40b5555fa4dc1c95dee6 --- /dev/null +++ b/modules/data_generator/bert+rb_dataset_generator.py @@ -0,0 +1,79 @@ +import json +import jsonlines +import copy +allowed_tokens = ["action", "actor", "artifact", "condition", "location", "modality", "reference", "time"] + +def find_all_occurrences(text, phrase): + start = 0 + while True: + start = text.find(phrase, start) + if start == -1: return + yield start + start += len(phrase) # déplacez start après cette occurrence pour trouver la suivante + +def find_word_before_phrase(sentence, phrase): + words = sentence.split() + phrase_words = phrase.split() + phrase_length = len(phrase_words) + + for i in range(len(words) - phrase_length): + if words[i:i + phrase_length] == phrase_words: + return words[i - 1] if i > 0 else None + + return None + + +def main(): + with open('../../results/Hybrid/GPT4+RB.json', 'r', encoding='utf-8') as f: + data = json.load(f) + global_output = [] + + for index, (sentence, annot) in enumerate(data.items()): + span = sentence.strip() + sentence_output = { + 'id': f"eval_{index}", + 'text': sentence, + 'tags': [] + } + + for tag, spans in annot.items(): + + if tag not in allowed_tokens: + continue + + for span in spans: + span = span.strip() + + words = span.split() + if words: + first_word = words[0].lower() + + if first_word == "le" or first_word == "les": + newSpan = words[1:] + newFirstWord = find_word_before_phrase(sentence, " ".join(newSpan)) + words[0] = newFirstWord if newFirstWord else words[0] + + + span = " ".join(words) + + all_occurrences = list(find_all_occurrences(sentence, span)) + + if len(all_occurrences) == 0: + print(f"=== Erreur all_occurrences null ===\n ➡️{span}\n ➡️{sentence}\n") + + for start_index in all_occurrences: + end_index = start_index + len(span) + sentence_output['tags'].append({ + "start": start_index if start_index == 0 else start_index-1, + "end": end_index, + "tag": tag + }) + + global_output.append(sentence_output) + + with jsonlines.open('../../data/bert+rb.annotations.train.jsonlines', mode='w') as writer: + for item in global_output: + writer.write(item) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/modules/data_generator/eval_dataset_generator_camembert.py b/modules/data_generator/bert_dataset_generator.py similarity index 100% rename from modules/data_generator/eval_dataset_generator_camembert.py rename to modules/data_generator/bert_dataset_generator.py diff --git a/modules/hybrid/GPT+RB-finetuning-legal-bert-classifier.ipynb b/modules/hybrid/GPT+RB-finetuning-legal-bert-classifier.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..108bb50e596182e5df0c54056296bace8deb379c --- /dev/null +++ b/modules/hybrid/GPT+RB-finetuning-legal-bert-classifier.ipynb @@ -0,0 +1,3836 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8ced2e3ca31fb46c", + "metadata": {}, + "source": [ + "# Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "757a8bf026156e77", + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-27T14:45:25.410725Z", + "start_time": "2024-06-27T14:45:25.404357Z" + } + }, + "outputs": [], + "source": [ + "tag2id = {'action': 1, 'actor': 2, 'artifact': 3, 'condition': 4, 'location': 5, 'modality': 6, 'reference': 7, 'time': 8}\n", + "id2tag = {v:k for k, v in tag2id.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "be3a4c320f9d4a5", + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-27T14:45:35.889919Z", + "start_time": "2024-06-27T14:45:35.885841Z" + }, + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "label2id = {\n", + " 'O': 0,\n", + " **{f'{k}': v for k, v in tag2id.items()}\n", + "}\n", + "\n", + "id2label = {v:k for k, v in label2id.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2aa2fefac95e7f04", + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-27T14:45:46.507242Z", + "start_time": "2024-06-27T14:45:38.632569Z" + } + }, + "outputs": [], + "source": [ + "from datasets import Dataset\n", + "train_ds = Dataset.from_json(\"../../data/bert+rb.annotations.train.jsonlines\")\n", + "val_ds = Dataset.from_json(\"../../data/annotations.eval.jsonlines\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9e0a21356e7701a1", + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-27T14:45:52.188551Z", + "start_time": "2024-06-27T14:45:52.185648Z" + } + }, + "outputs": [], + "source": [ + "modelId = '../../models/LegalCamemBERT-base'" + ] + }, + { + "cell_type": "markdown", + "id": "66e00d5a79a66753", + "metadata": {}, + "source": [ + "# Tokenization" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e6459259f5ab2d98", + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-27T14:46:02.189231Z", + "start_time": "2024-06-27T14:45:56.737350Z" + } + }, + "outputs": [], + "source": [ + "from transformers import AutoTokenizer\n", + "tokenizer = AutoTokenizer.from_pretrained(modelId)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8c96680645f077fb", + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-27T14:46:08.307140Z", + "start_time": "2024-06-27T14:46:08.301542Z" + } + }, + "outputs": [], + "source": [ + "def get_token_role_in_span(token_start: int, token_end: int, span_start: int, span_end: int):\n", + " \"\"\"\n", + " Check if the token is inside a span.\n", + " Args:\n", + " - token_start, token_end: Start and end offset of the token\n", + " - span_start, span_end: Start and end of the span\n", + " Returns:\n", + " - \"B\" if beginning\n", + " - \"I\" if inner\n", + " - \"O\" if outer\n", + " - \"N\" if not valid token (like <SEP>, <CLS>, <UNK>)\n", + " \"\"\"\n", + " if token_end <= token_start:\n", + " return \"N\"\n", + " if token_start < span_start or token_end > span_end:\n", + " return \"O\"\n", + " else:\n", + " return \"I\"\n", + "\n", + "MAX_LENGTH = 256\n", + "\n", + "def tokenize_and_adjust_labels(sample):\n", + " \"\"\"\n", + " Args:\n", + " - sample (dict): {\"id\": \"...\", \"text\": \"...\", \"tags\": [{\"start\": ..., \"end\": ..., \"tag\": ...}, ...]\n", + " Returns:\n", + " - The tokenized version of `sample` and the labels of each token.\n", + " \"\"\"\n", + " # Tokenize the text, keep the start and end positions of tokens with `return_offsets_mapping` option\n", + " # Use max_length and truncation to ajust the text length\n", + " tokenized = tokenizer(sample[\"text\"],\n", + " return_offsets_mapping=True,\n", + " padding=\"max_length\",\n", + " max_length=MAX_LENGTH,\n", + " truncation=True)\n", + "\n", + " # We are doing a multilabel classification task at each token, we create a list of size len(label2id)=13 \n", + " # for the 13 labels\n", + " labels = [[0 for _ in label2id.keys()] for _ in range(MAX_LENGTH)]\n", + "\n", + " # Scan all the tokens and spans, assign 1 to the corresponding label if the token lies at the beginning\n", + " # or inside the spans\n", + " for (token_start, token_end), token_labels in zip(tokenized[\"offset_mapping\"], labels):\n", + " #print(token_start, token_end)\n", + " for span in sample[\"tags\"]:\n", + " role = get_token_role_in_span(token_start, token_end, span[\"start\"], span[\"end\"])\n", + " if role == \"I\":\n", + " token_labels[label2id[f\"{span['tag']}\"]] = 1\n", + "\n", + " return {**tokenized, \"labels\": labels}" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "53310845f13e9d70", + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-27T14:46:13.910535Z", + "start_time": "2024-06-27T14:46:13.689422Z" + } + }, + "outputs": [], + "source": [ + "tokenized_train_ds = train_ds.map(tokenize_and_adjust_labels, remove_columns=train_ds.column_names)\n", + "tokenized_val_ds = val_ds.map(tokenize_and_adjust_labels, remove_columns=val_ds.column_names)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a654180a-a536-43fa-8984-c7b87b419f93", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--------Token---------|--------Offset----------|--------Labels----------\n", + " <s> | [0, 0] | []\n", + " Est | [0, 3] | ['action']\n", + " puni | [4, 8] | ['action']\n", + " des | [9, 12] | ['action']\n", + " mêmes | [13, 18] | ['action']\n", + " peines | [19, 25] | ['action']\n", + " le | [26, 28] | []\n", + " fait | [29, 33] | []\n", + " de | [34, 36] | []\n", + " tolérer | [37, 44] | []\n", + " comme | [45, 50] | []\n", + " propriétaire | [51, 63] | ['actor']\n", + " ou | [64, 66] | ['actor']\n", + " détenteur | [67, 76] | ['actor']\n", + " la | [77, 79] | []\n", + " mise | [80, 84] | []\n", + " en | [85, 87] | []\n", + " circulation | [88, 99] | []\n", + " d | [100, 101] | []\n", + " | [102, 103] | []\n", + " ' | [102, 103] | []\n", + " un | [104, 106] | []\n", + " véhicule | [107, 115] | []\n", + " sur | [116, 119] | ['location']\n", + " les | [120, 123] | ['location']\n", + " voies | [124, 129] | ['location']\n", + " publiques | [130, 139] | ['location']\n", + " par | [140, 143] | []\n", + " une | [144, 147] | ['actor']\n", + " personne | [148, 156] | ['actor']\n", + " non | [157, 160] | ['condition']\n", + " titulaire | [161, 170] | ['condition']\n", + " d | [171, 172] | ['condition']\n", + " | [173, 174] | ['condition']\n", + " ' | [173, 174] | ['condition']\n", + " un | [175, 177] | ['condition']\n", + " permis | [178, 184] | ['condition']\n", + " de | [185, 187] | ['condition']\n", + " conduire | [188, 196] | ['condition']\n", + " valable | [197, 204] | ['condition']\n", + " | [205, 206] | []\n", + " . | [205, 206] | []\n", + " </s> | [0, 0] | []\n" + ] + } + ], + "source": [ + "sample = tokenized_train_ds[0]\n", + "print(\"--------Token---------|--------Offset----------|--------Labels----------\")\n", + "for token_id, token_labels, offset in zip(sample[\"input_ids\"], sample[\"labels\"], sample[\"offset_mapping\"]):\n", + " # Decode the token_id into text\n", + " token_text = tokenizer.decode(token_id)\n", + " \n", + " # Retrieve all the indices corresponding to the \"1\" at each token, decode them to label name\n", + " labels = [id2label[label_index] for label_index, value in enumerate(token_labels) if value==1]\n", + " \n", + " # Decode those indices into label name\n", + " print(f\" {token_text:20} | {offset} | {labels}\")\n", + " \n", + " # Finish when we meet the end of sentence.\n", + " if token_text == \"</s>\": \n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6990d89800dbb440", + "metadata": {}, + "outputs": [], + "source": [ + "from transformers import DataCollatorWithPadding\n", + "data_collator = DataCollatorWithPadding(tokenizer, padding=True)" + ] + }, + { + "cell_type": "markdown", + "id": "668dcf9750404d1c", + "metadata": {}, + "source": [ + "# Adapt the model" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "7bd0cddab7ddb448", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from sklearn.metrics import multilabel_confusion_matrix\n", + "\n", + "n_labels = len(id2label)\n", + "\n", + "def divide(a: int, b: int):\n", + " return a / b if b > 0 else 0\n", + "\n", + "def compute_metrics(p):\n", + " \"\"\"\n", + " Customize the `compute_metrics` of `transformers`\n", + " Args:\n", + " - p (tuple): 2 numpy arrays: predictions and true_labels\n", + " Returns:\n", + " - metrics (dict): f1 score on \n", + " \"\"\"\n", + " predictions, true_labels = p\n", + "\n", + " predicted_labels = np.where(predictions > 0, np.ones(predictions.shape), np.zeros(predictions.shape))\n", + " metrics = {}\n", + "\n", + " cm = multilabel_confusion_matrix(true_labels.reshape(-1, n_labels), predicted_labels.reshape(-1, n_labels))\n", + "\n", + " for label_idx, matrix in enumerate(cm):\n", + " if label_idx == 0:\n", + " continue # We don't care about the label \"O\"\n", + " tp, fp, fn = matrix[1, 1], matrix[0, 1], matrix[1, 0]\n", + " precision = divide(tp, tp + fp)\n", + " recall = divide(tp, tp + fn)\n", + " f1 = divide(2 * precision * recall, precision + recall)\n", + " metrics[f\"recall_{id2label[label_idx]}\"] = recall\n", + " metrics[f\"precision_{id2label[label_idx]}\"] = precision\n", + " metrics[f\"f1_{id2label[label_idx]}\"] = f1\n", + "\n", + " f1_values = {k: v for k, v in metrics.items() if k.startswith('f1_')}\n", + " macro_f1 = sum(f1_values.values()) / len(f1_values)\n", + " metrics[\"macro_f1\"] = macro_f1\n", + "\n", + " return metrics" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ea5d16f59728e2b9", + "metadata": {}, + "outputs": [], + "source": [ + "from transformers import AutoModelForTokenClassification, TrainingArguments, Trainer, TrainerCallback\n", + "from transformers import RobertaPreTrainedModel, RobertaModel\n", + "from transformers.utils import (\n", + " add_code_sample_docstrings,\n", + " add_start_docstrings,\n", + " add_start_docstrings_to_model_forward,\n", + " logging,\n", + " replace_return_docstrings,\n", + ")\n", + "from transformers.models.roberta.modeling_roberta import (\n", + " ROBERTA_INPUTS_DOCSTRING,\n", + " ROBERTA_START_DOCSTRING,\n", + " RobertaEmbeddings,\n", + ")\n", + "from typing import Optional, Union, Tuple\n", + "from transformers.modeling_outputs import TokenClassifierOutput\n", + "import torch\n", + "from torch import nn\n", + "import matplotlib.pyplot as plt\n", + "from transformers.trainer_utils import IntervalStrategy\n", + "import pandas as pd\n", + "\n", + "class RobertaForSpanCategorization(RobertaPreTrainedModel):\n", + " _keys_to_ignore_on_load_unexpected = [r\"pooler\"]\n", + " _keys_to_ignore_on_load_missing = [r\"position_ids\"]\n", + "\n", + " def __init__(self, config):\n", + " super().__init__(config)\n", + " self.num_labels = config.num_labels\n", + " self.roberta = RobertaModel(config, add_pooling_layer=False)\n", + " classifier_dropout = (\n", + " config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob\n", + " )\n", + " self.dropout = nn.Dropout(classifier_dropout)\n", + " self.classifier = nn.Linear(config.hidden_size, config.num_labels)\n", + " # Initialize weights and apply final processing\n", + " self.post_init()\n", + "\n", + " @add_start_docstrings_to_model_forward(ROBERTA_INPUTS_DOCSTRING.format(\"batch_size, sequence_length\"))\n", + " def forward(\n", + " self,\n", + " input_ids: Optional[torch.LongTensor] = None,\n", + " attention_mask: Optional[torch.FloatTensor] = None,\n", + " token_type_ids: Optional[torch.LongTensor] = None,\n", + " position_ids: Optional[torch.LongTensor] = None,\n", + " head_mask: Optional[torch.FloatTensor] = None,\n", + " inputs_embeds: Optional[torch.FloatTensor] = None,\n", + " labels: Optional[torch.LongTensor] = None,\n", + " output_attentions: Optional[bool] = None,\n", + " output_hidden_states: Optional[bool] = None,\n", + " return_dict: Optional[bool] = None,\n", + " ) -> Union[Tuple[torch.Tensor], TokenClassifierOutput]:\n", + " r\"\"\"\n", + " labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):\n", + " Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.\n", + " \"\"\"\n", + " return_dict = return_dict if return_dict is not None else self.config.use_return_dict\n", + " outputs = self.roberta(\n", + " input_ids,\n", + " attention_mask=attention_mask,\n", + " token_type_ids=token_type_ids,\n", + " position_ids=position_ids,\n", + " head_mask=head_mask,\n", + " inputs_embeds=inputs_embeds,\n", + " output_attentions=output_attentions,\n", + " output_hidden_states=output_hidden_states,\n", + " return_dict=return_dict,\n", + " )\n", + " sequence_output = outputs[0]\n", + " sequence_output = self.dropout(sequence_output)\n", + " logits = self.classifier(sequence_output)\n", + "\n", + " loss = None\n", + " if labels is not None:\n", + " loss_fct = nn.BCEWithLogitsLoss()\n", + " loss = loss_fct(logits, labels.float())\n", + " if not return_dict:\n", + " output = (logits,) + outputs[2:]\n", + " return ((loss,) + output) if loss is not None else output\n", + " return TokenClassifierOutput(\n", + " loss=loss,\n", + " logits=logits,\n", + " hidden_states=outputs.hidden_states,\n", + " attentions=outputs.attentions,\n", + " )\n", + "\n", + "class TrainingMetricsCallback(TrainerCallback):\n", + " def __init__(self):\n", + " self.macro_f1 = []\n", + " self.steps = []\n", + " self.counter = 0\n", + "\n", + " def on_evaluate(self, args, state, control, metrics=None, **kwargs):\n", + " if metrics is not None:\n", + " if 'eval_macro_f1' in metrics:\n", + " self.macro_f1.append(metrics['eval_macro_f1'])\n", + " self.counter += 1\n", + " self.steps.append(self.counter)" + ] + }, + { + "cell_type": "markdown", + "id": "77f4fc68394aa754", + "metadata": {}, + "source": [ + "# Fine-tuning" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "79161ed938cad895", + "metadata": {}, + "outputs": [], + "source": [ + "training_args = TrainingArguments(\n", + " #output_dir=\"./models/fine_tune_bert_output_span_cat\",\n", + " evaluation_strategy=\"epoch\",\n", + " learning_rate=2.5e-4,\n", + " per_device_train_batch_size=16,\n", + " per_device_eval_batch_size=16,\n", + " num_train_epochs=100,\n", + " weight_decay=0.01,\n", + " logging_steps = 100,\n", + " save_strategy='epoch',\n", + " save_total_limit=2,\n", + " load_best_model_at_end=True,\n", + " metric_for_best_model='macro_f1',\n", + " log_level='critical',\n", + " seed=12345\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "931792b554582a9f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " <div>\n", + " \n", + " <progress value='1300' max='1300' style='width:300px; height:20px; vertical-align: middle;'></progress>\n", + " [1300/1300 09:19, Epoch 100/100]\n", + " </div>\n", + " <table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: left;\">\n", + " <th>Epoch</th>\n", + " <th>Training Loss</th>\n", + " <th>Validation Loss</th>\n", + " <th>Recall Action</th>\n", + " <th>Precision Action</th>\n", + " <th>F1 Action</th>\n", + " <th>Recall Actor</th>\n", + " <th>Precision Actor</th>\n", + " <th>F1 Actor</th>\n", + " <th>Recall Artifact</th>\n", + " <th>Precision Artifact</th>\n", + " <th>F1 Artifact</th>\n", + " <th>Recall Condition</th>\n", + " <th>Precision Condition</th>\n", + " <th>F1 Condition</th>\n", + " <th>Recall Location</th>\n", + " <th>Precision Location</th>\n", + " <th>F1 Location</th>\n", + " <th>Recall Modality</th>\n", + " <th>Precision Modality</th>\n", + " <th>F1 Modality</th>\n", + " <th>Recall Reference</th>\n", + " <th>Precision Reference</th>\n", + " <th>F1 Reference</th>\n", + " <th>Recall Time</th>\n", + " <th>Precision Time</th>\n", + " <th>F1 Time</th>\n", + " <th>Macro F1</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <td>1</td>\n", + " <td>No log</td>\n", + " <td>0.356145</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " </tr>\n", + " <tr>\n", + " <td>2</td>\n", + " <td>No log</td>\n", + " <td>0.279355</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " </tr>\n", + " <tr>\n", + " <td>3</td>\n", + " <td>No log</td>\n", + " <td>0.221275</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " </tr>\n", + " <tr>\n", + " <td>4</td>\n", + " <td>No log</td>\n", + " <td>0.178497</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " </tr>\n", + " <tr>\n", + " <td>5</td>\n", + " <td>No log</td>\n", + " <td>0.149304</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " </tr>\n", + " <tr>\n", + " <td>6</td>\n", + " <td>No log</td>\n", + " <td>0.127901</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " </tr>\n", + " <tr>\n", + " <td>7</td>\n", + " <td>No log</td>\n", + " <td>0.114968</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " </tr>\n", + " <tr>\n", + " <td>8</td>\n", + " <td>0.213000</td>\n", + " <td>0.102522</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " </tr>\n", + " <tr>\n", + " <td>9</td>\n", + " <td>0.213000</td>\n", + " <td>0.097100</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.100648</td>\n", + " <td>0.732010</td>\n", + " <td>0.176965</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.022121</td>\n", + " </tr>\n", + " <tr>\n", + " <td>10</td>\n", + " <td>0.213000</td>\n", + " <td>0.090857</td>\n", + " <td>0.211549</td>\n", + " <td>0.961814</td>\n", + " <td>0.346816</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.878540</td>\n", + " <td>0.699728</td>\n", + " <td>0.779005</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.140728</td>\n", + " </tr>\n", + " <tr>\n", + " <td>11</td>\n", + " <td>0.213000</td>\n", + " <td>0.086320</td>\n", + " <td>0.086089</td>\n", + " <td>0.945245</td>\n", + " <td>0.157806</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.804845</td>\n", + " <td>0.739962</td>\n", + " <td>0.771041</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.116106</td>\n", + " </tr>\n", + " <tr>\n", + " <td>12</td>\n", + " <td>0.213000</td>\n", + " <td>0.083295</td>\n", + " <td>0.252756</td>\n", + " <td>0.940430</td>\n", + " <td>0.398428</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.806892</td>\n", + " <td>0.700533</td>\n", + " <td>0.749960</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.143549</td>\n", + " </tr>\n", + " <tr>\n", + " <td>13</td>\n", + " <td>0.213000</td>\n", + " <td>0.082080</td>\n", + " <td>0.211286</td>\n", + " <td>0.971049</td>\n", + " <td>0.347058</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.853975</td>\n", + " <td>0.716781</td>\n", + " <td>0.779387</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.140806</td>\n", + " </tr>\n", + " <tr>\n", + " <td>14</td>\n", + " <td>0.213000</td>\n", + " <td>0.079545</td>\n", + " <td>0.279265</td>\n", + " <td>0.956835</td>\n", + " <td>0.432345</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.808939</td>\n", + " <td>0.768060</td>\n", + " <td>0.787969</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.152539</td>\n", + " </tr>\n", + " <tr>\n", + " <td>15</td>\n", + " <td>0.213000</td>\n", + " <td>0.076363</td>\n", + " <td>0.229921</td>\n", + " <td>0.961581</td>\n", + " <td>0.371108</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.840669</td>\n", + " <td>0.729858</td>\n", + " <td>0.781354</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.144058</td>\n", + " </tr>\n", + " <tr>\n", + " <td>16</td>\n", + " <td>0.066000</td>\n", + " <td>0.075020</td>\n", + " <td>0.395538</td>\n", + " <td>0.926814</td>\n", + " <td>0.554452</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.780621</td>\n", + " <td>0.739974</td>\n", + " <td>0.759754</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.164276</td>\n", + " </tr>\n", + " <tr>\n", + " <td>17</td>\n", + " <td>0.066000</td>\n", + " <td>0.076133</td>\n", + " <td>0.360367</td>\n", + " <td>0.925202</td>\n", + " <td>0.518700</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.853292</td>\n", + " <td>0.724088</td>\n", + " <td>0.783399</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.162762</td>\n", + " </tr>\n", + " <tr>\n", + " <td>18</td>\n", + " <td>0.066000</td>\n", + " <td>0.072838</td>\n", + " <td>0.371916</td>\n", + " <td>0.929790</td>\n", + " <td>0.531309</td>\n", + " <td>0.113429</td>\n", + " <td>0.750000</td>\n", + " <td>0.197055</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.903446</td>\n", + " <td>0.696659</td>\n", + " <td>0.786690</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.376667</td>\n", + " <td>0.953586</td>\n", + " <td>0.540024</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.256885</td>\n", + " </tr>\n", + " <tr>\n", + " <td>19</td>\n", + " <td>0.066000</td>\n", + " <td>0.075695</td>\n", + " <td>0.292388</td>\n", + " <td>0.934564</td>\n", + " <td>0.445422</td>\n", + " <td>0.018253</td>\n", + " <td>1.000000</td>\n", + " <td>0.035851</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.741726</td>\n", + " <td>0.725150</td>\n", + " <td>0.733345</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.190000</td>\n", + " <td>0.934426</td>\n", + " <td>0.315789</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.191301</td>\n", + " </tr>\n", + " <tr>\n", + " <td>20</td>\n", + " <td>0.066000</td>\n", + " <td>0.072801</td>\n", + " <td>0.347244</td>\n", + " <td>0.934322</td>\n", + " <td>0.506315</td>\n", + " <td>0.031291</td>\n", + " <td>0.888889</td>\n", + " <td>0.060453</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.785739</td>\n", + " <td>0.740514</td>\n", + " <td>0.762457</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.446667</td>\n", + " <td>0.917808</td>\n", + " <td>0.600897</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.241265</td>\n", + " </tr>\n", + " <tr>\n", + " <td>21</td>\n", + " <td>0.066000</td>\n", + " <td>0.072491</td>\n", + " <td>0.309974</td>\n", + " <td>0.944800</td>\n", + " <td>0.466798</td>\n", + " <td>0.156454</td>\n", + " <td>0.845070</td>\n", + " <td>0.264026</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.834869</td>\n", + " <td>0.731540</td>\n", + " <td>0.779796</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.425000</td>\n", + " <td>0.930657</td>\n", + " <td>0.583524</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.261768</td>\n", + " </tr>\n", + " <tr>\n", + " <td>22</td>\n", + " <td>0.066000</td>\n", + " <td>0.068607</td>\n", + " <td>0.371654</td>\n", + " <td>0.930966</td>\n", + " <td>0.531232</td>\n", + " <td>0.299870</td>\n", + " <td>0.827338</td>\n", + " <td>0.440191</td>\n", + " <td>0.017727</td>\n", + " <td>0.693878</td>\n", + " <td>0.034570</td>\n", + " <td>0.829751</td>\n", + " <td>0.748308</td>\n", + " <td>0.786928</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.603333</td>\n", + " <td>0.853774</td>\n", + " <td>0.707031</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.312494</td>\n", + " </tr>\n", + " <tr>\n", + " <td>23</td>\n", + " <td>0.066000</td>\n", + " <td>0.067250</td>\n", + " <td>0.345144</td>\n", + " <td>0.931963</td>\n", + " <td>0.503735</td>\n", + " <td>0.045632</td>\n", + " <td>0.813953</td>\n", + " <td>0.086420</td>\n", + " <td>0.000521</td>\n", + " <td>1.000000</td>\n", + " <td>0.001042</td>\n", + " <td>0.891505</td>\n", + " <td>0.721026</td>\n", + " <td>0.797254</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.630000</td>\n", + " <td>0.821739</td>\n", + " <td>0.713208</td>\n", + " <td>0.119444</td>\n", + " <td>0.811321</td>\n", + " <td>0.208232</td>\n", + " <td>0.288736</td>\n", + " </tr>\n", + " <tr>\n", + " <td>24</td>\n", + " <td>0.039600</td>\n", + " <td>0.069559</td>\n", + " <td>0.358793</td>\n", + " <td>0.931834</td>\n", + " <td>0.518097</td>\n", + " <td>0.320730</td>\n", + " <td>0.857143</td>\n", + " <td>0.466793</td>\n", + " <td>0.024505</td>\n", + " <td>0.618421</td>\n", + " <td>0.047141</td>\n", + " <td>0.849198</td>\n", + " <td>0.734652</td>\n", + " <td>0.787783</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.465000</td>\n", + " <td>0.880126</td>\n", + " <td>0.608506</td>\n", + " <td>0.113889</td>\n", + " <td>1.000000</td>\n", + " <td>0.204489</td>\n", + " <td>0.329101</td>\n", + " </tr>\n", + " <tr>\n", + " <td>25</td>\n", + " <td>0.039600</td>\n", + " <td>0.068075</td>\n", + " <td>0.327559</td>\n", + " <td>0.946889</td>\n", + " <td>0.486739</td>\n", + " <td>0.342894</td>\n", + " <td>0.903780</td>\n", + " <td>0.497164</td>\n", + " <td>0.032325</td>\n", + " <td>0.584906</td>\n", + " <td>0.061265</td>\n", + " <td>0.777209</td>\n", + " <td>0.771942</td>\n", + " <td>0.774566</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.611667</td>\n", + " <td>0.924433</td>\n", + " <td>0.736209</td>\n", + " <td>0.390278</td>\n", + " <td>0.962329</td>\n", + " <td>0.555336</td>\n", + " <td>0.388910</td>\n", + " </tr>\n", + " <tr>\n", + " <td>26</td>\n", + " <td>0.039600</td>\n", + " <td>0.065591</td>\n", + " <td>0.366404</td>\n", + " <td>0.933779</td>\n", + " <td>0.526296</td>\n", + " <td>0.389831</td>\n", + " <td>0.876833</td>\n", + " <td>0.539711</td>\n", + " <td>0.103754</td>\n", + " <td>0.583578</td>\n", + " <td>0.176184</td>\n", + " <td>0.820539</td>\n", + " <td>0.786205</td>\n", + " <td>0.803005</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.636667</td>\n", + " <td>0.892523</td>\n", + " <td>0.743191</td>\n", + " <td>0.376389</td>\n", + " <td>0.944251</td>\n", + " <td>0.538232</td>\n", + " <td>0.415827</td>\n", + " </tr>\n", + " <tr>\n", + " <td>27</td>\n", + " <td>0.039600</td>\n", + " <td>0.073091</td>\n", + " <td>0.295538</td>\n", + " <td>0.947014</td>\n", + " <td>0.450490</td>\n", + " <td>0.289439</td>\n", + " <td>0.906122</td>\n", + " <td>0.438735</td>\n", + " <td>0.010949</td>\n", + " <td>0.724138</td>\n", + " <td>0.021572</td>\n", + " <td>0.717844</td>\n", + " <td>0.830964</td>\n", + " <td>0.770273</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.446667</td>\n", + " <td>0.917808</td>\n", + " <td>0.600897</td>\n", + " <td>0.137500</td>\n", + " <td>0.798387</td>\n", + " <td>0.234597</td>\n", + " <td>0.314570</td>\n", + " </tr>\n", + " <tr>\n", + " <td>28</td>\n", + " <td>0.039600</td>\n", + " <td>0.067930</td>\n", + " <td>0.333071</td>\n", + " <td>0.941395</td>\n", + " <td>0.492051</td>\n", + " <td>0.365059</td>\n", + " <td>0.840841</td>\n", + " <td>0.509091</td>\n", + " <td>0.058916</td>\n", + " <td>0.576531</td>\n", + " <td>0.106906</td>\n", + " <td>0.842375</td>\n", + " <td>0.768680</td>\n", + " <td>0.803842</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.545000</td>\n", + " <td>0.886179</td>\n", + " <td>0.674923</td>\n", + " <td>0.601389</td>\n", + " <td>0.835907</td>\n", + " <td>0.699515</td>\n", + " <td>0.410791</td>\n", + " </tr>\n", + " <tr>\n", + " <td>29</td>\n", + " <td>0.039600</td>\n", + " <td>0.064891</td>\n", + " <td>0.356693</td>\n", + " <td>0.939185</td>\n", + " <td>0.517025</td>\n", + " <td>0.458931</td>\n", + " <td>0.836105</td>\n", + " <td>0.592593</td>\n", + " <td>0.015641</td>\n", + " <td>0.500000</td>\n", + " <td>0.030334</td>\n", + " <td>0.851245</td>\n", + " <td>0.791310</td>\n", + " <td>0.820184</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.006711</td>\n", + " <td>1.000000</td>\n", + " <td>0.013333</td>\n", + " <td>0.586667</td>\n", + " <td>0.911917</td>\n", + " <td>0.713996</td>\n", + " <td>0.581944</td>\n", + " <td>0.833002</td>\n", + " <td>0.685200</td>\n", + " <td>0.421583</td>\n", + " </tr>\n", + " <tr>\n", + " <td>30</td>\n", + " <td>0.039600</td>\n", + " <td>0.063571</td>\n", + " <td>0.398950</td>\n", + " <td>0.929664</td>\n", + " <td>0.558310</td>\n", + " <td>0.434159</td>\n", + " <td>0.856041</td>\n", + " <td>0.576125</td>\n", + " <td>0.078728</td>\n", + " <td>0.653680</td>\n", + " <td>0.140530</td>\n", + " <td>0.801774</td>\n", + " <td>0.804244</td>\n", + " <td>0.803007</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.120805</td>\n", + " <td>1.000000</td>\n", + " <td>0.215569</td>\n", + " <td>0.626667</td>\n", + " <td>0.856492</td>\n", + " <td>0.723773</td>\n", + " <td>0.562500</td>\n", + " <td>0.816532</td>\n", + " <td>0.666118</td>\n", + " <td>0.460429</td>\n", + " </tr>\n", + " <tr>\n", + " <td>31</td>\n", + " <td>0.025000</td>\n", + " <td>0.064738</td>\n", + " <td>0.365879</td>\n", + " <td>0.934943</td>\n", + " <td>0.525939</td>\n", + " <td>0.451108</td>\n", + " <td>0.850123</td>\n", + " <td>0.589438</td>\n", + " <td>0.098540</td>\n", + " <td>0.682310</td>\n", + " <td>0.172210</td>\n", + " <td>0.834869</td>\n", + " <td>0.803085</td>\n", + " <td>0.818668</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.322148</td>\n", + " <td>0.960000</td>\n", + " <td>0.482412</td>\n", + " <td>0.603333</td>\n", + " <td>0.889435</td>\n", + " <td>0.718967</td>\n", + " <td>0.643056</td>\n", + " <td>0.774247</td>\n", + " <td>0.702580</td>\n", + " <td>0.501277</td>\n", + " </tr>\n", + " <tr>\n", + " <td>32</td>\n", + " <td>0.025000</td>\n", + " <td>0.065563</td>\n", + " <td>0.390289</td>\n", + " <td>0.929956</td>\n", + " <td>0.549824</td>\n", + " <td>0.499348</td>\n", + " <td>0.878440</td>\n", + " <td>0.636741</td>\n", + " <td>0.048488</td>\n", + " <td>0.837838</td>\n", + " <td>0.091671</td>\n", + " <td>0.785739</td>\n", + " <td>0.828119</td>\n", + " <td>0.806373</td>\n", + " <td>0.000000</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>0.382550</td>\n", + " <td>0.966102</td>\n", + " <td>0.548077</td>\n", + " <td>0.556667</td>\n", + " <td>0.897849</td>\n", + " <td>0.687243</td>\n", + " <td>0.583333</td>\n", + " <td>0.804598</td>\n", + " <td>0.676329</td>\n", + " <td>0.499532</td>\n", + " </tr>\n", + " <tr>\n", + " <td>33</td>\n", + " <td>0.025000</td>\n", + " <td>0.062232</td>\n", + " <td>0.400525</td>\n", + " <td>0.924288</td>\n", + " <td>0.558872</td>\n", + " <td>0.584094</td>\n", + " <td>0.843691</td>\n", + " <td>0.690293</td>\n", + " <td>0.070386</td>\n", + " <td>0.870968</td>\n", + " <td>0.130246</td>\n", + " <td>0.822927</td>\n", + " <td>0.824615</td>\n", + " <td>0.823770</td>\n", + " <td>0.086124</td>\n", + " <td>0.720000</td>\n", + " <td>0.153846</td>\n", + " <td>0.395973</td>\n", + " <td>0.967213</td>\n", + " <td>0.561905</td>\n", + " <td>0.638333</td>\n", + " <td>0.892774</td>\n", + " <td>0.744412</td>\n", + " <td>0.623611</td>\n", + " <td>0.850379</td>\n", + " <td>0.719551</td>\n", + " <td>0.547862</td>\n", + " </tr>\n", + " <tr>\n", + " <td>34</td>\n", + " <td>0.025000</td>\n", + " <td>0.063367</td>\n", + " <td>0.382677</td>\n", + " <td>0.929254</td>\n", + " <td>0.542108</td>\n", + " <td>0.610169</td>\n", + " <td>0.808290</td>\n", + " <td>0.695394</td>\n", + " <td>0.097497</td>\n", + " <td>0.682482</td>\n", + " <td>0.170620</td>\n", + " <td>0.847834</td>\n", + " <td>0.809710</td>\n", + " <td>0.828333</td>\n", + " <td>0.153110</td>\n", + " <td>0.744186</td>\n", + " <td>0.253968</td>\n", + " <td>0.422819</td>\n", + " <td>0.940299</td>\n", + " <td>0.583333</td>\n", + " <td>0.620000</td>\n", + " <td>0.900726</td>\n", + " <td>0.734452</td>\n", + " <td>0.636111</td>\n", + " <td>0.865784</td>\n", + " <td>0.733387</td>\n", + " <td>0.567700</td>\n", + " </tr>\n", + " <tr>\n", + " <td>35</td>\n", + " <td>0.025000</td>\n", + " <td>0.061890</td>\n", + " <td>0.403675</td>\n", + " <td>0.927624</td>\n", + " <td>0.562546</td>\n", + " <td>0.603651</td>\n", + " <td>0.855823</td>\n", + " <td>0.707951</td>\n", + " <td>0.095933</td>\n", + " <td>0.673993</td>\n", + " <td>0.167960</td>\n", + " <td>0.810304</td>\n", + " <td>0.833333</td>\n", + " <td>0.821657</td>\n", + " <td>0.358852</td>\n", + " <td>0.728155</td>\n", + " <td>0.480769</td>\n", + " <td>0.416107</td>\n", + " <td>0.925373</td>\n", + " <td>0.574074</td>\n", + " <td>0.638333</td>\n", + " <td>0.858744</td>\n", + " <td>0.732314</td>\n", + " <td>0.658333</td>\n", + " <td>0.835979</td>\n", + " <td>0.736597</td>\n", + " <td>0.597983</td>\n", + " </tr>\n", + " <tr>\n", + " <td>36</td>\n", + " <td>0.025000</td>\n", + " <td>0.060461</td>\n", + " <td>0.434908</td>\n", + " <td>0.916989</td>\n", + " <td>0.589995</td>\n", + " <td>0.559322</td>\n", + " <td>0.877301</td>\n", + " <td>0.683121</td>\n", + " <td>0.165798</td>\n", + " <td>0.634731</td>\n", + " <td>0.262919</td>\n", + " <td>0.818833</td>\n", + " <td>0.825593</td>\n", + " <td>0.822199</td>\n", + " <td>0.382775</td>\n", + " <td>0.800000</td>\n", + " <td>0.517799</td>\n", + " <td>0.422819</td>\n", + " <td>0.926471</td>\n", + " <td>0.580645</td>\n", + " <td>0.643333</td>\n", + " <td>0.861607</td>\n", + " <td>0.736641</td>\n", + " <td>0.662500</td>\n", + " <td>0.851786</td>\n", + " <td>0.745312</td>\n", + " <td>0.617329</td>\n", + " </tr>\n", + " <tr>\n", + " <td>37</td>\n", + " <td>0.025000</td>\n", + " <td>0.064956</td>\n", + " <td>0.388451</td>\n", + " <td>0.930233</td>\n", + " <td>0.548047</td>\n", + " <td>0.576271</td>\n", + " <td>0.845124</td>\n", + " <td>0.685271</td>\n", + " <td>0.099583</td>\n", + " <td>0.737452</td>\n", + " <td>0.175471</td>\n", + " <td>0.841351</td>\n", + " <td>0.813861</td>\n", + " <td>0.827378</td>\n", + " <td>0.411483</td>\n", + " <td>0.819048</td>\n", + " <td>0.547771</td>\n", + " <td>0.463087</td>\n", + " <td>0.932432</td>\n", + " <td>0.618834</td>\n", + " <td>0.638333</td>\n", + " <td>0.888631</td>\n", + " <td>0.742968</td>\n", + " <td>0.643056</td>\n", + " <td>0.860595</td>\n", + " <td>0.736089</td>\n", + " <td>0.610229</td>\n", + " </tr>\n", + " <tr>\n", + " <td>38</td>\n", + " <td>0.025000</td>\n", + " <td>0.063804</td>\n", + " <td>0.380577</td>\n", + " <td>0.925926</td>\n", + " <td>0.539435</td>\n", + " <td>0.606258</td>\n", + " <td>0.833333</td>\n", + " <td>0.701887</td>\n", + " <td>0.168405</td>\n", + " <td>0.693133</td>\n", + " <td>0.270973</td>\n", + " <td>0.807915</td>\n", + " <td>0.819377</td>\n", + " <td>0.813606</td>\n", + " <td>0.540670</td>\n", + " <td>0.543269</td>\n", + " <td>0.541966</td>\n", + " <td>0.442953</td>\n", + " <td>0.929577</td>\n", + " <td>0.600000</td>\n", + " <td>0.661667</td>\n", + " <td>0.853763</td>\n", + " <td>0.745540</td>\n", + " <td>0.676389</td>\n", + " <td>0.798361</td>\n", + " <td>0.732331</td>\n", + " <td>0.618217</td>\n", + " </tr>\n", + " <tr>\n", + " <td>39</td>\n", + " <td>0.015200</td>\n", + " <td>0.067724</td>\n", + " <td>0.372966</td>\n", + " <td>0.935484</td>\n", + " <td>0.533308</td>\n", + " <td>0.509778</td>\n", + " <td>0.866962</td>\n", + " <td>0.642036</td>\n", + " <td>0.110532</td>\n", + " <td>0.699670</td>\n", + " <td>0.190905</td>\n", + " <td>0.857387</td>\n", + " <td>0.788269</td>\n", + " <td>0.821376</td>\n", + " <td>0.416268</td>\n", + " <td>0.805556</td>\n", + " <td>0.548896</td>\n", + " <td>0.442953</td>\n", + " <td>0.929577</td>\n", + " <td>0.600000</td>\n", + " <td>0.641667</td>\n", + " <td>0.885057</td>\n", + " <td>0.743961</td>\n", + " <td>0.615278</td>\n", + " <td>0.863548</td>\n", + " <td>0.718573</td>\n", + " <td>0.599882</td>\n", + " </tr>\n", + " <tr>\n", + " <td>40</td>\n", + " <td>0.015200</td>\n", + " <td>0.068417</td>\n", + " <td>0.374278</td>\n", + " <td>0.927178</td>\n", + " <td>0.533283</td>\n", + " <td>0.531943</td>\n", + " <td>0.837782</td>\n", + " <td>0.650718</td>\n", + " <td>0.103754</td>\n", + " <td>0.762452</td>\n", + " <td>0.182653</td>\n", + " <td>0.822927</td>\n", + " <td>0.802128</td>\n", + " <td>0.812395</td>\n", + " <td>0.483254</td>\n", + " <td>0.795276</td>\n", + " <td>0.601190</td>\n", + " <td>0.436242</td>\n", + " <td>0.928571</td>\n", + " <td>0.593607</td>\n", + " <td>0.640000</td>\n", + " <td>0.888889</td>\n", + " <td>0.744186</td>\n", + " <td>0.658333</td>\n", + " <td>0.800676</td>\n", + " <td>0.722561</td>\n", + " <td>0.605074</td>\n", + " </tr>\n", + " <tr>\n", + " <td>41</td>\n", + " <td>0.015200</td>\n", + " <td>0.068958</td>\n", + " <td>0.388976</td>\n", + " <td>0.919926</td>\n", + " <td>0.546763</td>\n", + " <td>0.560626</td>\n", + " <td>0.860000</td>\n", + " <td>0.678769</td>\n", + " <td>0.140250</td>\n", + " <td>0.717333</td>\n", + " <td>0.234627</td>\n", + " <td>0.717503</td>\n", + " <td>0.837515</td>\n", + " <td>0.772878</td>\n", + " <td>0.545455</td>\n", + " <td>0.658960</td>\n", + " <td>0.596859</td>\n", + " <td>0.436242</td>\n", + " <td>0.928571</td>\n", + " <td>0.593607</td>\n", + " <td>0.663333</td>\n", + " <td>0.882483</td>\n", + " <td>0.757374</td>\n", + " <td>0.666667</td>\n", + " <td>0.806723</td>\n", + " <td>0.730038</td>\n", + " <td>0.613864</td>\n", + " </tr>\n", + " <tr>\n", + " <td>42</td>\n", + " <td>0.015200</td>\n", + " <td>0.067570</td>\n", + " <td>0.391601</td>\n", + " <td>0.927861</td>\n", + " <td>0.550757</td>\n", + " <td>0.594524</td>\n", + " <td>0.863636</td>\n", + " <td>0.704247</td>\n", + " <td>0.126173</td>\n", + " <td>0.697406</td>\n", + " <td>0.213687</td>\n", + " <td>0.837598</td>\n", + " <td>0.815615</td>\n", + " <td>0.826460</td>\n", + " <td>0.459330</td>\n", + " <td>0.721805</td>\n", + " <td>0.561404</td>\n", + " <td>0.449664</td>\n", + " <td>0.930556</td>\n", + " <td>0.606335</td>\n", + " <td>0.638333</td>\n", + " <td>0.903302</td>\n", + " <td>0.748047</td>\n", + " <td>0.633333</td>\n", + " <td>0.830601</td>\n", + " <td>0.718676</td>\n", + " <td>0.616201</td>\n", + " </tr>\n", + " <tr>\n", + " <td>43</td>\n", + " <td>0.015200</td>\n", + " <td>0.069913</td>\n", + " <td>0.368241</td>\n", + " <td>0.928524</td>\n", + " <td>0.527344</td>\n", + " <td>0.550196</td>\n", + " <td>0.868313</td>\n", + " <td>0.673583</td>\n", + " <td>0.140250</td>\n", + " <td>0.730978</td>\n", + " <td>0.235346</td>\n", + " <td>0.818151</td>\n", + " <td>0.808496</td>\n", + " <td>0.813295</td>\n", + " <td>0.473684</td>\n", + " <td>0.712230</td>\n", + " <td>0.568966</td>\n", + " <td>0.436242</td>\n", + " <td>0.928571</td>\n", + " <td>0.593607</td>\n", + " <td>0.670000</td>\n", + " <td>0.885463</td>\n", + " <td>0.762808</td>\n", + " <td>0.593056</td>\n", + " <td>0.876797</td>\n", + " <td>0.707539</td>\n", + " <td>0.610311</td>\n", + " </tr>\n", + " <tr>\n", + " <td>44</td>\n", + " <td>0.015200</td>\n", + " <td>0.066919</td>\n", + " <td>0.390026</td>\n", + " <td>0.922981</td>\n", + " <td>0.548339</td>\n", + " <td>0.595828</td>\n", + " <td>0.855805</td>\n", + " <td>0.702537</td>\n", + " <td>0.151721</td>\n", + " <td>0.718519</td>\n", + " <td>0.250538</td>\n", + " <td>0.828727</td>\n", + " <td>0.794830</td>\n", + " <td>0.811425</td>\n", + " <td>0.535885</td>\n", + " <td>0.666667</td>\n", + " <td>0.594164</td>\n", + " <td>0.416107</td>\n", + " <td>0.939394</td>\n", + " <td>0.576744</td>\n", + " <td>0.658333</td>\n", + " <td>0.897727</td>\n", + " <td>0.759615</td>\n", + " <td>0.677778</td>\n", + " <td>0.825719</td>\n", + " <td>0.744470</td>\n", + " <td>0.623479</td>\n", + " </tr>\n", + " <tr>\n", + " <td>45</td>\n", + " <td>0.015200</td>\n", + " <td>0.070344</td>\n", + " <td>0.379790</td>\n", + " <td>0.925784</td>\n", + " <td>0.538619</td>\n", + " <td>0.561930</td>\n", + " <td>0.876016</td>\n", + " <td>0.684670</td>\n", + " <td>0.119395</td>\n", + " <td>0.726984</td>\n", + " <td>0.205105</td>\n", + " <td>0.814057</td>\n", + " <td>0.811565</td>\n", + " <td>0.812809</td>\n", + " <td>0.535885</td>\n", + " <td>0.654971</td>\n", + " <td>0.589474</td>\n", + " <td>0.429530</td>\n", + " <td>0.941176</td>\n", + " <td>0.589862</td>\n", + " <td>0.656667</td>\n", + " <td>0.893424</td>\n", + " <td>0.756964</td>\n", + " <td>0.641667</td>\n", + " <td>0.861940</td>\n", + " <td>0.735669</td>\n", + " <td>0.614147</td>\n", + " </tr>\n", + " <tr>\n", + " <td>46</td>\n", + " <td>0.015200</td>\n", + " <td>0.071540</td>\n", + " <td>0.350131</td>\n", + " <td>0.937456</td>\n", + " <td>0.509841</td>\n", + " <td>0.603651</td>\n", + " <td>0.847985</td>\n", + " <td>0.705255</td>\n", + " <td>0.143379</td>\n", + " <td>0.718016</td>\n", + " <td>0.239027</td>\n", + " <td>0.817127</td>\n", + " <td>0.809943</td>\n", + " <td>0.813519</td>\n", + " <td>0.492823</td>\n", + " <td>0.628049</td>\n", + " <td>0.552279</td>\n", + " <td>0.449664</td>\n", + " <td>0.917808</td>\n", + " <td>0.603604</td>\n", + " <td>0.653333</td>\n", + " <td>0.899083</td>\n", + " <td>0.756757</td>\n", + " <td>0.643056</td>\n", + " <td>0.837251</td>\n", + " <td>0.727416</td>\n", + " <td>0.613462</td>\n", + " </tr>\n", + " <tr>\n", + " <td>47</td>\n", + " <td>0.010700</td>\n", + " <td>0.070772</td>\n", + " <td>0.390026</td>\n", + " <td>0.922981</td>\n", + " <td>0.548339</td>\n", + " <td>0.580183</td>\n", + " <td>0.860735</td>\n", + " <td>0.693146</td>\n", + " <td>0.147550</td>\n", + " <td>0.716456</td>\n", + " <td>0.244704</td>\n", + " <td>0.829751</td>\n", + " <td>0.807169</td>\n", + " <td>0.818304</td>\n", + " <td>0.459330</td>\n", + " <td>0.716418</td>\n", + " <td>0.559767</td>\n", + " <td>0.429530</td>\n", + " <td>0.927536</td>\n", + " <td>0.587156</td>\n", + " <td>0.653333</td>\n", + " <td>0.899083</td>\n", + " <td>0.756757</td>\n", + " <td>0.627778</td>\n", + " <td>0.852830</td>\n", + " <td>0.723200</td>\n", + " <td>0.616422</td>\n", + " </tr>\n", + " <tr>\n", + " <td>48</td>\n", + " <td>0.010700</td>\n", + " <td>0.070882</td>\n", + " <td>0.388976</td>\n", + " <td>0.924517</td>\n", + " <td>0.547571</td>\n", + " <td>0.569752</td>\n", + " <td>0.860236</td>\n", + " <td>0.685490</td>\n", + " <td>0.131387</td>\n", + " <td>0.701950</td>\n", + " <td>0.221344</td>\n", + " <td>0.819174</td>\n", + " <td>0.802473</td>\n", + " <td>0.810738</td>\n", + " <td>0.440191</td>\n", + " <td>0.702290</td>\n", + " <td>0.541176</td>\n", + " <td>0.449664</td>\n", + " <td>0.930556</td>\n", + " <td>0.606335</td>\n", + " <td>0.668333</td>\n", + " <td>0.887168</td>\n", + " <td>0.762357</td>\n", + " <td>0.659722</td>\n", + " <td>0.806452</td>\n", + " <td>0.725745</td>\n", + " <td>0.612595</td>\n", + " </tr>\n", + " <tr>\n", + " <td>49</td>\n", + " <td>0.010700</td>\n", + " <td>0.070016</td>\n", + " <td>0.384777</td>\n", + " <td>0.925505</td>\n", + " <td>0.543567</td>\n", + " <td>0.602347</td>\n", + " <td>0.841530</td>\n", + " <td>0.702128</td>\n", + " <td>0.166840</td>\n", + " <td>0.711111</td>\n", + " <td>0.270270</td>\n", + " <td>0.813033</td>\n", + " <td>0.807249</td>\n", + " <td>0.810131</td>\n", + " <td>0.574163</td>\n", + " <td>0.615385</td>\n", + " <td>0.594059</td>\n", + " <td>0.449664</td>\n", + " <td>0.930556</td>\n", + " <td>0.606335</td>\n", + " <td>0.670000</td>\n", + " <td>0.877729</td>\n", + " <td>0.759924</td>\n", + " <td>0.668056</td>\n", + " <td>0.851327</td>\n", + " <td>0.748638</td>\n", + " <td>0.629382</td>\n", + " </tr>\n", + " <tr>\n", + " <td>50</td>\n", + " <td>0.010700</td>\n", + " <td>0.072628</td>\n", + " <td>0.383465</td>\n", + " <td>0.925269</td>\n", + " <td>0.542216</td>\n", + " <td>0.565841</td>\n", + " <td>0.849315</td>\n", + " <td>0.679186</td>\n", + " <td>0.151721</td>\n", + " <td>0.704600</td>\n", + " <td>0.249678</td>\n", + " <td>0.805527</td>\n", + " <td>0.811898</td>\n", + " <td>0.808700</td>\n", + " <td>0.502392</td>\n", + " <td>0.652174</td>\n", + " <td>0.567568</td>\n", + " <td>0.463087</td>\n", + " <td>0.920000</td>\n", + " <td>0.616071</td>\n", + " <td>0.668333</td>\n", + " <td>0.891111</td>\n", + " <td>0.763810</td>\n", + " <td>0.641667</td>\n", + " <td>0.870056</td>\n", + " <td>0.738609</td>\n", + " <td>0.620730</td>\n", + " </tr>\n", + " <tr>\n", + " <td>51</td>\n", + " <td>0.010700</td>\n", + " <td>0.071187</td>\n", + " <td>0.395013</td>\n", + " <td>0.923880</td>\n", + " <td>0.553411</td>\n", + " <td>0.556714</td>\n", + " <td>0.854000</td>\n", + " <td>0.674033</td>\n", + " <td>0.165798</td>\n", + " <td>0.703540</td>\n", + " <td>0.268354</td>\n", + " <td>0.827021</td>\n", + " <td>0.785737</td>\n", + " <td>0.805851</td>\n", + " <td>0.521531</td>\n", + " <td>0.660606</td>\n", + " <td>0.582888</td>\n", + " <td>0.442953</td>\n", + " <td>0.929577</td>\n", + " <td>0.600000</td>\n", + " <td>0.663333</td>\n", + " <td>0.892377</td>\n", + " <td>0.760994</td>\n", + " <td>0.647222</td>\n", + " <td>0.827709</td>\n", + " <td>0.726422</td>\n", + " <td>0.621494</td>\n", + " </tr>\n", + " <tr>\n", + " <td>52</td>\n", + " <td>0.010700</td>\n", + " <td>0.071963</td>\n", + " <td>0.391864</td>\n", + " <td>0.924458</td>\n", + " <td>0.550415</td>\n", + " <td>0.574967</td>\n", + " <td>0.849711</td>\n", + " <td>0.685848</td>\n", + " <td>0.159020</td>\n", + " <td>0.706019</td>\n", + " <td>0.259574</td>\n", + " <td>0.837257</td>\n", + " <td>0.791103</td>\n", + " <td>0.813526</td>\n", + " <td>0.545455</td>\n", + " <td>0.651429</td>\n", + " <td>0.593750</td>\n", + " <td>0.429530</td>\n", + " <td>0.914286</td>\n", + " <td>0.584475</td>\n", + " <td>0.665000</td>\n", + " <td>0.878855</td>\n", + " <td>0.757116</td>\n", + " <td>0.640278</td>\n", + " <td>0.841241</td>\n", + " <td>0.727129</td>\n", + " <td>0.621479</td>\n", + " </tr>\n", + " <tr>\n", + " <td>53</td>\n", + " <td>0.010700</td>\n", + " <td>0.071476</td>\n", + " <td>0.403937</td>\n", + " <td>0.919904</td>\n", + " <td>0.561372</td>\n", + " <td>0.590613</td>\n", + " <td>0.842007</td>\n", + " <td>0.694253</td>\n", + " <td>0.171533</td>\n", + " <td>0.706009</td>\n", + " <td>0.276007</td>\n", + " <td>0.818833</td>\n", + " <td>0.801336</td>\n", + " <td>0.809990</td>\n", + " <td>0.511962</td>\n", + " <td>0.652439</td>\n", + " <td>0.573727</td>\n", + " <td>0.456376</td>\n", + " <td>0.918919</td>\n", + " <td>0.609865</td>\n", + " <td>0.663333</td>\n", + " <td>0.892377</td>\n", + " <td>0.760994</td>\n", + " <td>0.654167</td>\n", + " <td>0.867403</td>\n", + " <td>0.745843</td>\n", + " <td>0.629006</td>\n", + " </tr>\n", + " <tr>\n", + " <td>54</td>\n", + " <td>0.008000</td>\n", + " <td>0.072140</td>\n", + " <td>0.398163</td>\n", + " <td>0.919951</td>\n", + " <td>0.555779</td>\n", + " <td>0.574967</td>\n", + " <td>0.849711</td>\n", + " <td>0.685848</td>\n", + " <td>0.161627</td>\n", + " <td>0.707763</td>\n", + " <td>0.263158</td>\n", + " <td>0.818833</td>\n", + " <td>0.801068</td>\n", + " <td>0.809853</td>\n", + " <td>0.569378</td>\n", + " <td>0.601010</td>\n", + " <td>0.584767</td>\n", + " <td>0.429530</td>\n", + " <td>0.927536</td>\n", + " <td>0.587156</td>\n", + " <td>0.671667</td>\n", + " <td>0.874187</td>\n", + " <td>0.759661</td>\n", + " <td>0.670833</td>\n", + " <td>0.818644</td>\n", + " <td>0.737405</td>\n", + " <td>0.622953</td>\n", + " </tr>\n", + " <tr>\n", + " <td>55</td>\n", + " <td>0.008000</td>\n", + " <td>0.071148</td>\n", + " <td>0.406299</td>\n", + " <td>0.919786</td>\n", + " <td>0.563626</td>\n", + " <td>0.588005</td>\n", + " <td>0.846154</td>\n", + " <td>0.693846</td>\n", + " <td>0.165276</td>\n", + " <td>0.717195</td>\n", + " <td>0.268644</td>\n", + " <td>0.829751</td>\n", + " <td>0.796333</td>\n", + " <td>0.812698</td>\n", + " <td>0.564593</td>\n", + " <td>0.674286</td>\n", + " <td>0.614583</td>\n", + " <td>0.523490</td>\n", + " <td>0.928571</td>\n", + " <td>0.669528</td>\n", + " <td>0.676667</td>\n", + " <td>0.851153</td>\n", + " <td>0.753946</td>\n", + " <td>0.663889</td>\n", + " <td>0.826990</td>\n", + " <td>0.736518</td>\n", + " <td>0.639174</td>\n", + " </tr>\n", + " <tr>\n", + " <td>56</td>\n", + " <td>0.008000</td>\n", + " <td>0.072347</td>\n", + " <td>0.405774</td>\n", + " <td>0.920238</td>\n", + " <td>0.563206</td>\n", + " <td>0.569752</td>\n", + " <td>0.860236</td>\n", + " <td>0.685490</td>\n", + " <td>0.173097</td>\n", + " <td>0.706383</td>\n", + " <td>0.278057</td>\n", + " <td>0.841351</td>\n", + " <td>0.787608</td>\n", + " <td>0.813593</td>\n", + " <td>0.564593</td>\n", + " <td>0.634409</td>\n", + " <td>0.597468</td>\n", + " <td>0.449664</td>\n", + " <td>0.930556</td>\n", + " <td>0.606335</td>\n", + " <td>0.665000</td>\n", + " <td>0.869281</td>\n", + " <td>0.753541</td>\n", + " <td>0.672222</td>\n", + " <td>0.805324</td>\n", + " <td>0.732778</td>\n", + " <td>0.628809</td>\n", + " </tr>\n", + " <tr>\n", + " <td>57</td>\n", + " <td>0.008000</td>\n", + " <td>0.072100</td>\n", + " <td>0.394751</td>\n", + " <td>0.922699</td>\n", + " <td>0.552941</td>\n", + " <td>0.574967</td>\n", + " <td>0.844828</td>\n", + " <td>0.684251</td>\n", + " <td>0.189781</td>\n", + " <td>0.701349</td>\n", + " <td>0.298728</td>\n", + " <td>0.868646</td>\n", + " <td>0.778831</td>\n", + " <td>0.821290</td>\n", + " <td>0.545455</td>\n", + " <td>0.658960</td>\n", + " <td>0.596859</td>\n", + " <td>0.456376</td>\n", + " <td>0.931507</td>\n", + " <td>0.612613</td>\n", + " <td>0.663333</td>\n", + " <td>0.868996</td>\n", + " <td>0.752363</td>\n", + " <td>0.666667</td>\n", + " <td>0.810811</td>\n", + " <td>0.731707</td>\n", + " <td>0.631344</td>\n", + " </tr>\n", + " <tr>\n", + " <td>58</td>\n", + " <td>0.008000</td>\n", + " <td>0.072843</td>\n", + " <td>0.390814</td>\n", + " <td>0.923697</td>\n", + " <td>0.549244</td>\n", + " <td>0.597132</td>\n", + " <td>0.843462</td>\n", + " <td>0.699237</td>\n", + " <td>0.182482</td>\n", + " <td>0.711382</td>\n", + " <td>0.290456</td>\n", + " <td>0.854657</td>\n", + " <td>0.791469</td>\n", + " <td>0.821850</td>\n", + " <td>0.540670</td>\n", + " <td>0.645714</td>\n", + " <td>0.588542</td>\n", + " <td>0.449664</td>\n", + " <td>0.917808</td>\n", + " <td>0.603604</td>\n", + " <td>0.666667</td>\n", + " <td>0.860215</td>\n", + " <td>0.751174</td>\n", + " <td>0.688889</td>\n", + " <td>0.781102</td>\n", + " <td>0.732103</td>\n", + " <td>0.629526</td>\n", + " </tr>\n", + " <tr>\n", + " <td>59</td>\n", + " <td>0.008000</td>\n", + " <td>0.073446</td>\n", + " <td>0.387664</td>\n", + " <td>0.921397</td>\n", + " <td>0.545723</td>\n", + " <td>0.614081</td>\n", + " <td>0.832155</td>\n", + " <td>0.706677</td>\n", + " <td>0.172576</td>\n", + " <td>0.711828</td>\n", + " <td>0.277801</td>\n", + " <td>0.808257</td>\n", + " <td>0.809638</td>\n", + " <td>0.808947</td>\n", + " <td>0.545455</td>\n", + " <td>0.644068</td>\n", + " <td>0.590674</td>\n", + " <td>0.449664</td>\n", + " <td>0.930556</td>\n", + " <td>0.606335</td>\n", + " <td>0.678333</td>\n", + " <td>0.864119</td>\n", + " <td>0.760037</td>\n", + " <td>0.716667</td>\n", + " <td>0.747826</td>\n", + " <td>0.731915</td>\n", + " <td>0.628514</td>\n", + " </tr>\n", + " <tr>\n", + " <td>60</td>\n", + " <td>0.008000</td>\n", + " <td>0.068292</td>\n", + " <td>0.415223</td>\n", + " <td>0.916039</td>\n", + " <td>0.571429</td>\n", + " <td>0.619296</td>\n", + " <td>0.833333</td>\n", + " <td>0.710546</td>\n", + " <td>0.212200</td>\n", + " <td>0.677205</td>\n", + " <td>0.323144</td>\n", + " <td>0.836916</td>\n", + " <td>0.778483</td>\n", + " <td>0.806643</td>\n", + " <td>0.578947</td>\n", + " <td>0.679775</td>\n", + " <td>0.625323</td>\n", + " <td>0.436242</td>\n", + " <td>0.942029</td>\n", + " <td>0.596330</td>\n", + " <td>0.691667</td>\n", + " <td>0.826693</td>\n", + " <td>0.753176</td>\n", + " <td>0.729167</td>\n", + " <td>0.741525</td>\n", + " <td>0.735294</td>\n", + " <td>0.640236</td>\n", + " </tr>\n", + " <tr>\n", + " <td>61</td>\n", + " <td>0.008000</td>\n", + " <td>0.069890</td>\n", + " <td>0.472441</td>\n", + " <td>0.908632</td>\n", + " <td>0.621654</td>\n", + " <td>0.607562</td>\n", + " <td>0.830660</td>\n", + " <td>0.701807</td>\n", + " <td>0.185610</td>\n", + " <td>0.704950</td>\n", + " <td>0.293851</td>\n", + " <td>0.747185</td>\n", + " <td>0.836836</td>\n", + " <td>0.789474</td>\n", + " <td>0.511962</td>\n", + " <td>0.660494</td>\n", + " <td>0.576819</td>\n", + " <td>0.543624</td>\n", + " <td>0.861702</td>\n", + " <td>0.666667</td>\n", + " <td>0.700000</td>\n", + " <td>0.801527</td>\n", + " <td>0.747331</td>\n", + " <td>0.781944</td>\n", + " <td>0.524697</td>\n", + " <td>0.627998</td>\n", + " <td>0.628200</td>\n", + " </tr>\n", + " <tr>\n", + " <td>62</td>\n", + " <td>0.006900</td>\n", + " <td>0.077804</td>\n", + " <td>0.395538</td>\n", + " <td>0.940699</td>\n", + " <td>0.556911</td>\n", + " <td>0.590613</td>\n", + " <td>0.834254</td>\n", + " <td>0.691603</td>\n", + " <td>0.157977</td>\n", + " <td>0.682432</td>\n", + " <td>0.256562</td>\n", + " <td>0.763903</td>\n", + " <td>0.824374</td>\n", + " <td>0.792987</td>\n", + " <td>0.473684</td>\n", + " <td>0.717391</td>\n", + " <td>0.570605</td>\n", + " <td>0.442953</td>\n", + " <td>0.929577</td>\n", + " <td>0.600000</td>\n", + " <td>0.666667</td>\n", + " <td>0.923788</td>\n", + " <td>0.774443</td>\n", + " <td>0.516667</td>\n", + " <td>0.932331</td>\n", + " <td>0.664879</td>\n", + " <td>0.613499</td>\n", + " </tr>\n", + " <tr>\n", + " <td>63</td>\n", + " <td>0.006900</td>\n", + " <td>0.075310</td>\n", + " <td>0.386089</td>\n", + " <td>0.931602</td>\n", + " <td>0.545927</td>\n", + " <td>0.565841</td>\n", + " <td>0.839458</td>\n", + " <td>0.676012</td>\n", + " <td>0.149635</td>\n", + " <td>0.701711</td>\n", + " <td>0.246670</td>\n", + " <td>0.835892</td>\n", + " <td>0.792367</td>\n", + " <td>0.813548</td>\n", + " <td>0.521531</td>\n", + " <td>0.672840</td>\n", + " <td>0.587601</td>\n", + " <td>0.442953</td>\n", + " <td>0.942857</td>\n", + " <td>0.602740</td>\n", + " <td>0.561667</td>\n", + " <td>0.905914</td>\n", + " <td>0.693416</td>\n", + " <td>0.800000</td>\n", + " <td>0.595041</td>\n", + " <td>0.682464</td>\n", + " <td>0.606047</td>\n", + " </tr>\n", + " <tr>\n", + " <td>64</td>\n", + " <td>0.006900</td>\n", + " <td>0.075709</td>\n", + " <td>0.408136</td>\n", + " <td>0.928358</td>\n", + " <td>0.567001</td>\n", + " <td>0.612777</td>\n", + " <td>0.797963</td>\n", + " <td>0.693215</td>\n", + " <td>0.158498</td>\n", + " <td>0.642706</td>\n", + " <td>0.254287</td>\n", + " <td>0.800068</td>\n", + " <td>0.821366</td>\n", + " <td>0.810577</td>\n", + " <td>0.507177</td>\n", + " <td>0.736111</td>\n", + " <td>0.600567</td>\n", + " <td>0.442953</td>\n", + " <td>0.929577</td>\n", + " <td>0.600000</td>\n", + " <td>0.666667</td>\n", + " <td>0.938967</td>\n", + " <td>0.779727</td>\n", + " <td>0.655556</td>\n", + " <td>0.832451</td>\n", + " <td>0.733489</td>\n", + " <td>0.629858</td>\n", + " </tr>\n", + " <tr>\n", + " <td>65</td>\n", + " <td>0.006900</td>\n", + " <td>0.074874</td>\n", + " <td>0.395538</td>\n", + " <td>0.930247</td>\n", + " <td>0.555064</td>\n", + " <td>0.620600</td>\n", + " <td>0.804054</td>\n", + " <td>0.700515</td>\n", + " <td>0.166840</td>\n", + " <td>0.675105</td>\n", + " <td>0.267559</td>\n", + " <td>0.806209</td>\n", + " <td>0.808970</td>\n", + " <td>0.807587</td>\n", + " <td>0.535885</td>\n", + " <td>0.643678</td>\n", + " <td>0.584856</td>\n", + " <td>0.442953</td>\n", + " <td>0.929577</td>\n", + " <td>0.600000</td>\n", + " <td>0.690000</td>\n", + " <td>0.911894</td>\n", + " <td>0.785579</td>\n", + " <td>0.669444</td>\n", + " <td>0.778675</td>\n", + " <td>0.719940</td>\n", + " <td>0.627638</td>\n", + " </tr>\n", + " <tr>\n", + " <td>66</td>\n", + " <td>0.006900</td>\n", + " <td>0.076945</td>\n", + " <td>0.395276</td>\n", + " <td>0.933086</td>\n", + " <td>0.555310</td>\n", + " <td>0.573664</td>\n", + " <td>0.844530</td>\n", + " <td>0.683230</td>\n", + " <td>0.159020</td>\n", + " <td>0.701149</td>\n", + " <td>0.259244</td>\n", + " <td>0.831798</td>\n", + " <td>0.787977</td>\n", + " <td>0.809295</td>\n", + " <td>0.555024</td>\n", + " <td>0.623656</td>\n", + " <td>0.587342</td>\n", + " <td>0.442953</td>\n", + " <td>0.929577</td>\n", + " <td>0.600000</td>\n", + " <td>0.681667</td>\n", + " <td>0.904867</td>\n", + " <td>0.777567</td>\n", + " <td>0.663889</td>\n", + " <td>0.822719</td>\n", + " <td>0.734819</td>\n", + " <td>0.625851</td>\n", + " </tr>\n", + " <tr>\n", + " <td>67</td>\n", + " <td>0.006900</td>\n", + " <td>0.079016</td>\n", + " <td>0.375591</td>\n", + " <td>0.945178</td>\n", + " <td>0.537566</td>\n", + " <td>0.588005</td>\n", + " <td>0.844569</td>\n", + " <td>0.693313</td>\n", + " <td>0.166840</td>\n", + " <td>0.694143</td>\n", + " <td>0.269021</td>\n", + " <td>0.835892</td>\n", + " <td>0.784502</td>\n", + " <td>0.809382</td>\n", + " <td>0.564593</td>\n", + " <td>0.627660</td>\n", + " <td>0.594458</td>\n", + " <td>0.442953</td>\n", + " <td>0.929577</td>\n", + " <td>0.600000</td>\n", + " <td>0.696667</td>\n", + " <td>0.854806</td>\n", + " <td>0.767677</td>\n", + " <td>0.665278</td>\n", + " <td>0.823024</td>\n", + " <td>0.735791</td>\n", + " <td>0.625901</td>\n", + " </tr>\n", + " <tr>\n", + " <td>68</td>\n", + " <td>0.006900</td>\n", + " <td>0.076534</td>\n", + " <td>0.382940</td>\n", + " <td>0.944948</td>\n", + " <td>0.545013</td>\n", + " <td>0.582790</td>\n", + " <td>0.841808</td>\n", + " <td>0.688752</td>\n", + " <td>0.157977</td>\n", + " <td>0.668874</td>\n", + " <td>0.255588</td>\n", + " <td>0.874446</td>\n", + " <td>0.743977</td>\n", + " <td>0.803952</td>\n", + " <td>0.550239</td>\n", + " <td>0.696970</td>\n", + " <td>0.614973</td>\n", + " <td>0.449664</td>\n", + " <td>0.930556</td>\n", + " <td>0.606335</td>\n", + " <td>0.680000</td>\n", + " <td>0.858947</td>\n", + " <td>0.759070</td>\n", + " <td>0.683333</td>\n", + " <td>0.813223</td>\n", + " <td>0.742642</td>\n", + " <td>0.627041</td>\n", + " </tr>\n", + " <tr>\n", + " <td>69</td>\n", + " <td>0.006900</td>\n", + " <td>0.079277</td>\n", + " <td>0.379003</td>\n", + " <td>0.941330</td>\n", + " <td>0.540419</td>\n", + " <td>0.616688</td>\n", + " <td>0.824042</td>\n", + " <td>0.705444</td>\n", + " <td>0.154849</td>\n", + " <td>0.697183</td>\n", + " <td>0.253413</td>\n", + " <td>0.807574</td>\n", + " <td>0.801286</td>\n", + " <td>0.804418</td>\n", + " <td>0.540670</td>\n", + " <td>0.668639</td>\n", + " <td>0.597884</td>\n", + " <td>0.483221</td>\n", + " <td>0.923077</td>\n", + " <td>0.634361</td>\n", + " <td>0.645000</td>\n", + " <td>0.900000</td>\n", + " <td>0.751456</td>\n", + " <td>0.641667</td>\n", + " <td>0.853974</td>\n", + " <td>0.732752</td>\n", + " <td>0.627518</td>\n", + " </tr>\n", + " <tr>\n", + " <td>70</td>\n", + " <td>0.006300</td>\n", + " <td>0.078259</td>\n", + " <td>0.386352</td>\n", + " <td>0.939375</td>\n", + " <td>0.547517</td>\n", + " <td>0.598435</td>\n", + " <td>0.833031</td>\n", + " <td>0.696510</td>\n", + " <td>0.177789</td>\n", + " <td>0.695918</td>\n", + " <td>0.283223</td>\n", + " <td>0.839645</td>\n", + " <td>0.784257</td>\n", + " <td>0.811007</td>\n", + " <td>0.516746</td>\n", + " <td>0.658537</td>\n", + " <td>0.579088</td>\n", + " <td>0.456376</td>\n", + " <td>0.931507</td>\n", + " <td>0.612613</td>\n", + " <td>0.650000</td>\n", + " <td>0.896552</td>\n", + " <td>0.753623</td>\n", + " <td>0.640278</td>\n", + " <td>0.847426</td>\n", + " <td>0.729430</td>\n", + " <td>0.626626</td>\n", + " </tr>\n", + " <tr>\n", + " <td>71</td>\n", + " <td>0.006300</td>\n", + " <td>0.078232</td>\n", + " <td>0.385827</td>\n", + " <td>0.939297</td>\n", + " <td>0.546977</td>\n", + " <td>0.631030</td>\n", + " <td>0.794745</td>\n", + " <td>0.703488</td>\n", + " <td>0.151199</td>\n", + " <td>0.695444</td>\n", + " <td>0.248394</td>\n", + " <td>0.822927</td>\n", + " <td>0.793160</td>\n", + " <td>0.807770</td>\n", + " <td>0.545455</td>\n", + " <td>0.662791</td>\n", + " <td>0.598425</td>\n", + " <td>0.510067</td>\n", + " <td>0.894118</td>\n", + " <td>0.649573</td>\n", + " <td>0.658333</td>\n", + " <td>0.877778</td>\n", + " <td>0.752381</td>\n", + " <td>0.662500</td>\n", + " <td>0.832461</td>\n", + " <td>0.737819</td>\n", + " <td>0.630603</td>\n", + " </tr>\n", + " <tr>\n", + " <td>72</td>\n", + " <td>0.006300</td>\n", + " <td>0.077648</td>\n", + " <td>0.393701</td>\n", + " <td>0.935162</td>\n", + " <td>0.554119</td>\n", + " <td>0.610169</td>\n", + " <td>0.819615</td>\n", + " <td>0.699552</td>\n", + " <td>0.157456</td>\n", + " <td>0.694253</td>\n", + " <td>0.256694</td>\n", + " <td>0.822927</td>\n", + " <td>0.790301</td>\n", + " <td>0.806284</td>\n", + " <td>0.545455</td>\n", + " <td>0.662791</td>\n", + " <td>0.598425</td>\n", + " <td>0.449664</td>\n", + " <td>0.917808</td>\n", + " <td>0.603604</td>\n", + " <td>0.658333</td>\n", + " <td>0.879733</td>\n", + " <td>0.753098</td>\n", + " <td>0.676389</td>\n", + " <td>0.822635</td>\n", + " <td>0.742378</td>\n", + " <td>0.626769</td>\n", + " </tr>\n", + " <tr>\n", + " <td>73</td>\n", + " <td>0.006300</td>\n", + " <td>0.077358</td>\n", + " <td>0.397375</td>\n", + " <td>0.933991</td>\n", + " <td>0.557540</td>\n", + " <td>0.608866</td>\n", + " <td>0.828014</td>\n", + " <td>0.701728</td>\n", + " <td>0.178311</td>\n", + " <td>0.697959</td>\n", + " <td>0.284053</td>\n", + " <td>0.819174</td>\n", + " <td>0.792671</td>\n", + " <td>0.805705</td>\n", + " <td>0.569378</td>\n", + " <td>0.646739</td>\n", + " <td>0.605598</td>\n", + " <td>0.456376</td>\n", + " <td>0.906667</td>\n", + " <td>0.607143</td>\n", + " <td>0.671667</td>\n", + " <td>0.859275</td>\n", + " <td>0.753976</td>\n", + " <td>0.679167</td>\n", + " <td>0.806931</td>\n", + " <td>0.737557</td>\n", + " <td>0.631662</td>\n", + " </tr>\n", + " <tr>\n", + " <td>74</td>\n", + " <td>0.006300</td>\n", + " <td>0.077561</td>\n", + " <td>0.404462</td>\n", + " <td>0.932809</td>\n", + " <td>0.564262</td>\n", + " <td>0.610169</td>\n", + " <td>0.826855</td>\n", + " <td>0.702176</td>\n", + " <td>0.175182</td>\n", + " <td>0.684318</td>\n", + " <td>0.278954</td>\n", + " <td>0.817468</td>\n", + " <td>0.796278</td>\n", + " <td>0.806734</td>\n", + " <td>0.540670</td>\n", + " <td>0.653179</td>\n", + " <td>0.591623</td>\n", + " <td>0.456376</td>\n", + " <td>0.918919</td>\n", + " <td>0.609865</td>\n", + " <td>0.665000</td>\n", + " <td>0.880795</td>\n", + " <td>0.757835</td>\n", + " <td>0.672222</td>\n", + " <td>0.823129</td>\n", + " <td>0.740061</td>\n", + " <td>0.631439</td>\n", + " </tr>\n", + " <tr>\n", + " <td>75</td>\n", + " <td>0.006300</td>\n", + " <td>0.078310</td>\n", + " <td>0.405512</td>\n", + " <td>0.931284</td>\n", + " <td>0.565003</td>\n", + " <td>0.608866</td>\n", + " <td>0.826549</td>\n", + " <td>0.701201</td>\n", + " <td>0.163191</td>\n", + " <td>0.681917</td>\n", + " <td>0.263357</td>\n", + " <td>0.806892</td>\n", + " <td>0.799797</td>\n", + " <td>0.803329</td>\n", + " <td>0.535885</td>\n", + " <td>0.654971</td>\n", + " <td>0.589474</td>\n", + " <td>0.449664</td>\n", + " <td>0.905405</td>\n", + " <td>0.600897</td>\n", + " <td>0.661667</td>\n", + " <td>0.880266</td>\n", + " <td>0.755471</td>\n", + " <td>0.673611</td>\n", + " <td>0.827645</td>\n", + " <td>0.742726</td>\n", + " <td>0.627682</td>\n", + " </tr>\n", + " <tr>\n", + " <td>76</td>\n", + " <td>0.006300</td>\n", + " <td>0.078413</td>\n", + " <td>0.408399</td>\n", + " <td>0.928955</td>\n", + " <td>0.567366</td>\n", + " <td>0.611473</td>\n", + " <td>0.827160</td>\n", + " <td>0.703148</td>\n", + " <td>0.168405</td>\n", + " <td>0.682875</td>\n", + " <td>0.270180</td>\n", + " <td>0.802798</td>\n", + " <td>0.801431</td>\n", + " <td>0.802114</td>\n", + " <td>0.516746</td>\n", + " <td>0.650602</td>\n", + " <td>0.576000</td>\n", + " <td>0.456376</td>\n", + " <td>0.906667</td>\n", + " <td>0.607143</td>\n", + " <td>0.670000</td>\n", + " <td>0.872017</td>\n", + " <td>0.757776</td>\n", + " <td>0.675000</td>\n", + " <td>0.835052</td>\n", + " <td>0.746544</td>\n", + " <td>0.628784</td>\n", + " </tr>\n", + " <tr>\n", + " <td>77</td>\n", + " <td>0.005000</td>\n", + " <td>0.078019</td>\n", + " <td>0.405512</td>\n", + " <td>0.930163</td>\n", + " <td>0.564796</td>\n", + " <td>0.608866</td>\n", + " <td>0.838420</td>\n", + " <td>0.705438</td>\n", + " <td>0.171011</td>\n", + " <td>0.679089</td>\n", + " <td>0.273219</td>\n", + " <td>0.816786</td>\n", + " <td>0.794821</td>\n", + " <td>0.805654</td>\n", + " <td>0.540670</td>\n", + " <td>0.664706</td>\n", + " <td>0.596306</td>\n", + " <td>0.463087</td>\n", + " <td>0.920000</td>\n", + " <td>0.616071</td>\n", + " <td>0.673333</td>\n", + " <td>0.866953</td>\n", + " <td>0.757974</td>\n", + " <td>0.676389</td>\n", + " <td>0.818487</td>\n", + " <td>0.740684</td>\n", + " <td>0.632518</td>\n", + " </tr>\n", + " <tr>\n", + " <td>78</td>\n", + " <td>0.005000</td>\n", + " <td>0.077703</td>\n", + " <td>0.407612</td>\n", + " <td>0.930497</td>\n", + " <td>0.566892</td>\n", + " <td>0.615385</td>\n", + " <td>0.832451</td>\n", + " <td>0.707646</td>\n", + " <td>0.172576</td>\n", + " <td>0.678279</td>\n", + " <td>0.275145</td>\n", + " <td>0.822927</td>\n", + " <td>0.788751</td>\n", + " <td>0.805477</td>\n", + " <td>0.531100</td>\n", + " <td>0.656805</td>\n", + " <td>0.587302</td>\n", + " <td>0.463087</td>\n", + " <td>0.920000</td>\n", + " <td>0.616071</td>\n", + " <td>0.671667</td>\n", + " <td>0.866667</td>\n", + " <td>0.756808</td>\n", + " <td>0.668056</td>\n", + " <td>0.836522</td>\n", + " <td>0.742857</td>\n", + " <td>0.632275</td>\n", + " </tr>\n", + " <tr>\n", + " <td>79</td>\n", + " <td>0.005000</td>\n", + " <td>0.078168</td>\n", + " <td>0.410499</td>\n", + " <td>0.930399</td>\n", + " <td>0.569659</td>\n", + " <td>0.607562</td>\n", + " <td>0.838129</td>\n", + " <td>0.704460</td>\n", + " <td>0.165276</td>\n", + " <td>0.678801</td>\n", + " <td>0.265828</td>\n", + " <td>0.826339</td>\n", + " <td>0.788411</td>\n", + " <td>0.806930</td>\n", + " <td>0.516746</td>\n", + " <td>0.654545</td>\n", + " <td>0.577540</td>\n", + " <td>0.449664</td>\n", + " <td>0.917808</td>\n", + " <td>0.603604</td>\n", + " <td>0.660000</td>\n", + " <td>0.881960</td>\n", + " <td>0.755005</td>\n", + " <td>0.676389</td>\n", + " <td>0.844021</td>\n", + " <td>0.750964</td>\n", + " <td>0.629249</td>\n", + " </tr>\n", + " <tr>\n", + " <td>80</td>\n", + " <td>0.005000</td>\n", + " <td>0.078695</td>\n", + " <td>0.409449</td>\n", + " <td>0.930233</td>\n", + " <td>0.568617</td>\n", + " <td>0.611473</td>\n", + " <td>0.838998</td>\n", + " <td>0.707391</td>\n", + " <td>0.168405</td>\n", + " <td>0.675732</td>\n", + " <td>0.269616</td>\n", + " <td>0.816786</td>\n", + " <td>0.799599</td>\n", + " <td>0.808101</td>\n", + " <td>0.521531</td>\n", + " <td>0.652695</td>\n", + " <td>0.579787</td>\n", + " <td>0.476510</td>\n", + " <td>0.922078</td>\n", + " <td>0.628319</td>\n", + " <td>0.658333</td>\n", + " <td>0.885650</td>\n", + " <td>0.755258</td>\n", + " <td>0.662500</td>\n", + " <td>0.847247</td>\n", + " <td>0.743570</td>\n", + " <td>0.632582</td>\n", + " </tr>\n", + " <tr>\n", + " <td>81</td>\n", + " <td>0.005000</td>\n", + " <td>0.079567</td>\n", + " <td>0.403937</td>\n", + " <td>0.931598</td>\n", + " <td>0.563530</td>\n", + " <td>0.606258</td>\n", + " <td>0.840868</td>\n", + " <td>0.704545</td>\n", + " <td>0.159020</td>\n", + " <td>0.688488</td>\n", + " <td>0.258365</td>\n", + " <td>0.817810</td>\n", + " <td>0.800067</td>\n", + " <td>0.808841</td>\n", + " <td>0.526316</td>\n", + " <td>0.650888</td>\n", + " <td>0.582011</td>\n", + " <td>0.469799</td>\n", + " <td>0.921053</td>\n", + " <td>0.622222</td>\n", + " <td>0.658333</td>\n", + " <td>0.889640</td>\n", + " <td>0.756705</td>\n", + " <td>0.661111</td>\n", + " <td>0.848485</td>\n", + " <td>0.743169</td>\n", + " <td>0.629924</td>\n", + " </tr>\n", + " <tr>\n", + " <td>82</td>\n", + " <td>0.005000</td>\n", + " <td>0.079116</td>\n", + " <td>0.406562</td>\n", + " <td>0.932010</td>\n", + " <td>0.566155</td>\n", + " <td>0.606258</td>\n", + " <td>0.839350</td>\n", + " <td>0.704012</td>\n", + " <td>0.163191</td>\n", + " <td>0.690949</td>\n", + " <td>0.264024</td>\n", + " <td>0.824974</td>\n", + " <td>0.795133</td>\n", + " <td>0.809779</td>\n", + " <td>0.521531</td>\n", + " <td>0.652695</td>\n", + " <td>0.579787</td>\n", + " <td>0.469799</td>\n", + " <td>0.921053</td>\n", + " <td>0.622222</td>\n", + " <td>0.663333</td>\n", + " <td>0.890380</td>\n", + " <td>0.760267</td>\n", + " <td>0.652778</td>\n", + " <td>0.849910</td>\n", + " <td>0.738413</td>\n", + " <td>0.630582</td>\n", + " </tr>\n", + " <tr>\n", + " <td>83</td>\n", + " <td>0.005000</td>\n", + " <td>0.079035</td>\n", + " <td>0.411024</td>\n", + " <td>0.929929</td>\n", + " <td>0.570076</td>\n", + " <td>0.604954</td>\n", + " <td>0.840580</td>\n", + " <td>0.703563</td>\n", + " <td>0.165276</td>\n", + " <td>0.692140</td>\n", + " <td>0.266835</td>\n", + " <td>0.821563</td>\n", + " <td>0.796296</td>\n", + " <td>0.808732</td>\n", + " <td>0.531100</td>\n", + " <td>0.656805</td>\n", + " <td>0.587302</td>\n", + " <td>0.483221</td>\n", + " <td>0.923077</td>\n", + " <td>0.634361</td>\n", + " <td>0.663333</td>\n", + " <td>0.888393</td>\n", + " <td>0.759542</td>\n", + " <td>0.655556</td>\n", + " <td>0.848921</td>\n", + " <td>0.739812</td>\n", + " <td>0.633778</td>\n", + " </tr>\n", + " <tr>\n", + " <td>84</td>\n", + " <td>0.005000</td>\n", + " <td>0.079356</td>\n", + " <td>0.409711</td>\n", + " <td>0.930829</td>\n", + " <td>0.568981</td>\n", + " <td>0.606258</td>\n", + " <td>0.840868</td>\n", + " <td>0.704545</td>\n", + " <td>0.164755</td>\n", + " <td>0.692982</td>\n", + " <td>0.266217</td>\n", + " <td>0.819174</td>\n", + " <td>0.796880</td>\n", + " <td>0.807873</td>\n", + " <td>0.531100</td>\n", + " <td>0.656805</td>\n", + " <td>0.587302</td>\n", + " <td>0.516779</td>\n", + " <td>0.916667</td>\n", + " <td>0.660944</td>\n", + " <td>0.665000</td>\n", + " <td>0.890625</td>\n", + " <td>0.761450</td>\n", + " <td>0.654167</td>\n", + " <td>0.848649</td>\n", + " <td>0.738824</td>\n", + " <td>0.637017</td>\n", + " </tr>\n", + " <tr>\n", + " <td>85</td>\n", + " <td>0.004500</td>\n", + " <td>0.079107</td>\n", + " <td>0.411024</td>\n", + " <td>0.929377</td>\n", + " <td>0.569973</td>\n", + " <td>0.614081</td>\n", + " <td>0.833628</td>\n", + " <td>0.707207</td>\n", + " <td>0.160063</td>\n", + " <td>0.686801</td>\n", + " <td>0.259619</td>\n", + " <td>0.817127</td>\n", + " <td>0.798067</td>\n", + " <td>0.807485</td>\n", + " <td>0.540670</td>\n", + " <td>0.653179</td>\n", + " <td>0.591623</td>\n", + " <td>0.510067</td>\n", + " <td>0.915663</td>\n", + " <td>0.655172</td>\n", + " <td>0.683333</td>\n", + " <td>0.866808</td>\n", + " <td>0.764212</td>\n", + " <td>0.654167</td>\n", + " <td>0.853261</td>\n", + " <td>0.740566</td>\n", + " <td>0.636982</td>\n", + " </tr>\n", + " <tr>\n", + " <td>86</td>\n", + " <td>0.004500</td>\n", + " <td>0.079421</td>\n", + " <td>0.409974</td>\n", + " <td>0.928656</td>\n", + " <td>0.568827</td>\n", + " <td>0.608866</td>\n", + " <td>0.839928</td>\n", + " <td>0.705971</td>\n", + " <td>0.159020</td>\n", + " <td>0.693182</td>\n", + " <td>0.258694</td>\n", + " <td>0.819174</td>\n", + " <td>0.800333</td>\n", + " <td>0.809644</td>\n", + " <td>0.531100</td>\n", + " <td>0.652941</td>\n", + " <td>0.585752</td>\n", + " <td>0.510067</td>\n", + " <td>0.904762</td>\n", + " <td>0.652361</td>\n", + " <td>0.685000</td>\n", + " <td>0.867089</td>\n", + " <td>0.765363</td>\n", + " <td>0.658333</td>\n", + " <td>0.838938</td>\n", + " <td>0.737743</td>\n", + " <td>0.635544</td>\n", + " </tr>\n", + " <tr>\n", + " <td>87</td>\n", + " <td>0.004500</td>\n", + " <td>0.079341</td>\n", + " <td>0.408399</td>\n", + " <td>0.930622</td>\n", + " <td>0.567676</td>\n", + " <td>0.616688</td>\n", + " <td>0.829825</td>\n", + " <td>0.707554</td>\n", + " <td>0.157977</td>\n", + " <td>0.690205</td>\n", + " <td>0.257106</td>\n", + " <td>0.828727</td>\n", + " <td>0.794570</td>\n", + " <td>0.811289</td>\n", + " <td>0.526316</td>\n", + " <td>0.643275</td>\n", + " <td>0.578947</td>\n", + " <td>0.503356</td>\n", + " <td>0.914634</td>\n", + " <td>0.649351</td>\n", + " <td>0.673333</td>\n", + " <td>0.880174</td>\n", + " <td>0.762984</td>\n", + " <td>0.661111</td>\n", + " <td>0.835088</td>\n", + " <td>0.737984</td>\n", + " <td>0.634112</td>\n", + " </tr>\n", + " <tr>\n", + " <td>88</td>\n", + " <td>0.004500</td>\n", + " <td>0.079288</td>\n", + " <td>0.408399</td>\n", + " <td>0.931179</td>\n", + " <td>0.567780</td>\n", + " <td>0.616688</td>\n", + " <td>0.826923</td>\n", + " <td>0.706497</td>\n", + " <td>0.161105</td>\n", + " <td>0.691275</td>\n", + " <td>0.261311</td>\n", + " <td>0.827704</td>\n", + " <td>0.795410</td>\n", + " <td>0.811236</td>\n", + " <td>0.531100</td>\n", + " <td>0.645349</td>\n", + " <td>0.582677</td>\n", + " <td>0.503356</td>\n", + " <td>0.903614</td>\n", + " <td>0.646552</td>\n", + " <td>0.673333</td>\n", + " <td>0.884026</td>\n", + " <td>0.764428</td>\n", + " <td>0.661111</td>\n", + " <td>0.839506</td>\n", + " <td>0.739705</td>\n", + " <td>0.635023</td>\n", + " </tr>\n", + " <tr>\n", + " <td>89</td>\n", + " <td>0.004500</td>\n", + " <td>0.079334</td>\n", + " <td>0.408399</td>\n", + " <td>0.930622</td>\n", + " <td>0.567676</td>\n", + " <td>0.617992</td>\n", + " <td>0.830123</td>\n", + " <td>0.708520</td>\n", + " <td>0.167883</td>\n", + " <td>0.695464</td>\n", + " <td>0.270475</td>\n", + " <td>0.830092</td>\n", + " <td>0.793025</td>\n", + " <td>0.811135</td>\n", + " <td>0.531100</td>\n", + " <td>0.637931</td>\n", + " <td>0.579634</td>\n", + " <td>0.503356</td>\n", + " <td>0.903614</td>\n", + " <td>0.646552</td>\n", + " <td>0.670000</td>\n", + " <td>0.883516</td>\n", + " <td>0.762085</td>\n", + " <td>0.661111</td>\n", + " <td>0.838028</td>\n", + " <td>0.739130</td>\n", + " <td>0.635651</td>\n", + " </tr>\n", + " <tr>\n", + " <td>90</td>\n", + " <td>0.004500</td>\n", + " <td>0.079473</td>\n", + " <td>0.407874</td>\n", + " <td>0.930539</td>\n", + " <td>0.567153</td>\n", + " <td>0.617992</td>\n", + " <td>0.830123</td>\n", + " <td>0.708520</td>\n", + " <td>0.165798</td>\n", + " <td>0.691304</td>\n", + " <td>0.267452</td>\n", + " <td>0.825998</td>\n", + " <td>0.795074</td>\n", + " <td>0.810241</td>\n", + " <td>0.531100</td>\n", + " <td>0.645349</td>\n", + " <td>0.582677</td>\n", + " <td>0.510067</td>\n", + " <td>0.904762</td>\n", + " <td>0.652361</td>\n", + " <td>0.671667</td>\n", + " <td>0.885714</td>\n", + " <td>0.763981</td>\n", + " <td>0.662500</td>\n", + " <td>0.835377</td>\n", + " <td>0.738962</td>\n", + " <td>0.636418</td>\n", + " </tr>\n", + " <tr>\n", + " <td>91</td>\n", + " <td>0.004500</td>\n", + " <td>0.079833</td>\n", + " <td>0.407874</td>\n", + " <td>0.930539</td>\n", + " <td>0.567153</td>\n", + " <td>0.617992</td>\n", + " <td>0.835979</td>\n", + " <td>0.710645</td>\n", + " <td>0.163191</td>\n", + " <td>0.694013</td>\n", + " <td>0.264247</td>\n", + " <td>0.824633</td>\n", + " <td>0.797953</td>\n", + " <td>0.811074</td>\n", + " <td>0.526316</td>\n", + " <td>0.647059</td>\n", + " <td>0.580475</td>\n", + " <td>0.510067</td>\n", + " <td>0.904762</td>\n", + " <td>0.652361</td>\n", + " <td>0.671667</td>\n", + " <td>0.883772</td>\n", + " <td>0.763258</td>\n", + " <td>0.661111</td>\n", + " <td>0.835088</td>\n", + " <td>0.737984</td>\n", + " <td>0.635899</td>\n", + " </tr>\n", + " <tr>\n", + " <td>92</td>\n", + " <td>0.004500</td>\n", + " <td>0.080144</td>\n", + " <td>0.408661</td>\n", + " <td>0.930663</td>\n", + " <td>0.567937</td>\n", + " <td>0.612777</td>\n", + " <td>0.842294</td>\n", + " <td>0.709434</td>\n", + " <td>0.160063</td>\n", + " <td>0.702517</td>\n", + " <td>0.260722</td>\n", + " <td>0.822927</td>\n", + " <td>0.797883</td>\n", + " <td>0.810212</td>\n", + " <td>0.521531</td>\n", + " <td>0.644970</td>\n", + " <td>0.576720</td>\n", + " <td>0.510067</td>\n", + " <td>0.904762</td>\n", + " <td>0.652361</td>\n", + " <td>0.671667</td>\n", + " <td>0.887665</td>\n", + " <td>0.764706</td>\n", + " <td>0.661111</td>\n", + " <td>0.838028</td>\n", + " <td>0.739130</td>\n", + " <td>0.635153</td>\n", + " </tr>\n", + " <tr>\n", + " <td>93</td>\n", + " <td>0.004200</td>\n", + " <td>0.080148</td>\n", + " <td>0.407874</td>\n", + " <td>0.929982</td>\n", + " <td>0.567050</td>\n", + " <td>0.608866</td>\n", + " <td>0.841441</td>\n", + " <td>0.706505</td>\n", + " <td>0.160584</td>\n", + " <td>0.701595</td>\n", + " <td>0.261349</td>\n", + " <td>0.824633</td>\n", + " <td>0.797164</td>\n", + " <td>0.810666</td>\n", + " <td>0.521531</td>\n", + " <td>0.644970</td>\n", + " <td>0.576720</td>\n", + " <td>0.510067</td>\n", + " <td>0.904762</td>\n", + " <td>0.652361</td>\n", + " <td>0.670000</td>\n", + " <td>0.889381</td>\n", + " <td>0.764259</td>\n", + " <td>0.659722</td>\n", + " <td>0.843694</td>\n", + " <td>0.740452</td>\n", + " <td>0.634920</td>\n", + " </tr>\n", + " <tr>\n", + " <td>94</td>\n", + " <td>0.004200</td>\n", + " <td>0.080076</td>\n", + " <td>0.407612</td>\n", + " <td>0.932173</td>\n", + " <td>0.567202</td>\n", + " <td>0.606258</td>\n", + " <td>0.839350</td>\n", + " <td>0.704012</td>\n", + " <td>0.162669</td>\n", + " <td>0.694878</td>\n", + " <td>0.263625</td>\n", + " <td>0.832139</td>\n", + " <td>0.791113</td>\n", + " <td>0.811107</td>\n", + " <td>0.521531</td>\n", + " <td>0.644970</td>\n", + " <td>0.576720</td>\n", + " <td>0.496644</td>\n", + " <td>0.913580</td>\n", + " <td>0.643478</td>\n", + " <td>0.670000</td>\n", + " <td>0.887417</td>\n", + " <td>0.763533</td>\n", + " <td>0.658333</td>\n", + " <td>0.838938</td>\n", + " <td>0.737743</td>\n", + " <td>0.633428</td>\n", + " </tr>\n", + " <tr>\n", + " <td>95</td>\n", + " <td>0.004200</td>\n", + " <td>0.080163</td>\n", + " <td>0.409186</td>\n", + " <td>0.931302</td>\n", + " <td>0.568563</td>\n", + " <td>0.603651</td>\n", + " <td>0.840290</td>\n", + " <td>0.702580</td>\n", + " <td>0.160584</td>\n", + " <td>0.689038</td>\n", + " <td>0.260465</td>\n", + " <td>0.831798</td>\n", + " <td>0.790788</td>\n", + " <td>0.810775</td>\n", + " <td>0.531100</td>\n", + " <td>0.652941</td>\n", + " <td>0.585752</td>\n", + " <td>0.483221</td>\n", + " <td>0.911392</td>\n", + " <td>0.631579</td>\n", + " <td>0.670000</td>\n", + " <td>0.885463</td>\n", + " <td>0.762808</td>\n", + " <td>0.655556</td>\n", + " <td>0.842857</td>\n", + " <td>0.737500</td>\n", + " <td>0.632503</td>\n", + " </tr>\n", + " <tr>\n", + " <td>96</td>\n", + " <td>0.004200</td>\n", + " <td>0.080179</td>\n", + " <td>0.409974</td>\n", + " <td>0.929209</td>\n", + " <td>0.568931</td>\n", + " <td>0.602347</td>\n", + " <td>0.844607</td>\n", + " <td>0.703196</td>\n", + " <td>0.160063</td>\n", + " <td>0.691441</td>\n", + " <td>0.259949</td>\n", + " <td>0.831457</td>\n", + " <td>0.793553</td>\n", + " <td>0.812063</td>\n", + " <td>0.526316</td>\n", + " <td>0.654762</td>\n", + " <td>0.583554</td>\n", + " <td>0.476510</td>\n", + " <td>0.910256</td>\n", + " <td>0.625551</td>\n", + " <td>0.670000</td>\n", + " <td>0.885463</td>\n", + " <td>0.762808</td>\n", + " <td>0.654167</td>\n", + " <td>0.842576</td>\n", + " <td>0.736513</td>\n", + " <td>0.631571</td>\n", + " </tr>\n", + " <tr>\n", + " <td>97</td>\n", + " <td>0.004200</td>\n", + " <td>0.080223</td>\n", + " <td>0.409711</td>\n", + " <td>0.929720</td>\n", + " <td>0.568774</td>\n", + " <td>0.602347</td>\n", + " <td>0.844607</td>\n", + " <td>0.703196</td>\n", + " <td>0.160584</td>\n", + " <td>0.690583</td>\n", + " <td>0.260575</td>\n", + " <td>0.831457</td>\n", + " <td>0.794588</td>\n", + " <td>0.812604</td>\n", + " <td>0.531100</td>\n", + " <td>0.656805</td>\n", + " <td>0.587302</td>\n", + " <td>0.483221</td>\n", + " <td>0.911392</td>\n", + " <td>0.631579</td>\n", + " <td>0.671667</td>\n", + " <td>0.885714</td>\n", + " <td>0.763981</td>\n", + " <td>0.655556</td>\n", + " <td>0.842857</td>\n", + " <td>0.737500</td>\n", + " <td>0.633189</td>\n", + " </tr>\n", + " <tr>\n", + " <td>98</td>\n", + " <td>0.004200</td>\n", + " <td>0.080253</td>\n", + " <td>0.409449</td>\n", + " <td>0.929678</td>\n", + " <td>0.568513</td>\n", + " <td>0.602347</td>\n", + " <td>0.843066</td>\n", + " <td>0.702662</td>\n", + " <td>0.161627</td>\n", + " <td>0.690423</td>\n", + " <td>0.261935</td>\n", + " <td>0.831457</td>\n", + " <td>0.795106</td>\n", + " <td>0.812875</td>\n", + " <td>0.535885</td>\n", + " <td>0.658824</td>\n", + " <td>0.591029</td>\n", + " <td>0.483221</td>\n", + " <td>0.911392</td>\n", + " <td>0.631579</td>\n", + " <td>0.671667</td>\n", + " <td>0.881838</td>\n", + " <td>0.762535</td>\n", + " <td>0.656944</td>\n", + " <td>0.843137</td>\n", + " <td>0.738486</td>\n", + " <td>0.633702</td>\n", + " </tr>\n", + " <tr>\n", + " <td>99</td>\n", + " <td>0.004200</td>\n", + " <td>0.080378</td>\n", + " <td>0.408661</td>\n", + " <td>0.930108</td>\n", + " <td>0.567834</td>\n", + " <td>0.602347</td>\n", + " <td>0.841530</td>\n", + " <td>0.702128</td>\n", + " <td>0.161105</td>\n", + " <td>0.689732</td>\n", + " <td>0.261200</td>\n", + " <td>0.829751</td>\n", + " <td>0.795812</td>\n", + " <td>0.812427</td>\n", + " <td>0.531100</td>\n", + " <td>0.652941</td>\n", + " <td>0.585752</td>\n", + " <td>0.483221</td>\n", + " <td>0.911392</td>\n", + " <td>0.631579</td>\n", + " <td>0.673333</td>\n", + " <td>0.882096</td>\n", + " <td>0.763705</td>\n", + " <td>0.656944</td>\n", + " <td>0.844643</td>\n", + " <td>0.739062</td>\n", + " <td>0.632961</td>\n", + " </tr>\n", + " <tr>\n", + " <td>100</td>\n", + " <td>0.004000</td>\n", + " <td>0.080378</td>\n", + " <td>0.408661</td>\n", + " <td>0.930108</td>\n", + " <td>0.567834</td>\n", + " <td>0.603651</td>\n", + " <td>0.841818</td>\n", + " <td>0.703113</td>\n", + " <td>0.161105</td>\n", + " <td>0.689732</td>\n", + " <td>0.261200</td>\n", + " <td>0.829751</td>\n", + " <td>0.796072</td>\n", + " <td>0.812563</td>\n", + " <td>0.531100</td>\n", + " <td>0.652941</td>\n", + " <td>0.585752</td>\n", + " <td>0.483221</td>\n", + " <td>0.911392</td>\n", + " <td>0.631579</td>\n", + " <td>0.673333</td>\n", + " <td>0.882096</td>\n", + " <td>0.763705</td>\n", + " <td>0.656944</td>\n", + " <td>0.844643</td>\n", + " <td>0.739062</td>\n", + " <td>0.633101</td>\n", + " </tr>\n", + " </tbody>\n", + "</table><p>" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "TrainOutput(global_step=1300, training_loss=0.03139937967061997, metrics={'train_runtime': 560.5436, 'train_samples_per_second': 36.75, 'train_steps_per_second': 2.319, 'total_flos': 2691526921113600.0, 'train_loss': 0.03139937967061997, 'epoch': 100.0})" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Initialize the callback\n", + "metrics_callback = TrainingMetricsCallback()\n", + "\n", + "def model_init():\n", + " # For reproducibility\n", + " return RobertaForSpanCategorization.from_pretrained(modelId, id2label=id2label, label2id=label2id)\n", + "\n", + "trainer = Trainer(\n", + " model_init=model_init,\n", + " args=training_args,\n", + " train_dataset=tokenized_train_ds,\n", + " eval_dataset=tokenized_val_ds,\n", + " data_collator=data_collator,\n", + " tokenizer=tokenizer,\n", + " compute_metrics=compute_metrics,\n", + " callbacks=[metrics_callback]\n", + ")\n", + "trainer.train()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "6b029310-5257-41d8-a5f7-3bbb2021ebae", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAHWCAYAAABACtmGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB53klEQVR4nO3dd3xUVfrH8e/MJDPpnTQIhCa9N6k2FBQLVlSU4qorgg3dVXQFyyprWWRVlJ+6qGsDsRdEkaKCKEiR3ksgpBBCep+5vz+SDAzpIckk8Hm/XvMic+fcO8+d3AzzzDnnOSbDMAwBAAAAACpkdncAAAAAANDYkTgBAAAAQBVInAAAAACgCiROAAAAAFAFEicAAAAAqAKJEwAAAABUgcQJAAAAAKpA4gQAAAAAVSBxAgAAAIAqkDgBaBQmTJig2NjYWu37xBNPyGQy1W1AjcyBAwdkMpn0zjvvuDuUCsXGxmrChAluee6m8Po0tNP5m4L7lL6fpaSkuDsUAKcgcQJQKZPJVK3bihUr3B0qJK1YsaLS39P8+fPdHeJp+fDDDzV79mx3h+FiwoQJMplMCggIUG5ubpnHd+/e7Xz9X3zxxRofPycnR0888QR/Y3WkNDGp6JaYmOjuEAE0Uh7uDgBA4/bee++53P/f//6nJUuWlNneqVOn03qeN998Uw6Ho1b7/uMf/9AjjzxyWs9/prn33nvVr1+/MtsHDhzohmjqzocffqgtW7bo/vvvd9neqlUr5ebmytPT0y1xeXh4KCcnR19//bVuuOEGl8c++OADeXl5KS8vr1bHzsnJ0ZNPPilJOv/886u93+n8TZ0NXn/9dfn5+ZXZHhQU1PDBAGgSSJwAVOqWW25xuf/bb79pyZIlZbafKicnRz4+PtV+ntP5wOvh4SEPD97OTjZ06FBdd9117g6jwZhMJnl5ebnt+W02mwYPHqyPPvqoTOL04YcfatSoUfr0008bJJbs7Gz5+vq6LYlsDKrz/nPdddcpLCysgSICcCZgqB6A03b++eera9euWrdunYYNGyYfHx89+uijkqQvv/xSo0aNUnR0tGw2m9q2baunn35adrvd5RinzsconbPy4osv6o033lDbtm1ls9nUr18/rV271mXf8uY4mUwmTZkyRV988YW6du0qm82mLl26aPHixWXiX7Fihfr27SsvLy+1bdtW//d//1fteVO//PKLrr/+erVs2VI2m00xMTF64IEHygzZmjBhgvz8/BQfH6/Ro0fLz89PzZo100MPPVTmtUhLS9OECRMUGBiooKAgjR8/XmlpaVXGUhNdu3bVBRdcUGa7w+FQ8+bNXZKuF198UYMGDVJoaKi8vb3Vp08fffLJJ1U+R0Wv4TvvvCOTyaQDBw44t1XnOjn//PP17bff6uDBg85hVaXXTEVznJYtW6ahQ4fK19dXQUFBuuqqq7R9+/Zy49yzZ48mTJigoKAgBQYGauLEicrJyanyPEvdfPPN+u6771x+V2vXrtXu3bt18803l7tPWlqa7r//fsXExMhms6ldu3Z67rnnnD1FBw4cULNmzSRJTz75pPO8n3jiCUknrqu9e/fqsssuk7+/v8aOHet87NQ5Tg6HQ//5z3/UrVs3eXl5qVmzZho5cqT++OMPZ5slS5ZoyJAhCgoKkp+fnzp06OD8e65MUVGRnn76aeffamxsrB599FHl5+c721x++eVq06ZNufsPHDhQffv2ddn2/vvvq0+fPvL29lZISIhuvPFGHTp0yKVNZe8/p6N02OuCBQv06KOPKjIyUr6+vrryyivLxCBJCxcudMYaFhamW265RfHx8WXa7dixQzfccIOaNWsmb29vdejQQY899liZdqXvA5Vdj7X9XQGoHb6iBVAnjh07pksvvVQ33nijbrnlFkVEREgq/pDs5+enqVOnys/PT8uWLdP06dOVkZGhF154ocrjfvjhh8rMzNRf//pXmUwmPf/887rmmmu0b9++Kr9RX7lypT777DPdfffd8vf318svv6xrr71WcXFxCg0NlSRt2LBBI0eOVFRUlJ588knZ7XY99dRTzg+rVVm4cKFycnI0adIkhYaGas2aNXrllVd0+PBhLVy40KWt3W7XiBEjNGDAAL344ov68ccf9e9//1tt27bVpEmTJEmGYeiqq67SypUrddddd6lTp076/PPPNX78+GrFUyozM7PcyeWhoaEymUwaM2aMnnjiCSUmJioyMtLlNTty5IhuvPFG57b//Oc/uvLKKzV27FgVFBRo/vz5uv766/XNN99o1KhRNYqrItW5Th577DGlp6fr8OHDeumllySp3KFWpX788UddeumlatOmjZ544gnl5ubqlVde0eDBg7V+/foyScUNN9yg1q1ba+bMmVq/fr3eeusthYeH67nnnqvWOVxzzTW666679Nlnn+m2226TVHz9duzYUb179y7TPicnR+edd57i4+P117/+VS1bttSvv/6qadOmKSEhQbNnz1azZs30+uuva9KkSbr66qt1zTXXSJK6d+/uPE5RUZFGjBihIUOG6MUXX6y0p+Uvf/mL3nnnHV166aW6/fbbVVRUpF9++UW//fab+vbtq61bt+ryyy9X9+7d9dRTT8lms2nPnj1atWpVled/++23691339V1112nBx98UL///rtmzpyp7du36/PPP5ckjRkzRuPGjdPatWtdhpIePHhQv/32m8t7wjPPPKPHH39cN9xwg26//XYdPXpUr7zyioYNG6YNGza4DKmr6P2nMqmpqWW2eXh4lBmq98wzz8hkMunhhx9WcnKyZs+ereHDh2vjxo3y9vaWVHz9Tpw4Uf369dPMmTOVlJSk//znP1q1apVLrJs2bdLQoUPl6empO++8U7Gxsdq7d6++/vprPfPMMy7PW9X1eDq/KwC1ZABADUyePNk49a3jvPPOMyQZc+fOLdM+JyenzLa//vWvho+Pj5GXl+fcNn78eKNVq1bO+/v37zckGaGhoUZqaqpz+5dffmlIMr7++mvnthkzZpSJSZJhtVqNPXv2OLf9+eefhiTjlVdecW674oorDB8fHyM+Pt65bffu3YaHh0eZY5anvPObOXOmYTKZjIMHD7qcnyTjqaeecmnbq1cvo0+fPs77X3zxhSHJeP75553bioqKjKFDhxqSjLfffrvSeJYvX25IqvCWkJBgGIZh7Ny5s8xrYRiGcffddxt+fn4u53XqORYUFBhdu3Y1LrzwQpftrVq1MsaPH++8X97vxTAM4+233zYkGfv376/wOQyj/Otk1KhRLtdJqdLr5eTXp2fPnkZ4eLhx7Ngx57Y///zTMJvNxrhx48rEedttt7kc8+qrrzZCQ0PLPNepxo8fb/j6+hqGYRjXXXedcdFFFxmGYRh2u92IjIw0nnzySWd8L7zwgnO/p59+2vD19TV27drlcrxHHnnEsFgsRlxcnGEYhnH06FFDkjFjxoxyn1uS8cgjj5T72Mmv1bJlywxJxr333lumrcPhMAzDMF566SVDknH06NEqz/tkGzduNCQZt99+u8v2hx56yJBkLFu2zDAMw0hPTzdsNpvx4IMPurR7/vnnXf5mDhw4YFgsFuOZZ55xabd582bDw8PDZXtl7z/lKf19l3fr0KGDs13p31Lz5s2NjIwM5/aPP/7YkGT85z//MQyj+O8hPDzc6Nq1q5Gbm+ts98033xiSjOnTpzu3DRs2zPD393d5bzCME6//yfFVdT3W9ncFoPYYqgegTthsNk2cOLHM9tJvZKUTvSBDhw5VTk6OduzYUeVxx4wZo+DgYOf9oUOHSpL27dtX5b7Dhw9X27Ztnfe7d++ugIAA5752u10//vijRo8erejoaGe7du3a6dJLL63y+JLr+WVnZyslJUWDBg2SYRjasGFDmfZ33XWXy/2hQ4e6nMuiRYvk4eHh7IGSJIvFonvuuada8ZSaPn26lixZUuYWEhIiSTrnnHPUs2dPLViwwLmP3W7XJ598oiuuuMLlvE7++fjx40pPT9fQoUO1fv36GsVUmdO9Tk6VkJCgjRs3asKECc5zloqvgYsvvliLFi0qs095v5tjx44pIyOj2s978803a8WKFUpMTNSyZcuUmJhY4TC9hQsXaujQoQoODlZKSorzNnz4cNntdv3888/Vft6Tr5eKfPrppzKZTJoxY0aZx0qHVJb2jHz55Zc1KixR+npOnTrVZfuDDz4oSfr2228lSQEBAbr00kv18ccfyzAMZ7sFCxbo3HPPVcuWLSVJn332mRwOh2644QaX1yYyMlLt27fX8uXLXZ6novefynz66adl/j7efvvtMu3GjRsnf39/5/3rrrtOUVFRznP+448/lJycrLvvvttlnt2oUaPUsWNH57kfPXpUP//8s2677TbneZYqb0hrVddjbX9XAGqPoXoA6kTz5s1ltVrLbN+6dav+8Y9/aNmyZWU+gKanp1d53FM/YJQmUcePH6/xvqX7l+6bnJys3NxctWvXrky78raVJy4uTtOnT9dXX31VJqZTz690TklF8UjFQ5aioqLKDEHr0KFDteIp1a1bNw0fPrzSNmPGjNGjjz6q+Ph4NW/eXCtWrFBycrLGjBnj0u6bb77RP//5T23cuNFlvkpdrp11utfJqQ4ePCip/NetU6dO+v77751FFEpVdq0FBARU63lL5xktWLBAGzduVL9+/dSuXTuX+Vyldu/erU2bNlU4LDQ5Oblaz+nh4aEWLVpU2W7v3r2Kjo52SSRPNWbMGL311lu6/fbb9cgjj+iiiy7SNddco+uuu05mc8XftR48eFBms7nM301kZKSCgoKcv4/S5/jiiy+0evVqDRo0SHv37tW6detcyszv3r1bhmGoffv25T7fqcN0K3r/qcywYcOqVRzi1BhMJpPL77Sya61jx45auXKlpBNf9nTt2rVa8VV1Pdb2dwWg9kicANSJk3sMSqWlpem8885TQECAnnrqKbVt21ZeXl5av369Hn744Wp9S2qxWMrdfvK31fWxb3XY7XZdfPHFSk1N1cMPP6yOHTvK19dX8fHxmjBhQpnzqygedxkzZoymTZumhQsX6v7779fHH3+swMBAjRw50tnml19+0ZVXXqlhw4bptddeU1RUlDw9PfX222/rww8/rPT4FSVW5RXDON3rpC7UxfVis9l0zTXX6N1339W+ffucRRzK43A4dPHFF+vvf/97uY+fc8451X7Ouvqg7O3trZ9//lnLly/Xt99+q8WLF2vBggW68MIL9cMPP1R5DVcnmb7iiivk4+Ojjz/+WIMGDdLHH38ss9ms66+/3tnG4XDIZDLpu+++K/c5T/1iobz3n6auquvxdH9XAGqOxAlAvVmxYoWOHTumzz77TMOGDXNu379/vxujOiE8PFxeXl7as2dPmcfK23aqzZs3a9euXXr33Xc1btw45/YlS5bUOqZWrVpp6dKlysrKcvlwuHPnzlofsyKtW7dW//79tWDBAk2ZMkWfffaZRo8eLZvN5mzz6aefysvLS99//73L9vKGNJ2q9BvytLQ0lwn3J/c+SDW7Tqrby9WqVStJ5b9uO3bsUFhYmEtvU126+eabNW/ePJnNZpciG6dq27atsrKyquwZrKuevbZt2+r7779Xampqpb1OZrNZF110kS666CLNmjVLzz77rB577DEtX768wlhbtWolh8Oh3bt3u6zplpSUpLS0NOfvQ5J8fX11+eWXa+HChZo1a5YWLFigoUOHugyXbdu2rQzDUOvWraudQNaX3bt3u9w3DEN79uxxFug4+Vq78MILXdru3LnT+XhpNcEtW7bUWWy1+V0BqD36cgHUm9JvPE/+xr6goECvvfaau0JyYbFYNHz4cH3xxRc6cuSIc/uePXv03XffVWt/yfX8DMPQf/7zn1rHdNlll6moqEivv/66c5vdbtcrr7xS62NWZsyYMfrtt980b948paSklBmmZ7FYZDKZXHqJDhw4oC+++KLKY5fOLzt5rk52drbefffdMs8hVe868fX1rdbQvaioKPXs2VPvvvuuS3nwLVu26IcfftBll11W5TFq64ILLtDTTz+tV1991aVi4aluuOEGrV69Wt9//32Zx9LS0lRUVCRJzip5p1uS/tprr5VhGM7FdE9W+tqXV2muZ8+ekuQyTPNUpa/nycPtJGnWrFmSVKb64pgxY3TkyBG99dZb+vPPP8tcd9dcc40sFouefPLJMj1+hmHo2LFjFcZS1/73v/8pMzPTef+TTz5RQkKCcx5k3759FR4errlz57q8Rt999522b9/uPPdmzZpp2LBhmjdvnuLi4lyeoza94LX9XQGoPXqcANSbQYMGKTg4WOPHj9e9994rk8mk9957r86GytWFJ554Qj/88IMGDx6sSZMmyW6369VXX1XXrl21cePGSvft2LGj2rZtq4ceekjx8fEKCAjQp59+Wq35VxW54oorNHjwYD3yyCM6cOCAOnfurM8++6zG83x++eUX5eXlldnevXt3l1LWN9xwgx566CE99NBDCgkJKfMt9ahRozRr1iyNHDlSN998s5KTkzVnzhy1a9dOmzZtqjSGSy65RC1bttRf/vIX/e1vf5PFYtG8efPUrFkzlw+ONblO+vTpowULFmjq1Knq16+f/Pz8dMUVV5T7/C+88IIuvfRSDRw4UH/5y1+c5cgDAwMrHUJ3usxms/7xj39U2e5vf/ubvvrqK11++eWaMGGC+vTpo+zsbG3evFmffPKJDhw4oLCwMHl7e6tz585asGCBzjnnHIWEhKhr167VnitT6oILLtCtt96ql19+Wbt379bIkSPlcDj0yy+/6IILLtCUKVP01FNP6eeff9aoUaPUqlUrJScn67XXXlOLFi00ZMiQCo/do0cPjR8/Xm+88YZz6OWaNWv07rvvavTo0WXWDCudC/bQQw/JYrHo2muvdXm8bdu2+uc//6lp06bpwIEDGj16tPz9/bV//359/vnnuvPOO/XQQw/V6PxP9cknn5Rbzv7iiy92KWceEhKiIUOGaOLEiUpKStLs2bPVrl073XHHHZKK51s999xzmjhxos477zzddNNNznLksbGxeuCBB5zHevnllzVkyBD17t1bd955p1q3bq0DBw7o22+/rfL95lS1/V0BOA0NW8QPQFNXUTnyLl26lNt+1apVxrnnnmt4e3sb0dHRxt///nfj+++/NyQZy5cvd7arqBz5yeWbS+mU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d94xtm3bZtx5551GUFCQkZiY6O7Q0EhMmjTJCAwMNFasWGEkJCQ4bzk5Oc42d911l9GyZUtj2bJlxh9//GEMHDjQGDhwoBujRmN0clU9w+C6QfnWrFljeHh4GM8884yxe/du44MPPjB8fHyM999/39nmX//6lxEUFGR8+eWXxqZNm4yrrrrKaN26tZGbm+vGyOFO48ePN5o3b2588803xv79+43PPvvMCAsLM/7+978723DdIDMz09iwYYOxYcMGQ5Ixa9YsY8OGDcbBgwcNw6jeNTJy5EijV69exu+//26sXLnSaN++vXHTTTe565TKIHGqZ6+88orRsmVLw2q1Gv379zd+++03d4eERkRSube3337b2SY3N9e4++67jeDgYMPHx8e4+uqrjYSEBPcFjUbp1MSJ6wYV+frrr42uXbsaNpvN6Nixo/HGG2+4PO5wOIzHH3/ciIiIMGw2m3HRRRcZO3fudFO0aAwyMjKM++67z2jZsqXh5eVltGnTxnjssceM/Px8ZxuuGyxfvrzczzTjx483DKN618ixY8eMm266yfDz8zMCAgKMiRMnGpmZmW44m/KZDOOkZZ8BAAAAAGUwxwkAAAAAqkDiBAAAAABVIHECAAAAgCqQOAEAAABAFUicAAAAAKAKJE4AAAAAUAUSJwAAAACoAokTAAAAAFSBxAkAgEqYTCZ98cUX7g4DAOBmJE4AgEZrwoQJMplMZW4jR450d2gAgLOMh7sDAACgMiNHjtTbb7/tss1ms7kpGgDA2YoeJwBAo2az2RQZGelyCw4OllQ8jO7111/XpZdeKm9vb7Vp00affPKJy/6bN2/WhRdeKG9vb4WGhurOO+9UVlaWS5t58+apS5custlsioqK0pQpU1weT0lJ0dVXXy0fHx+1b99eX331lfOx48ePa+zYsWrWrJm8vb3Vvn37MokeAKDpI3ECADRpjz/+uK699lr9+eefGjt2rG688UZt375dkpSdna0RI0YoODhYa9eu1cKFC/Xjjz+6JEavv/66Jk+erDvvvFObN2/WV199pXbt2rk8x5NPPqkbbrhBmzZt0mWXXaaxY8cqNTXV+fzbtm3Td999p+3bt+v1119XWFhYw70AAIAGYTIMw3B3EAAAlGfChAl6//335eXl5bL90Ucf1aOPPiqTyaS77rpLr7/+uvOxc889V71799Zrr72mN998Uw8//LAOHTokX19fSdKiRYt0xRVX6MiRI4qIiFDz5s01ceJE/fOf/yw3BpPJpH/84x96+umnJRUnY35+fvruu+80cuRIXXnllQoLC9O8efPq6VUAADQGzHECADRqF1xwgUtiJEkhISHOnwcOHOjy2MCBA7Vx40ZJ0vbt29WjRw9n0iRJgwcPlsPh0M6dO2UymXTkyBFddNFFlcbQvXt358++vr4KCAhQcnKyJGnSpEm69tprtX79el1yySUaPXq0Bg0aVKtzBQA0XiROAIBGzdfXt8zQubri7e1drXaenp4u900mkxwOhyTp0ksv1cGDB7Vo0SItWbJEF110kSZPnqwXX3yxzuMFALgPc5wAAE3ab7/9VuZ+p06dJEmdOnXSn3/+qezsbOfjq1atktlsVocOHeTv76/Y2FgtXbr0tGJo1qyZxo8fr/fff1+zZ8/WG2+8cVrHAwA0PvQ4AQAatfz8fCUmJrps8/DwcBZgWLhwofr27ashQ4bogw8+0Jo1a/Tf//5XkjR27FjNmDFD48eP1xNPPKGjR4/qnnvu0a233qqIiAhJ0hNPPKG77rpL4eHhuvTSS5WZmalVq1bpnnvuqVZ806dPV58+fdSlSxfl5+frm2++cSZuAIAzB4kTAKBRW7x4saKioly2dejQQTt27JBUXPFu/vz5uvvuuxUVFaWPPvpInTt3liT5+Pjo+++/13333ad+/frJx8dH1157rWbNmuU81vjx45WXl6eXXnpJDz30kMLCwnTddddVOz6r1app06bpwIED8vb21tChQzV//vw6OHMAQGNCVT0AQJNlMpn0+eefa/To0e4OBQBwhmOOEwAAAABUgcQJAAAAAKrAHCcAQJPFaHMAQEOhxwkAAAAAqkDiBAAAAABVIHECAAAAgCqQOAEAAABAFUicAAAAAKAKJE4AAAAAUAUSJwAAAACoAokTAAAAAFTh/wEFOvWsxxMEEgAAAABJRU5ErkJggg==", + "text/plain": [ + "<Figure size 1000x500 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot the training and evaluation metrics\n", + "df = pd.DataFrame({'step': metrics_callback.steps})\n", + "df['macro_f1'] = pd.Series(metrics_callback.macro_f1)\n", + "\n", + "plt.figure(figsize=(10, 5))\n", + "plt.plot(df['step'], df['macro_f1'], label='Macro F1')\n", + "plt.xlabel('Epochs')\n", + "plt.ylabel('Metrics')\n", + "plt.legend()\n", + "plt.title('Training and Evaluation Metrics over Epochs')\n", + "\n", + "plt.savefig('../../results/Hybrid/GPT+RB_legal_bert.png')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "89c997e6a944bc70", + "metadata": {}, + "outputs": [], + "source": [ + "trainer.model.save_pretrained(\"../../models/Fine-tuned_LegalCamemBERT-base\")" + ] + }, + { + "cell_type": "markdown", + "id": "05f2cf51-2a76-4de6-9b22-af7dda1eb805", + "metadata": {}, + "source": [ + "# Inference" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e48a67b7-814d-46d5-a079-fafc5b6adf86", + "metadata": {}, + "outputs": [], + "source": [ + "model = RobertaForSpanCategorization.from_pretrained(\"../../models/Fine-tuned_LegalCamemBERT-GPT+RB\")\n", + "tokenizer = AutoTokenizer.from_pretrained(modelId)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "4cb75af5-234f-4863-94f8-45a364e1b877", + "metadata": {}, + "outputs": [], + "source": [ + "def get_offsets_and_predicted_tags(example: str, model, tokenizer, threshold=0):\n", + " \"\"\"\n", + " Get prediction of model on example, using tokenizer\n", + " Args:\n", + " - example (str): The input text\n", + " - model: The span categorizer\n", + " - tokenizer: The tokenizer\n", + " - threshold: The threshold to decide whether the token should belong to the label. Default to 0, which corresponds to probability 0.5.\n", + " Returns:\n", + " - List of (token, tags, offset) for each token.\n", + " \"\"\"\n", + " # Tokenize the sentence to retrieve the tokens and offset mappings\n", + " raw_encoded_example = tokenizer(example, return_offsets_mapping=True)\n", + " encoded_example = tokenizer(example, return_tensors=\"pt\")\n", + " \n", + " # Call the model. The output LxK-tensor where L is the number of tokens, K is the number of classes\n", + " out = model(**encoded_example)[\"logits\"][0]\n", + " \n", + " # We assign to each token the classes whose logit is positive\n", + " predicted_tags = [[i for i, l in enumerate(logit) if l > threshold] for logit in out]\n", + " \n", + " return [{\"token\": token, \"tags\": tag, \"offset\": offset} for (token, tag, offset) \n", + " in zip(tokenizer.batch_decode(raw_encoded_example[\"input_ids\"]), \n", + " predicted_tags, \n", + " raw_encoded_example[\"offset_mapping\"])]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "314d7a28-ef8b-4367-8e6d-79a55951fcec", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "<s> - []\n", + "afin - []\n", + "de - []\n", + "vérifier - []\n", + "le - []\n", + "kilométrage - []\n", + " - []\n", + ", - []\n", + "pour - []\n", + "les - [3]\n", + "véhicules - [3]\n", + "équipés - [4]\n", + "d - [4]\n", + " - [4]\n", + "' - [4]\n", + "un - [4]\n", + "compteur - [4]\n", + "kilo - [4]\n", + "métrique - [4]\n", + " - []\n", + ", - []\n", + "les - [3]\n", + "informations - [3]\n", + "communiquées - [4]\n", + "lors - [4, 8]\n", + "du - [8]\n", + "précédent - [8]\n", + "contrôle - [8]\n", + "technique - [8]\n", + "sont - [1]\n", + "mises - [1]\n", + "à - [1]\n", + "la - [1]\n", + "disposition - [1]\n", + "des - [1]\n", + "organismes - [1, 2]\n", + "de - [1, 2]\n", + "contrôle - [1, 2]\n", + "technique - [1, 2]\n", + "dès - [4]\n", + "qu - [4]\n", + " - [4]\n", + "' - [4]\n", + "elles - [4]\n", + "sont - [4]\n", + "disponibles - [4]\n", + "par - [4]\n", + "voie - [4]\n", + "électronique - [4]\n", + " - []\n", + ". - []\n", + "</s> - []\n" + ] + } + ], + "source": [ + "example = \"afin de vérifier le kilométrage , pour les véhicules équipés d ' un compteur kilométrique , les informations communiquées lors du précédent contrôle technique sont mises à la disposition des organismes de contrôle technique dès qu ' elles sont disponibles par voie électronique .\"\n", + "for item in get_offsets_and_predicted_tags(example, model, tokenizer):\n", + " print(f\"\"\"{item[\"token\"]:15} - {item[\"tags\"]}\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "b0164373-ee70-4d63-a0c2-ac2197b37b22", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "afin de vérifier le kilométrage , pour les véhicules équipés d ' un compteur kilométrique , les informations communiquées lors du précédent contrôle technique sont mises à la disposition des organismes de contrôle technique dès qu ' elles sont disponibles par voie électronique .\n" + ] + }, + { + "data": { + "text/plain": [ + "[{'start': 39, 'end': 52, 'tag': 'artifact', 'text': 'les véhicules'},\n", + " {'start': 53,\n", + " 'end': 89,\n", + " 'tag': 'condition',\n", + " 'text': \"équipés d ' un compteur kilométrique\"},\n", + " {'start': 92, 'end': 108, 'tag': 'artifact', 'text': 'les informations'},\n", + " {'start': 109, 'end': 126, 'tag': 'condition', 'text': 'communiquées lors'},\n", + " {'start': 122,\n", + " 'end': 158,\n", + " 'tag': 'time',\n", + " 'text': 'lors du précédent contrôle technique'},\n", + " {'start': 159,\n", + " 'end': 223,\n", + " 'tag': 'action',\n", + " 'text': 'sont mises à la disposition des organismes de contrôle technique'},\n", + " {'start': 191,\n", + " 'end': 223,\n", + " 'tag': 'actor',\n", + " 'text': 'organismes de contrôle technique'},\n", + " {'start': 224,\n", + " 'end': 277,\n", + " 'tag': 'condition',\n", + " 'text': \"dès qu ' elles sont disponibles par voie électronique\"}]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_tagged_groups(example: str, model, tokenizer):\n", + " \"\"\"\n", + " Get prediction of model on example, using tokenizer\n", + " Returns:\n", + " - List of spans under offset format {\"start\": ..., \"end\": ..., \"tag\": ...}, sorted by start, end then tag.\n", + " \"\"\"\n", + " offsets_and_tags = get_offsets_and_predicted_tags(example, model, tokenizer)\n", + " predicted_offsets = {l: [] for l in tag2id}\n", + " last_token_tags = []\n", + " for item in offsets_and_tags:\n", + " (start, end), tags = item[\"offset\"], item[\"tags\"]\n", + " \n", + " for label_id in tags:\n", + " tag = id2label[label_id]\n", + " if label_id not in last_token_tags and label2id[f\"{tag}\"] not in last_token_tags:\n", + " predicted_offsets[tag].append({\"start\": start, \"end\": end})\n", + " else:\n", + " predicted_offsets[tag][-1][\"end\"] = end\n", + " \n", + " last_token_tags = tags\n", + " \n", + " flatten_predicted_offsets = [{**v, \"tag\": k, \"text\": example[v[\"start\"]:v[\"end\"]]} \n", + " for k, v_list in predicted_offsets.items() for v in v_list if v[\"end\"] - v[\"start\"] >= 3]\n", + " flatten_predicted_offsets = sorted(flatten_predicted_offsets, \n", + " key = lambda row: (row[\"start\"], row[\"end\"], row[\"tag\"]))\n", + " return flatten_predicted_offsets\n", + "\n", + "print(example)\n", + "get_tagged_groups(example, model, tokenizer)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54213be5-8221-40a2-ac60-04670d83babc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/modules/hybridation/GTP4+RB.py b/modules/hybrid/GTP4+RB.py similarity index 64% rename from modules/hybridation/GTP4+RB.py rename to modules/hybrid/GTP4+RB.py index bd65abc063116d08e17abc62bfed35fce783dbe8..4f5435f65e272fa377bdd367c619a667b8ad4cb2 100644 --- a/modules/hybridation/GTP4+RB.py +++ b/modules/hybrid/GTP4+RB.py @@ -7,6 +7,7 @@ from data.MarkersList import MarkersList from modules.neo4j.RefinedRequest import RefinedRequest import matplotlib.pyplot as plt + def save_graph(base_system_performance, improvement_degradation, categories, metrics, base_colors): n_metrics = len(metrics) n_categories = len(categories) @@ -22,8 +23,11 @@ def save_graph(base_system_performance, improvement_degradation, categories, met # Tracer les barres pour chaque métrique for i, metric in enumerate(metrics): - bars1 = ax.bar(index + i * bar_width, base_system_performance[:, i], bar_width, label=f'{metric}', alpha=0.7, color=base_colors[i]) - bars2 = ax.bar(index + i * bar_width, improvement_degradation[:, i], bar_width, bottom=base_system_performance[:, i], color=[colors[j][i] for j in range(n_categories)], alpha=0.7) + bars1 = ax.bar(index + i * bar_width, base_system_performance[:, i], bar_width, label=f'{metric}', alpha=0.7, + color=base_colors[i]) + bars2 = ax.bar(index + i * bar_width, improvement_degradation[:, i], bar_width, + bottom=base_system_performance[:, i], color=[colors[j][i] for j in range(n_categories)], + alpha=0.7) # Ajouter les valeurs sur les barres du système 1 for bar1, perf1 in zip(bars1, base_system_performance[:, i]): @@ -54,17 +58,83 @@ def save_graph(base_system_performance, improvement_degradation, categories, met ax.set_ylim(0, 1) # Enregistrer le graphique dans une image - plt.savefig(f'../../results/Hybridation/performance.png', bbox_inches='tight') + plt.savefig(f'../../results/Hybrid/performance.png', bbox_inches='tight') plt.close(fig) +def reverseStanzaParsing(text): + if "de le" in text: + text = text.replace("de le ", "du ") + if "de les" in text: + text = text.replace("de les ", "des ") + if "à le" in text: + text = text.replace("à le ", "au ") + if "à les" in text: + text = text.replace("à les ", "aux ") + return text + +def separate_intervals(data): + # Trier la liste + sorted_data = sorted(data, key=lambda x: int(x.split('.')[-1])) + + separated_intervals = [] + current_interval = [sorted_data[0]] + + for i in range(1, len(sorted_data)): + current_value = int(sorted_data[i].split('.')[-1]) + previous_value = int(current_interval[-1].split('.')[-1]) + + if current_value == previous_value + 1: + current_interval.append(sorted_data[i]) + else: + separated_intervals.append(current_interval) + current_interval = [sorted_data[i]] + + separated_intervals.append(current_interval) # Ajouter le dernier intervalle + + return separated_intervals + +def evaluation(LLM_ExtractionByConcept, LLM_RB_ExtractionByConcept, concepts, neo4j): + final_results_base = [] + final_results_refined = [] + for key, value in LLM_ExtractionByConcept.items(): + if key not in ['action', 'actor', 'artifact', 'condition', 'location', 'modality', 'reference', 'time']: + continue + else: + concepts.append(key) + + E_goldStandard = neo4j.getGoldStandard(key) + LLM_annotations = LLM_ExtractionByConcept[key] + LLM_RB_annotations = LLM_RB_ExtractionByConcept[key] + + fn1 = len(E_goldStandard - LLM_annotations) + tp1 = len(E_goldStandard & LLM_annotations) + fp1 = len(LLM_annotations - (E_goldStandard & LLM_annotations)) + result1 = recall_precision_f1_f2(fn1, tp1, fp1) + final_results_base.append([result1['recall'], result1['precision'], result1['f1']]) + + fn2 = len(E_goldStandard - LLM_RB_annotations) + tp2 = len(E_goldStandard & LLM_RB_annotations) + fp2 = len(LLM_RB_annotations - (E_goldStandard & LLM_RB_annotations)) + result2 = recall_precision_f1_f2(fn2, tp2, fp2) + final_results_refined.append([result2['recall'], result2['precision'], result2['f1']]) + + print("faux négatifs", list((E_goldStandard - LLM_RB_annotations) - (E_goldStandard - LLM_annotations))) + + final_results_base = np.array(final_results_base) + final_results_refined = np.array(final_results_refined) + delta = final_results_refined - final_results_base + + save_graph(final_results_base, delta, concepts, ['1- recall', '2- precision', '3- f1'], + ['lightgrey', 'silver', 'darkgrey']) + + def main(): neo4j = RefinedRequest() concepts = [] - final_results_base = [] - final_results_refined = [] + output = {} LLM_ExtractionByConcept = { "location": set(), @@ -106,47 +176,43 @@ def main(): with alive_bar(len(loaded)) as bar: index = 207 for sentence in loaded: + reverseSentence = reverseStanzaParsing(sentence) + output[reverseSentence] = {} for concept, annotations in loaded[sentence].items(): for annotation in annotations: original, refined = neo4j.request(index, concept, annotation) LLM_ExtractionByConcept[concept].update(original) LLM_RB_ExtractionByConcept[concept].update(refined) - index+= 1 - bar() - #========================= - # Evaluation - #========================= - for key, value in LLM_ExtractionByConcept.items(): + if len(refined) == 0: + continue - if key not in ['action', 'actor', 'artifact', 'condition', 'location', 'modality', 'reference', 'time']: - continue - else: - concepts.append(key) + if concept not in output[reverseSentence]: + output[reverseSentence][concept] = [] - E_goldStandard = neo4j.getGoldStandard(key) - LLM_annotations = LLM_ExtractionByConcept[key] - LLM_RB_annotations = LLM_RB_ExtractionByConcept[key] + for interval in separate_intervals(list(refined)): - fn1 = len(E_goldStandard - LLM_annotations) - tp1 = len(E_goldStandard & LLM_annotations) - fp1 = len(LLM_annotations - (E_goldStandard & LLM_annotations)) - result1 = recall_precision_f1_f2(fn1, tp1, fp1) - final_results_base.append([result1['recall'], result1['precision'], result1['f1']]) + span = reverseStanzaParsing(neo4j.getSpan(interval).strip()) - fn2 = len(E_goldStandard - LLM_RB_annotations) - tp2 = len(E_goldStandard & LLM_RB_annotations) - fp2 = len(LLM_RB_annotations - (E_goldStandard & LLM_RB_annotations)) - result2 = recall_precision_f1_f2(fn2, tp2, fp2) - final_results_refined.append([result2['recall'], result2['precision'], result2['f1']]) + if span in output[reverseSentence][concept]: + continue + if span == "": + print(f"=== Erreur span null ===\n ➡️{index}\n ➡️{concept}\n ➡️{annotation}\n ➡️{list(refined)}\n ➡️{reverseSentence}\n") + output[reverseSentence][concept].append(span) - print("faux négatifs", list((E_goldStandard - LLM_RB_annotations) - (E_goldStandard - LLM_annotations))) + index += 1 + bar() - final_results_base = np.array(final_results_base) - final_results_refined = np.array(final_results_refined) - delta = final_results_refined - final_results_base + #========================= + # Evaluation + #========================= + #evaluation(LLM_ExtractionByConcept, LLM_RB_ExtractionByConcept, concepts, neo4j) - save_graph(final_results_base, delta, concepts, ['1- recall', '2- precision', '3- f1'], ['lightgrey', 'silver', 'darkgrey']) + #========================= + # Exportation + #========================= + with open('../../results/Hybrid/GPT4+RB.json', 'w', encoding='utf-8') as file: + json.dump(output, file) if __name__ == '__main__': main() diff --git a/modules/neo4j/RefinedRequest.py b/modules/neo4j/RefinedRequest.py index 2cc70cb4d358710f47c9153d50de017e764ed06e..9951055f5c6f5fa1091bbb16e0cc056683e42d21 100644 --- a/modules/neo4j/RefinedRequest.py +++ b/modules/neo4j/RefinedRequest.py @@ -30,7 +30,7 @@ class RefinedRequest: elif concept == "artifact": refinedOutput = self.artifact(wordsIds) elif concept == "condition": - refinedOutput = self.condition(wordsIds) + refinedOutput = self.condition(wordsIds, sentence_id) elif concept == "location": refinedOutput = self.location(wordsIds) elif concept == "modality": @@ -50,7 +50,7 @@ class RefinedRequest: and w.id in $array with c as constituent match (constituent)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id ''', array=list(wordsIds) ) @@ -64,7 +64,7 @@ class RefinedRequest: and w.id in $array with c as constituent match (constituent)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id ''', array=list(wordsIds) ) @@ -78,13 +78,14 @@ class RefinedRequest: and w.id in $array with c as constituent match (constituent)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id ''', array=list(wordsIds) ) return set([record[0] for record in nodes.records]) - def condition(self, wordsIds): + def condition(self, wordsIds, sentence_id): + sentence_id = str(sentence_id) + "." nodes = self.driver.execute_query( ''' match (c:Constituent)-[:CONSREL*..]->(w:Word) @@ -92,7 +93,7 @@ class RefinedRequest: and c.type in ["Srel", "PP"] with c as constituent match (constituent)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id UNION @@ -101,7 +102,7 @@ class RefinedRequest: and c.type in ["Ssub"] with c as constituent match (constituent)-[:CONSREL]->(w:Word) - return w.id + return distinct w.id UNION @@ -114,9 +115,11 @@ class RefinedRequest: and c2.type in ["VPpart", "VPinf"] with c2 as constituent match (constituent)-[:CONSREL]->(w:Word) - return w.id + where w.id starts with $sentence_id + return distinct w.id ''', - array=list(wordsIds) + array=list(wordsIds), + sentence_id=sentence_id ) return set([record[0] for record in nodes.records]) @@ -128,7 +131,7 @@ class RefinedRequest: and w.id in $array with c as constituent match (constituent)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id ''', array=list(wordsIds) ) @@ -142,14 +145,14 @@ class RefinedRequest: and w.id in $array with c as constituent match (constituent)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id UNION match (c:Constituent)-[:CONSREL]->(w:Word) where c.type = "SENT" and w.id in $array - return w.id + return distinct w.id ''', array=list(wordsIds) ) @@ -163,7 +166,7 @@ class RefinedRequest: and w.id in $array with c as constituent match (constituent)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id UNION @@ -172,7 +175,7 @@ class RefinedRequest: where w.id in $array with c1 as c1 match (c1)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id ''', array=list(wordsIds) ) @@ -186,7 +189,7 @@ class RefinedRequest: and w.id in $array with c as constituent match (constituent)-[:CONSREL*..]->(w:Word) - return w.id + return distinct w.id ''', array=list(wordsIds) ) @@ -198,7 +201,7 @@ class RefinedRequest: match (c:Concept)--(w:Word) where toInteger(split(w.id, '.')[0]) > 206 and c.type = $type - return w.id + return distinct w.id ''', type=type ) @@ -241,4 +244,18 @@ class RefinedRequest: annotation=annotation, sentence_id=f"{sentence_id}." ) - return listSingleToken.records[0][0] \ No newline at end of file + return listSingleToken.records[0][0] + + def getSpan(self, wordsIds): + nodes = self.driver.execute_query( + ''' + MATCH (w:Word) + where w.id in $array + with w + ORDER BY toInteger(split(w.id, '.')[0]) ASC, toInteger(split(w.id, '.')[1]) ASC, toInteger(split(w.id, '.')[2]) ASC + MATCH (w) + RETURN REDUCE(s = '', word IN COLLECT(w) | s + ' ' + word.text) AS fullSentence + ''', + array=wordsIds + ) + return " ".join([record[0] for record in nodes.records]) \ No newline at end of file diff --git a/results/Hybrid/GPT4+RB.json b/results/Hybrid/GPT4+RB.json new file mode 100644 index 0000000000000000000000000000000000000000..2f6494dec3708aeccf05aa6c67b92bdf88025a64 --- /dev/null +++ b/results/Hybrid/GPT4+RB.json @@ -0,0 +1,2671 @@ +{ + "afin de v\u00e9rifier le kilom\u00e9trage , pour les v\u00e9hicules \u00e9quip\u00e9s d ' un compteur kilom\u00e9trique , les informations communiqu\u00e9es lors du pr\u00e9c\u00e9dent contr\u00f4le technique sont mises \u00e0 la disposition des organismes de contr\u00f4le technique d\u00e8s qu ' elles sont disponibles par voie \u00e9lectronique .": { + "action": [ + "v\u00e9rifier le kilom\u00e9trage", + "communiqu\u00e9es lors du pr\u00e9c\u00e9dent contr\u00f4le technique sont mises", + "elles sont" + ], + "actor": [ + "les organismes de contr\u00f4le technique" + ], + "artifact": [ + "les v\u00e9hicules \u00e9quip\u00e9s d ' un compteur kilom\u00e9trique" + ], + "condition": [ + "afin de v\u00e9rifier le kilom\u00e9trage , pour les v\u00e9hicules \u00e9quip\u00e9s d ' un compteur kilom\u00e9trique", + "communiqu\u00e9es", + "\u00e9quip\u00e9s", + "par voie \u00e9lectronique" + ], + "reference": [ + "contr\u00f4le technique" + ], + "time": [ + "lors du pr\u00e9c\u00e9dent contr\u00f4le technique" + ] + }, + "au cas o\u00f9 il n ' est pas en \u00e9tat de circuler dans des conditions normales de s\u00e9curit\u00e9 , ou qu ' il y a une irr\u00e9gularit\u00e9 grave du point de vue des documents de bord , le v\u00e9hicule doit \u00eatre remorqu\u00e9 ou transport\u00e9 .": { + "action": [ + "circuler dans des conditions normales de s\u00e9curit\u00e9", + "\u00eatre remorqu\u00e9 ou transport\u00e9" + ], + "actor": [ + "le v\u00e9hicule" + ], + "artifact": [ + "le v\u00e9hicule", + "documents de bord" + ], + "condition": [ + "au cas o\u00f9 il n ' est pas en \u00e9tat de circuler dans des conditions normales de s\u00e9curit\u00e9 , ou qu ' il y a une irr\u00e9gularit\u00e9 grave du point de vue des documents de bord" + ], + "modality": [ + "doit" + ] + }, + "au sens de la pr\u00e9sente loi et des r\u00e8glements pris en son ex\u00e9cution , les voies publiques comprennent la voirie de l ' etat et la voirie communale .": { + "artifact": [ + "les voies publiques", + "la voirie de l ' etat et la voirie communale", + "la voirie communale" + ], + "condition": [ + "au sens de la pr\u00e9sente loi et des r\u00e8glements pris en son ex\u00e9cution" + ], + "reference": [ + "la pr\u00e9sente loi", + "des r\u00e8glements pris en son ex\u00e9cution" + ] + }, + "avant d ' entrer en fonction , l ' inspecteur de contr\u00f4le technique pr\u00eate devant le ministre le serment suivant : je jure de remplir mes fonctions avec int\u00e9grit\u00e9 , exactitude et impartialit\u00e9 .": { + "action": [ + "entrer en fonction", + "remplir mes fonctions avec int\u00e9grit\u00e9 , exactitude et impartialit\u00e9" + ], + "actor": [ + "l ' inspecteur de contr\u00f4le technique", + "le ministre" + ], + "artifact": [ + "int\u00e9grit\u00e9 , exactitude et impartialit\u00e9" + ], + "condition": [ + "avant d ' entrer en fonction", + "de remplir mes fonctions avec int\u00e9grit\u00e9 , exactitude et impartialit\u00e9" + ] + }, + "avant de d\u00e9cerner un avertissement tax\u00e9 en relation avec une contravention donnant lieu \u00e0 une r\u00e9duction de points le membre de la police grand-ducale ou de l ' administration des douanes et accises avise le contrevenant de la r\u00e9duction de points qu ' entra\u00eene le r\u00e8glement de cet avertissement tax\u00e9 .": { + "actor": [ + "le membre de la police grand-ducale ou de l ' administration des douanes et accises", + "le contrevenant de la r\u00e9duction de points qu ' entra\u00eene le r\u00e8glement de cet avertissement tax\u00e9" + ], + "artifact": [ + "un avertissement tax\u00e9 en relation avec une contravention donnant lieu \u00e0 une r\u00e9duction de points" + ], + "condition": [ + "avant de d\u00e9cerner un avertissement tax\u00e9 en relation avec une contravention donnant lieu \u00e0 une r\u00e9duction de points" + ], + "reference": [ + "le r\u00e8glement de cet avertissement tax\u00e9" + ], + "time": [ + "avant de d\u00e9cerner un avertissement tax\u00e9 en relation avec une contravention donnant lieu \u00e0 une r\u00e9duction de points" + ] + }, + "ce contr\u00f4le donne lieu \u00e0 la d\u00e9livrance par l ' organisme qui a effectu\u00e9 le contr\u00f4le technique d ' un certificat de contr\u00f4le technique ;": { + "actor": [ + "l ' organisme qui a effectu\u00e9 le contr\u00f4le technique" + ], + "artifact": [ + "un certificat de contr\u00f4le technique" + ] + }, + "ce d\u00e9lai prend cours \u00e0 la date o\u00f9 , soit la derni\u00e8re condamnation pour l ' une desdites infractions est devenue irr\u00e9vocable , soit l ' int\u00e9ress\u00e9 s ' est acquitt\u00e9 du dernier avertissement tax\u00e9 pour l ' une de ces infractions .": { + "action": [ + "s ' est acquitt\u00e9", + "tax\u00e9 pour l ' une de ces infractions" + ], + "actor": [ + "l ' int\u00e9ress\u00e9" + ], + "artifact": [ + "la derni\u00e8re condamnation pour l ' une desdites infractions", + "le dernier avertissement tax\u00e9 pour l ' une de ces infractions" + ], + "condition": [ + "\u00e0 la date o\u00f9 , soit la derni\u00e8re condamnation pour l ' une desdites infractions est devenue irr\u00e9vocable , soit l ' int\u00e9ress\u00e9 s ' est acquitt\u00e9 du dernier avertissement tax\u00e9 pour l ' une de ces infractions" + ], + "reference": [ + "l ' une desdites infractions", + "l ' une de ces infractions" + ], + "time": [ + "la date o\u00f9 , soit la derni\u00e8re condamnation pour l ' une desdites infractions est devenue irr\u00e9vocable , soit l ' int\u00e9ress\u00e9 s ' est acquitt\u00e9 du dernier avertissement tax\u00e9 pour l ' une de ces infractions" + ] + }, + "ces directives sont reprises dans le droit national par des r\u00e8glements grand-ducaux , lesquels peuvent disposer que ces directives ne seront pas publi\u00e9es au m\u00e9morial et que leur publication au journal officiel de l ' union europ\u00e9enne en tient lieu .": { + "action": [ + "sont reprises", + "disposer que ces directives ne seront pas publi\u00e9es au m\u00e9morial et que leur publication au journal officiel de l ' union europ\u00e9enne en tient lieu", + "ne seront pas publi\u00e9es" + ], + "actor": [ + "ces directives", + "le droit national", + "des r\u00e8glements grand-ducaux , lesquels peuvent disposer que ces directives ne seront pas publi\u00e9es au m\u00e9morial et que leur publication au journal officiel de l ' union europ\u00e9enne en tient lieu", + "l ' union europ\u00e9enne" + ], + "location": [ + "le m\u00e9morial", + "l ' union europ\u00e9enne" + ], + "reference": [ + "ces directives", + "le droit national" + ] + }, + "ces documents sont remplac\u00e9s pour les v\u00e9hicules de l ' arm\u00e9e et destin\u00e9s \u00e0 son usage exclusif par une fiche caract\u00e9ristique dont un r\u00e8glement grand-ducal d\u00e9termine les inscriptions , et qui est d\u00e9livr\u00e9e par le chef de l ' etat-major .": { + "action": [ + "sont remplac\u00e9s", + "est d\u00e9livr\u00e9e" + ], + "actor": [ + "les v\u00e9hicules de l ' arm\u00e9e", + "le chef de l ' etat-major" + ], + "artifact": [ + "ces documents", + "une fiche caract\u00e9ristique dont un r\u00e8glement grand-ducal d\u00e9termine les inscriptions , et qui est d\u00e9livr\u00e9e par le chef de l ' etat-major" + ], + "condition": [ + "\u00e0 son usage exclusif" + ], + "reference": [ + "un r\u00e8glement grand-ducal" + ] + }, + "ces d\u00e9lais sont port\u00e9s \u00e0 quatre ans pour les v\u00e9hicules historiques .": { + "action": [ + "sont port\u00e9s" + ], + "actor": [ + "ces d\u00e9lais" + ], + "artifact": [ + "les v\u00e9hicules historiques" + ], + "time": [ + "quatre ans" + ] + }, + "ces frais sont fix\u00e9s par r\u00e8glement grand-ducal .": { + "action": [ + "sont fix\u00e9s" + ], + "actor": [ + "ces frais" + ], + "artifact": [ + "r\u00e8glement grand-ducal" + ], + "reference": [ + "r\u00e8glement grand-ducal" + ] + }, + "cet accord n ' est pas requis dans le cas des r\u00e8glements \u00e9dict\u00e9s par le coll\u00e8ge des bourgmestre et \u00e9chevins et dont l ' effet n ' exc\u00e8de pas soixante-douze heures .": { + "action": [ + "n ' est pas requis" + ], + "actor": [ + "le coll\u00e8ge des bourgmestre et \u00e9chevins" + ], + "artifact": [ + "les r\u00e8glements \u00e9dict\u00e9s par le coll\u00e8ge des bourgmestre et \u00e9chevins et dont l ' effet n ' exc\u00e8de pas soixante-douze heures" + ], + "condition": [ + "dans le cas des r\u00e8glements \u00e9dict\u00e9s par le coll\u00e8ge des bourgmestre et \u00e9chevins et dont l ' effet n ' exc\u00e8de pas soixante-douze heures" + ], + "time": [ + "soixante-douze heures" + ] + }, + "cette amende a le caract\u00e8re d ' une peine de police .": { + "actor": [ + "cette amende" + ] + }, + "cette restriction est lev\u00e9e d\u00e8s que le v\u00e9hicule est r\u00e9par\u00e9 ou mis en conformit\u00e9 .": { + "action": [ + "est lev\u00e9e", + "mis en conformit\u00e9" + ], + "artifact": [ + "le v\u00e9hicule" + ], + "condition": [ + "en conformit\u00e9" + ] + }, + "cette r\u00e9duction intervient de plein droit .": { + "artifact": [ + "cette r\u00e9duction" + ] + }, + "cette somme correspond au montant de l ' avertissement tax\u00e9 .": { + "artifact": [ + "cette somme", + "l ' avertissement tax\u00e9" + ], + "modality": [ + "correspond" + ] + }, + "cette suspension est constat\u00e9e par un arr\u00eat\u00e9 pris par le ministre ;": { + "action": [ + "est constat\u00e9e" + ], + "actor": [ + "le ministre" + ], + "artifact": [ + "un arr\u00eat\u00e9 pris par le ministre" + ], + "modality": [ + "est constat\u00e9e" + ] + }, + "dans ce cas , le paiement de la taxe ne pr\u00e9judicie pas au sort d ' une action en justice .": { + "artifact": [ + "la taxe" + ], + "modality": [ + "ne pr\u00e9judicie pas" + ] + }, + "dans le cas des r\u00e8glements d ' urgence \u00e9dict\u00e9s par le coll\u00e8ge des bourgmestre et \u00e9chevins , cet accord est requis avant la confirmation \u00e9ventuelle de ces r\u00e8glements par le conseil communal .": { + "action": [ + "\u00e9dict\u00e9s par le coll\u00e8ge des bourgmestre et \u00e9chevins", + "est requis" + ], + "actor": [ + "le coll\u00e8ge des bourgmestre et \u00e9chevins", + "le conseil communal" + ], + "artifact": [ + "ces r\u00e8glements" + ], + "condition": [ + "dans le cas des r\u00e8glements d ' urgence \u00e9dict\u00e9s par le coll\u00e8ge des bourgmestre et \u00e9chevins" + ], + "time": [ + "la confirmation \u00e9ventuelle de ces r\u00e8glements par le conseil communal" + ] + }, + "dans le cas o\u00f9 la personne a consomm\u00e9 des boissons alcooliques en quantit\u00e9 telle que le taux d ' alcool est de respectivement d ' au moins 0 , 25 mg ou 0 , 10 mg d ' alcool par litre d ' air expir\u00e9 sans atteindre 0 , 35 mg d ' alcool par litre d ' air expir\u00e9 , les membres de la police grand-ducale habilit\u00e9s \u00e0 cet effet par le directeur g\u00e9n\u00e9ral de la police grand-ducale peuvent d\u00e9cerner un avertissement tax\u00e9 .": { + "action": [ + "a consomm\u00e9", + "d\u00e9cerner un avertissement tax\u00e9" + ], + "actor": [ + "la personne", + "les membres de la police grand-ducale habilit\u00e9s \u00e0 cet effet par le directeur g\u00e9n\u00e9ral de la police grand-ducale", + "le directeur g\u00e9n\u00e9ral de la police grand-ducale" + ], + "artifact": [ + "des boissons alcooliques", + "un avertissement tax\u00e9" + ], + "condition": [ + "dans le cas o\u00f9 la personne a consomm\u00e9 des boissons alcooliques en quantit\u00e9 telle que le taux d ' alcool est de respectivement d ' au moins 0 , 25 mg ou 0 , 10 mg d ' alcool par litre d ' air expir\u00e9 sans atteindre 0 , 35 mg d ' alcool par litre d ' air expir\u00e9", + "habilit\u00e9s", + "par le directeur g\u00e9n\u00e9ral de la police grand-ducale" + ], + "modality": [ + "peuvent" + ] + }, + "dans les deux mois qui suivent , la personne agr\u00e9\u00e9e est tenue de se mettre en conformit\u00e9 avec les exigences de son agr\u00e9ment et d ' introduire une demande de modification de ce dernier .": { + "action": [ + "se mettre", + "introduire une demande de modification de ce dernier" + ], + "actor": [ + "la personne agr\u00e9\u00e9e" + ], + "artifact": [ + "son agr\u00e9ment" + ], + "condition": [ + "dans les deux mois qui suivent" + ], + "modality": [ + "est tenue" + ], + "time": [ + "les deux mois qui suivent" + ] + }, + "dans les m\u00eames conditions ainsi qu ' en cas de mainlev\u00e9e d ' une restriction d ' emploi ou de validit\u00e9 ou en cas de mainlev\u00e9e d ' un refus de transcription , il peut obliger l ' int\u00e9ress\u00e9 \u00e0 accomplir une p\u00e9riode probatoire qui n ' exc\u00e9dera pas douze mois ;": { + "action": [ + "obliger l ' int\u00e9ress\u00e9 \u00e0 accomplir une p\u00e9riode probatoire qui n ' exc\u00e9dera pas douze mois" + ], + "artifact": [ + "une restriction d ' emploi ou de validit\u00e9", + "un refus de transcription", + "une p\u00e9riode probatoire qui n ' exc\u00e9dera pas douze mois" + ], + "condition": [ + "dans les m\u00eames conditions ainsi qu ' en cas de mainlev\u00e9e d ' une restriction d ' emploi ou de validit\u00e9 ou en cas de mainlev\u00e9e d ' un refus de transcription" + ], + "modality": [ + "il peut" + ], + "time": [ + "douze mois" + ] + }, + "dans les m\u00eames conditions il peut aussi retirer les certificats d ' identification relatifs aux signes distinctifs particuliers et aux plaques sp\u00e9ciales sous le couvert de lesquels des v\u00e9hicules routiers sont mis en circulation sur la voie publique ainsi que les plaques rouges et les autorisations de leur utilisation .": { + "action": [ + "retirer les certificats d ' identification relatifs aux signes distinctifs particuliers et aux plaques sp\u00e9ciales sous le couvert de lesquels des v\u00e9hicules routiers sont mis en circulation sur la voie publique ainsi que les plaques rouges et les autorisations de leur utilisation", + "sont mis" + ], + "artifact": [ + "les certificats d ' identification relatifs aux signes distinctifs particuliers et aux plaques sp\u00e9ciales sous le couvert de lesquels des v\u00e9hicules routiers sont mis en circulation sur la voie publique ainsi que les plaques rouges et les autorisations de leur utilisation", + "les signes distinctifs particuliers", + "des v\u00e9hicules routiers", + "les autorisations de leur utilisation" + ], + "condition": [ + "dans les m\u00eames conditions", + "aux signes distinctifs particuliers et aux plaques sp\u00e9ciales sous le couvert de lesquels des v\u00e9hicules routiers sont mis en circulation sur la voie publique ainsi que les plaques rouges et les autorisations de leur utilisation" + ], + "location": [ + "la voie publique" + ], + "modality": [ + "il peut" + ] + }, + "dans la mesure o\u00f9 plusieurs dur\u00e9es de validit\u00e9 du certificat de contr\u00f4le technique sont susceptibles de s ' appliquer \u00e0 un v\u00e9hicule routier d\u00e9termin\u00e9 le jour de la d\u00e9livrance du certificat , l ' \u00e9ch\u00e9ance la plus rapproch\u00e9e est d ' application , exception faite des v\u00e9hicules historiques ainsi que des v\u00e9hicules routiers qui sont destin\u00e9s au service d ' incendie et \u00e0 la protection civile et qui sont immatricul\u00e9s comme tels en raison de leur conception et de leur \u00e9quipement ainsi que de leur affectation aux services d ' intervention en question .": { + "action": [ + "s ' appliquer", + "sont immatricul\u00e9s" + ], + "actor": [ + "v\u00e9hicules historiques", + "v\u00e9hicules routiers qui sont destin\u00e9s au service d ' incendie et \u00e0 la protection civile et qui sont immatricul\u00e9s comme tels en raison de leur conception et de leur \u00e9quipement ainsi que de leur affectation aux services d ' intervention en question", + "le service d ' incendie", + "les services d ' intervention en question" + ], + "artifact": [ + "le certificat de contr\u00f4le technique", + "un v\u00e9hicule routier d\u00e9termin\u00e9" + ], + "condition": [ + "dans la mesure o\u00f9 plusieurs dur\u00e9es de validit\u00e9 du certificat de contr\u00f4le technique sont susceptibles de s ' appliquer \u00e0 un v\u00e9hicule routier d\u00e9termin\u00e9 le jour de la d\u00e9livrance du certificat", + "des v\u00e9hicules historiques ainsi que des v\u00e9hicules routiers qui sont destin\u00e9s au service d ' incendie et \u00e0 la protection civile et qui sont immatricul\u00e9s comme tels en raison de leur conception et de leur \u00e9quipement ainsi que de leur affectation aux services d ' intervention en question" + ], + "modality": [ + "est" + ], + "time": [ + "le jour de la d\u00e9livrance du certificat", + "l ' \u00e9ch\u00e9ance la plus rapproch\u00e9e" + ] + }, + "des num\u00e9ros d ' immatriculation personnalis\u00e9s peuvent \u00eatre accord\u00e9s sur demande \u00e9crite , moyennant paiement d ' une taxe ;": { + "action": [ + "\u00eatre accord\u00e9s" + ], + "artifact": [ + "des num\u00e9ros d ' immatriculation personnalis\u00e9s" + ], + "condition": [ + "sur demande \u00e9crite" + ], + "modality": [ + "peuvent" + ] + }, + "elle n ' est pas non plus donn\u00e9e dans un d\u00e9lai de 24 mois qui suit le terme d ' une suspension du droit de conduire .": { + "action": [ + "elle n ' est pas non plus donn\u00e9e" + ], + "time": [ + "un d\u00e9lai de 24 mois qui suit le terme d ' une suspension du droit de conduire", + "le terme d ' une suspension du droit de conduire" + ] + }, + "elle reste applicable pour l ' appr\u00e9ciation des infractions commises avant l ' entr\u00e9e en vigueur de la pr\u00e9sente loi .": { + "action": [ + "commises avant l ' entr\u00e9e en vigueur de la pr\u00e9sente loi" + ], + "artifact": [ + "les infractions commises avant l ' entr\u00e9e en vigueur de la pr\u00e9sente loi" + ], + "condition": [ + "pour l ' appr\u00e9ciation des infractions commises avant l ' entr\u00e9e en vigueur de la pr\u00e9sente loi" + ], + "modality": [ + "elle reste applicable" + ], + "reference": [ + "la pr\u00e9sente loi" + ], + "time": [ + "l ' entr\u00e9e en vigueur de la pr\u00e9sente loi" + ] + }, + "elles peuvent , notamment sur les voies publiques des quartiers r\u00e9sidentiels , pr\u00e9voir des modalit\u00e9s particuli\u00e8res d ' utilisation des emplacements de stationnement et de parcage en faveur des v\u00e9hicules des r\u00e9sidents .": { + "action": [ + "pr\u00e9voir des modalit\u00e9s particuli\u00e8res d ' utilisation des emplacements de stationnement et de parcage en faveur des v\u00e9hicules des r\u00e9sidents" + ], + "artifact": [ + "les emplacements de stationnement et de parcage", + "v\u00e9hicules des r\u00e9sidents" + ], + "condition": [ + "notamment sur les voies publiques des quartiers r\u00e9sidentiels" + ], + "location": [ + "les quartiers r\u00e9sidentiels" + ], + "modality": [ + "elles peuvent" + ] + }, + "elles peuvent aussi r\u00e9server le stationnement et le parcage de certains emplacements signal\u00e9s comme tels aux v\u00e9hicules utilis\u00e9s par des personnes dont la mission ou la condition physique justifie pareille d\u00e9rogation ;": { + "action": [ + "r\u00e9server le stationnement et le parcage de certains emplacements signal\u00e9s comme tels aux v\u00e9hicules utilis\u00e9s par des personnes dont la mission ou la condition physique justifie pareille d\u00e9rogation" + ], + "artifact": [ + "certains emplacements signal\u00e9s comme tels", + "les v\u00e9hicules utilis\u00e9s par des personnes dont la mission ou la condition physique justifie pareille d\u00e9rogation" + ], + "condition": [ + "signal\u00e9s", + "aux v\u00e9hicules utilis\u00e9s par des personnes dont la mission ou la condition physique justifie pareille d\u00e9rogation" + ], + "location": [ + "certains emplacements signal\u00e9s comme tels" + ], + "modality": [ + "elles peuvent" + ] + }, + "elles sont d\u00e9dommag\u00e9es sur base forfaitaire pour le d\u00e9chet de recettes r\u00e9sultant du non- paiement des taxes de stationnement et de parcage sur leur territoire respectif .": { + "action": [ + "elles sont d\u00e9dommag\u00e9es" + ], + "artifact": [ + "le d\u00e9chet de recettes r\u00e9sultant du non- paiement des taxes de stationnement et de parcage sur leur territoire respectif", + "taxes de stationnement et de parcage" + ], + "condition": [ + "pour le d\u00e9chet de recettes r\u00e9sultant du non- paiement des taxes de stationnement et de parcage sur leur territoire respectif" + ], + "location": [ + "leur territoire respectif" + ] + }, + "en l ' absence d ' un examen sommaire de l ' haleine , d ' un examen de l ' air expir\u00e9 , d ' une prise de sang ou d ' un examen m\u00e9dical , l ' ivresse ou l ' influence de l ' alcool peut \u00eatre \u00e9tablie par tous les autres moyens de preuve pr\u00e9vus en mati\u00e8re p\u00e9nale .": { + "action": [ + "\u00eatre \u00e9tablie" + ], + "artifact": [ + "un examen sommaire de l ' haleine", + "un examen de l ' air expir\u00e9", + "une prise de sang", + "un examen m\u00e9dical" + ], + "condition": [ + "en l ' absence d ' un examen sommaire de l ' haleine , d ' un examen de l ' air expir\u00e9 , d ' une prise de sang ou d ' un examen m\u00e9dical", + "pr\u00e9vus" + ], + "modality": [ + "peut" + ], + "reference": [ + "en mati\u00e8re p\u00e9nale" + ] + }, + "en cas d ' acquittement du pr\u00e9venu , toute somme dont il s ' est \u00e9ventuellement acquitt\u00e9 lui est restitu\u00e9e .": { + "action": [ + "lui est restitu\u00e9e" + ], + "artifact": [ + "toute somme dont il s ' est \u00e9ventuellement acquitt\u00e9" + ], + "condition": [ + "en cas d ' acquittement du pr\u00e9venu" + ], + "modality": [ + "il s ' est \u00e9ventuellement acquitt\u00e9" + ] + }, + "en cas d ' impossibilit\u00e9 constat\u00e9e par un m\u00e9decin de proc\u00e9der \u00e0 une prise de sang , la personne concern\u00e9e doit se soumettre \u00e0 un examen m\u00e9dical \u00e0 l ' effet de constater si elle se trouve sous l ' emprise d ' une des substances pr\u00e9vues au point 1 .": { + "action": [ + "proc\u00e9der \u00e0 une prise de sang", + "se soumettre", + "constater si elle se trouve sous l ' emprise d ' une des substances pr\u00e9vues au point 1" + ], + "actor": [ + "un m\u00e9decin", + "la personne concern\u00e9e" + ], + "artifact": [ + "un examen m\u00e9dical", + "les substances pr\u00e9vues au point 1" + ], + "condition": [ + "en cas d ' impossibilit\u00e9 constat\u00e9e par un m\u00e9decin de proc\u00e9der \u00e0 une prise de sang", + "pr\u00e9vues" + ], + "modality": [ + "doit" + ], + "reference": [ + "au point 1" + ] + }, + "en cas d ' impossibilit\u00e9 de contacter le propri\u00e9taire ou le d\u00e9tenteur d ' un v\u00e9hicule , ce v\u00e9hicule peut de l ' accord du procureur d ' etat \u00eatre consid\u00e9r\u00e9 comme d\u00e9laiss\u00e9 .": { + "action": [ + "contacter le propri\u00e9taire ou le d\u00e9tenteur d ' un v\u00e9hicule", + "\u00eatre consid\u00e9r\u00e9" + ], + "actor": [ + "le propri\u00e9taire ou le d\u00e9tenteur d ' un v\u00e9hicule" + ], + "artifact": [ + "le propri\u00e9taire ou le d\u00e9tenteur d ' un v\u00e9hicule" + ], + "condition": [ + "en cas d ' impossibilit\u00e9 de contacter le propri\u00e9taire ou le d\u00e9tenteur d ' un v\u00e9hicule" + ], + "modality": [ + "peut" + ] + }, + "en cas d ' impossibilit\u00e9 de proc\u00e9der \u00e0 une prise d ' urine , la quantit\u00e9 de sang est augment\u00e9e du double .": { + "action": [ + "proc\u00e9der \u00e0 une prise d ' urine", + "est augment\u00e9e" + ], + "artifact": [ + "une prise d ' urine", + "la quantit\u00e9 de sang" + ], + "condition": [ + "en cas d ' impossibilit\u00e9 de proc\u00e9der \u00e0 une prise d ' urine" + ] + }, + "en cas de concours id\u00e9al d ' infractions , seule la r\u00e9duction de points la plus \u00e9lev\u00e9e est appliqu\u00e9e .": { + "condition": [ + "en cas de concours id\u00e9al d ' infractions" + ], + "modality": [ + "est appliqu\u00e9e" + ] + }, + "en cas de concours r\u00e9el , la r\u00e9duction de points se cumule dans la limite de 6 points , lorsqu ' il s ' agit exclusivement de contraventions , et dans la limite de 8 points , lorsqu ' il y a au moins un d\u00e9lit parmi les infractions retenues .": { + "action": [ + "se cumule", + "il y a" + ], + "artifact": [ + "6 points", + "8 points", + "un d\u00e9lit", + "les infractions retenues" + ], + "condition": [ + "en cas de concours r\u00e9el", + "lorsqu '", + "de contraventions", + "parmi les infractions retenues" + ] + }, + "en cas de doute , la validit\u00e9 du certificat de contr\u00f4le technique peut \u00eatre v\u00e9rifi\u00e9e avant du reconna\u00eetre .": { + "action": [ + "\u00eatre v\u00e9rifi\u00e9e", + "le reconna\u00eetre" + ], + "artifact": [ + "le certificat de contr\u00f4le technique" + ], + "condition": [ + "en cas de doute" + ], + "modality": [ + "peut" + ] + }, + "en cas de non- respect par l ' atelier des conditions de son agr\u00e9ment , le ministre peut proc\u00e9der au retrait temporaire ou d\u00e9finitif de l ' agr\u00e9ment .": { + "action": [ + "proc\u00e9der au retrait temporaire ou d\u00e9finitif de l ' agr\u00e9ment" + ], + "actor": [ + "l ' atelier", + "le ministre" + ], + "artifact": [ + "l ' agr\u00e9ment" + ], + "condition": [ + "en cas de non- respect par l ' atelier des conditions de son agr\u00e9ment" + ], + "modality": [ + "peut" + ] + }, + "en cas de non- respect par l ' int\u00e9ress\u00e9 des conditions de son agr\u00e9ment , le ministre peut proc\u00e9der au retrait temporaire ou d\u00e9finitif de celui-ci .": { + "action": [ + "proc\u00e9der au retrait temporaire ou d\u00e9finitif de celui-ci" + ], + "actor": [ + "l ' int\u00e9ress\u00e9", + "le ministre" + ], + "artifact": [ + "son agr\u00e9ment" + ], + "condition": [ + "en cas de non- respect par l ' int\u00e9ress\u00e9 des conditions de son agr\u00e9ment" + ], + "modality": [ + "peut" + ] + }, + "en cas de remise en circulation au luxembourg d ' un v\u00e9hicule qui y a \u00e9t\u00e9 immatricul\u00e9 et qui a chang\u00e9 de propri\u00e9taire , ce v\u00e9hicule doit faire l ' objet d ' une transcription .": { + "artifact": [ + "un v\u00e9hicule qui y a \u00e9t\u00e9 immatricul\u00e9 et qui a chang\u00e9 de propri\u00e9taire", + "ce v\u00e9hicule" + ], + "condition": [ + "en cas de remise en circulation au luxembourg d ' un v\u00e9hicule qui y a \u00e9t\u00e9 immatricul\u00e9 et qui a chang\u00e9 de propri\u00e9taire" + ], + "location": [ + "le luxembourg" + ], + "modality": [ + "doit" + ] + }, + "en cas de r\u00e9cidive le maximum de l ' amende est prononc\u00e9 .": { + "action": [ + "est prononc\u00e9" + ], + "artifact": [ + "l ' amende" + ], + "condition": [ + "en cas de r\u00e9cidive" + ] + }, + "en cas de surcharge constat\u00e9e , les frais occasionn\u00e9s par le pesage sont \u00e0 charge du propri\u00e9taire ou du d\u00e9tenteur du v\u00e9hicule .": { + "actor": [ + "le propri\u00e9taire", + "le d\u00e9tenteur du v\u00e9hicule" + ], + "artifact": [ + "le v\u00e9hicule" + ], + "condition": [ + "en cas de surcharge constat\u00e9e", + "occasionn\u00e9s" + ] + }, + "en vue de l ' instruction des dossiers , elle peut s ' entourer de toutes les informations requises et s ' adjoindre d ' experts .": { + "action": [ + "s ' entourer", + "s ' adjoindre" + ], + "artifact": [ + "les dossiers", + "toutes les informations requises" + ], + "modality": [ + "elle peut" + ] + }, + "en vue de sa mise en fourri\u00e8re , les membres de la police grand-ducale pourront , en cas de besoin , ouvrir ou faire ouvrir les porti\u00e8res du v\u00e9hicule aux frais et risques du contrevenant .": { + "action": [ + "ouvrir ou faire ouvrir les porti\u00e8res du v\u00e9hicule aux frais et risques du contrevenant" + ], + "actor": [ + "les membres de la police grand-ducale", + "le contrevenant" + ], + "artifact": [ + "les porti\u00e8res du v\u00e9hicule" + ], + "condition": [ + "en cas de besoin" + ], + "modality": [ + "pourront" + ] + }, + "en vue de son agr\u00e9ment , l ' atelier int\u00e9ress\u00e9 doit pr\u00e9senter les garanties n\u00e9cessaires d ' honorabilit\u00e9 et de qualification professionnelle .": { + "action": [ + "pr\u00e9senter les garanties n\u00e9cessaires d ' honorabilit\u00e9 et de qualification professionnelle" + ], + "actor": [ + "l ' atelier int\u00e9ress\u00e9" + ], + "artifact": [ + "son agr\u00e9ment", + "les garanties n\u00e9cessaires d ' honorabilit\u00e9 et de qualification professionnelle" + ], + "condition": [ + "en vue de son agr\u00e9ment" + ], + "modality": [ + "doit" + ] + }, + "en vue de son agr\u00e9ment , l ' int\u00e9ress\u00e9 doit en outre fournir la preuve de sa qualification professionnelle qui s ' appr\u00e9cie sur base de la disponibilit\u00e9 des ressources humaines et des infrastructures et \u00e9quipements requis en vue de l ' ex\u00e9cution de la mission ainsi que sur base de la formation et de l ' exp\u00e9rience professionnelles du personnel effectivement affect\u00e9 \u00e0 dispenser la formation aff\u00e9rente .": { + "action": [ + "fournir la preuve de sa qualification professionnelle qui s ' appr\u00e9cie sur base de la disponibilit\u00e9 des ressources humaines et des infrastructures et \u00e9quipements requis en vue de l ' ex\u00e9cution de la mission ainsi que sur base de la formation et de l ' exp\u00e9rience professionnelles du personnel effectivement affect\u00e9 \u00e0 dispenser la formation aff\u00e9rente", + "dispenser la formation aff\u00e9rente" + ], + "actor": [ + "l ' int\u00e9ress\u00e9", + "le personnel effectivement affect\u00e9 \u00e0 dispenser la formation aff\u00e9rente" + ], + "artifact": [ + "la preuve de sa qualification professionnelle qui s ' appr\u00e9cie sur base de la disponibilit\u00e9 des ressources humaines et des infrastructures et \u00e9quipements requis en vue de l ' ex\u00e9cution de la mission ainsi que sur base de la formation et de l ' exp\u00e9rience professionnelles du personnel effectivement affect\u00e9 \u00e0 dispenser la formation aff\u00e9rente", + "la disponibilit\u00e9 des ressources humaines et des infrastructures et \u00e9quipements requis en vue de l ' ex\u00e9cution de la mission", + "la formation et de l ' exp\u00e9rience professionnelles du personnel effectivement affect\u00e9 \u00e0 dispenser la formation aff\u00e9rente" + ], + "condition": [ + "en vue de son agr\u00e9ment", + "effectivement affect\u00e9", + "qui s ' appr\u00e9cie sur base de la disponibilit\u00e9 des ressources humaines et des infrastructures et \u00e9quipements requis en vue de l ' ex\u00e9cution de la mission ainsi que sur base de la formation et de l ' exp\u00e9rience professionnelles du personnel effectivement affect\u00e9 \u00e0 dispenser la formation aff\u00e9rente" + ], + "modality": [ + "doit" + ] + }, + "est consid\u00e9r\u00e9 comme num\u00e9ro d ' immatriculation personnalis\u00e9 tout num\u00e9ro attribu\u00e9 en dehors de l ' ordre alphanum\u00e9rique de la s\u00e9rie courante et des s\u00e9ries sp\u00e9ciales .": { + "action": [ + "est consid\u00e9r\u00e9" + ], + "artifact": [ + "num\u00e9ro d ' immatriculation personnalis\u00e9", + "num\u00e9ro d ' immatriculation personnalis\u00e9 tout num\u00e9ro attribu\u00e9 en dehors de l ' ordre alphanum\u00e9rique de la s\u00e9rie courante et des s\u00e9ries sp\u00e9ciales" + ], + "condition": [ + "en dehors de l ' ordre alphanum\u00e9rique de la s\u00e9rie courante et des s\u00e9ries sp\u00e9ciales" + ] + }, + "est passible d ' un emprisonnement de huit jours \u00e0 un an et d ' une amende de 251 \u00e0 5 .000 euros , ou d ' une de ces peines seulement , toute personne qui aura import\u00e9 ou mis en vente des v\u00e9hicules routiers ou des \u00e9l\u00e9ments et composants de v\u00e9hicules routiers qui ne satisfont pas aux exigences du pr\u00e9sent article .": { + "actor": [ + "toute personne qui aura import\u00e9 ou mis en vente des v\u00e9hicules routiers ou des \u00e9l\u00e9ments et composants de v\u00e9hicules routiers qui ne satisfont pas aux exigences du pr\u00e9sent article" + ], + "condition": [ + "d ' un emprisonnement de huit jours \u00e0 un an et d ' une amende de 251 \u00e0 5 .000 euros , ou d ' une de ces peines seulement , toute personne qui aura import\u00e9 ou mis en vente des v\u00e9hicules routiers ou des \u00e9l\u00e9ments et composants de v\u00e9hicules routiers qui ne satisfont pas aux exigences du pr\u00e9sent article" + ], + "reference": [ + "du pr\u00e9sent article" + ] + }, + "est puni des peines pr\u00e9vues au paragraphe 1er , m\u00eame en l ' absence de signes manifestes d ' ivresse , tout conducteur d ' un v\u00e9hicule ou d ' un animal , ainsi que tout pi\u00e9ton impliqu\u00e9 dans un accident , s ' il a consomm\u00e9 des boissons alcooliques en quantit\u00e9 telle que le taux d ' alcool est d ' au moins 1 , 2 g d ' alcool par litre de sang ou d ' au moins 0 , 55 mg d ' alcool par litre d ' air expir\u00e9 .": { + "action": [ + "est puni", + "il a consomm\u00e9" + ], + "actor": [ + "tout conducteur d ' un v\u00e9hicule ou d ' un animal , ainsi que tout pi\u00e9ton impliqu\u00e9 dans un accident", + "tout pi\u00e9ton impliqu\u00e9 dans un accident" + ], + "artifact": [ + "un v\u00e9hicule", + "un animal", + "des boissons alcooliques" + ], + "condition": [ + "pr\u00e9vues", + "m\u00eame en l ' absence de signes manifestes d ' ivresse", + "impliqu\u00e9", + "s '", + "en quantit\u00e9 telle que le taux d ' alcool est d ' au moins 1 , 2 g d ' alcool par litre de sang ou d ' au moins 0 , 55 mg d ' alcool par litre d ' air expir\u00e9" + ], + "reference": [ + "au paragraphe 1er" + ] + }, + "est \u00e9galement consid\u00e9r\u00e9 comme abandonn\u00e9 le v\u00e9hicule qui a \u00e9t\u00e9 immobilis\u00e9 dans les conditions des hypoth\u00e8ses sous 2 et 4 du paragraphe 1er de l ' article 17 , et qui n ' a pas \u00e9t\u00e9 d\u00e9plac\u00e9 dans les 8 jours apr\u00e8s l ' \u00e9ch\u00e9ance du d\u00e9lai que les membres de la police grand-ducale ont imparti pour ce faire \u00e0 son conducteur ou \u00e0 son propri\u00e9taire ou \u00e0 son d\u00e9tenteur .": { + "action": [ + "a \u00e9t\u00e9 immobilis\u00e9", + "n ' a pas \u00e9t\u00e9 d\u00e9plac\u00e9" + ], + "actor": [ + "le v\u00e9hicule qui a \u00e9t\u00e9 immobilis\u00e9 dans les conditions des hypoth\u00e8ses sous 2 et 4 du paragraphe 1er de l ' article 17 , et qui n ' a pas \u00e9t\u00e9 d\u00e9plac\u00e9 dans les 8 jours apr\u00e8s l ' \u00e9ch\u00e9ance du d\u00e9lai que les membres de la police grand-ducale ont imparti pour ce faire \u00e0 son conducteur ou \u00e0 son propri\u00e9taire ou \u00e0 son d\u00e9tenteur", + "les membres de la police grand-ducale", + "son conducteur", + "son propri\u00e9taire", + "son d\u00e9tenteur" + ], + "artifact": [ + "le v\u00e9hicule qui a \u00e9t\u00e9 immobilis\u00e9 dans les conditions des hypoth\u00e8ses sous 2 et 4 du paragraphe 1er de l ' article 17 , et qui n ' a pas \u00e9t\u00e9 d\u00e9plac\u00e9 dans les 8 jours apr\u00e8s l ' \u00e9ch\u00e9ance du d\u00e9lai que les membres de la police grand-ducale ont imparti pour ce faire \u00e0 son conducteur ou \u00e0 son propri\u00e9taire ou \u00e0 son d\u00e9tenteur" + ], + "condition": [ + "qui a \u00e9t\u00e9 immobilis\u00e9 dans les conditions des hypoth\u00e8ses sous 2 et 4 du paragraphe 1er de l ' article 17 , et qui n ' a pas \u00e9t\u00e9 d\u00e9plac\u00e9 dans les 8 jours apr\u00e8s l ' \u00e9ch\u00e9ance du d\u00e9lai que les membres de la police grand-ducale ont imparti pour ce faire \u00e0 son conducteur ou \u00e0 son propri\u00e9taire ou \u00e0 son d\u00e9tenteur" + ], + "modality": [ + "a \u00e9t\u00e9 immobilis\u00e9", + "n ' a pas \u00e9t\u00e9 d\u00e9plac\u00e9", + "est \u00e9galement consid\u00e9r\u00e9" + ], + "reference": [ + "les hypoth\u00e8ses sous 2 et 4 du paragraphe 1er de l ' article 17" + ], + "time": [ + "les 8 jours", + "l ' \u00e9ch\u00e9ance du d\u00e9lai que les membres de la police grand-ducale ont imparti pour ce faire \u00e0 son conducteur ou \u00e0 son propri\u00e9taire ou \u00e0 son d\u00e9tenteur" + ] + }, + "il avise la personne qu ' elle peut demander \u00e0 titre de preuve contraire \u00e0 \u00eatre soumise \u00e0 une prise de sang .": { + "action": [ + "il avise", + "demander \u00e0 titre de preuve contraire \u00e0 \u00eatre soumise \u00e0 une prise de sang", + "\u00eatre soumise" + ], + "actor": [ + "la personne" + ], + "artifact": [ + "preuve contraire" + ], + "condition": [ + "\u00e0 titre de preuve contraire" + ], + "modality": [ + "elle peut" + ] + }, + "il doit disposer d ' un syst\u00e8me d ' assurance-qualit\u00e9 qui est accr\u00e9dit\u00e9 selon les normes techniques \u00e0 d\u00e9terminer par r\u00e8glement grand-ducal .": { + "action": [ + "disposer d ' un syst\u00e8me d ' assurance-qualit\u00e9 qui est accr\u00e9dit\u00e9 selon les normes techniques \u00e0 d\u00e9terminer par r\u00e8glement grand-ducal" + ], + "artifact": [ + "un syst\u00e8me d ' assurance-qualit\u00e9 qui est accr\u00e9dit\u00e9 selon les normes techniques \u00e0 d\u00e9terminer par r\u00e8glement grand-ducal" + ], + "condition": [ + "d ' un syst\u00e8me d ' assurance-qualit\u00e9 qui est accr\u00e9dit\u00e9 selon les normes techniques \u00e0 d\u00e9terminer par r\u00e8glement grand-ducal" + ], + "modality": [ + "il doit" + ], + "reference": [ + "r\u00e8glement grand-ducal" + ] + }, + "il doit \u00e9tablir que son personnel , responsable d ' effectuer les op\u00e9rations de contr\u00f4le technique , est titulaire d ' un agr\u00e9ment en tant qu ' inspecteur de contr\u00f4le technique valable , d\u00e9livr\u00e9 par le ministre conform\u00e9ment \u00e0 l ' article 4quater .": { + "action": [ + "\u00e9tablir que son personnel , responsable d ' effectuer les op\u00e9rations de contr\u00f4le technique , est titulaire d ' un agr\u00e9ment en tant qu ' inspecteur de contr\u00f4le technique valable , d\u00e9livr\u00e9 par le ministre conform\u00e9ment \u00e0 l ' article 4quater", + "effectuer les op\u00e9rations de contr\u00f4le technique", + "d\u00e9livr\u00e9 par le ministre conform\u00e9ment \u00e0 l ' article 4quater" + ], + "actor": [ + "son personnel , responsable d ' effectuer les op\u00e9rations de contr\u00f4le technique", + "le ministre" + ], + "artifact": [ + "un agr\u00e9ment en tant qu ' inspecteur de contr\u00f4le technique valable , d\u00e9livr\u00e9 par le ministre conform\u00e9ment \u00e0 l ' article 4quater" + ], + "condition": [ + "d ' un agr\u00e9ment en tant qu ' inspecteur de contr\u00f4le technique valable , d\u00e9livr\u00e9 par le ministre conform\u00e9ment \u00e0 l ' article 4quater" + ], + "modality": [ + "il doit" + ], + "reference": [ + "l ' article 4quater" + ] + }, + "il doit \u00eatre restitu\u00e9 sans d\u00e9lai au ministre .": { + "action": [ + "\u00eatre restitu\u00e9" + ], + "actor": [ + "le ministre" + ], + "condition": [ + "sans d\u00e9lai" + ], + "modality": [ + "il doit" + ] + }, + "il en est exceptionnellement de m\u00eame pour suppl\u00e9er \u00e0 la carence des communes de r\u00e9glementer la circulation sur la voirie de l ' etat \u00e0 l ' int\u00e9rieur des agglom\u00e9rations , lorsque l ' int\u00e9r\u00eat de la s\u00e9curit\u00e9 et de la commodit\u00e9 des usagers de la route et des riverains l ' exige .": { + "action": [ + "suppl\u00e9er \u00e0 la carence des communes de r\u00e9glementer la circulation sur la voirie de l ' etat \u00e0 l ' int\u00e9rieur des agglom\u00e9rations", + "r\u00e9glementer la circulation sur la voirie de l ' etat \u00e0 l ' int\u00e9rieur des agglom\u00e9rations" + ], + "actor": [ + "les communes" + ], + "artifact": [ + "la voirie de l ' etat" + ], + "condition": [ + "de la s\u00e9curit\u00e9 et de la commodit\u00e9 des usagers de la route et des riverains" + ] + }, + "il est interdit de conduire un v\u00e9hicule ou un animal \u00e0 une vitesse dangereuse selon les circonstances ou de d\u00e9passer les limitations de vitesse prescrites par les dispositions r\u00e9glementaires prises en ex\u00e9cution des articles 1er , 3 et 5 de la pr\u00e9sente loi .": { + "action": [ + "conduire un v\u00e9hicule ou un animal \u00e0 une vitesse dangereuse selon les circonstances", + "d\u00e9passer les limitations de vitesse prescrites par les dispositions r\u00e9glementaires prises en ex\u00e9cution des articles 1er , 3 et 5 de la pr\u00e9sente loi" + ], + "artifact": [ + "un v\u00e9hicule ou un animal", + "un animal" + ], + "condition": [ + "de conduire un v\u00e9hicule ou un animal \u00e0 une vitesse dangereuse selon les circonstances ou de d\u00e9passer les limitations de vitesse prescrites par les dispositions r\u00e9glementaires prises en ex\u00e9cution des articles 1er , 3 et 5 de la pr\u00e9sente loi" + ], + "modality": [ + "il est interdit" + ], + "reference": [ + "les dispositions r\u00e9glementaires prises en ex\u00e9cution des articles 1er , 3 et 5 de la pr\u00e9sente loi" + ] + }, + "il est tenu compte d ' une \u00e9limination ad\u00e9quate d ' alcool par l ' organisme entre le moment de l ' examen de l ' air expir\u00e9 et celui de la prise de sang .": { + "actor": [ + "l ' organisme" + ], + "artifact": [ + "l ' air expir\u00e9" + ], + "condition": [ + "entre le moment de l ' examen de l ' air expir\u00e9 et celui de la prise de sang" + ], + "time": [ + "le moment de l ' examen de l ' air expir\u00e9 et celui de la prise de sang" + ] + }, + "il peut en outre pr\u00e9voir les conditions suivant lesquelles le ministre peut exempter certaines cat\u00e9gories de v\u00e9hicules de l ' immatriculation , les circonstances particuli\u00e8res dans lesquelles le ministre peut autoriser le report temporaire de l ' immatriculation d\u00e9finitive d ' un v\u00e9hicule routier au luxembourg , ainsi que les conditions dans lesquelles le ministre peut autoriser la mise en circulation d ' un v\u00e9hicule routier sur la voie publique sous le couvert d ' un signe distinctif particulier , d ' une plaque sp\u00e9ciale ou d ' un num\u00e9ro de plaque rouge .": { + "action": [ + "exempter certaines cat\u00e9gories de v\u00e9hicules de l ' immatriculation", + "autoriser le report temporaire de l ' immatriculation d\u00e9finitive d ' un v\u00e9hicule routier au luxembourg", + "autoriser la mise en circulation d ' un v\u00e9hicule routier sur la voie publique sous le couvert d ' un signe distinctif particulier , d ' une plaque sp\u00e9ciale ou d ' un num\u00e9ro de plaque rouge" + ], + "actor": [ + "le ministre" + ], + "artifact": [ + "certaines cat\u00e9gories de v\u00e9hicules", + "l ' immatriculation d\u00e9finitive d ' un v\u00e9hicule routier au luxembourg", + "un signe distinctif particulier", + "une plaque sp\u00e9ciale", + "un num\u00e9ro de plaque rouge" + ], + "condition": [ + "suivant lesquelles le ministre peut exempter certaines cat\u00e9gories de v\u00e9hicules de l ' immatriculation", + "dans lesquelles le ministre peut autoriser le report temporaire de l ' immatriculation d\u00e9finitive d ' un v\u00e9hicule routier au luxembourg", + "dans lesquelles le ministre peut autoriser la mise en circulation d ' un v\u00e9hicule routier sur la voie publique sous le couvert d ' un signe distinctif particulier , d ' une plaque sp\u00e9ciale ou d ' un num\u00e9ro de plaque rouge" + ], + "location": [ + "le luxembourg", + "la voie publique" + ], + "modality": [ + "il peut" + ] + }, + "il peut \u00eatre cr\u00e9\u00e9 un permis de conduire pour les chauffeurs qui exercent \u00e0 titre principal la profession de conducteur de v\u00e9hicules automoteurs .": { + "action": [ + "\u00eatre cr\u00e9\u00e9" + ], + "actor": [ + "les chauffeurs qui exercent \u00e0 titre principal la profession de conducteur de v\u00e9hicules automoteurs", + "conducteur de v\u00e9hicules automoteurs" + ], + "artifact": [ + "v\u00e9hicules automoteurs" + ], + "condition": [ + "pour les chauffeurs qui exercent \u00e0 titre principal la profession de conducteur de v\u00e9hicules automoteurs" + ], + "modality": [ + "il peut" + ] + }, + "ils pourront conduire le v\u00e9hicule ou le faire transporter ou remorquer vers le lieu de la mise en fourri\u00e8re .": { + "action": [ + "conduire le v\u00e9hicule ou le faire transporter ou remorquer vers le lieu de la mise en fourri\u00e8re", + "le faire transporter ou remorquer" + ], + "artifact": [ + "le v\u00e9hicule" + ], + "location": [ + "le lieu de la mise en fourri\u00e8re" + ], + "modality": [ + "ils pourront" + ] + }, + "l ' affectation du nombre initial de points intervient au moment de la d\u00e9livrance ou de la transcription du permis de conduire .": { + "artifact": [ + "le nombre initial de points", + "le permis de conduire" + ], + "modality": [ + "intervient" + ], + "time": [ + "au moment de la d\u00e9livrance ou de la transcription du permis de conduire" + ] + }, + "l ' analyse de sang consiste en une d\u00e9termination quantitative dans le plasma au moyen de techniques de chromatographie liquide ou gazeuse coupl\u00e9es \u00e0 la spectrom\u00e9trie de masse avec usage de standards internes deut\u00e9r\u00e9s pour une ou plusieurs des substances vis\u00e9es ci-dessus .": { + "action": [ + "coupl\u00e9es \u00e0 la spectrom\u00e9trie de masse", + "deut\u00e9r\u00e9s pour une ou plusieurs des substances vis\u00e9es ci-dessus" + ], + "artifact": [ + "le plasma", + "techniques de chromatographie liquide ou gazeuse coupl\u00e9es \u00e0 la spectrom\u00e9trie de masse avec usage de standards internes deut\u00e9r\u00e9s pour une ou plusieurs des substances vis\u00e9es ci-dessus", + "la spectrom\u00e9trie de masse", + "standards internes deut\u00e9r\u00e9s pour une ou plusieurs des substances vis\u00e9es ci-dessus", + "une ou plusieurs des substances vis\u00e9es ci-dessus" + ] + }, + "l ' assiette de ce d\u00e9dommagement est constitu\u00e9e par le montant des avertissements tax\u00e9s d\u00e9cern\u00e9s en mati\u00e8re de stationnement et de parcage payants .": { + "action": [ + "est constitu\u00e9e" + ], + "artifact": [ + "les avertissements tax\u00e9s d\u00e9cern\u00e9s en mati\u00e8re de stationnement et de parcage payants", + "parcage payants" + ] + }, + "l ' attribution des num\u00e9ros d ' immatriculation se fait en s\u00e9rie courante dans l ' ordre alphab\u00e9tique et num\u00e9rique selon des modalit\u00e9s \u00e0 d\u00e9terminer par r\u00e8glement grand-ducal .": { + "artifact": [ + "num\u00e9ros d ' immatriculation" + ], + "condition": [ + "dans l ' ordre alphab\u00e9tique et num\u00e9rique", + "selon des modalit\u00e9s \u00e0 d\u00e9terminer par r\u00e8glement grand-ducal" + ], + "modality": [ + "se fait" + ], + "reference": [ + "r\u00e8glement grand-ducal" + ] + }, + "l ' envoi des pi\u00e8ces manquantes fait l ' objet d ' un nouvel accus\u00e9 de r\u00e9ception du ministre adress\u00e9 au demandeur dans les quinze jours \u00e0 compter de la r\u00e9ception desdites pi\u00e8ces .": { + "action": [ + "fait l ' objet" + ], + "actor": [ + "le ministre", + "le demandeur" + ], + "artifact": [ + "pi\u00e8ces manquantes", + "un nouvel accus\u00e9 de r\u00e9ception du ministre adress\u00e9 au demandeur dans les quinze jours \u00e0 compter de la r\u00e9ception desdites pi\u00e8ces" + ], + "condition": [ + "d ' un nouvel accus\u00e9 de r\u00e9ception du ministre adress\u00e9 au demandeur dans les quinze jours \u00e0 compter de la r\u00e9ception desdites pi\u00e8ces" + ], + "time": [ + "les quinze jours \u00e0 compter de la r\u00e9ception desdites pi\u00e8ces" + ] + }, + "l ' examen de l ' air expir\u00e9 , la prise de sang et l ' examen m\u00e9dical sont ordonn\u00e9s soit par le juge d ' instruction , soit par le procureur d ' etat , soit par les membres de la police grand-ducale .": { + "action": [ + "sont ordonn\u00e9s" + ], + "actor": [ + "le juge d ' instruction", + "le procureur d ' etat", + "les membres de la police grand-ducale" + ], + "artifact": [ + "l ' air expir\u00e9", + "la prise de sang", + "l ' examen m\u00e9dical" + ] + }, + "l ' examen de l ' air expir\u00e9 est effectu\u00e9 par les membres de la police grand-ducale .": { + "actor": [ + "les membres de la police grand-ducale" + ], + "artifact": [ + "l ' air expir\u00e9" + ], + "modality": [ + "est effectu\u00e9" + ] + }, + "l ' examen de la capacit\u00e9 financi\u00e8re s ' effectue sur base des comptes annuels de l ' organisme , d ' un plan d ' entreprise portant sur un exercice comptable \u00e0 compter de l ' introduction de la demande d ' agr\u00e9ment ainsi que du rapport d ' un r\u00e9viseur d ' entreprise agr\u00e9\u00e9 , accompagn\u00e9 de tous les documents requis \u00e0 \u00e9tablir par un ou plusieurs \u00e9tablissements bancaires et par les autorit\u00e9s administratives comp\u00e9tentes .": { + "action": [ + "\u00e9tablir par un ou plusieurs \u00e9tablissements bancaires et par les autorit\u00e9s administratives comp\u00e9tentes" + ], + "actor": [ + "l ' organisme", + "un r\u00e9viseur d ' entreprise agr\u00e9\u00e9 , accompagn\u00e9 de tous les documents requis \u00e0 \u00e9tablir par un ou plusieurs \u00e9tablissements bancaires et par les autorit\u00e9s administratives comp\u00e9tentes", + "un ou plusieurs \u00e9tablissements bancaires", + "les autorit\u00e9s administratives comp\u00e9tentes" + ], + "artifact": [ + "rapport d ' un r\u00e9viseur d ' entreprise agr\u00e9\u00e9 , accompagn\u00e9 de tous les documents requis \u00e0 \u00e9tablir par un ou plusieurs \u00e9tablissements bancaires et par les autorit\u00e9s administratives comp\u00e9tentes", + "tous les documents requis \u00e0 \u00e9tablir par un ou plusieurs \u00e9tablissements bancaires et par les autorit\u00e9s administratives comp\u00e9tentes", + "un plan d ' entreprise portant sur un exercice comptable \u00e0 compter de l ' introduction de la demande d ' agr\u00e9ment" + ], + "condition": [ + "sur base des comptes annuels de l ' organisme , d ' un plan d ' entreprise portant sur un exercice comptable \u00e0 compter de l ' introduction de la demande d ' agr\u00e9ment ainsi que du rapport d ' un r\u00e9viseur d ' entreprise agr\u00e9\u00e9 , accompagn\u00e9 de tous les documents requis \u00e0 \u00e9tablir par un ou plusieurs \u00e9tablissements bancaires et par les autorit\u00e9s administratives comp\u00e9tentes" + ], + "time": [ + "un exercice comptable \u00e0 compter de l ' introduction de la demande d ' agr\u00e9ment" + ] + }, + "l ' examen m\u00e9dical ne peut \u00eatre effectu\u00e9 que par un m\u00e9decin autoris\u00e9 \u00e0 exercer sa profession au luxembourg .": { + "action": [ + "exercer sa profession au luxembourg" + ], + "actor": [ + "un m\u00e9decin autoris\u00e9 \u00e0 exercer sa profession au luxembourg" + ], + "condition": [ + "par un m\u00e9decin autoris\u00e9 \u00e0 exercer sa profession au luxembourg" + ], + "location": [ + "le luxembourg" + ], + "modality": [ + "ne peut \u00eatre effectu\u00e9" + ] + }, + "l ' exc\u00e9dent \u00e9ventuel est vers\u00e9 \u00e0 la caisse des consignations et est tenu \u00e0 la disposition du propri\u00e9taire ou du d\u00e9tenteur du v\u00e9hicule ou de leurs ayants cause .": { + "action": [ + "est vers\u00e9", + "est tenu" + ], + "actor": [ + "l ' exc\u00e9dent \u00e9ventuel", + "le propri\u00e9taire", + "le d\u00e9tenteur du v\u00e9hicule", + "leurs ayants cause" + ], + "artifact": [ + "le v\u00e9hicule" + ], + "location": [ + "la caisse des consignations" + ] + }, + "l ' ex\u00e9cution et l ' application des tests standardis\u00e9s sont d\u00e9termin\u00e9es par r\u00e8glement grand-ducal .": { + "artifact": [ + "les tests standardis\u00e9s" + ], + "modality": [ + "sont d\u00e9termin\u00e9es" + ], + "reference": [ + "par r\u00e8glement grand-ducal" + ] + }, + "l ' honorabilit\u00e9 d ' un atelier s ' appr\u00e9cie sur base des ant\u00e9c\u00e9dents judiciaires des personnes charg\u00e9es de sa direction et de sa gestion effective .": { + "action": [ + "s ' appr\u00e9cie" + ], + "actor": [ + "un atelier", + "les personnes charg\u00e9es de sa direction", + "sa gestion effective" + ], + "condition": [ + "sur base des ant\u00e9c\u00e9dents judiciaires des personnes charg\u00e9es de sa direction et de sa gestion effective" + ] + }, + "l ' int\u00e9ress\u00e9 doit disposer des structures et des proc\u00e9d\u00e9s internes n\u00e9cessaires pour permettre d ' exercer en permanence un contr\u00f4le appropri\u00e9 de l ' ad\u00e9quation des moyens humains et techniques en place .": { + "action": [ + "exercer en permanence un contr\u00f4le appropri\u00e9 de l ' ad\u00e9quation des moyens humains et techniques en place" + ], + "actor": [ + "l ' int\u00e9ress\u00e9" + ], + "artifact": [ + "structures et des proc\u00e9d\u00e9s internes n\u00e9cessaires pour permettre d ' exercer en permanence un contr\u00f4le appropri\u00e9 de l ' ad\u00e9quation des moyens humains et techniques en place", + "proc\u00e9d\u00e9s internes", + "les moyens humains et techniques en place" + ], + "condition": [ + "des structures et des proc\u00e9d\u00e9s internes n\u00e9cessaires pour permettre d ' exercer en permanence un contr\u00f4le appropri\u00e9 de l ' ad\u00e9quation des moyens humains et techniques en place" + ], + "modality": [ + "doit" + ] + }, + "l ' int\u00e9ress\u00e9 en est inform\u00e9 par \u00e9crit .": { + "action": [ + "en est inform\u00e9" + ], + "actor": [ + "l ' int\u00e9ress\u00e9" + ] + }, + "l ' int\u00e9ress\u00e9 est inform\u00e9 par \u00e9crit de cette reconstitution de points .": { + "action": [ + "est inform\u00e9" + ], + "actor": [ + "l ' int\u00e9ress\u00e9" + ], + "artifact": [ + "cette reconstitution de points" + ] + }, + "l ' option du premier alin\u00e9a du pr\u00e9sent paragraphe n ' est plus donn\u00e9e d\u00e8s le moment o\u00f9 , sous l ' effet de condamnations judiciaires devenues irr\u00e9vocables ou d ' avertissements tax\u00e9s dont l ' int\u00e9ress\u00e9 s ' est acquitt\u00e9 , le nombre de points affect\u00e9 au permis de conduire est r\u00e9duit \u00e0 z\u00e9ro .": { + "action": [ + "n ' est plus donn\u00e9e", + "affect\u00e9 au permis de conduire est r\u00e9duit" + ], + "actor": [ + "l ' int\u00e9ress\u00e9" + ], + "artifact": [ + "avertissements tax\u00e9s dont l ' int\u00e9ress\u00e9 s ' est acquitt\u00e9", + "le premier alin\u00e9a du pr\u00e9sent paragraphe" + ], + "condition": [ + "d\u00e8s le moment o\u00f9 , sous l ' effet de condamnations judiciaires devenues irr\u00e9vocables ou d ' avertissements tax\u00e9s dont l ' int\u00e9ress\u00e9 s ' est acquitt\u00e9 , le nombre de points affect\u00e9 au permis de conduire est r\u00e9duit \u00e0 z\u00e9ro" + ], + "reference": [ + "du premier alin\u00e9a du pr\u00e9sent paragraphe" + ], + "time": [ + "le moment o\u00f9 , sous l ' effet de condamnations judiciaires devenues irr\u00e9vocables ou d ' avertissements tax\u00e9s dont l ' int\u00e9ress\u00e9 s ' est acquitt\u00e9 , le nombre de points affect\u00e9 au permis de conduire est r\u00e9duit \u00e0 z\u00e9ro" + ] + }, + "l ' organisme de contr\u00f4le technique doit \u00eatre accr\u00e9dit\u00e9 conform\u00e9ment au r\u00e8glement ce n\u00b0 65/2008 du parlement europ\u00e9en et du conseil du 9 juillet 2008 fixant les prescriptions relatives \u00e0 l ' accr\u00e9ditation et \u00e0 la surveillance du march\u00e9 pour la commercialisation des produits et abrogeant le r\u00e8glement cee n\u00b0 339/93 du conseil .": { + "action": [ + "\u00eatre accr\u00e9dit\u00e9", + "fixant les prescriptions relatives \u00e0 l ' accr\u00e9ditation et \u00e0 la surveillance du march\u00e9 pour la commercialisation des produits" + ], + "actor": [ + "l ' organisme de contr\u00f4le technique", + "le conseil" + ], + "artifact": [ + "les prescriptions relatives \u00e0 l ' accr\u00e9ditation et \u00e0 la surveillance du march\u00e9 pour la commercialisation des produits", + "la commercialisation des produits" + ], + "modality": [ + "doit" + ], + "time": [ + "le 9 juillet 2008" + ] + }, + "l ' organisme doit tenir un registre de s\u00e9curit\u00e9 qui comprend l ' ensemble des documents , informations et donn\u00e9es renseignant sur l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite de m\u00eame que sur les moyens et mesures de protection et de pr\u00e9vention mis en \u0153uvre .": { + "action": [ + "tenir un registre de s\u00e9curit\u00e9 qui comprend l ' ensemble des documents , informations et donn\u00e9es renseignant sur l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite de m\u00eame que sur les moyens et mesures de protection et de pr\u00e9vention mis en \u0153uvre" + ], + "actor": [ + "l ' organisme" + ], + "artifact": [ + "un registre de s\u00e9curit\u00e9 qui comprend l ' ensemble des documents , informations et donn\u00e9es renseignant sur l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite de m\u00eame que sur les moyens et mesures de protection et de pr\u00e9vention mis en \u0153uvre", + "l ' ensemble des documents , informations et donn\u00e9es renseignant sur l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite de m\u00eame que sur les moyens et mesures de protection et de pr\u00e9vention mis en \u0153uvre", + "l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite", + "les moyens et mesures de protection et de pr\u00e9vention mis en \u0153uvre" + ], + "location": [ + "les centres de contr\u00f4le technique qu ' il exploite" + ], + "modality": [ + "doit" + ] + }, + "l ' ouverture hebdomadaire de tout centre de contr\u00f4le technique exploit\u00e9 par l ' organisme de contr\u00f4le technique doit s ' \u00e9tendre sur au moins quarante heures en dehors des semaines comportant un jour f\u00e9ri\u00e9 l\u00e9gal et sans pr\u00e9judice de la possibilit\u00e9 de fermer annuellement le centre pendant deux semaines au maximum en vue de pourvoir \u00e0 son entretien technique .": { + "action": [ + "fermer annuellement le centre pendant deux semaines au maximum en vue de pourvoir \u00e0 son entretien technique", + "pourvoir \u00e0 son entretien technique" + ], + "actor": [ + "tout centre de contr\u00f4le technique exploit\u00e9 par l ' organisme de contr\u00f4le technique", + "l ' organisme de contr\u00f4le technique" + ], + "artifact": [ + "tout centre de contr\u00f4le technique exploit\u00e9 par l ' organisme de contr\u00f4le technique" + ], + "condition": [ + "exploit\u00e9", + "en dehors des semaines comportant un jour f\u00e9ri\u00e9 l\u00e9gal et sans pr\u00e9judice de la possibilit\u00e9 de fermer annuellement le centre pendant deux semaines au maximum en vue de pourvoir \u00e0 son entretien technique", + "sur au moins quarante heures", + "comportant" + ], + "modality": [ + "doit" + ], + "time": [ + "l ' ouverture hebdomadaire de tout centre de contr\u00f4le technique exploit\u00e9 par l ' organisme de contr\u00f4le technique", + "deux semaines" + ] + }, + "la composition , les attributions , les modalit\u00e9s de fonctionnement et les indemnit\u00e9s de la commission d ' examen sont d\u00e9termin\u00e9es par r\u00e8glement grand-ducal .": { + "action": [ + "sont d\u00e9termin\u00e9es" + ], + "actor": [ + "la commission d ' examen" + ], + "artifact": [ + "la composition , les attributions , les modalit\u00e9s de fonctionnement et les indemnit\u00e9s de la commission d ' examen" + ], + "reference": [ + "par r\u00e8glement grand-ducal" + ] + }, + "la constatation par les membres de la police grand-ducale de l ' impossibilit\u00e9 de contacter le propri\u00e9taire ou le d\u00e9tenteur du v\u00e9hicule vaut information .": { + "action": [ + "contacter le propri\u00e9taire ou le d\u00e9tenteur du v\u00e9hicule" + ], + "actor": [ + "les membres de la police grand-ducale", + "le propri\u00e9taire ou le d\u00e9tenteur du v\u00e9hicule" + ], + "artifact": [ + "le v\u00e9hicule" + ], + "condition": [ + "de l ' impossibilit\u00e9 de contacter le propri\u00e9taire ou le d\u00e9tenteur du v\u00e9hicule" + ], + "modality": [ + "vaut" + ] + }, + "la dur\u00e9e d ' application d ' une suspension du droit de conduire qui intervient dans les conditions du paragraphe 3 , la dur\u00e9e d ' ex\u00e9cution d ' une interdiction de conduire judiciaire sans exceptions , non assortie du sursis , et la dur\u00e9e d ' application d ' un retrait administratif du permis de conduire qui intervient dans les conditions du paragraphe 1er de l ' article 2 ne comptent pas pour le calcul du d\u00e9lai du pr\u00e9sent paragraphe .": { + "artifact": [ + "une interdiction de conduire judiciaire sans exceptions , non assortie du sursis" + ], + "condition": [ + "d ' application d ' une suspension du droit de conduire qui intervient dans les conditions du paragraphe 3", + "non assortie", + "d ' ex\u00e9cution d ' une interdiction de conduire judiciaire sans exceptions , non assortie du sursis", + "d ' application d ' un retrait administratif du permis de conduire qui intervient dans les conditions du paragraphe 1er de l ' article 2" + ], + "reference": [ + "le paragraphe 3", + "le paragraphe 1er de l ' article 2", + "le pr\u00e9sent paragraphe" + ] + }, + "la dur\u00e9e d ' ex\u00e9cution d ' une interdiction de conduire judiciaire sans exceptions , non assortie du sursis , la dur\u00e9e d ' application d ' un retrait administratif du permis de conduire qui intervient dans les conditions du paragraphe 1er de l ' article 2 ou d ' une suspension du droit de conduire ne comptent pas pour le calcul de la dur\u00e9e de ce d\u00e9lai .": { + "artifact": [ + "une interdiction de conduire judiciaire sans exceptions , non assortie du sursis" + ], + "condition": [ + "d ' ex\u00e9cution d ' une interdiction de conduire judiciaire sans exceptions , non assortie du sursis", + "non assortie", + "d ' application d ' un retrait administratif du permis de conduire qui intervient dans les conditions du paragraphe 1er de l ' article 2 ou d ' une suspension du droit de conduire" + ], + "modality": [ + "ne comptent pas" + ], + "reference": [ + "le paragraphe 1er de l ' article 2" + ], + "time": [ + "la dur\u00e9e d ' ex\u00e9cution d ' une interdiction de conduire judiciaire sans exceptions , non assortie du sursis", + "la dur\u00e9e d ' application d ' un retrait administratif du permis de conduire qui intervient dans les conditions du paragraphe 1er de l ' article 2 ou d ' une suspension du droit de conduire", + "la dur\u00e9e de ce d\u00e9lai" + ] + }, + "la dur\u00e9e de la publication par voie \u00e9lectronique correspond \u00e0 celle des effets du r\u00e8glement publi\u00e9 .": { + "artifact": [ + "le r\u00e8glement publi\u00e9" + ], + "modality": [ + "correspond" + ], + "time": [ + "la dur\u00e9e de la publication par voie \u00e9lectronique" + ] + }, + "la d\u00e9cision minist\u00e9rielle est motiv\u00e9e .": { + "action": [ + "est motiv\u00e9e" + ], + "actor": [ + "la d\u00e9cision minist\u00e9rielle" + ] + }, + "la d\u00e9cision minist\u00e9rielle intervient au plus tard dans les trois mois \u00e0 compter de la r\u00e9ception du dossier complet .": { + "actor": [ + "la d\u00e9cision minist\u00e9rielle" + ], + "condition": [ + "dans les trois mois \u00e0 compter de la r\u00e9ception du dossier complet" + ], + "time": [ + "les trois mois \u00e0 compter de la r\u00e9ception du dossier complet" + ] + }, + "la loi du 3 ao\u00fbt 1953 concernant la r\u00e9glementation de la circulation sur toutes les voies publiques est abrog\u00e9e .": { + "action": [ + "est abrog\u00e9e" + ], + "artifact": [ + "la loi du 3 ao\u00fbt 1953 concernant la r\u00e9glementation de la circulation sur toutes les voies publiques" + ], + "location": [ + "toutes les voies publiques" + ], + "reference": [ + "la loi du 3 ao\u00fbt 1953 concernant la r\u00e9glementation de la circulation sur toutes les voies publiques" + ] + }, + "la mise en fourri\u00e8re est constat\u00e9e par proc\u00e8s-verbal qui comporte l ' indication sommaire des circonstances et conditions dans lesquelles la mesure a \u00e9t\u00e9 ex\u00e9cut\u00e9e , et qui est sans d\u00e9lai dress\u00e9 et transmis au procureur d ' etat .": { + "action": [ + "est constat\u00e9e", + "est sans d\u00e9lai dress\u00e9" + ], + "artifact": [ + "proc\u00e8s-verbal qui comporte l ' indication sommaire des circonstances et conditions dans lesquelles la mesure a \u00e9t\u00e9 ex\u00e9cut\u00e9e , et qui est sans d\u00e9lai dress\u00e9 et transmis au procureur d ' etat" + ], + "condition": [ + "par proc\u00e8s-verbal qui comporte l ' indication sommaire des circonstances et conditions dans lesquelles la mesure a \u00e9t\u00e9 ex\u00e9cut\u00e9e , et qui est sans d\u00e9lai dress\u00e9 et transmis au procureur d ' etat" + ] + }, + "la mise en \u0153uvre de cette gestion peut \u00eatre d\u00e9termin\u00e9e par un r\u00e8glement grand-ducal .": { + "artifact": [ + "cette gestion" + ], + "modality": [ + "peut \u00eatre d\u00e9termin\u00e9e" + ], + "reference": [ + "un r\u00e8glement grand-ducal" + ] + }, + "la participation \u00e0 la formation continue est soumise \u00e0 un droit d ' inscription fix\u00e9 par r\u00e8glement grand-ducal sans pouvoir d\u00e9passer le montant de 1 .000 euros par an .": { + "action": [ + "fix\u00e9 par r\u00e8glement grand-ducal" + ], + "modality": [ + "est soumise" + ], + "reference": [ + "par r\u00e8glement grand-ducal" + ] + }, + "la participation \u00e0 la formation de base est soumise \u00e0 un droit d ' inscription fix\u00e9 par r\u00e8glement grand-ducal sans pouvoir d\u00e9passer le montant de 1 .000 euros par an .": { + "condition": [ + "\u00e0 un droit d ' inscription fix\u00e9 par r\u00e8glement grand-ducal" + ], + "modality": [ + "est soumise" + ], + "reference": [ + "r\u00e8glement grand-ducal" + ] + }, + "la personne pr\u00e9sentant le v\u00e9hicule routier au contr\u00f4le est inform\u00e9e de toutes les d\u00e9fectuosit\u00e9s ou non- conformit\u00e9s identifi\u00e9es sur le v\u00e9hicule et devant \u00eatre corrig\u00e9es .": { + "action": [ + "est inform\u00e9e", + "identifi\u00e9es sur le v\u00e9hicule", + "devant \u00eatre corrig\u00e9es" + ], + "actor": [ + "la personne pr\u00e9sentant le v\u00e9hicule routier au contr\u00f4le" + ], + "artifact": [ + "le v\u00e9hicule routier" + ], + "condition": [ + "pr\u00e9sentant", + "de toutes les d\u00e9fectuosit\u00e9s ou non- conformit\u00e9s identifi\u00e9es sur le v\u00e9hicule" + ] + }, + "la prise d ' urine , la prise de sang et l ' examen m\u00e9dical sont ordonn\u00e9s soit par le juge d ' instruction , soit par le procureur d ' etat soit par les membres de la police grand-ducale .": { + "action": [ + "sont ordonn\u00e9s" + ], + "actor": [ + "les membres de la police grand-ducale" + ], + "artifact": [ + "' urine" + ] + }, + "la proc\u00e9dure de modification suit les modalit\u00e9s de celle pr\u00e9vue en vue de sa d\u00e9livrance .": { + "modality": [ + "suit" + ], + "reference": [ + "celle pr\u00e9vue en vue de sa d\u00e9livrance" + ] + }, + "la publication des r\u00e8glements qui , le cas \u00e9ch\u00e9ant , peuvent intervenir sur base de la d\u00e9l\u00e9gation de comp\u00e9tence pr\u00e9vue \u00e0 l ' article 76 , alin\u00e9a 2 de la constitution en vue de l ' ex\u00e9cution de la pr\u00e9sente loi sont publi\u00e9s au m\u00e9morial ou sur le site \u00e9lectronique install\u00e9 \u00e0 cet effet par le gouvernement .": { + "action": [ + "intervenir sur base de la d\u00e9l\u00e9gation de comp\u00e9tence pr\u00e9vue \u00e0 l ' article 76 , alin\u00e9a 2 de la constitution en vue de l ' ex\u00e9cution de la pr\u00e9sente loi", + "pr\u00e9vue \u00e0 l ' article 76 , alin\u00e9a 2 de la constitution en vue de l ' ex\u00e9cution de la pr\u00e9sente loi", + "sont publi\u00e9s" + ], + "actor": [ + "le gouvernement" + ], + "artifact": [ + "les r\u00e8glements qui , le cas \u00e9ch\u00e9ant , peuvent intervenir sur base de la d\u00e9l\u00e9gation de comp\u00e9tence pr\u00e9vue \u00e0 l ' article 76 , alin\u00e9a 2 de la constitution en vue de l ' ex\u00e9cution de la pr\u00e9sente loi", + "la constitution", + "la pr\u00e9sente loi", + "le m\u00e9morial", + "le site \u00e9lectronique install\u00e9 \u00e0 cet effet par le gouvernement" + ], + "condition": [ + "des r\u00e8glements qui , le cas \u00e9ch\u00e9ant , peuvent intervenir sur base de la d\u00e9l\u00e9gation de comp\u00e9tence pr\u00e9vue \u00e0 l ' article 76 , alin\u00e9a 2 de la constitution en vue de l ' ex\u00e9cution de la pr\u00e9sente loi", + "install\u00e9" + ], + "location": [ + "le m\u00e9morial", + "le site \u00e9lectronique install\u00e9 \u00e0 cet effet par le gouvernement" + ], + "reference": [ + "\u00e0 l ' article 76 , alin\u00e9a 2 de la constitution" + ] + }, + "\u00e0 moins d ' en disposer autrement , ces r\u00e8glements entrent en vigueur le jour de leur publication .": { + "actor": [ + "ces r\u00e8glements" + ], + "condition": [ + "\u00e0 moins d ' en disposer autrement" + ], + "time": [ + "le jour de leur publication" + ] + }, + "dans le cadre des contr\u00f4les de v\u00e9hicules effectu\u00e9s dans l ' exercice des fonctions qui leur sont conf\u00e9r\u00e9es par la l\u00e9gislation sur les transports routiers ainsi que , pour autant que la masse maximale des v\u00e9hicules \u00e0 contr\u00f4ler d\u00e9passe 3 .500 kg , par les articles 11 et 17 , paragraphe 1 , les fonctionnaires de l ' administration des douanes et accises sont charg\u00e9s d ' assurer l ' ex\u00e9cution des dispositions de la pr\u00e9sente loi et des dispositions r\u00e9glementaires prises en son ex\u00e9cution , pour autant qu ' elles concernent l ' am\u00e9nagement des v\u00e9hicules et de leurs chargements ainsi que les plaques d ' immatriculation , les num\u00e9ros d ' identification et les documents de bord , et de dresser proc\u00e8s-verbal des infractions \u00e0 ces dispositions .": { + "action": [ + "assurer l ' ex\u00e9cution des dispositions de la pr\u00e9sente loi et des dispositions r\u00e9glementaires prises en son ex\u00e9cution , pour autant qu ' elles concernent l ' am\u00e9nagement des v\u00e9hicules et de leurs chargements ainsi que les plaques d ' immatriculation , les num\u00e9ros d ' identification et les documents de bord", + "dresser proc\u00e8s-verbal des infractions \u00e0 ces dispositions" + ], + "actor": [ + "les fonctionnaires de l ' administration des douanes et accises" + ], + "artifact": [ + "les v\u00e9hicules \u00e0 contr\u00f4ler", + "les num\u00e9ros d ' identification", + "les documents de bord" + ], + "condition": [ + "effectu\u00e9s", + "d ' assurer l ' ex\u00e9cution des dispositions de la pr\u00e9sente loi et des dispositions r\u00e9glementaires prises en son ex\u00e9cution , pour autant qu ' elles concernent l ' am\u00e9nagement des v\u00e9hicules et de leurs chargements ainsi que les plaques d ' immatriculation , les num\u00e9ros d ' identification et les documents de bord , et de dresser proc\u00e8s-verbal des infractions \u00e0 ces dispositions" + ], + "modality": [ + "sont charg\u00e9s" + ], + "reference": [ + "par la l\u00e9gislation sur les transports routiers", + "par les articles 11 et 17 , paragraphe 1", + "des dispositions de la pr\u00e9sente loi et des dispositions r\u00e9glementaires prises en son ex\u00e9cution", + "des dispositions r\u00e9glementaires prises en son ex\u00e9cution" + ], + "time": [ + "dans le cadre des contr\u00f4les de v\u00e9hicules effectu\u00e9s dans l ' exercice des fonctions qui leur sont conf\u00e9r\u00e9es par la l\u00e9gislation sur les transports routiers" + ] + }, + "en vue de l ' obtention de l ' agr\u00e9ment minist\u00e9riel en tant qu ' inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter , l ' int\u00e9ress\u00e9 doit \u00eatre d\u00e9tenteur du certificat de qualification d ' inspecteur de contr\u00f4le technique d\u00e9livr\u00e9 par le ministre ayant la Formation professionnelle dans ses attributions ;": { + "action": [ + "d\u00e9livr\u00e9 par le ministre ayant la Formation professionnelle dans ses attributions" + ], + "actor": [ + "l ' int\u00e9ress\u00e9", + "le ministre ayant la Formation professionnelle dans ses attributions" + ], + "artifact": [ + "l ' agr\u00e9ment minist\u00e9riel en tant qu ' inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter", + "le certificat de qualification d ' inspecteur de contr\u00f4le technique d\u00e9livr\u00e9 par le ministre ayant la Formation professionnelle dans ses attributions" + ], + "condition": [ + "du certificat de qualification d ' inspecteur de contr\u00f4le technique d\u00e9livr\u00e9 par le ministre ayant la Formation professionnelle dans ses attributions" + ], + "modality": [ + "doit" + ], + "reference": [ + "l ' article 4ter" + ] + }, + "en vue de l ' obtention de l ' agr\u00e9ment minist\u00e9riel en tant qu ' inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter , l ' int\u00e9ress\u00e9 doit avoir une connaissance ad\u00e9quate des trois langues administratives telles que d\u00e9finies par la loi du 24 f\u00e9vrier 1984 sur le r\u00e9gime des langues ;": { + "action": [ + "avoir une connaissance ad\u00e9quate des trois langues administratives telles que d\u00e9finies par la loi du 24 f\u00e9vrier 1984 sur le r\u00e9gime des langues" + ], + "actor": [ + "l ' int\u00e9ress\u00e9", + "inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter" + ], + "artifact": [ + "l ' agr\u00e9ment minist\u00e9riel en tant qu ' inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter" + ], + "condition": [ + "des trois langues administratives telles que d\u00e9finies par la loi du 24 f\u00e9vrier 1984 sur le r\u00e9gime des langues" + ], + "modality": [ + "doit" + ], + "reference": [ + "la loi du 24 f\u00e9vrier 1984 sur le r\u00e9gime des langues", + "l ' article 4ter" + ] + }, + "en vue de l ' obtention de l ' agr\u00e9ment minist\u00e9riel en tant qu ' inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter , l ' int\u00e9ress\u00e9 doit poss\u00e9der les qualit\u00e9s physiques , intellectuelles et morales n\u00e9cessaires pour effectuer des op\u00e9rations de contr\u00f4le technique .": { + "action": [ + "effectuer des op\u00e9rations de contr\u00f4le technique" + ], + "actor": [ + "l ' int\u00e9ress\u00e9", + "inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter" + ], + "artifact": [ + "l ' agr\u00e9ment minist\u00e9riel en tant qu ' inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter", + "des op\u00e9rations de contr\u00f4le technique" + ], + "condition": [ + "en vue de l ' obtention de l ' agr\u00e9ment minist\u00e9riel en tant qu ' inspecteur de contr\u00f4le technique dont question \u00e0 l ' article 4ter" + ], + "modality": [ + "doit" + ], + "reference": [ + "\u00e0 l ' article 4ter" + ] + }, + "des points n\u00e9gatifs ne sont pas mis en compte .": { + "actor": [ + "des points n\u00e9gatifs" + ], + "modality": [ + "ne sont pas mis en compte" + ] + }, + "l ' organisme doit tenir un registre de s\u00e9curit\u00e9 qui comprend l ' ensemble des documents , informations et donn\u00e9es renseignant sur l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite de m\u00eame que sur les moyens et mesures de protection et de pr\u00e9vention mis en oeuvre .": { + "action": [ + "tenir un registre de s\u00e9curit\u00e9 qui comprend l ' ensemble des documents , informations et donn\u00e9es renseignant sur l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite de m\u00eame que sur les moyens et mesures de protection et de pr\u00e9vention mis en oeuvre" + ], + "actor": [ + "l ' organisme" + ], + "artifact": [ + "un registre de s\u00e9curit\u00e9 qui comprend l ' ensemble des documents , informations et donn\u00e9es renseignant sur l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite de m\u00eame que sur les moyens et mesures de protection et de pr\u00e9vention mis en oeuvre", + "l ' ensemble des documents , informations et donn\u00e9es renseignant sur l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite de m\u00eame que sur les moyens et mesures de protection et de pr\u00e9vention mis en oeuvre", + "l ' \u00e9tat du ou des centres de contr\u00f4le technique qu ' il exploite", + "les moyens et mesures de protection et de pr\u00e9vention mis en oeuvre" + ], + "location": [ + "les centres de contr\u00f4le technique qu ' il exploite" + ], + "modality": [ + "doit" + ] + }, + "la mise en oeuvre de cette gestion peut \u00eatre d\u00e9termin\u00e9e par un r\u00e8glement grand-ducal .": { + "artifact": [ + "cette gestion", + "un r\u00e8glement grand-ducal" + ], + "condition": [ + "par un r\u00e8glement grand-ducal" + ], + "modality": [ + "peut" + ] + }, + "pour la d\u00e9termination de la pr\u00e9sence de stup\u00e9fiants dans l ' organisme , l ' analyse du sang est positive d\u00e8s qu ' une ou plusieurs des substances pr\u00e9vues \u00e0 l ' alin\u00e9a 1 du paragraphe 4 de l ' article 12 de la loi modifi\u00e9e du 14 f\u00e9vrier 1955 pr\u00e9cit\u00e9e , y ont \u00e9t\u00e9 d\u00e9cel\u00e9es dans des quantit\u00e9s sup\u00e9rieures ou \u00e9gales aux seuils maxima correspondants y sp\u00e9cifi\u00e9s .": { + "artifact": [ + "le sang", + "les substances pr\u00e9vues \u00e0 l ' alin\u00e9a 1 du paragraphe 4 de l ' article 12 de la loi modifi\u00e9e du 14 f\u00e9vrier 1955 pr\u00e9cit\u00e9e" + ], + "condition": [ + "'", + "des substances pr\u00e9vues \u00e0 l ' alin\u00e9a 1 du paragraphe 4 de l ' article 12 de la loi modifi\u00e9e du 14 f\u00e9vrier 1955 pr\u00e9cit\u00e9e", + "dans des quantit\u00e9s sup\u00e9rieures ou \u00e9gales aux seuils maxima correspondants y sp\u00e9cifi\u00e9s" + ], + "location": [ + "l ' organisme" + ], + "reference": [ + "\u00e0 l ' alin\u00e9a 1 du paragraphe 4 de l ' article 12 de la loi modifi\u00e9e du 14 f\u00e9vrier 1955 pr\u00e9cit\u00e9e" + ] + }, + "le mandat autorise le mandataire , au minimum \u00e0 garder la documentation technique \u00e0 la disposition de l ' ilnas pendant au moins la p\u00e9riode pr\u00e9cis\u00e9e dans les annexes des accords internationaux sur le transport de marchandises dangereuses pour les fabricants .": { + "action": [ + "garder la documentation technique \u00e0 la disposition de l ' ilnas pendant au moins la p\u00e9riode pr\u00e9cis\u00e9e dans les annexes des accords internationaux sur le transport de marchandises dangereuses pour les fabricants" + ], + "actor": [ + "le mandataire", + "les fabricants" + ], + "artifact": [ + "la documentation technique", + "les accords internationaux sur le transport de marchandises dangereuses pour les fabricants" + ], + "condition": [ + "au minimum", + "pr\u00e9cis\u00e9e", + "\u00e0 garder la documentation technique \u00e0 la disposition de l ' ilnas pendant au moins la p\u00e9riode pr\u00e9cis\u00e9e dans les annexes des accords internationaux sur le transport de marchandises dangereuses pour les fabricants" + ], + "modality": [ + "autorise" + ], + "reference": [ + "les annexes des accords internationaux sur le transport de marchandises dangereuses pour les fabricants" + ], + "time": [ + "la p\u00e9riode pr\u00e9cis\u00e9e dans les annexes des accords internationaux sur le transport de marchandises dangereuses pour les fabricants" + ] + }, + "le mandat autorise le mandataire , au minimum \u00e0 la demande motiv\u00e9e de l ' ilnas , \u00e0 lui communiquer toutes les informations et tous les documents n\u00e9cessaires pour d\u00e9montrer la conformit\u00e9 de l ' \u00e9quipement sous pression transportable , dans une des trois langues administratives du luxembourg": { + "action": [ + "lui communiquer", + "d\u00e9montrer la conformit\u00e9 de l ' \u00e9quipement sous pression transportable , dans une des trois langues administratives du luxembourg" + ], + "actor": [ + "le mandataire", + "l ' ilnas" + ], + "artifact": [ + "l ' \u00e9quipement sous pression transportable" + ], + "condition": [ + "au minimum \u00e0 la demande motiv\u00e9e de l ' ilnas" + ], + "location": [ + "le luxembourg" + ], + "modality": [ + "autorise" + ] + }, + "le mandat autorise le mandataire , au minimum \u00e0 la demande de l ' ilnas , \u00e0 coop\u00e9rer avec lui \u00e0 la mise en oeuvre de toute mesure prise en vue d ' \u00e9liminer les risques pr\u00e9sent\u00e9s par les \u00e9quipements sous pression transportables couverts par le mandat .": { + "action": [ + "coop\u00e9rer avec lui \u00e0 la mise en oeuvre de toute mesure prise en vue d ' \u00e9liminer les risques pr\u00e9sent\u00e9s par les \u00e9quipements sous pression transportables couverts par le mandat", + "\u00e9liminer les risques pr\u00e9sent\u00e9s par les \u00e9quipements sous pression transportables couverts par le mandat" + ], + "actor": [ + "le mandataire" + ], + "artifact": [ + "les \u00e9quipements sous pression transportables couverts par le mandat" + ], + "condition": [ + "au minimum \u00e0 la demande de l ' ilnas", + "prise", + "pr\u00e9sent\u00e9s", + "couverts", + "\u00e0 coop\u00e9rer avec lui \u00e0 la mise en oeuvre de toute mesure prise en vue d ' \u00e9liminer les risques pr\u00e9sent\u00e9s par les \u00e9quipements sous pression transportables couverts par le mandat" + ], + "modality": [ + "autorise" + ], + "reference": [ + "le mandat" + ] + }, + "\u00e0 moins d ' effectuer un d\u00e9passement , les conducteurs d ' unit\u00e9s de transport munies de panneaux orange , doivent observer , par rapport aux v\u00e9hicules les pr\u00e9c\u00e9dant , un intervalle qui est d ' au moins 50 m en agglom\u00e9ration et d ' au moins 100 m en dehors des agglom\u00e9rations .": { + "action": [ + "effectuer un d\u00e9passement", + "observer , par rapport aux v\u00e9hicules les pr\u00e9c\u00e9dant , un intervalle qui est d ' au moins 50 m en agglom\u00e9ration et d ' au moins 100 m en dehors des agglom\u00e9rations" + ], + "actor": [ + "les conducteurs d ' unit\u00e9s de transport munies de panneaux orange" + ], + "artifact": [ + "panneaux orange", + "les v\u00e9hicules les pr\u00e9c\u00e9dant" + ], + "condition": [ + "\u00e0 moins d ' effectuer un d\u00e9passement", + "munies", + "les pr\u00e9c\u00e9dant" + ], + "modality": [ + "doivent" + ] + }, + "le ministre peut sp\u00e9cifier les modalit\u00e9s d ' application des dispositions de l ' annexe ii et d\u00e9terminer celles relatives au contr\u00f4le des \u00e9quipements , organes et \u00e9l\u00e9ments accessoires .": { + "action": [ + "sp\u00e9cifier les modalit\u00e9s d ' application des dispositions de l ' annexe ii et d\u00e9terminer celles relatives au contr\u00f4le des \u00e9quipements , organes et \u00e9l\u00e9ments accessoires", + "d\u00e9terminer celles relatives au contr\u00f4le des \u00e9quipements , organes et \u00e9l\u00e9ments accessoires" + ], + "actor": [ + "le ministre" + ], + "artifact": [ + "les dispositions de l ' annexe ii", + "les \u00e9quipements , organes et \u00e9l\u00e9ments accessoires" + ], + "modality": [ + "peut" + ], + "reference": [ + "les dispositions de l ' annexe ii" + ] + }, + "l ' embrayage doit \u00eatre progressif et pouvoir \u00eatre r\u00e9gl\u00e9 facilement .": { + "action": [ + "\u00eatre progressif et pouvoir \u00eatre r\u00e9gl\u00e9 facilement", + "pouvoir \u00eatre r\u00e9gl\u00e9 facilement" + ], + "actor": [ + "l ' embrayage" + ], + "modality": [ + "doit" + ] + }, + "le ministre est l ' autorit\u00e9 comp\u00e9tente pour la v\u00e9rification et le scellement des taxim\u00e8tres et de leurs dispositifs compl\u00e9mentaires ainsi que de l ' installation aff\u00e9rente ou du dispositif de fermeture dont question au paragraphe 3 de l ' article 13 .": { + "actor": [ + "le ministre", + "leurs dispositifs compl\u00e9mentaires" + ], + "artifact": [ + "les taxim\u00e8tres", + "leurs dispositifs compl\u00e9mentaires", + "le dispositif de fermeture dont question au paragraphe 3 de l ' article 13" + ] + }, + "il est interdit de transporter des passagers .": { + "action": [ + "transporter des passagers" + ], + "modality": [ + "il est interdit" + ] + }, + "l ' acc\u00e8s \u00e0 la qualification initiale ne n\u00e9cessite pas la d\u00e9tention pr\u00e9alable du permis de conduire correspondant .": { + "modality": [ + "ne n\u00e9cessite pas" + ], + "time": [ + "la d\u00e9tention pr\u00e9alable du permis de conduire correspondant" + ] + }, + "si un disque a \u00e9t\u00e9 vol\u00e9 , perdu , d\u00e9truit , endommag\u00e9 ou rendu autrement inutilisable , l ' entrepreneur de taxi concern\u00e9 est tenu d ' en informer imm\u00e9diatement la snct .": { + "action": [ + "rendu autrement inutilisable", + "en informer imm\u00e9diatement la snct" + ], + "actor": [ + "l ' entrepreneur de taxi concern\u00e9" + ], + "artifact": [ + "un disque" + ], + "condition": [ + "si" + ], + "modality": [ + "est tenu" + ] + }, + "le signal peut \u00eatre r\u00e9p\u00e9t\u00e9 au revers du panneau .": { + "action": [ + "\u00eatre r\u00e9p\u00e9t\u00e9" + ], + "actor": [ + "le signal" + ], + "artifact": [ + "le panneau" + ], + "location": [ + "le revers du panneau" + ], + "modality": [ + "peut" + ] + }, + "si l ' int\u00e9ress\u00e9 est atteint d ' anomalies de la tension art\u00e9rielle , le permis de conduire peut \u00eatre d\u00e9livr\u00e9 ou renouvel\u00e9 sur avis motiv\u00e9 de la commission m\u00e9dicale , qui dans son avis tiendra compte des autres donn\u00e9es de l ' examen , des complications \u00e9ventuelles associ\u00e9es et du danger qu ' elles peuvent constituer pour la s\u00e9curit\u00e9 de la circulation .": { + "action": [ + "\u00eatre d\u00e9livr\u00e9 ou renouvel\u00e9 sur avis motiv\u00e9 de la commission m\u00e9dicale , qui dans son avis tiendra compte des autres donn\u00e9es de l ' examen , des complications \u00e9ventuelles associ\u00e9es et du danger qu ' elles peuvent constituer pour la s\u00e9curit\u00e9 de la circulation" + ], + "actor": [ + "l ' int\u00e9ress\u00e9", + "la commission m\u00e9dicale , qui dans son avis tiendra compte des autres donn\u00e9es de l ' examen , des complications \u00e9ventuelles associ\u00e9es et du danger qu ' elles peuvent constituer pour la s\u00e9curit\u00e9 de la circulation" + ], + "artifact": [ + "anomalies de la tension art\u00e9rielle" + ], + "condition": [ + "si", + "d ' anomalies de la tension art\u00e9rielle", + "sur avis motiv\u00e9 de la commission m\u00e9dicale , qui dans son avis tiendra compte des autres donn\u00e9es de l ' examen , des complications \u00e9ventuelles associ\u00e9es et du danger qu ' elles peuvent constituer pour la s\u00e9curit\u00e9 de la circulation" + ], + "modality": [ + "peut" + ] + }, + "le signal c , 6 indique que l ' acc\u00e8s est interdit aux v\u00e9hicules ayant une hauteur totale sup\u00e9rieur \u00e0 num m\u00e8tres .": { + "actor": [ + "le signal c , 6" + ], + "artifact": [ + "les v\u00e9hicules ayant une hauteur totale sup\u00e9rieur \u00e0 num m\u00e8tres" + ], + "condition": [ + "aux v\u00e9hicules ayant une hauteur totale sup\u00e9rieur \u00e0 num m\u00e8tres" + ] + }, + "lorsque des modalit\u00e9s particuli\u00e8res en mati\u00e8re de stationnement ou de parcage sont pr\u00e9vues en faveur des r\u00e9sidents , le symbole du disque est \u00e9galement suivi de l ' inscription sauf r\u00e9sidents avec vignette et , le cas \u00e9ch\u00e9ant , de l ' inscription du secteur de stationnement r\u00e9sidentiel .": { + "action": [ + "sont pr\u00e9vues", + "est \u00e9galement suivi" + ], + "artifact": [ + "le symbole du disque", + "l ' inscription du secteur de stationnement r\u00e9sidentiel" + ], + "location": [ + "le secteur de stationnement r\u00e9sidentiel" + ], + "modality": [ + "sont pr\u00e9vues", + "est \u00e9galement suivi" + ] + }, + "le ministre peut , par d\u00e9cision individuelle et \u00e0 titre exceptionnel , autoriser l ' usage d ' un num\u00e9ro de plaque rouge pour des besoins sp\u00e9ciaux autres que ceux vis\u00e9s \u00e0 l ' article 4 , paragraphe 2 , alin\u00e9a 5 de la loi pr\u00e9cit\u00e9e du 14 f\u00e9vrier 1955 .": { + "action": [ + "autoriser l ' usage d ' un num\u00e9ro de plaque rouge pour des besoins sp\u00e9ciaux autres que ceux vis\u00e9s \u00e0 l ' article 4 , paragraphe 2 , alin\u00e9a 5 de la loi pr\u00e9cit\u00e9e du 14 f\u00e9vrier 1955" + ], + "actor": [ + "le ministre" + ], + "artifact": [ + "un num\u00e9ro de plaque rouge" + ], + "condition": [ + "par d\u00e9cision individuelle et \u00e0 titre exceptionnel", + "vis\u00e9s", + "pour des besoins sp\u00e9ciaux autres que ceux vis\u00e9s \u00e0 l ' article 4 , paragraphe 2 , alin\u00e9a 5 de la loi pr\u00e9cit\u00e9e du 14 f\u00e9vrier 1955" + ], + "modality": [ + "peut" + ], + "reference": [ + "\u00e0 l ' article 4 , paragraphe 2 , alin\u00e9a 5 de la loi pr\u00e9cit\u00e9e du 14 f\u00e9vrier 1955" + ] + }, + "si , \u00e0 cet effet , la mise hors service du frein est n\u00e9cessaire , celle-ci doit prendre automatiquement fin d\u00e8s que le v\u00e9hicule reprend sa marche normale .": { + "action": [ + "prendre automatiquement fin" + ], + "actor": [ + "le v\u00e9hicule" + ], + "artifact": [ + "le frein" + ], + "condition": [ + "si", + "du frein" + ], + "modality": [ + "doit" + ], + "time": [ + "le v\u00e9hicule", + "sa marche normale" + ] + }, + "les sous-cat\u00e9gories du mod\u00e8le 7 indiquent que le stationnement ou le parcage sont \u00e0 dur\u00e9e limit\u00e9e .": { + "actor": [ + "le mod\u00e8le 7" + ], + "condition": [ + "\u00e0 dur\u00e9e limit\u00e9e" + ], + "reference": [ + "le mod\u00e8le 7" + ], + "time": [ + "dur\u00e9e limit\u00e9e" + ] + }, + "les \u00e9quipements de contr\u00f4le n\u00e9cessaires d\u00e9pendent des cat\u00e9gories de v\u00e9hicule routier \u00e0 contr\u00f4ler d\u00e9crites dans le tableau i .": { + "artifact": [ + "les \u00e9quipements de contr\u00f4le n\u00e9cessaires", + "cat\u00e9gories de v\u00e9hicule routier \u00e0 contr\u00f4ler d\u00e9crites dans le tableau i" + ], + "condition": [ + "des cat\u00e9gories de v\u00e9hicule routier \u00e0 contr\u00f4ler d\u00e9crites dans le tableau i" + ], + "modality": [ + "d\u00e9pendent" + ], + "reference": [ + "le tableau i" + ] + }, + "la configuration du symbole peut varier selon l ' emplacement de la voie de d\u00e9tresse par rapport \u00e0 la voie publique o\u00f9 le signal est pos\u00e9 .": { + "action": [ + "varier selon l ' emplacement de la voie de d\u00e9tresse par rapport \u00e0 la voie publique o\u00f9 le signal est pos\u00e9", + "est pos\u00e9" + ], + "actor": [ + "la configuration du symbole" + ], + "artifact": [ + "le symbole", + "la voie de d\u00e9tresse", + "le signal" + ], + "condition": [ + "selon l ' emplacement de la voie de d\u00e9tresse par rapport \u00e0 la voie publique o\u00f9 le signal est pos\u00e9" + ], + "location": [ + "l ' emplacement de la voie de d\u00e9tresse par rapport \u00e0 la voie publique o\u00f9 le signal est pos\u00e9" + ], + "modality": [ + "peut" + ] + }, + "les cours pratiques sont subdivis\u00e9s en quatre unit\u00e9s d ' instruction .": { + "action": [ + "sont subdivis\u00e9s" + ], + "actor": [ + "les cours pratiques" + ], + "artifact": [ + "quatre unit\u00e9s d ' instruction" + ] + }, + "les contr\u00f4les , inspections et essais prescrits doivent \u00eatre ex\u00e9cut\u00e9s conform\u00e9ment aux dispositions aff\u00e9rentes pr\u00e9vues \u00e0 l ' annexe ii .": { + "condition": [ + "conform\u00e9ment aux dispositions aff\u00e9rentes pr\u00e9vues \u00e0 l ' annexe ii" + ], + "modality": [ + "doivent" + ], + "reference": [ + "l ' annexe ii" + ] + }, + "les contr\u00f4les sur route portent , d ' une mani\u00e8re g\u00e9n\u00e9rale , sur les \u00e9l\u00e9ments suivants .": { + "artifact": [ + "les \u00e9l\u00e9ments suivants" + ] + }, + "les dispositions du pr\u00e9sent paragraphe ne s ' appliquent pas .": { + "action": [ + "ne s ' appliquent" + ], + "artifact": [ + "les dispositions du pr\u00e9sent paragraphe" + ], + "modality": [ + "ne s ' appliquent" + ], + "reference": [ + "les dispositions du pr\u00e9sent paragraphe" + ] + }, + "ces donn\u00e9es sont introduites dans le syst\u00e8me par l ' organisme de contr\u00f4le technique ayant proc\u00e9d\u00e9 aux op\u00e9rations de contr\u00f4le technique routier .": { + "action": [ + "sont introduites" + ], + "actor": [ + "l ' organisme de contr\u00f4le technique ayant proc\u00e9d\u00e9 aux op\u00e9rations de contr\u00f4le technique routier" + ], + "artifact": [ + "ces donn\u00e9es" + ], + "condition": [ + "par l ' organisme de contr\u00f4le technique ayant proc\u00e9d\u00e9 aux op\u00e9rations de contr\u00f4le technique routier" + ] + }, + "les infractions aux dispositions du pr\u00e9sent r\u00e8glement sont punies conform\u00e9ment aux dispositions de l ' article 7 modifi\u00e9 de la loi du 14 f\u00e9vrier 1955 concernant la circulation sur toutes les voies publiques , tel que cet article a \u00e9t\u00e9 amend\u00e9 par la loi du 13 juin 1994 relative au r\u00e9gime des peines .": { + "action": [ + "sont punies" + ], + "artifact": [ + "les infractions aux dispositions du pr\u00e9sent r\u00e8glement" + ], + "condition": [ + "aux dispositions du pr\u00e9sent r\u00e8glement", + "concernant" + ], + "location": [ + "toutes les voies publiques" + ], + "reference": [ + "l ' article 7 modifi\u00e9 de la loi du 14 f\u00e9vrier 1955 concernant la circulation sur toutes les voies publiques , tel que cet article a \u00e9t\u00e9 amend\u00e9 par la loi du 13 juin 1994 relative au r\u00e9gime des peines", + "cet article", + "par la loi du 13 juin 1994 relative au r\u00e9gime des peines" + ] + }, + "la liquidation des frais d ' enl\u00e8vement dus aux d\u00e9panneurs se fait \u00e0 la diligence de la police grand-ducale suivant la proc\u00e9dure pr\u00e9vue pour la liquidation des frais de justice et par imputation sur les cr\u00e9dits aff\u00e9rents du minist\u00e8re de la justice .": { + "action": [ + "se fait", + "pr\u00e9vue pour la liquidation des frais de justice et par imputation sur les cr\u00e9dits aff\u00e9rents du minist\u00e8re de la justice" + ], + "actor": [ + "la police grand-ducale", + "les d\u00e9panneurs" + ], + "artifact": [ + "les frais d ' enl\u00e8vement dus aux d\u00e9panneurs", + "les frais de justice", + "les cr\u00e9dits aff\u00e9rents du minist\u00e8re de la justice" + ], + "condition": [ + "des frais d ' enl\u00e8vement dus aux d\u00e9panneurs", + "pr\u00e9vue", + "dus", + "suivant la proc\u00e9dure pr\u00e9vue pour la liquidation des frais de justice et par imputation sur les cr\u00e9dits aff\u00e9rents du minist\u00e8re de la justice" + ], + "modality": [ + "se fait" + ] + }, + "les documents \u00e0 produire en vertu des dispositions du pr\u00e9sent article ainsi que de celles des articles 11 et 12 doivent permettre l ' identification du v\u00e9hicule vis\u00e9 par son num\u00e9ro d ' identification , pour autant que le v\u00e9hicule en soit pourvu , ainsi que l ' identification , pour les personnes physiques concern\u00e9es par les op\u00e9rations vis\u00e9es , par leur num\u00e9ro d ' identification pr\u00e9vu par la loi du 19 juin 2013 relative \u00e0 l ' identification des personnes physiques et , pour les personnes morales concern\u00e9es par ces op\u00e9rations , par leur num\u00e9ro d ' identit\u00e9 pr\u00e9vu par la loi modifi\u00e9e du 30 mars 1979 organisant l ' identification num\u00e9rique des personnes physiques et morales .": { + "action": [ + "produire en vertu des dispositions du pr\u00e9sent article ainsi que de celles des articles 11 et 12" + ], + "actor": [ + "les personnes physiques concern\u00e9es par les op\u00e9rations vis\u00e9es", + "les personnes morales concern\u00e9es par ces op\u00e9rations" + ], + "artifact": [ + "les documents \u00e0 produire en vertu des dispositions du pr\u00e9sent article ainsi que de celles des articles 11 et 12", + "le v\u00e9hicule vis\u00e9 par son num\u00e9ro d ' identification", + "le v\u00e9hicule" + ], + "condition": [ + "\u00e0 produire en vertu des dispositions du pr\u00e9sent article ainsi que de celles des articles 11 et 12", + "vis\u00e9", + "concern\u00e9es", + "pr\u00e9vu", + "organisant" + ], + "modality": [ + "doivent" + ], + "reference": [ + "les dispositions du pr\u00e9sent article", + "les articles 11 et 12", + "la loi du 19 juin 2013 relative \u00e0 l ' identification des personnes physiques", + "la loi modifi\u00e9e du 30 mars 1979 organisant l ' identification num\u00e9rique des personnes physiques et morales" + ] + }, + "toutefois , pour les motocycles d ' une cylindr\u00e9e d\u00e9passant 125 cm3 , il suffit d ' un seul feu-stop r\u00e9pondant aux conditions du pr\u00e9sent alin\u00e9a .": { + "action": [ + "r\u00e9pondant aux conditions du pr\u00e9sent alin\u00e9a" + ], + "artifact": [ + "les motocycles d ' une cylindr\u00e9e d\u00e9passant 125 cm3", + "un seul feu-stop r\u00e9pondant aux conditions du pr\u00e9sent alin\u00e9a" + ], + "condition": [ + "pour les motocycles d ' une cylindr\u00e9e d\u00e9passant 125 cm3", + "r\u00e9pondant", + "d\u00e9passant", + "d ' un seul feu-stop r\u00e9pondant aux conditions du pr\u00e9sent alin\u00e9a" + ], + "modality": [ + "il suffit" + ], + "reference": [ + "du pr\u00e9sent alin\u00e9a" + ] + }, + "le pr\u00e9sent r\u00e8glement sera publi\u00e9 au m\u00e9morial et entrera en vigueur le 15 avril 1988 .": { + "action": [ + "sera publi\u00e9", + "entrera en vigueur" + ], + "actor": [ + "le pr\u00e9sent r\u00e8glement" + ], + "artifact": [ + "le m\u00e9morial" + ], + "location": [ + "le m\u00e9morial" + ], + "modality": [ + "sera publi\u00e9" + ], + "time": [ + "le 15 avril 1988" + ] + }, + "les v\u00e9hicules destin\u00e9s \u00e0 la location sans chauffeur ne sont pas soumis aux dispositions des articles 56bis et 56ter .": { + "action": [ + "ne sont pas soumis" + ], + "actor": [ + "les v\u00e9hicules destin\u00e9s \u00e0 la location sans chauffeur" + ], + "condition": [ + "\u00e0 la location sans chauffeur" + ], + "modality": [ + "ne sont pas soumis" + ], + "reference": [ + "aux dispositions des articles 56bis et 56ter" + ] + }, + "la commission consultative se compose de deux repr\u00e9sentants propos\u00e9s par le ministre .": { + "action": [ + "se compose", + "propos\u00e9s par le ministre" + ], + "actor": [ + "la commission consultative", + "le ministre" + ], + "artifact": [ + "deux repr\u00e9sentants propos\u00e9s par le ministre" + ] + }, + "la commission consultative se compose de un repr\u00e9sentant propos\u00e9 par le ministre ayant la formation professionnelle dans ses attributions .": { + "action": [ + "se compose" + ], + "actor": [ + "la commission consultative", + "un repr\u00e9sentant propos\u00e9 par le ministre ayant la formation professionnelle dans ses attributions", + "le ministre ayant la formation professionnelle dans ses attributions" + ], + "condition": [ + "de un repr\u00e9sentant propos\u00e9 par le ministre ayant la formation professionnelle dans ses attributions" + ] + }, + "la commission consultative se compose de un repr\u00e9sentant des centres de formation .": { + "action": [ + "se compose" + ], + "actor": [ + "la commission consultative", + "un repr\u00e9sentant des centres de formation" + ], + "artifact": [ + "centres de formation" + ] + }, + "pour les voies ci-apr\u00e8s , l ' acc\u00e8s est interdit aux conducteurs de v\u00e9hicules dans le sens indiqu\u00e9 .": { + "action": [ + "est interdit" + ], + "actor": [ + "les conducteurs de v\u00e9hicules" + ], + "artifact": [ + "les voies ci-apr\u00e8s" + ], + "condition": [ + "dans le sens indiqu\u00e9" + ], + "location": [ + "les voies ci-apr\u00e8s" + ] + }, + "cette prescription ne s ' applique ni aux v\u00e9hicules dont le moteur en marche assure le fonctionnement d ' appareils install\u00e9s sur le v\u00e9hicule , ni aux v\u00e9hicules dont le conducteur assure une distribution de porte \u00e0 porte , sous r\u00e9serve toutefois d ' observer les prescriptions du premier alin\u00e9a .": { + "action": [ + "install\u00e9s sur le v\u00e9hicule", + "observer les prescriptions du premier alin\u00e9a" + ], + "actor": [ + "les v\u00e9hicules dont le moteur en marche assure le fonctionnement d ' appareils install\u00e9s sur le v\u00e9hicule", + "les v\u00e9hicules dont le conducteur assure une distribution de porte \u00e0 porte , sous r\u00e9serve toutefois d ' observer les prescriptions du premier alin\u00e9a", + "le conducteur" + ], + "artifact": [ + "le moteur en marche", + "appareils install\u00e9s sur le v\u00e9hicule", + "le v\u00e9hicule" + ], + "condition": [ + "aux v\u00e9hicules dont le moteur en marche assure le fonctionnement d ' appareils install\u00e9s sur le v\u00e9hicule", + "install\u00e9s", + "aux v\u00e9hicules dont le conducteur assure une distribution de porte \u00e0 porte , sous r\u00e9serve toutefois d ' observer les prescriptions du premier alin\u00e9a" + ], + "modality": [ + "ne s ' applique" + ], + "reference": [ + "le premier alin\u00e9a" + ] + }, + "ce feu doit s ' allumer lorsque le frein sur la roue arri\u00e8re est actionn\u00e9 .": { + "action": [ + "s ' allumer", + "est actionn\u00e9" + ], + "artifact": [ + "ce feu", + "le frein sur la roue arri\u00e8re" + ], + "location": [ + "la roue arri\u00e8re" + ], + "modality": [ + "doit" + ] + }, + "l ' int\u00e9ress\u00e9 auquel est attribu\u00e9e la licence d ' exploitation de taxi doit commencer le service de taxis dans un d\u00e9lai de deux mois \u00e0 compter de la d\u00e9livrance de la licence d ' exploitation de taxi ou de la date de livraison du taxi z\u00e9ro \u00e9missions indiqu\u00e9e au ministre dans la demande .": { + "action": [ + "commencer le service de taxis dans un d\u00e9lai de deux mois \u00e0 compter de la d\u00e9livrance de la licence d ' exploitation de taxi ou de la date de livraison du taxi z\u00e9ro \u00e9missions indiqu\u00e9e au ministre dans la demande" + ], + "actor": [ + "l ' int\u00e9ress\u00e9 \u00e0 lequel est attribu\u00e9e la licence d ' exploitation de taxi" + ], + "artifact": [ + "la licence d ' exploitation de taxi", + "le taxi z\u00e9ro \u00e9missions" + ], + "modality": [ + "doit" + ], + "reference": [ + "dans la demande" + ], + "time": [ + "un d\u00e9lai de deux mois \u00e0 compter de la d\u00e9livrance de la licence d ' exploitation de taxi ou de la date de livraison du taxi z\u00e9ro \u00e9missions indiqu\u00e9e au ministre dans la demande", + "la date de livraison du taxi z\u00e9ro \u00e9missions indiqu\u00e9e au ministre dans la demande" + ] + }, + "les r\u00e9servoirs \u00e0 air des freins \u00e0 commande pneumatique dont sont \u00e9quip\u00e9s les autobus , les autocars et les v\u00e9hicules automoteurs destin\u00e9s au transport de choses , doivent avoir des dimensions telles qu ' apr\u00e8s le nombre de freinages indiqu\u00e9 ci-apr\u00e8s la pression dans les r\u00e9servoirs ne doit pas \u00eatre inf\u00e9rieure \u00e0 la moiti\u00e9 de la pression initiale .": { + "action": [ + "sont \u00e9quip\u00e9s", + "\u00eatre inf\u00e9rieure \u00e0 la moiti\u00e9 de la pression initiale" + ], + "actor": [ + "les r\u00e9servoirs \u00e0 air des freins \u00e0 commande pneumatique dont sont \u00e9quip\u00e9s les autobus , les autocars et les v\u00e9hicules automoteurs destin\u00e9s au transport de choses", + "les autobus , les autocars et les v\u00e9hicules automoteurs destin\u00e9s au transport de choses", + "la pression dans les r\u00e9servoirs" + ], + "artifact": [ + "les r\u00e9servoirs \u00e0 air des freins \u00e0 commande pneumatique dont sont \u00e9quip\u00e9s les autobus , les autocars et les v\u00e9hicules automoteurs destin\u00e9s au transport de choses" + ], + "condition": [ + "destin\u00e9s", + "apr\u00e8s le nombre de freinages indiqu\u00e9 ci-apr\u00e8s", + "indiqu\u00e9 ci-apr\u00e8s", + "\u00e0 la moiti\u00e9 de la pression initiale", + "qu ' apr\u00e8s le nombre de freinages indiqu\u00e9 ci-apr\u00e8s", + "dans les r\u00e9servoirs" + ], + "modality": [ + "ne doit", + "doivent" + ] + }, + "tout conducteur doit conduire de fa\u00e7on \u00e0 rester constamment ma\u00eetre de son v\u00e9hicule ou de ses animaux .": { + "action": [ + "conduire de fa\u00e7on \u00e0 rester constamment ma\u00eetre de son v\u00e9hicule ou de ses animaux" + ], + "actor": [ + "tout conducteur" + ], + "artifact": [ + "son v\u00e9hicule", + "ses animaux" + ], + "condition": [ + "de fa\u00e7on \u00e0 rester constamment ma\u00eetre de son v\u00e9hicule ou de ses animaux" + ], + "modality": [ + "doit" + ] + }, + "le signe distinctif particulier et la plaque sp\u00e9ciale ainsi que leurs supports r\u00e9pondent aux prescriptions fix\u00e9es par r\u00e8glement minist\u00e9riel qui d\u00e9termine .": { + "artifact": [ + "le signe distinctif particulier et la plaque sp\u00e9ciale ainsi que leurs supports", + "la plaque sp\u00e9ciale", + "leurs supports" + ], + "condition": [ + "aux prescriptions fix\u00e9es par r\u00e8glement minist\u00e9riel qui d\u00e9termine" + ], + "reference": [ + "par r\u00e8glement minist\u00e9riel qui d\u00e9termine" + ] + }, + "cette disposition est indiqu\u00e9e par le signal c , 14 portant l ' inscription 30 .": { + "action": [ + "est indiqu\u00e9e" + ], + "actor": [ + "cette disposition" + ], + "artifact": [ + "le signal c , 14 portant l ' inscription 30" + ] + }, + "tout motocycle doit \u00eatre \u00e9quip\u00e9 de deux dispositifs de freinage ind\u00e9pendants , dont l ' un doit agir sur la ou les roues avant et l ' autre sur la ou les roues arri\u00e8re .": { + "action": [ + "\u00eatre \u00e9quip\u00e9", + "agir sur la ou les roues avant" + ], + "actor": [ + "tout motocycle" + ], + "artifact": [ + "deux dispositifs de freinage ind\u00e9pendants , dont l ' un doit agir sur la ou les roues avant et l ' autre sur la ou les roues arri\u00e8re", + "les roues avant", + "les roues arri\u00e8re" + ], + "modality": [ + "doit" + ] + }, + "par d\u00e9rogation aux dispositions du deuxi\u00e8me alin\u00e9a du paragraphe 1er de l ' article 87 , les permis de conduire des cat\u00e9gories a , a1 , a2 , am , b , be et f , d\u00e9livr\u00e9s avant le 1er septembre 2015 et dont le titulaire est \u00e2g\u00e9 d ' au moins 70 ans , expirent \u00e0 la date limite y inscrite .": { + "actor": [ + "le titulaire" + ], + "artifact": [ + "les cat\u00e9gories a , a1 , a2 , am , b , be et f" + ], + "condition": [ + "avant le 1er septembre 2015", + "y inscrite", + "dont le titulaire est \u00e2g\u00e9 d ' au moins 70 ans" + ], + "reference": [ + "les dispositions du deuxi\u00e8me alin\u00e9a du paragraphe 1er de l ' article 87" + ], + "time": [ + "le 1er septembre 2015", + "la date limite y inscrite" + ] + }, + "l ' op\u00e9rateur \u00e9conomique s ' assure que toutes les mesures correctives appropri\u00e9es sont prises pour les \u00e9quipements sous pression transportables qu ' il a mis \u00e0 disposition sur le march\u00e9 de l ' union europ\u00e9enne .": { + "action": [ + "s ' assure", + "sont prises", + "il a mis" + ], + "actor": [ + "l ' op\u00e9rateur \u00e9conomique" + ], + "artifact": [ + "toutes les mesures correctives appropri\u00e9es", + "les \u00e9quipements sous pression transportables qu ' il a mis \u00e0 disposition sur le march\u00e9 de l ' union europ\u00e9enne" + ], + "condition": [ + "pour les \u00e9quipements sous pression transportables qu ' il a mis \u00e0 disposition sur le march\u00e9 de l ' union europ\u00e9enne" + ], + "location": [ + "le march\u00e9 de l ' union europ\u00e9enne" + ] + }, + "le signal e , 21f indique le num\u00e9ro d ' identification d ' un itin\u00e9raire cyclable du r\u00e9seau cyclable national .": { + "actor": [ + "le signal e , 21f" + ], + "artifact": [ + "le num\u00e9ro d ' identification d ' un itin\u00e9raire cyclable du r\u00e9seau cyclable national" + ], + "location": [ + "le r\u00e9seau cyclable national" + ] + }, + "si celui qui cr\u00e9e un chantier reste en d\u00e9faut de mettre la signalisation en place conform\u00e9ment aux prescriptions , il y est suppl\u00e9\u00e9 aux frais du d\u00e9faillant .": { + "action": [ + "mettre la signalisation en place", + "il y est suppl\u00e9\u00e9" + ], + "actor": [ + "celui qui cr\u00e9e un chantier", + "le d\u00e9faillant" + ], + "artifact": [ + "la signalisation" + ], + "condition": [ + "en d\u00e9faut de mettre la signalisation en place conform\u00e9ment aux prescriptions" + ], + "location": [ + "un chantier" + ], + "modality": [ + "il y est suppl\u00e9\u00e9" + ], + "reference": [ + "aux prescriptions" + ] + }, + "le signal h , 2 , dont les illustrations ci-dessus sont des exemples , indique la fin d ' une zone form\u00e9e d ' un ensemble de voies et places soumises aux dispositions r\u00e9glementaires qu ' indiquent le ou les signaux qu ' il porte .": { + "actor": [ + "le signal h , 2 , dont les illustrations ci-dessus sont des exemples" + ], + "artifact": [ + "une zone form\u00e9e d ' un ensemble de voies et places soumises aux dispositions r\u00e9glementaires qu ' indiquent le ou les signaux qu ' il porte", + "un ensemble de voies et places soumises aux dispositions r\u00e9glementaires qu ' indiquent le ou les signaux qu ' il porte", + "les signaux qu '" + ], + "condition": [ + "dont les illustrations ci-dessus sont des exemples", + "form\u00e9e", + "soumises" + ], + "reference": [ + "aux dispositions r\u00e9glementaires qu ' indiquent le ou les signaux qu ' il porte" + ], + "time": [ + "la fin d ' une zone form\u00e9e d ' un ensemble de voies et places soumises aux dispositions r\u00e9glementaires qu ' indiquent le ou les signaux qu ' il porte" + ] + }, + "les endroits ci-apr\u00e8s sont consid\u00e9r\u00e9s comme places de parcage r\u00e9serv\u00e9es aux cycles pour une dur\u00e9e maximale de 48 heures .": { + "action": [ + "sont consid\u00e9r\u00e9s" + ], + "artifact": [ + "places de parcage r\u00e9serv\u00e9es aux cycles pour une dur\u00e9e maximale de 48 heures" + ], + "location": [ + "les endroits ci-apr\u00e8s" + ], + "time": [ + "une dur\u00e9e maximale de 48 heures" + ] + }, + "la distance entre le sol et le bord sup\u00e9rieur de la plage \u00e9clairante de tout indicateur de direction ne doit pas d\u00e9passer 1500 mm .": { + "artifact": [ + "le sol", + "le bord sup\u00e9rieur de la plage \u00e9clairante de tout indicateur de direction" + ], + "modality": [ + "ne doit pas" + ] + }, + "toutefois , si l ' ensemble des v\u00e9hicules coupl\u00e9s est compos\u00e9 de deux v\u00e9hicules automoteurs , le v\u00e9hicule remorqu\u00e9 doit avoir \u00e9galement un conducteur , \u00e0 moins que la direction du v\u00e9hicule remorqu\u00e9 ne soit assur\u00e9e par le v\u00e9hicule tracteur .": { + "action": [ + "est compos\u00e9", + "avoir \u00e9galement un conducteur", + "ne soit assur\u00e9e" + ], + "actor": [ + "l ' ensemble des v\u00e9hicules coupl\u00e9s", + "deux v\u00e9hicules automoteurs", + "le v\u00e9hicule remorqu\u00e9", + "un conducteur", + "le v\u00e9hicule tracteur" + ], + "artifact": [ + "deux v\u00e9hicules automoteurs", + "le v\u00e9hicule remorqu\u00e9", + "le v\u00e9hicule tracteur" + ], + "condition": [ + "si", + "des v\u00e9hicules coupl\u00e9s", + "de deux v\u00e9hicules automoteurs", + "du v\u00e9hicule remorqu\u00e9", + "par le v\u00e9hicule tracteur" + ], + "modality": [ + "doit", + "ne soit assur\u00e9e" + ] + }, + "par ailleurs une nouvelle vignette peut \u00eatre appos\u00e9e sur un taxim\u00e8tre en cas de d\u00e9gradation accidentelle de la vignette dont ce taxim\u00e8tre est pourvu , \u00e0 condition que l ' installateur b\u00e9n\u00e9ficiant d ' un agr\u00e9ment par le fabricant de taxim\u00e8tre pour le taxim\u00e8tre en question se soit assur\u00e9 qu ' il n ' y a pas de doute sur la raison de la d\u00e9gradation en question .": { + "action": [ + "\u00eatre appos\u00e9e" + ], + "actor": [ + "l ' installateur b\u00e9n\u00e9ficiant d ' un agr\u00e9ment par le fabricant de taxim\u00e8tre pour le taxim\u00e8tre en question" + ], + "artifact": [ + "une nouvelle vignette", + "un taxim\u00e8tre", + "ce taxim\u00e8tre", + "le taxim\u00e8tre en question" + ], + "condition": [ + "d ' un agr\u00e9ment par le fabricant de taxim\u00e8tre pour le taxim\u00e8tre en question", + "qu '", + "sur la raison de la d\u00e9gradation en question" + ], + "modality": [ + "peut" + ] + }, + "il en est de m\u00eame pour les candidats pr\u00e9sentant des troubles comportementaux graves dus \u00e0 la s\u00e9nescence ou des troubles majeurs de la capacit\u00e9 de jugement , du comportement ou de l ' adaptation li\u00e9s \u00e0 la personnalit\u00e9 .": { + "action": [ + "pr\u00e9sentant des troubles comportementaux graves dus \u00e0 la s\u00e9nescence ou des troubles majeurs de la capacit\u00e9 de jugement , du comportement ou de l ' adaptation li\u00e9s \u00e0 la personnalit\u00e9" + ], + "actor": [ + "les candidats pr\u00e9sentant des troubles comportementaux graves dus \u00e0 la s\u00e9nescence ou des troubles majeurs de la capacit\u00e9 de jugement , du comportement ou de l ' adaptation li\u00e9s \u00e0 la personnalit\u00e9" + ], + "artifact": [ + "des troubles comportementaux graves dus \u00e0 la s\u00e9nescence ou des troubles majeurs de la capacit\u00e9 de jugement , du comportement ou de l ' adaptation li\u00e9s \u00e0 la personnalit\u00e9", + "des troubles majeurs de la capacit\u00e9 de jugement , du comportement ou de l ' adaptation li\u00e9s \u00e0 la personnalit\u00e9", + "le comportement", + "l ' adaptation", + "la personnalit\u00e9" + ], + "condition": [ + "pour les candidats pr\u00e9sentant des troubles comportementaux graves dus \u00e0 la s\u00e9nescence ou des troubles majeurs de la capacit\u00e9 de jugement , du comportement ou de l ' adaptation li\u00e9s \u00e0 la personnalit\u00e9" + ] + }, + "le pr\u00e9sent r\u00e8glement minist\u00e9riel sera publi\u00e9 au m\u00e9morial .": { + "action": [ + "sera publi\u00e9" + ], + "actor": [ + "le pr\u00e9sent r\u00e8glement minist\u00e9riel" + ], + "artifact": [ + "le pr\u00e9sent r\u00e8glement minist\u00e9riel" + ], + "location": [ + "le m\u00e9morial" + ], + "modality": [ + "sera publi\u00e9" + ] + }, + "le certificat m\u00e9dical doit \u00eatre conforme au mod\u00e8le figurant en annexe du pr\u00e9sent r\u00e8glement .": { + "action": [ + "\u00eatre conforme au mod\u00e8le figurant en annexe du pr\u00e9sent r\u00e8glement" + ], + "actor": [ + "le certificat m\u00e9dical" + ], + "artifact": [ + "le mod\u00e8le figurant en annexe du pr\u00e9sent r\u00e8glement" + ], + "condition": [ + "au mod\u00e8le figurant en annexe du pr\u00e9sent r\u00e8glement" + ], + "modality": [ + "doit" + ], + "reference": [ + "en annexe du pr\u00e9sent r\u00e8glement" + ] + } +} \ No newline at end of file diff --git a/results/BERT/performance.png b/results/Hybrid/performance.png similarity index 100% rename from results/BERT/performance.png rename to results/Hybrid/performance.png diff --git a/test.py b/test.py new file mode 100644 index 0000000000000000000000000000000000000000..356d6babc6cf91332a5b69fd09b822a4094ab52f --- /dev/null +++ b/test.py @@ -0,0 +1,31 @@ +def separate_intervals(data): + # Trier la liste + sorted_data = sorted(data, key=lambda x: int(x.split('.')[-1])) + + separated_intervals = [] + current_interval = [sorted_data[0]] + + for i in range(1, len(sorted_data)): + current_value = int(sorted_data[i].split('.')[-1]) + previous_value = int(current_interval[-1].split('.')[-1]) + + if current_value == previous_value + 1: + current_interval.append(sorted_data[i]) + else: + separated_intervals.append(current_interval) + current_interval = [sorted_data[i]] + + separated_intervals.append(current_interval) # Ajouter le dernier intervalle + + return separated_intervals + +def main(): + # Exemple d'utilisation + data = ['265.0.10'] + separated_intervals = separate_intervals(data) + + for interval in separated_intervals: + print(interval) + +if __name__ == "__main__": + main() \ No newline at end of file