Фоностатистики¶
ruts.phon_stats.PhonStats
Описание¶
Модуль для вычисления фоностатистик текста: долей классов звуков, консонантных кластеров и зияний, энтропии CV-шаблонов, «жёсткости», индексов аллитерации и ассонанса, а также статистик слогов. В качестве источника данных может использоваться как непосредственно текст, так и объект класса Doc библиотеки spaCy.
Статистики считаются по буквам без учета оглушения, редукции и ударения. Классы букв заданы константами ruts.constants:
| Класс | Буквы | Константа |
|---|---|---|
| Гласные | а, е, и, о, у, ы, э, ю, я, ё | RU_VOWELS |
| Сонорные согласные | л, м, н, р, й | RU_CONSONANTS_SONOR, RU_CONSONANTS_YET |
| Звонкие шумные согласные | б, в, г, д, ж, з | RU_CONSONANTS_HIGH |
| Глухие шумные согласные | к, п, с, т, ф, х, ц, ч, ш, щ | RU_CONSONANTS_LOW |
| Знаки | ь, ъ - не являются звуками и не учитываются в долях | RU_MARKS |
Слова делятся на слоги по правилу восходящей звучности (Аванесов), см. функцию syllabify.
Примечание
Вычисление статистик происходит в момент инициализации объекта класса PhonStats.
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
source |
str/Doc | - |
Источник данных (строка или объект Doc) |
words_extractor |
WordsExtractor | None |
Инструмент для извлечения слов |
window_len |
int | 3 |
Размер окна в словах для аллитерации и ассонанса |
Атрибуты¶
| Атрибут | Тип | Описание |
|---|---|---|
words |
tuple[str] | Кортеж извлеченных слов в нижнем регистре |
syllables |
tuple[tuple[str, ...], ...] | Кортеж слогов каждого слова |
n_vowels |
int | Количество гласных |
n_consonants |
int | Количество согласных |
n_sonorants |
int | Количество сонорных согласных |
n_voiced |
int | Количество звонких шумных согласных |
n_voiceless |
int | Количество глухих шумных согласных |
n_marks |
int | Количество мягких и твердых знаков |
c_clusters |
dict[int, int] | Распределение консонантных кластеров по длине |
c_syllable_patterns |
dict[str, int] | Распределение слогов по CV-шаблону |
p_vowels |
float | Доля гласных среди звуков |
p_sonorants |
float | Доля сонорных согласных среди звуков |
p_voiced |
float | Доля звонких шумных согласных среди звуков |
p_voiceless |
float | Доля глухих шумных согласных среди звуков |
consonant_vowel_ratio |
float | Отношение согласных к гласным |
p_heavy_clusters |
float | Доля кластеров из 3 и более согласных |
p_hiatus |
float | Зияний гласных на слово |
cv_entropy |
float | Энтропия CV-шаблонов слов в битах |
hardness |
float | Жёсткость - отношение глухих шумных к гласным и сонорным |
alliteration |
float | Индекс аллитерации |
assonance |
float | Индекс ассонанса |
p_open_syllables |
float | Доля открытых слогов |
mean_syllable_len |
float | Средняя длина слога в буквах |
Примечание
Каждую статистику можно вычислить отдельно, выполнив соответствующую функцию. Подробную информацию о фоностатистиках и функциях, используемых для их вычисления, можно узнать в соответствующем разделе.
Методы¶
get_stats¶
Возвращает справочник с вычисленными фоностатистиками текста.
Пример
Код:
# Загрузка библиотек
from ruts import PhonStats
# Подготовка данных
text = "Ног нет, а хожу, рта нет, а скажу: когда спать, когда вставать, когда работу начинать"
# Вычисление статистик
ps = PhonStats(text)
ps.get_stats()
Результат:
{'p_vowels': 0.4032258064516129,
'p_sonorants': 0.11290322580645161,
'p_voiced': 0.1935483870967742,
'p_voiceless': 0.2903225806451613,
'consonant_vowel_ratio': 1.48,
'p_heavy_clusters': 0.034482758620689655,
'p_hiatus': 0.0,
'cv_entropy': 3.1395722619867223,
'hardness': 0.5625,
'alliteration': 0.9149440867502556,
'assonance': 0.802520508857449,
'p_open_syllables': 0.76,
'mean_syllable_len': 2.6}
Слоги и распределения доступны как атрибуты:
Пример
ps.syllables[:4]
# (('ног',), ('нет',), ('а',), ('хо', 'жу'))
ps.c_clusters
# {1: 22, 2: 6, 3: 1}
ps.c_syllable_patterns
# {'CCCV': 1, 'CCV': 5, 'CCVC': 1, 'CV': 11, 'CVC': 5, 'V': 2}
print_stats¶
Выводит на экран таблицу с вычисленными фоностатистиками текста.
Пример
Код:
...
# Отображение таблицы вычисленных статистик
ps.print_stats()
Результат:
Статистика | Значение
--------------------------------------------------
Доля гласных | 0.40
Доля сонорных согласных | 0.11
Доля звонких шумных согласных | 0.19
Доля глухих шумных согласных | 0.29
Отношение согласных к гласным | 1.48
Доля кластеров из 3 и более согласных | 0.03
Зияний гласных на слово | 0.00
Энтропия CV-шаблонов слов (бит) | 3.14
Жёсткость | 0.56
Индекс аллитерации | 0.91
Индекс ассонанса | 0.80
Доля открытых слогов | 0.76
Средняя длина слога (букв) | 2.60