У Вас в браузере заблокирован JavaScript. Разрешите JavaScript для работы сайта!
Дескриптор | Пример | Описание |
---|---|---|
C | мама | существительное |
П | красный | прилагательное |
КР_ПРИЛ | красива | краткое прилагательное |
ИНФИНИТИВ | идти | инфинитив |
Г | идет | глагол в личной форме |
ДЕЕПРИЧАСТИЕ | идя | деепричастие |
ПРИЧАСТИЕ | идущий | причастие |
КР_ПРИЧАСТИЕ | построена | краткое причастие |
ЧИСЛ | восемь | числительное (количественное) |
ЧИСЛ-П | восьмой | порядковое числительное |
МС | он | местоимение-существительное |
МС-ПРЕДК | нечего | местоимение-предикатив |
МС-П | всякий | местоименное прилагательное |
Н | круто | наречие |
ПРЕДК | интересно | предикатив |
ПРЕДЛ | под | предлог |
СОЮЗ | и | союз |
МЕЖД | ой | междометие |
ЧАСТ | же, бы | частица |
ВВОДН | конечно | вводное слово |
ФРАЗ | бухты-барахты, зги | фразеологизм |
Граммема | Описание | |
---|---|---|
Род | ||
мр | мужской род | |
жр | женский род | |
ср | средний род | |
мр-жр | общий род (сирота, пьяница) | |
Число | ||
ед | единственное число | |
мн | множественное число | |
Падеж | ||
им | именительный | |
рд | родительный | |
дт | дательный | |
вн | винительный | |
тв | творительный | |
пр | предложный | |
зв | звательный (отче, боже) | |
2 | второй родительный или второй предложный падежи | |
Время | ||
нст | настоящее время | |
буд | будущее время | |
прш | прошедшее время | |
Лицо | ||
1л | первое лицо | |
2л | второе лицо | |
3л | третье лицо | |
Одушевленность | ||
од | одушевленное | |
но | неодушевленное | |
Вид | ||
св | совершенный вид | |
нс | несовершенный вид | |
Переходность | ||
нп | переходный | |
пе | непереходный | |
Залог | ||
дст | действительный залог | |
стр | страдательный залог | |
Другое | ||
0 | неизменяемое | |
безл | безличный глагол | |
пвл | повелительное наклонение (императив) | |
притяж | притяжательное (не используется) | |
прев | превосходная степень (для прилагательных) | |
сравн | сравнительная степень (для прилагательных) | |
кач | качественное прилагательное | |
Семантические признаки | ||
имя | имя (Иван, Михаил) | |
фам | фамилия (Иванов, Сидоров) | |
отч | отчество (Иванович, Михайлович) | |
лок | топоним (Москва, Лена, Эверест) | |
аббр | аббревиатура (КПСС, РОНО) | |
орг | организация | |
вопр | вопросительное наречие | |
указат | указательное наречие | |
жарг | жаргонизм | |
разг | разговорный | |
арх | архаизм | |
опч | опечатка | |
поэт | поэтическое | |
проф | профессионализм |
Http://сайт/service/api.php?inflect=магадан&json
{"0":"МАГАДАН","1":"МАГАДАНА","2":"МАГАДАНУ","3":"МАГАДАНОМ","4":"МАГАДАНЕ","5":"МАГАДАНЫ", "6":"МАГАДАНОВ","7":"МАГАДАНАМ","8":"МАГАДАНАМИ","9":"МАГАДАНАХ","limit":38}
Http://сайт/service/api.php?inflect=магадан
Http://сайт/service/api.php?inflect=ростов-на-дону&xml
Чтобы получить от слова «свадебный» все неодушевленные прилагательные в множественном числе вызовите:
Https://сайт/service/api.php?inflect=свадебный&json&partofspeech=П&grammems=НО,МН&info
Получите:
{"0":{"word":"СВАДЕБНЫМ","partofspeech":"П","grammems":["ДТ","КАЧ","МН","НО","ОД"]},
"1":{"word":"СВАДЕБНЫЕ","partofspeech":"П","grammems":["ИМ","КАЧ","МН","НО","ОД"]},
"2":{"word":"СВАДЕБНЫЕ","partofspeech":"П","grammems":["ВН","КАЧ","МН","НО"]},
"3":{"word":"СВАДЕБНЫХ","partofspeech":"П","grammems":["КАЧ","МН","НО","ОД","РД"]},
"4":{"word":"СВАДЕБНЫХ","partofspeech":"П","grammems":["КАЧ","МН","НО","ОД","ПР"]},
"5":{"word":"СВАДЕБНЫМИ","partofspeech":"П","grammems":["КАЧ","МН","НО","ОД","ТВ"]}
,"limit":19}
Без параметра info:
http://сайт/service/api.php?inflect=свадебный&json&partofspeech=П&grammems=НО,МН
{"0":"СВАДЕБНЫМ","1":"СВАДЕБНЫЕ","2":"СВАДЕБНЫЕ","3":"СВАДЕБНЫХ",
"4":"СВАДЕБНЫХ","5":"СВАДЕБНЫМИ","limit":19}
API получения пола: мужской, женский по имени. С помощью данного API по имени пользователя Вы сможете получить его пол. Это исключит необходимость заполнения дополнительного поря при регистрации.
Частенько возникает необходимость склонять имена на PHP . Согласитесь, что фраза "Добавить в друзья Илья " звучит намного хуже, чем "Добавить в друзья Илью ". Поэтому склонение имён по падежам в PHP требуется достаточно часто, и в этой статье я расскажу, как это можно реализовать у себя на сайте.
Сразу скажу, что идеального варианта, увы, нет. Первый вариант весьма очевидный: найти базу имён, которые будут во всех падежах, и добавить к себе эту таблицу. Затем по имени в именительном падеже искать соответствующий падеж по базе. Минусы тут очевидны: огромная база, всех имён не охватите, лишняя нагрузка на сервер .
Второй вариант - написать свой класс склонений имён на PHP , либо воспользоваться уже готовым. Поскольку правила в русском языке достаточно сложные, плюс есть масса исключений, поэтому и библиотека потребуется очень большая, да и даже она далеко не 100% спасение. Наиболее популярная из всех библиотек, занимающихся склонением имён на PHP , является NameCaseLib .
Скачав эту библиотеку и поместив на свой сайт, её можно использовать вот так:
$case = new NCLNameCaseRu(); // Создаём объект класса NCLNameCaseRu
$array = $case->q("Русаков Михаил Юрьевич"); // Получаем массив из 6-ти элементов соответствующих 6-ти падежам, в которых окажется входная строка
print_r($array); // Выводим массив
?>
Как видите, использовать библиотеку очень просто. С другой стороны, мой главный совет будет следующий: по-возможности вообще избегайте необходимости склонять слова . Всё равно будут иногда вводить люди то, что склоняться никак не может, и попытки склонения будут выглядеть нелепо. Ведь необязательно писать "Добавить в друзья Илью ", можно же ведь написано просто "Добавить в друзья " на странице Ильи.
Здравствуй, Хабрахабр!
Сегодня я расскажу о небольшом, но очень полезном фреймворке - NameCaseLib.
Я думаю, многие сталкивались с ситуацией, когда было необходимо просклонять Фамилию, Имя и Отчество человека по падежам. Данный фреймворк поможет нам избавиться от многочисленных «велосипедов».
Отлично, теперь осталось подключить сам фреймворк, для этого скачаем необходимые файлы.
NameCaseLib поддерживает два языка: русский и украинский. Файл NCL.NameCase.ru.php содержит русские правила склонения, NCL.NameCase.ua.php, соответственно, украинские. В папке NCL расположено само «ядро» фреймворка, то есть, набор основных функций.
Итак, давайте создадим файл в формате.php, и проверим работоспособность данного фреймворка.
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Метод q - склоняет Фамилию, Имя и Отчество человека по правилам пола. $array = $case->q("Максимов Александр Васильевич"); # Выводим получившийся массив. (Примечание: возвращает простой индексируемый массив) var_dump($array); ?>
Соответственно, таким же образом, мы можем склонять и украинские ФИО, подключив украинские правила склонения.
Но, давайте все-таки разберем, какие параметры содержит в себе метод q , и как его еще можно использовать?
Данный метод имеет 3 параметра, 2 из них - можно не указывать. Первый параметр - ФИО человека, второй - падеж (Список констант приведу ниже; в случае, если не указан падеж (NULL), то метод возвращает все падежи), и третий - пол человека. (Константы, также, приведены ниже; если не указать пол (NULL), метод определит его сам)
Для указания падежей русского языка:
Для указания падежей украинского языка:
С помощью метода getFullNameFormat, мы можем определить часть, или какие части ФИО мы используем.
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Метод getFullNameFormat - разбивает строку и возвращает формат, в котором записано имя. $fullName = $case->getFullNameFormat("Максимов Александр Васильевич"); /* Мы получаем формат вида: S F N, где: - S - Фамилия - N - Имя - F - Отчество */ echo $fullName; ?>
Но, что же делать, если все-таки фреймворк не может правильно определить, как склонять выбранное вами ФИО?
Для этого в библиотеке предусмотрен метод qFullName, который позволяет указать Фамилию, Имя, Отчество и пол человека в определенной последовательности.
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Параметры метода: qFullName(Фамилия, Имя, Отчество, пол, падеж, формат); Все параметры являются необязательными, если, например, не указать пол - система сама определит его. echo $nc->qFullName("Максимов", "Александр", "Васильевич", NCL::$MAN, NCL::$TVORITELN, "S N F")."\n"; ?>
Весьма популярной проблемой, с которой сталкиваются Web-программисты , это склонение слов на PHP . Например, нужно вывести, сколько минут назад была оставлено какое-нибудь сообщение. Можно написать просто число и слово "минут ". Но тогда будет написано весьма странно, например, "1 минут ", "2 минут " и так далее. Фактически, без склонения слов на PHP Вам не обойтись, если, конечно, Вы хотите писать по-русски.
Проблема новичкам покажется очень сложной, но, на самом деле, у склонения слов есть определённая закономерность. Посмотрите сами: "1 минута, 2 минуты, 5 минут, 11 минут, 19 минут, 21 минута, 22 минуты, 25 минут и так далее ". Видите закономерность? 1, 21, 31, 41 - всегда будет "минута ". Если младший разряд больше 1-го и меньше 5 , при этом само число при делении на 100 имеет остаток больше 20 (то есть, например, не число 12 и не 112 ), то будут "минуты ". В остальных случаях "минут ".
function getWord($number, $suffix) {
$keys = array(2, 0, 1, 1, 1, 2);
$mod = $number % 100;
$suffix_key = ($mod > 7 && $mod < 20) ? 2: $keys;
return $suffix[$suffix_key];
}
$array = array("минута", "минуты", "минут");
$n = 21;
echo "$n $word
";
$n = 11;
$word = getWord($n, $array);
echo "$n $word
";
$n = 4;
$word = getWord($n, $array);
echo "$n $word
";
?>
Запустив данный скрипт Вы увидите, что склонение слов на PHP происходит на ура. Могу лишь добавить, что помимо "минут " там может быть "день ", "час ", "человек ", "компьютер " и все другие существительные, которые склоняются в зависимости от числительного .