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

leptosomic

Новичок
скажите, существует ли возможность получить словоформы, образующиеся с помощью добавления приставок и окончаний? например, "бить-прибить-подбить-биться"?
 

Жигaн

Новичок
leptosomic
Я так пониманию, что нужно словообразование. Только непонятно что конкретно нужно.
 

leptosomic

Новичок
Жигaн
Вообще, хотел сделать поиск с учетом морфологии. Скажем, в запросе присутствует слово "матрос". Получаем все словоформы, и ищем их в тексте. И "матросика" не находим, хотя по идее должны. То же самое с "купить-прикупить". Думается примерно так: вводят слово "прикупить", определяем, что это слово "купить" с приставкой, потом по очереди прибавляем все возможные приставки к "купить", и все полученные слова ищем в тексте. Можно это сделать хотя бы теоретически на этом словаре?
 

Жигaн

Новичок
leptosomic
Скажем, в запросе присутствует слово "матрос". Получаем все словоформы, и ищем их в тексте. И "матросика" не находим, хотя по идее должны.
Вообще лучше так не делать. Смысл повышать полноту в ущерб релевантности?

Можно это сделать хотя бы теоретически на этом словаре?
Если только на самом простейшем уровне. Дело в том, что в словаре словоформы не разделяются на морфы, вместо этого используется упрощенная модель типа "префикс+основа+окончание". Причем основа выделяется как lcs для словоформ в парадигме.
 

akaplenko

Новичок
У меня не получается скачать ispell словарь. Говорит что архив битый. Не поможете?
 

Tihom

Новичок
написал пару дней назад топик на SF(http://sourceforge.net/apps/phpbb/phpmorphy/viewtopic.php?f=2&t=9&sid=bc096b051976afb14352449c397d1b8a), но там, видимо, автор появляется не часто...
решил попробовать продублировать тут
При работе со словарем ISPELL происходят непонятные вещи:
(http://phpmorphy.sourceforge.net/dokuwi ... ct_by_db=1)
- анализ слова "продажа" выдает:
Слово продажа найдено в словаре как:
1. Базовая форма ПРОДАЖА
Продажа - продажа, продажах, продажам, продажами, продаж, продаже, продажи, продажу
Считаю, что это в корне не правильно, т.к.
Им. п. (Кто? Что?)- продажа
Род.п. (Кого? Чего?)- продаж
Дат.п. (Кому? Чему?)- продаже
Вин.п. (Кого? Что?) - продажу
Твор.п. (Кем? Чем?) - продажей
Пред.п. (О ком? О чём?) - о продаже
т.е. в словаре, на который опирается анализ неправильно внесены значения для морфологических форм данного слова.
Я бы даже сказал, что большая часть из предложенных вариантов употреблена во множественном числе.
- анализ слова "продажей" вообще выдает не понятно что:
Слово продажей найдено в словаре как:
1. Базовая форма ПРОДАЖЕЙ
Продажей - продажей, продажею

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

Ожидаю Ваш ответ "используйте AOT", но AOT не подходит нам по ряду особенностей(
С ISPELL'ом все нормально работает, за исключением данной ситуации.

Заранее благодарен за ответ.
Андрей
 

Жигaн

Новичок
Tihom
написал пару дней назад топик на SF(http://sourceforge.net/apps/phpbb/p...352449c397d1b8a), но там, видимо, автор появляется не часто...
решил попробовать продублировать тут
Похоже что уведомления о новых сообщений мне не доходят. Лучше писать либо сюда, либо на [email protected] .

Это стандартная проблема для ispell словаря, когда парадигма расщепляется. В словаре присутствуют две записи для лексемы ПРОДАЖА
продажа/I
продажей/H
Тут имхо ничего сделать нельзя. Я в общем-то никак не обрабатываю испеловский словарь, просто преобразовываю в свой формат.
Правильное решение использовать словарь от aot :) т.к. он однозначно качественнее . Если Вы объясните чем он Вас не устраивает можно что-нибудь придумать. К примеру, размер аотовского словаря можно уменьшить если выкинуть из него грамматические описания (как в ispell).
 

Tihom

Новичок
Проблема в том, что АОТ словарь для многих слов возвращает множество базовых форм, причем даже при использовании частотных справочников главным выбирается не то, что действительно нужно.
ISPELL в этом смысле более радикален и в большинстве случаев однозначно возвращает базовую форму слова.
Кстати, если не затруднит, объясните пож-та, почему в словаре АОТ при анализе слова "ВАННА" выдается 2 базовых формы, причем первой (и как я понимаю, основной и чаще используемой) является прилагательное "ВАННАЯ" вместо существительного "ВАННА"? Может это я чего-то не понимаю...

Автор оригинала: Жигaн
К примеру, размер аотовского словаря можно уменьшить если выкинуть из него грамматические описания (как в ispell).
А вот это было бы здоров провернуть... откорректировать словарь под свои "корпоративные" правила...:rolleyes:
 

Жигaн

Новичок
Проблема в том, что АОТ словарь для многих слов возвращает множество базовых форм, причем даже при использовании частотных справочников главным выбирается не то, что действительно нужно.
Это нормально т.к. аотовский словарь более полный нежели словарь на основе ispell.

Кстати, если не затруднит, объясните пож-та, почему в словаре АОТ при анализе слова "ВАННА" выдается 2 базовых формы, причем первой (и как я понимаю, основной и чаще используемой) является прилагательное "ВАННАЯ" вместо существительного "ВАННА"? Может это я чего-то не понимаю...
Это ошибки в словаре, там большая часть прилагательных определена как качественные. С одной стороны их надо исправить, но в реальности такие формы могут присутствовать в тексте. Конкретно для _ВАННЫЙ_ ессно надо удалить краткую степень и сравнительные формы. Как сделаю поддержку пользовательских словарей, проведу чистку на основе чатотного словаря.

и как я понимаю, основной и чаще используемой
Нет порядок лемм никак не определен. Т.е. первая - не значит лучшая.

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

Tihom

Новичок
Как сделаю поддержку пользовательских словарей, проведу чистку на основе чатотного словаря.
К сожалению, частотный словарь не панацея :(

Но пока у меня нет времени заниматься этой проблемой.
Значит, как говорится, будем ждать обновлений :)
 

Tihom

Новичок
А это еще зачем?
ИМХО, у словаря синонимов несколько иное предназначение, нежели обработка морфологических форм русских слов.

Но если речь идет об аналогичном модуле по подбору синонимов, тогда да, полезный компонент получился бы. Только с исходным материалом проблемы могут возникнуть, ибо вряд ли есть словари синонимов хоть на сколько-нибудь полные и близкие к ISPELL или AOT
 

Ragazzo

TDD interested
Сюда нужен Кришна, он всех рассудит быстро...особенно как писать "тся" и "ться"
 

Dr.Hell

Новичок
Всем привет!
Столкнулся с проблемой, что в текстах встречается большое количество имен аниме персонажей. Например, женское имя Коната, которое морфи считает родственным слову "канат", а форму Конатой считает склонением прилагательного "конатая", в результате чего леммы получаются разные. Решил, что для известных слов буду индексировать леммы, а для неизвестных - псевдокорни. Попробовал словарь AOT - уж очень он умный... Для имени Судзумия придумывает огромное количество словоформ, среди которых встречается даже СУДЗУМЬЕ, в итоге для разных вариантов псевдокорень получается то СУДЗУМИ, то СУДЗУМ. Словарь ISPELL такими заумствами не страдает и в принципе меня всем устраивает, кроме одного: не обрабатывает словарное слово "окон". Кажется, уж настолько христоматийный пример, а он его не знает. Мне по большому счету это не так важно, но людям, которые занимаются "установкой окон", должно быть обидно. =) Можно ли это слово как-то внести в словарь?

Жду поддержку пользовательских словарей. Конечно, совсем круто было бы сделать интерфейс для обучения словаря новым словам, по принципу: склоняй "Коната" аналогично слову "Лопата", но это уже мечты. Все равно отличная штука этот ваш phpmorphy! Спасибо! =)
 

Tihom

Новичок
Всем привет!
Столкнулся с проблемой, что в текстах встречается большое количество имен аниме персонажей. Например, женское имя Коната, которое морфи считает родственным слову "канат", а форму Конатой считает склонением прилагательного "конатая", в результате чего леммы получаются разные. Решил, что для известных слов буду индексировать леммы, а для неизвестных - псевдокорни. Попробовал словарь AOT - уж очень он умный... Для имени Судзумия придумывает огромное количество словоформ, среди которых встречается даже СУДЗУМЬЕ, в итоге для разных вариантов псевдокорень получается то СУДЗУМИ, то СУДЗУМ. Словарь ISPELL такими заумствами не страдает и в принципе меня всем устраивает, кроме одного: не обрабатывает словарное слово "окон". Кажется, уж настолько христоматийный пример, а он его не знает. Мне по большому счету это не так важно, но людям, которые занимаются "установкой окон", должно быть обидно. =) Можно ли это слово как-то внести в словарь?
Жду поддержку пользовательских словарей. Конечно, совсем круто было бы сделать интерфейс для обучения словаря новым словам, по принципу: склоняй "Коната" аналогично слову "Лопата", но это уже мечты. Все равно отличная штука этот ваш phpmorphy! Спасибо! =)
Русский язык уж слишком сложен, чтобы придумать универсальные правила
Как говорится: "Русский язык - язык чувств и эмоций, а не строгие правила написания разных слов"
ИМХО, создать универсальное средство для лексического разбора русских текстов вряд ли представляется возможным... Всегда будет какая-то вероятность "вылета"
 

Dr.Hell

Новичок
Я имел ввиду, чтобы вручную его обучать. Ну, то есть, мне вот важно, чтобы он слово Коната правильно склонял, а кому-то что-то другое важно. Мне кажется, алгоритм не очень сложный, ведь все новые слова склоняются по аналогии с уже существующими в базе, просто программа не способна 100% верно выбрать вариант, а так можно ей немного подсказать. И человеку проще будет, чем все словоформы в словарь вбивать вручную.
 

Tihom

Новичок
Бесполезно, ибо слишком много слов, смысл которых зависит от контекста.. Вы что, собираетесь обучать словарь с учетом "соседних слов" для более адекватного склонения???
Например, "на пути роя пчел встретилось дерево" и "Иванов, роя траншею, не заметил пролегающего кабеля" )))))
Так же со словом "кабеля", и таких слов более, чем предостаточно)
 

Dr.Hell

Новичок
Tihom, с вашими примерами как раз никаких проблем нет. =) Словарь ISPELL выдает на слово "роя" целых 3 леммы: РОИТЬ, РЫТЬ, РОЙ и кучу словоформ для каждой из них... Мне кажется, что нет ничего страшного, если по запросу "рой" поиск выдаст все перечисленные варианты, человек ведь тоже без контекста не поймет, что от него хотят. Меня напрягает, что какие-то варианты могут пропасть и не показаться в результатах поиска. Вот я знаю, как склоняется имя Коната, человек, который будет эту Конату искать, тоже скорее всего знает, как она склоняется, а программа не знает, и я ее хочу научить. Мне же не нужно создавать заново словарь русского языка со всеми его сложностями и исключениями - его уже создали до меня лингвисты, и он хорошо работает. Мне нужна возможность без особых напрягов добавить в этот словарь несколько десятков важных для меня слов, заимствованных из других языков, чтобы они правильно выдавались в результатах поиска.
Кстати, спасибо! Вы меня натолкнули на мысль, что нужно индексировать не только лемму (или псевдокорень), но и слово целиком, тогда в результатах поиска по слову "красивая" сначала будут идти те записи, где это слово встречается именно в такой форме, а потом уже "красивый", "красивой", "красивые" и т.п.
 
Сверху