Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/65: Рейтинг темы: голосов - 65, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 16.07.2006
Сообщений: 7

Алгоритм нахождения корня слова...

16.07.2006, 18:07. Показов 13135. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите с алгоритмомо выделения корня в слове...отделение корня от других частей слова....
спасаибо...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2006, 18:07
Ответы с готовыми решениями:

Определение корня слова
Всем привет. Народ, может кто знает алгоритм для определения корня слова. Например пользователь ввёл слова "быстрый" или...

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

Алгоритм нахождения квадратного корня
Алгоритм нахождения квадратного корня из положительного числа x можно представить следующей рекуррентной последовательностью: ...

6
Администратор
 Аватар для mik-a-el
87804 / 53125 / 249
Регистрация: 10.04.2006
Сообщений: 13,760
16.07.2006, 19:10
Думаю, что такую программу вряд ли возможно написать - откройте словарь по разбору слова (есть такие - в школе пользовался), там куча слов, на которые нет однозначных разборов.

Самый верный вариант: взять словарь Ожигова или Даля и все слова (или самые употребимые) и разобрать самостоятельно (ну или воспользоваться школьным словарем структуры слова) - ну и вогнать их в БД.

В принципе, программу на 50% слов написать можно, но не более того.

Не забудьте, что при написании программы про многокорневые слова. Это которые являются наследниками двух или более классов. Например, пиропатрон имеет два корня, оба, правда, иностранного происхождения. А пирожок — только один. А ещё встречаются слова, в которых корня вовсе нет, например, вынуть.

И, наконец, главное: карась — это существительное, а не глагол в повелительном наклонении.

Проги, реализующие нечто подобное есть, но они обычно на ПРОЛОГе или РЕФАЛе.

Хотя вот, на PHP - Эвристическое (без словаря) извлечение корня из русского слова (Стеммер Портера).
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
class Lingua_Stem_Ru 
{
    var $VERSION = "0.02";
    var $Stem_Caching = 0;
    var $Stem_Cache = [URL="http://www.php.net/array"]array[/URL]();
    var $VOWEL = '/аеиоуыэюя/';
    var $PERFECTIVEGROUND = '/((ив|ивши|ившись|ыв|ывши|ывшись)|((?<=[ая])(в|вши|вшись)))$/';
    var $REFLEXIVE = '/(с[яь])$/';
    var $ADJECTIVE = '/(ее|ие|ые|ое|ими|ыми|ей|ий|ый|ой|ем|им|ым|ом|его|ого|ему|ому|их|ых|ую|юю|ая|яя|ою|ею)$/';
    var $PARTICIPLE = '/((ивш|ывш|ующ)|((?<=[ая])(ем|нн|вш|ющ|щ)))$/';
    var $VERB = '/((ила|ыла|ена|ейте|уйте|ите|или|ыли|ей|уй|ил|ыл|им|ым|ен|ило|ыло|ено|ят|ует|уют|ит|ыт|ены|ить|ыть|ишь|ую|ю)|((?<=[ая])(ла|на|ете|йте|ли|й|л|ем|н|ло|но|ет|ют|ны|ть|ешь|нно)))$/';
    var $NOUN = '/(а|ев|ов|ие|ье|е|иями|ями|ами|еи|ии|и|ией|ей|ой|ий|й|иям|ям|ием|ем|ам|ом|о|у|ах|иях|ях|ы|ь|ию|ью|ю|ия|ья|я)$/';
    var $RVRE = '/^(.*?[аеиоуыэюя])(.*)$/';
    var $DERIVATIONAL = '/[^аеиоуыэюя][аеиоуыэюя]+[^аеиоуыэюя]+[аеиоуыэюя].*(?<=о)сть?$/';
 
    function s(&$s, $re, $to)
    {
        $orig = $s;
        $s = [URL="http://www.php.net/preg_replace"]preg_replace[/URL]($re, $to, $s);
        return $orig !== $s;
    }
 
    function m($s, $re)
    {
        return [URL="http://www.php.net/preg_match"]preg_match[/URL]($re, $s);
    }
 
    function stem_word($word) 
    {
        $word = [URL="http://www.php.net/strtolower"]strtolower[/URL]($word);
        $word = [URL="http://www.php.net/strtr"]strtr[/URL]($word, 'ё', 'е');
        # Check against cache of stemmed words
        if ($this->Stem_Caching && [URL="http://www.php.net/isset"]isset[/URL]($this->Stem_Cache[$word])) {
            return $this->Stem_Cache[$word];
        }
        $stem = $word;
        do {
          if (![URL="http://www.php.net/preg_match"]preg_match[/URL]($this->RVRE, $word, $p)) break;
          $start = $p[1];
          $RV = $p[2];
          if (!$RV) break;
 
          # Step 1
          if (!$this->s($RV, $this->PERFECTIVEGROUND, '')) {
              $this->s($RV, $this->REFLEXIVE, '');
 
              if ($this->s($RV, $this->ADJECTIVE, '')) {
                  $this->s($RV, $this->PARTICIPLE, '');
              } else {
                  if (!$this->s($RV, $this->VERB, ''))
                      $this->s($RV, $this->NOUN, '');
              }
          }
 
          # Step 2
          $this->s($RV, '/и$/', '');
 
          # Step 3
          if ($this->m($RV, $this->DERIVATIONAL))
              $this->s($RV, '/ость?$/', '');
 
          # Step 4
          if (!$this->s($RV, '/ь$/', '')) {
              $this->s($RV, '/ейше?/', '');
              $this->s($RV, '/нн$/', 'н'); 
          }
 
          $stem = $start.$RV;
        } while(false);
        if ($this->Stem_Caching) $this->Stem_Cache[$word] = $stem;
        return $stem;
    }
 
    function stem_caching($parm_ref) 
    {
        $caching_level = @$parm_ref['-level'];
        if ($caching_level) {
            if (!$this->m($caching_level, '/^[012]$/')) {
                [URL="http://www.php.net/die"]die[/URL](__CLASS__ . "::stem_caching() - Legal values are '0','1' or '2'. '$caching_level' is not a legal value");
            }
            $this->Stem_Caching = $caching_level;
        }
        return $this->Stem_Caching;
    }
 
    function clear_stem_cache() 
    {
        $this->Stem_Cache = [URL="http://www.php.net/array"]array[/URL]();
    }
}
?>
Пример использования:

Code
1
2
$stemmer = new Lingua_Stem_Ru();
[URL="http://www.php.net/echo"]echo[/URL] $stemmer->stem_word('Котеровыми');
Естественно, библиотека иногда ошибается, однако в большинстве случаев все же срабатывает вполне удовлетворительно. Нечто подобное используется в поисковых системах.
0
0 / 0 / 0
Регистрация: 16.07.2006
Сообщений: 7
16.07.2006, 19:16  [ТС]
спасиб...
а еси составить словарь корней или ещё лучше словари приставок или суффиксов, а при совпадении проверять на исключения?
0
Администратор
 Аватар для mik-a-el
87804 / 53125 / 249
Регистрация: 10.04.2006
Сообщений: 13,760
16.07.2006, 19:23
Можно, но ты представляешь объем работ? К тому же наш великий и могучий не столь однозначен....
0
0 / 0 / 0
Регистрация: 16.07.2006
Сообщений: 7
16.07.2006, 19:51  [ТС]
дело в том что с php туго, другими словами вообще никак...так что ничего не понять...в этом алгоритме...
0
Администратор
 Аватар для mik-a-el
87804 / 53125 / 249
Регистрация: 10.04.2006
Сообщений: 13,760
16.07.2006, 22:21
PHP - си-подобный язык, так что если знаешь С или СРР, то проблем быть не должно...
Теория лежит здесь: _http://snowball.tartarus.org/algorithms/russian/stemmer.html
и здесь: _http://xpoint.ru/know-how/VebAlgoritmyi/RabotaSTekstami/RabotaSRusskoyMorfologieyPriPomoschiSlov aryaIspell?3#PoiskOsnovnoyFormyiSlovaBez Slo
0
0 / 0 / 0
Регистрация: 16.07.2006
Сообщений: 7
16.07.2006, 22:52  [ТС]
пасиб большое очень помог!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2006, 22:52
Помогаю со студенческими работами здесь

Алгоритм нахождения цифрового корня натурального числа
хочу сделать проверку числа что бы выводилось сообщение при большем числе не получается :( void zadanie_3() { signed long n; ...

Алгоритм нахождения квадратного корня из положительного числа x
можно представить следующей рекуррентной последовательностью: y0 = (x+1)/2 yi = (yi-1 + x/yi-1) (формула Герона Александрийского). ...

Как зациклить алгоритм нахождения квадратного корня
пишу метод нахождения квадратного корня, всё вроде работает, алгоритм верный, НО не могу зациклить его, нужна помощь или дельный совет ...

Алгоритм нахождения самого длинного слова в текстовом массиве
Подскажите пожалуйста алгоритм нахождения самого длинного слова в текстовом массиве. Может есть какая-нибудь функция для этого?

Нахождения корня своим кодом
Доброго времени суток, форумчане. Хочу показать код нахождения корня числа. Вообще в Vb.Net для этого есть встроенная функция. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru