Lingua::RU::Inflect

Сегодня вашему вниманию представлена документация по модулю Lingua::RU::Inflect, позавчера вышел его второй релиз. Здесь есть приятный момент - мне не пришлось его переводить на русский язык, так как к модулю в комплекте прилагается бонус - документация на русском. Это хороший пример, того, как оформлять модули CPAN, представляющие интерес прежде всего для русскоязычного пользователя - на CPAN я пока не встречал других модулей с русскоязычной документацией.

Ниже представлена схема расположения файлов в установочном комплекте:

    |~Lingua-RU-Inflect-0.02/
    | |~lib/
    | | `~Lingua/
    | |   `~RU/
    | |     `-Inflect.pm # <-- Модуль Lingua::RU::Inflect 
    | |~RU/
    | | `~Lingua/
    | |   `~RU/
    | |     `-Inflect.pod # <-- Документация на русском языке 
    | |+t/
    | |-Changes
    | |-Makefile.PL
    | |-MANIFEST
    | |-META.yml
    | `-README

А теперь, собственно, сама документация:

ИМЯ

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

ВЕРСИЯ

Версия 0.02

ОПИСАНИЕ

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

    use Lingua::RU::Inflect;

    my @name = qw/Петрова Любовь Степановна/;

    my $gender = detect_gender_by_given_name(@name);
    # $gender == FEMININE

    my @genitive = inflect_given_name(GENITIVE, @name);
    # $genitive == qw/Петровой Любови Степановны/;

ПЛАНЫ

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

ЭКСПОРТ

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

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

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

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

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

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

    use Lingua::RU::Inflect qw/:short/;


    use Lingua::RU::Inflect qw/:all/; # или
    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 .

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

    use Lingua::RU::Inflect qw/:short/;

    map {
        print ob, $_;
    } qw(
        арбузе баране всём Елене ёлке игле йоде
        мне многом огне паре ухе юге яблоке
    );

    map {
        print so, $_;
    } qw(
        огнём водой
        зарёй зноем зрением зябликом
        садом светом слоном спичками ссылкой
        Стёпой стаканом сухарём сэром топором
        жарой жбаном жратвой жуком
        шаром шкафом шлангом шубой
    );

НЕПОЛАДКИ

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

ПОДДЕРЖКА

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

    perldoc Lingua::RU::Inflect

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

СМ. ТАКЖЕ

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

АВТОР

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

ЛИЦЕНЗИЯ

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

Statistic

About this Entry

This page contains a single entry by Dinar published on March 5, 2010 12:51 AM.

Mojo::Base was the previous entry in this blog.

Mojolicious - обзор возможностей фреймворка is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.