Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Склонятор - Функция склонения названий, имен и т.д.
Для выделения корня слова или различных словоформ лучше всего воспользоваться PHP - классом phpMorphy, который позволяет выделять корни слов с учетом морфологии русского, английского, украинского, эстонского или немецкого языков. Словари для каждого языка занимают 10-15 Мб. При этом не требуется устанавливать на сервер дополнительное программное обеспечение, все будет работать на самом обычном хостинге. Недостаток - низкая скрость выделения корня.
$words=urldecode($_GET['word']);
$path='lib/';
$words=preg_split('/[^a-zA-Zа-яА-Я0-9]+/u', $words, -1, PREG_SPLIT_NO_EMPTY);
echo "Результат phpmorphy:";
// подключаем библиотеку phpmorphy
$morphy=$path.'phpmorphy/';
require_once($morphy.'src/common.php');
$opts = array(
// PHPMORPHY_STORAGE_FILE - использовать файл
// PHPMORPHY_STORAGE_SHM - загружать словать в общую память(нужно расширение shmop)
// PHPMORPHY_STORAGE_MEM - загружать словать в общую память при каждой инициализации phpmorphy
'storage' => PHPMORPHY_STORAGE_FILE,
'predict_by_suffix' => true,
'predict_by_db' => true,
'graminfo_as_text' => true,
);
$morphy = new phpMorphy($morphy.'dicts', 'ru_RU', $opts);
foreach($words as $i=>$word)
$words[$i]=strtoupper($word); // в utf-8
$awords=$morphy->getBaseForm($words);
echo "<br> <br>\ngetBaseForm:<br>Получить начальную форму (Получить нормализованные слова)<br>".arr2str($awords);
$awords=$morphy->getPseudoRoot($words);
echo "<br> <br>\ngetPseudoRoot:<br>получить корень слова<br>".arr2str($awords);
// Получить все словоформы
$awords = $morphy->getAllForms($words);
echo "<br> <br>\ngetAllForms:<br>Получить все словоформы<br>".arr2str($awords);
}
// функция вывода массива
function arr2str($arr,$level=0){
$str = "array(<br>\n";
foreach ($arr as $key => $val) {
if (is_array($val)) {
$str.=str_repeat(" ",$level)."'".$key."' => " .
arr2str($val,$level+1) . ",<br>\n";
}else {
$str.=str_repeat(" ",$level)."'".$key."' => '<b>" .
str_replace("'", "\'", $val) . "</b>',<br>\n";
}
}
return $str . str_repeat(" ",$level).")";
}
Смотрите также: API склонения слов.
Пример использования склонятора имен и ников от яндекса
Пример создания поиска по своему сайту с учетом морфологии русского языка
.
Прокомментировать/Отблагодарить