pytrovich is a Python 3.6+ port of petrovich library which inflects Russian names to a given grammatical case. It supports first names, last names and middle names inflections. Since version 0.0.2, gender detection is also available.
petrovich-java was the main inspiration.
The alternative (earlier) port: Petrovich (@alexeyev was not aware of it at the time of porting petrovich
to Python).
The only meaningful difference we have found is that it does not support gender detection.
Should be as simple as that
pip install pytrovich
from pytrovich.enums import NamePart, Gender, Case
from pytrovich.maker import PetrovichDeclinationMaker
maker = PetrovichDeclinationMaker()
print(maker.make(NamePart.FIRSTNAME, Gender.MALE, Case.GENITIVE, "Иван")) # Ивана
print(maker.make(NamePart.LASTNAME, Gender.MALE, Case.INSTRUMENTAL, "Иванов")) # Ивановым
print(maker.make(NamePart.MIDDLENAME, Gender.FEMALE, Case.DATIVE, "Ивановна")) # Ивановне
from pytrovich.detector import PetrovichGenderDetector
detector = PetrovichGenderDetector()
print(detector.detect(firstname="Иван")) # Gender.MALE
print(detector.detect(firstname="Иван", middlename="Семёнович")) # Gender.MALE
print(detector.detect(firstname="Арзу", middlename="Лутфияр кызы")) # Gender.FEMALE
You can replace default rules file with some custom one. Only JSON format is supported.
maker = PetrovichDeclinationMaker("/path/to/custom/rules.file.json")
E.g. if pytrovich
fails on PetrovichDeclinationMaker
creation,
one may consider downloading rules.json
directly from
petrovich-rules repo as a fix (please create an issue if that actually happens).
Not neccessary, but greatly appreciated, if you use this work.
@misc{Pytrovich,
title = {{petrovich/pytrovich: Python3 port of Petrovich, an inflector for Russian anthroponyms}},
year = {2020},
url = {https://github.com/petrovich/pytrovich},
language = {english},
}
For more information on the project please refer to other petrovich repos.
- efficiency was not a top priority, the time has come for faster algorithms, RegEx and data structures
- evaluation based on petrovich-eval
This project is available under MIT license.