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

Функции вычисления статистик

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

ruts.phon_stats.syllabify()

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

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

Правила применяются к буквам, а не звукам, поэтому деление орфографическое, как в школьной фонетике, а не морфемное. Символы, кроме русских букв (дефис, цифры, латиница), отбрасываются.

Параметры:

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

Пример

from ruts.phon_stats import syllabify

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

CV-шаблон

ruts.phon_stats.cv_pattern()

Получение CV-шаблона слова или слога: гласные обозначаются буквой V, согласные - C, ь и ъ пропускаются, остальные символы не учитываются.

Параметры:

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

Открытый слог

ruts.phon_stats.is_open_syllable()

Проверка, является ли слог открытым - оканчивается на гласную; ь и ъ после гласной слог не закрывают.

Параметры:

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

Консонантные кластеры

ruts.phon_stats.calc_consonant_clusters()

Вычисление распределения консонантных кластеров по длине. Кластер - последовательность согласных внутри слова, ь и ъ не прерывают кластер; кластеры длиной 1 - одиночные согласные между гласными или на краях слова. Класс PhonStats считает по распределению долю кластеров из 3 и более согласных (p_heavy_clusters).

Параметры:

Параметр Тип По умолчанию Описание
text list[str] - Список слов

Зияния гласных

ruts.phon_stats.calc_hiatus()

Вычисление количества зияний гласных - двух и более гласных подряд внутри слова: аэропорт, аист, поэзия (о-э). Йотированные е, ё, ю, я после гласной обозначают [j] и гласный и зияния не образуют: заяц, моя, красивая, читает - иначе окончания прилагательных и глаголов давали бы четыре пятых всех зияний. Класс PhonStats делит количество зияний на количество слов (p_hiatus).

Параметры:

Параметр Тип По умолчанию Описание
text list[str] - Список слов

Энтропия CV-шаблонов

ruts.phon_stats.calc_cv_entropy()

Вычисление энтропии Шеннона распределения слов по CV-шаблону в битах: чем выше значение, тем разнообразнее фонетическая форма слов текста. Слова без гласных и согласных (числа, латиница) не учитываются; если таких слов нет вовсе, функция возвращает nan.

Формула:

\[ H = -\sum_k p_k \log_2 p_k \]

где \(p_k\) - доля слов с шаблоном \(k\).

Параметры:

Параметр Тип По умолчанию Описание
text list[str] - Список слов

Жёсткость

Атрибут hardness класса PhonStats - отношение количества глухих шумных согласных к количеству гласных и сонорных. Чем выше значение, тем «жёстче» звучание текста. Не определено для текстов без гласных и сонорных.

Формула:

\[ \frac{\textrm{Глухие шумные}}{\textrm{Гласные}+\textrm{Сонорные}} \]

Индекс аллитерации

ruts.phon_stats.calc_alliteration()

Вычисление индекса аллитерации - отношения наблюдаемого числа окон из window_len соседних слов, в которых один и тот же согласный встречается минимум в двух словах, к ожидаемому при независимом распределении согласных по словам (сумма по всем согласным). Ожидаемое считается по частотам согласных в самом тексте, поэтому индекс показывает, сгруппированы ли повторы в соседних словах, а не общую частоту звука. Значение около 1 - повторы согласных случайны, заметно больше 1 - аллитерация. Считается по буквам без учета оглушения.

Формула для одной буквы с долей слов \(p\), содержащих её, и окном из \(w\) слов:

\[ E = N_w\left(1-(1-p)^w-w\,p\,(1-p)^{w-1}\right) \]

где \(N_w\) - количество окон; индекс равен \(\sum O / \sum E\) по всем буквам.

Предупреждение

Для текстов короче окна функция возвращает nan.

Параметры:

Параметр Тип По умолчанию Описание
text list[str] - Список слов
window_len int 3 Размер окна в словах

Индекс ассонанса

ruts.phon_stats.calc_assonance()

Вычисление индекса ассонанса - той же величины, что индекс аллитерации, но для гласных. Считается по всем гласным буквам без учета ударения и редукции.

Параметры:

Параметр Тип По умолчанию Описание
text list[str] - Список слов
window_len int 3 Размер окна в словах