Документация Perl 5

Lingua::RU::Inflect

ИМЯ

Lingua::RU::Inflect - Склоняет русские имена

ВЕРСИЯ

Версия 0.02

ОПИСАНИЕ

Lingua::RU::Inflect — модуль perl, предоставляющий ряд функций для русского языка: склонение имён (а также некоторых нарицательных существительных и прилагательных), определение пола по имени, а также выбор правильной формы предлога с беглой гласной в зависимости от следующего за ним слова.

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

  1. use Lingua::RU::Inflect;
  2. my @name = qw/Петрова Любовь Степановна/;
  3. my $gender = detect_gender_by_given_name(@name);
  4. # $gender == FEMININE
  5. my @genitive = inflect_given_name(GENITIVE, @name);
  6. # $genitive == qw/Петровой Любови Степановны/;

ПЛАНЫ

В следующих версиях планируется склонять любые существительные, любые слова, что угодно...

ЭКСПОРТ

Функции detect_gender_by_given_name и detect_gender_by_given_name экспортируются по умолчанию.

Кроме того, можно экспортировать константы с именами падежей:

  1. use Lingua::RU::Inflect qw/:cases/;

Или функции и константы пола/рода:

  1. use Lingua::RU::Inflect qw/:subs :genders/;

Или короткие псевдонимы функций

  1. use Lingua::RU::Inflect qw/:short/;
  2. use Lingua::RU::Inflect qw/:all/; # или
  3. use Lingua::RU::Inflect qw/:cases :genders :subs/;

ФУНКЦИИ

detect_gender_by_given_name

Пытается определить пол по имени. Принимает до трёх аргументов: фамилию, имя, отчество.

Возвращает MASCULINE либо FEMININE при успешном определении мужского либо женского пола соответственно или undef при невозможности однозначного определения.

Правила определения

При совпадении с каким-либо правилом оставшиеся правила игнорируются.

  1. Отчество, если указано, позволяет однозначно определить пол: женские отчества заканчиваются на «на», мужские — на «ич» и «ыч».

  2. Большинство русских женских имён оканчивается гласными «а» и «я». Большинство русских мужских имён оканчивается согласной.

    Существуют исключения из обоих правил, женские имена (например, русское имя Любовь, библейские имена Руфь, Рахиль, иностранные имена) могут заканчиваться согласной буквой; мужские имена могут заканчиваться на «а» и «я», особенно это относится к уменьшительно-ласкательным формам имён: Алёша (Алексей), Коля (Николай) и т. д. По некоторым уменьшительно-ласкательным формам имён нельзя установить пол ввиду неоднозначности: так, имя Саша соответствует как мужскому имени Александр, так и женскому Александра; Женя — мужскому Евгений и женскому Евгения. Подобные исключения обрабатываются.

    При получении неопределённого результата функция пытается определить его на следующем шаге.

  3. Большинство русских фамилий образовано от притяжательных слов (включая имена). Женские варианты таких фамилий заканчиваются на «а». Некоторые фамиллии образованы от прилагательных. Женские варианты таких фамилий заканчиваются на «я».

_inflect_given_name

Склоняет фамилию, имя, отчество. Принимает до 5 аргументов — пол, падеж, фамилия, имя, отчество (фамилия, имя, отчество должны быть в именительном падеже).

Возвращает список — фамилию, имя, отчество в заданном падеже.

inflect_given_name

Определяет пол по имени и склоняет это имя.

Принимает до 5 аргументов — падеж, фамилия, имя, отчество (фамилия, имя, отчество должны быть в именительном падеже).

Падеж может быть представлен константой, доступны имена: NOMINATIVE, GENITIVE, DATIVE, ACCUSATIVE, INSTRUMENTAL, PREPOSITIONAL для именительного, родительного, дательного, винительного, творительного и предложного падежей соответственно.

Возвращает список — фамилию, имя, отчество в заданном падеже.

choose_preposition_by_next_word

Выбирает предлог с беглой гласной (например, о/об/обо) по следующему за ним слову.

Принимает 2 аргумента: предлог и следующее_слово. В качестве предлога выступает строка с наиболее коротким из возможных значений. Допустимые предлоги: 'в', 'из', 'к', 'над', 'о', 'от', 'пред', 'перед', 'под' и 'с'.

Для вызова функции с допустимыми предлогами задан ряд псевдонимов. Имена псевдонимов образованы от полных вариантов (чтобы избежать использования однобуквенных идентификаторов) за исключением ob:

izo

izo — псевдоним для choose_preposition_by_next_word 'из',

ko

ko — псевдоним для choose_preposition_by_next_word 'к',

nado

nado — псевдоним для choose_preposition_by_next_word 'над',

ob

ob — псевдоним для choose_preposition_by_next_word 'о',

oto

oto — псевдоним для choose_preposition_by_next_word 'от',

podo

podo — псевдоним для choose_preposition_by_next_word 'под',

predo

predo — псевдоним для choose_preposition_by_next_word 'пред',

peredo

peredo — псевдоним для choose_preposition_by_next_word 'перед',

so

so — псевдоним для choose_preposition_by_next_word 'с',

vo

vo — псевдоним для choose_preposition_by_next_word 'в',

По умолчанию эти псевдонимы не экспортируются. Можно указать экспортирование явно, указав имена нужных функций либо тэги :short и :all.

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

  1. use Lingua::RU::Inflect qw/:short/;
  2. map {
  3. print ob, $_;
  4. } qw(
  5. арбузе баране всём Елене ёлке игле йоде
  6. мне многом огне паре ухе юге яблоке
  7. );
  8. map {
  9. print so, $_;
  10. } qw(
  11. огнём водой
  12. зарёй зноем зрением зябликом
  13. садом светом слоном спичками ссылкой
  14. Стёпой стаканом сухарём сэром топором
  15. жарой жбаном жратвой жуком
  16. шаром шкафом шлангом шубой
  17. );

НЕПОЛАДКИ

Пожалуйста, присылайте сообщения о найденных неполадках и желаемых возможностях на bug-lingua-ru-inflect at rt.cpan.org, или через веб-интерфейс на http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Lingua-RU-Inflect. Меня известят, и вы будете автоматически оповещены при устранении найденных вами неполадок.

ПОДДЕРЖКА

Вы можете найти документацию к этому модулю с помошью команды perldoc.

  1. perldoc Lingua::RU::Inflect

Кроме того, вы можете найти информацию в других местах:

СМ. ТАКЖЕ

http://www.imena.org/declension.html

АВТОР

Александр Сапожников http://shoorick.ru/

ЛИЦЕНЗИЯ

Эта библиотека является свободным программным обеспечением, вы можете распространять и модифицировать её на тех же условиях, что и Perl.