#!/usr/bin/perl #script for evaluating P@10 @init = ("airplane", "airport", "animal", "art", "ball", "bar", "barcelona", "beach", "bear", "beauty", "beer", "berlin", "bicycle", "boat", "bridge", "building", "butterfly", "cake", "camera", "car", "cat", "cathedral", "child", "chocolate", "christmas", "couple", "cross", "cute", "dinner", "doll", "dress", "duck", "easter", "europe", "eye", "field", "fishing", "flower", "food", "fountain", "funny", "germany", "girl", "guitar", "hair", "happy", "hat", "horse", "hot", "ice", "kitchen", "lighthouse", "love", "man", "mirror", "model", "monument", "moon", "night", "painting", "paris", "park", "pool", "pub", "river", "rose", "sea", "selfportrait", "shoes", "silhouette", "spain", "spider", "sport", "storm", "street", "summer", "sunset", "table", "town", "train", "usa", "wedding"); $cumul_orig = 0; $cumul_fem = 0; $cumul_mal = 0; $cumul_loc = 0; $cumul_glo = 0; foreach $in (@init) { @images = (); #open the list of OK images @oks = (); open OL, "results/$in"; while(defined($line =
    )) { chomp($line); push(@oks, $line); } close OL; $ok_orig = 0; $ok_fem = 0; $ok_mal = 0; $ok_loc = 0; $ok_glo = 0; #get images from the initial Flickr ranking $ii = 0; $orig = "/mnt/user_survey/gender_concepts/flickr_gender/$in/original_rank"; open OR, $orig or die "cant open $orig\n"; while($ii < 10 && defined($ln = )) { @cut_line = split(/\t/, $ln); $out_image = "images/@cut_line[1]".'_'.@cut_line[2].'.jpg'; if(index("@oks", $out_image) != -1){$ok_orig++;} $ii++; } close OR; #get images from the female reranking $ii = 0; $orig = "/mnt/user_survey/gender_concepts/flickr_gender/$in/female_rank"; open OR, $orig or die "cant open $orig\n"; while($ii < 10 && defined($ln = )) { @cut_line = split(/\t/, $ln); $out_image = "images/@cut_line[1]".'_'.@cut_line[2].'.jpg'; if(index("@oks", $out_image) != -1){$ok_fem++;} $ii++; } close OR; #get images from the male reranking $ii = 0; $orig = "/mnt/user_survey/gender_concepts/flickr_gender/$in/male_rank"; open OR, $orig or die "cant open $orig\n"; while($ii < 10 && defined($ln = )) { @cut_line = split(/\t/, $ln); $out_image = "images/@cut_line[1]".'_'.@cut_line[2].'.jpg'; if(index("@oks", $out_image) != -1){$ok_mal++;} $ii++; } close OR; #get images from the local reranking $ii = 0; $orig = "/mnt/user_survey/gender_concepts/flickr_local2/$in/france_rank"; open OR, $orig or die "cant open france\n"; while($ii < 10 && defined($ln = )) { @cut_line = split(/\t/, $ln); $out_image = "images/@cut_line[1]".'_'.@cut_line[2].'.jpg'; if(index("@oks", $out_image) != -1){$ok_loc++;} $ii++; } close OR; #get images from the global reranking $ii = 0; $orig = "/mnt/user_survey/gender_concepts/flickr_local2/$in/all_rank"; open OR, $orig or die "cant open all\n"; while($ii < 10 && defined($ln = )) { @cut_line = split(/\t/, $ln); $out_image = "images/@cut_line[1]".'_'.@cut_line[2].'.jpg'; if(index("@oks", $out_image) != -1){$ok_glo++;} $ii++; } close OR; $cumul_orig = $cumul_orig + $ok_orig; $cumul_fem = $cumul_fem + $ok_fem; $cumul_mal = $cumul_mal + $ok_mal; $cumul_loc = $cumul_loc + $ok_loc; $cumul_glo = $cumul_glo + $ok_glo; $diff_gen = $ok_fem - $ok_mal; if($ok_fem eq $ok_mal) { $pls_gen++; } elsif($diff_gen == 1) { $one_fem++; } elsif($diff_gen == -1) { $one_mal++; } $diff_loc = $ok_loc - $ok_glo; if($ok_loc eq $ok_glo) { $pls_loc++; } elsif($diff_loc == 1) { $one_loc++; } elsif($diff_loc == -1) { $one_glo++; print "\"$in\", "; } } print "\n"; $p10_orig = $cumul_orig/820; $p10_fem = $cumul_fem/820; $p10_mal = $cumul_mal/820; $p10_loc = $cumul_loc/820; $p10_glo = $cumul_glo/820; print "original $p10_orig\n"; print "female $p10_fem\n"; print "male $p10_mal\n"; print "local $p10_loc\n"; print "global $p10_glo\n"; print "gen $pls_gen $one_fem $one_mal\n"; print "loc $pls_loc $one_loc $one_glo\n";