Lingua::RU::Inflect
ИМЯ
Lingua::RU::Inflect - Склоняет русские имена
ВЕРСИЯ
Версия 0.02
ОПИСАНИЕ
Lingua::RU::Inflect — модуль perl, предоставляющий ряд функций для русского языка: склонение имён (а также некоторых нарицательных существительных и прилагательных), определение пола по имени, а также выбор правильной формы предлога с беглой гласной в зависимости от следующего за ним слова.
Пример использования:
ПЛАНЫ
В следующих версиях планируется склонять любые существительные, любые слова, что угодно...
ЭКСПОРТ
Функции detect_gender_by_given_name
и
detect_gender_by_given_name
экспортируются по умолчанию.
Кроме того, можно экспортировать константы с именами падежей:
- use Lingua::RU::Inflect qw/:cases/;
Или функции и константы пола/рода:
- use Lingua::RU::Inflect qw/:subs :genders/;
Или короткие псевдонимы функций
ФУНКЦИИ
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.