Выбор правильной формы множественного числа
Сразу говорю, я native speaker.
Хочу узнать правила выбора формы множественного числа после числительных.
Например, 0 рублей, 1 рубль, 2 рубля, 3 рубля, 4 рубля, 5 рублей, ...
Я прикладной математик, поэтому привык всё раскладывать по полочкам. Использую следующий алгоритм:
1) Для каждого существительного я запоминаю 3 формы. В случае существительного «рубль», это: первая — «1 рубль», вторая — «3 рубля», третья — «5 рублей».
2) Если номер длиннее одной цифры, и предпоследняя цифра равна 1, то использую третью форму. Примеры: «12 рублей», «1019 рублей».
Иначе:
3) Если номер оканчивается на 1, то использую первую форму: «1 рубль», «21 рубль».
4) Если номер оканчивается на 2, 3 или 4, то использую вторую форму: «2 рубля», «4 рубля».
5) Во всех остальных случаях (если номер оканчивается на 0, 5, 6, 7, 8, 9), использую третью форму: «0 рублей», «25 рублей», «30 рублей», «107 рублей».
Проблема в том, что этот алгоритм конкретно нагружает мозг, и я иногда запинаюсь во время устной речи. В то же время те люди, с которыми я общался, такой проблемы не имеют. Видимо, они используют какой-то более простой/быстрый алгоритм. Но, к сожалению, ничего проще мне не удалось придумать.
Кто-нибудь помнит школьную программу? Что там говорилось насчёт числительных?
Кроме того, меня интересуют падежи, но это вопрос для отдельной темы.
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by SAn
Видимо, они используют какой-то более простой/быстрый алгоритм.
Я сильно подозреваю, что это тот самый алгоритм, согласно которому сороконожка поочередно переставляет свои сорок ног.
Нет, серьезно, я понятия не имела, что носителям языка нужно на такой случай держать в голове какой-то алгоритм. :-o
Re: Выбор правильной формы множественного числа
Нужно. Причём не столько для устной речи (там и ошибиться можно, благо я не такой великий человек, чтобы мои речи тут же записывали), сколько для письменной речи и программирования.
Дело в том, что я очень не люблю фразы типа: «Сейчас на форуме 5 посетитель(я/ей)».
И не люблю, когда меня называют «Уважаемый(ая) Антон».
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by SAn
Кто-нибудь помнит школьную программу? Что там говорилось насчёт числительных?
Именно то, что ты сказал. Сказали один раз, а потом всех, кто ошибался, исправляли. До тех пор, пока некоторые не запомнили все варианты от нуля до двадцати и всё образуют по их подобию, а все остальные ошибаются и сегодня.
Re: Выбор правильной формы множественного числа
Запомнить 20 вариантов для всех существительных? Это невозможно.
Кроме того, я заметил, что русские люди могут формировать множественные числа даже для слов, которых никогда не слышали.
Вот я только что придумал существительное «корбулька». Я каким-то волшебным образом определяю, что это слово, вероятно, женского рода. Более того, это что-то маленькое и хорошее. Далее я могу придумать его формы: «у меня есть одна корбулька», «дай мне пять корбулек», «все корбульки закончились».
Вопрос: по каким правилам это делается? Т.е. как, имея неизвестное слово, определить его род и сгенерировать формы множественного числа?
Re: Выбор правильной формы множественного числа
Все делается по аналогии с чем-то похожим. На первых порах аналогию устанавливает правило. Затем практика языка.
Re: Выбор правильной формы множественного числа
Было бы приятно услышать более строгие ответы. Я так понимаю, здесь находятся специалисты по русскому языку.
Представьте, что я создаю систему проверки грамматики, которая должна работать в том числе и для незнакомых слов.
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by SAn
Было бы приятно услышать более строгие ответы. Я так понимаю, здесь находятся специалисты по русскому языку.
Представьте, что я создаю систему проверки грамматики, которая должна работать в том числе и для незнакомых слов.
Хорошо, тогда если слово "аналогия" недостаточно строгое, то я лучше помолчу и подожду, что скажут специалисты по русскому языку. :crazy:
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by SAn
Было бы приятно услышать более строгие ответы. Я так понимаю, здесь находятся специалисты по русскому языку. ...
Да, наверное, было бы приятно. Но увы... Нету тута ни специалистов, ни филолохов. Не прибились, к сожалению. Мы просто носители - любители. И просим любить и жаловать, по возможности.
Re: Выбор правильной формы множественного числа
Моя мнемоника по этому поводу. Есть традиционные единственное (1) и множественное (проч.) грамматические числа плюс остатки двойственного числа, применимые к 2,3,4. Исключения - числа второго десятка ( -надцать) которые все - множественного.
Re: Выбор правильной формы множественного числа
Извините, никого не хотел обидеть.
Я банально пишу маленький PHP-скрипт для Интернета, который выбирает нужную форму существительного. Сейчас это выглядит примерно так (ничего нового):
Code:
Сейчас на форуме <?php SelectRussianForm($visitors, 'посетитель', 'посетителя', 'посетителей');?>!
где SelectRussianForm() — моя функция, работающая по алгоритму, приведённому в первом сообщении. Проблема в том, что при модификации стандартных серверных скриптов не всегда удаётся задать несколько форм. Многие скрипты пришли их англоговорящих стран, и поддерживают либо две формы («один» и «много»), либо вообще одну форму, к которой автоматом приписывают «s», если нужно.
Соответственно, было бы очень приятно написать процедуру, принимающую и склоняющую слово, зная лишь одну его форму.
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by SAn
Соответственно, было бы очень приятно написать процедуру, принимающую и склоняющую слово, зная лишь одну его форму.
Для русского языка это вряд ли возможно. У нас три склонения (внутри которых имеются ещё и варианты) и немало исключений. Так что для корректного выбора мн. числа нужно либо указывать три формы (в массиве или каким-то иным способом), либо найти способ указать в качестве аргумента тип склонения, чтобы функция могла корректно образовывать другие формы. В любом случае скрипты, рассчитанные на английский язык, тут не подходят.
Re: Выбор правильной формы множественного числа
Плохо представляю себе, что такое php, а на C(?) где-то так:
!(n%10&&n%10<5)||!(n/10%10-1)?"посетителей":!(n%10-1)?"посетитель":"посетителя"
Худо-бедно в одну строчку и два условия. :)
Кстати, в английском для множественного числа тоже исключений порядочно наберется.
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by it-ogo
!(n%10&&n%10<5)||!(n/10%10-1)?"посетителей":!(n%10-1)?"посетитель":"посетителя"
Я бы заменил !(...)||!(...) на (...) && (...) тогда варианты выбора для этого условия поменяются местами и все три варианта выбора результата будут стоять друг за другом
Quote:
(n%10&&n%10<5) && (n/10%10-1) ? !(n%10-1) ? "посетитель":"посетителя":"п сетителей"
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by CoffeeCup
Quote:
(n%10&&n%10<5) && (n/10%10-1) ? !(n%10-1) ? "посетитель":"посетителя":"п сетителей"
Угу, так красивше. Буду студентов этим мучить. :spiteful:
Re: Выбор правильной формы множественного числа
Блин. Ну вы и наворотили. Минут 10 пытался понять, что написано на языке C.
Потом понял, почему код сложно воспринимается: слишком много отвлекающих внимание скобок. Они специально понаставлены, чтобы запутать читающего. Без скобок гораздо лучше:
Code:
n%10&&n%10<5&&n/10%10-1?n%10==1?"посетитель":"посетителя":"посетителей"
Спасибо, очень помогли. В таком виде правило понятно не только русским, но и иностранцам. Хоть в грамматический словарь заноси.
P.S. Я проверил код на всевозможных тестах: действительно, правильно работает.
Re: Выбор правильной формы множественного числа
Вот, собственно, программа:
Code:
#include<iostream>
using namespace std;
int main(int argc, char **argv)
{
unsigned int n;
cout << "Введите число посетителей: "; cin >> n;
cout << n << " посетител" << ( n%10&&n%10<5&&n/10%10-1?n%10==1?'ь':'я':"ей" ) << endl;
return EXIT_SUCCESS;
}
Русский язык, оказывается, совсем простой.
Re: Выбор правильной формы множественного числа
Коллективный разум - великая вещь! Все лаконичнее и лаконичнее.
Итак, лабораторная работа номер 6 "Операции в языке С", вопрос на 5+:
Для решения какой распространенной задачи программирования может использоваться следующее выражение
Quote:
Originally Posted by SAn
Code:
n%10&&n%10<5&&n/10%10-1?n%10==1?"а":"б":"в"
И что, например, для этого следует подставить вместо строк "а","б" и "в"?
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by SAn
Было бы приятно услышать более строгие ответы. Я так понимаю, здесь находятся специалисты по русскому языку.
Представьте, что я создаю систему проверки грамматики, которая должна работать в том числе и для незнакомых слов.
Ну, если дело доходит до создания программы - там всё довольно просто - существует база данных суффиксов (для русского языка) и накладываются определённые правила морфологии по падежам.
Я, в принципе, с чем-то похожим (хотя и гораздо проще) столкнулся, когда надо было из числа делать сумму прописью (для бухгалтерских документов).
В общем-то, весь алгоритм был довольно прост, и успешно расписывал любые числа (был один затык с тем, что тысяча - женского рода, а все остальные "круглые" числительные - мужского).
По поводу любого "сконструированного" слова, определение рода происходит обычно по окончанию (обычно, но не всегда), а морфология - по суффиксу/его отсутствию.
Кстати, видел один алгоритм, который для определения правил морфологии пользовал рифм. Если известны правила морфологии рифмующегося слова, значит известны и правила морфологии искомого слова.
(это касается программ)
Что же касается человека - всё происходит приблизительно по тому же сценарию, только мозг гораздо быстрее находит аналогию с чем-то уже известным. Ведь всё новое, что мы узнаём укладывается и сортируется у нас в голове на основании накопленного в прошлом опыта. Так что, чем больше слов ты видел/слышал/читал/произносил - тем больше вероятность интуитивного нахождения правильного варианта.
Чётких правил для человеческого мышления ещё не сформулировали, хотя подозреваю, что они есть, хотя и предельно сложные для осознанного понимания. В любом случае, пользоваться таким "алгоритмом" будет весьма сложно практически.
Re: Выбор правильной формы множественного числа
Quote:
Originally Posted by Ramil
Кстати, видел один алгоритм, который для определения правил морфологии пользовал рифм. Если известны правила морфологии рифмующегося слова, значит известны и правила морфологии искомого слова.
Да, есть и такая упрощённая версия поиска аналогии. Разумеется, не без проблем. Штука в том, что способов имплементировать "псевдо-аналогии" немало, но настоящие аналогии строятся с учётом вероятностей (http://en.wikipedia.org/wiki/Maximum_entropy) и включают в себя само-обучающий компонент. Вот, например, список некоторых open-source проектов: http://opennlp.sourceforge.net/projects.html Всё это работает с определённым уровнем точности и т.д.