> ## 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.

# Coincidencia de nombres y asignación de CBID

> Cómo Credit Benchmark resuelve nombres de empresas en texto libre a CBID en tres etapas: recuperación de candidatos, características y puntuación ML.

Cada entrada devuelve coincidencias clasificadas con una puntuación de confianza comprendida entre 0 y 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'}}>Entidad</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'}}>país</span> <span style={{color: '#94a3b8'}}>(opcional)</span></div>
          <div><span style={{color: '#86efac'}}>sector</span> <span style={{color: '#94a3b8'}}>(opcional)</span></div>
          <div><span style={{color: '#86efac'}}>LEI</span> <span style={{color: '#94a3b8'}}>(opcional)</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'}}>
    {/* Paso 1: Recuperación de candidatos */}

    <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 — Recuperación de entidades candidatas</div>
      </div>

      <div style={{padding: '8px 14px', background: 'transparent', fontSize: '11px', lineHeight: '1.6'}}>
        <div>Busca en la base de datos de entidades de CB los candidatos más probables</div>
      </div>
    </div>

    {/* Paso 2: Ingeniería de características */}

    <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 — Ingeniería de características</div>
      </div>

      <div style={{padding: '8px 14px', background: 'transparent', fontSize: '11px', lineHeight: '1.6'}}>
        <div>Mide la similitud de nombres y la alineación de metadatos por candidato.</div>
      </div>
    </div>

    {/* Paso 3: puntuación de 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 — Puntuación de ML</div>
      </div>

      <div style={{padding: '8px 14px', background: 'transparent', fontSize: '11px', lineHeight: '1.6'}}>
        <div>Asigne a cada candidato una probabilidad de coincidencia.</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'}}>Resultado principal</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'}}>confianza</span></div>
          <div><span style={{color: '#94a3b8'}}>rango</span></div>
        </div>
      </div>
    </div>
  </div>
</div>

Este flujo muestra el proceso de resolución de principio a fin, desde los campos de entidad de entrada hasta los resultados de candidatos clasificados.

## Proceso

### Recuperación de entidades candidatas

La base de datos de entidades de Credit Benchmark admite búsquedas de texto aproximado y devuelve una lista de candidatos plausibles. El sistema emplea un método de puntuación basado en la frecuencia de términos y la frecuencia inversa de documentos ([Clasificación BM25](https://en.wikipedia.org/wiki/Okapi_BM25)), y normaliza el texto de entrada para gestionar signos de puntuación, acentos, sufijos legales y variantes comunes de nombres.

Se recuperan alrededor de 20 candidatos por nombre. Esta etapa da prioridad a la «[Recuerdo frente a precisión](https://en.wikipedia.org/wiki/Precision_and_recall)»: la coincidencia verdadera debe aparecer en el conjunto de candidatos antes de que pueda comenzar la puntuación.

### Ingeniería de características

Para cada candidato, un vector de características $\mathbf{x}$ El modelo se basa en docenas de señales individuales, agrupadas en 4 categorías:

| Categoría                     | Ejemplos                                                                                                                                                                                                              |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Similitud de cadenas**      | [Jaccard](https://en.wikipedia.org/wiki/Jaccard_index) superposición de tokens, [Levenshtein](https://en.wikipedia.org/wiki/Levenshtein_distance) distancia, [n-gram](https://en.wikipedia.org/wiki/N-gram) similitud |
| **Relevancia de la búsqueda** | [BM25](https://en.wikipedia.org/wiki/Okapi_BM25) Puntuación y posición en la clasificación de la fase de recuperación                                                                                                 |
| **Normalización de texto**    | Comparación tras eliminar la puntuación, los acentos, los sufijos legales y las variantes de los nombres                                                                                                              |
| **Alineación de metadatos**   | Coherencia entre la entrada y los candidatos en cuanto a país, sector e identificador (LEI)                                                                                                                           |

### Puntuación del modelo

Un clasificador de aprendizaje automático asigna una probabilidad de coincidencia a cada candidato de forma independiente:

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

Los candidatos se clasifican por $\hat{p}$ y los principales resultados devueltos en la respuesta.

#### Entrenamiento

El modelo se ha entrenado con un conjunto de datos interno de decenas de miles de coincidencias de entidades etiquetadas, cada una de las cuales es un par de coincidencia verdadera o falsa. Esto difiere de la propia base de datos de entidades de CB, que contiene millones de registros correspondientes a entidades observadas en [envíos bancarios](/methodology/data-processing/data-submission). El modelo se vuelve a entrenar semanalmente a medida que crecen tanto la base de datos de entidades de CB como el universo de resolución de entidades.

#### Pruebas

El rendimiento se evalúa mediante el método de la media de los valores de predicción ([Validación cruzada de k pliegos](https://en.wikipedia.org/wiki/Cross-validation_\(statistics\)), lo que garantiza que las métricas reflejen la generalización en todo el conjunto de datos etiquetado, en lugar de una única división entre entrenamiento y prueba. A medida que el modelo se vuelve a entrenar con nuevos datos, el rendimiento se reevalúa en cada ciclo. Las métricas de clasificación se recogen en la página [Precisión y Cobertura](/api-reference/matching/performance).

## Puntuación de confianza

Cada candidato se devuelve con una puntuación $\hat{p} \in [0, 1]$ reflejando la certeza del modelo de que se trata de la coincidencia correcta.

A nivel interno, utilizamos las siguientes bandas como orientación, basadas en el rendimiento medido en nuestros **datos de prueba**:

| Rango              | Señal                 | Tasa de coincidencia | Justificación                                                                                                                                 |
| ------------------ | --------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| *p > 0,6*          | Coincidencia fuerte   | **94.4%**            | Confianza lo suficientemente alta como para considerarla una coincidencia sin necesidad de revisión manual                                    |
| *p en \[0.3, 0.6]* | Coincidencia probable | **\~65 %**           | El modelo considera que la coincidencia es plausible, pero no segura: las puntuaciones en este rango deben revisarse antes de aceptarlas      |
| *p \< 0,3*         | Baja                  | **\~35 %**           | Es menos probable que el candidato sea la coincidencia correcta; por lo general, solo se muestra para confirmar la ausencia de coincidencias. |

Estas cifras reflejan las tasas de coincidencia **por candidato**. Cuando se devuelven varios candidatos (`limit > 1`) con puntuaciones más bajas, la entidad verdadera puede seguir estando presente en algún lugar del conjunto de resultados; revisar los principales candidatos de forma conjunta mejora las posibilidades de una resolución correcta, incluso cuando ninguna puntuación individual es alta.

Consulte «[Resolución de entidades: Precisión y Cobertura](/api-reference/matching/performance)» para obtener un análisis completo de la relación entre umbrales.
