Russian Texts Statistics (ruTS)¶

ruTS считает по русскому тексту то, для чего обычно приходится собирать несколько разрозненных инструментов: базовые статистики, метрики удобочитаемости и лексического разнообразия, морфологические признаки. Функционал основан на адаптированных для русского языка статистиках библиотеки textacy.
Работать можно как с обычными строками, так и с готовыми Doc-объектами spaCy - каждая статистика доступна и как отдельный класс, и как компонент пайплайна spaCy.
Попробовать без установки можно в демо на Hugging Face Spaces: вставьте текст и получите класс удобочитаемости, метрики, графики и подсветку фрагментов.
Возможности¶
- создавать токенизаторы слов и предложений
- считать базовые текстовые статистики (количество слов, предложений, знаков препинания, слогов и др.)
- считать метрики удобочитаемости текста (Тест Флеша-Кинкайда, Индекс SMOG, Индекс удобочитаемости LIX и др.)
- считать метрики лексического разнообразия текста (Type-Token Ratio, Measure of Textual Lexical Diversity, Гапакс-индекс и др.)
- извлекать морфологические признаки из текста в терминах Universal Dependencies (часть речи, падеж, наклонение, переходность и др.)
- считать SEO-метрики стиля текста (тошнота, водность, заспамленность, естественность по Ципфу, плотность ключевых слов)
- считать фоностатистики текста (доли классов звуков, консонантные кластеры, аллитерация и ассонанс, слоги)
- считать синтаксические статистики текста по дереву зависимостей spaCy (длины зависимостей, глубина дерева, сочинительные цепочки, клаузы, обороты, пассив, цепочки родительных падежей)
- считать статистики связности текста (повторы существительных, аргументов и знаменательных слов между предложениями, данность, темпоральная связность)
- работать с готовыми текстовыми наборами данных (Советские христоматии по литературе, Полное собрание сочинений И.В. Сталина, Тексты с метками класса)
- визуализировать текстовые данные (Закон Ципфа, Литературная дактилоскопия, Дерево слов, Подсветка текста)
- создавать компоненты для встраивания в spaCy
Установка¶
Требуется Python 3.11 или новее.
pip install ruts
Подробнее о зависимостях и установке из репозитория - на странице Установка.
Быстрый старт¶
>>> from ruts import BasicStats, DiversityStats, ReadabilityStats
>>> text = "Существуют три вида лжи: ложь, наглая ложь и статистика"
>>> BasicStats(text).get_stats()
{'c_letters': {1: 1, 3: 2, 4: 3, 6: 1, 10: 2},
'c_syllables': {1: 5, 2: 1, 3: 1, 4: 2},
'n_sents': 1,
'n_words': 9,
'n_unique_words': 8,
'n_long_words': 3,
'n_complex_words': 2,
'n_simple_words': 7,
'n_monosyllable_words': 5,
'n_polysyllable_words': 4,
'n_chars': 55,
'n_letters': 45,
'n_spaces': 8,
'n_syllables': 18,
'n_punctuations': 2}
>>> ReadabilityStats(text).flesch_reading_easy
74.93500000000003
>>> DiversityStats(text).ttr
0.8888888888888888
Любую статистику можно вывести на экран в читаемом виде:
>>> BasicStats(text).print_stats()
Статистика | Значение
------------------------------
Предложения | 1
Слова | 9
Уникальные слова | 8
Длинные слова | 3
Сложные слова | 2
Простые слова | 7
Односложные слова | 5
Многосложные слова | 4
Символы | 55
Буквы | 45
Пробелы | 8
Слоги | 18
Знаки препинания | 2
Структура проекта
- docs - документация по проекту
- ruts:
- basic_stats.py - базовые текстовые статистики
- cohesion_stats.py - статистики связности текста
- components.py - компоненты spaCy
- constants.py - основные используемые константы
- diversity_stats.py - метрики лексического разнообразия текста
- extractors.py - инструменты для извлечения объектов из текста
- morph_stats.py - морфологические статистики
- phon_stats.py - фоностатистики текста
- readability_stats.py - метрики удобочитаемости текста
- style_stats.py - SEO-метрики стиля текста
- syntax_stats.py - синтаксические статистики текста
- utils.py - вспомогательные инструменты
- datasets - наборы данных:
- dataset.py - базовый класс для работы с наборами данных
- sov_chrest_lit.py - советские хрестоматии по литературе
- stalin_works.py - полное собрание сочинений И.В. Сталина
- texts_by_grade.py - тексты с метками класса проекта Plain Russian Language
- visualizers - инструменты для визуализации текстов:
- fingerprinting.py - Литературная дактилоскопия
- highlight.py - Подсветка текста
- word_tree.py - Дерево слов
- zipf.py - Закон Ципфа
- tests - тесты, повторяющие структуру пакета
- demo - демонстрация на Gradio для Hugging Face Spaces