Esse repositório contém código para reproduzir as descobertas apresentadas em nossa história "O GPT do Openai é a ferramenta de sonho de um recrutador. Os testes mostram que é um viés racial".
Nossa metodologia é descrita na parte inferior do artigo.
Os dados que coletamos e analisamos estão na pasta de data .
Jupyter Notebooks usados para pré -processamento e análise de dados estão disponíveis na pasta notebooks . As descrições para cada notebook estão descritas na seção Notebooks abaixo.
Este diretório é onde as entradas, intermediários e saídas são salvos.
Se você deseja gerar novos currículos ou rankings, precisará se registrar e financiar uma chave da API OpenAI e definir as seguintes variáveis de ambiente: OPENAI_ORG e 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
Aqui está uma explicação de alguns dos arquivos mais importantes.
| arquivo | descrição |
|---|---|
data/input/top_mens_names.json | Nomes demograficamente distintos (consulte também data/input/top_womens_names.json ) derivados estatisticamente dos registros de eleitores da Carolina do Norte e dados do censo. |
data/input/Names_2010Census_Top1000.csv | Os sobrenomes mais populares dos EUA retirados do US Census Bureau. |
data/intermediary/resumes_to_rank.json | Currículos igualmente qualificados gerados a partir do GPT-4 e editados. Também inclui descrições reais de trabalho usadas para avaliar cada currículo. |
data/intermediary/resume_ranking | Dados do experimento de classificação de currículo coletados do OpenAI. Organizado por versão do modelo> Título do trabalho> Data da coleção. |
data/output/performance_ranking.csv | Resultados agregados do experimento de classificação de currículo. |
data/output/names_embedded_for_graphic.csv | INCLIMAÇÕES ADA-002 PARA NOMES DIMOGRÁVEIS DISTIPOS RENDIZADAS A 2 DIMENÇÕES UMAPAP. |
Usamos abreviação para denotar gênero ( M = masculino e W = feminino), bem como raça e etnia ( A = asiática, H = hispânica, B = preto e W = branco). Para grupos interseccionais em data/output/performance_ranking.csv a notação que usamos para dados demográficos ( demo ) é {race/ethnicity}_{gender} , por exemplo, A_W significa mulheres asiáticas.
Verifique se você tem o Python 3.11+ instalado. Usamos o Miniconda para criar um ambiente virtual do Python 3.11.
Em seguida, instale os pacotes python: pip install -r requirements.txt
Jupyter Notebooks para coletar, processar e analisar dados podem ser encontrados no diretório notebooks . Os notebooks devem ser executados sequencialmente, você pode usar os nbexec notebooks de comando para executar todos os notebooks.
Deriva estatisticamente os nomes demograficamente distintos dos registros de registro de eleitores e do censo decenal dos EUA.
Use a API de bate-papo do OpenAI para classificar oito currículos quase idênticos milhares de vezes em centenas de nomes para quatro empregos diferentes.
Analise os dados do experimento de classificação para testar a discriminação baseada em nomes.
Colete incorporação para nomes demograficamente distintos usando o modelo ADA-002 do OpenAI e veja-os em 2D usando o UMAP.