За последние 24 часа нас посетили 22706 программистов и 1256 роботов. Сейчас ищут 764 программиста ...

Как просклонять случайное слово?

Тема в разделе "Прочие вопросы по PHP", создана пользователем `p r o x y, 4 окт 2010.

  1. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    Время доброго.
    Просветите, пожалуйста.

    Задача
    В статьях сайта происходит поиск слов из базы. Найденным словам назначаются всплывающие подсказки.

    Вопрос
    Как просклонять искомое слово по: всем падежам, склонениям, численности (единственное или множественное число).

    Какие-нить есть технологии?
     
  2. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Может капнуть в сторону полнотекстового поиска. Если я правильно понял задание
     
  3. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    `p r o x y
    БД какая?
    Если Postgre, то там есть замечательные встроенные технологии поиска.
    Информации в гугле море.
     
  4. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    БД MySQL

    Полнотекстный поиск...хм..

    Поиск в статье слова уже организован и работает. Теперь задача искомое слово просклонять и искать все врианты склонения.

    Например взять слово: стол. Его необходимо просклонять: стол, стола, столу, стол, столом, столе, столы, столам, столах...
     
  5. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    С MySQL я не знаю.
    На постгре реализовывал полнотекстовый поиск по лексемам. У него, видите ли есть огромное количество своих словарей и методов для реализации fulltext search)
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    А как он реализован? Если через LIKE %стол% то должно все однокоренные слова искать
     
  7. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    > однокоренные слова
    А вот об этом я не подумал. А ведьверно.
    Реализовано разбором всего текста, так солва выделяются в span.
    Благодарю за идею, поиск слова в составе другого - это уже часть решения.

    И все же, вопрос про склонение слов открыт.
     
  8. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    У меня в проекте одном mysqlный полнотекстовый поиск. Проблем никаких. Может конечно не так идеально как если бы сам искал, но так он еще и по релевантности выдает
    Если объемы сравнительно небольшие - не стоит париться, имхо
    Гуглом все пользовались, думаю http://www.mysql.ru/docs/man/Fulltext_Search.html
     
  9. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    `p r o x y
    Это сложная задача, я с ней столкнулся в своей Инфосфере... долгая история.
    По идее, надо
    1) отрезать по правилам русского языка от слова все приставки, окончания и суффиксы (в таком порядке)
    2) получаем корень слова
    3) смотрим в аафигенный словарь (есть такие), которые по корню слова дают ID правила морфирования (этих правил в русском всего штук 100)
    4) смотрим по этому ID в другой словарь, получаем набор допустимых окончаний для этого корня
    5) перебираем все окончания, по очереди присоединяем каждое к исходному слову (но без первоначального окончания) и получаем набор словоформ.

    Естессно, я у себя сделал не по феншую, но зато гораздо проще :)
     
  10. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    если брать за основу готовые полнотекстовые поисковые движки (наподобие Solr), то там ясно сказано, что любой текст должен обрабатываться по некоторым правилам, разным для разных языков, и индексироваться в особом внутреннем представлении.
    Точно таким же образом обрабатывается запрос пользователя и осуществляется поиск по индексам.

    Т.е. готового решения как такового нет - нужно составлять правила склонения, выделения корня, приставки, окончания, рода, падежных окончаний, не забывать про изменяющиеся корни (когда буквы в корне меняются).
    Ах, да, ещё не забывать про тонну слов-исключений.
     
  11. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    ShamahN
    В тако случае будет найдено слово и "стол" и "столещница".
    С поиском слова НЕТ проблем. Вопрос в другом - пользователськие слова необходимо просклонять. Что бы потом уже искать.

    Dagdamor
    Где бы список глянуть всех приставок, окнчаний, суфиксов....
     
  12. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    `p r o x y
    Это хороший вопрос, ибо я этой байдой не занимался с универа.
    Если найду ссылки - кину. Еще у меня на харде где-то лежали эти справочники, найти бы...

    Это не так смешно, как "употр****ть" на некоторых форумах :D
     
  13. freeneutron

    freeneutron Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    226
    Симпатии:
    3
    Все проекты по систематизации Русского языка рано или поздно разбиваются о его великость и могучесть
     
  14. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    Даа, я уже думаю проще. Когда пользователь будет создовать эти самые искомые слова, выводить форму с вариантами склонения, и пусть пользователь сам подправить как верно. А то на автаматически верное скланение больше трудо-затрат уйдет, чем я выгоды получу.