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