Сравнение онлайн-сервисов склонения имен

в 10:39, , рубрики: rest api, SaaS / S+S, обработка имен, определение пола, Разработка веб-сайтов, Разработка под e-commerce, роботы, склонение фио, теги никто не читает, Тестирование веб-сервисов, метки: ,

Появилась потребность определять пол клиентов в базе и автоматически склонять ФИО для интернет-магазина. Специфика магазина – подарки и доставка цветов с поздравлениями.

Магазин принимает информацию о пользователях через форму быстрого заказа. Есть и обычная корзина, но многие пользуются именно быстрым заказом – там можно заполнить только телефон и сразу же перейти к оплате. Клиенты пользуются возможностью и часто вообще не указывают имя. Делать поля для ФИО обязательными бессмысленно – вписывать мусор вместо данных не запретить. Также как не запретить неправильно писать собственное имя.
Между тем правильное обращение к клиенту необходимо, иначе возможны казусы:

image

Сейчас сотрудники магазина уточняют данные доисторическим способом: клиент делает заказ, приходит СМС с подтверждением и способом доставки. А затем звонит оператор, чтобы подтвердить заказ и заодно уточнить пол и ФИО, после чего вносит данные в CRM.

Но вообще на дворе 2016 год, и это не круто:

  • операторы — всего лишь человеки и периодически фейлят. Если имя изначально не указано, легко путают цветы для Вали с цветами для Вари;
  • в телефонном разговоре сотрудники переспрашивают имена по буквам, чем неимоверно бесят людей;
  • для поздравлений имена в открытках и подписях к цветам иногда склоняются, и это не всегда тривиальная задача (пример — Артема Лученка написали как «Лученока»).

Ручной метод — долго, дорого и не как у Тёмы Лебедева. В идеале хочется все автоматизировать и избавиться от человеческого фактора. И задалбывать человека звонками только по пограничным случаям, где точно не разберется даже человек (нейронная сеть может нарисовать картину лучше Ван Гога, но никогда не угадает пол Саши Пархоменко).

Что хотелось:

  • определить пол пользователей в базе для сегментации — чтобы готовить рекламные предложения по подаркам на гендерные праздники для клиентов;
  • проверить правильность написания имен;
  • автоматически склонять имена для умной генерации открыток, поздравлений, подписей к доставленным цветам;
  • качественно, бесплатно и вчера недорого и без ошибок.

Поисследовав предметную область, я пошел изучать Хабр и интернеты в поисках вменяемого готового решения. Чтобы и пол определило, и просклоняло, и объединило в себе 2 этих фишки (в идеале). Возможно, мой обзор кому-то будет полезен.

К исследованию решил подойти обстоятельно и взял выборку от простых до сложных имен. Вооружился грамотой.ру и своей фантазией.

В результате получился простой тест на имена:

  • простые русские ФИО в разных комбинациях (Маша Цветкова, Антон Сергеевич Журавлев);
  • пограничные случаи, где пол неочевиден даже для человека (Валя Дрозденко);
  • двойные фамилии (Демут-Малиновский);
  • несклоняемые женские имена и фамилии (Раисат Магомедова, Анна Друзь);
  • женские имена на -ль (Адель, Айгуль). В них есть подвох — нет единого правила, как склонять такие имена;
  • классное мужское имя Жалиль, которое внезапно встретилось в базе несколько раз;
  • русские нестандартные: Ремесло.

А вот нетривиальные случаи, про которые мало кто знает:

  • склонение фамилии без потери гласной: Иван Плетень — Ивана Плетеня;
  • кейс с потерей гласной в фамилиях на -онок/-енок: Василий Лученок — Василия Лученка;
  • отчества с оглы/кызы (Магомедова Гюльчатай Абдурахман кызы).

Всего нашел 2 библиотеки и 3 сервиса, которые вызвали доверие.

Библиотека NameCaseLib

image

Плюсы

  • работает с русскими и украинскими именами.

Минусы

Исходя из описания API, определение пола — это не основной функционал, а добавочная фишка. Сервису можно переслать параметром пол пользователя, и это влияет на дальнейшую логику работы с именами.
Библиотека:

  • не знает, кто такой Жалиль;
  • пограничный кейс «Саша Пархоменко» уверенно определила как женщину;
  • «Раисат» определила как мужчину;
  • сложный случай «Иван Плетень» просклоняла как «Ивана Плетеого».
  • «Бонч-Бруевич» в украинском — имя, а в русском почему-то считается отчеством. Криминал, честно говоря.

А судя по тому, что на сайте стоит 2011 год, поддержку библиотеки давно прекратили.

Библиотека Петрович

image

Плюсы:

  • реализована на нескольких ЯП, в том числе на JS и Ruby;
  • неплохо склоняет простые кейсы, если им проставить пол.

Минусы:

  • пол не определяет;
  • склоняет женские имена как мужские (Айгуль – Айгуля);
  • не смогла прожевать сложное ФИО «Алиев Руслан Гейдар оглы». Приставку к отчеству библиотека молчаливо обрезала;
  • некорректно просклоняла двойные фамилии (например, Гресь-Янковский → Гресю-Янковскому).

Не понравилось.

Gender.Wim.Agency

“валера;;female”. Nuff said.

AHunter.ru

Плюсы:

  • есть REST API;
  • не только определяет и склоняет имя, но и работает с адресами;
  • пытается определять этнос по фамилии, и весьма неплохо;
  • подсказывает варианты прямо в форме ввода: одной строкой и несколько полей (отдельно фамилия, имя, отчество);
  • хорошо работает определение пола и склонение на простых и средних кейсах. Дружит с Жалилем и Юдифью.

Минусы:

  • Сашу Пархоменко посчитал мужчиной, та же ситуация для всех пограничных кейсов. То есть все сомнительные случаи станут мужчинами, и это неправильно. Нельзя однозначно считать пограничный случай мужчиной или женщиной, нужно предупредить человека о том, что робот запутался и страдает;
  • мужская интерпретация Саши Пархоменко считается славянским именем, а женская — индоевропейским. Заставило задуматься о точности алгоритмов;
  • в форме подсказок попадаются несочетаемые сочетания: «Алиса Васильев», «Николай Владимирова». Неизвестно, чего ждать в дальнейшем, раз проскакивают такие откровенные опечатки в простых случаях;
  • в автокомплите по отдельным полям данные не всегда сочетаются по полу. По закону Мёрфи пользователь обязательно ошибется там, где можно ошибиться.

Саша Пархоменко напрягла, решил поискать еще варианты.

DaData.ru

image

Плюсы:

  • есть API с нормальной документацией и примерами;
  • отлично склоняет имена, справилась почти со всеми случаями;
  • если пол не определен, API уведомляет об этом отдельным значением. Саша Пархоменко наконец-то не мужчина и не женщина;
  • на форму заказа можно поставить JS-плагин и определять пол для всех новых клиентов.

Минусы:

  • если сервис не знает фамилию — не склоняет, просто определяет пол;
  • автокомплит ФИО бесплатный, но обработка через АПИ — платная.

Морфер

Плюсы:

  • склоняет все, что можно склонить: имена, города, словосочетания, числительные, даты;
  • отдает данные через веб-сервис, есть отдельные библиотеки, модули для Excel, интеграция с Mailchimp;
  • склоняет действительно круто и простые, и сложные, и суперсложные кейсы. Не путается в -оглы/-кызы, в двойных фамилиях, в библейских именах;
  • бесплатной функциональности хватает для нормального склонения (1000 запросов в сутки).

Минусы:

  • не умеет определять пол в пограничных случаях (Саша Пархоменко по умолчанию считается мужчиной);
  • не указана стоимость библиотеки, возникает ощущение, что с меня хотят заработать побольше бабла.

Особенность — не склоняет женские имена на -ль (Айгуль). Это не ошибка, один из возможных вариантов (по правилам такие имена можно либо склонять, либо нет).
Сервис меня очень впечатлил в плане склонений. Легко справился с простыми и сложными случаями.
Но Саша Пархоменко огорчен(а).

Самыми достойными сервисами показались Морфер и DaData. На склонении показали себя почти одинаково за исключением имен вроде Айгуль — видимо, у создателей разная философия. Мне показалось, что Морфер – эдакий робот Бендер, гнет все что гнется и делает это очень круто. Дадата – что-то вроде Валли, умеет меньше, но делает более заботливо. С удовольствием рекомендую оба сервиса.

Какой сервис я выбрал – не скажу. Считаю, что для каждой задачи свой инструмент, и надеюсь, что обзор поможет понять, кому что подходит.
Если кто-то знает хорошие аналогичные сервисы и гуглит лучше меня, буду очень рад комментариям и советам.

Автор: rmpl

Источник

Поделиться новостью

* - обязательные к заполнению поля