Entity resolution para nombres e identificadores latinoamericanos: parser de nombres mexicanos, validadores de CURP/RFC y comparadores para Splink.
Project description
tocayo
tocayo (sust. m.): persona que tiene el mismo nombre que otra. El falso positivo clásico de la resolución de entidades.
Entity resolution para datos latinoamericanos. Las herramientas de record linkage (Splink, Dedupe, Zingg) asumen nombres anglosajones: un nombre, un apellido, un orden fijo. En Latinoamérica, José Luis Hernández García puede aparecer como HERNANDEZ GARCIA JOSE LUIS, J.L. Hernández o Jose Hdz Garcia — y ninguna librería existente lo maneja. Esto le cuesta millones en deduplicación fallida a cada banco, retailer y dependencia de gobierno de la región.
tocayo aporta las piezas que faltan:
- 🪪 Validadores estructurales de CURP y RFC que no solo validan: extraen los campos embebidos (fecha de nacimiento, sexo, entidad) como evidencia parcial para matching.
- 🧹 Normalización canónica de nombres en español: acentos (preservando la Ñ), abreviaturas de captura (
Ma.→MARÍA,Hdz→HERNÁNDEZ), limpieza de ruido. - 👤 Parser de nombres mexicanos (en construcción): dos apellidos, partículas compuestas (
De la Garza), orden incierto (APELLIDOS NOMBRESvsNombres Apellidos), con scores de confianza por campo. - 🔗 Comparadores para Splink 4 (en construcción): comparación consciente de estructura, fonética del español, blocking rules probadas para nombres mexicanos.
Instalación
pip install tocayo
Uso
from tocayo import normalizar, validar_curp
normalizar(" ma. del Cármen Hdz. ")
# 'MARIA DEL CARMEN HERNANDEZ'
info = validar_curp("GARJ900101HNLRRS01")
info.valida # True
info.fecha_nacimiento # datetime.date(1990, 1, 1)
info.sexo # 'H'
info.entidad # 'NL'
Estado
Alfa temprana (0.1.0a1). La API puede cambiar. Hoja de ruta pública en los issues.
Filosofía de diseño
- Núcleo sin dependencias. Strings entran, dataclasses salen. Los adaptadores (pandas, Splink) son extras opcionales.
- Los tests son la especificación. Cada comportamiento documentado tiene un test.
- Estructura antes que magia. CURP y RFC tienen estructura verificable; los nombres mexicanos tienen gramática. La explotamos antes de recurrir a modelos.
Licencia
tocayo (English)
Entity resolution building blocks for Latin American data. Record linkage tools assume Anglo naming conventions — one given name, one surname, fixed order. Latin American names have two surnames, compound particles (De la Garza), and appear in wildly inconsistent formats across systems. tocayo provides Mexican name parsing, structural validators for national identifiers (CURP, RFC) that extract embedded fields as partial matching evidence, Spanish-aware normalization, and (soon) ready-to-use Splink 4 comparators and phonetic encoding for Spanish.
Early alpha. Star the repo to follow along.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tocayo-0.1.0a1.tar.gz.
File metadata
- Download URL: tocayo-0.1.0a1.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5281a90b749e62029cd6802ac8e4c72e0bc18d2edda91e45833d6c4c985b9244
|
|
| MD5 |
9e966386e46169d92a272a45019a02b8
|
|
| BLAKE2b-256 |
8fe3aca86bffbe764b6d3150803c09a466ece6cd90d96dd323ac5c819987a95b
|
File details
Details for the file tocayo-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: tocayo-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
576ac8fd67fad778356918e4a59a1c798999b83d7eacd134754efb3c36cce4e8
|
|
| MD5 |
661bdc8f677fc94a6b339432e7b94b0c
|
|
| BLAKE2b-256 |
8e355cde6d791d8680eae5d5a17e773aeffd025a87d64e3a62cb7336f1b4bc6a
|