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

Tamper

Новичок
во втором варианте скрипт выдал - int(0) int(127) (magic qoutes runtime = 0),

Первый вариант проверю, как поставим shmop

в третьем - Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /путь/phpmorphy/src/fsa/access/fsa_tree_mem.php on line 42

Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /путь/phpmorphy/src/fsa/access/fsa_tree_mem.php on line 88

Еще множество таких же ворнингов на 88 строке.
И соответственно в конце - Can`t find or predict ПРОВЕРКА word

-~{}~ 12.10.09 11:38:

словарь скачал и распаковал оттуда же, откуда и вы, такой же.

PHPMORPHY_STORAGE_FILE - этот тип хранилища использовался.
 

Tamper

Новичок
к сожалению нет) около 2-х метров

-~{}~ 12.10.09 23:42:

то есть стоп, он читает нормально, если я в fread пропишу 150 вместо 128, то в вар дампе будет int(0) int(149)
 

Жигaн

Новичок
класс. а почему читается на байт меньше? А если так попробовать
PHP:
<?php
$self = file_get_contents(__FILE__);
echo 'file_get_contents size = ', strlen($self), PHP_EOL;

echo 'filesize = ', filesize(__FILE__), PHP_EOL;

$fh = fopen(__FILE__, 'rb');
$text = fread($fh, 10);
fclose($fh);

echo 'fread size = ', strlen($text), PHP_EOL;
если возможно вышлите мне архив php, может там что-то волшебное :)
 

Tamper

Новичок
file_get_contents size = 268 filesize = 268 fread size = 10 - тут вроде все хорошо)

Кстати , если в предыдущем примере заменить одну строчку -

<?php
// относительно директории examples
$file = dirname(__FILE__) . '/../dicts/predict_aut.ru_ru.bin';
$fh = fopen($file, 'rb');
$seek_result = fseek($fh, 0);
//var_dump($seek_result, strlen(fread($fh, 150)));
var_dump($seek_result, fread($fh, 150));
?>

, то вар дамп даст int(0) string(150) и дальше знаки вопроса (сами прочитанные символы), то есть вроде все положенное прочел))
 

Жигaн

Новичок
А значение var_dump(ini_get('mbstring.func_overload') & 2) какое, не 2 случайно?

-~{}~ 13.10.09 21:04:

Да, похоже так и есть. Подумаю как можно прикрутить mb_orig_strlen

-~{}~ 15.10.09 01:06:

Сделал совместимость с mbstring.func_overload. Качать тут https://sourceforge.net/projects/phpmorphy/files/phpmorphy/0.3.7/phpmorphy-0.3.7.zip/download
 

Tamper

Новичок
Спасибо Вам огромное, теперь заработало.

mbstring.func_overload у нас равно 2 .

У Вас по сути получилось добавить еще универсальности в Ваш проект, спасибо.
 

AlexLin

Новичок
Просто потрясная вещь! Поклон и респект автору.
Есть одна просьба. Хоть это и кажется диким, но у меня нет Винды. В смысле она есть, но для разной мелочевки. Вся работа под Линуксом и мне позарез нужен английский словарь в UTF8. Но для компиляции, я так понял, на винде надо и ПХП еще разворачивать, чего не хотелось бы. По описанию сама компиляция дело плевое. Если у кого настроенная система, выложьте, плиз, бинарники английского в UTF8 под 3 ю версию.

-~{}~ 16.10.09 13:59:

Использую сие творение для выборки по анонсам книг. При индексации встретилось слово "болезней" (в смысле лечение "болезней"). Поскольку скорость очень важна, я не провожу анализ грамматических форм и выбираю первый из вариантов. Им оказывается "болезный". Выходит, что превосходная степень прилагательного стоит выше по частотности или значению, чем родительный падеж мн числа существительного. Интересно, учитывается где-то приоритет базовых словоформ?
 

Жигaн

Новичок
Хоть это и кажется диким, но у меня нет Винды
В принципе все нормально компилится g++, но я предполагаю выложить исходники немного позже, когда сделаю расширение к пхп.

Вся работа под Линуксом и мне позарез нужен английский словарь в UTF8
Английский словарь в ASCII по идее (в нём есть несклоько слов содержащих символы >127, но это ошибки которые мешать не будут). Т.е. он совместим с utf-8.

Использую сие творение для выборки по анонсам книг. При индексации встретилось слово "болезней" (в смысле лечение "болезней"). Поскольку скорость очень важна, я не провожу анализ грамматических форм и выбираю первый из вариантов. Им оказывается "болезный". Выходит, что превосходная степень прилагательного стоит выше по частотности или значению, чем родительный падеж мн числа существительного. Интересно, учитывается где-то приоритет базовых словоформ?
Приоритет никак не учитывается в силу того, что getBaseForm не получает информации о грамматических формах. Как костыль можно ранжировать по номеру формы в парадигме, в данном случае это поможет. Лучше использовать getPartOfSpeech() + getBaseForm(). Должно быть достаточно быстро + можно кэшировать результат куда-нибудь.
 

AlexLin

Новичок
Про UTF8 маленько ступил. Windows-1250 бросилось в глаза. Вот что значит дурные привычки.
Спасибо, отправляюсь читать маны.
 

irina-andreeva

Новичок
Я обычно использую getAllFormsWithGramInfo, но этот метод возвращает в ответ список состоящий из тех же частей речи, что и были поданы на вход. Например, если передать глагол, то и вернётся список глаголов во всевозможных формах. А может ли Morphy с учётом всех своих знаний трансформировать одну часть речи в другую? Например: летит -> полёт.
Бить -> бьющий. Сон -> спать.

Кстати, что такое анкод?
 

Жигaн

Новичок
Такой возможности нет (кроме бить - бьющий). Возможно Вам подойдёт какой-нибудь тезаурус (к примеру словарь синонимов).
Анкод - аношкинский код

Аношкинским кодом называется уникальный двухбуквенный
идентификатор, который соответствует некоторой комбинации значений селективных
признаков и граммем. Конечное множество аношкинских кодов исчисляет все
встречающиеся в данном языке комбинации морфологических характеристик. Всего в
морфологическом анализаторе русского языка системы Диалинг насчитывается 870 таких
кодов
В phpMorphy в настоящий момент используются числовые идентификаторы, а не двухбуквенные. В остальном, все аналогично.
 

Жигaн

Новичок
Нет, не умеет. Это достаточно просто реализовать самостоятельно.
 

Apollon

Новичок
Жигaн
Можешь намекнуть как это примерно сделать? :) Очень надо! :)
 

Жигaн

Новичок
Apollon
Посмотри описание ф-ции findWord() http://phpmorphy.sourceforge.net/dokuwiki/manual#основные . С её помощью можно получить все формы слова + грам. инфу. Потом выбираем нужные формы для всех падежей.
 

Apollon

Новичок
Жигaн
а на автомате это можно как-то реализовать, без ручной обработки? Просто нужно просклонять большой массив словосочетаний...
 

Жигaн

Новичок
Так я и говорю про автоматическую обработку. Для каждого слова получаем его парадигму(совокупность всех форм) с помощью $morphy->findWord(). Выбираем форму слова в нужном падеже с помощью getWordFormsByGrammems(array()). И так для каждого слова в словосочетании. Посмотрите парадигму слова МАМА http://phpmorphy.sourceforge.net/dokuwiki/demo?word=мама и пример использование findWord() http://phpmorphy.sourceforge.net/dokuwiki/manual
 

Apollon

Новичок
Жигaн
кстати, как вы можете оценить качество программ phpmorphy и яндексовский mysteam? Какая лучше на ваш взгляд? Особенно интересуют показатели скорости работы и точности...
 
Сверху