Комментарии 50
С Владиславом хорошо :–)
К качеству транслитерации есть вопросы, но в целом ок. После строки «Moskva, Panfilovcev heroes street» я вообще не верю в возможность автоматически побороть фантазию людей, указывающих свои адреса на посылках из Китая.
В примерах есть три ФИО:
1. Грозный Иван Васильевич — не распознался совсем.
2. Чак Норрис — не распознался совсем.
3. Жак Ширак — распознался как Жак Ишрак, FEMALE.
К Иванову Ивану Ивановичу он предложил мне два таких варианта как «Иавнов Иван Иванович» и «Иванво Иван Иванович». Я в растерянности.
Wim.agency напомнил мне школу, где на информатике было задание написать определялку пола по имени. Так вот, подход к реализации не обсуждался — если имя заканчивается на гласную, то признаем человека женщиной. А я — Никита. Эх.
А вот Петрович визуально понравился. Сайт какой-то весь такой стильный. Даже неважно как склоняет :)
С Дадатой и Морфером интересная история — Морфер действительно выглядит как Бендер, который готов склонить всех и вся, но у Дадаты сервис склонения явно не основной. Тут уж действительно надо сравнивать стоимость.
Позиционирует себя как открытая и бесплатная альтернатива Морферу.
С моими задачами он справился, хотя и пришлось добавить немного слов в словарь.
Забавно, что ahunter у вас — мужчина («посчитал»), а все остальные — женщины.
Сашу Пархоменко посчитал мужчиной
Например, Петрович не смогла и обрезала.
не смогла прожевать сложное ФИО «Алиев Руслан Гейдар оглы». Приставку к отчеству библиотека молчаливо обрезала;
http://sport.tut.by/news/aboutsport/505529.html
Добавлю пару слов по поводу Petrovich.
Библиотека разрабатывалась для решения задачи склонения имён в случаях, когда пол известен. Например, в личных кабинетах и индивидуальных рассылках. Задача автоматического определения пола напрямую не относится к задаче склонения имён, но тоже обсуждается в контексте библиотеки. Среди несложных подходов обратите внимание на анализ окончаний и машинное обучение.
Основная работа в Petrovich велась над открытой базой правил и её репрезентативностью. Правила переносимы и централизованно используются всеми портами. Это же позволяет довольно быстро реагировать на возможные неточности по отчётам и правкам.
Сравнение в данной статье покрывает большое количество существующих инструментов, но является качественным сопоставлением. Очень интересно увидеть и количественный анализ. Например, сравнить аккуратность инструментов на основе набора данных, который используется для автоматического тестирования каждого изменения в правилах Petrovich, или любом другом.
Но вообще на дворе 2016 год, и это не круто:
судя по тому как справляются сервисы, звонок клиенту для уточнения, это всё ещё круто.
Как раз для таких целей нужны нейронные сети и машинное обучение. Какой-нибудь из этих сервисов развивается в данном направлении?
Нейронные сети и машинное обучение не имеют никакого отношения к этой задаче — свалить них всю ответственность весело, но здесь нужно не нейроны крутить, а справочники внимательно пополнять.
Не совсем так, см. выше. Применение машинного обучения полезно в задаче определения пола. Правда, в упомянутом примере используются не нейронные сети, а логистическая регрессия: http://research.digsolab.com/gender.
Ручной контроль потом нашел две неправильные — Ручей (Ручею) и Заяц (Заяцу).
А эти сервисы с ними справятся?
не указана стоимость библиотеки, возникает ощущение, что с меня хотят заработать побольше бабла.
Насколько помню, лицензия морфера для установки на свой сервер около 100$ была. И вроде как на офсайте это было указано открыто. Странно, что не нашли ;)
В этой же системе мы юзали и Дадату — но уже не для склонений, а для сегментации и нормализации адресов, подсказок autocomplete по юрлицам. Тут уже упоминали, что эти фичи для «дадаты» роднее, чем склонения имен.
Правда, базу по юрикам ей поактуальнее бы… )
У Дадаты сейчас актуальность по юрлицам на 10 июля 2016. Где-нибудь есть еще актуальнее (ну кроме сайта налоговой с капчей)?
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 я сам ниасилил.
Усложним задачу и уберём «отчество» — с этим справляется только Морфер, ДаДата путает «имя» с «фамилией» и, в результате, ничего не склоняет.
Моржовый Хуй Анаксимандрович. ДаДата правильно распознаёт фамилию, отчество принимает за имя, а имя, видимо, цензурирует и вообще исключает из дальнейшего рассмотрения. И только Морфер всё ещё справляется, ему всё ни по чём!
Возможно, при наборе имени в Petrovich сбросился выбор пола. Насколько вижу, данное ФИО склоняется корректно.
echo pluralize(10, 'новый и свободный дом', false, morphos\Russian\Cases::TVORIT); // => 10 новыми и свободными домами
Склонять "заместитель начальника по… Иванов Иван Иванович" не может.
Сравнение онлайн-сервисов склонения имен