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

Wicked

Новичок
Нашул какую-то проблему:
wicked@wnote:~/Programming//phpmorphy-0.3.7/bin$ php mrd2xml.php
PHP Fatal error: Declaration of phpMorphy_Dict_Flexia_Decorator::setPrefix() must be compatible with that of phpMorphy_Dict_Flexia_Interface::setPrefix() in /home/wicked/Programming//phpmorphy-0.3.7/utils/libs/decorator.php(82) : eval()'d code on line 1
Починил так:
/home/wicked/Programming//phpmorphy-0.3.7/utils/libs/decorator.php
lmbReflectionHelper::getSignature($name, $method)
Код:
+    if(self :: _isInterfaceMethod($name, $method))
+      return self :: _getFullSignature($name, $method);
+
    if(!is_callable(array($name, $method)))
      return "function $method()";
-
-    if(self :: _isInterfaceMethod($name, $method))
-      return self :: _getFullSignature($name, $method);
 

Wicked

Новичок
Кстати, мне не очень понятна парадигма из getCommonMorphier() обращаться к несуществующим свойствам типа __common_morphier, перехватывать их через __get(), откуда уже инициировать их :)
Имхо
PHP:
function getCommonMorphier() {
  if ($this->__common_morphier === null) {
    $this->__common_morphier = new ...;
  }
  return $this->__common_morphier
}
было бы вполне достаточно. Или я что-то упускаю?
 

Wicked

Новичок
Но нужно в bin\build_dict.php исправить
define('MORPHY_BUILDER', MORPHY_DIR . 'bin/morphy_builder');
на
define('MORPHY_BUILDER', MORPHY_DIR . 'bin/morphy_builder.exe');
Реквестирую исправление в сорцах самого phpmorphy :)
Также было бы замечательно выложить всё на github, например. Если ты это не собираешься делать, то ты не будешь против, если это сделаю я? По-моему, многим так будет удобней пользоваться.
 

Wicked

Новичок
Ты распространяешь xml в качестве сорцов словаря - почему не mrd? Есть ли средства для редактирования таких xml на подобие Morphwizard?
 

Allality

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

Может кто-нибудь поделится готовой программой под 0.3.x в UTF8? Наверняка кто-то писал...
 

Emin

Новичок
Vladzimir

Ок, рассказываю подробно.
1) Вам понадобятся словари в myspell (hunspell тоже подходят) формате. Скачать их можно отсюда http://wiki.services.openoffice.org/wiki/Dictionaries, брать нужно Spelling словари.
2) Скачиваем http://sourceforge.net/projects/phpmorphy/files/phpmorphy-buildsystem/0.3.x/morphy-0.3.1-win32.zip/download и распаковываем в c:/phpmorphy-bs/
3) Скачиваем саму либу (http://sourceforge.net/projects/phpmorphy/files/phpmorphy/0.3.7/phpmorphy-0.3.7.zip/download) и распаковываем в c:/phpmorphy-bs/lib
4) Создаем переменную окружения MORPHY_DIR=c:/phpmorphy-bs
5) Создаем переменную окружения PHPRC=путь_где_лежит_пхп, т.е. команда %PHPRC%/php -v должна отработать
5) Скачиваем нужные словари (см п.1) и распаковываем их в c:/tmp/hunspell-dicts, нам понадобятся два файла с расширением .dic и .aff, пусть это будут ru_RU_yo.aff и ru_RU_yo.dic
6) cd c:/tmp/hunspell-dicts
7) Конвертим hunspell словари в xml формат: c:/phpmorphy-bs/bin/hun2xml.exe --affix ru_RU_yo.aff --dict ru_RU_yo.dic --locale ru_RU --xml=ru_RU.xml --verbose. Если все прошло нормально получим файл ru_RU.xml
8) mkdir out
9) Компилируем бинарный словарь из ru_RU.xml: c:/phpmorphy-bs/lib/bin/build_dict ru_RU.xml out utf-8 1 1
10) Если п.9 выполнился без ошибок, в каталоге c:/tmp/hunspell-dicts/out будет лежать готовый словарь.
Добрый день,
Я пытаюсь скомпилировать словарь для французского языка,
спотыкаюсь на анкодах - Locale 'fr_CH' unsupported for dialing dictionaries. Skip ancodes map.
пытался добавить в функцию locale_to_dialing, но видимо все не так просто,
подскажите где эта локаль берется?
Спасибо
 

NekiKawainie

Новичок
Скажите пожалуйста можно ли как-то в предложении привести все слова к такой ворме, что бы исправились морфологические ошибки (грубо говоря исправить ошибки, только не как в ворде орфографические, а морфологические)?

Или хотя бы есть ли возможность привести 2 слова что бы получилось нормальное словосочетание? А то исправляю текст отсканированный вручную.

Если у кого есть подобный код - поделитесь пожалуйста.
 

NekiKawainie

Новичок
Хотел бы добавить что я плохо знаю правила русского языка (я ещё школьник), по этому мне трудно понять как составить программу.

Если есть словосочетание "Мой книга". Коков должен быть алгоритм что бы преобразовать его к безошибочному виду с помощью phpmorphy.

Заранее спасибо.
 

mixacan

Новичок
А можно как-то по "человечнее" описать процесс установки этого всего. Из того что вот здесь написано:
Vladzimir

Ок, рассказываю подробно.
1) Вам понадобятся словари в myspell (hunspell тоже подходят) формате. Скачать их можно отсюда http://wiki.services.openoffice.org/wiki/Dictionaries, брать нужно Spelling словари.
2) Скачиваем http://sourceforge.net/projects/phpmorphy/files/phpmorphy-buildsystem/0.3.x/morphy-0.3.1-win32.zip/download и распаковываем в c:/phpmorphy-bs/
3) Скачиваем саму либу (http://sourceforge.net/projects/phpmorphy/files/phpmorphy/0.3.7/phpmorphy-0.3.7.zip/download) и распаковываем в c:/phpmorphy-bs/lib
4) Создаем переменную окружения MORPHY_DIR=c:/phpmorphy-bs
5) Создаем переменную окружения PHPRC=путь_где_лежит_пхп, т.е. команда %PHPRC%/php -v должна отработать
5) Скачиваем нужные словари (см п.1) и распаковываем их в c:/tmp/hunspell-dicts, нам понадобятся два файла с расширением .dic и .aff, пусть это будут ru_RU_yo.aff и ru_RU_yo.dic
6) cd c:/tmp/hunspell-dicts
7) Конвертим hunspell словари в xml формат: c:/phpmorphy-bs/bin/hun2xml.exe --affix ru_RU_yo.aff --dict ru_RU_yo.dic --locale ru_RU --xml=ru_RU.xml --verbose. Если все прошло нормально получим файл ru_RU.xml
8) mkdir out
9) Компилируем бинарный словарь из ru_RU.xml: c:/phpmorphy-bs/lib/bin/build_dict ru_RU.xml out utf-8 1 1
10) Если п.9 выполнился без ошибок, в каталоге c:/tmp/hunspell-dicts/out будет лежать готовый словарь.
Половина - просто не понятна, половина ссылок нерабочие. Да и еще жаргон этот, я начинающий программист, мне очень нужно сейчас программу определения слов, как в примере на сайте ("демонстрация работы"). Но как это все установить - мне совершенно не понятно.
 

Фанат

oncle terrible
Команда форума
программа должна полностью анализировать семантику текста (синтаксис, кол-во глаголов, существительных, наречий, падежи и пр.).
Весьма похвальное желание.
Кстати, несколько лет назад был похожий случай.
Группа исследователей-энтузиастов составляла частотный словарь
произведений Михаила Щербакова: загнала в компьютер все доступные тексты и
заставила умную программу подсчитать для каждого слова, сколько раз оно в
этих текстах встречается.
Программа была настолько умная, что сама определяла грамматическую
принадлежность слова (существительное, глагол и т. п.) и распознавала потом
это слово во всех его формах: падежах, лицах, числах и т.д.
Когда работа была сделана, ее авторы, проверяя возможности своего
детища, поинтересовались, в частности, какой глагол у Щербакова самый
употребительный. И получил ответ: глагол "мыть".
Авторы переглянулись: они неплохо знали тексты Щербакова и что-то не
замечали там обилия этого глагола. Тогда они спросили, какой глагол
следующий по употребительности, и программа уверенно ответила: глагол
"какать"...
Только шок, пережитый авторами работы, заставил их вспомнить, что а)
программа считает деепричастия не самостоятельными словами, а формами
соответствующих глаголов, и б) никто не сказал ей о такой штуке, как
ударение, которым и различаются "какая"-местоимение и "какая"-деепричастие.
Тогда-то выяснилась и причина лидерства глагола "мыть" -- у него кроме
деепричастия есть еще и подходящая форма повелительного наклонения...
Так что, возможно, задача может оказаться несколько сложнее, чем кажется на первый взгляд...
 

mixacan

Новичок
Весьма похвальное желание.
Кстати, несколько лет назад был похожий случай.

Так что, возможно, задача может оказаться несколько сложнее, чем кажется на первый взгляд...
Забавная история, но у нас к счастью все не настолько сильно привязано к словам и подобная путаница окажет не сильное воздействие на результаты, в любом случае попробовать стоит.
 

ХакИрФсимагущий

[засикречино]
Здраствуйте, прежде всего хочу поблагодорить вас за эту замечательную Библиотеку.
Я тут пишу программу с вашей библиотекой и обнаружил что мне не хватает данных о наречиях. Собственно есть 2 выхода. Или же мне самому обрабатывать наречия или же дописать вашу библиотеку. Думаю 2й вариант более правильный с точки зрения программирывания. Доков я не нашол по ней поэтому прошу вас помоч рассказать где что лежит.

Задача:
Определять наречия образа действия,меры, степени, места, времени,причины,цели
По славорю и окончаниям наречий.


to do:
Добавить в наречия новые массивы и алгоритмы определения.
Добавить в словарь новые массивы характеристик для наречий и отредактирывать имеющиеся наречия.

Собственно еще мб есть какойто отлаженный способ редактиывания aot словаря. Потому что вполне реально просто редактирываением словаря чето да сделать с наречиями.
 

Andrey68

Новичок
Подскажите плиз, уже 4 часа бьюсь
Поставил Morphy, все ОК, все настроил. Машина Windows XP, проект в utf-8, словари utf-8 и ВСЕ РАБОТАЕТ.
Но....
Стоит поставить точку останова в дебагере, то работать становится нельзя (дебагер от CodeLobster). На любой степ в дебагере идет эксепт, такое впечатление что он неправильно получает инфу о свойствах объекта phpMorphy после каждого шага.
Как только удаляешь объект из видимости, то все опять Ок.
На каждом шаге попадаю вот сюда:
function __get($propName) {
if($propName == 'fsa') {
$this->fsa = phpMorphy_Fsa::create($this->storage, false);

unset($this->storage);
return $this->fsa;
}
throw new phpMorphy_Exception("Unknown prop name '$propName'");
}
}
Ошибка вылетает вот такая
Fatal error: Uncaught exception 'phpMorphy_Exception' with message 'Unknown prop name 'storage'' in T:\home\ctu.ru\destoon\api\phpmorphy\src\fsa\fsa.php:270 Stack trace: #0 T:\home\ctu.ru\destoon\api\phpmorphy\examples\example.php(51): phpMorphy_Fsa_Proxy->__get('storage') #1 {main} thrown in T:\home\ctu.ru\destoon\api\phpmorphy\src\fsa\fsa.php on line 270

Пробовал убирать throw new phpMorphy_Exception, то появляется ошибка "Неправильный формат XML", но уже в самом CodeLobster.
Хочу все еще попробовать в cp1251.

Вобщем ни как не могу добавить в проект.... HELP
 

denisr

Новичок
Phpmorph для слова "мебель" пишет что родительный падеж, множественное число - это "мебелей" http://phpmorphy.sourceforge.net/dokuwiki/demo?word=мебель&dict_type=aot&enable_predict_by_suffix=1&enable_predict_by_db=1.
Это в каком таком языке так ? Будет исправлен этот баг ?

И ещё, бывают ли библиотеки, которые умеют склонять целые фразы, а не только отдельные слова ? Сейчас написал некую свою библиотеку склонения фраз, которая сначала определяет род/число существительного до первого предлога, затем склоняет все прилагательные до первого предлога. До этого способа дошёл сам, был бы рад ссылке на наиболее правильный алгоритмы склонения фраз. Иногда бывают ошибки, видимо в самой базе phpmorph, с неправильными определениями и числа, и рода, и неправильным склонением.
 

Agressor

Новичок
Здравствуйте. Никак не могу подключить библиотеку. Выдает
Catchable fatal error: Argument 1 passed to phpMorphy::phpMorphy() must implement interface phpMorphy_FilesBundle_Interface, string given, called in C:\...\index.php on line 21 and defined in C:\phpmorphy\src\common.php on line 101
В чем может быть дело?
 
Сверху