Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Разбивка слов.


Автор: SCAR 5.3.2007, 14:18
  Я написал функцию, которая берет текст из Мемо и разбивает его на слова, но есть еще одна задача. Надо разбить эти слова на слоги и сделать их проверку. Подскажите как сделать эту разбивку слова на слоги... В функцию должно поступать слово в формате AnsiString, а возвращать она дожна отдельные слоги в том же формате.

Автор: _hunter 5.3.2007, 14:46
ну возьми какой-нить учебник по русскому языку (класс за второй/третий) и почитай что такое слог и как его выделить...

Автор: SCAR 5.3.2007, 18:28
 Вот в этом и проблема, четких правил нет! Точнее их вообще почти никаких нет, я уже весь школьный курс просмотрел от 1 и до 7 класса.

Автор: SCAR 7.3.2007, 04:58
Никто не знает?

Автор: nworm 10.3.2007, 17:03
По-моему эту тему надо перенести в раздел "алгоритмы."

В принципе, можно либо свой алгоритм разбиения делать (используя правила из букварей, правда эти правила слегка кривые), либо словарь с уже разбитыми на слоги словами. 
Один знакомый диплом про это сделал, только потом на всё это задвинул...


Автор: Bitter 12.3.2007, 01:27
нужно реализовать правила русского языка, только их нужно знать )))
а еще можно базу данных слогов составить и сравнивать начиная с 2-х букв. Если такой в базе не нашелся, берем третью, если нашелся, удаляем из входящей строки и записываем в массив-результат. Для ускорения поиска реализуешь хеш таблицу

Автор: Kuvaldis 12.3.2007, 02:19
На 1-м курсе писал через такое правило:
Как показывает многочисленные эксперименты, разбиение русских слов для переноса с большей вероятностью выполняется правильно, если пользоваться следующими простыми приёмами:
1)    две идущие подряд гласные можно разделить, если первой предше-ствует согласная, а за второй идёт хотя бы одна буква (буква “й” рассматривается вместе с предшествующей гласной как единое це-лое);
2)    две идущие подряд согласные можно разделить, если первой из них предшествует гласная, а в той части слова, которая идёт за второй согласной, идёт хотя бы одна гласная (“ь” и  “ъ” вместе с предшест-вующей согласной рассматриваются как единое целое):
3)    если не удаётся применить первые два правила, то следует попы-таться разбить слово так, чтобы первая часть содержала хотя бы две буквы и оканчивалась на согласную, а вторая содержала одну глас-ную.
Вероятность разбиения увеличивается, если предварительно восполь-зоваться хотя бы неполным списком приставок и попытаться выделить из слова эту приставку.

Если очень надо, то могу выложить код

Автор: sergejzr 12.3.2007, 03:15
На яваскрипт + описание алгоритма http://forum.vingrad.ru/index.php?showtopic=104640&view=findpost&p=799426
http://files.vingrad.ru/sergej.z/js/algorithms/slogi/

ПС:
Соеденил темы.

Автор: nworm 12.3.2007, 15:21
Очень хороший алгоритм.
А вот слово сердце он разбивает так: сер-дце.
А Word и TeX так: серд-це.
Иногда могут попадаться перлы, в которых между двумя гласными согласных штук 6.
Аналогично дело обстоит со словом бессердечный:
бе-ссер-деч-ный

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)