Reddit AmItheAsshole este mai drăguț cu femeile decât cu bărbații – o dovadă SQL?

mai 7, 2021
admin

Când redditori întreabă „sunt eu dobitocul” în timp ce vorbesc despre femei, au o schimbare mai mare de a fi judecați ca fiind dobitocul. Să verificăm aceste măsurători – cu BigQuery, dbt și Data Studio

Asigurați-vă că nu luați nimic din ceea ce am scris aici ca fiind adevărul absolut. Mai multe persoane de pe Twitter au remarcat probleme și au adăugat corecții la analiza pe care am oferit-o. Citirea acestei postări așa cum a fost prezentată inițial – și a reacțiilor – poate fi o modalitate excelentă de a învăța la fel de multe ca și mine în timp ce am citit răspunsurile. Puteți găsi multe dintre gândurile lor nefiltrate urmărind acest fir de discuții pe Twitter.

Context

/r/amItheAsshole a ajuns să fie al 4-lea cel mai activ subreddit – după numărul de comentarii. Oamenii vin pe acest subreddit pentru a-și spune poveștile și îi întreabă pe alți redditori „sunt eu nemernicul aici?”. Se pare că cei mai mulți oameni sunt judecați ca fiind „not the asshole”, după cum se vede în acest grafic:

Cei mai mulți oameni sunt judecați ca fiind „not the asshole”

Tweet-ul meu cu aceste rezultate a primit multă atenție:

Inclusiv întrebarea – este reddit mai drăguț cu femeile sau cu bărbații?

Decizia genului

Să te uiți la titlul sau la conținutul unei postări, s-ar putea să-ți fie greu să decizi dacă „eu” este un bărbat sau o femeie – dar este destul de ușor să numeri numărul de „ea/el/ea/el/ei/ei/ei/prietenul/prietena/prietenul” prezent în poveste.

Să ne uităm la câteva postări aleatorii și la numărătoarea pentru fiecare dintre aceste pronume și cuvinte de gen:

Câteva postări aleatorii și numărătoarea pentru fiecare dintre aceste pronume și cuvinte de gen.

Vezi că numărul de pronume și cuvinte de gen din exemplu se potrivește cu cine este vorba în poveste. Aceste povești sunt despre un client de sex masculin, o prietenă de sex feminin, un vecin de sex masculin, un fiu de sex masculin și o fiică adolescentă de sex feminin.

Cu aceste numere, putem stabili acum o regulă arbitrară: Dacă există mai mult de două ori mai multe pronume de sex masculin decât de sex feminin, acea postare este despre un bărbat. Putem folosi regula opusă pentru a spune că acea postare este despre o femeie. Dacă numerele sunt prea apropiate sau nule, vom numi postarea „neutră”.

O altă regulă pe care o putem stabili pentru a simplifica analiza:

  • Dacă judecata este „nu este găozarul” sau „nu există găozar aici”, atunci putem spune că „posterul nu este un găozar”.
  • Dacă judecata este ‘dobitocul’ sau ‘toată lumea e nașpa’ atunci putem spune ‘afișul este un dobitoc’.

Dacă agregăm toate aceste postări, ajungem la cifrele:

Majoritatea oamenilor nu sunt găozarii. Dar dacă vorbim despre femei, există o probabilitate mai mare de a fi unul.

Când am prezentat pentru prima dată aceste rezultate, mi s-a spus „aceste cifre sunt prea apropiate, ar putea fi o eroare statistică”.

Semnificație statistică?

Cum putem spune că cifrele nu sunt o simplă eroare statistică? Să vedem tendința lună de lună – este stabilă?

Judecăți lunare – când afișul vorbește despre femei, afișul are întotdeauna o șansă mai mare de a fi nemernic.

Da! Tendința variază de la o lună la alta, dar există o șansă clar mai mare de a fi un nemernic atunci când vorbește despre femei decât atunci când vorbește despre bărbați. Dacă diferența mică ar fi fost doar o întâmplare statistică, ne-am fi așteptat ca tendința să sară sălbatic în schimb.

Și vă rugăm să rețineți că aceste rezultate sunt foarte specifice, după cum notează acest tweet:

La care am răspuns

Cum să

De data aceasta folosesc dbt pentru prima dată dbt și am lăsat tot codul meu pe GitHub. Mulțumesc Claire Carroll pentru ajutorul acordat la începutul utilizării acestui instrument minunat!

Pentru a extrage toate postările /r/AmItheAsshole în BigQuery într-un tabel nou, puteți face:

CREATE TABLE temp.data ASSELECT * 
FROM `fh-bigquery.reddit_posts.20*'
WHERE subreddit = 'AmItheAsshole'
AND _table_suffix > '19_'

Apoi genul și judecata pentru fiecare postare pot fi determinate cu o interogare de genul:

WITH data AS (
SELECT *
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bhe\b')) hes
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bshe\b')) shes
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bher\b')) hers
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bhis\b')) hiss
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bthey\b')) theys
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bgirlfriend\b')) gfs
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bboyfriend\b')) bfs
FROM {{ref('aita_posts')}}
WHERE link_flair_text IS NOT NULL
)
, gendered_data AS (
SELECT *
, CASE
WHEN males > 2+females*2 THEN 'to_male'
WHEN females > 2+males*2 THEN 'to_female'
ELSE 'neutral'
END to_gender
FROM (
SELECT *, hes+shes+hers+hiss+theys+gfs+bfs totalgender, hes+hiss+bfs males, shes+hers+gfs females
FROM data
)
)
SELECT CASE link_flair_text
WHEN 'not the a-hole' THEN 'no asshole'
WHEN 'no a-holes here' THEN 'no asshole'
WHEN 'everyone sucks' THEN 'asshole'
WHEN 'asshole' THEN 'asshole'
END judgement
, *
FROM gendered_data
WHERE link_flair_text IS NOT NULL

Și în final statisticile prezentate aici:

SELECT *, c/total_gender AS perc
FROM (
SELECT *, SUM(c) OVER(PARTITION BY to_gender, MONTH ) total_gender, SUM(c) OVER(PARTITION BY judgement, MONTH) total_judgement
FROM (
SELECT to_gender, judgement, CONCAT(to_gender, ': ', judgement) to_gender_judgement, month, COUNT(*) c, ARRAY_AGG(STRUCT(title, selftext) ORDER BY RAND() LIMIT 1) sample_title
FROM {{ref('aita_posts_gendered')}}
WHERE judgement IS NOT null
AND to_gender != 'neutral'
GROUP BY 1,2,3,4
)
)
WHERE c/total_gender > 0.01
AND total_judgement > 10
ORDER BY to_gender, perc DESC

Discuție

Voi găsi o mulțime de răspunsuri perspicace și amuzante pe firul de discuții pe Twitter pentru această postare:

Simțiți-vă liber să vă alăturați discuției (și spuneți-mi dacă greșesc?). Amintiți-vă să fiți drăguți unii cu alții – majoritatea oamenilor nu sunt oricum nemernici.

Vreți mai mult?

Am acoperit doar până în august 2019, deoarece atunci se oprește arhiva reddit completă actuală în BigQuery – până la viitoarele actualizări așteptate. Consultați postarea mea anterioară pentru mai multe detalii despre colectarea datelor live de pe pushshift.io. Mulțumesc Jason Baumgartner pentru aprovizionarea constantă!

Sunt Felipe Hoffa, un Developer Advocate pentru Google Cloud. Urmăriți-mă pe @felipehoffa, găsiți postările mele anterioare pe medium.com/@hoffa, și totul despre BigQuery pe reddit.com/r/bigquery.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.