Морфологический анализатор для PHP-скриптов

13 Мар 2008

Морфологический анализатор для PHP-скриптовДолго мы ломали над этим голову… Морфология русского языка весьма сложная штука в плане алгоритмизации. Но использование в практически любом проекте морфологизатора, например, для поиска или подбора — даёт проекту неплохой бонус в удобстве использования.

Самый удачный, быстрый и простой в использовании морфологизатор я нашёл совсем недавно. Это phpMorphy. и он умеет следующее:

  1. Определение словоформ слова;
  2. Определение корня слова;
  3. Определение начальной формы слова.

Если нужно реализовать поиск с учётом словоформ, то это совсем просто — нужно просто получить корень слова с помощью phpMorphy ( $root = $morphy->getPseudoRoot($words); ) и провести поиск по базе данных SQL-оператором LIKE.

Сам скрипт занимает не больше 30 Kb, а русский словарь для него - 2.5 Mb.

Справедливости ради отмечу, что рассматривались и другие морфологические скрипты.

Жилинский Владимир.






 

miller     .

Написано 13 марта 2008 года в 19:37


и где ты такие интересные штучки все время находишь? :)
не первый раз уже радуешь

 

Евгений Голубев     .

Написано 13 марта 2008 года в 19:52


Спасибо )
Вовремя.
Помог избежать мне такого исследования.

 

Жилинcкий Владимир     .

Написано 13 марта 2008 года в 20:05


В интернете ;-)
Стараюсь :-)

 

Жилинcкий Владимир     .

Написано 13 марта 2008 года в 20:05


Та незачто :-)

 

Sam     .

Написано 13 марта 2008 года в 20:32


Вот за это огромное спасибо!

 

pilot34     .

Написано 13 марта 2008 года в 21:20


Супер! Огромное спасибо!!!! Как раз курсовая застопорилась на поиске начальных форм

 

Vitalij Obishchenko     .

Написано 13 марта 2008 года в 22:00


Супер, спасибо огромное!!!

 

Sukebe     .

Написано 13 марта 2008 года в 22:21


Да, phpMorphy — хорошая штука.

А вот поиск я делал немного сложнее, чем просто по корню. Скрипт-индексатор, запускаясь по кронтабу или команде из CMS, заносил в индекс базовые формы всех слов (кроме предлогов, союзов и т.п.) с указанием веса, зависящего от частоты и окружающих тэгов, и ссылки на документ.
Скрипт-поисковик в свою очередь разбивал фразу на слова, опять же приводил из к базовой форме и искал по индексу наиболее релевантные документы.

 

Жилинcкий Владимир     .

Написано 13 марта 2008 года в 22:26


Ну это уже совсем серьёзно — обратный индекс, вес слов, так и до анкор-файлов дойти можно — получится Wikia Search :-D

[offtopic]: Коллега, под Drupal не приходилось девелоперить ?

 

Жилинcкий Владимир     .

Написано 13 марта 2008 года в 22:28


Пожалуйста, приходите ещё :-D

 

Жилинcкий Владимир     .

Написано 13 марта 2008 года в 22:29


Надеюсь, поможет ;-)

 

Poi$0n     .

Написано 13 марта 2008 года в 22:30


RuMor хороший скрипт. Мы когда-то для собственных нужд РНР версию покупали. Шустренько работает и словарь хороший. Только памяти жрет много. Словарь 12 метров вроде. Умеет определять нормальную форму и словоформы.

MyStem — еще прикольней. По сути это простой стеммер. Он может только нормальную форму получить и вывести морфологическую информацию по слову. Работает очень шустро. Но работает на уровне операционной системы, так что на хостинге не прокатит. Работает без словаря эвристическим способом. Это и плюс и минус. Плюс в том, что даст нормальную форму даже для несловарного слова. Минус в том, что иногда ошибается и выдает мягко говоря бред.

 

Жилинcкий Владимир     .

Написано 13 марта 2008 года в 22:31


И тебе спасибо за ссылку и траффик ;-)

 

Жилинcкий Владимир     .

Написано 13 марта 2008 года в 22:35


На Majordomo за 50 рублей обещают запустить один демон, так что может мистем и прокатит на вирт-хостинге. То что без словаря — это да, здорово. Даже со сморкмухами, мовами и прочим должен справиться…
А больше аналогов не знаете ?

 

Сергей Тарасенко     .

Написано 13 марта 2008 года в 22:57


По теме.
Было бы очень интересно почитать по организацию хранения индекса в mysql и методике его использования. Подозреваю, что для грамотной работы полнотекстовой поиск не используется. Однако, пока еще руки не дошли для глубокого забура в эту тему.

 

Poi$0n     .

Написано 13 марта 2008 года в 23:23


Тут еще есть стеммер. Открыт и доступен в исходниках, но прекомпиленной версии нет. Хвалили, но сам не пробовал, поручитья не могу. Тоже эвристическим путем работает без словаря.

Ну про стеммер Портера и писать не буду, ибо это врятли заслуживает внимания. Он просто тупо окончание удаляет и все.

Стеммеры хороши в комплекте со словарями. Тогда оптимальное решение получается, ибо они не решают проблему разных корней типа «шли — шел» и т.д.

 

Sukebe     .

Написано 14 марта 2008 года в 00:49


Wikia Search — это интересно, спасибо за ссылку и статью (там, кстати, ссылки на Grub и Nutch с ошибками) :)

С Друпалом работать не приходилось, а там есть интересные фишки? :)

 

jeka911     .

Написано 14 марта 2008 года в 03:15


Благодарствую, полезно.

>>>Поле «сайт» — для адреса вашего блога, контакта или страницы. Ссылки на сателлиты, интернет-магазины и прочее удаляются всегда.

Давно че-то не заходил к тебе комментировать. Офигенное решение, наверное возьму себе. А то достали туроператоры.

 

Жилинcкий Владимир     .

Написано 14 марта 2008 года в 07:49


Ммм, спасибо, поправил.
В Друпале… Черт его знает… Говорят крутая штука =)

 

Жилинcкий Владимир     .

Написано 14 марта 2008 года в 07:52


Да все равно не помогает… Имя и ссылка комментатора на страницах давно в noindex и nofollow, а они всё равно не унимаются…

 

Дима Спадов     .

Написано 16 марта 2008 года в 10:25


Спасибо за phpMorphy, сегодня будем смотреть его.
Я покупал RuMor, скрипт хороший, прост в использовании, но проблема в том, что иногда он сильно врет с частями речи, например, слово «домой» он определяет как существительное. И такие косяки иногда всплывают. Но в целом, я доволен тем, что получил за $50.

 

Жилинcкий Владимир     .

Написано 16 марта 2008 года в 10:56


Он, кстати, только в верхнем регистре работает =)
И файлы словарей зашифрованы чем-то…

 

Сергей Гладилин     .

Написано 17 марта 2008 года в 09:00


О, спасибо, посмотрю, может у нас внедрим ;-) Я, честно говоря, даже не искал ничего подобного, т.к. почему-то априори считал, что нет такого в OpenSource — и все…

 

Андрей     .

Написано 19 февраля 2011 года в 19:01


Отличный скрипт пошел прикручивать )

Оставить комментарий:

You must be logged in to post a comment.

© 2007-2010 Блог интернет-разработчика, автор — Zhilinsky.ru.
При использовании информации ссылка на источник обязательна.