Морфология

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Морфология

Может кто знает, есть ли где-нибудь библиотека соответствий слов, типа:

копать: копал-копаю-зарыл?

Т.е. как получить нормализованную форму слова по его вариации?
 

Silent

Новичок
Есть несколько вариантов:

1) дешево и сердито - например алгоритм стемминга имени Портера.

2) дешево (возможно бесплатно) и не очень хорошо - на основе словарей от ispell.

3) достаточно дешево (но скорее всего не бесплатно) и относительно хорошо - честная морфология на основе словаря Зализняка. Требует некоторой доли ручного труда, поэтому бесплатно мало кто даст.

4) коммерческие библиотеки, которые годами чистились и пополнялись, стоить могут до нескольких тысяч долларов. Например морфологический анализатор Коваленко, используемый на Рамблере и Апорте, стоит 2000$.

5) Для некоторых целей может подойти вероятностная (бессловарная) морфология, которая строит несколько гипотез анализируя сочетание букв в конце слова. Тот же Коваленко дает исходники своей вероятностной морфологии (на Си, разумется).
 

NEK

Guest
Вот http://www.risearch.org/rus/rumor/index.html
Хлтя у меня валяется более ранняя версия и бесплатная :(((
 

clevel

Новичок
Silent
я ему словарь Зализняка дал... и правила формирования на основе аффиксов...
 

clevel

Новичок
у меня тут по ходу с поиском вопрос возник... в словаре хранятся слова с учетом регистра. Например, слова "Аллах" и "аллах" есть два разных слова. Первое - производное от слова "Алла", другое - первоформа слова "бог". Так вот, когда я вычленяю из текста слова и генерю индекс этого текста, встает вопрос - делать ли текст сначала полностью strlowcase или нет? Ведь для юзера в приведенном примере со словами будет разные результаты в индексе? Но при этом если в тексте встречаются названия городов, имена, фамилии, то они должны находится в любом случае. Как быть, если юзер ввел "Санкт-Петербург" или "санкт-петербург". В каком регистре лучше хранить и как поступать?
 

clevel

Новичок
NEK
твоя ссылка и есть работа Silent, так что мог бы до того, как постить посмотреть его данные
 

Silent

Новичок
NEK

Странно, насколько я помню, RuMor никогда бесплатным не был:)

clevel

Давайте не вводить народ в заблуждение. Правила преобразования в виде аффиксов есть у словаря Лебедева (который предназначен для ispell). На его основе тоже можно сделать морфологию, но будет она не слишком высокого качества.

Что касается регистра, то я бы наверное в любом случае все слова приводил бы к lowcase. Пользователь вполне может ввести "иванов", желая найти "Иванова". А если хочется предоставить ему возможность искать с учетом регистра, тогда либо помещать это слово в индекс дважды, либо в индексе иметь пометку о том, что это слово встречалось в тексте в разных регистрах и для каждого варианта иметь субиндекс. Может можно и проще поступить, никогда об этом не задумывался.
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Спасибо за информацию и скрипты (2 clevel)!
 

Falc

Новичок
Silent
Уменя есть морфологический поиск по словорю Лебедева(ispell), Насколько качественее будет морфология по словорю Зализняка, и можно ли использовать правила преобразования аффиксов из ispell, для словоря Зализняка ???

Зарание спасибо за ответ.
 

clevel

Новичок
Silent, присоединяюсь к Falc. Растолкуй, почему хорошо, или плохо.
 

Silent

Новичок
Не то чтобы морфология на основе словаря от ispell это очень плохо. Нет, нормальная альтернатива, причем бесплатная. Просто сам этот словарь предназначен для проверки орфографии и следовательно не гарантирует распознавания всех форм слова. Посмотрите на словарь, там встречаются словоформы без ключей. Просто автору словаря так было удобнее сделать, а поскольку на проверке орфографии это никак не сказывается, то таких слов там достаточно много.

Например:

Абрамович/K
Абрамовичем

то есть применив ключ "K" к слову "Абрамович", мы не получим форму "Абрамовичем". И так будет со всеми отчествами.

и в словаре много подобных мест

остроумец/O
остроумцев
остроумцем

осушается
осушаться/LP
осушаются

осыпать/LMPRV
осыпет
осыпят

сланец/O
сланцев
сланцем

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

Я осознал, что нужно искать другое решение, в тот момент, когда представил себе, что я буду делать, если захочется что-то дополнить или исправить в аффикс-файле:)


Falc

Нет, аффиксы использовать нельзя. Когда Зализняк составлял свой словарь, наверное еще и компьютеров не было. Поэтому нужно брать словарь в библиотеке (но есть и отсканированная версия) и потом переводить его таблицы склонений в компьютерную форму. Неприятный ручной труд, поэтому и делиться этим мало кто хочет.

P.S. Надо будет найти время и попробовать сделать вероятностную морфологию, как добавление к словарной, для тех слов, которых нет в словаре. Когда-то я уже пытался прикинуть алгоритм, а потом прочел, что и Сегалович и Коваленко использовали очень похожую идею, так что должно сработать.
 

corda

Новичок
Вопрос вдогонку:
Если кто-то пользовался, что лучше: glimpse или mnogosearch?
 

Falc

Новичок
Silent
>>Нет, аффиксы использовать нельзя. Когда Зализняк составлял свой словарь, наверное еще и компьютеров не было. Поэтому нужно брать словарь в библиотеке (но есть и отсканированная версия) и потом переводить его таблицы склонений в компьютерную форму. Неприятный ручной труд, поэтому и делиться этим мало кто хочет.


Я нашел словарь Зализняка, в эл. виде, его содержание примерно такое:
...
абитуриент 8 мо 1а
...

Как на основе этого можно сформировать правила составления словоформ?
 

Silent

Новичок
Это не весь словарь. Еще должны быть таблицы склонений/спряжений.
 

Falc

Новичок
Silent
>>Еще должны быть таблицы склонений/спряжений.
Как выглядят эти таблицы?
 

Falc

Новичок
clevel
я в яндексе нашел, на первой странице была ссылка на сайт с которого его можно было скачать :)
 

Falc

Новичок
Silent
И насколько реально написать алгоритм по этим таблицам?
Придется под каждую писать свой алгоритм или как-то можно будет их обобщить?
 
Сверху