Тексты с метками класса¶
ruts.datasets.TextsByGrade
Описание¶
Модуль для работы с набором данных текстов с метками класса проекта Plain Russian Language Ивана Бегтина. Набор содержит 68 текстов из репозитория проекта, распространяемых под лицензией CC0 1.0: 55 из списка TEXT_LIST, на которых подбирались коэффициенты формул удобочитаемости для русского языка из пресета plainrussian класса ReadabilityStats, и 13 из папок репозитория, не вошедших в список. Метка - класс школы или год обучения:
| Метка | Тексты | Количество |
|---|---|---|
| 1 | сказки, Бианки, Гайдар, Толстой | 11 |
| 3-4 | Троепольский, Паустовский, Рыбаков, Короленко, Григорович | 10 |
| 5-9 | Кэрролл, Шукшин, Каверин, Толстой, Астафьев, Солженицын | 12 |
| 10-11 | Короленко, Бунин, Куприн, Платонов, Горький, Распутин, Довлатов | 18 |
| 12 | статья Википедии | 1 |
| 15 | газетная статья | 1 |
| 17 | нормативные и деловые документы: законы, регламенты, новости правительства | 15 |
Метки 12-14 соответствуют 1-3 курсам вуза, 15-17 - 4-6 курсам, как в таблице grade_to_age. Абзацы текстов разделены переводом строки, жесткие переносы строк исходных файлов с lib.ru убраны.
Проверка формул удобочитаемости¶
Набор используется в тестах библиотеки для проверки формул удобочитаемости: корреляция Спирмена значений формул с метками класса на всех 68 текстах должна быть не ниже 0.7, а сводный класс - не ниже 0.8. Значения при коэффициентах по умолчанию:
| Формула | ρ Спирмена | Средняя абсолютная ошибка, классов |
|---|---|---|
| Тест Флеша-Кинкайда | 0.79 | 4.0 |
| Индекс удобочитаемости Флеша | −0.79 | - |
| Индекс Колман-Лиау | 0.77 | 3.0 |
| Индекс SMOG | 0.81 | 4.0 |
| Автоматический индекс удобочитаемости | 0.79 | 3.9 |
| Индекс удобочитаемости LIX | 0.81 | - |
| Индекс удобочитаемости RIX | 0.77 | - |
| Формула Соловьёва, Иванова, Солнышкиной | 0.77 | 4.7 |
| Формула Мацковского | 0.76 | - |
| Индекс Дейла-Чейла | 0.82 | 3.8 |
| Индекс Ганнинга | 0.80 | 3.9 |
| Сводный класс | 0.81 | 3.6 |
Средний сводный класс растет с меткой: 3.0 для 1 класса, 5.8 для 3-4 классов, 6.5 для 5-9, 7.4 для 10-11 и 21.8 для документов с метками 12-17. Большая ошибка на документах ожидаема: формулы класса откалиброваны на школьных текстах, а метка 17 условна.
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
data_dir |
str | DEFAULT_DATA_DIR.joinpath("texts") |
Путь к директории с набором данных |
Атрибуты¶
| Атрибут | Тип | Описание |
|---|---|---|
labels |
tuple[str] | Кортеж уровней сложности текстов |
Методы¶
download¶
Выполняет загрузку набора данных из сети и извлечение файлов.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
force |
bool | - |
Загрузить набор данных, даже если он уже загружен |
Пример
Код:
# Загрузка библиотек
from ruts.datasets import TextsByGrade
# Создание объекта набора данных
tbg = TextsByGrade(data_dir=".")
# Загрузка набора данных
tbg.download(force=True)
# Отображение информации о наборе данных
tbg.info
Результат:
{'Наименование': 'texts_by_grade',
'author': 'Бегтин И.В.',
'description': 'Тексты с метками класса проекта Plain Russian Language',
'license': 'CC0 1.0',
'url': 'https://github.com/infoculture/plainrussian'}
get_texts¶
Выполняет извлечение текстов (без заголовков) из набора данных.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
grade |
int | - |
Уровень сложности текстов (1, 3-12, 15, 17) |
subject |
str | - |
Наименование текстов |
min_len |
int | - |
Минимальная длина текста (в символах) |
max_len |
int | - |
Максимальная длина текста (в символах) |
limit |
int | - |
Количество текстов |
Пример
Код:
# Загрузка библиотек
from ruts.datasets import TextsByGrade
# Создание объекта набора данных
tbg = TextsByGrade()
# Отображение извлеченных текстов
for i in tbg.get_texts(grade=1, subject="Ряба", limit=1):
print(i[:105])
Результат:
Жил себе дед да баба, у них была курочка Ряба; снесла под полом яичко - пестро, востро, костяно, мудрено!
get_records¶
Выполняет извлечение записей (с заголовками) из набора данных. Поля записи: grade - уровень сложности, subject - наименование текста, source - адрес источника (пустая строка у двух текстов, для которых адрес не опубликован: «Золотой ключик» и доклад Госсовета), text - текст, file - путь к файлу.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
grade |
int | - |
Уровень сложности текстов (1, 3-12, 15, 17) |
subject |
str | - |
Наименование текстов |
min_len |
int | - |
Минимальная длина текста (в символах) |
max_len |
int | - |
Максимальная длина текста (в символах) |
limit |
int | - |
Количество текстов |
Пример
Код:
# Загрузка библиотек
from ruts import ReadabilityStats
from ruts.datasets import TextsByGrade
# Создание объекта набора данных
tbg = TextsByGrade()
# Сводный класс для текстов 17 уровня
for record in tbg.get_records(grade=17, limit=3):
print(record["subject"][:40], round(ReadabilityStats(record["text"]).consensus_grade, 1))
Результат:
«Об утверждении Административного реглам 27.0
Доклад Рабочей группы Государственного с 21.5
Закон о ФКС 34.5