有没有人知道一个好的图书馆将人的姓名映射到他或她的性别?
我正在寻找一个图书馆或数据库,可以根据他或她的名字或昵称提供一个人是男性还是女性的猜测。 就像是
john => "M", mary => "F", alex => "A", #ambiguous
我正在寻找一些支持英文名称以外的名称(如日文,印度文等)。
在我得到另外一个答案之前,“你要冒犯他人的性别/性别”让我明白,我的申请不会与任何人交stream。 它不会发送电子邮件或联系任何人。 有没有用户问。 在很多情况下,这个人是死的,我唯一的信息是姓名,出生date和死亡date。 我想知道个人的性别的原因是为了使输出更好的语法,并帮助可能来自后者的search。
名字的性别是在一般情况下不能被程序化推断的东西。 你需要一个名字数据库。 这里是美国人口普查局的免费名字数据库 。
编辑 :2010名称的链接已经死了,但有评论中的工作链接和图书馆。
gender.c是一个开源的 C程序,做得很好。 它带有来自世界各地的44568个名字的数据。 有很好的文档和文件格式的描述(基本上是纯文本),所以不应该从你自己的应用程序难以阅读。
以下是作者所说的:
关于数据质量的几句话
名字的字典已经准备得非常谨慎。 例如,本字典中的土耳其语,印度语和韩语名都由几个母语人士独立分类。 我还特别注意只列出目前可以find的那些名字。
从这个教训?
任何修改都应该非常小心(并且必须遵守searchalgorithm所要求的sorting)。 例如,知道“Sascha”是德国男孩的名字,作者从不认为英文“Sasha”是一个女孩的名字。 知道“Jan”是德国男孩的名字,我从来没有认为它也是“Janet”的英文缩写。 另一个例子是“Esra”这个名字。 这是德国男孩的名字,而是土耳其女孩的名字。
该程序计算该名称为女性的男性的概率。 它可以单独input名称,也可以与名称和来源国进行比较,从而获得更好的结果。
你可以从德国电脑杂志网站上下载40000 Namen 。 这篇文章是德文的,但不用担心,所有的文档都是英文的。 这里是直接的ftp链接0717-182.zip,如果你对这篇文章不感兴趣的话。 zip文件包含源代码,Windows可执行文件,数据库和文档。
“我告诉你,对一个叫苏的男孩来说,生活是不容易的。”
那么,为什么更难呢? 如果你需要知道性别,只要问问…否则,不要担心。
我已经build立了一个免费的API,根据名字给出性别概率猜测。 我不是使用上面提到的任何方法,而是使用来自社交networking的巨大数据集来提供概率猜测和确定性因素。 它还支持通过国家或语言ID的可选过滤。 随着更多configuration文件添加到数据集中,日益变好。
你应该考虑的一件事是使用一个考虑到人口统计学的工具,因为命名约定将严重依赖于这个。
例
http://api.genderize.io?name=kim {"name":"kim","gender":"female","probability":"0.89","count":1440} http://api.genderize.io?name=kim&country_id=dk {"name":"kim","gender":"male","probability":"0.95","count":44,"country_id":"dk"}
这里有两种古怪的方法,甚至可能不起作用,并且在不违反许可证条款的情况下可能无法正常工作:
-
使用Facebook API(我几乎不知道,甚至不可能)执行两次search:一个用于FB男性用户,一个用于女性。 用这两个数字来决定性别的概率。
-
使用Google API并search名称加上性别特有的代词,然后比较数字,这样会更松散但更具可扩展性。 例如,search“Richard his”(不是短语)的search结果有592,000,000个,而“Richard her”却只有1.79亿个search结果。
考虑到你所陈述的限制,你最好的select是不pipe你写的是不是性别中立,除非你知道他们想要在每种情况下被称为什么性别。
如果用英语写作,记住单数的“他们”在语法上是一个不分性别的第三人称单数代词。
这个问题的标题就是一个很好的例子。 与目前一样:
将一个人的名字映射到他或她的性别?
如果写成这样就不那么尴尬了:
将一个人的名字映射到他们的性别?
假设用户必须是男性还是女性,这也是一个不好的做法。 有一小部分“双性恋”的人,他们中的大多数人心疼地没有一个盒子打勾。
bignose:关于“单数他们”有趣。 我没有意识到它有如此悠久的历史。
尝试将其自动化的唯一一件事是一群不满意的用户。 根据该普查数据:
詹姆斯,约翰,罗伯特,迈克尔,威廉,大卫,理查德,查尔斯,约瑟夫,托马斯,克里斯托弗,丹尼尔,保罗,马克,唐纳德,乔治,肯尼,史蒂文,爱德华,布赖恩,罗纳尔德,安东尼,凯文, GARY,TIMOTHY,JOSE,LARRY,JEFFREY,FRANK,SCOTT,ERIC,STEPHEN,ANDREW,RAYMOND,GREGORY,JOSHUA,JERRY,DENNIS,WALTER,PATRICK,PETER,HAROLD,HENRY,CARL,ARTHUR,RYAN,JOE,JUAN, JACK,ALBERT,JUSTIN,TERRY,GERALD,KEITH,SAMUEL,WILLIE,LAWRENCE,ROY,BRANDON,ADAM,FRED,BILLY,LOUIS,JEREMY,AARON,RANDY,EUGENE,CARLOS,RUSSELL,BOBBY,VICTOR,MARTIN,JESSE,在facebook上与Shwan联接联系SHAWN,CLARENCE,SEAN,CHRIS,JOHNNY,JIMMY,ANTONIO,TONY,LUIS,MIKE,DALE, ALEXANDER,MARIO,FRANCISCO,MICHEAL,OSCAR,JAY,ALEX,JON,RONNIE,TOMMY,LEON,LEO,WESLEY,DEAN,DAN,LEWIS,COREY,MAURICE,VERNON,ROBERTO,CLYDE,SHANE,SAM,LESTER,CHARLIE, TYLER,GENE,BRETT,ANGEL,LESLIE,CECIL,ANDRE,ELMER,GABRIEL,MITCH ELL,ADRIAN,KARL,CORY,CLAUDE,JAMIE,JESSIE,CHRISTIAN,LONNIE,CODY,JULIO,KELLY,JIMMIE,JORDAN,JAIME,CASEY,JOHNNIE,SIDNEY,JULIAN,DARYL,VIRGIL,MARSHALL,PERRY,MARION,TRACY, RENE FREDDIE AUSTIN JACKIE JOEY EVAN DANA DONNIE SHANNON ANGELO SHAUN LYNN CAMERON BLAKE KERRY JEAN IRA RUDY BENNIE ROBIN LOREN NOEL DEVIN KIM GUADALUPE, CARROLL,SAMMY,MARTY,TAYLOR,ELLIS,DALLAS,LAURENCE,DREW,JODY,FRANKIE,PAT,MERLE,TERRELL,DARNELL,TOMMIE,TOBY,VAN,COURTNEY,JAN,CARY,SANTOS,AUBREY,MORGAN,LOUIE,STACY, MICAH,BILLIE,LOGAN,DEMETRIUS,ROBBIE,KENDALL,ROYCE,MICKEY,DEVON,ASHLEY,CAREY,SON,MARLIN,ALI,SAMMIE,MICHEL,RORY,KRIS,AVERY,ALEXIS,GERRY,STACEY,CARMEN,SHELBY,RICKIE, BOBBIE,OLLIE,DENNY,DION,ODELL,MARY,COLBY,HOLLIS,KIRBY,CRUZ,MERRILL,LANE,CLEO,BLAIR,NUMBERS,CLAIR,BERNIE,JOAN,DOMINIQUE,TRISTAN,JAME,GALE,LAVERNE,ALVA,STEVIE, ERIN,AUGUSTINE,YOUNG,JOHNIE,ARIEL,DUSTY,LINDSEY,TRACEY,SCOTTIE,SANDY, SYDNEY,GAIL,DORIAN,LAVERN,REFUGIO,IVORY,ANDREA,SANG,DEON,CAROL,YONG,BERRY,TRINIDAD,SHIRLEY,MARIA,CHANG,ROSARIO,DANNIE,FRANCES,THANH,CONNIE,TORY,LUPE,DEE, CH </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> JAE,NICKY,LESLEY,MAN,KASEY,JEWELL,PATRICIA,LAUREN,ELISHA,MICHAL,LINDSAY和JEWEL
都是男性和女性的名字。 如果一个女孩的名字叫罗伯特,包括你的软件在内的每个人都不断地给她打电话,那她就会生气。
虽然数据库可能是最实际的解决scheme,但是如果你想获得一些乐趣,也许你可以尝试编写一个neural network(或者使用一个neural network库),并输出这三个选项之一(F,M,A )。
您可以使用其他答案build议的数据库中存在的数据集以及您拥有的任何其他数据进行训练。
这个解决scheme将允许您处理以前没有特别分类的名称,并处理不同的语言。 您可能想要将语言(如果您知道的话)作为input传递给neural network。
我不知道我可以说neural network(或任何其他机器学习)将做一个很好的分类虽然。
这是文化/地区的依赖:采取安德烈,意大利人是阳刚之气,因为瑞典是一个女性的名字,而安德烈亚斯是男性; 肖恩的英文含糊不清。 如果一种语言像拉丁语或俄语那样有偏差,最后的字母会根据语法规则而改变,
歧义的另一个来源是与姓氏相同的姓氏。
在我看来,它是不可能解决的一般。
这个想法显然不适用于大多数语言。
但是,如果您事先可以说出国籍,那么您可能会有更多的运气。 在大多数斯拉夫语言(如俄语,波兰语,保加利亚语)中,您可以放心地假设以-va -cha -ska结尾的所有姓氏(-a一般都是女性),而-ch-shi则是男性。
事实上任何一个姓都有女性和男性的forms,取决于结局。 在其他国家(例如美国)使用的相同名称可能只使用男性forms。
名字也是如此(-a -ya是女性化的),但并不是100%准确的。
但总的来说,你很难得到一个足够准确的图书馆。
python软件包SexMachine会为你做。 鉴于任何名字,如果它是男性,女性或男女皆宜的返回。 它依赖于Jorg Michael的gender.c程序的数据。
我没有使用它,但IBM有一个全球名称分析库(价格!),似乎相当全面。
这不是一项服务,而是一个数据库的小应用程序:
http://www.codeproject.com/KB/cpp/genderizer.aspx
而这个工具是德文的:
http://www.faq-o-matic.net/2011/06/01/zu-einem-vornamen-das-geschlecht-finden/
另一个在VB中:
http://www.vbarchiv.net/tipps/tipp_1925-geschlecht-anhand-des-vornamens-ermitteln.html
我想结合一些“2011年最常用的名字”名单,你应该能够build立一些体面的。
Z目录(在vettrasoft.com)有一个C语言的function,像这样工作:
void func() { char c = z_guess_sex_byfirstname ("Lon"); switch(c) { case 'M': std::cout << "It's a boy!\n"; break; case 'F': std::cout << "It's a girl!\n"; break; case 'B': std::cout << "this name is for both sexes\n"; break; case '?': std::cout << "sex unknown sorry\n"; break; } }
它是数据库驱动的,表中有我认为的10,000多个名字,但是你需要下载和安装z目录(包括许多其他地形项目,如国家,地理标志,机场,州,地区代码,邮政编码等等以及用于访问数据的c ++函数和对象)。 然而,这些名字是非常英语的。 该表是一个正在进行的工作,并逐步更新。
名字 – 性别地图可以工作,但在多文化国家更像是猜测。 我可以举一个例子:波兰语的玛丽安是一个典型的男性名字,而英国的同名是女性的名字。 在全球移民的时代,我不确定这个数据库是否准确。 祝你好运!
有些文化有男女皆宜的名字 – 像我的一样。 那你怎么办呢? 我认为答案很简单 – 不要假设 – 你可能会犯罪。 只要问是否需要,否则性别中立。
那么,现在不行了。 IBM不久前就把这个想法专利了。
因此,如果您正在寻找任何级别的灵活性(除了名称列表以外的其他名称),您将不得不(或者)向用户询问,或者直接向IBM支付权利:)
无论如何,这样的自动检测对许多性别模糊的人来说是烦人的,甚至只是意味着父母。 我们不要让这个更难。
这不是免费的,但这是我以前使用过的一个不错的图书馆:
NetGender for .NET允许您快速轻松地将名称validation,parsing和性别决定build立到您的自定义应用程序中。 准确地validation某个特定字段是否包含有效的个人或公司。 NetGender使用100,000+种族多样的名词词典,结合8000多个公司名称词典来确保精确的性别决定。
有趣的是,你说你有出生date。 这可能有帮助。 我已经看到名字stream行的历史数据库。
在电影“飞溅”(1984)中,Darryl Hannah的人物从麦迪逊大道的路牌中select了“麦迪逊”这个名字是很有趣的,因为显然“麦迪逊”不是女孩的名字。
24年后的今天,麦迪逊是第四个最受女孩欢迎的名字!
从政府的名字历史。 (看看玛丽在过去的一百年中悲惨的衰落。)
当我写信给白宫的时候,理查德·尼克松(Richard Nixon)(或者也许是一名秘书)用一些对“瑞德·安德森小姐”的历史地方的照片回应了我。 “瑞德小姐? 它甚至没有意义! 我们真的不能分辨克拉克·盖博的瑞德(带着胡子,飘在风中!)和李维纶的斯嘉丽之间的区别吗? 我不会原谅他,尽pipe尼尔·杨保证“尼克松甚至有灵魂”。
我很确定没有这样的服务能够以可接受的准确度存在。 以下是我认为无法解决的问题:
- 男人和女人都有很多名字。
- 世界上有很多不同的名字,即使你只考虑一个国家。
- Johnny Cash雄辩地提出了“A Boy Sous Sue”问题:-)
你可以看看我的Python性别检测项目https://github.com/muatik/genderizer
它试图检测作者的性别,看他们的名字和/或样本文本(例如推特)。
而且它还支持mongodb,memcached的性能。
这不是一个真正的编程问题 – 它归结为一个概率表。
AFAIK没有以蒸馏forms提供的公共数据库。 你可以根据人口普查数据build立这个数据,也可以从某人那里购买数据。
例如,这是销售加拿大概率表的人 。
恕我直言,这是一个普遍的坏主意,从个人的名字来确定性别。 很多名字是间性的(好悲痛,这是甚么一个词?? :-),也可能是一种文化中的一种性别,另一种文化中的另一种性别。
几个愚蠢的例子,只有几个想到(从我的世界,CE)
Vanja – 女性,在这里东部国家,大多是男性
亚历克斯 – 双性恋(桑德拉,女性和桑德罗,男性的简称)
罗宾 – 在西方文化中,可以兼而有之
在世界的某些地方,可以通过查看名字的结尾来确定一个人的性别。 例如,Marija,Sandra,Ivana,Petra,Sara,Lucija,Ana–你可以看到大多数这些女性名字以“ja”或“ra”结尾。 还有其他的例子。
不过,我认为只是要求用户进行性爱更好。
从黑客新闻讨论了这个
我知道没有这样的服务。 但是,您也许可以find您要查找的数据。 美国政府公布关于名字的stream行和他们所属的人的性别的数据。 社会保障局有这样一个页面 ,普查也可以,但我没有花时间看。 也许世界其他国家的政府做类似的事
我知道没有这样的服务,但..
- 你可以从一个原始的人名或者名单开始
- 根据一些规则来猜测性别(例如-o =>男性,-ela,-a =>女性)
在一些国家(如德国),一个人的名字可能受到法律的限制 – 也许有一些关于这个问题的出版物可以收集(但我现在还不知道)。
我所要做的就是制作一个攻击名称,然后在Facebook的api上进行search。 然后看看由此产生的用户,并计算其中有多less是女性还是男性。 您然后可以返回一个百分比。 没有那么不可逾越的了。 🙂
只要问人,如果他们很好,他们会给你他们的'M'或'F',如果他们不是,那么给'A'。