Слоги и ударение¶
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 ("земля", "корова", "золото", "выскочивший"))
# ('мужская', 'женская', 'дактилическая', 'гипердактилическая')