Dieses Repository enthält Code, um die Ergebnisse in unserer Geschichte "OpenAIs GPT ist ein Personalvermittlertool zu reproduzieren. Tests zeigen, dass es rassistische Vorurteile gibt".
Unsere Methodik wird am Ende des Artikels beschrieben.
Daten, die wir gesammelt und analysiert haben, befinden sich im data .
Jupyter -Notizbücher, die für die Datenvorverarbeitung und -analyse verwendet werden, sind im Ordner notebooks verfügbar. Beschreibungen für jedes Notebook sind im Abschnitt Notebooks unten beschrieben.
In diesem Verzeichnis werden Eingänge, Vermittler und Ausgaben gespeichert.
Wenn Sie neue Lebensläufe oder Ranglisten generieren möchten, müssen Sie sich registrieren und einen OpenAI -API -Schlüssel finanzieren und die folgenden Umgebungsvariablen festlegen: OPENAI_ORG und 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
Hier finden Sie eine Erklärung einiger wichtigerer Dateien.
| Datei | Beschreibung |
|---|---|
data/input/top_mens_names.json | Demografisch distierende Namen (siehe auch data/input/top_womens_names.json ) statistisch statistisch aus North Carolina Voter Records und Volkszählungsdaten. |
data/input/Names_2010Census_Top1000.csv | Die beliebtesten US -amerikanischen Nachnamen aus dem US Census Bureau. |
data/intermediary/resumes_to_rank.json | Ebenso qualifizierte Lebensläufe, die aus GPT-4 erzeugt und bearbeitet wurden. Enthält auch echte Jobbeschreibungen, die zur Bewertung jedes Lebenslaufs verwendet werden. |
data/intermediary/resume_ranking | Daten aus dem Lebenslauf -Ranking -Experiment von OpenAI. Organisiert nach Modellversion> Berufsbezeichnung> Datum der Sammlung. |
data/output/performance_ranking.csv | Aggregierte Ergebnisse aus dem Lebenslauf -Ranking -Experiment. |
data/output/names_embedded_for_graphic.csv | ADA-002 Einbettungen für demografisch unterschiedliche Namen, die mit UMAP auf 2-Dimensionen reduziert werden. |
Wir verwenden Kurzschrift, um das Geschlecht ( M = männlich und W = weiblich) sowie Rasse und ethnische Zugehörigkeit ( A = asiatisch, H = hispanisch, B = schwarz und W = weiß) zu bezeichnen. Für intersektionelle Gruppen in data/output/performance_ranking.csv Die Notation, die wir für demografische Daten verwenden (Col demo ), ist {race/ethnicity}_{gender} , zum Beispiel A_W bedeutet asiatische Frauen.
Stellen Sie sicher, dass Sie Python 3.11+ installiert haben. Wir haben Miniconda verwendet, um eine virtuelle Python 3.11 -Umgebung zu schaffen.
Installieren Sie dann die Python -Pakete: pip install -r requirements.txt
Jupyter -Notizbücher zum Sammeln, Verarbeiten und Analysieren von Daten finden Sie im notebooks -Verzeichnis. Notizbücher sollten nacheinander ausgeführt werden. Sie können mit den Befehl nbexec notebooks alle Notizbücher ausführen.
Statistisch die demografisch unterschiedlichen Namen aus den Aufzeichnungen der Wählerregistrierung und der US -amerikanischen Zehnenzensus abgeleitet.
Verwenden Sie die Chat-API von OpenAI, um acht nahezu identische Lebensläufe tausende Male in Hunderten von Namen für vier verschiedene Jobs zu belegen.
Analysieren Sie Ranking-Experimentdaten, um auf Namensdiskriminierung zu testen.
Sammeln Sie Einbettungen für demografisch distere Namen mit dem ADA-002-Modell von OpenAI und sehen Sie sie mit UMAP in 2D an.