Русская морфология

RealTec

Новичок
Бог сарказма )) если бы знал как сделать не спрашивал бы. Как сделать, что бы было в любом регистре ?
кактотак:
Код:
$up = mb_strtoupper ($word, "UTF-8");

$morphed = $morphy -> lemmatize ($up);

if (!is_array ($morphed)) {
    $morphed = array ($up);
}

$normW = $morphed [0];

$firstSrc = mb_substr ($word, 0, 1, "utf-8");
$othSrc = substr ($word, strlen ($firstSrc));
       
$firstDst = mb_substr ($normW, 0, 1, "utf-8");
$othDst = substr ($normW, strlen ($firstDst));
       
if (preg_match ("|^\p{Ll}+$|u", $firstSrc)) $firstDst = mb_convert_case ($firstDst, MB_CASE_LOWER, "utf-8");
elseif (preg_match ("|^\p{Lu}+$|u", $firstSrc)) $firstDst = mb_convert_case ($firstDst, MB_CASE_UPPER, "utf-8");
elseif (preg_match ("|^\p{Lt}+$|u", $firstSrc)) $firstDst = mb_convert_case ($firstDst, MB_CASE_TITLE, "utf-8");
       
if (preg_match ("|^\p{Ll}+$|u", $othSrc)) $othDst = mb_convert_case ($othDst, MB_CASE_LOWER, "utf-8");
elseif (preg_match ("|^\p{Lu}+$|u", $othSrc)) $othDst = mb_convert_case ($othDst, MB_CASE_UPPER, "utf-8");
elseif (preg_match ("|^\p{Lt}+$|u", $othSrc)) $othDst = mb_convert_case ($othDst, MB_CASE_TITLE, "utf-8");
       
$retCase = $firstDst . $othDst;
 

xxARCHERxx

Новичок
кактотак:
Код:
$up = mb_strtoupper ($word, "UTF-8");

$morphed = $morphy -> lemmatize ($up);

if (!is_array ($morphed)) {
    $morphed = array ($up);
}

$normW = $morphed [0];

$firstSrc = mb_substr ($word, 0, 1, "utf-8");
$othSrc = substr ($word, strlen ($firstSrc));
      
$firstDst = mb_substr ($normW, 0, 1, "utf-8");
$othDst = substr ($normW, strlen ($firstDst));
      
if (preg_match ("|^\p{Ll}+$|u", $firstSrc)) $firstDst = mb_convert_case ($firstDst, MB_CASE_LOWER, "utf-8");
elseif (preg_match ("|^\p{Lu}+$|u", $firstSrc)) $firstDst = mb_convert_case ($firstDst, MB_CASE_UPPER, "utf-8");
elseif (preg_match ("|^\p{Lt}+$|u", $firstSrc)) $firstDst = mb_convert_case ($firstDst, MB_CASE_TITLE, "utf-8");
      
if (preg_match ("|^\p{Ll}+$|u", $othSrc)) $othDst = mb_convert_case ($othDst, MB_CASE_LOWER, "utf-8");
elseif (preg_match ("|^\p{Lu}+$|u", $othSrc)) $othDst = mb_convert_case ($othDst, MB_CASE_UPPER, "utf-8");
elseif (preg_match ("|^\p{Lt}+$|u", $othSrc)) $othDst = mb_convert_case ($othDst, MB_CASE_TITLE, "utf-8");
      
$retCase = $firstDst . $othDst;
за код спасибо)) но в какой файл его вставить ?) просто я лично сделал хтмл форму + jquery и передаю переменную в example-0.3.x.php (подставляю в массив)
$words = array('');

array_push($words,$date);
и дальше вывод:)
 

alekciy

Новичок
Как ей пользоваться есть ман по ней ? Я скачал с офф сайта, скачал библиотеку слов но при вводе слова у меня выдает ошибку NOT FOUND плиз помогите.
Правильно настроить веб сервер. Указанная ошибка не имеет отношения к данной библиотеке.
 

xxARCHERxx

Новичок
это как раз ошибка в библиотеке )) из-за регистра )) не могу сделать, что бы работало в любом регистре(((
 

dimansit

Новичок
Установил phpMorphy но выходит ошибка Invalid header string given... подскажите в чем может быть проблема?
 

savthegood

Новичок
Может кто-то сталкивался с похожей проблемой и знает ответ:

Как узнать слово, но основе которого сделано prediction. Т.е. например есть слово 'DIFINITION'. phpMorphy его находить, если
'predict_by_db' => true . Но как узнать правильную форму слова, т.е. в этом случае 'DEFINITION' ? Возможно ли это сделать в phpMorphy.

Спасибо за ответ.
 
Последнее редактирование:

Winrol

Новичок
1. В чем может быть ошибка ? "Testing single mode... Can`t find or predict заработать word"
2. Как скомпилировать языки для ру? или-то скиньте плиз.
 

hurt3

Новичок
Подскажите допустимо ли использование phpMorphy, в коммерческом проекте, если да- то на каких условиях?
 

hurt3

Новичок
В этом и есть вопрос.


LGPL, в отличие от GPL, позволяет связывание библиотеки с любой программой, не обязательно свободной. Спорным является вопрос о том, разрешает ли LGPL статическую компоновку с проприетарным ПО. Явным образом LGPL не запрещает статическую компоновку (этот термин даже не используется в лицензии) и в настоящее время не было прецедентов, доказывающих обратное. В ряде коммерческих программ используется статическая компоновка с библиотеками, распространяемыми под LGPL.

источник https://ru.wikipedia.org/wiki/GNU_Lesser_General_Public_License
 

fixxxer

К.О.
Партнер клуба
А причем тут коммерческий или некоммерческий? [L]GPL ничего не говорят о деньгах, они об открытии исходного кода, а не о деньгах.

В php не бывает статической или динамической линковки, это не компилируемый язык.
Некоторым аналогом можно считать разве что притянутый за уши случай, если ты хочешь взять эту библиотеку, положить в свой говнокод и заенкодить каким-нибудь zend guard, но это конечно в порядке бреда:)
А положить библиотеку рядом и использовать ее ты можешь сколько угодно.
 

hurt3

Новичок
положить библиотеку рядом и использовать ее как?
т.е. я могу использовать ее как библиотеку в своих скриптах, подинклудить и работать непосредственно с классом, я правильно понимаю?
 

andronick83

Новичок
Интересует алгоритм для склонения топонимов.

Например, есть список топонимов:
Москва
Санкт-Петербург
Нижний Новгород
Набережные Челны​
Нужно каждый из них склонить по падежам (ИМ, РД, ДТ, ВН, ТВ, ПР)

Я уже написал некий алгоритм, но он громоздкий и не всегда верный:
- разделяю фразу на слова
- ищу среди них существительное (нижний новгород -> новгород): $paradigms->getByPartOfSpeech('С');
- определяю его число (ЕД, МН) и род (МР, ЖР, СР): $form->getGrammems();
Затем получаю формы, склоняя каждое слово строки в нужных падежах добавляя число и род найденного существительного:
foreach ( $words as $word ) {
$word_form = $morphy->castFormByGramInfo($word, null, 'ИМ '.'ЕД МР', true);
...
foreach ( $words as $word ) {
$word_form = $morphy->castFormByGramInfo($word, null, 'РД '.'ЕД МР', true);
...
и т.д.
Но, например, для "Набережные Челны" определяется существительное "набережная" и склонения выходят не верные.

Подскажите, в какую сторону копать, как улучшить алгоритм.

UPD.
Хах, написал пост и сразу же нашел граммему "ЛОК" (топоним). Теперь все гораздо проще, буду искать не существительное, а сразу "ЛОК", тогда опадают всякие "набережная".
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
А в каких городах существительное не последнее слово?
 
Сверху