petrovich4j is a Java library which inflects Russian names to given grammatical case. It supports first names, last names and patronymic names inflections.
petrovich4j - это Java библиотека для склонения по пажежам русских имен, фамилий и отчеств. Библиотека не имеет дополнительных зависимостей и имеет размер около 12кб.
mvn -DskipTests=true clean package install
<dependency>
<groupId>com.github.petrovich4j</groupId>
<artifactId>petrovich4j</artifactId>
<version>1.1.3</version>
</dependency>Petrovich p = new Petrovich();
p.say("Александр", NameType.FirstName, Gender.Male, Case.Genitive) ➟ "Александра"
p.say("Сергеевич", NameType.PatronymicName, Gender.Male, Case.Dative) ➟ "Сергеевичу"
p.say("Пушкин", NameType.LastName, Gender.Male, Case.Prepositional) ➟ "Пушкине"
p.gender("Петрович", Gender.Both) ➟ Gender.Male
p.gender("Ивановна", Gender.Both) ➟ Gender.FemaleВсе используемые правила перечисленны в классе Library и занимают порядка 100 строк кода. Меняйте их при необходимости прямо в коде или используйте конструктор класса Petrovich, который в качестве параметра принимает набор внешних правил.
Подробно о точности от оригинальных разработчиков: petrovich-ruby.
Если коротко: благодаря тому, что в библиотеке используется знание о роде имени (мужское или женское) и его типе (имя, фамилия, отчество) результат оказывается более точным, чем выдаваемый сервисом Yandex Inflect.
Кроме этого, Yandex Inflect имеет проблемы с буквой 'ё' и, в ряде случаев, проглатывает букву 'н' в суффиксе женских имен в родительском роде.
Оригинальный алгоритм был разработан на языке Ruby Андреем Козловым и Дмитрием Усталовым: petrovich-ruby.
На Java алгоритм был портирован Ринатом Мулюковым: petrovich-java.
Java версия petrovich4j убирает все зависимости от сторонних библиотек, добавляет несколько сотен тестов и исправляет ряд найденных ошибок.
Итого: размер библиотеки со всеми зависимостями составляет 12 килобайт, из которых 90% занимают правила.
This project available under MIT license
