Морфологизаторы — скрипты морфологического анализа

1179395330_morrrМорфологические анализаторы (морфологизаторы) на php и других языках существуют уже достаточно давно и в большом количестве, позволяя реализовать поиск с учетом словоформ. Неотвратимый изъян анализатора — привязка к словарю, но некоторые более продвинутые скрипты могут работать и без словаря эвристическим способом, основываясь на вероятностных методах. Анализаторы сделаны как парсеры и стеммеры.

Парсер (parser) — грамматический анализатор в составе синтаксического анализатора. Скрипт, обеспечивающий автоматическую обработку (разборку) страниц сайтов с целью получения нужных данных. Так, парсят серп (поисковую выдачу) Яндекса и Гугл, например, чтобы определить показатели качества сайта — ТИЦ и ПР, а также позиции сайта, парсят страницы на предмет нахождения там нужной ссылки (открыта/закрыта), текста и т.п.

Стеммер (stemmer) - процесс нахождения основы слова для заданного исходного слова. Основа слова необязательно совпадает с морфологическим корнем слова. Алгоритм стемминга представляет собой давнюю проблему в области компьютерных наук и применяется в поиcковых системах для обобщения поискового запроса пользователя. Стеммер, в отличие от «аналитических», т.е. от списков окончаний, более «умный», может иметь свой словарь для выделения формальной основы. Программа определения основы заданного исходного слова:

  • кружка: кружка (сущ., ж.), кружок (сущ., м.).
  • моя: мыть (гл.), мой (мест.).

Пример:

  • Буря мглою небо кроет,
  • Вихри снежные крутя;
  • То, как зверь, она завоет,
  • То заплачет, как дитя...

Получим:

  • [Буря: буря, бурить, :1] [мглою: мгла, :1] [небо: небо, :1] [кроет: крыть, :1],
  • [Вихри: вихрь, :1] [снежные: снежный, :1] [крутя: крутить, :1];
  • [То: то, :1], [как: как, :1] [зверь: зверь, :1], [она: она, :1] [завоет: завыть, :1],
  • [То: то, :1] [заплачет: заплакать, :1], [как: как, :1] [дитя: дитя, :1]...

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

Вот некоторые морфологические скрипты:

Проект «Вавилонская башня» - бесплатный скрипт.

RuMor - морфологический модуль на языках Перл и php для русского языка, включающий в себя две основные функции: нахождение базовой формы слова или всех его словоформ. Данный модуль может использоваться в поисковых системах для улучшения поиска по документам с русским текстом. В качестве исходных данных для генерации словоформ используется словарь Зализняка, дополненный 30 тысячами основ. Всего в словаре содержится около 125 тысяч основ, что позволяет генерировать более 3500000 словоформ.

MyStem - стеммер от Яндекса, производит морфологический анализ текста на русском языке; по сути простой стеммер, может только нормальную форму получить и вывести морфологическую информацию по слову. Работает очень шустро, но на уровне ОС (операционной системы), на сервере требует запуск «демона» (daemon). Для слов, отсутствующих в словаре, порождаются гипотезы, может работать и без словаря эвристическим способом. Это и плюс и минус: плюс — даст нормальную форму даже для несловарного слова; минус — иногда ошибается и выдает бред. Бесплатен для некоммерческого использования.

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

Ispell - одна из наиболее популярных бесплатных программ проверки орфографии на Unix-системах. В рамках проекта ispell создано множество словарей для разных языков, распространяемых под лицензией GPL, которые в определенных пределах можно использовать и для задачи морфоанализа. Эти словари изначально создавались для проверки орфографии, поэтому качество морфоанализатора основанного на этих словарях заметно ниже словарей специализированных. Словари ispell обычно состоят из двух файлов: файл с правилами генерации словоформ (так называемый affix-файл) и собственно словарь, где для каждого слова указаны номера правил, которые нужно применить к этому слову. Скрипт поддерживает preffix правила (правила приставок), но для каждой возможной приставки в словарь будет добавлено отдельное слово, потому что, как правило, приставки изменяют смысл слова и логично считать это слово отдельным. Например: подъезд №1 дома №2; объезд болота с левой стороны; заезд в гараж дальше.

Для справки: аффикс - морфема, которая присоединяется к корню и служит для образования слов. Все категории аффиксов на Вики.

  • semchyk

    полезно почитать спасибо.

  • kolia

    полезная статья

  • Спасибо, очень помогла статья!

Запись навигация

Top