Este repositorio contiene código para reproducir los hallazgos presentados en nuestra historia "El GPT de Openi es una herramienta de ensueño de un reclutador. Las pruebas muestran que hay sesgo racial".
Nuestra metodología se describe en la parte inferior del artículo.
Los datos que recopilamos y analizamos están en la carpeta data .
Los cuadernos Jupyter utilizados para el preprocesamiento y el análisis de datos están disponibles en la carpeta notebooks . Las descripciones para cada cuaderno se describen en la sección de cuadernos a continuación.
Este directorio es donde se guardan las entradas, intermediarios y salidas.
Si desea generar nuevos currículums o clasificaciones, deberá registrar y financiar una clave API de OpenAI, y establecer las siguientes variables de entorno: OPENAI_ORG y OPENAI_API_KEY .
data
├── intermediary
│ ├── resumes_to_rank.json
│ ├── resume_ranking
│ │ ├── gpt-3.5-turbo
│ │ └── gpt-4
│ └── embeddings
│ └── names_embedded_ada.json
├── output
│ ├── names_embedded_for_graphic.csv
│ ├── performance_ranking.csv
│ └── resume_ranking_for_graphics.csv
└── input
├── top_mens_names.json
├── top_womens_names.json
└── Names_2010Census_Top1000.csv
Aquí hay una explicación de algunos de los archivos más importantes.
| archivo | descripción |
|---|---|
data/input/top_mens_names.json | Nombres demográficamente distintos (ver también data/input/top_womens_names.json ) derivados estadísticamente de registros de votantes de Carolina del Norte y datos del censo. |
data/input/Names_2010Census_Top1000.csv | Los apellidos estadounidenses más populares tomados de la Oficina del Censo de los Estados Unidos. |
data/intermediary/resumes_to_rank.json | Currículums igualmente calificados generados a partir de GPT-4 y editados. También incluye descripciones de trabajo reales utilizadas para evaluar cada currículum. |
data/intermediary/resume_ranking | Datos del experimento de clasificación de currículum recopilado de OpenAI. Organizado por versión modelo> Título del trabajo> Fecha de colección. |
data/output/performance_ranking.csv | Resultados agregados del experimento de clasificación de currículums. |
data/output/names_embedded_for_graphic.csv | Incrustos ADA-002 para nombres demográficamente distintos reducidos a 2 dimensiones usando UMAP. |
Usamos abreviado para denotar género ( M = masculino y W = mujer), así como raza y etnia ( A = asiático, H = hispano, B = negro y W = blanco). Para grupos interseccionales en data/output/performance_ranking.csv La notación que utilizamos para la demografía (COL demo ) es {race/ethnicity}_{gender} , por ejemplo, A_W significa mujeres asiáticas.
Asegúrese de tener instalado Python 3.11+. Utilizamos Miniconda para crear un entorno virtual Python 3.11.
Luego instale los paquetes de Python: pip install -r requirements.txt
Los cuadernos de Jupyter para recopilar, procesar y analizar datos se pueden encontrar en el directorio notebooks . Los cuadernos deben ejecutarse secuencialmente, puede usar los nbexec notebooks de comando para ejecutar todos los cuadernos.
Estadísticamente deriva los nombres demográficamente distintos de los registros de registro de votantes y el censo decenal de los Estados Unidos.
Use la API de chat de OpenAI para clasificar ocho currículums casi idénticos miles de veces en cientos de nombres para cuatro trabajos diferentes.
Analice los datos del experimento de clasificación para probar la discriminación basada en nombres.
Recopile incrustaciones para nombres demográficamente distintos utilizando el modelo ADA-002 de OpenAI, y verlos en 2D usando UMAP.