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