Russian Phonetic Analysis Module
Project description
ruphonetic
Модуль для фонетического анализа русского текста:
- автоматическая расстановка ударений (через
spaCyи словарные данные); - фонетическая транскрипция по правилам русской фонетики;
- построение частотного спектра звуков (фонем);
- группировка звуков по классам (свистящие, шипящие, твёрдые, мягкие);
- динамика спектра по тексту (скользящее окно / нарастающая длина);
- приближённая идентификация автора по звуковому спектру.
Библиотека пригодится для лингвистических исследований, анализа поэзии и прозы, учебных задач и экспериментов с русской фонетикой.
Установка
pip install ruphonetic
При первом запуске модуль автоматически скачает модель ru_core_news_md для spaCy, если она ещё не установлена. Это может занять несколько минут.
Быстрый старт
import ruphonetic
text = (
"У лукоморья дуб зелёный;\n"
"Златая цепь на дубе том:\n"
"И днём и ночью кот учёный\n"
"Всё ходит по цепи кругом\n"
)
# 1. Транскрипция
phonetic = ruphonetic.transcribe(text, simplify=False)
print(phonetic)
# 2. Упрощённая транскрипция (только допустимые фонемы)
phonetic_simple = ruphonetic.transcribe(text, simplify=True)
print(phonetic_simple)
# 3. Спектр звуков (фонем)
spectre = ruphonetic.sound_spectre(text, show_plot=False)
print(spectre)
Основные функции
Все публичные функции доступны прямо из пакета ruphonetic (см. ruphonetic/__init__.py).
transcribe(text: str, simplify: bool = False, verbose: bool = False) -> str
Транскрибирует текст по правилам русской фонетики.
text– исходный русский текст;simplify– еслиTrue, применяется упрощённая транскрипция (оставляются только допустимые фонемы и служебные символы);verbose– еслиTrue, по шагам выводятся промежуточные стадии обработки.
from ruphonetic import transcribe
print(transcribe("гравитационное поле"))
sound_spectre(text: str, input_is_transcribed: bool = False, show_plot: bool = False, show_pie_plot: bool = False, show_bar_plot: bool = False) -> dict[str, float]
Строит частотный спектр фонем в тексте.
- если
input_is_transcribed=False, текст сначала транскрибируется сsimplify=True; - результат — словарь
{фонема: относительная_частота}; - при
show_plot / show_pie_plot / show_bar_plot = Trueстроятся соответствующие графики (черезmatplotlib).
from ruphonetic import sound_spectre
spectre = sound_spectre("У лукоморья дуб зелёный", show_bar_plot=True)
sound_spectre_grouped(...) -> dict[str, float]
Группирует спектр по классам звуков:
- «свистящие»,
- «шипящие»,
- «твёрдые»,
- «мягкие».
Интерфейс аналогичен sound_spectre, но на выходе — спектр по классам, а не по отдельным фонемам.
sound_spectre_grouped_custom(...) -> dict[str, float]
Интерактивная версия: пользователь вводит группы фонем через консоль (например, п|б|м), а функция считает их суммарные частоты и, при желании, строит графики.
Динамика спектра
-
sound_spectre_dynamic_position(text: str, word_amount: int, input_is_transcribed: bool = False)Строит спектры по «скользящему окну» из
word_amountслов, двигающемуся по тексту. -
sound_spectre_dynamic_length(text: str, input_is_transcribed: bool = False)Строит спектры для нарастающих префиксов текста (от первых слов к более длинным отрезкам).
Обе функции возвращают словари вида:
{
index: {
"substring": "<фрагмент текста>",
"result": { "<фонема>": <частота>, ... }
},
...
}
identify_author_by_sound_spectre(text: str, grouped: bool = False) -> dict[str, float]
Сравнивает звуковой спектр входного текста со спектрами авторов, сохранёнными в поддиректории ruphonetic/authors, и возвращает словарь:
{
"Имя_автора": коэффициент_сходства,
...
}
Используется косинусное сходство между спектрами. Если grouped=True, сравнение происходит по групповому спектру (sound_spectre_grouped), иначе — по обычному (sound_spectre).
Зависимости
Основные зависимости (см. setup.py):
numpyspacy(модельru_core_news_md)matplotlib
spaCy‑модель будет автоматически загружена при первом использовании модуля акцентуации.
Лицензия
Проект распространяется по лицензии MIT. См. файл LICENSE.txt в репозитории/дистрибутиве.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ruphonetic-0.2.1.tar.gz.
File metadata
- Download URL: ruphonetic-0.2.1.tar.gz
- Upload date:
- Size: 10.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2abb645509a1f771af8674a6b53f8a81fda27faf9c9aadd614f2ec24508cd1fc
|
|
| MD5 |
35591ed36736c4681e79d3d69115a247
|
|
| BLAKE2b-256 |
f6eda2e5a386850e514114010d5d948d1aecf46cc785d52026c9a8cf16ce1594
|
File details
Details for the file ruphonetic-0.2.1-py3-none-any.whl.
File metadata
- Download URL: ruphonetic-0.2.1-py3-none-any.whl
- Upload date:
- Size: 10.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9820346f2f784572e65692d65f317aceea0be6905952376e7ffa4bc59f107a1b
|
|
| MD5 |
0c71b9426fb1765e2790674986c3ac74
|
|
| BLAKE2b-256 |
a4d06103b9e518dc1bef430e36d162d98f0f276f5d9c378b706ed3c94889aeb5
|