web-dev-qa-db-ja.com

人の名前を性別にマッピングするための優れたライブラリを知っている人はいますか?

人の名前やニックネームに基づいて、男性か女性かを推測できるライブラリまたはデータベースを探しています。何かのようなもの

john => "M",
mary => "F",
alex => "A", #ambiguous

英語名以外の名前(日本語、インド語など)をサポートするものを探しています。

「性別/性別を想定して人を怒らせる」という方針に沿って別の答えを得る前に、明確にするために、私のアプリケーションは誰とも対話しません。とにかくメールを送信したり、誰かに連絡したりすることはありません。尋ねるユーザーはいません。多くの場合、問題の人物は死亡しており、私が持っている唯一の情報は名前、生年月日、死亡日です。私が個人の性別を知りたい理由は、出力の文法をより良くし、後者の可能性のある検索を支援するためです。

90
Chas. Owens

名前の性別は、一般的なケースではプログラムで推測できないものです。名前データベースが必要です。 米国国勢調査局の無料の名前データベース です。

[〜#〜] edit [〜#〜]:2010名のリンクは無効になっていますが、コメントに機能するリンクとライブラリがあります。

66
Ayman Hourieh

gender.cは、オープンソース良い仕事をするCプログラムです。世界中の44568名のデータが含まれています。優れたドキュメントとファイル形式の説明(基本的にはプレーンテキスト)があるため、独自のアプリケーションから読むのは難しくないはずです。

著者の言うことは次のとおりです。

データの品質に関するいくつかの言葉

名の辞書は細心の注意を払って準備されています。たとえば、この辞書のトルコ語、インド語、韓国語の名前はすべて、複数のネイティブスピーカーによって個別に分類されています。また、現在見つかっている名前のみをリストするように特に注意しました。

これからの教訓?

変更は非常に慎重に行う必要があります(また、検索アルゴリズムに必要な並べ替えにも準拠する必要があります)。たとえば、「Sascha」はドイツの男の子の名前であることがわかっているため、著者は英語の「Sasha」が女の子の名前であると想定していません。 「Jan」がドイツの少年の名前であることを知って、私はそれが「Janet」の英語の短い形式であると決して仮定しませんでした。別の例として、「Esra」という名前があります。これはドイツでは男の子の名前ですが、トルコでは女の子の名前です。

プログラムは、名前が男性または女性である確率を計算します。名前のみを入力として使用することも、名前と原産国を使用して行うこともでき、結果が大幅に向上します。

ドイツのコンピューター雑誌c't 40 000 Namen のWebサイトからダウンロードできます。この記事はドイツ語ですが、心配する必要はありません。すべてのドキュメントは英語です。この記事に興味がない場合は、直接ftpリンク 717-182.Zip を参照してください。 Zipファイルには、ソースコード、Windows実行可能ファイル、データベース、およびドキュメントが含まれています。

70

「私は言った、「スー」という名前の男の子にとって人生は楽ではない」

...では、なぜそれをより難しくするのですか?あなたが性別を知る必要があるなら、ただ尋ねてください...そうでなければ、それについて心配しないでください。

31
Shog9

名前に基づいて性別を確率的に推測する無料のAPIを作成しました。上記のアプローチのいずれかを使用する代わりに、ソーシャルネットワークからのプロファイルの膨大なデータセットを使用して、確実性係数とともに確率的推測を提供します。また、国または言語IDによるオプションのフィルタリングもサポートしています。データセットに追加されるプロファイルが増えるにつれて、日ごとに改善されています。

http://genderize.io で自由に使用できます

[〜#〜] one [〜#〜]考慮すべきことは、命名規則が大きく依存しているため、人口統計を考慮するツールを使用することですこの。

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"}
28
Stromgren

以下は、機能しない可能性があり、ライセンスの条件に違反しない限りまとめて機能しない可能性がある2つの奇妙なアプローチです。

  1. Facebook API(私はほとんど何も知らないので、不可能な場合もあります)を使用して、2人の検索を実行します。 2つの数値を使用して、性別の確率を決定します。

  2. はるかに緩いがよりスケーラブルな、Google APIを使用して名前と性別固有の代名詞を検索し、数値を比較します。たとえば、 "Richard his"(フレーズとしてではなく)を検索すると592,000,000の結果がありますが、 "Richard her"は179,000,000だけです。

22
richardtallent

述べられた制約を考えると、あなたが書いているものは何であれ、 gender-neutral である限り、あなたがknow性別各インスタンスで呼び出されたい。

英語 と書く場合、 singular“ they” は性的に中立な三人称単数代名詞として文法的に問題ないことに注意してください。

良い例は、この質問のタイトルです。現在のまま:

…人の名前を性別にマッピングしますか?

次のように書けば、それほど厄介ではありません。

…人の名前を性別にマッピングしますか?
6
bignose

これはサービスではなく、データベースを備えた小さなアプリです。
http://www.codeproject.com/KB/cpp/genderizer.aspx

そして、このツールはドイツ語です:
http://www.faq-o-matic.net/2011/06/01/zu-einem-vornamen-das-geschlecht-finden/

そして、VBのもう1つ:
http://www.vbarchiv.net/tipps/tipp_1925-geschlecht-anhand-des-vornamens-ermitteln.html

「2011年に最もよく使用される名」リストと組み合わせることで、まともな何かを構築できるはずです。

4
Remy

また、ユーザーが男性または女性でなければならないことを想定するのは悪い習慣です。少数ではあるがかなりの数の「インターセックス」の人々がいて、そのほとんどはチェックする箱がないことに心から病気です。
bignose:「単数形」について興味深い。こんなに長い歴史があることに気づきませんでした。

4
Karl

それを自動化しようとすることから得られる唯一のものは、不幸なユーザーの束です。その国勢調査データから:

ジェームズ、ジョン、ロバート、マイケル、ウィリアム、デイヴィッド、リチャード、チャールズ、ジョセフ、トーマス、クリストファー、ダニエル、ポール、マーク、ドナルド、ジョージ、ケネット、スティーブン、エドワード、ブライアン、ロナルド、アンソニー、ケビン、ジェヴィン、ジェヴィンゲイリー、ティモシー、ホセ、ラリー、ジェフリー、フランク、スコット、エリック、ステファン、アンドリュー、レイモンド、グレゴリー、ジョシュア、ジェリー、デニス、ウォルター、パトリック、ピーター、ハロルド、ヘンリー、カール、アーサー、ライアン、ジョー、ジュアンジャック、アルバート、ジャスティン、テリー、ジェラード、キース、サミュエル、ウィリー、ローレンス、ロイ、ブランドン、アダム、フレッド、ビリー、ルイ、ジェレミー、アーロン、ランディ、ユージーン、カルロス、ラッセル、ボビー、ヴィクター、マーティン、ジェスショーン、クラレンス、ショーン、クリス、ジョニー、ジミー、アントニオ、トニー、ルイス、マイク、デール、カーティス、ノーマン、アレン、グレン、トラビス、リー、メルビン、カイル、フランシス、イエス、レイ、ジョエル、エディ、トロイ、アレキサンダー、マリオ、フランシスコ、マイケル、オスカー、ジェイ、アレックス、ジョン、ロニー、トミー、レオン、レオ、ウェスリー、ディーン、ダン、ルイス、コーリー、モーリス、バーノン、ロベルト、クライド、シェーン、サム、レスター、チャーリー、タイラー、ジーン、ブレット、エンジェル、レスリー、セシル、アンドレ、エルマー、ガブリエル、ミッチELL、ADRIAN、KARL、CORY、CLAUDE、JAMIE、JESSIE、CHRISTIAN、LONNIE、CODY、JULIO、KELLY、JIMMIE、JORDAN、JAIME、CASEY、JOHNNIE、SIDNEY、JULIAN、DARYL、VIRGIL、マーシャル、ペリー、マリオン、トレーシールネ、フレディ、オースティン、ジャッキー、ジョーイ、エヴァン、ダナ、ドニー、シャノン、アンジェロ、ショーン、リン、カメロン、ブレイク、ケリー、ジャン、アイラ、ルディ、ベニー、ロビン、ローレン、ノエル、デヴィン、キム、グアダルーペ、キャロル、サミー、マーティ、テイラー、エリス、ダラス、ローレンス、ドリュー、ジョディ、フランキー、パット、メルル、テレル、ダーネル、トミー、トビー、ヴァン、コートニー、ジャン、キャリー、サントス、オーブリー、モルガン、ルイ、スタチー、 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、エリン、オーガスティン、ヤング、ジョニー、アリエル、ダスティ、リンジー、トレーシー、スコッティ、サンディ、シドニー、ガイル、ドリアン、ラヴァーン、レフジオ、アイボリー、アンドレア、サン、デオン、キャロル、ヨン、ベリー、トリニダード、シャーリー、マリア、チャン、ロサリオ、ダンニー、フランス、タン、コニー、トーリー、ルーペ、ディー、ソン、 CHI、QUINN、MINH、THEO、LOU、CHUNG、VALENTINE、JAMEY、WHITNEY、SOL、CHONG、PARIS、OTHA、LACY、DONG、ANTONIA、KELLEY、CARROL、SHAYNE、VAL、JUDE、BRITT、HONG、LEIGH、GAYLE、 JAE、NICKY、LESLEY、MAN、KASEY、JEWELL、PATRICIA、LAUREN、ELISHA、MICHAL、LINDSAY、およびJEWEL

はすべて男性と女性の両方に有効な名前です。少女の名前がロバートであり、あなたのソフトウェアを含む誰もが彼女を男と呼び続けているなら、彼女はかなり怒っているでしょう。

3
nitromaster101

このアイデアは、ほとんどの言語では明らかに機能しません。

ただし、事前に国籍を伝えることができれば、さらに幸運を得ることができます。ほとんどのスラヴ言語(ロシア語、ポーランド語、ブルガリア語など)では、-v -ch -shiが男性的であるのに対し、-va -cha -ska(-aは一般的に女性的)で終わるすべての姓を安全に想定できます。

実際、姓には、語尾に応じて女性形と男性形があります。ただし、他の国(米国など)で使用されている同じ名前では、男性形のみが使用される場合があります。

同じことがファーストネームにも言えます(-a -yaは女性です)が、100%正確ではありません。

しかし、一般的には、十分に正確なライブラリを入手することはほとんどありません。

3

python package SexMachine はあなたのためにそれを行います。 。Jorg Michaelによる gender.c プログラムのデータに依存しています。

3
jm_tagarro

データベースがおそらく最も実用的なソリューションですが、楽しみたい場合は、名前を入力してこれらの3つのオプション(F、M、A )。

他の回答で提案されたデータベースに存在するデータセットを使用して、また他のデータを使用してトレーニングできます。

このソリューションを使用すると、以前に明確に分類されていない名前を処理でき、さまざまな言語も処理できます。言語を知っている場合は、言語をニューラルネットへの入力として渡すこともできます。

ニューラルネット(または他の機械学習)が分類の良い仕事をすると言うことができるかどうかは知りません。

3
chees

それは文化/地域に依存しています:アンドレアを取る、イタリア人は男性的であり、スウェーデンは女性の名前であり、アンドレアスは男性の名前であるため。ショーンは英語ではあいまいです。ラテン語やロシア語などの言語に偏角がある場合、最終的な文字は文法規則に従って変更され、

あいまいさの別の原因は、個人名と同一の姓です。

私の意見では、一般的に解決することは不可能です。

3
Giulio Vian

Zディレクトリ(vettrasoft.com)にはC言語機能があり、次のように機能します。

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++関数およびオブジェクトとともに)。ただし、名前は非常に英語指向です。この表は進行中の作業であり、徐々に更新されます。

2
gorth

無料ではありませんが、これは私が以前に使用した素敵なライブラリです。

NetGender for .NETを使用すると、名前の検証、解析、性別の判断をカスタムアプリケーションにすばやく簡単に組み込むことができます。特定のフィールドに有効な個人または会社が含まれているかどうかを正確に確認します。 NetGenderは、正確に性別を決定するために、8,000以上の企業名辞書と組み合わせて、100,000以上の民族的に多様な名前辞書を使用しています。

http://www.softwarecompany.com/dotnet/netgender.htm

1
Richard West

まあ、もうありません。 IBM 特許取得済み 少し前のアイデア。

したがって、何らかのレベルの柔軟性(名前のリスト以外)を探している場合は、ユーザーに尋ねる(息をのむ!)か、単に権利をIBMに支払う必要があります:)

いずれにせよ、そのような自動検出は、性別があいまいな名前を持っている、または単に親を意味する多くの人々にとって迷惑です。彼らにとってこれを難しくしないようにしましょう。

1
lfaraone

名前と性別のマップは機能しますが、多文化の国では推測に似ています。たとえば、ポーランド語のマリアンは典型的な男性の名前ですが、イギリスの同じ名前は女性の名前です。世界中に移住する人々の時代には、そのようなデータベースが非常に正確かどうかはわかりません。幸運を!

1

あなたは私のpython性別検出プロジェクト https://github.com/muatik/genderizer を見ることができます

著者の性別や名前(例:ツイートなど)を探している著者の性別を検出しようとします。

また、パフォーマンスのためにmongodb、memcachedもサポートしています。

1
Muatik

誕生日があると言うのは面白いです。それが役立つ可能性があります。私は名前の人気の歴史のデータベースを見てきました。

映画「スプラッシュ」(1984)では、明らかに「マディソン」は女の子の名前ではないため、ダリル・ハンナのキャラクターがマディソン・アベニューの道路標識から「マディソン」という名前を選んだのは面白かったです。

24年後、マディソンは女の子の赤ちゃんの4番目に人気のある名前です!


政府からの名前の歴史 (過去100年間のメアリーの悲しい衰退をチェックしてください。)


私が子供の頃にホワイトハウスに手紙を書いたとき、リチャード・ニクソン(または、おそらく秘書)が「ミス・レット・アンダーソン」宛てに、歴史的な場所の写真をいくつか送ってくれました。 「ミス・レット?」意味さえありません!クラークゲーブルのレット(口ひげを生やして、風と共に去りぬ!)とビビアンリーのスカーレットの違いを本当に教えてもらえませんか? 「リチャード・ニクソンでさえ魂を持っている」というニール・ヤングの保証にもかかわらず、私は彼を決して許さない。

1
Nosredna

そのようなサービスは、許容レベルの精度で存在することはできないと確信しています。克服できないと思う問題は次のとおりです。

  • 男性と女性の両方を表す名前がたくさんあります。
  • 1つの国しか考慮していなくても、この世界にはさまざまな名前があります。
  • ジョニー・キャッシュによって雄弁に提起された「スーという名前の少年」問題があります:-)
1
Steve McLeod

いくつかの文化はユニセックスの名前を持っています-私のような。だったらどうしようか?答えは明白で単純だと思います-仮定しないでください-あなたは犯罪を引き起こす可能性があります。必要かどうか、そうでない場合は性的中立性を尋ねてください。

1
Preet Sangha

チェックアウト http://genderchecker.com/

1
Chief Kaka

私がやることは、名前を取り、facebook apiに対して検索するハックを作成することです。次に、結果のユーザーを見て、そのうちの何人が女性か男性かを数えます。その後、パーセンテージを返すことができます。もう乗り越えられない。 :)

0
ajayjapan

ただし、このようなサービスはありません。

  • 個人名の生リスト または
  • いくつかのルールに従って性別を推測します(例:-o =>男性、-ela、-a =>女性)

一部の国(ドイツなど)では、人に与えられる名前は法律によって制限されています-その問題に関する出版物があり、それが収穫される可能性があります(ただし、現時点ではわかりません)。

0
miku

私はそのようなサービスを知りません。ただし、おそらく探しているデータを見つけることができます。米国政府は、名前の有病率と彼らが愛着のある人の性別に関するデータを公開しています。社会保障局にはそのような page があり、国勢調査もそうかもしれないが、私は時間をかけて見ていない。おそらく他の世界政府も同様のことをしています。

0
rmeador

this ハッカーニュースから discussion これについて

0
Surya

これは実際にはプログラミングの問題ではありません-確率表を取得することになります。

私の知る限り、蒸留された形式の公開データベースはありません。国勢調査データからこれを構築するか、誰かからデータを購入することができます。

たとえば、これは カナダの確率表を販売している人 です。

0
Uri

私見、個人名から性別を判断することは一般に悪い考えです。多くの名前はインターセクシュアル(悲しみ、これも言葉ですか?.

いくつかの愚かな例、頭に浮かんだほんの数例(私の世界の一部、CEから)

Vanja-女性、ここから東の国、主に男性
アレックス-インターセックス(女性サンドラ、男性サンドロの略)
ロビン-西洋文化では、両方の可能性があります

世界の一部の地域では、名前の終わり方を見ることで、性別を判別できます。たとえば、マリヤ、サンドラ、イヴァナ、ペトラ、サラ、ルシア、アナ-これらの女性の名前のほとんどが「ja」または「ra」で終わることがわかります。他の例もあります。

それでも、ユーザーに性別を尋ねる方が良いと思います。

0
Rook