Có ai biết về một thư viện tốt để ánh xạ tên một người với giới tính của họ không? [đóng cửa]


90

Tôi đang tìm một thư viện hoặc cơ sở dữ liệu có thể đưa ra các phỏng đoán về việc một người là nam hay nữ dựa trên tên hoặc biệt hiệu của người đó. Cái gì đó như

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

Tôi đang tìm kiếm thứ gì đó hỗ trợ các tên khác với tên tiếng Anh (chẳng hạn như tiếng Nhật, tiếng Ấn Độ, v.v.).

Trước khi tôi nhận được một câu trả lời khác cùng dòng "bạn sẽ xúc phạm mọi người bằng cách giả định giới tính / giới tính của họ", hãy nói rõ, ứng dụng của tôi không tương tác với bất kỳ ai. Nó không gửi email hoặc liên hệ với bất kỳ ai trong đó. Không có người dùng để hỏi. Trong nhiều trường hợp, người được đề cập đã chết, và thông tin duy nhất tôi có là tên, ngày sinh và ngày mất. Lý do tôi muốn biết giới tính của từng cá nhân là để làm cho ngữ pháp của đầu ra đẹp hơn và hỗ trợ các tìm kiếm có thể xảy ra sau này.


33
Wow ... mọi người dường như đang trả lời câu hỏi "tôi có nên làm điều này", thay vì câu hỏi được hỏi "làm thế nào để làm điều này?" Không ngạc nhiên, chỉ thú vị.
bsneeze

9
Tôi thực sự nghĩ rằng đây là một câu hỏi tuyệt vời. Nếu bạn truy cập vào một trang web và 90% thời gian nó xác định giới tính của bạn, tôi có thể thấy lợi ích. Tôi ước TV của tôi có thể làm được như vậy. Tôi đang xem các bản phát lại của King of the Hill trên một chuyến bay gần đây và cứ 3 phút lại có một quảng cáo cho "máy mát xa cá nhân".
Uri

6
@mP Chà, cách để đi từ việc đoán giới tính để làm cho ngữ pháp đẹp hơn cho đến việc phân tích chủng tộc.
Chà. Owens

2
chas, không phải thứ mà mọi người không muốn cho bạn mà vì một thứ đạo đức, nó giống như nó không có ý nghĩa ngay từ đầu, vì vậy bạn đang yêu cầu một giải pháp thất bại. Ngoài ra, bạn chọn ngôn ngữ khác với tên tiếng Anh, và khi tham chiếu giữa các nền văn hóa, nó thậm chí còn phức tạp hơn. đối với tôi, đó là một không đi.
zalew

2
Làm thế nào bạn có thể biết một tên là nam hay nữ? Alex có thể là viết tắt của Alexander (nam) hoặc Alexandra (nữ). Tôi biết một Micah là nam và một là nữ. Còn tên nước ngoài thì sao?
Gabe

Câu trả lời:


66

Giới tính của một cái tên là thứ không thể được lập trình suy ra trong trường hợp chung. Bạn cần một cơ sở dữ liệu tên. Đây là cơ sở dữ liệu tên miễn phí từ Cục điều tra dân số Hoa Kỳ .

CHỈNH SỬA : Liên kết cho tên 2010 đã chết nhưng vẫn có các liên kết hoạt động và một thư viện trong các nhận xét.


2
Điều đó thật tuyệt. Có vẻ như đó chỉ là những gì người hỏi cần. Những cái tên mơ hồ có thể có giới tính được "đoán" dựa trên tần suất của Nam so với tần suất của Nữ.
steepretzel

1
Tôi đã xây dựng một thư viện cho việc này bằng cách sử dụng dữ liệu Điều tra dân số và nó hoạt động rất tốt! Các ứng dụng tiềm năng: phân tích, chọn giới tính giọng nói IVR.
Chris McCall

9
Đây là tên -> giới tính từ dữ liệu điều tra dân số dưới dạng python dict: raw.github.com/Bemmu/uality-from-name/master/uality.py
Bemmu

3
Liên kết ban đầu đã chết, nhưng điều tra dân số vẫn duy trì danh sách. Một phiên bản dành riêng cho những năm 1990 (tôi không biết tại sao) có ở đây: medus.gov/genealogy/www/data/1990surnames/names_files.html
Chipmonkey

2
22MB tên bé Mỹ với giới tính theo năm sinh: ssa.gov/oact/babynames/limits.html (liên kết hợp lệ vào tháng Bảy năm 2015)
Dylan Hogg

70

giới.c là một chương trình C mã nguồn mở hoạt động tốt. Nó đi kèm với dữ liệu cho 44568 tên từ khắp nơi trên thế giới. Có tài liệu tốt và mô tả về định dạng tệp (về cơ bản là văn bản thuần túy), vì vậy sẽ không khó đọc nó từ ứng dụng của riêng bạn.

Đây là những gì tác giả nói:

Vài lời về chất lượng dữ liệu

Từ điển tên đã được chuẩn bị hết sức cẩn thận. Ví dụ, tên Thổ Nhĩ Kỳ, Ấn Độ và Hàn Quốc trong từ điển này đều đã được phân loại độc lập bởi một số người bản ngữ. Tôi cũng đặc biệt lưu ý chỉ liệt kê những cái tên hiện có thể được tìm thấy.

Bài học từ điều này?

Mọi sửa đổi cần được thực hiện rất thận trọng (và chúng cũng phải tuân thủ việc sắp xếp theo yêu cầu của thuật toán tìm kiếm). Ví dụ, khi biết rằng "Sascha" là tên con trai ở Đức, tác giả không bao giờ cho rằng "Sasha" trong tiếng Anh là tên con gái. Biết rằng "Jan" là tên con trai ở Đức, tôi không bao giờ cho rằng nó cũng là một dạng viết tắt tiếng Anh của "Janet". Một trường hợp điển hình khác là tên "Esra". Đây là tên con trai ở Đức, nhưng tên con gái ở Thổ Nhĩ Kỳ.

Chương trình tính xác suất để tên nam là nữ. Nó có thể làm như vậy chỉ với tên như đầu vào hoặc với tên và quốc gia xuất xứ, điều này cho kết quả tốt hơn đáng kể.

Bạn có thể tải xuống từ trang web của tạp chí máy tính Đức c't 40 000 Namen . Bài viết bằng tiếng Đức nhưng đừng lo, tất cả tài liệu đều là tiếng Anh. Đây là link ftp trực tiếp 0717-182.zip nếu bạn không quan tâm đến bài viết. Tệp zip chứa mã nguồn, tệp thực thi cửa sổ, cơ sở dữ liệu và tài liệu.


Điều này là tuyệt vời, cảm ơn bạn.
Dale Athanasias

Xem tại đây để biết cổng python - pypi.python.org/pypi/SexMachine
philshem

33

"Tôi nói với bạn, cuộc sống không dễ dàng đối với một cậu bé tên 'Sue.'"

... Vì vậy, tại sao làm cho nó khó hơn? Nếu bạn cần biết giới tính, chỉ cần hỏi ... Nếu không, đừng lo lắng về điều đó.


15
@Chas: ngay cả khi bạn quản lý để thực hiện đúng 80% thời gian, điều đó vẫn sẽ khiến hai trên mười người sử dụng phần mềm của bạn khó chịu. Không tốt lắm ... Tôi hiểu động cơ, nhưng bạn thực sự nên diễn đạt lại các thông điệp của mình sao cho chúng phân biệt giới tính.
Shog9

2
Không biết có ai còn nhớ "Pat" từ SNL không.
erickson

8
Đọc lại bài này, tôi đang giảng kinh khủng ... Đừng có ý dập tắt ý tưởng của bạn, tôi nghĩ đó là một ý tưởng thú vị ... Nhưng cũng rất mạo hiểm. Tôi đã từng làm công việc tiếp thị qua điện thoại, và dù bạn có biết bao nhiêu cái tên, dù bạn có nhận diện giọng nói giỏi đến đâu, thì cuối cùng bạn vẫn đoán sai ... và điều đó chẳng bao giờ thú vị. Và vì vậy, đó là điều tôi sẽ tránh, trừ khi có một khoản tiền lớn, lớn để quản lý đoán đúng .
Shog9

3
Tôi sẽ nghe lời khuyên của Shog9. Trừ khi đơn đăng ký của bạn sẽ sử dụng các ngôn ngữ khác ngoài tiếng Anh, có thể dễ dàng hơn nếu chỉ sử dụng đại từ trung tính về giới tính - ví dụ: họ, một, s / anh ấy, v.v.
Calvin

11
Bạn gái tôi tên là Kevan. Cô ấy có đủ người đoán sai giới tính của mình từ tên của cô ấy, cô ấy không cần máy tính cũng làm được. Điều cần lưu ý là tạo một mục nhập cơ sở dữ liệu cho biết giới tính của ai đó dựa trên suy đoán của máy tính; những người nhìn vào đó có thể cho rằng nó được cung cấp bởi chính người đó và thực sự bối rối khi các giả định của họ hóa ra là sai (trái ngược với việc chỉ hơi nhầm lẫn khi chỉ dựa vào tên gọi).
Brian Campbell

29

Tôi đã xây dựng một API miễn phí đưa ra phỏng đoán có xác suất về giới tính dựa trên tên. Thay vì sử dụng bất kỳ cách tiếp cận nào đã đề cập ở trên, thay vào đó, tôi sử dụng một tập dữ liệu khổng lồ về hồ sơ từ các mạng xã hội để đưa ra dự đoán xác suất cùng với yếu tố chắc chắn. Nó cũng hỗ trợ lọc tùy chọn thông qua id quốc gia hoặc ngôn ngữ. Nó đang trở nên tốt hơn từng ngày khi nhiều hồ sơ được thêm vào tập dữ liệu.

Sử dụng miễn phí tại http://genderize.io

Một điều bạn nên cân nhắc là sử dụng một công cụ có tính đến nhân khẩu học, vì các quy ước đặt tên sẽ phụ thuộc rất nhiều vào điều này.

Thí dụ

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

2
Phần mở rộng mã - genderize.io/#extensions
philshem

22

Dưới đây là hai cách tiếp cận kỳ quặc thậm chí có thể không hoạt động và có thể sẽ không hiệu quả nếu không vi phạm các điều khoản của giấy phép:

  1. Sử dụng API Facebook (mà tôi hầu như không biết gì, thậm chí có thể không thực hiện được) để thực hiện hai tìm kiếm: một cho người dùng FB nam có tên đó và một cho nữ. Sử dụng hai con số để xác định xác suất giới tính.

  2. Lỏng hơn nhiều nhưng có thể mở rộng hơn, sử dụng API Google và tìm kiếm tên cùng với đại từ giới tính cụ thể và so sánh các con số. Ví dụ: có 592.000.000 kết quả cho tìm kiếm "Richard của anh ấy" (không phải là một cụm từ), nhưng chỉ có 179.000.000 cho "Richard cô ấy".


Ngoài sự đồng thuận chung về việc phần mềm cố gắng đoán những thứ như giới tính từ tên đầu tiên, đây là câu trả lời thuật toán thực sự thú vị cho câu hỏi ban đầu. Làm tốt.
peSHIr

Ý tưởng tuyệt vời. Bạn cũng có thể thêm vào một số từ trong ngôn ngữ của một quốc gia nhất định để bản địa hóa nó.
Nosredna

Điểm hay, Nosrenda ... tất nhiên Google cũng cho phép bạn lọc kết quả tìm kiếm theo mã ngôn ngữ rồi. Bạn thậm chí có thể lấy cắp ngôn ngữ ưa thích của người dùng từ yêu cầu HTTP. Cài đặt ngôn ngữ trình duyệt của họ có thể phù hợp hoặc có thể không phù hợp với dân tộc trong tên của họ, nhưng dù sao đây cũng là một kỹ thuật mờ.
richardtallent

2
Tôi nhận thấy rằng Google theo chủ nghĩa sô vanh: nhiều kết quả trả về cho nam giới hơn phụ nữ vì nhiều nam giới sử dụng Google hơn. API Facebook có lẽ đại diện hơn nhiều.
Chris McCall

6

Với những ràng buộc đã nêu, lựa chọn tốt nhất của bạn là diễn đạt lại bất cứ điều gì bạn đang viết là phân biệt giới tính trừ khi bạn biết họ muốn được gọi là giới tính nào trong mỗi trường hợp.

Nếu viết bằng tiếng Anh , hãy nhớ rằng số ít “they” là tốt về mặt ngữ pháp như một đại từ số ít ngôi thứ ba phân biệt giới tính.

Một ví dụ điển hình là tiêu đề của câu hỏi này. Như hiện tại:

    … Ánh xạ tên một người với giới tính của họ?

Điều đó sẽ đỡ khó xử hơn nếu được viết:

    … Ánh xạ tên một người với giới tính của họ?

Nó không hoàn toàn "hoàn hảo" về mặt ngữ pháp. Ngay cả bài viết trên Wikipedia cũng thừa nhận rằng nó đã được sử dụng, đặc biệt là trong bối cảnh hiện đại, là kết quả của sự khó chịu của một số người viết với từ chung chung "he". Tôi không gặp khó khăn lớn với những người viết làm điều này (mặc dù nếu tính trung lập về giới tính thực sự quan trọng, tôi thích viết lại cấu trúc để có thể sử dụng các đại từ như "một"), nhưng hãy gọi nó là gì.
Ben Collins

Tôi cho rằng chúng ta đều đúng. Tất cả ngữ pháp, đặc biệt là ngữ pháp tiếng Anh, có những vấn đề đáng kể; nhưng tôi muốn nói bất kỳ định nghĩa nào về “ngữ pháp hoàn hảo” thực sự áp dụng cho bất kỳ thứ gì bằng tiếng Anh cũng áp dụng ở đây. Hoặc số ít “họ” là hoàn toàn đúng ngữ pháp, hoặc không có gì trong tiếng Anh là :-)
bignose

Đáng chú ý, Grammar Girl (tác giả Mignon Fogarty) đã nghiêng về việc chấp nhận số ít "họ" trong một thời gian. Ngữ pháp.quickanddirtytips.com/
Karen Lopez

4

Việc cho rằng người dùng phải là nam hoặc nữ cũng là một thông lệ kém. Có một số lượng nhỏ nhưng đáng kể những người "liên giới tính", hầu hết trong số họ đều đau lòng vì không có ô để đánh dấu ..
bignose: thú vị về "số ít họ". Tôi không nhận ra nó có một lịch sử lâu đời như vậy.


4

Nó không phải là một dịch vụ mà là một ứng dụng nhỏ có cơ sở dữ liệu:
http://www.codeproject.com/KB/cpp/genderizer.aspx

Và công cụ này bằng tiếng Đức:
http://www.faq-o-matic.net/2011/06/01/zu-einem-vornamen-das-geschlecht-finden/

Và một cái khác trong VB:
http://www.vbarchiv.net/tipps/tipp_1925-geschlecht-anhand-des-vornamens-ermitteln.html

Tôi nghĩ rằng kết hợp với một số danh sách "Tên đầu tiên được sử dụng nhiều nhất trong năm 2011", bạn sẽ có thể xây dựng một cái gì đó tốt.


4

Gói python SexMachine sẽ làm điều đó cho bạn. Với bất kỳ tên đầu tiên nào, nó sẽ trả về nếu đó là nam, nữ hoặc unisex. Nó dựa trên dữ liệu từ chương trình giới tính.c của Jorg Michael.


3

Điều duy nhất bạn sẽ nhận được khi cố gắng tự động hóa nó là một nhóm người dùng không hài lòng. Từ dữ liệu điều tra dân số đó:

JAMES, JOHN, ROBERT, MICHAEL, WILLIAM, DAVID, RICHARD, CHARLES, JOSEPH, THOMAS, CHRISTOPHER, DANIEL, PAUL, MARK, DONALD, GEORGE, KENNETH, STEVEN, EDWARD, BRIAN, RONALD, ANTHONY, RONALD, ANTHONY, GARY, TIMOTHY, JOSE, LARRY, JEFFREY, FRANK, SCOTT, ERIC, STEPHEN, ANDREW, RAYMOND, GREGORY, JOSHUA, JERRY, DENNIS, WALTER, PATRICK, PETER, HAROLD, HENRY, CARL, ARTHUR, RYUAN, RYUAN JACK, ALBERT, JUSTIN, TERRY, GERALD, KEITH, SAMUEL, WILLIE, LAWRENCE, ROY, BRANDON, ADAM, FRED, BILLY, LOUIS, JEREMY, AARON, RANDY, EUGENE, CARLOS, RUSSELL, BOBBY, VICTORE, MARTIN, JERIN SHAWN, CLARENCE, SEAN, CHRIS, JOHNNY, JIMMY, ANTONIO, TONY, LUIS, MIKE, DALE, CURTIS, NORMAN, ALLEN, GLENN, TRAVIS, LEE, MELVIN, KYLE, FRANCIS, JESUS, RAY, JOEL, EDDIE, TROY, 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, MITCHELL, ADRIAN, KARL, CORY, CLAUDE, JAMIE, CHRISTIAN, LONNIE, CODY, JULIO, KELLY, JIMMIE, JORDAN, JAIME, CASEY, JOHNNIE, SIDNEY, JULIAN, DARYL, VIRGIL, MARSHALL, PERRY, MARION, TRACY, RENE, FREDDIE, AUSTINY, JACKIE, EVAN, AUSTIN DANA, EVAN DONNIE, SHANNON, ANGELO, SHAUN, LYNN, CAMERON, BLAKE, KERRY, JEAN, IRA, RUDY, BENNIE, ROBIN, LOREN, NOEL, DEVIN, KIM, GUADALUPE, CARROLL, SAMMY, MARTY, TAYLOR, ELLISENCE, DALLAS DREW, JODY, FRANKIE, PAT, MERLE, TERRELL, DARNELL, TOMMIE, TOBY, VAN, COURTNEY, JAN, CARY, SANTOS, AUBREY, MORGAN, LOUIE, STACY, MICAH, BILLIE, LOGAN, DEMETRIUS, ROBBIEY, KEND 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, JAME, JAME LAVERNE, ALVA, STEVIE, ERIN, AUGUSTINE, YOUNG, JOHNIE, ARIEL, DUSTY, LINDSEY, TRACEY, SCOTTIE, SANDY, SYDNEY, GAIL, DORIAN, LAVERN, REFUGIO, IVORY, ANDREA, SANG, DEON, CAROL, YONG, SANG, DEON, CAROL, YONG TRINIDAD, SHIRLEY, MARIA, CHANG, ROSARIO, DANNIE, FRANCES, THANH, CONNIE, TORY, LUPE, DEE, SUNG, 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 và JEWELCLAIR, BERNIE, JOAN, DOMINIQUE, TRISTAN, JAME, GALE, LAVERNE, ALVA, STEVIE, ERIN, AUGUSTINE, YOUNG, JOHNIE, ARIEL, DUSTY, LINDSEY, TRACEY, SCOTTIE, SANDY, SYDNEY, GAFIL, DORIAN, RE IVORY, ANDREA, SANG, DEON, CAROL, YONG, BERRY, TRINIDAD, SHIRLEY, MARIA, CHANG, ROSARIO, DANNIE, FRANCES, THANH, CONNIE, TORY, LUPE, DEE, SUNG, 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 và JEWELCLAIR, BERNIE, JOAN, DOMINIQUE, TRISTAN, JAME, GALE, LAVERNE, ALVA, STEVIE, ERIN, AUGUSTINE, YOUNG, JOHNIE, ARIEL, DUSTY, LINDSEY, TRACEY, SCOTTIE, SANDY, SYDNEY, GAFIL, DORIAN, RE IVORY, ANDREA, SANG, DEON, CAROL, YONG, BERRY, TRINIDAD, SHIRLEY, MARIA, CHANG, ROSARIO, DANNIE, FRANCES, THANH, CONNIE, TORY, LUPE, DEE, SUNG, 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 và JEWELMARIA, CHANG, ROSARIO, DANNIE, FRANCES, THANH, CONNIE, TORY, LUPE, DEE, SUNG, 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 và JEWELMARIA, CHANG, ROSARIO, DANNIE, FRANCES, THANH, CONNIE, TORY, LUPE, DEE, SUNG, 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 và JEWEL

là tất cả các tên dùng được cho cả nam và nữ. Nếu tên một cô gái là Robert và mọi người, bao gồm cả phần mềm của bạn, tiếp tục gọi cô ấy là đàn ông, cô ấy sẽ khá bực mình.


25
Hãy giả sử rằng có tồn tại một cô gái tên là Mark (vui lòng chỉ ra). Nếu tôi là cô ấy, tôi sẽ tức giận với bố mẹ tôi chứ không phải phần mềm của Chas ...
Darko Z

6
Điều gì sẽ xảy ra nếu phần mềm không bao giờ gọi cô ấy là đàn ông, nhưng lại hiển thị phiên bản giao diện người dùng "nam tính"? Hay cô ấy bị gộp chung với đàn ông trong một tập hợp dữ liệu được sử dụng để phát triển tài sản thế chấp tiếp thị? Cô ấy thậm chí có thể không nhận thấy.
Chris McCall

Đối với rất nhiều cái tên này, tôi chắc chắn 100% dựa trên dữ liệu từ 500-1200 hồ sơ Facebook của tên cụ thể. api.genderize.io/?name=robert api.genderize.io/?name=andrew api.genderize.io/?name=john
Stromgren

3

Mặc dù cơ sở dữ liệu có lẽ là giải pháp thiết thực nhất, nhưng nếu bạn muốn giải trí, bạn có thể thử viết mạng nơron (hoặc sử dụng thư viện mạng nơron) lấy tên và xuất ra một trong 3 tùy chọn đó (F, M, A ).

Bạn có thể huấn luyện nó bằng cách sử dụng bộ dữ liệu tồn tại trong cơ sở dữ liệu được đề xuất bởi các câu trả lời khác, cũng như với bất kỳ dữ liệu nào khác mà bạn có.

Giải pháp này sẽ cho phép bạn xử lý các tên không được phân loại cụ thể trước đây và cũng có thể xử lý các ngôn ngữ khác nhau. Bạn cũng có thể muốn chuyển ngôn ngữ (nếu bạn biết) làm đầu vào cho mạng thần kinh.

Tôi không biết rằng tôi có thể nói rằng mạng lưới thần kinh (hoặc bất kỳ máy học nào khác) sẽ thực hiện tốt công việc phân loại.


3

Nó phụ thuộc vào văn hóa / khu vực: lấy Andrea, vì người Ý chỉ là nam tính, đối với Thụy Điển là tên nữ trong khi Andreas là dành cho nam giới; Shawn không rõ tiếng Anh. Nếu một ngôn ngữ có độ nghiêng, như tiếng Latinh hoặc tiếng Nga, các chữ cái cuối cùng sẽ thay đổi theo các quy tắc ngữ pháp,

Một nguồn mơ hồ khác là Tên gia đình trùng với Tên cá nhân.

Theo ý kiến ​​của tôi, nói chung là không thể giải quyết được.


Nếu OP có một biến đồng hành cho biết văn hóa xuất xứ, nơi sinh, quốc tịch, thì bất cứ điều gì sẽ hữu ích. Nhưng anh ấy nói rằng anh ấy không làm vậy nên bạn chỉ cần đưa ra một phỏng đoán được thống kê dựa trên các số liệu tổng hợp.
smci

3

Ý tưởng rõ ràng sẽ không hoạt động trong hầu hết các ngôn ngữ.

Tuy nhiên, nếu bạn có thể nói trước quốc tịch, bạn có thể gặp nhiều may mắn hơn. Trong hầu hết các ngôn ngữ Slav (ví dụ như tiếng Nga, tiếng Ba Lan, tiếng bulgarian), bạn có thể an toàn cho rằng tất cả các họ kết thúc bằng -va -cha -ska (-a nói chung là giống cái) trong khi -v -ch -shi là nam tính.

Trên thực tế, bất kỳ họ nào cũng có dạng nữ tính và nam tính tùy thuộc vào phần kết. Tuy nhiên, những tên tương tự được sử dụng ở các quốc gia khác (ví dụ: Hoa Kỳ) có thể chỉ sử dụng hình thức giống đực.

Điều tương tự có thể được nói đối với tên (-a -ya là giống cái) nhưng nó không chính xác 100%.

Nhưng nói chung, bạn sẽ khó có được một thư viện đủ chính xác.


họ như thế nào là nam tính hay nữ tính?
Simon_Weaver

2
@Simon_Weaver Họ của cha tôi là Slavchev, và họ của mẹ tôi là Slavcheva. Trên thực tế, nó là cùng một bit họ, nó được đánh vần khác nhau cho đàn ông và wemen. Điều này là phổ biến đối với tên tiếng slavic.
Dimitar Slavchev


2

Thư mục Z (tại vettrasoft.com) có chức năng ngôn ngữ C, hoạt động giống như sau:

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;
    }
}

Đó là do cơ sở dữ liệu điều khiển, bảng có hơn 10.000 tên mà tôi nghĩ, nhưng bạn cần tải xuống và cài đặt thư mục z (bao gồm nhiều mục hàng đầu khác như quốc gia, mốc địa lý, sân bay, tiểu bang, mã vùng, mã bưu chính-zip, v.v. cùng với các hàm và đối tượng c ++ để truy cập dữ liệu). Tuy nhiên, những cái tên rất theo hướng ngôn ngữ tiếng Anh. Bảng là một công việc đang được tiến hành và dần dần được cập nhật.


1

Bản đồ tên-giới tính có thể hoạt động nhưng ở các quốc gia đa văn hóa, nó giống như đoán. Tôi có thể cho bạn một ví dụ: Marian trong tiếng Ba Lan là một tên nam tính điển hình, trong khi tên tương tự ở Anh là tên nữ. Trong thời đại mọi người di cư khắp nơi trên thế giới, tôi không chắc cơ sở dữ liệu như vậy sẽ rất chính xác. Chúc may mắn!


1
Không, nhưng miễn là tốt hơn 50%, nó sẽ đánh bại việc coi những cái tên luôn nam tính.
Chà. Owens

@Chas, vậy tại sao lại bám vào sự phân đôi sai lầm đó? Bạn có tùy chọn trung lập về giới tính.
bignose

chúng tôi thậm chí có 2 chính trị gia nổi tiếng có tên thứ hai là 'maria' - 'mary' sẽ được phân loại trong cơ sở dữ liệu của bạn là nữ. chỉ dành cho lols.
zalew

@JZ Tôi đang nói về tên đầu tiên không phải họ (hoặc ngược lại đối với các nền văn hóa làm ngược lại).
Chà. Owens

@bignose, ngôn ngữ phân biệt giới tính trông kỳ lạ và phức tạp, tôi thà sản xuất thứ gì đó trông đẹp hơn khi có thể. Điều này không được thông báo lại cho các cá nhân (nếu họ thậm chí còn tồn tại), vì vậy không có cơ hội vi phạm, tôi không biết tại sao mọi người lại dành nhiều thời gian để tranh luận về điều này thay vì chỉ cung cấp liên kết đến cơ sở dữ liệu nếu họ biết một.
Chà. Owens

1

Một số nền văn hóa có tên unisex - như của tôi. Sau đó bạn làm gì? Tôi nghĩ câu trả lời rất rõ ràng và đơn giản - đừng cho rằng - bạn có thể gây ra phản cảm. Chỉ cần hỏi nếu nó cần thiết, nếu không thì giới tính trung lập.


5
Câu hỏi đã trả lời câu trả lời của bạn: alex => "A", #ambiguous. Câu hỏi có câu trả lời hay không thì câu trả lời của bạn phải không.
Lập trình viên Windows

Tôi không đồng ý - Quan điểm của tôi là tất cả các tên đều có khả năng mơ hồ.
Tăng đoàn

Nếu những cái tên là unisex thì tất cả chúng sẽ được phân loại là A và tôi sẽ trung lập về giới tính, nhưng nếu một cái tên chủ yếu là nam tính hoặc nữ tính thì tôi có thể sử dụng ngôn ngữ tự nhiên hơn nhiều.
Chà. Owens

Tôi thấy lý do của bạn là gì nhưng tôi giới thiệu bạn đến nhận xét sau.
Tăng đoàn

3
Nhưng nếu bạn nhìn thấy "Preet" trên StackOverflow, thì có lẽ đó là nam giới.
Nosredna

1

Không còn nữa. IBM được cấp bằng sáng chế cho ý tưởng đó cách đây ít lâu.

Vì vậy, nếu bạn đang tìm kiếm bất kỳ mức độ linh hoạt nào (thứ gì đó ngoài danh sách tên), bạn sẽ phải (thở hổn hển!) Hỏi người dùng hoặc chỉ cần trả cho IBM các quyền :)

Trong mọi trường hợp, việc tự động dò tìm như vậy gây khó chịu cho nhiều người có tên không rõ ràng về giới tính, hoặc thậm chí chỉ có ý nghĩa là cha mẹ. Đừng làm điều này khó khăn hơn cho họ.


3
Có vẻ như IBM đã được cấp bằng sáng chế khi chọn hình đại diện dựa trên tên. May mắn thay, đó không phải là một trong những ứng dụng tôi dự định sử dụng, vì vậy tôi không vi phạm bằng sáng chế của họ. Đối với việc hỏi người dùng, giả sử tôi có người dùng để hỏi thay vì một danh sách tên. Tôi đã nói nhiều lần rằng không có người dùng, không có tương tác và không có tin nhắn nào đến những người có tên đó.
Chà. Owens

1

Nó không miễn phí, nhưng đây là một thư viện hay mà tôi đã sử dụng trước đây:

NetGender for .NET cho phép bạn nhanh chóng và dễ dàng xây dựng Xác minh Tên, Phân tích cú pháp và Xác định Giới tính vào các ứng dụng tùy chỉnh của mình. Xác minh chính xác xem một trường cụ thể có chứa một cá nhân hoặc công ty hợp lệ hay không. NetGender sử dụng hơn 100.000 Từ điển Tên, đa dạng về sắc tộc, kết hợp với hơn 8.000 Từ điển Tên Công ty để đảm bảo xác định giới tính chính xác.

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


1

Thật thú vị khi bạn nói rằng bạn có ngày sinh. Điều đó có thể giúp ích. Tôi đã xem cơ sở dữ liệu lịch sử về sự phổ biến của tên.

Trong bộ phim Splash (1984), thật buồn cười khi nhân vật của Darryl Hannah chọn cái tên "Madison" từ một tấm biển trên đường Madison Avenue, vì rõ ràng "Madison" không phải là tên con gái.

24 năm sau, Madison là cái tên phổ biến thứ 4 dành cho các bé gái!


Lịch sử đặt tên từ gov't. (Hãy xem sự suy sụp đáng buồn của Mary trong 100 năm qua.)


Khi tôi viết thư cho Nhà Trắng khi còn nhỏ, Richard Nixon (hoặc, có lẽ là một thư ký) đã trả lời tôi bằng một số bức ảnh về địa điểm lịch sử, gửi cho "Cô Rhett Anderson." "Cô Rhett?" Nó thậm chí không có ý nghĩa! Chúng ta THỰC SỰ có thể không phân biệt được sự khác biệt giữa Rhett của Clark Gable (với bộ ria mép, trong Cuốn theo chiều gió!) Và Scarlett của Vivian Lee? Tôi sẽ không bao giờ tha thứ cho anh ta, mặc dù Neil Young đảm bảo rằng "ngay cả Richard Nixon cũng có linh hồn."


Điểm tốt, ngày chắc chắn xuất hiện ở đây.
Chà. Owens

1

Tôi khá chắc chắn rằng không có dịch vụ nào như vậy có thể tồn tại với mức độ chính xác có thể chấp nhận được. Đây là những vấn đề mà tôi nghĩ là không thể vượt qua:

  • Có rất nhiều tên dành cho cả nam và nữ.
  • Có rất nhiều cái tên khác nhau trên thế giới này, ngay cả khi bạn chỉ xem xét một quốc gia.
  • Có vấn đề "A Boy Named Sue", được Johnny Cash nêu ra một cách hùng hồn :-)

2
Một cơ sở dữ liệu tốt sẽ có tỷ lệ phần trăm nam / nữ cho tên ái nam ái nữ theo vùng và khi mẫu được chụp vv

Còn những ngôn ngữ như tiếng Nhật thì sao? Tôi đang học tiếng Nhật nên tôi có thể sai ở đây, nhưng tên <-> Kanji không phải là mối quan hệ thẳng thắn, đã có những cách chơi chữ và hiểu nhầm về chữ kanji "cái gì" tạo nên tên của một người.
Pharaun


1

Bạn có thể xem qua dự án phát hiện giới tính trăn của tôi https://github.com/muatik/genderizer

Nó cố gắng phát hiện giới tính của các tác giả tìm kiếm tên của họ và / hoặc văn bản mẫu (ví dụ: tweet) của họ.

Và nó cũng hỗ trợ mongodb, memcached cho hiệu suất.


Có vẻ tốt nhưng nếu bạn cần biết "quốc gia xuất xứ", hãy xem giới tính.c hoặc genderize.io bên dưới
HaveAGuess

0

Đây không hẳn là một vấn đề lập trình - nó liên quan đến việc lấy bảng xác suất.

AFAIK không có cơ sở dữ liệu công khai nào ở dạng chắt lọc. Bạn có thể xây dựng dữ liệu này từ dữ liệu điều tra dân số hoặc mua dữ liệu từ ai đó.

Ví dụ, đây là người bán bảng xác suất cho Canada .


0

IMHO, nói chung là một ý tưởng tồi nếu xác định giới tính từ tên cá nhân. Rất nhiều cái tên là giữa các giới tính (xin chào, đây có phải là một từ không ?? :-), và chúng cũng có thể là một giới tính trong một nền văn hóa và một giới tính khác.

Một vài ví dụ ngu ngốc, chỉ là một vài ví dụ xuất hiện trong tâm trí tôi (từ phần của tôi, CE)

Vanja - nữ, ở các nước phía đông từ đây, chủ yếu là nam
Alex - xen kẽ (viết tắt của Sandra, nữ và Sandro, nam)
Robin - ở các nền văn hóa phương tây, có thể là cả hai

Ở một số nơi trên thế giới, giới tính của một người có thể được xác định bằng cách nhìn vào cách kết thúc tên. Ví dụ: Marija, Sandra, Ivana, Petra, Sara, Lucija, Ana - bạn có thể thấy rằng hầu hết các tên phụ nữ này đều kết thúc bằng "ja" hoặc "ra". Có những ví dụ khác là tốt.

Tuy nhiên, tôi nghĩ tốt hơn là chỉ yêu cầu người dùng giới tính.


9
"Tuy nhiên, tôi nghĩ tốt hơn là chỉ yêu cầu người dùng quan hệ tình dục." - Tôi đồng ý, điều đó sẽ tốt hơn nhiều so với việc đăng bình luận trên Stack Overflow.
Lập trình viên Windows

2
Tăng. Okeey, điều đó không ra đúng không :-)
Rook

Tốt hơn là trước khi chỉnh sửa :-)
Lập trình viên Windows


0

Tôi biết không có dịch vụ như vậy. Tuy nhiên, bạn có thể tìm thấy dữ liệu bạn đang tìm kiếm. Chính phủ Hoa Kỳ công bố dữ liệu về sự phổ biến của tên và giới tính của người mà họ gắn bó. Cơ quan Quản lý An sinh Xã hội có một trang như vậy và có thể có cả cuộc điều tra dân số, nhưng tôi không dành thời gian để xem xét. Có lẽ các chính phủ khác trên thế giới cũng làm những điều tương tự.


0

Tôi biết không có dịch vụ nào như vậy, tuy nhiên ..

  • bạn có thể bắt đầu với một danh sách tên người hoặc
  • đoán giới tính theo một số quy tắc (ví dụ -o => nam, -ela, -a => nữ)

Ở một số quốc gia (ví dụ như Đức), tên một người có thể được giới hạn bởi luật pháp - có thể có một số ấn phẩm liên quan đến vấn đề đó, có thể được thu thập (nhưng tôi không biết bất kỳ trong thời điểm này).


0

Những gì tôi sẽ làm là thực hiện một cuộc tấn công lấy tên và tìm kiếm nó dựa trên api facebook. Sau đó, xem xét những người dùng kết quả và đếm xem có bao nhiêu người trong số họ là nữ hoặc nam. Sau đó, bạn có thể trả lại một tỷ lệ phần trăm. Không thể vượt qua được nữa. :)


-2

Chỉ cần hỏi mọi người, và nếu họ tốt, họ sẽ cho bạn 'M's hoặc' F's, và nếu họ không, thì hãy cho'em một 'A'.


2
Tôi không liên lạc với những người có tên mà tôi muốn lập bản đồ.
Chà. Owens
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.