> ## Documentation Index
> Fetch the complete documentation index at: https://docs.creditbenchmark.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Corrispondenza dei nomi e mappatura CBID

> Credit Benchmark risolve i nomi delle controparti in testo libero in CBID mediante una pipeline a tre fasi: recupero dei candidati, feature engineering e valutazione delle corrispondenze basata sul ML.

Ogni richiesta restituisce potenziali corrispondenze ordinate in base a un punteggio di confidenza compreso tra 0 e 1.

<div style={{display: 'flex', alignItems: 'stretch', padding: '32px 24px', background: 'transparent', gap: '0', fontFamily: 'inherit', fontSize: '12px'}}>
  <div style={{flexShrink: 0, display: 'flex', flexDirection: 'column', justifyContent: 'center', minWidth: '130px'}}>
    <div style={{position: 'relative', marginLeft: '24px', marginBottom: '24px'}}>
      <div style={{position: 'absolute', inset: 0, transform: 'translate(-24px, 24px)', border: '1px solid rgba(51,65,85,0.22)', background: 'transparent'}} />

      <div style={{position: 'absolute', inset: 0, transform: 'translate(-12px, 12px)', border: '1px solid rgba(51,65,85,0.3)', background: 'transparent'}} />

      <div style={{position: 'relative', zIndex: 1, border: '1.5px solid #334155', background: '#1e293b', color: '#f8fafc', padding: '12px 14px'}}>
        <div style={{fontWeight: 700, fontSize: '11px', letterSpacing: '0.04em', textTransform: 'uppercase', marginBottom: '8px', borderBottom: '1px solid rgba(255,255,255,0.1)', paddingBottom: '6px'}}>Entità</div>

        <div style={{fontSize: '10px', lineHeight: '1.9', color: '#94a3b8', fontFamily: 'monospace'}}>
          <div><span style={{color: '#7dd3fc'}}>entity\_name</span></div>
          <div><span style={{color: '#86efac'}}>Paese</span> <span style={{color: '#94a3b8'}}>(opt)</span></div>
          <div><span style={{color: '#86efac'}}>Settore</span> <span style={{color: '#94a3b8'}}>(opt)</span></div>
          <div><span style={{color: '#86efac'}}>LEI</span> <span style={{color: '#94a3b8'}}>(opt)</span></div>
        </div>
      </div>
    </div>
  </div>

  <div style={{flexShrink: 0, display: 'flex', alignItems: 'center', padding: '0 10px'}}>
    <div style={{width: '20px', height: '1.5px', background: '#94a3b8'}} />

    <div style={{width: 0, height: 0, borderTop: '4px solid transparent', borderBottom: '4px solid transparent', borderLeft: '6px solid #94a3b8'}} />
  </div>

  <div style={{flex: 1, display: 'flex', flexDirection: 'column', gap: '16px'}}>
    {/* Fase 1: Recupero dei candidati */}

    <div style={{border: '1px solid #e2e8f0'}}>
      <div style={{background: '#1e3a8a', color: '#f8fafc', padding: '10px 14px'}}>
        <div style={{fontWeight: 700, fontSize: '11px', letterSpacing: '0.04em', textTransform: 'uppercase'}}>1 — Recupero dell'entità candidata</div>
      </div>

      <div style={{padding: '8px 14px', background: 'transparent', fontSize: '11px', lineHeight: '1.6'}}>
        <div>Cerca nel database delle entità CB i candidati probabili</div>
      </div>
    </div>

    {/* Fase 2: Ingegneria delle caratteristiche */}

    <div style={{border: '1px solid #e2e8f0'}}>
      <div style={{background: '#1e40af', color: '#f8fafc', padding: '10px 14px'}}>
        <div style={{fontWeight: 700, fontSize: '11px', letterSpacing: '0.04em', textTransform: 'uppercase'}}>2 — Ingegneria delle caratteristiche</div>
      </div>

      <div style={{padding: '8px 14px', background: 'transparent', fontSize: '11px', lineHeight: '1.6'}}>
        <div>Il punteggio viene calcolato misurando la somiglianza dei nomi e l’allineamento dei metadati per ciascun candidato.</div>
      </div>
    </div>

    {/* Fase 3: Punteggio ML */}

    <div style={{border: '1px solid #e2e8f0'}}>
      <div style={{background: '#4c1d95', color: '#f8fafc', padding: '10px 14px'}}>
        <div style={{fontWeight: 700, fontSize: '11px', letterSpacing: '0.04em', textTransform: 'uppercase'}}>3 — Punteggio ML</div>
      </div>

      <div style={{padding: '8px 14px', background: 'transparent', fontSize: '11px', lineHeight: '1.6'}}>
        <div>Assegna a ciascun candidato un punteggio interpretato come probabilità di corrispondenza.</div>
      </div>
    </div>
  </div>

  <div style={{flexShrink: 0, display: 'flex', alignItems: 'center', padding: '0 10px'}}>
    <div style={{width: '20px', height: '1.5px', background: '#94a3b8'}} />

    <div style={{width: 0, height: 0, borderTop: '4px solid transparent', borderBottom: '4px solid transparent', borderLeft: '6px solid #94a3b8'}} />
  </div>

  <div style={{flexShrink: 0, display: 'flex', flexDirection: 'column', justifyContent: 'center', minWidth: '130px'}}>
    <div style={{position: 'relative', marginLeft: '24px', marginBottom: '24px'}}>
      <div style={{position: 'absolute', inset: 0, transform: 'translate(-24px, 24px)', border: '1px solid rgba(51,65,85,0.22)', background: 'transparent'}} />

      <div style={{position: 'absolute', inset: 0, transform: 'translate(-12px, 12px)', border: '1px solid rgba(51,65,85,0.3)', background: 'transparent'}} />

      <div style={{position: 'relative', zIndex: 1, border: '1.5px solid #334155', background: '#1e293b', color: '#f8fafc', padding: '12px 14px'}}>
        <div style={{fontWeight: 700, fontSize: '11px', letterSpacing: '0.04em', textTransform: 'uppercase', marginBottom: '8px', borderBottom: '1px solid rgba(255,255,255,0.1)', paddingBottom: '6px'}}>Risultato principale</div>

        <div style={{fontSize: '10px', lineHeight: '1.9', color: '#94a3b8', fontFamily: 'monospace'}}>
          <div><span style={{color: '#7dd3fc'}}>CBId</span></div>
          <div><span style={{color: '#7dd3fc'}}>CBEntityName</span></div>
          <div><span style={{color: '#fbbf24'}}>fiducia</span></div>
          <div><span style={{color: '#94a3b8'}}>intervallo</span></div>
        </div>
      </div>
    </div>
  </div>
</div>

Questo flusso illustra il flusso di lavoro di risoluzione end-to-end, dai campi dell’entità di input ai risultati dei candidati classificati.

## Pipeline

### Recupero delle entità candidate

Il database delle entità CB supporta la ricerca testuale approssimativa, restituendo un elenco ristretto di candidati plausibili. Il recupero utilizza l'[Classifica BM25](https://en.wikipedia.org/wiki/Okapi_BM25), che assegna un punteggio ai candidati in base alla frequenza dei termini e alla frequenza inversa dei documenti, e normalizza il testo di input per gestire punteggiatura, accenti, suffissi legali e varianti comuni dei nomi.

In genere vengono restituiti circa 20 candidati per ogni nome. Questa fase dà priorità all’[ricordo rispetto alla precisione](https://en.wikipedia.org/wiki/Precision_and_recall) e: la corrispondenza effettiva deve essere presente nell’insieme dei candidati prima che possa essere assegnato un punteggio.

### Ingegneria delle caratteristiche

Per ogni candidato viene restituito un vettore di caratteristiche. $\mathbf{x}$ Il modello si basa su decine di segnali individuali, raggruppati in quattro categorie:

| Categoria                      | Esempi                                                                                                                                                                                                                   |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Somiglianza delle stringhe** | [Jaccard](https://en.wikipedia.org/wiki/Jaccard_index) sovrapposizione dei token, [Levenshtein](https://en.wikipedia.org/wiki/Levenshtein_distance) distanza, [n-gram](https://en.wikipedia.org/wiki/N-gram) somiglianza |
| **Rilevanza della ricerca**    | [BM25](https://en.wikipedia.org/wiki/Okapi_BM25) punteggio e posizione in classifica dalla fase di recupero                                                                                                              |
| **Normalizzazione del testo**  | Confronto dopo la rimozione di punteggiatura, accenti, suffissi legali e varianti del nome.                                                                                                                              |
| **Allineamento dei metadati**  | Coerenza tra input e candidato in termini di Paese, settore e identificativo (LEI).                                                                                                                                      |

### Punteggio ML

Un classificatore di apprendimento automatico assegna una probabilità di corrispondenza a ciascun candidato in modo indipendente:

$$
\hat{p} = P(\text{match} \mid \mathbf{x})
$$

I candidati sono classificati in base a $\hat{p}$ e i risultati principali restituiti nella risposta.

#### Formazione

Il modello è stato addestrato su un set di dati interno composto da decine di migliaia di corrispondenze di entità etichettate — ciascuna delle quali è una coppia di corrispondenze vera o falsa. Ciò è distinto dal database delle entità CB stesso, che contiene milioni di record corrispondenti alle entità osservate su [Invii bancari](/methodology/data-processing/data-submission). Il modello viene riaddestrato settimanalmente man mano che sia il database delle entità CB che l'universo di risoluzione delle entità crescono.

#### Test

Le prestazioni vengono valutate mediante \[Validazione incrociata k-fold]\([https://en.wikipedia.org/wiki/Cross-validation\_\\(statistics\\)](https://en.wikipedia.org/wiki/Cross-validation_\\\(statistics\\\)), validazione incrociata a più passi), garantendo che le metriche riflettano la generalizzazione sull’intero insieme di dati etichettati piuttosto che su una singola partizione addestramento/test. Man mano che il modello viene riaddestrato su nuovi dati, le prestazioni vengono rivalutate ad ogni ciclo. Le metriche di classificazione sono riportate nella pagina "[Precisione e copertura](/api-reference/matching/performance)".

## Punteggio di affidabilità

Ogni candidato viene restituito con un punteggio $\hat{p} \in [0, 1]$ che riflette la certezza del modello che si tratti della corrispondenza corretta.

Internamente utilizziamo le seguenti fasce come linea guida, sulla base delle prestazioni misurate sui nostri **dati di test**:

| Intervallo         | Segnale                  | Tasso di corrispondenza | Motivazione                                                                                                                                                           |
| ------------------ | ------------------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *p > 0,6*          | Corrispondenza forte     | **94.4%**               | Livello di confidenza sufficientemente elevato da poter essere considerato una corrispondenza senza revisione manuale                                                 |
| *p in \[0.3, 0.6]* | Corrispondenza probabile | **\~65%**               | Il modello considera una corrispondenza plausibile ma non certa — i punteggi in questo intervallo richiedono una revisione prima dell'accettazione                    |
| *p \< 0,3*         | Debole                   | **\~35%**               | È meno probabile che il candidato rappresenti la corrispondenza corretta — tale valore viene restituito generalmente solo per confermare l’assenza di corrispondenze. |

Tali cifre riflettono i tassi di corrispondenza **per singolo candidato**. Quando vengono restituiti più candidati (`limit > 1`) con punteggi inferiori, l’entità corretta potrebbe comunque essere presente da qualche parte nell’insieme di risultati: esaminare collettivamente i candidati principali migliora la probabilità di una risoluzione corretta anche quando nessun punteggio singolo è elevato.

Si rinvia alla sezione "[Risoluzione delle entità: Accuratezza e Copertura](/api-reference/matching/performance)" per un'analisi completa del compromesso tra le soglie.
