Repositori ini berisi kode untuk mereproduksi temuan yang ditampilkan dalam cerita kami "Openai's GPT adalah alat impian perekrut. Tes menunjukkan ada bias rasial".
Metodologi kami dijelaskan di bagian bawah artikel.
Data yang kami kumpulkan dan analisis ada di folder data .
Jupyter Notebook yang digunakan untuk preprocessing data dan analisis tersedia di folder notebooks . Deskripsi untuk setiap notebook diuraikan di bagian notebook di bawah ini.
Direktori ini adalah tempat input, perantara, dan output disimpan.
Jika Anda ingin menghasilkan resume atau peringkat baru, Anda harus mendaftar dan mendanai kunci API OpenAI, dan mengatur variabel lingkungan berikut: OPENAI_ORG dan 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
Berikut penjelasan beberapa file yang lebih penting.
| mengajukan | keterangan |
|---|---|
data/input/top_mens_names.json | Nama-nama yang berbeda secara demografis (lihat juga data/input/top_womens_names.json ) diturunkan secara statistik dari catatan pemilih Carolina Utara dan data sensus. |
data/input/Names_2010Census_Top1000.csv | Nama keluarga AS yang paling populer diambil dari Biro Sensus AS. |
data/intermediary/resumes_to_rank.json | Resume yang sama-sama memenuhi syarat yang dihasilkan dari GPT-4 dan diedit. Juga termasuk deskripsi pekerjaan nyata yang digunakan untuk mengevaluasi setiap resume. |
data/intermediary/resume_ranking | Data dari percobaan peringkat resume yang dikumpulkan dari openai. Diatur oleh Versi Model> Judul Pekerjaan> Tanggal Koleksi. |
data/output/performance_ranking.csv | Hasil agregat dari percobaan peringkat resume. |
data/output/names_embedded_for_graphic.csv | ADA-002 Embeddings untuk nama yang berbeda secara demografis dikurangi menjadi 2 dimensi menggunakan UMAP. |
Kami menggunakan singkatan untuk menunjukkan jenis kelamin ( M = pria dan W = wanita) serta ras dan etnis ( A = Asia, H = Hispanik, B = Hitam, dan W = Putih). Untuk grup intersectional dalam data/output/performance_ranking.csv notasi yang kami gunakan untuk demografi ( demo col) adalah {race/ethnicity}_{gender} , misalnya A_W berarti wanita Asia.
Pastikan Anda menginstal Python 3.11+. Kami menggunakan miniconda untuk menciptakan lingkungan virtual Python 3.11.
Kemudian instal Paket Python: pip install -r requirements.txt
Jupyter Notebook untuk mengumpulkan, memproses, dan menganalisis data dapat ditemukan di direktori notebooks . Notebook harus dijalankan secara berurutan, Anda dapat menggunakan nbexec notebooks perintah untuk menjalankan semua notebook.
Secara statistik memperoleh nama -nama yang berbeda secara demografis dari catatan pendaftaran pemilih dan Sensus Decennial AS.
Gunakan Openai's Chat API untuk peringkat delapan resume hampir identik ribuan kali di ratusan nama untuk empat pekerjaan berbeda.
Menganalisis data eksperimen peringkat untuk menguji diskriminasi berbasis nama.
Kumpulkan embeddings untuk nama-nama yang berbeda secara demografis menggunakan model ADA-002 Openai, dan lihat dalam 2D menggunakan UMAP.