Морфологический анализатор для PHP-скриптов
13 Мар 2008Долго мы ломали над этим голову… Морфология русского языка весьма сложная штука в плане алгоритмизации. Но использование в практически любом проекте морфологизатора, например, для поиска или подбора — даёт проекту неплохой бонус в удобстве использования.
Самый удачный, быстрый и простой в использовании морфологизатор я нашёл совсем недавно. Это phpMorphy. и он умеет следующее:
- Определение словоформ слова;
- Определение корня слова;
- Определение начальной формы слова.
Если нужно реализовать поиск с учётом словоформ, то это совсем просто — нужно просто получить корень слова с помощью phpMorphy ( $root = $morphy->getPseudoRoot($words); ) и провести поиск по базе данных SQL-оператором LIKE.
Сам скрипт занимает не больше 30 Kb, а русский словарь для него - 2.5 Mb.
Справедливости ради отмечу, что рассматривались и другие морфологические скрипты.
- Скрипт проекта «Вавилонская башня». Кажется, бесплатен.
- Скрипт Rumor за 50$, на PERL, сайт у них старый совсем, местами не работает, доверия не вызывает.
- Скрипт-парсер Mystem от самого Яндекса. Бесплатен для некоммерческого использования, но требует запуск демона на сервере.
и где ты такие интересные штучки все время находишь? :)
не первый раз уже радуешь
Спасибо )
Вовремя.
Помог избежать мне такого исследования.
В интернете ;-)
Стараюсь :-)
Та незачто :-)
Вот за это огромное спасибо!
Супер! Огромное спасибо!!!! Как раз курсовая застопорилась на поиске начальных форм
Супер, спасибо огромное!!!
Да, phpMorphy — хорошая штука.
А вот поиск я делал немного сложнее, чем просто по корню. Скрипт-индексатор, запускаясь по кронтабу или команде из CMS, заносил в индекс базовые формы всех слов (кроме предлогов, союзов и т.п.) с указанием веса, зависящего от частоты и окружающих тэгов, и ссылки на документ.
Скрипт-поисковик в свою очередь разбивал фразу на слова, опять же приводил из к базовой форме и искал по индексу наиболее релевантные документы.
Ну это уже совсем серьёзно — обратный индекс, вес слов, так и до анкор-файлов дойти можно — получится Wikia Search :-D
[offtopic]: Коллега, под Drupal не приходилось девелоперить ?
Пожалуйста, приходите ещё :-D
Надеюсь, поможет ;-)
RuMor хороший скрипт. Мы когда-то для собственных нужд РНР версию покупали. Шустренько работает и словарь хороший. Только памяти жрет много. Словарь 12 метров вроде. Умеет определять нормальную форму и словоформы.
MyStem — еще прикольней. По сути это простой стеммер. Он может только нормальную форму получить и вывести морфологическую информацию по слову. Работает очень шустро. Но работает на уровне операционной системы, так что на хостинге не прокатит. Работает без словаря эвристическим способом. Это и плюс и минус. Плюс в том, что даст нормальную форму даже для несловарного слова. Минус в том, что иногда ошибается и выдает мягко говоря бред.
И тебе спасибо за ссылку и траффик ;-)
На Majordomo за 50 рублей обещают запустить один демон, так что может мистем и прокатит на вирт-хостинге. То что без словаря — это да, здорово. Даже со сморкмухами, мовами и прочим должен справиться…
А больше аналогов не знаете ?
Было бы очень интересно почитать по организацию хранения индекса в mysql и методике его использования. Подозреваю, что для грамотной работы полнотекстовой поиск не используется. Однако, пока еще руки не дошли для глубокого забура в эту тему.
Ну про стеммер Портера и писать не буду, ибо это врятли заслуживает внимания. Он просто тупо окончание удаляет и все.
Стеммеры хороши в комплекте со словарями. Тогда оптимальное решение получается, ибо они не решают проблему разных корней типа «шли — шел» и т.д.
Wikia Search — это интересно, спасибо за ссылку и статью (там, кстати, ссылки на Grub и Nutch с ошибками) :)
С Друпалом работать не приходилось, а там есть интересные фишки? :)
Благодарствую, полезно.
>>>Поле «сайт» — для адреса вашего блога, контакта или страницы. Ссылки на сателлиты, интернет-магазины и прочее удаляются всегда.
Давно че-то не заходил к тебе комментировать. Офигенное решение, наверное возьму себе. А то достали туроператоры.
Ммм, спасибо, поправил.
В Друпале… Черт его знает… Говорят крутая штука =)
Да все равно не помогает… Имя и ссылка комментатора на страницах давно в noindex и nofollow, а они всё равно не унимаются…
Спасибо за phpMorphy, сегодня будем смотреть его.
Я покупал RuMor, скрипт хороший, прост в использовании, но проблема в том, что иногда он сильно врет с частями речи, например, слово «домой» он определяет как существительное. И такие косяки иногда всплывают. Но в целом, я доволен тем, что получил за $50.
Он, кстати, только в верхнем регистре работает =)
И файлы словарей зашифрованы чем-то…
О, спасибо, посмотрю, может у нас внедрим ;-) Я, честно говоря, даже не искал ничего подобного, т.к. почему-то априори считал, что нет такого в OpenSource — и все…
Отличный скрипт пошел прикручивать )