pynames/README.md

136 lines
6 KiB
Markdown
Raw Normal View History

2015-02-22 21:55:02 +02:00
# PYNAMES - библиотека для генерации имён
2012-01-18 18:43:13 +03:00
2012-01-18 19:04:38 +03:00
**Name generation library - [see English description here](https://github.com/Tiendil/pynames/wiki/EN_README)**
2012-01-18 19:02:35 +03:00
2012-01-18 18:43:13 +03:00
Основное назначение библиотеки - генерация имён персонажей в играх. Например, эльфийски, дварфских, корейских, монгольских, в общем - любых.
Библиотека легко расширяема, если Вам нужен дополнительный функционал (или дополнительные языки), свяжитесь со мной (или просто запостите issue), а лучше реализуейте и сделайте pull-запрос.
## Пример использования
2012-01-18 18:45:01 +03:00
2012-01-18 18:43:13 +03:00
```python
from pynames.generators import GENDER, LANGUAGE
```
Все генераторы разбиты по языкам (или по рассам), так, что все генераторы эльфийских имён находятся в модуле pynames.elven
2012-01-18 18:45:01 +03:00
2012-01-18 18:43:13 +03:00
```python
from pynames.elven import DnDNamesGenerator
elven_generator = DnDNamesGenerator()
```
количество различных имён (мужских и женских) и для каждого пола в отдельности
2012-01-18 18:45:01 +03:00
2012-01-18 18:43:13 +03:00
```python
2015-02-22 21:55:02 +02:00
In [4]: elven_generator.get_names_number()
2012-01-18 18:43:13 +03:00
Out[4]: 1952949936
2015-02-22 21:55:02 +02:00
In [5]: elven_generator.get_names_number(GENDER.MALE)
2012-01-18 18:43:13 +03:00
Out[5]: 976474968
In [6]: elven_generator.get_names_number(GENDER.FEMALE)
Out[6]: 976474968
```
Быстрое получение просто случайного имени
2012-01-18 18:45:01 +03:00
2012-01-18 18:43:13 +03:00
```python
2015-02-22 21:55:02 +02:00
In [7]: elven_generator.get_name_simple()
2012-01-18 18:43:13 +03:00
Out[7]: u'Elineer'
2015-02-22 21:55:02 +02:00
In [8]: elven_generator.get_name_simple(GENDER.MALE)
2012-01-18 18:43:13 +03:00
Out[8]: u'Caslithdar'
In [9]: elven_generator.get_name_simple(GENDER.MALE, LANGUAGE.EN) # English transcription
Out[9]: u'Mararon'
In [10]: print elven_generator.get_name_simple(GENDER.MALE, LANGUAGE.RU) # Russian transcription
Ттомусиэл
```
2012-01-18 18:45:01 +03:00
Вместо текста можно получить объект имени с подробной информацией.
2012-01-18 18:43:13 +03:00
Для имён на кирилице есть формы всех падажей и чисел.
2012-01-18 18:43:13 +03:00
```python
In [11]: name = elven_generator.get_name()
In [12]: name.translations # all translations
Out[12]:
{u'm': {u'en': u"rae'Gileleel",
u'ru': [u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u044c",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u044f",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u044e",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u044f",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u0435\u043c",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u0435",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u0438",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u0435\u0439",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u044f\u043c",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u0435\u0439",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u044f\u043c\u0438",
u"\u0440\u0430\u044d'\u0413\u0438\u043b\u044c\u0435\u043b\u044d\u0435\u043b\u044f\u0445"]}}
In [13]: name.genders
Out[13]: frozenset({u'm'}) # all genders
2012-01-18 18:43:13 +03:00
```
На текущий момент реализовано два алгоритма генерации имён:
* выбор из списка - в основном для реальных народов (например, русские языческие имена)
* табличная генерация - составление имён из частей
Сущестующие генераторы:
2015-02-22 21:55:02 +02:00
* pynames.elven.DnDNamesGenerator
* pynames.elven.WarhammerNamesGenerator
* pynames.goblin.GobberFullnameGenerator
* pynames.goblin.GoblinGenerator
* pynames.iron_kingdoms.CaspianMidlunderSuleseFullnameGenerator
* pynames.iron_kingdoms.DwarfFullnameGenerator
* pynames.iron_kingdoms.GobberFullnameGenerator == pynames.goblin.GobberFullnameGenerator
* pynames.iron_kingdoms.IossanNyssFullnameGenerator
* pynames.iron_kingdoms.KhadoranFullnameGenerator
* pynames.iron_kingdoms.OgrunFullnameGenerator
* pynames.iron_kingdoms.RynFullnameGenerator
* pynames.iron_kingdoms.ThurianMorridaneFullnameGenerator
* pynames.iron_kingdoms.TordoranFullnameGenerator
* pynames.iron_kingdoms.TrollkinFullnameGenerator
2012-01-18 18:43:13 +03:00
* pynames.korean.KoreanNamesGenerator
* pynames.mongolian.MongolianNamesGenerator
2015-02-22 21:55:02 +02:00
* pynames.orc.OrcNamesGenerator
* pynames.russian.PaganNamesGenerator
2012-01-18 18:43:13 +03:00
* pynames.scandinavian.ScandinavianNamesGenerator
2015-02-22 21:55:02 +02:00
Можно получить список всех классов генераторов следующим образом:
```python
In [1]: from pynames.utils import get_all_generators
In [2]: get_all_generators()
Out[2]:
[pynames.elven.DnDNamesGenerator,
pynames.elven.WarhammerNamesGenerator,
pynames.iron_kingdoms.OgrunFullnameGenerator,
pynames.iron_kingdoms.ThurianMorridaneFullnameGenerator,
pynames.iron_kingdoms.TordoranFullnameGenerator,
pynames.iron_kingdoms.RynFullnameGenerator,
pynames.iron_kingdoms.KhadoranFullnameGenerator,
pynames.iron_kingdoms.ThurianMorridaneFullnameGenerator,
pynames.iron_kingdoms.TrollkinFullnameGenerator,
pynames.iron_kingdoms.IossanNyssFullnameGenerator,
pynames.iron_kingdoms.CaspianMidlunderSuleseFullnameGenerator,
pynames.iron_kingdoms.GobberFullnameGenerator,
pynames.iron_kingdoms.ThurianMorridaneFullnameGenerator,
pynames.iron_kingdoms.DwarfFullnameGenerator,
pynames.russian.PaganNamesGenerator,
pynames.orc.OrcNamesGenerator,
pynames.scandinavian.ScandinavianNamesGenerator,
pynames.korean.KoreanNamesGenerator,
pynames.mongolian.MongolianNamesGenerator,
pynames.goblin.GoblinGenerator,
pynames.iron_kingdoms.GobberFullnameGenerator,
pynames.korean.KoreanNamesGenerator]
```