来自:一鱼大数据
近日,Stack Overflow的数据科学家发表了一篇关于探索性别与动词关系的文章,十分有趣,让我们一起看看吧~
受到我的同事 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包来分析,我们的相关书籍也会很快由O'Reilly出版。
我会提供下文中文本挖掘部分的相应代码,但和可视化相关的代码出于版面考虑我就不在文中展示了,所有代码可以在我的github上找到。
我们会使用和上一篇一样的处理代码,把原始数据导入“plot_text”函数中。就像Julia做的那样,我用tidytext包把文本分割成立一个个双单词词组或者连续的成对词,接着再给“he”或“she”之类的单词过滤掉(停词)。
举个例子,我们发现 “Animal Farm”的介绍中在“he”后面跟随了5个动词,比如 “he refers” 和 “he accuses”。(请注意我把这类跟在代词后面词统一称呼为动词,尽管有些词是连词或者副词)
哪些词跟在“he”或者“she”后面的次数最多呢?我们把出现超过200词的词筛选出来。
这个图多少能反应点问题,女性更可能被设定为受害者 - “she screams”, “she cries”, 或 “she pleads”。男性更可能被设定为侵犯者 - “he kidnaps” or “he beats”。裆部不是所有和男性关联的词组都是负面的,像“he saves”/”he rescues” 这样的结构就很正面,但他们也是动作的发出者而不是承受者。
我们可以比较下和 “he” ,“she”关联的所有单词的数量,这可以让我们找到在性别间变动最大的常用词。
很多常用词在男女间的出现频率相当,比如“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”的现象也值得关注,因为小说中比起女性,男性更可能选择枪作为杀人的凶器。
这个数据展示了跟随着在性别代词后的动词的频率的差异,并以此分析故事中男女性角色的不同。然而这仅仅触及到了问题的表面,基于这个数据集可以做更多的深入研究。
我们也可以把这个研究从代词拓展到人物姓名,这会提高分析的精度。
重复一次,所有代码可以在这里找到。我希望你们能挖得更深。
注意:1.性别不是二分变量,请注意这个研究之针对维基百科申明的性别。举个例子,我们把singular they的情况忽略了,但要考虑复数代词是个不小的挑战。
2.我也把反身代词( “himself” 和 “herself”)之类的忽略了,它们不是我们研究的重点。
数据分析入门课程推荐:
数据分析入门及深入课程推荐
数据君的数据圈介绍:
爱数圈欢迎您
加入数据君高效数据分析社区,2种加人方式:
1:扫码加入
2、加入方式:
加我微信:seedata
转账298,先拉微信群,再邀请进小密圈
犹豫的、不懂的、咨询的不要加,加了也是僵尸,时间宝贵,你我都珍惜