【譯文】100000個故事中的性別與動詞分析: 一個簡單案例
該系列前作
100000個故事的情節分析:一個簡單案例
受到我的同事 Julia Silge』s 最近一篇博客(what verbs tend to occur after 「he」 or 「she」 in several novels)的啟發,我想用這個包含了100000個故事的數據及來分析性別和動詞的關係。
我在之前的文章里探索過的Mark Riedl』s Wikipedia plots dataset很適合用來研究這個問題。這個數據集包好100000個關於電影、小說、電視劇和電視遊戲的劇情。這些故事橫跨幾個世紀,由成百上千作者創作。但劇情介紹是由當代的觀眾撰寫的,這意味著我們可以對這些千奇百怪的藝術形式進行統一的角色性別鑒定。由於這個數據集包含的是劇情介紹而不是原始的小說之類的,所以文本內容更多是「發生」了什麼事,很少會出現某個角色「認為」或者「說」之類的表述。
一如既往,我會用Julia和我去年開發的tidytext包來分析,我們的相關書籍也會很快由OReilly出版。我會提供下文中文本挖掘部分的相應代碼,但和可視化相關的代碼出於版面考慮我就不在文中展示了,所有代碼可以在我的github上找到。
搞起
我們會使用和上一篇一樣的處理代碼,把原始數據導入「plot_text」函數中。就像Julia做的那樣,我用tidytext包把文本分割成立一個個雙單詞片語或者連續的成對詞,接著再給「he」或「she」之類的單詞過濾掉(停詞)。1
library(dplyr)nlibrary(tidytext)nnbigrams <- plot_text %>%n unnest_tokens(bigram, text, token = "ngrams", n = 2, collapse = FALSE)nnbigrams_separated <- bigrams %>%n separate(bigram, c("word1", "word2"), sep = " ")n
he_she_words <- bigrams_separated %>%n filter(word1 %in% c("he", "she"))nnhe_she_wordsn
## # A tibble: 797,388 × 4n## story_number title word1 word2n## <dbl> <chr> <chr> <chr>n## 1 1 Animal Farm he refersn## 2 1 Animal Farm he accusesn## 3 1 Animal Farm he collapsesn## 4 1 Animal Farm he celebratesn## 5 1 Animal Farm he abolishesn## 6 2 A Clockwork Orange (novel) he isn## 7 2 A Clockwork Orange (novel) he describesn## 8 2 A Clockwork Orange (novel) he meetsn## 9 2 A Clockwork Orange (novel) he invitesn## 10 2 A Clockwork Orange (novel) he drugsn## # ... with 797,378 more rowsn
舉個例子,我們發現 「Animal Farm」的介紹中在「he」後面跟隨了5個動詞,比如 「he refers」 和 「he accuses」。(請注意我把這類跟在代詞後面詞統一稱呼為動詞,儘管有些詞是連詞或者副詞)
性別關聯動詞
哪些詞跟在「he」或者「she」後面的次數最多呢?我們把出現超過200詞的詞篩選出來。
he_she_counts <- he_she_words %>%n count(word1, word2) %>%n spread(word1, n, fill = 0) %>%n mutate(total = he + she,n he = (he + 1) / sum(he + 1),n she = (she + 1) / sum(she + 1),n log_ratio = log2(she / he),n abs_ratio = abs(log_ratio)) %>%n arrange(desc(log_ratio))n
這個結果可以用柱狀圖展示。2
這個圖多少能反應點問題,女性更可能被設定為受害者 - 「she screams」, 「she cries」, 或 「she pleads」。男性更可能被設定為侵犯者 - 「he kidnaps」 or 「he beats」。襠部不是所有和男性關聯的片語都是負面的,像「he saves」/」he rescues」 這樣的結構就很正面,但他們也是動作的發出者而不是承受者。
我們可以比較下和 「he」 ,「she」關聯的所有單詞的數量,這可以讓我們找到在性別間變動最大的常用詞。
he_she_counts %>%n filter(!word2 %in% c("himself", "herself", "she"),n total>= 100) %>%n ggplot(aes(total, log_ratio)) +n geom_point() +n scale_x_log10(breaks = c(100, 1000, 10000, 1e5),n labels = comma_format()) +n geom_text(aes(label = word2), vjust = 1, hjust = 1,n check_overlap = TRUE) +n scale_y_continuous(breaks = seq(-2, 2),n labels = c(4X "he", 2X "he", "Same", 2X "she", 4X "she")) +n labs(x = Total uses after "he" or "she" (note log scale),n y = Relative uses after "she" to after "he",n title = "Gendered verbs: comparing frequency to pronoun shift",n subtitle = "Only words occurring at least 100 times after he/she. Overlapping labels were removed.") +n expand_limits(x = 75)n
很多常用詞在男女間的出現頻率相當,比如「is」, 「has」, 「was」,但也有很多詞展現了巨大的差距,比如「agrees」, 「loves」, 「tells」。 「She accepts」 和 「He kills」 是出現頻率超過1000詞的片語中差異最大的兩個,幾乎差了兩倍多。
「Poison is a woman』s weapon」: 和暴力相關的片語
固始縣中的女性不總是被動的受害者: 「stabs」一次在女性中的高出現頻率很耐人尋味,那麼其他和暴力或者犯罪有關的詞表現如何呢?
關於女性有個古老的成見(「權利的遊戲」,「神探夏洛克」都有相關表述)- 「poison is a woman』s weapon」,這個觀點也在我們的分析中得到了驗證。女性角色更可能和「poison」, 「stab」, 或者 「kick」相關聯;男性角色和 「beat」, 「strangle」, 或者簡單粗暴的 「murder」 or 「kill」關聯程度更高。男性沒有明顯的「steal」傾向,但更可能「rob」。
如果把這個結論和 an analysis from the Washington Post of real murders in America比較會很有意思,基於這個文本分析案例,一個虛構的殺手是男性的概率比是女性的概率高1.5倍,但在美國,是男性的概率要高整整8倍。這意味著和現實相比,女性殺手在小說中被突出表徵了。
關於男性在小說中更可能「shoot」的現象也值得關注,因為小說中比起女性,男性更可能選擇槍作為殺人的兇器。
自己嘗試下把
這個數據展示了跟隨著在性別代詞後的動詞的頻率的差異,並以此分析故事中男女性角色的不同。然而這僅僅觸及到了問題的表面,基於這個數據集可以做更多的深入研究。
在某些類型或題材中這一差異是否更顯著? 我們可以把作品分為小說、電視劇、電影等等,然後分析不同次猜中性別月動詞關聯性的差異。
在男性和女性創作的作品中這一個差異有變化嗎?
這一差異是時變的嗎?
我們也可以把這個研究從代詞拓展到人物姓名,這會提高分析的京都。
重複一次,所有代碼可以在這裡找到。我希望你們能挖得更深。
性別不是二分變數,請注意這個研究之針對維基百科申明的性別。舉個例子,我們把singular they的情況忽略了,但要考慮複數代詞是個不小的挑戰。 ?
我也把反身代詞( 「himself」 和 「herself」)之類的忽略了,它們不是我們研究的重點。 ?
註:原文刊載於Gender and verbs across 100,000 stories: a tidy analysis
推薦閱讀:
※r語言中句號(點號)「.」的含義是什麼?
※R語言數據可視化的包,除了ggplot2,recharts,shiny等包外,還有哪些很值得推薦的包?
※2018 年大家碼下的第一行代碼是什麼?
※輔修計算機的學生該怎麼找計算機相關的工作?
※R語言 安裝完軟體後如何進行界面語言的設置?