Skip to main content

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):

  • numpy
  • spacy (модель 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

ruphonetic-0.2.1.tar.gz (10.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ruphonetic-0.2.1-py3-none-any.whl (10.4 MB view details)

Uploaded Python 3

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

Hashes for ruphonetic-0.2.1.tar.gz
Algorithm Hash digest
SHA256 2abb645509a1f771af8674a6b53f8a81fda27faf9c9aadd614f2ec24508cd1fc
MD5 35591ed36736c4681e79d3d69115a247
BLAKE2b-256 f6eda2e5a386850e514114010d5d948d1aecf46cc785d52026c9a8cf16ce1594

See more details on using hashes here.

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

Hashes for ruphonetic-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9820346f2f784572e65692d65f317aceea0be6905952376e7ffa4bc59f107a1b
MD5 0c71b9426fb1765e2790674986c3ac74
BLAKE2b-256 a4d06103b9e518dc1bef430e36d162d98f0f276f5d9c378b706ed3c94889aeb5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page