Referencia

Metodología

Construcción completa del catálogo de fenotipos, desde la obtención de fotos de Wikipedia y la anotación con un LLM de visión hasta la agregación por grupo. Reproducible: todo el pipeline es de código abierto bajo Apache 2.0.

1. Catálogo a nivel de grupo

El punto de partida es un catálogo curado de 484 filas de grupos étnicos, indexado por nombre, con columnas normalizadas de territorio de origen, región, idioma, códigos ISO de idioma, códigos ISO de país, religión y una URL de Wikipedia cuando existe. La taxonomía sigue una jerarquía estándar continente → subregión → etnia: América, Europa, África, Asia y Oceanía en el nivel de continente; 23 subregiones; 484 grupos étnicos.

Este catálogo es anterior al pipeline actual y se mantiene manualmente. Se publica como la configuración ethnicities del conjunto de datos público de HuggingFace.

2. Extracción de personas notables

Para cada grupo con URL de Wikipedia, intentamos obtener el artículo «List of {Ethnicity} people» correspondiente. Cuando existe, extraemos los nombres, breves descriptores de «conocido por», los años de nacimiento y muerte cuando aparecen, y las URL de referencia de cada persona. 291 de 484 grupos tienen al menos un artículo de este tipo en Wikipedia; 193 no lo tienen (normalmente grupos pequeños o poco conocidos para los que nadie ha redactado una página de lista). La extracción produjo 13.094 filas de personas en total, publicadas como la configuración notable_people.

3. Búsqueda de URL de imágenes

Para cada persona extraída, seguimos la URL de referencia hasta su artículo individual de Wikipedia y extraemos la URL de una imagen representativa, con preferencia por la imagen de la ficha al inicio del artículo y, en su defecto, la primera imagen de OpenGraph. 6243 de 13 094 personas (47.7 %) tienen una imagen de Wikipedia localizable; el resto, aproximadamente el 52 %, no tiene imagen en la ficha (a menudo figuras anteriores a la fotografía o personas poco destacadas cuyos artículos solo contienen texto).

El servidor upload.wikimedia.org de Wikimedia limita la tasa de solicitudes por IP de origen de forma agresiva. Limitamos el recolector a 2 solicitudes por segundo por IP de origen; un ritmo más intenso provoca errores HTTP 429 dentro de los lotes.

4. Anotación con LLM de visión

Cada imagen con URL localizable se envía a un modelo de lenguaje con visión junto con un prompt estructurado fijo que solicita 14 campos fenotípicos, además de una puntuación de confianza autodeclarada (de 0.0 a 1.0) y una categoría de calidad de imagen (high / medium / low / very_low). El prompt indica explícitamente al modelo que use el vocabulario de Fitzpatrick I a VI para el tono de piel (aceptando rangos cuando corresponda), que detecte la presencia del pliegue epicántico como subcampo estructurado de la forma de los ojos, que trate la fotografía como una observación de una persona (no como el prototipo de un estereotipo étnico), que devuelva unknown o un valor vacío en los campos que no se pueden evaluar y que señale explícitamente las obstrucciones (gafas, sombrero, maquillaje, rostro parcial).

El modelo utilizado es el perfil de inferencia Anthropic Claude Sonnet 4.6 en AWS Bedrock (us.anthropic.claude-sonnet-4-6). Las pruebas piloto con modelos de gama superior no mostraron una mejora medible de la precisión con este prompt: la tarea es una extracción estructurada de contexto corto con un esquema fijo, que Sonnet resuelve con plena calidad a menor costo.

Estadísticas de la ejecución: 5668 imágenes analizadas correctamente; unas 575 fallidas (errores de carga, errores del modelo, errores de análisis sintáctico o entradas demasiado grandes que superaban el límite de Bedrock de 5 MB por imagen); concurrencia = 4; rendimiento de aproximadamente 0.42 imágenes por segundo (limitado por la red); costo total de 44.66 USD a precios de lista de Bedrock.

La respuesta estructurada se analiza y se almacena fila por fila. El JSON sin procesar original se conserva en la base de datos de origen (columna ethnic_image_analysis.raw_json) para auditoría, pero no se redistribuye.

5. Sistema de vocabulario controlado

Además del análisis heredado de 14 campos, el pipeline define ahora un vocabulario controlado exhaustivo que abarca 22 categorías anatómicas con 196 dimensiones y 853 clases de vocabulario, basado en más de 113 referencias revisadas por pares. Cada archivo de vocabulario es un documento JSON que especifica las dimensiones (con su tipo: categórica / ordinal / numérica / estructurada), la escala (con su cita bibliográfica), la descripción, los valores válidos (con sus definiciones) y metadatos de observabilidad (si la dimensión puede evaluarse a partir de una fotografía y con qué extensión visible mínima).

Un script generador (scripts/generate-from-vocabulary.mjs) lee cada archivo de vocabulario y produce cuatro artefactos: un fragmento del prompt de análisis para el LLM de visión, un modelo de base de datos de Prisma, una función de agregación y una página de documentación en Markdown. Añadir una dimensión nueva consiste en editar un archivo JSON y volver a ejecutar el generador; no hay ningún prompt de análisis escrito a mano que mantener en paralelo con el esquema.

Consulte el Atlas para explorar las 22 categorías, el Glosario para ver los 853 términos definidos o el repositorio público del vocabulario para los archivos fuente.

6. Agregación por grupo

Un agregador determinista en SQL/JavaScript (sin LLM) genera una ficha resumen por grupo a partir de las filas de observación de imágenes de cada grupo. El agregador no usa LLM y puede volver a ejecutarse. Para cada grupo con al menos 3 observaciones de imagen (actualmente 209 de 484 grupos), genera:

  • Tamaño de la muestra y desglose por fuente
  • Reparto por calidad (porcentajes high / medium / low / very_low)
  • Confianza autodeclarada media
  • Distribución de Fitzpatrick (proporción de filas en cada clase, de I a VI)
  • Distribuciones del color de cabello, la textura del cabello y el color de ojos
  • Proporción de pliegue epicántico (sí / no / parcial)
  • Advertencias condicionales: muestra pequeña (N<10), muestra modesta (N<25), calidad baja, confianza baja, «las personas notables de Wikipedia son mayoritariamente hombres y figuras públicas, no representativas de la población»

7. Puntuación de cobertura

Cada página de grupo étnico muestra una puntuación de profundidad de datos de 0 a 100 con cuatro componentes ponderados:

  • Tamaño de la muestra de 0 a 40 (número de imágenes en escala logarítmica, con tope en n≥50)
  • Calidad de 0 a 30 (% de imágenes con nivel image_quality = "high")
  • Confianza de 0 a 20 (confianza media autodeclarada del modelo)
  • Diversidad de fuentes de 0 a 10 (source_types distintos; actualmente siempre 0 o 1, porque el 100 % de las fuentes es Wikipedia; compatible con futuras ampliaciones)

La puntuación refleja con honestidad la profundidad de la cobertura. Los grupos sin cobertura fotográfica en Wikipedia se quedan en 0; los grupos con cobertura exhaustiva se acercan a 100. La puntuación se almacena en ethniclist.CoverageScore y se actualiza cada vez que cambian los datos subyacentes.

8. Reproducibilidad

Todo el código del pipeline está disponible como código abierto bajo Apache 2.0 en github.com/Agaveis/phenotype-catalog-pipeline. El artículo de metodología está publicado en doi.org/10.5281/zenodo.20075617. El conjunto de datos se publica bajo CC BY 4.0 en huggingface.co/datasets/EthnicErotic/phenotype-catalog.

Para replicar el pipeline se necesitan: credenciales de AWS con acceso a Bedrock en us-east-1, una base de datos SQL Server con el esquema (o una adaptación a la base de datos que prefiera), Node.js 18+, la CLI de HuggingFace para la subida y unos 45 USD de presupuesto de inferencia de visión en Bedrock para la ejecución completa de 5668 imágenes.

Más información: Acerca de · Ética · Preguntas frecuentes · Glosario