Bechdelerator
Sarah Muenzinger
sarahmunzi
Seema Ullal
seemaster
Who are We?
The Bechdel Test
The Old Way
How It Works
Get the script from IMDSB using our web scraper
request(allMovies, function(err, response, html){
var $ = cheerio.load(html);
$ = cheerio.load($("h1:contains(\"All Movie Scripts\")").parent()[0])
var movieTable = $("h1:contains(\"All Movie Scripts\")").parent();
var allMovieTitles = $('a[href^="/Movie Scripts"]').map(function(thing){
return $(this).text()
})
allMovieTitles = Array.prototype.slice.call(allMovieTitles);
res.render('./index.html', {allMovieTitles: allMovieTitles});
})
How It Works
Analyze the script using our algorithm to determine characters and the conversations that they have
var ladyConvoCount = 0;
var linesAboutMen = 0;
var nameCatcher = /\s[A-Z]+\s/g; //potential names are in all capital letters
var names = script.match(nameCatcher); //get all potential names from the script
names = names.filter(function(word){
word = word.replace(/(\r\n|\n|\r)/gm,"").trim(); //remove new lines and such from the potential names
return word.length > 1; //remove words that are either 0 or 1 letters long
});
var lines = script.split(nameCatcher); //'lines' are found between two names
var conversations = [];
for(var nameIndex = 0; nameIndex < (names.length); nameIndex++){
var convo = {};
convo.personA = names[nameIndex];
convo.personB = names[nameIndex+1];
convo.line = lines[nameIndex]; //a conversation contains 2 characters and the line they say to one another
if (convo.personA && convo.personB) {
if(womenNames.indexOf(convo.personA.trim()) > -1 && womenNames.indexOf(convo.personB.trim()) > -1){
ladyConvoCount++; //check if both of the characters are women
if(convo.line.match(/he|him|his/)){
linesAboutMen++; //if the conversation is between women, check if it is about a man
}
}
conversations.push(convo);
}
}
How It Works
Use an API to determine which characters are likely to be female (based on their names)
GET https://api.genderize.io/?name=peter
// Returns the following JSON object
{
"name":"peter",
"gender":"male",
"probability":"0.99",
"count":796
}
How It Works
Use D3 to generate a visualization of the results
Sarah
sarahmunzi
www.munzicodes.com
Seema
seemaster
www.seemaullal.com
Questions?
Bechdelerator
By Seema Ullal
Bechdelerator
Talk for Women Who Code Hacknight, June 2015
- 1,601