Перейти к содержанию

Слоги и ударение

ruts.syllables

Описание

Модуль делит русское слово на слоги и находит его ударный слог: слоги - по правилам, ударение - по словарю StressDict. На этих функциях построены базовые, фонетические и стиховедческие статистики и формулы удобочитаемости.

Деление на слоги

ruts.syllables.syllabify()

Деление слова на слоги по правилу восходящей звучности (Аванесов): слогов столько, сколько гласных, у слова без гласных (в, к, с) слогов нет. Граница слога проходит по правилам:

Правило Пример
одиночный согласный между гласными отходит к следующему слогу ко-ро-ва, ра-йон
сочетание шумных и шумного с сонорным отходит к следующему слогу ко-шка, се-стра, о-ткрыть, по-зна-ко-мить
сонорный перед шумным отходит к предыдущему слогу кар-та, пол-ка
между двумя сонорными проходит граница вол-на, кар-ман
й перед согласным отходит к предыдущему слогу май-ка, вой-на
ь и ъ отходят к предыдущей букве боль-шой, по-дъезд
каждая гласная зияния образует свой слог а-э-ро-порт, а-ист

Деление орфографическое, по буквам, как в школьной фонетике; составное слово делится по частям (со-рок-во-ро-вка).

Параметры:

Параметр Тип По умолчанию Описание
word str - Слово

Пример

from ruts.syllables import syllabify

syllabify("здравствуйте")
# ['здра', 'вствуй', 'те']

Количество слогов

ruts.syllables.count_syllables()

Количество слогов слова - число гласных букв.

Параметры:

Параметр Тип По умолчанию Описание
word str - Слово

Пример

from ruts.syllables import count_syllables

count_syllables("здравствуйте")
# 3

Ударный слог

ruts.syllables.word_stress()

Номер ударного слога слова, считая с нуля: по букве ё, у односложного слова - единственный слог, иначе по словарю (пункт 1 алгоритма стиховедческих статистик).

Параметры:

Параметр Тип По умолчанию Описание
word str - Слово
stress_dict StressDict None Словарь ударений; если не задан, используется StressDict()

Возвращает None, если слово не найдено или в нем нет гласных.

Пример

from ruts.syllables import syllabify, word_stress

word_stress("корова"), word_stress("ещё"), word_stress("желанье"), word_stress("кто-нибудь")
# (1, 1, 1, 0)
word_stress("хмурота")
# None
syllabify("корова")[word_stress("корова")]
# 'ро'

Все ударения

ruts.syllables.word_stresses()

Все ударные слоги слова по возрастанию. Составное слово через дефис, которого нет в словаре целиком, получает ударение каждой знаменательной части (со-рок-во-ро-вка - 0 и 3), частицы (-то, -либо, -нибудь и другие) безударны.

Параметры:

Параметр Тип По умолчанию Описание
word str - Слово
stress_dict StressDict None Словарь ударений; если не задан, используется StressDict()

Возвращает пустой список, если слово не найдено или в нем нет гласных.

Пример

from ruts.syllables import word_stresses

word_stresses("сорок-воровка"), word_stresses("северо-западный"), word_stresses("кто-нибудь")
# ([0, 3], [3], [0])

Тип окончания

ruts.syllables.stress_type()

Тип окончания слова по месту главного ударения. Названия - как у клаузул стиха (VERSE_CLAUSULAS):

Тип Ударение Пример
мужская на последнем слоге зем-ля
женская на предпоследнем слоге ко-ро-ва
дактилическая на третьем слоге от конца зо-ло-то
гипердактилическая раньше вы-ско-чи-вший

Параметры:

Параметр Тип По умолчанию Описание
word str - Слово
stress_dict StressDict None Словарь ударений; если не задан, используется StressDict()

Возвращает None, если слово не найдено или в нем нет гласных.

Пример

from ruts.syllables import stress_type

tuple(stress_type(word) for word in ("земля", "корова", "золото", "выскочивший"))
# ('мужская', 'женская', 'дактилическая', 'гипердактилическая')