Skip to content
Guides6 min de lecture

Bonnes pratiques d'annotation de documents juridiques

Annotez des documents juridiques dans Potato, contrats, dépôts judiciaires et textes réglementaires, avec étiquetage de spans, extraction d'entités et déploiement auto-hébergé respectueux de la confidentialité.

Potato Team

Le texte juridique constitue un problème d'annotation à part entière. La structure est complexe, le vocabulaire est spécialisé, et une erreur d'étiquetage peut avoir de réelles conséquences juridiques. Ce guide explique comment bien l'annoter.

Ce qui rend l'annotation juridique difficile

Le jargon à lui seul impose de recourir à des annotateurs formés, et non à des contributeurs choisis au hasard. Les documents sont longs, les contrats s'étendant parfois sur des centaines de pages, et les sections renvoient sans cesse à d'autres sections. La précision compte plus que d'habitude, car un span imprécis peut changer le sens d'une clause. Et une grande partie de ce sens dépend du type de document et de la juridiction, si bien que le contexte n'est jamais optionnel.

Pour les mécanismes sous-jacents d'annotation de spans et de texte, consultez la documentation source.

Segmentation de documents

Découpage de documents longs

json
{
  "id": "contract_001_section_3.2",
  "text": "The Licensor grants to the Licensee a non-exclusive, non-transferable license...",
  "section_number": "3.2",
  "section_title": "License Grant",
  "document_id": "contract_001"
}

Annotation au niveau des sections

yaml
instance_display:
  fields:
    - key: section_title
      type: text
    - key: text
      type: text

Reconnaissance d'entités juridiques

Entités spécifiques aux contrats

yaml
annotation_schemes:
  - annotation_type: span
    name: legal_entities
    description: "Mark the parties, defined terms, dates, amounts and obligations."
    labels:
      - name: PARTY
        color: "#FECACA"
        tooltip: "Contracting parties, including Licensor, Licensee and named companies"
      - name: DEFINED_TERM
        color: "#FDE68A"
        tooltip: "A term given a specific meaning by the definitions section"
      - name: DATE
        color: "#BBF7D0"
        tooltip: "Dates and time periods, including notice and cure periods"
      - name: MONETARY
        color: "#C4B5FD"
        tooltip: "Amounts, fees, penalties and caps"
      - name: OBLIGATION
        color: "#BFDBFE"
        tooltip: "Language creating a duty, such as shall, must or agrees to"
      - name: CONDITION
        color: "#FED7AA"
        tooltip: "Language making a duty conditional, such as if, unless or provided that"
      - name: REFERENCE
        color: "#E0E7FF"
        tooltip: "A cross-reference to another section or document"

Détection des obligations

yaml
  - annotation_type: radio
    name: clause_type
    description: "What type of clause is this?"
    labels:
      - Definitions
      - Grant of rights
      - Consideration and payment
      - Term and termination
      - Representations and warranties
      - Indemnification
      - Limitation of liability
      - Confidentiality
      - Intellectual property
      - Dispute resolution
      - Boilerplate

Classification des clauses

Types de clauses contractuelles

yaml
  - annotation_type: multiselect
    name: obligation_type
    description: "Which kinds of obligation does this clause create?"
    labels:
      - Performance
      - Payment
      - Restriction
      - Conditional obligation
      - Warranty
 
  - annotation_type: likert
    name: risk
    description: "How much risk does this clause carry for the receiving party?"
    size: 5
    min_label: "Low risk"
    max_label: "High risk"
 
  - annotation_type: text
    name: risk_notes
    description: "Explain the risk factors you identified."
    rows: 4
    min_chars: 20

Évaluation des risques

yaml
annotation_schemes:
  - annotation_type: span
    name: case_entities
    description: "Mark case metadata and the parties to the proceeding."
    labels:
      - name: CASE_NUMBER
        tooltip: "The docket or case identifier"
      - name: COURT
        tooltip: "Court name and jurisdiction"
      - name: JUDGE
      - name: PLAINTIFF
      - name: DEFENDANT
      - name: ATTORNEY
      - name: LEGAL_CITATION
        tooltip: "Citations to cases, statutes and regulations"
      - name: RULING
 
  - annotation_type: span
    name: argument_structure
    description: "Mark the claim, its support, and the court's conclusion."
    labels:
      - name: CLAIM
        color: "#FECACA"
      - name: PREMISE
        color: "#BBF7D0"
      - name: EVIDENCE
        color: "#BFDBFE"
      - name: REBUTTAL
        color: "#FED7AA"
      - name: CONCLUSION
        color: "#E0E7FF"

Annotation de documents judiciaires

Extraction des informations de l'affaire

text
keyword,label,schema,color
shall,OBLIGATION,legal_entities,#FEE2E2
must,OBLIGATION,legal_entities,#FEE2E2
agrees to,OBLIGATION,legal_entities,#FEE2E2
may,permission,legal_entities,#D1FAE5
unless,CONDITION,legal_entities,#DBEAFE
provided that,CONDITION,legal_entities,#DBEAFE
notwithstand*,CONDITION,legal_entities,#DBEAFE

Structure de l'argumentation

yaml
keyword_highlights_file: data/legal_terms.csv

Surlignage des termes juridiques

yaml
keyword_highlight_settings:
  keyword_probability: 0.8       # show 80% of matched keywords
  random_word_probability: 0.05  # highlight ~5% of other words as distractors

Contrôle qualité pour le juridique

yaml
num_annotators_per_item: 3
 
gold_standards:
  enabled: true
  items_file: data/gold_clauses.json
  mode: mixed
  frequency: 20
  accuracy:
    min_threshold: 0.85
    evaluation_count: 10
  feedback:
    show_correct_answer: true
    show_explanation: true

Configuration complète d'annotation juridique

yaml
annotation_task_name: "Contract Clause Analysis"
task_description: "Classify contract clauses and mark the entities they refer to."
 
data_files:
  - data/contract_sections.json
 
item_properties:
  id_key: id
  text_key: text
 
instance_display:
  fields:
    - key: section_title
      type: text
    - key: text
      type: text
 
annotation_schemes:
  - annotation_type: radio
    name: clause_type
    description: "What type of clause is this?"
    labels:
      - Grant of rights
      - Consideration and payment
      - Term and termination
      - Indemnification
      - Limitation of liability
      - Confidentiality
      - Other
 
  - annotation_type: span
    name: legal_entities
    description: "Mark the parties, defined terms, dates, amounts and obligations."
    labels:
      - name: PARTY
        color: "#FECACA"
      - name: DEFINED_TERM
        color: "#FDE68A"
      - name: MONETARY
        color: "#C4B5FD"
      - name: DATE
        color: "#BBF7D0"
      - name: OBLIGATION
        color: "#BFDBFE"
 
  - annotation_type: likert
    name: risk
    description: "How much risk does this clause carry for the receiving party?"
    size: 5
    min_label: "Low risk"
    max_label: "High risk"
 
  - annotation_type: text
    name: issues
    description: "Note any unusual or problematic language."
    rows: 4
    min_chars: 20
 
num_annotators_per_item: 3
 
gold_standards:
  enabled: true
  items_file: data/gold_clauses.json
  mode: mixed
  frequency: 20
  accuracy:
    min_threshold: 0.85
    evaluation_count: 10
 
agreement_metrics:
  enabled: true
  min_overlap: 2
 
output_annotation_dir: annotation_output

Rédiger les consignes pour les annotateurs

De bonnes consignes pour une tâche juridique précisent la portée (quels documents, quelles juridictions) et incluent un glossaire afin que les annotateurs interprètent les termes de la même façon que vous. Soyez explicite sur le langage ambigu et sur les cas où une référence croisée doit être annotée plutôt qu'ignorée. Et indiquez ce qui constitue une délimitation de span correcte, car « à peu près » suffit rarement dans ce domaine.

Bonnes pratiques

Faites appel à des annotateurs qui connaissent réellement le domaine, car l'étiquetage juridique ne fonctionne pas sans cela. Découpez les documents longs en sections que l'on peut garder à l'esprit. Surlignez le langage juridique qui pèse, pour qu'il ne soit pas survolé. Maintenez une redondance élevée, car le coût d'une erreur est élevé. Ajoutez une couche de révision experte où des avocats traitent les cas limites. Définissez chaque étiquette avec précision. Et donnez aux annotateurs la structure environnante et les sections connexes, car une clause isolée peut induire en erreur.


Documentation complète sur Schémas d'annotation.