Гендерная идентичность - увлекательная и эмоциональная тема, но с лингвистической точки зрения это тоже статистическая тема! На недавней презентации на Hack && Tell я хотел исследовать личное понятие пола, которое было отпечатано в Википедии. Я говорю о личном, поскольку хочу рассказать о тебе, читатель. Для этого давайте проверим имя вашего пола согласно Википедии.

Есть ли у имен пол? Этот пол бинарный? Вы думаете, что Джон - мужское имя, а Нелл - женское? А как насчет андрогинного Пат? Числовые данные свидетельствуют о том, что гендер на самом деле непрерывен, и, учитывая соответствующие предостережения, мы можем количественно определить гендерность имени.

Вычислительная обработка естественного языка имеет гипотезу распределения, красиво сформулированную почти в каждой статье по НЛП цитатой из Ферта (1957):

Вы должны знать слово по компании, в которой оно находится.

То есть мы можем выяснить, как связаны слова, глядя на шаблоны совместного появления, обнаруженные в любом большом корпусе текста. По этой теме много отличных постов, так что давайте перейдем к сути вопроса. Какого пола мое имя?

Ключевое понимание, которое нам нужно, заключается в том, что мы можем проецировать имя на какое-то гендерное направление в распределительном пространстве. По этому поводу есть две замечательные статьи:

Мужчина для программиста, как женщина для домохозяйки? Снятие смещения встраиваемых слов и Количественная оценка и уменьшение стереотипов в встраиваемых словах

В нашем случае давайте сопоставим имена с направлением, которое прослеживает слова «он» - ›« она ». Вместо того, чтобы убирать гендерный компонент, мы можем использовать его как мерку. Определите пол как переменную t, параметризовав строку так, чтобы t = 0 было полностью «он», а t = 1.0 - полностью «она». Для каждого имени вычислите как ближайшее расстояние от слова до линии пола, так и соответствующую параметризованную точку, например. t = пол (имя). Учитывая большой список имен, теперь у нас есть качественный гендерный континуум!

Я тоже ранее исследовал эту идею в небольшом глупом проекте под названием трансортогональная лингвистика (демо). В нем я просмотрел слова по пути от t = [0,1], используя введенные пользователем начальные и конечные слова. Однако в этом случае мы собираемся привязать наши определения к он и она и определить пол как точку на этой линии. Конечно, возможны и другие определения, и более надежный метод мог бы использовать самый большой главный компонент нескольких гендерных аналогий.

Методология:

Скачайте Википедию и большой список имен. Разберите XML вики и удалите всю разметку, чтобы остался только текст. Обучите 300-мерную модель встраивания распределенного текста с помощью word2vec или fastText. Проведите линию от двух якорных слов, таких как он и она , и вычислите параметризованное значение для каждого имени.

И последнее, о чем следует помнить, что все это находится в контексте единого корпуса, Википедии. Википедия - это энциклопедия, содержащая известные исторические деятели. Любая обученная модель с его точки зрения отражает историческую перспективу, и не обязательно современную. Для начинающего специалиста по данным было бы интересно посмотреть, какие имена меняются в другом корпусе, например, встраивание современных новостей от Google.

Результаты:

Популярные мужские имена: Йован, Уилфорд, Ньютон, Морис, Эммануэль, Джозеф.

Популярные женские имена: Жасмин, Опал, Лиза, Ванесса, Натали, Лили.

Полный список всех данных можно найти на этой github gist. Также ниже можно быстро вставить все имена (поиск не работает на Medium, если вы перейдете по ссылкам, вы сможете найти и скачать). Дайте мне знать, если вам это показалось интересным, или вы хотите увидеть какие-либо дополнения!