Сегодня вашему вниманию представлена документация по модулю
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.