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

Литературная дактилоскопия

fingerprinting(texts, segment_len=10, metric=None, x_size=800, y_size=600, cmap='PuOr', ax=None, labels=None)

Визуализация литературной дактилоскопии (Keim и Oelke 2007).

Каждый текст режется на сегменты по segment_len слов со скользящим шагом в десятую часть сегмента, и для каждого сегмента считается мера лексического разнообразия. Все сегменты длиной segment_len слов, поэтому значения сопоставимы: если шаг оставляет слова после последнего сегмента, еще один заканчивается вместе с текстом, а текст не длиннее сегмента - один сегмент.

Текст - блок квадратов в порядке его сегментов, по строкам, высотой 8 строк или в один столбец, если сегментов не больше 8; блок шире области визуализации переносится на строки этой ширины. Блоки идут слева направо и переносятся в пределах области шириной 2 · x_size, которая растет вниз от 2 · y_size, если блокам нужно больше высоты. Цветовая шкала - от наименьшего до наибольшего конечного значения по всем текстам; неопределенные значения (nan на слишком коротких для меры сегментах) и пустые клетки блока - светло-серые, в отличие от любого значения, включая ноль.

Это функция ядра anyTS с русским заголовком из ruts.constants.VISUALIZER_LABELS по умолчанию, labels заменяет его; в роли metric выступают меры лексического разнообразия ruTS - функции списка слов, например calc_ttr или calc_simpson_index.

Визуализация 100 текстов набора данных SovChLit:

from ruts import WordsExtractor
from ruts.datasets import SovChLit
from ruts.diversity_stats import calc_simpson_index
from ruts.visualizers import fingerprinting

we = WordsExtractor(lowercase=True)
words = [we.extract(text) for text in SovChLit().get_texts(limit=100)]
ax = fingerprinting(words, metric=calc_simpson_index, x_size=1000, y_size=800)
ax.figure.savefig("fingerprinting.png")

ruts

Параметры

Параметр Тип По умолчанию Описание
texts list[list[str]] - Список списков слов
segment_len int 10 Размер сегмента
metric Callable None Функция меры лексического разнообразия; по умолчанию calc_ttr
x_size int 800 Половина ширины области визуализации, больше 25 (отступа между блоками)
y_size int 600 Половина высоты области визуализации, которая растет, если блокам нужно больше
cmap str 'PuOr' Цветовая карта
ax Axes None Оси matplotlib для графика; если не заданы, создается фигура 15×10
labels dict[str, str] None Подписи поверх подписей по умолчанию: title

Функция возвращает оси Axes с визуализацией в равном масштабе осей, чтобы квадраты оставались квадратами; фигура - ax.figure. Тексты, которые не список списков строк, и metric, которую нельзя вызвать, дают SourceTypeError, список без текстов или текст без слов - SourceError. segment_len или y_size, который не целое число больше нуля, x_size, который не целое число больше 25, неизвестная cmap, подписи, которые отвергает merge_labels, и ax, который не Axes matplotlib, дают ParameterError.