Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение слогов в слове, Слова русские! 
:(
    Опции темы
Rain
Дата 18.7.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 4.11.2005
Где: г.Саратов

Репутация: нет
Всего: нет



Привет!
Есть ли стандартная функция деления слов на слоги? Если нет может кто писал такую? Помогите пожалуйста! Или если есть формализованный алгоритм, прошу его привести!

Заранее спасибо! 
PM MAIL ICQ   Вверх
Rain
Дата 18.7.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 4.11.2005
Где: г.Саратов

Репутация: нет
Всего: нет



Привет!

Если есть формализованный алгоритм выделения слогов в слове, прошу его привести!

Заранее спасибо! 
PM MAIL ICQ   Вверх
Voldemar2004
Дата 18.7.2006, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Откуда функция будет знать какие в словах слоги, да еще в русских ?! smile А вообще можно что-то подобное реализовать так: по принципу "сколько в слове гласных, столько и слогов", например "молоко" - результат "мо", "ло", "ко". Здесь надо создать массив гласных букв и согласных, цикл по всему тексту со сравнением, далее делить слова по вышеописанному принципу. 


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Romikgy
Дата 18.7.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Цитата(Rain @  18.7.2006,  19:58 Найти цитируемый пост)
формализованный алгоритм выделения слогов в слове, 

книги по русскому языку школный курс, имхо точнее некуда, 
ЗЫ на полном серьозе. 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
BUGOR
Дата 18.7.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 1
Всего: 16



Слог должен начинаться на одну или более согласных и заканчиваться гласной или начинаться на одну гласную и заканчиваться согласной. Вот и все условия. 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 18.7.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Цитата(BUGOR @  18.7.2006,  20:11 Найти цитируемый пост)
Слог должен начинаться на одну или более согласных и заканчиваться гласной

слово "взгляд", имхо оно же и слог , не подходит к твоему определению smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Rain
Дата 18.7.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 4.11.2005
Где: г.Саратов

Репутация: нет
Всего: нет



Да не это не тема! Наверняка есть уже наработанные алгоритмы! 
PM MAIL ICQ   Вверх
Romikgy
Дата 18.7.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



http://www.google.com.ua/search?hl=uk&...&meta=

Добавлено @ 21:50 
второя ссылка может поможет 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
sergejzr
Дата 18.7.2006, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Rain, не следует дублировать темы! 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Никто
Дата 20.7.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Начинаешь с начала слова.Запоминаешь первую букву слова,потом переходишь на одну букву вперед ища гласную.Потом ищешь вторую гласную.Если нашел,то слог будет от начала отсчета до n-2,n-это номер второй гласной.Потом началом отсчета делаешь предыдущую букву перед гласной.И повторяешь все заново.Только сначала сделай массив букв и определи их.Если следующий будет пробел,следующее слово. 
--------------------
   
PM MAIL   Вверх
DemoCode
Дата 20.7.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 2
Всего: 41



Цитата(BUGOR @  18.7.2006,  22:11 Найти цитируемый пост)
Слог должен начинаться на одну или более согласных и заканчиваться гласной или начинаться на одну гласную и заканчиваться согласной. Вот и все условия.  

Есть слоги состоящие всего из одной гласной, например: кри-о-ни-ка, ме-те-о-рит. 


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
skyboy
Дата 20.7.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



яб-ло-ко просто не разбить, чтоб "начиналось с согласной". также, как в са-мо-лёт последний слог не заканчивается на гласную(закрытый слог). 
PM MAIL   Вверх
sergejzr
Дата 20.7.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Я чтото тоже не смог найти. Придётся видимо думать самим smile

количество слогов в слове = количеству гласных - это факт. Вооюще, возможен такой алгоритм, или придётся исключения описывать?
Какие могут быть разбиения?

глас - на-я

про-стран-ство
про-сто
о-прос

вот например по разному при одинаковых буквах разбивается..
 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
DemoCode
Дата 20.7.2006, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 2
Всего: 41



Цитата

Законы слогоделения в разных языках и даже диалектах одного языка неодинаковы. Например, представители севернорусского наречия произнесут при скандировании слово “дружба” так: друж-ба. А представители южнорусского наречия – иначе: дру-жба.
        В русском литературном языке деление на слоги опирается на   п р и н ц и п   в о с х о д я щ е й   з в у ч н о с т и .  Это обозначает, что звуки в слоге (незаконченом) располагаются от наименее звучного к наиболее звучному. Если звучность условно обозначить цифрами, получится следующее: 3 – гласный звук, 2 – сонорный согласный звук, 1 – остальные (шумные) согласные звуки. Разделение на слоги будет производится по принципу восходящей звучности: кни-га (1 2 3 - 1 3), и-на-че (3 - 2 3 - 1 3), по-ло-тно (1 3 - 2 3 - 1 2 3).
        Трудности при разделении слова на слоги могут возникнуть при стечении согласных. При этом в русском литературном языке, опирающемся на московское произношение, разделение на слоги будет осуществляться с учетом следующего:
        1. Если на границе слогов рядом оказались два шумных или два сонорных звука (кроме [j]), они относятся к последующему гласному: пу-шка, и-зба, во-лна.
        2. Если в сочетании согласных первый [j], он всегда отходит к предшествующему гласному: вой-на, май-ка.
        3. В сочетании согласных, первым из которых является сонорный, а вторым – шумный, сонорный может отходить к предшествующему гласному: кон-спект, Вол-га.
 


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
DemoCode
Дата 22.7.2006, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 2
Всего: 41



Вроде получилось...  Проверьте кому не лень. Слова вводить маленькими буквами.

Код

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>Test</title>
  <script language="javascript">
    var vowel  = new String ('аеёиоуыэюя');                     // Гласные буквы
    var voiced = new String ('бвгджзлмнрхцчшщ');       // Звонкие и шипящие согласные
    var deaf   = new String ('кпстф');                             // Глухие согласные
    var brief  = new String ('й');                                      // Й
    var other  = new String ('ьъ');                                  // Другие
    var cons   = new String ('бвгджзйклмнпрстфхцчшщ'); // Все согласные
        // Валидация правильности введенной строки
        function validateString (s) {
       // Поленился делать :)
       return s;
        } // function validateString (s)
    // Есть ли в строке гласные?
    function isNotLastSep (remainStr) {
       var is = false;
       for (var i = 0; i < remainStr.length; i++) {
          if (vowel.indexOf (remainStr.substr (i, 1)) != -1) { is = true; break; }
       } // for (var i = 0; i < remainStr - 1; i++)
       return is;
    } // function isLastSep (remainStr)
    // Собственно функция разбиения слова на слоги
    function getSeparatedString (s) {
       // Добавляем слог в массив и начинаем новый слог
       function addSep () {
          sepArr.push (tmpS);
          tmpS = '';
       } // function addSep ()
       s = validateString (s);
       var tmpL   = new String ();  // Текущий символ
       var tmpS   = new String ();  // Текущий слог
       var sepArr = new Array ();   // Массив слогов
       for (var i = 0; i < s.length; i++) {
          tmpL = s.substr (i, 1);
          tmpS += tmpL;
          // Проверка на признаки конца слогов
          // если буква равна 'й' и она не первая и не последняя и это не последний слог
          if (
            (i != 0) && 
            (i != s.length -1) && 
            (brief.indexOf (tmpL) != -1) &&
            (isNotLastSep (s.substr (i+1, s.length-i+1)))
          ) { addSep (); continue; }
          // если текущая гласная и следующая тоже гласная
          if (
             (i < s.length - 1) && 
             (vowel.indexOf (tmpL) != -1) && 
             (vowel.indexOf (s.substr (i+1, 1)) != -1)
           ) { addSep (); continue; }
          // если текущая гласная, следующая согласная, а после неё гласная
          if (
             (i < s.length - 2) && 
             (vowel.indexOf (tmpL) != -1) && 
             (cons.indexOf (s.substr (i+1, 1)) != -1) && 
             (vowel.indexOf (s.substr (i+2, 1)) != -1)
           ) { addSep (); continue; }
          // если текущая гласная, следующая глухая согласная, а после согласная и это не последний слог
          if (
             (i < s.length - 2) && 
             (vowel.indexOf (tmpL) != -1) && 
             (deaf.indexOf (s.substr (i+1, 1)) != -1) && 
             (cons.indexOf (s.substr (i+2, 1)) != -1) &&
             (isNotLastSep (s.substr (i+1, s.length-i+1)))
          ) { addSep (); continue; }
          // если текущая звонкая или шипящая согласная, перед ней гласная, следующая не гласная и не другая, и это не последний слог
          if (
             (i > 0) && 
             (i < s.length - 1) && 
             (voiced.indexOf (tmpL) != -1) && 
             (vowel.indexOf (s.substr (i-1, 1)) != -1) && 
             (vowel.indexOf (s.substr (i+1, 1)) == -1) && 
             (other.indexOf (s.substr (i+1, 1)) == -1) && 
             (isNotLastSep (s.substr (i+1, s.length-i+1)))
          ) { addSep (); continue; }  
          // если текущая другая, а следующая не гласная если это первый слог
          if (
             (i < s.length - 1) && 
             (other.indexOf (tmpL) != -1) &&
             ((vowel.indexOf (s.substr (i+1, 1)) == -1) || 
             (isNotLastSep (s.substr (0, i))))
          ) { addSep (); continue; } 
       } // for (var i = 0; i < s.length; i++)
       sepArr.push (tmpS);
       return sepArr.join('-');
    } // function getSeparatedString (s)
  </script>
 </head>
 <body>
 <form>
    <input type="text" size="30" name="fromString" value="">
    <input type="button" value="Go!" onClick="document.forms[0].elements[2].value = getSeparatedString (document.forms[0].elements[0].value);">
    <br>
    <input type="text" size="30" name="toString" value="">
 </form>
 </body>
</html>

  

 


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0920 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.