- Главная
- Методология
1. Каталог групп
Отправная точка: курируемый каталог этнических групп из 484 строк, индексированный по названию, с нормализованными столбцами для исторической родины, региона, языка, ISO-кодов языков, ISO-кодов стран, религии и URL в Wikipedia, если он есть. Таксономия следует стандартной иерархии континент → субрегион → этнос: Америка, Европа, Африка, Азия, Океания на уровне континентов; 23 субрегиона; 484 этнические группы.
Этот каталог появился раньше нынешнего конвейера и курируется вручную. Он опубликован как конфигурация ethnicities публичного датасета на HuggingFace.
2. Сбор данных об известных людях
Для каждой группы с URL в Wikipedia мы пытаемся получить соответствующую статью «List of {Ethnicity} people». Если такая статья существует, мы извлекаем имена, краткие описания «известен благодаря», годы рождения и смерти, если они указаны, и URL ссылок для каждого человека. 291 из 484 групп имеют хотя бы одну такую статью в Wikipedia; 193 не имеют (обычно это небольшие или малоизвестные группы, для которых страница со списком не была написана). Всего сбор дал 13 094 строк о людях, опубликованных как конфигурация notable_people.
3. Поиск URL изображений
Для каждого собранного человека мы переходим по URL ссылки на его отдельную статью в Wikipedia и извлекаем URL репрезентативного изображения, отдавая предпочтение главному изображению инфобокса статьи, а при его отсутствии используя первое изображение OpenGraph. 6,243 из 13,094 человек (47.7%) имеют доступное изображение в Wikipedia; у остальных ~52% нет изображения в инфобоксе (часто это деятели эпохи до фотографии или малоизвестные люди с чисто текстовыми статьями).
Сервер upload.wikimedia.org от Wikimedia жестко ограничивает частоту запросов с одного IP-адреса. Мы ограничиваем загрузчик 2 запросами в секунду на IP-адрес источника; более частые запросы вызывают HTTP 429 внутри пакетов.
4. Разметка с помощью vision-LLM
Каждое изображение с найденным URL отправляется визуально-языковой модели с фиксированным структурированным промптом, запрашивающим 14 полей фенотипа, а также самооценку уверенности (от 0.0 до 1.0) и категорию качества изображения (high / medium / low / very_low). Промпт явно предписывает модели использовать словарь Фицпатрика (Fitzpatrick) I-VI для тона кожи (допуская диапазоны, где это уместно), определять наличие эпикантуса как структурированное подполе формы глаз, рассматривать фотографию как одно наблюдение одного человека (а не как прототип этнического стереотипа), возвращать unknown или пустое значение для полей, которые невозможно оценить, и явно указывать помехи (очки, головной убор, макияж, частично видимое лицо).
Используется профиль инференса Anthropic Claude Sonnet 4.6 в AWS Bedrock (us.anthropic.claude-sonnet-4-6). Пилотные запуски на моделях более высокого уровня не показали измеримого прироста точности на этом промпте: задача представляет собой структурированное извлечение с коротким контекстом по фиксированной схеме, с которым Sonnet справляется в полном качестве при меньшей стоимости.
Статистика запуска: 5,668 изображений успешно проанализировано; ~575 завершились ошибкой (сбои загрузки, ошибки модели, ошибки парсинга или слишком большие входные данные, превысившие лимит Bedrock в 5MB на изображение); параллельность = 4; пропускная способность ~0.42 изображения в секунду (ограничена сетью); общая стоимость $44.66 USD по прейскурантным ценам Bedrock.
Структурированный ответ разбирается и сохраняется построчно. Исходный необработанный JSON хранится в исходной базе данных (столбец ethnic_image_analysis.raw_json) для аудита, но не распространяется.
5. Система контролируемого словаря
Поверх унаследованного анализа по 14 полям конвейер теперь определяет полный контролируемый словарь: 22 анатомические категории, 196 измерений и 853 класса словаря (источники: более 113 рецензируемых публикаций). Каждый файл словаря представляет собой JSON-документ, задающий измерения (с типом: categorical / ordinal / numeric / structured), шкалу (с цитатой), описание, допустимые значения (с определениями) и метаданные наблюдаемости (можно ли оценить измерение по фотографии и при какой минимальной видимой площади).
Скрипт-генератор (scripts/generate-from-vocabulary.mjs) читает каждый файл словаря и создает четыре артефакта: фрагмент промпта анализа для vision-LLM, модель базы данных Prisma, функцию агрегации и страницу документации в Markdown. Чтобы добавить новое измерение, достаточно отредактировать один JSON-файл и снова запустить генератор; не нужно вручную поддерживать промпт анализа параллельно со схемой.
Откройте Атлас, чтобы просмотреть 22 категории, Глоссарий со всеми 853 определенными терминами или публичный репозиторий словаря с исходными файлами.
6. Агрегация по группам
Детерминированный агрегатор на SQL/JavaScript (без LLM) формирует сводную карточку для каждой группы по строкам наблюдений изображений этой группы. Агрегатор не использует LLM и может запускаться повторно. Для каждой группы, у которой есть не менее 3 наблюдений изображений, он выдает:
- Размер выборки и распределение по источникам
- Распределение по качеству (доли high / medium / low / very_low в процентах)
- Средняя самооценка уверенности
- Распределение по Фицпатрику (доля строк в каждом классе от I до VI)
- Распределения цвета волос, текстуры волос и цвета глаз
- Доля эпикантуса (да / нет / частично)
- Условные оговорки: малая выборка (N<10), умеренная выборка (N<25), низкое качество, низкая уверенность, «известные люди из Wikipedia смещены в сторону мужчин и публичных фигур и не репрезентативны для населения»
7. Оценка охвата
На каждой странице этнической группы отображается оценка глубины данных от 0 до 100, состоящая из четырех взвешенных компонентов:
- Размер выборки: от 0 до 40 (число изображений в логарифмической шкале, максимум при n≥50)
- Качество: от 0 до 30 (% изображений с
image_quality = "high") - Уверенность: от 0 до 20 (средняя самооценка уверенности модели)
- Разнообразие источников: от 0 до 10 (число различных source_types; сейчас всегда 0 или 1, так как 100% данных из Wikipedia, заложено на будущее)
Оценка честно отражает глубину охвата. Группы, для которых в Wikipedia нет фотографий, получают 0; группы с полным охватом приближаются к 100. Оценка хранится в ethniclist.CoverageScore и обновляется при каждом изменении исходных данных.
8. Воспроизводимость
Весь код конвейера открыт под лицензией Apache 2.0: github.com/Agaveis/phenotype-catalog-pipeline. Статья о методологии опубликована здесь: doi.org/10.5281/zenodo.20075617. Датасет опубликован под лицензией CC BY 4.0: huggingface.co/datasets/EthnicErotic/phenotype-catalog.
Для воспроизведения конвейера нужны: учетные данные AWS с доступом к Bedrock в us-east-1, база данных SQL Server со схемой (или перенос на выбранную вами СУБД), Node.js 18+, HuggingFace CLI для загрузки и около $45 USD бюджета на визуальный инференс в Bedrock для полного запуска на 5,668 изображениях.
Подробнее: О проекте · Этика · Частые вопросы · Глоссарий