Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function chastrechiRUS($string) {
$endings = ['ыми' => 1, 'ей'=> 1, 'ий' => 1, ... ,'ивш' => 2, 'ывш' => 2, 'ующ'=>2, ... ];
$endings_length = [2,3];
$ret_data = array();
$words = explode(' ',$string);
foreach ($words as $wk => $w) {
$ret_data[$wk] = 0;
foreach ($endings_length as $length) {
$tmp_ending = substr($w,-$length);
if (isset($endings[$tmp_ending])) {
$ret_data[$wk] = $endings[$tmp_ending];
break;
}
}
}
return array_reverse($ret_data);
}
function chastrechiRUS($string)
{
/*
Группы окончаний:
1. прилагательное
2. причастие
3. глагол
4. существительное
*/
$groups
= array(
1 => array('ее', 'ие', 'ые', 'ое', 'ими', 'ыми', 'ей',
'ий', 'ый', 'ой', 'ем', 'им','ым','ом','его',
'ого','ему','ому','их','ых','ую','юю','ая',
'яя','ою','ею'),
2 => array('ивш','ывш','ующ','ем','нн','вш','ющ',
'щ','ущи','ющи', 'ящий','щих','щие'),
3 => array('ила','ыла','ена','ейте','уйте','ите',
'или','ыли','ей', 'уй','ил','ыл',
'им','ым','ен','ило','ыло','ено',
'ят','ует','уют','ит','ыт','ены','ить',
'ыть','ишь','ую','ю','ла','на','ете',
'йте','ли','й','л','ем','н','ло','но',
'ет','ют','ны','ть','ешь','нно'),
4 => array ('а','ев','ов','ие','ье','е','иями',
'ями','ами','еи','ии','и','ией',
'ей','ой','ий','й','иям','ям','ием',
'ем','ам','ом','о','у','ах','иях',
'ях','ы','ь','ию','ью','ю','ия',
'ья','я','ок', 'мва', 'яна', 'ровать'),
);
$res=array();
$words = explode(' ', $string);
//print_r($words);
foreach ($words as $wk=>$w) {
foreach ($groups as $gk=>$g) {
foreach ($g as $part) {
if (substr($w, -strlen($part)) == $part
&& $res[$wk][$gk] < strlen($part) // любая часть речи, окончания
|| stripos($w, $part)!==false
&& $gk == 2 //причастие, в любом месте слова
) {
$res[$wk][$gk] = strlen($part);
}
}
}
if (!isset($res[$wk][$gk])) {
$res[$wk][$gk] = 0;
}
}
$result = array();
foreach ($res as $r) {
arsort($r);
array_push($result, key($r));
}
return $result;
}
Определение, конечно не 100%, но можно легко дорабатывать.
Определение части речи слова на PHP одной функцией