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

Длины предложений

sentence_lengths_plot(source, window=10, inset=True, ax=None, labels=None, sents_extractor=None, words_extractor=None)

Кривая длин предложений - ритм текста: длина каждого предложения в словах по порядку, скользящее среднее по window предложениям и врезка с гистограммой длин. Чередование коротких и длинных предложений - редакторский признак живого текста, ровная кривая - монотонного. Функция принимает оси ax и возвращает Axes.

Это функции ядра anyTS; для строки ruTS по умолчанию передает русские SentsExtractor и WordsExtractor, параметры sents_extractor и words_extractor заменяют их. Подписи по умолчанию - русские из ruts.constants.VISUALIZER_LABELS; labels задает подписи поверх них.

Кривая первого текста набора данных StalinWorks:

from ruts.datasets import StalinWorks
from ruts.visualizers import sentence_lengths_plot

text = next(StalinWorks().get_texts(limit=1))
sentence_lengths_plot(text, window=10)

ruts

Параметры

Параметр Тип По умолчанию Описание
source str / Doc / Iterable[int] - Текст, объект Doc или длины предложений (список, массив numpy, Series)
window int 10 Окно скользящего среднего в предложениях
inset bool True Показывать врезку с гистограммой
ax Axes None Оси для графика
labels dict[str, str] None Подписи поверх подписей по умолчанию: title, xlabel, ylabel, length (кривая), average (строка формата с window), distribution (врезка)
sents_extractor SentsExtractor None Инструмент для извлечения предложений строки; по умолчанию экстрактор предложений библиотеки
words_extractor WordsExtractor None Инструмент для извлечения слов предложения строки; по умолчанию экстрактор слов библиотеки

Источник и экстракторы дают ошибки sentence_lengths, а отсутствие предложений - SourceError; window, который не целое число не меньше единицы, подписи, которые отвергает merge_labels, и ax, который не Axes matplotlib, дают ParameterError.

Длины предложений

sentence_lengths(source, sents_extractor=None, words_extractor=None)

Длины предложений в словах по порядку: строка делится на предложения экстрактором предложений, каждое предложение - на слова экстрактором слов; предложения Doc берутся из его границ, а слова - из его токенов без знаков препинания и символов, причем части дефисного слова склеиваются (во-первых - одно слово); Doc без границ или с частичными границами (has_sents) считается как его текст, экстракторами. Предложения без слов пропускаются. Готовые длины (неотрицательные целые числа в последовательности или итераторе) используются как есть. Аргументы - те же, что у sentence_lengths_plot.

Таблица, множество, словарь, байты, длина, которая не целое число, и экстрактор другого типа дают SourceTypeError, отрицательная длина - SourceError.

from ruts.visualizers import sentence_lengths

sentence_lengths("Кот спит. Где пёс? - Ест, - сказала она.")
sentence_lengths(text)[:5]
[2, 2, 3]
[66, 9, 16, 9, 21]