Generate character names for diverse cultures and settings.
Find a file
Aliaksei Yaletski 59c0e469b4 Update README.md
some words about russian name forms
2015-06-07 11:16:22 +03:00
helpers full russian name forms 2014-03-12 19:46:39 +03:00
pynames Merge pull request #11 from imposeren/file_adapter 2015-03-21 08:38:42 +02:00
.gitignore removed FromCSVTables.AUTOLOAD attribute. Should fix #7 2015-03-16 21:51:22 +02:00
LICENSE initial implementaton with some tests 2012-01-17 00:31:56 +03:00
MANIFEST.in include csv when installing package 2015-02-12 22:46:13 +02:00
README.md Update README.md 2015-06-07 11:16:22 +03:00
setup.py added FromCSVTablesGenerator. added IronKingdoms gobber fullnames generator 2015-02-09 22:20:33 +02:00

PYNAMES - библиотека для генерации имён

Name generation library - see English description here

Основное назначение библиотеки - генерация имён персонажей в играх. Например, эльфийски, дварфских, корейских, монгольских, в общем - любых.

Библиотека легко расширяема, если Вам нужен дополнительный функционал (или дополнительные языки), свяжитесь со мной (или просто запостите issue), а лучше реализуейте и сделайте pull-запрос.

Пример использования

from pynames.generators import GENDER,  LANGUAGE

Все генераторы разбиты по языкам (или по рассам), так, что все генераторы эльфийских имён находятся в модуле pynames.elven

from pynames.elven import DnDNamesGenerator
elven_generator = DnDNamesGenerator()

количество различных имён (мужских и женских) и для каждого пола в отдельности

In [4]: elven_generator.get_names_number()
Out[4]: 1952949936

In [5]: elven_generator.get_names_number(GENDER.MALE)
Out[5]: 976474968

In [6]: elven_generator.get_names_number(GENDER.FEMALE)
Out[6]: 976474968

Быстрое получение просто случайного имени

In [7]: elven_generator.get_name_simple()
Out[7]: u'Elineer'

In [8]: elven_generator.get_name_simple(GENDER.MALE)
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
Ттомусиэл

Вместо текста можно получить объект имени с подробной информацией.

Для имён на кирилице есть формы всех падажей и чисел.

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

На текущий момент реализовано два алгоритма генерации имён:

  • выбор из списка - в основном для реальных народов (например, русские языческие имена)
  • табличная генерация - составление имён из частей

Сущестующие генераторы:

  • 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
  • pynames.korean.KoreanNamesGenerator
  • pynames.mongolian.MongolianNamesGenerator
  • pynames.orc.OrcNamesGenerator
  • pynames.russian.PaganNamesGenerator
  • pynames.scandinavian.ScandinavianNamesGenerator

Можно получить список всех классов генераторов следующим образом:

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]