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

andronick83

Новичок
@WMix, Переславль-Залесский?
phpMorphy отлично склоняет топонимы с дефисом, без разделения на слова.

А в каких городах существительное не последнее слово?
Таких топонимов (без дефиса) пока не нашел, но как-то ненадежно..
 

Sufir

Я не волшебник, я только учусь
Только написать хотел - str_replace же тогда.
 

andronick83

Новичок
Ну так замени пробел дефисом просклоняй и замени обратно
Нет, так не выходит. Пример:
санкт-петербург, санкт-петербурга, санкт-петербургу, санкт-петербургом, санкт-петербурге
нижний-новгород, нижний-новгорода, нижний-новгороду, нижний-новгородом, нижний-новгороде
набережные-челны, набережные-челнов, набережные-челнам, набережные-челнами, набережные-челнах

phpMorphy находит в своей базе "Санкт-Петербург" с опцией phpMorphy::IGNORE_PREDICT (без предсказания),
а вот "Нижний-Новгород" уже не находит и склоняет, видимо, только последнее слово
 

WMix

герр M:)ller
Партнер клуба
- каво?
- санкт-петербурге.

ну тоже прикольно хотя у этого города как раз все в порядке, хз
 

westvovik

Новичок
Народ, как сделать запрос в phpMorphy чтоб просто просклонять только по падежам Иванов Иван Иванович, к примеру не понимаю, какой метод использовать?
 
Привет, у меня такой же вопрос, мне надо просто склонять слова в нужном падеже, но при попытке просклонять например "Математика" он мне выводит 2 результата, в МР и ЖР.
Как можно сколонять слова, чтоб результат был в том же числе и в том же роде и в том же типе?
 

westvovik

Новичок
Я так и не разобрался, бросил, здесь блин тоже сидят лентяи, никто помочь не может кто работал с этим, ЗАСРАНЦЫ!!!
 

westvovik

Новичок
Если с первого раза не получилось - парашютный спорт не для вас (с)
Надеюсь когда вам помощь потребуется, и вам не помогут, вы обязательно 10 раз вспомните, что тут написали, а так и будет, жизнь она такая!!!

А по существу, я открыв документацию (то малое что есть) в ней не понял нихрена, там еще чтобы что то понять нужно с начало уяснить для себя термины русского языка. И тут об этом писали, у меня стояла задача всего лишь просклонять ФИО. Я не думаю, что целесообразно тратить кучу времени чтоб разобраться, как работает данная библиотека, когда мне от нее нужно всего 1% от ее возможностей.

Поэтому я обратился на форум, в котором шло бурное обсуждения данной библиотеки, но толку ноль!
 
Последнее редактирование:

Stager

Новичок
При запуске примера через веб-сервер имеется проблема:
Warning: sem_get(): failed for key 0x54358309: Permission denied in /home/www-data/aref/phpmorphy/src/shm_utils.php on line 144
Error occured while creating phpMorphy instance: phpMorphy_Exception: Can`t get semaphore for '1412793097' key in /home/www-data/aref/phpmorphy/src/shm_utils.php:145 Stack trace: #0 /home/www-data/aref/phpmorphy/src/shm_utils.php(81): phpMorphy_Semaphore_Nix->__construct(1412793097) #1 /home/www-data/aref/phpmorphy/src/shm_utils.php(320): phpMorphy_Semaphore::create(1412793097, false) #2 /home/www-data/aref/phpmorphy/src/storage.php(218): phpMorphy_Shm_Cache->__construct(Array, false) #3 /home/www-data/aref/phpmorphy/src/storage.php(187): phpMorphy_Storage_Factory->createShmCache(Array) #4 /home/www-data/aref/phpmorphy/src/storage.php(211): phpMorphy_Storage_Factory->getShmCache() #5 /home/www-data/aref/phpmorphy/src/common.php(588): phpMorphy_Storage_Factory->open('shm', '/home/www-data/...', false) #6 /home/www-data/aref/phpmorphy/src/common.php(196): phpMorphy->initNewStyle(Object(phpMorphy_FilesBundle), Array) #7 /home/www-data/aref/phpmorphy/examples/example-0.3.x.php(29): phpMorphy->__construct('/home/www-data/...', 'ru_RU', Array) #8 {main}

При запуске примера из командной строки - работает нормально.

Какие и на что ему нужны разрешения?
 

alekciy

Новичок
Какие и на что ему нужны разрешения?
Веб сервер и cli режим работаю под разными пользователями. shm как и файлы на диске имеет не только маску прав, но и владельца. При первом запуске был использован cli, который создал shm сегмент. Теперь веб сервер работающий от другого юзера (видимо www-data) пытается работать с этим же сегментом, но ему не хватает прав. Вариантов решения есть много. Можно настроить библиотеку использовать не shm, а файлы, только это будет медленно, да и проблему с правами скорее всего так и не решит. Лучше запускать веб сервер под тем же пользователем (через тот же php-fpm).

В другой стороны можно сделать тупо в лоб сменив права на shm сегмент дав права для всех. Отдельно команды смены прав для shm нет, но можно скачать простую утилиту https://raw.githubusercontent.com/curu/linuxplayer/master/chshm/chshm.c скомпилировать её и сменить права. Пример (если g++ нет, то его нужно поставить через apt-get install g++):

Код:
root@traffic:~# wget https://raw.githubusercontent.com/curu/linuxplayer/master/chshm/chshm.c
--2016-04-29 10:21:12--  https://raw.githubusercontent.com/curu/linuxplayer/master/chshm/chshm.c
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.31.17.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.31.17.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3762 (3.7K) [text/plain]
Saving to: ‘chshm.c’

100%[==============>] 3,762       --.-K/s   in 0s   

2016-04-29 10:21:13 (496 MB/s) - ‘chshm.c’ saved [3762/3762]

root@traffic:~# g++ chshm.c -o chshm
root@traffic:~# ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status   
0x54358308 0          seo        664        25165824   0                    

root@traffic:~# ./chshm -m 0666 0
root@traffic:~# ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status   
0x54358308 0          seo        666        25165824   0
Тут главно указать правильный shmid. У меня это 0. Т.е. смотрим вывод команды ipcs -m ищем там shmid и указываем его как последний параметр команды ./chshm
 

Stager

Новичок
Веб сервер и cli режим работаю под разными пользователями. shm как и файлы на диске имеет не только маску прав, но и владельца.
Да, спасибо, это правильное объяснение. Никогда не сталкивался с семафорами в памяти
:)
Поскольку реально мне не нужно разделять права на shm сегмент, используемый phpmorphy, правильным решением было бы этот сегмент убить, чтобы он потом был создан нужным пользователем. Я не нашёл другого способа, кроме как перегрузить сервер :)

Спасибо, проблема решена, всё работает.
 

dimansit

Новичок
Не хочет работать PHPMorphy, пишет Error occured while creating phpMorphy instance: exception 'phpMorphy_Exception' with message 'Invalid header string given' in /mnt/ccd1/www/market.chastnik-m.ru/data/lib/morphy/src/fsa/fsa.php:162
при эрканирование 30 строки в логе появляется ошибка:
PHP Notice: Undefined variable: morphy in /mnt/ccd1/www/market.chastnik-m.ru/data/app/controller/market.php on line 539
Fatal error: Call to a member function getEncoding() on a non-object in /mnt/ccd1/www/market.chastnik-m.ru/data/app/controller/market.php on line 539

Что я неправильно делаю?
 

Stager

Новичок

RenaNip

Новичок
Здравствуйте! Подскажите, пожалуйста, как в PHP Morphy скомпилировать свой словарь? Допустим. как мне скомпилировать собственный словарь только с определенными частями речи (к примеру, без числительных)?

Спасибо за ответ!
 

TimWeber

Новичок
Всем привет. У меня возникла необходимость отредактировать словарь, но способа сделать это я не нашёл, да и ответа внятного в интернете нет. Прошу помощи. Кто-нибудь уже смог отредактировать? Есть готовые решения для таких действий? Если да - поделитесь знаниями или ссылкой.
Иначе в голову идёт только идея о доработке библиотеки и добавления в неё функций addWordForm и/или update...
Заранее спасибо за ответ и помощь!
 
Сверху