На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Определение корня слова
    Всем привет. Народ, может кто знает алгоритм (или его реализация на C#) для определения корня слова?
    Например пользователь ввёл слова "быстрый" или "быстрее" или "быстро" , а алгоритм бы определил корень - быстр.

    Сколько гуглом не искал, так ничего толкового и не нашёл (((
      С пыха переведешь? :)
      http://www.cyberforum.ru/algorithms/thread55.html
        Думаю лучше всего будет завести базу из самых частых слов/корней.
        Подбирая из неё вы убьёте 90% слов.
        А на оставшихся 10% будете потихоньку, внимательно и аккуратно разбивать на типичные группы и особые. Типичные снова займут 9%, а оставшиеся будут сильной экзотикой. Но и с ней, если приспичит, вы таким же образом справитесь.
          Для начала (и, собственно, конца) надо заиметь математически строгое определение понятия корень
          Это к лингвистам-филологам, хай думают или представят нам нечто уже готовое
            Спасибо
              Цитата darcus @
              Для начала (и, собственно, конца) надо заиметь математически строгое определение понятия корень
              Что-то я сомневаюсь. Вы ж читали про 'китайскую комнату'? Поэтому хорошо бы заменить ваше 'надо' на 'было бы полезно'.
                Цитата Славян @
                Цитата darcus @
                Для начала (и, собственно, конца) надо заиметь математически строгое определение понятия корень
                Что-то я сомневаюсь. Вы ж читали про 'китайскую комнату'? Поэтому хорошо бы заменить ваше 'надо' на 'было бы полезно'.

                Не надо сомневаться, без точного однозначного определения, задача не решаема.
                  Цитата esperanto @
                  Не надо сомневаться, без точного однозначного определения, задача не решаема.
                  К счастью, вы ошибаетесь. Без точного определения целая куча задач 'решается'. Счастье же в том, что находится около-решение, но оно полностью удовлетворяет человека/людей. Так и следует поступать и в этом случае.
                    Математика и алгоритмы и наука не решает задачи, которые не имеют определения.

                    Увы. Поэтому с задачами без определений лучше идти во флейм.
                      esperanto
                      Цитата esperanto @
                      Не надо сомневаться, без точного однозначного определения, задача не решаема.

                      Она и с точным определением может не решаться.

                      Цитата esperanto @
                      Математика и алгоритмы и наука не решает задачи, которые не имеют определения.

                      Определения корня можно найти в любом толковом словаре. Вот только одного определения мало.
                      Да и в математике есть ряд спорных вопросов нерешаемых из-за того что определения не может быть чётко сформулировано. А также есть парадоксы которые даже с математической точки нерешаемые.

                      Цитата esperanto @
                      Увы. Поэтому с задачами без определений лучше идти во флейм.

                      Алгоритм это строгая последовательность действий. Поэтому согласен что данный вопрос не совсем к месту. Но есть куча научных методов. Начиная от метода научного тыка.
                      Проблема математике то, что она решает задачи только со строгими начальными условиями, когда как в науке этого обычно недостаёт.
                      И данный вопрос можно решать и обсуждать не точно, а приближённо.
                      Сообщение отредактировано: Pavia -
                        Цитата Pavia @
                        Начиная от метода научного тыка.
                        В зависимости от реализации часто бывает совершенно ненаучным.

                        Если задача нечётко сформулирована, то остаётся вероятность, что в ходе её решения будет найдено решение не совсем той задачи, которую нужно решить.
                          Совершенно строгое определение (в виде алгоритма):

                          1.
                          Составляем два списка префиксов и суффиксов.

                          2.
                          Берем слово и внаглую откусываем от него префикс и суффикс (если они есть в наших списках).

                          3.
                          То, что останется от нашего слова, назовем корнем этого слова.
                            П.С. снимем, товарищи, шляпы пред отчаянно сражавшимся, но павшим окончанием...

                            Добавлено
                            Впрочем, нет, - наденем! Раз речь про префикс, а не про приставку, видимо разговор идёт про англо-саксонские языки.

                            Добавлено
                            Если по существу, то у кучи слов будет дурацкий корень. Например у слова вокал, он будет пустой. Ибо 'в' (и 'во'!) - префикс, а 'ок' и 'ал' - типичные суффиксы. Последний неявный такой...
                              Скорее всего придётся хранить и перечень возможных корней
                                Может изначально задача была не для русского языка?
                                  Цитата esperanto @
                                  Математика и алгоритмы и наука не решает задачи, которые не имеют определения.

                                  Увы. Поэтому с задачами без определений лучше идти во флейм.

                                  У Вас очень убогое представление о математике.
                                  Математик-теоретик решает то, что можно, так, как нужно. А математик-прикладник - то, что нужно, так, как можно.
                                  По-вашему же выходит, что прикладников в природе не существует.
                                  Но эта точка зрения опровергается посредством наблюдений.
                                    Да нет, представление о математике у него очень даже в порядке. Ты сосредоточился на можно/нужно, он же говорит об определении задачи.
                                    В любом случае перед тем как решать задачу, необходимо определить, в чём же собственно она состоит. А дальше те задачи, которые можно решить точными методами решаются точно, а те, которые так не решаются - приближёнными.
                                    В данном случае задача недостаточно определена. И в такой постановке (без указания дополнительных условий) может оказаться практически нерешаемой.
                                      Цитата amk @
                                      В данном случае задача недостаточно определена. И в такой постановке (без указания дополнительных условий) может оказаться практически нерешаемой.

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

                                        Собственно, я вижу только одно практическое решение этой задачи - использование справочника, в котором перечислены все возможные приставки, суффиксы и окончания, и словаря корней, в котором может быть придётся описать возможные варианты словообразования (есть слова не подчиняющиеся общим правилам - замок-замочек, вжигать-вожжённый; есть слова, в которых от исходного корня вообще ничего не остаётся).
                                          Язык - русский. Всё равно всем спасибо, нашёл Стемминг Портера, буду пробовать его.
                                            Цитата amk @
                                            Собственно, я вижу только одно практическое решение этой задачи...

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


                                            Рейтинг@Mail.ru
                                            [ Script execution time: 0,0830 ]   [ 14 queries used ]   [ Generated: 19.07.25, 07:07 GMT ]