Как стать автором
Обновить

Комментарии 50

С Владиславом хорошо :–)

Угу. В моей жизни, оказывается, еще не всё потеряно. Купил электрокачалки — и уже молодая мама.
Спасибо за обзор. Стоимость на Морфер указана на страничке описания модуля, например morpher.so для PHP 7000 р.

Не для всего. Есть цена для php, 1c и excel, а вот Java и .NET под завесой тайны.
Действительно, спасибо. Меня интересовал php и excel я только туда и заглянул, рановато сделал вывод на маленьких данных :-)
Вопрос как сервисы будут реагировать на имена набранные латиницей.
На латиницу среагировала только Дадата — транслитерировала и потом просклоняла.
К качеству транслитерации есть вопросы, но в целом ок. После строки «Moskva, Panfilovcev heroes street» я вообще не верю в возможность автоматически побороть фантазию людей, указывающих свои адреса на посылках из Китая.

The Heroes of Panfilovcy

and magic.

And Power of Steel!!!
К сожалению, транслит я не тестировал, потому что такой задачи не было – адреса в базе изначально введены на русском :)
Сервис от ahunter — огонь!
В примерах есть три ФИО:
1. Грозный Иван Васильевич — не распознался совсем.
2. Чак Норрис — не распознался совсем.
3. Жак Ширак — распознался как Жак Ишрак, FEMALE.

К Иванову Ивану Ивановичу он предложил мне два таких варианта как «Иавнов Иван Иванович» и «Иванво Иван Иванович». Я в растерянности.

Wim.agency напомнил мне школу, где на информатике было задание написать определялку пола по имени. Так вот, подход к реализации не обсуждался — если имя заканчивается на гласную, то признаем человека женщиной. А я — Никита. Эх.

А вот Петрович визуально понравился. Сайт какой-то весь такой стильный. Даже неважно как склоняет :)

С Дадатой и Морфером интересная история — Морфер действительно выглядит как Бендер, который готов склонить всех и вся, но у Дадаты сервис склонения явно не основной. Тут уж действительно надо сравнивать стоимость.
Есть небольшой опыт использования инструмента Кириллер: https://github.com/miyconst/Cyriller
Позиционирует себя как открытая и бесплатная альтернатива Морферу.
С моими задачами он справился, хотя и пришлось добавить немного слов в словарь.
Спасибо за интересный обзор.

Забавно, что ahunter у вас — мужчина («посчитал»), а все остальные — женщины.
Сашу Пархоменко посчитал мужчиной


Например, Петрович не смогла и обрезала.
не смогла прожевать сложное ФИО «Алиев Руслан Гейдар оглы». Приставку к отчеству библиотека молчаливо обрезала;
Вы очень любопытно подметили, спасибо! Ahunter – охотник за адресами, видимо я воспринял его как добытчика-мужчину. А Петрович – библиотека, она-моя. Вообще это к вопросам позиционирования и восприятия.
Гадя Петрович женского пола
Ирина Петрович — девушка
http://sport.tut.by/news/aboutsport/505529.html
НЛО прилетело и опубликовало эту надпись здесь

Добавлю пару слов по поводу Petrovich.


Библиотека разрабатывалась для решения задачи склонения имён в случаях, когда пол известен. Например, в личных кабинетах и индивидуальных рассылках. Задача автоматического определения пола напрямую не относится к задаче склонения имён, но тоже обсуждается в контексте библиотеки. Среди несложных подходов обратите внимание на анализ окончаний и машинное обучение.


Основная работа в Petrovich велась над открытой базой правил и её репрезентативностью. Правила переносимы и централизованно используются всеми портами. Это же позволяет довольно быстро реагировать на возможные неточности по отчётам и правкам.


Сравнение в данной статье покрывает большое количество существующих инструментов, но является качественным сопоставлением. Очень интересно увидеть и количественный анализ. Например, сравнить аккуратность инструментов на основе набора данных, который используется для автоматического тестирования каждого изменения в правилах Petrovich, или любом другом.

Спасибо за комментарий!
Если пол известен, то имена склоняются. Но, к сожалению, всегда известный пол – это идеальный мир :(

Было бы здорово добавить ссылку на мой комментарий, чтобы у пользователей пока не возникало лишних иллюзий по поводу функциональности библиотеки.

Добавил ссылку в описание Петровича. Спасибо!
Но вообще на дворе 2016 год, и это не круто:

судя по тому как справляются сервисы, звонок клиенту для уточнения, это всё ещё круто.

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

Не совсем так, см. выше. Применение машинного обучения полезно в задаче определения пола. Правда, в упомянутом примере используются не нейронные сети, а логистическая регрессия: http://research.digsolab.com/gender.

С одной стороны я писал только о склонениях, с другой — сервис по вашей ссылке определяет «Иванко Мария» мужчиной с уверенностью 0.932. Вы можете сказать, что я его неправильно держу (с), но это уже вопрос веры.

Увы, я не имею к этому сервису совсем никакого отношения и не располагаю набором данных, по которому обучалась модель. Держать в руках эту демонстрацию нужно правильно: сначала указывается имя, затем фамилия. Пример показан перед формой, «Мария Иванко» отлично распознаётся.

В 1996 я склонял фамилии 12000 акционеров. Программкой на C.
Ручной контроль потом нашел две неправильные — Ручей (Ручею) и Заяц (Заяцу).
А эти сервисы с ними справятся?
Уточните, а какой способ склонения в вашем случае был верный и какой – неверный?
Я написал, как я просклонял. Верный, как предположили девушки с пятеркой по русскому, такой же, как и для обычных слов — Ручью и Зайцу.
Грамота.ру говорит, что тут неоднозначно (пункт 4.4). То есть можно и «Зайцу», и «Заяцу». Но в документах рекомендуют не терять гласные, чтобы не было юридических проблем в будущем. Поэтому «Заяцу» правильнее.
Я всегда верил в силу алгоритма!
Если в исходных данных допускаются уменьшительно-ласкательные и прозвища, то определить пол по имени вообще непосильная задача. Даже Вася Пархоменко может оказаться Василисой. И таких уменьшительных много.
Как-то пилили црм-систему, автоматически готовящую сложные юридические документы и формы. Морфер склонял все и вся.

не указана стоимость библиотеки, возникает ощущение, что с меня хотят заработать побольше бабла.

Насколько помню, лицензия морфера для установки на свой сервер около 100$ была. И вроде как на офсайте это было указано открыто. Странно, что не нашли ;)

В этой же системе мы юзали и Дадату — но уже не для склонений, а для сегментации и нормализации адресов, подсказок autocomplete по юрлицам. Тут уже упоминали, что эти фичи для «дадаты» роднее, чем склонения имен.
Правда, базу по юрикам ей поактуальнее бы… )

Сейчас там форма запроса цены с указанием нескольких параметров. А прямой цены не указано, либо я плохо смотрю.

У Дадаты сейчас актуальность по юрлицам на 10 июля 2016. Где-нибудь есть еще актуальнее (ну кроме сайта налоговой с капчей)?

https://name2gender.com — определить пол по имени. По правде говоря ФИО склонять не умеет, но и функционал то делал для определения пола в первую очередь, готов предоставить премиум ключик автору для тестов
Спасибо, буду рад потестировать ваш сервис.
Мне кажется, все эти заморочки только отрицательно повлияют на узнаваемость брэнда. Владислав из первого примера должна вас и так отлично запомнить.

Именно так! Для повышения узнаваемости бренда имя вообще не нужно. Достаточно обращения в письме «привет, вонючка».

И «бренд» станет не только узнаваемым, но и избегаемым… :)
Делал определение пола, в итоге остановился на ручном решении, вот таким методом (C#):
Посмотреть код
public static Gender Resolve(Client client)
{
    if (fullgirls_names.Contains(client.FullName))
    {
        return Gender.Female;
    }
    if (fullboy_names.Contains(client.FullName))
    {
        return Gender.Male;
    }
    string[] name_parts = client.FullName.Split(' ');
    List<string> parts = new List<string>();
    foreach (string part in name_parts)
    {
        if (!String.IsNullOrWhiteSpace(part))
        {
            parts.Add(part.ToLower().Trim());
        }
    }
    int male_count = 0;
    int female_count = 0;
    foreach (string part in parts)
    {
        if (girls_names.Contains(part))
        {
            female_count++;
        }
        else if (boy_names.Contains(part))
        {
            male_count++;
        }
    }
    if ((female_count > 0 || male_count > 0) && female_count != male_count)
    {
        if (female_count > male_count)
        {
            return Gender.Female;
        }
        else
        {
            return Gender.Male;
        }
    }
    return Gender.Uncknown;
}



Несмотря на примитивность, дает почти 100% точность. Словари брал готовые.
Для мужского пола EN RU
Для женского пола EN RU
fullgirls_names и fullboy_names содержат полное имя для клиентов чей пол определить не удается, такие имена выявляются по ходу работы и заносятся в эти кастомные словари.
После определения пола вполне адекватно отработает уже и Petrovich2, если нужно просклонять.
Хуерга Хелицеровна Ябдалаева

Фамилия Ябдалаева
Имя Хуерга
Отчество Хелицеровна
Пол женский
Им. падеж (кто?) Ябдалаева Хуерга Хелицеровна
Род. падеж (кого?) Ябдалаевой Хуерги Хелицеровны
Дат. падеж (кому?) Ябдалаевой Хуерге Хелицеровне
Твор. падеж (кем?) Ябдалаевой Хуергой Хелицеровной

Отлично справился первый сервис и последние два. Петрович, несмотря на явное указание пола, не осилил просклонять «фамилию», хотя вполне справился с «именем» и «отчеством». AHunter вообще отказался такое обрабатывать. Gender.Wim.Agency я сам ниасилил.
Бельдыбай Залупаевич Козымагомедов. NameCaseLib выбывает из нашей специальной олимпиады, потому что, несмотря на явную абсурдность, считает, что это две фамилии, а между ними отчество.
Усложним задачу и уберём «отчество» — с этим справляется только Морфер, ДаДата путает «имя» с «фамилией» и, в результате, ничего не склоняет.

Моржовый Хуй Анаксимандрович. ДаДата правильно распознаёт фамилию, отчество принимает за имя, а имя, видимо, цензурирует и вообще исключает из дальнейшего рассмотрения. И только Морфер всё ещё справляется, ему всё ни по чём!

Возможно, при наборе имени в Petrovich сбросился выбор пола. Насколько вижу, данное ФИО склоняется корректно.


Ябдалаева Хуерга Хелицеровна

Похоже, Петровичу фамилию надо писать строго первой (а я последней писал). Если написать, как вы написали, то, действительно, склоняется.
НЛО прилетело и опубликовало эту надпись здесь
Morphos может просклонять вот такие выражения:
echo pluralize(10, 'новый и свободный дом', false, morphos\Russian\Cases::TVORIT); // => 10 новыми и свободными домами

Склонять "заместитель начальника по… Иванов Иван Иванович" не может.
Но просто фразу «новый и свободный дом» не просклоняет без дополнительной обертки.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации