Russian Texts Statistics
Project description
Russian Texts Statistics (ruTS)
Библиотека для извлечения статистик из текстов на русском языке.
Установка
Выполнить:
$ pip install ruts
Зависимости:
- python 3.6+
- nltk
- pymorphy2
- spacy
Библиотека по умолчанию использует токенизатор от nltk, которые необходимо предварительно скачать:
import nltk
nltk.download('punkt')
Функционал
Основной функционал базируется на адаптированных для русского языка статистиках библиотеки textacy и позволяет работать как непосредственно с текстами, так и с подготовленными Doc-объектами библиотеки spaCy.
Извлечение объектов
Библиотека позволяет создавать свои инструменты для извлечения предложений и слов из текста, которые затем можно использовать при вычислении статистик.
Пример:
import re
from nltk.corpus import stopwords
from ruts import SentsExtractor, WordsExtractor
text = "Не имей 100 рублей, а имей 100 друзей"
se = SentsExtractor(text, tokenizer=re.compile(r', '))
print(tuple(se.extract()))
('Не имей 100 рублей', 'а имей 100 друзей')
bs.print_stats()
we = WordsExtractor(text, use_lexemes=True, stopwords=stopwords.words('russian'), filter_nums=True, ngram_range=(1, 2))
print(we.extract())
('иметь', 'рубль', 'иметь', 'друг', 'иметь_рубль', 'рубль_иметь', 'иметь_друг')
Базовые статистики
Библиотека позволяет извлекать из текста следующие статистические показатели:
- количество предложений
- количество слов
- количество уникальных слов
- количество длинных слов
- количество сложных слов
- количество простых слов
- количество односложных слов
- количество многосложных слов
- количество символов
- количество букв
- количество пробелов
- количество слогов
- количество знаков препинания
- распределение слов по количеству букв
- распределение слов по количеству слогов
Пример:
from ruts import BasicStats
text = "Существуют три вида лжи: ложь, наглая ложь и статистика"
bs = BasicStats(text)
bs.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_chars': 55,
'n_complex_words': 2,
'n_letters': 45,
'n_long_words': 3,
'n_monosyllable_words': 5,
'n_polysyllable_words': 4,
'n_punctuations': 2,
'n_sents': 1,
'n_simple_words': 7,
'n_spaces': 8,
'n_syllables': 18,
'n_unique_words': 8,
'n_words': 9}
bs.print_stats()
Статистика | Значение
------------------------------
Предложения | 1
Слова | 9
Уникальные слова | 8
Длинные слова | 3
Сложные слова | 2
Простые слова | 7
Односложные слова | 5
Многосложные слова | 4
Символы | 55
Буквы | 45
Пробелы | 8
Слоги | 18
Знаки препинания | 2
Метрики удобочитаемости
Библиотека позволяет вычислять для текста следующие метрики удобочитаемости:
- Тест Флеша-Кинкайда
- Индекс удобочитаемости Флеша
- Индекс Колман-Лиау
- Индекс SMOG
- Автоматический индекс удобочитаемости
- Индекс удобочитаемости LIX
Коэффициенты метрик для русского языка были взяты из работы исследователей проекта Plain Russian Language, которые получили их на основе специально подобранных текстов с предварительными возрастными пометками.
Пример:
from ruts import ReadabilityStats
text = "Ног нет, а хожу, рта нет, а скажу: когда спать, когда вставать, когда работу начинать"
rs = ReadabilityStats(text)
rs.get_stats()
{'automated_readability_index': 0.2941666666666656,
'coleman_liau_index': 0.2941666666666656,
'flesch_kincaid_grade': 3.4133333333333304,
'flesch_reading_easy': 83.16166666666666,
'lix': 48.333333333333336,
'smog_index': 0.05}
rs.print_stats()
Метрика | Значение
--------------------------------------------------
Тест Флеша-Кинкайда | 3.41
Индекс удобочитаемости Флеша | 83.16
Индекс Колман-Лиау | 0.29
Индекс SMOG | 0.05
Автоматический индекс удобочитаемости | 0.29
Индекс удобочитаемости LIX | 48.33
Структура проекта
- ruts:
- basic_stats.py - базовые текстовые статистики
- constants.py - основные используемые константы
- extractors.py - инструменты для извлечения объектов из текста
- readability_stats.py - метрики удобочитаемости текста
- utils.py - вспомогательные инструменты
- tests:
- test_basic_stats.py - тесты базовых текстовых статистик
- test_extractors.py - тесты инструментов для извлечения объектов из текста
- test_readability_stats.py - тесты метрик удобочитаемости текста
Авторы
- Шкарин Сергей (kouki.sergey@gmail.com)
- Смирнова Екатерина (ekanerina@yandex.ru)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.