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

Russian Texts Statistics (ruTS)

ruts

ruTS считает по русскому тексту то, для чего обычно приходится собирать несколько разрозненных инструментов: базовые статистики, метрики удобочитаемости и лексического разнообразия, морфологические признаки. Функционал основан на адаптированных для русского языка статистиках библиотеки textacy.

Работать можно как с обычными строками, так и с готовыми Doc-объектами spaCy - каждая статистика доступна и как отдельный класс, и как компонент пайплайна spaCy.

Попробовать без установки можно в демо на Hugging Face Spaces: вставьте текст и получите класс удобочитаемости, метрики, графики и подсветку фрагментов.

Возможности

Установка

Требуется 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