Buone pratiche per l'annotazione di documenti legali
Come annotare documenti legali in Potato, tra contratti, atti giudiziari e testi normativi: etichettatura di span, estrazione di entità e deployment self-hosted attento alla privacy.
Il testo legale è un problema di annotazione a sé. La struttura è densa, il lessico è specialistico e un'etichetta sbagliata può avere conseguenze legali concrete. Questa guida spiega come affrontarlo per bene.
Perché l'annotazione legale è difficile
Già solo il gergo impone di lavorare con annotatori formati, non con crowd worker presi a caso. I documenti sono lunghi, con contratti che a volte arrivano a centinaia di pagine, e le sezioni rimandano di continuo ad altre sezioni. La precisione conta più del solito, perché uno span impreciso può cambiare il senso di una clausola. E buona parte di quel senso dipende dal tipo di documento e dalla giurisdizione, quindi il contesto non è mai facoltativo.
Per i meccanismi di base dell'annotazione a span e su testo, vedi la documentazione sorgente.
Segmentazione dei documenti
Suddividere documenti lunghi
{
"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"
}Annotazione a livello di sezione
instance_display:
fields:
- key: section_title
type: text
- key: text
type: textRiconoscimento di entità legali
Entità specifiche dei contratti
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"Individuare gli obblighi
- 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
- BoilerplateClassificazione delle clausole
Tipi di clausola contrattuale
- 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: 20Valutazione del rischio
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"Annotazione di atti giudiziari
Estrazione delle informazioni sul caso
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
Struttura argomentativa
keyword_highlights_file: data/legal_terms.csvEvidenziare i termini legali
keyword_highlight_settings:
keyword_probability: 0.8 # show 80% of matched keywords
random_word_probability: 0.05 # highlight ~5% of other words as distractorsControllo qualità in ambito legale
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: trueConfigurazione completa per l'annotazione legale
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_outputScrivere le linee guida per gli annotatori
Delle buone linee guida per un task legale chiariscono l'ambito (quali documenti, quali giurisdizioni) e includono un glossario, così gli annotatori leggono i termini nel tuo stesso modo. Sii esplicito sul linguaggio ambiguo e su quando un rimando incrociato va annotato e quando invece va ignorato. E stabilisci cosa conta come confine corretto di uno span, perché in questo ambito il «più o meno» quasi mai basta.
Buone pratiche
Usa annotatori che il dominio lo conoscono davvero, perché senza l'etichettatura legale non funziona. Spezza i documenti lunghi in sezioni che una persona riesca a tenere a mente. Evidenzia il linguaggio legale che pesa, così nessuno lo scorre distrattamente. Tieni alta la ridondanza, visto che un errore costa caro. Aggiungi uno strato di revisione esperta in cui sono gli avvocati a gestire i casi limite. Definisci ogni etichetta con precisione. E dai agli annotatori la struttura intorno e le sezioni collegate, perché una clausola isolata può trarre in inganno.
Documentazione completa su Schemi di Annotazione.