⚖️ Classificatore di Clausole Contrattuali — Segnalazione del Rischio con NLP dal Vivo
Fai passare le clausole di un contratto sintetico attraverso un classificatore NLP che segnala in tempo reale il rischio di indennizzo, risoluzione e responsabilità, evidenziando esattamente quali parole hanno determinato ogni segnalazione.
Informazioni sul Classificatore di Clausole Contrattuali
I team legali che revisionano un lungo contratto commerciale devono individuare la manciata di clausole che comportano davvero un rischio sproporzionato — un indennizzo senza limite massimo, un diritto di risoluzione unilaterale per convenienza, un esonero di responsabilità nascosto nel boilerplate — senza dover leggere ogni sezione di definizioni e ogni clausola di notifica con lo stesso livello di attenzione. Gli strumenti di revisione contrattuale basati su NLP automatizzano questo primo passaggio: leggono ogni clausola, le assegnano un punteggio di rischio, e fanno emergere quelle che superano una soglia perché un avvocato le controlli. Questa simulazione costruisce una versione reale e funzionante di quel primo passaggio, non un'animazione stilizzata.
Dietro le quinte c'è una vera regressione logistica bag-of-words: un vocabolario fisso di circa 45 termini legali, ciascuno con un coefficiente con segno impostato a mano e assegnato a una categoria di indennizzo, risoluzione o responsabilità, combinato con un termine di bias e passato attraverso la funzione sigmoide per produrre una probabilità di rischio tra 0 e 1 per ogni clausola. Poiché il modello è lineare, il contributo di ogni parola al punteggio è esatto e visibile — il pannello del testo evidenziato colora ogni parola in base al suo coefficiente letterale, caldo per i termini che aumentano il rischio come «indemnify» o «uncapped» e freddo per i termini che lo riducono come «cap» o «cure». Scorri un contratto sintetico di 24 clausole clausola per clausola, oppure lascialo scorrere in automatico, e osserva il grafico del rischio a livello di documento e il conteggio delle segnalazioni per categoria costruirsi dal vivo.
Domande frequenti
Come decide effettivamente questa simulazione che una clausola è rischiosa?
Ogni clausola viene tokenizzata in parole minuscole, e ogni token viene cercato in un vocabolario legale fisso di circa 45 termini, ciascuno con un vero coefficiente con segno — ad esempio «indemnify» porta +2.2, «uncapped» porta +2.3, mentre termini che riducono il rischio come «cap» o «cure» portano coefficienti negativi come −1.2 e −0.6. Il punteggio grezzo della clausola è il termine di bias più la somma dei coefficienti di ogni token corrispondente, e quel punteggio grezzo passa attraverso la funzione sigmoide logistica 1/(1+e⁻ᶻ) per produrre un punteggio di rischio simile a una probabilità tra 0 e 1. È una vera regressione logistica bag-of-words, solo con pesi impostati a mano invece che appresi da dati di addestramento etichettati.
Qual è la differenza tra il punteggio bag-of-words e una vera pipeline NLP in produzione?
La regressione logistica bag-of-words, esattamente come mostrata qui, è stato l'approccio dominante alla classificazione del testo per circa due decenni prima del deep learning, e gli strumenti legal-tech leggeri usano ancora oggi TF-IDF più regressione logistica o SVM lineari perché sono veloci, verificabili ed economici su migliaia di documenti. I sistemi di revisione contrattuale in produzione affiancano sempre più spesso un encoder transformer (come un BERT affinato o un LLM del dominio legale), che coglie l'ordine delle parole, la negazione e il contesto che un modello bag-of-words ignora completamente. Questa simulazione mantiene deliberatamente il modello semplice affinché ogni termine che contribuisce resti visibile.
Perché alcune parole come «cap» o «notice» abbassano il punteggio di rischio invece di alzarlo?
Il rischio contrattuale non riguarda solo la presenza di concetti pericolosi, ma se quei concetti sono vincolati. Una clausola di responsabilità che menziona «liability» e «damages» riguarda intrinsecamente la ripartizione del rischio, ma se contiene anche «cap», «capped» o «maximum», segnala che le parti hanno negoziato un tetto massimo, riducendo l'esposizione al ribasso. Allo stesso modo «cure» e periodi di «notice» adeguati in una clausola di risoluzione danno alla controparte la possibilità di risolvere un problema prima che il contratto finisca, il che è nettamente meno rischioso di una risoluzione immediata. Questa simulazione codifica direttamente questa sfumatura come coefficienti negativi su quei token specifici.
Cosa tracciano effettivamente le categorie di indennizzo, risoluzione e responsabilità?
Ogni token del vocabolario è etichettato con una di quattro categorie: indennizzo (indemnify, hold harmless, defend, indemnitee), risoluzione (terminate, convenience, without cause, perpetual), responsabilità (unlimited, uncapped, consequential damages, waive, disclaim) o generale (breach, penalty, forfeit, arbitration). Per ogni clausola la simulazione somma separatamente i coefficienti dei token corrispondenti in ogni categoria, e la categoria con il sottopunteggio positivo più alto diventa il «fattore di rischio primario» mostrato nel pannello evidenziato. Una clausola può ottenere un punteggio complessivo alto pur avendo una categoria chiaramente dominante, il che rispecchia il modo in cui i veri strumenti di revisione contrattuale smistano le clausole segnalate nella coda di lavoro di un avvocato.
Come viene generata la mappa di calore dei token, ed è un'attribuzione reale o solo decorazione?
Poiché il modello è una somma lineare di coefficienti per token, il contributo esatto di un singolo token al punteggio finale è semplicemente il coefficiente di quel token (o coefficiente × conteggio, per token ripetuti) — non serve alcuna approssimazione o spiegazione a posteriori, a differenza di metodi di attribuzione come SHAP o i gradienti integrati richiesti per i modelli non lineari. La mappa di calore rende l'opacità e la tonalità dello sfondo di ogni token direttamente proporzionali al suo coefficiente con segno: colori caldi per i pesi positivi, colori freddi per quelli negativi, grigio neutro per i token senza peso. Quello che vedi è il termine aritmetico letterale nella somma in ingresso alla sigmoide, non un effetto visivo simulato.
Cosa controlla il cursore della soglia di rischio, e come cambia il conteggio delle segnalazioni spostandolo?
Il classificatore produce sempre una probabilità di rischio continua tra 0 e 1 per ogni clausola; il cursore della soglia imposta il limite sopra il quale una clausola viene etichettata «segnalata» anziché «pulita». Abbassare la soglia segnala più clausole (richiamo più alto, più falsi positivi su clausole borderline), mentre alzarla segnala meno clausole, ma più sicuramente rischiose (precisione più alta, ma un rischio reale potrebbe sfuggire senza essere segnalato). È lo stesso compromesso precisione/richiamo che ogni classificatore binario affronta in produzione, e i team legal-tech in genere calibrano questa soglia su un campione etichettato di contratti già revisionati invece di sceglierla arbitrariamente.
Perché il grafico del rischio a livello di documento continua a cambiare forma mentre le clausole vengono elaborate?
Il grafico in tempo reale traccia il punteggio di rischio di ogni clausola nell'ordine in cui vengono elaborate dal classificatore, più una linea di media mobile cumulativa. Poiché il contratto sintetico intreccia deliberatamente clausole standard a basso rischio (definizioni, notifiche, legge applicabile) con clausole ad alto rischio (indennizzo senza limite, risoluzione unilaterale per convenienza), la linea per singola clausola oscilla bruscamente mentre la linea della media mobile appiana quelle oscillazioni e converge verso il profilo di rischio complessivo del documento man mano che si accumulano più clausole.
Un avvocato potrebbe affidarsi in pratica a un modello come questo, o serve solo a scopo illustrativo?
Un modello bag-of-words pesato a mano come questo non è qualcosa che uno studio legale distribuirebbe così com'è — i coefficienti sono stati scelti per chiarezza didattica, non adattati a un dataset etichettato di contratti reali, e il vocabolario è troppo piccolo per catturare l'enorme varietà di formulazioni usate nei contratti reali. In pratica questo tipo di modello lineare viene usato come filtro di triage veloce di primo passaggio, addestrato su migliaia di clausole etichettate da paralegali, posto davanti a un re-ranker basato su transformer più lento ma più accurato che un revisore umano controlla prima che qualcosa venga utilizzato legalmente. Il valore centrale della versione lineare semplice è che ogni segnalazione è completamente spiegabile.
What is the difference between bag-of-words scoring and a real production NLP pipeline?
Bag-of-words logistic regression, exactly as shown here, was the dominant approach to text classification for roughly two decades before deep learning, and lightweight legal-tech tools still use TF-IDF plus logistic regression or linear SVMs today because they are fast, auditable and cheap to run on thousands of documents. Production contract-review systems increasingly layer a transformer encoder (like a fine-tuned BERT or a legal-domain LLM) on top, which captures word order, negation and context that a bag-of-words model misses entirely — for instance it cannot tell "the Vendor shall not be liable" from "the Vendor shall be liable" because "not" is rarely weighted heavily on its own. This simulation deliberately keeps the model simple so every contributing term stays visible.
Why do some words like "cap" or "notice" lower the risk score instead of raising it?
Contract risk is not just about the presence of dangerous concepts — it is about whether those concepts are constrained. A liability clause that mentions "liability" and "damages" is inherently about risk allocation, but if it also contains "cap", "capped" or "maximum", that signals the parties negotiated a ceiling, which meaningfully reduces downside exposure. Similarly "cure" and adequate "notice" periods on a termination clause give the counterparty a chance to fix a problem before the contract ends, which is materially less risky than immediate termination. This simulation encodes that nuance directly as negative coefficients on those specific tokens.
What do the indemnity, termination and liability categories actually track?
Every vocabulary token is tagged with one of four categories: indemnity (indemnify, hold harmless, defend, indemnitee), termination (terminate, convenience, without cause, perpetual), liability (unlimited, uncapped, consequential damages, waive, disclaim) or general (breach, penalty, forfeit, arbitration). For each clause the simulation sums the coefficients of matched tokens separately within each category, and the category with the highest positive subscore becomes that clause's "primary risk driver" tag shown in the highlighted panel. A clause can score high overall while still having a clearly dominant category, which mirrors how real contract-review tools bucket flagged clauses for a lawyer's queue.
How is the token heatmap generated and is it a real attribution, not just decoration?
Because the model is a linear sum of per-token coefficients, the exact contribution of any single token to the final score is just that token's coefficient (or coefficient × count, for repeated tokens) — there is no approximation or post-hoc explanation step needed, unlike attribution methods such as SHAP or integrated gradients that are required for non-linear models. The heatmap renders each token's background opacity and hue directly proportional to its signed coefficient: warm colours for positive (risk-raising) weights, cool colours for negative (risk-reducing) weights, and neutral grey for unweighted tokens. What you see is the literal arithmetic term in the sigmoid's input sum, not a simulated visual effect.
What does the risk threshold slider control, and how does moving it change the flag counts?
The classifier always outputs a continuous risk probability between 0 and 1 for every clause; the threshold slider sets the cutoff above which a clause is labelled "flagged" rather than "clear". Lowering the threshold flags more clauses (higher recall, more false positives on borderline clauses) while raising it flags fewer, more confidently risky clauses (higher precision, but some real risk may slip through unflagged). This is the same precision/recall trade-off every binary classifier faces in production, and legal-tech teams typically tune this threshold against a labelled sample of previously reviewed contracts rather than picking it arbitrarily.
Why does the document-level risk chart keep changing shape as clauses are processed?
The running chart plots the per-clause risk score in the order clauses are fed through the classifier, plus a cumulative running-average line. Because the synthetic contract deliberately interleaves low-risk boilerplate (definitions, notices, governing law) with high-risk clauses (uncapped indemnification, unilateral termination for convenience), the per-clause line oscillates sharply while the running-average line smooths those swings out and converges toward the document's overall risk profile as more clauses accumulate — exactly the pattern a real batch contract-review job produces when scanning clause by clause.
Could a lawyer rely on a model like this in practice, or is it only for illustration?
A hand-weighted bag-of-words model like this one is not something a firm would deploy as-is — the coefficients here were chosen for pedagogical clarity, not fitted to a labelled dataset of real contracts, and the vocabulary is far too small to catch the enormous variety of phrasing real contracts use. In practice this kind of linear model is used as a fast first-pass triage filter, trained on thousands of clauses labelled by paralegals, sitting in front of a slower, more accurate transformer-based re-ranker that a human reviewer checks before anything is relied upon legally. The core value of the simple linear version is that every flag is fully explainable — exactly what this simulation visualises.
Fai passare le clausole di un contratto sintetico attraverso un classificatore NLP che segnala in tempo reale il rischio di indennizzo, risoluzione e responsabilità, evidenziando esattamente quali parole hanno determinato ogni segnalazione.
3D · renderer Three.js / WebGL · target 60 FPS · funziona interamente lato client, senza installazione