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

Функции вычисления статистик

Частотность по словарю

Атрибуты coverage, mean_ipm, mean_ipm_content, mean_log_ipm, mean_log_ipm_content, mean_range и mean_dispersion класса LexicalStats считаются по статьям FreqDict для лемм текста (entries): средние берутся по словам, найденным в словаре, по всем или только по знаменательным. Средняя частотность в ipm чувствительна к служебным словам (и - 35 000 ipm, в - 31 000), поэтому для сравнения текстов удобнее логарифм частотности или средняя по знаменательным словам; последняя соответствует признаку FREQ2 формулы Соловьёва, Иванова, Солнышкиной 2023 года, значения которого в статье лежат в пределах 200-1000 (calc_sis_grade_freq).

Сюрпризал и перплексия

ruts.lexical_stats.calc_surprisal()

Вычисление среднего сюрпризала слов по униграммной модели частотного словаря. Слова вне словаря получают минимальную частоту словаря (0.4 ipm), поэтому сюрпризал определен для всех слов; чем больше в тексте редких слов, тем он выше. Перплексия текста perplexity - \(2^{H}\).

Формула:

\[ H = -\frac{1}{N} \sum_{i=1}^{N} \log_2 \frac{\mathrm{ipm}(w_i)}{10^6} \]

Параметры:

Параметр Тип По умолчанию Описание
lemmas list[str] - Леммы слов
freq_dict FreqDict - Частотный словарь

Частотные полосы

ruts.lexical_stats.get_rank(), ruts.lexical_stats.load_top_lemmas()

Получение ранга леммы по вшитому списку 10 000 самых частых лемм интернет-корпуса Лидского университета (С. А. Шаров, зеркало hingston/russian, CC BY 2.5, файл ruts/resources/sharoff_top10000.txt), None для леммы вне списка. Леммы приводятся к нижнему регистру без буквы ё, у дублей остается меньший ранг. Класс LexicalStats считает по рангам доли слов из топ-1000, 2000, 5000 и 10000 (FREQUENCY_BANDS) и вне топ-10000 - профиль частотных полос по образцу Lexical Frequency Profile; метод band_coverage дает доли по любым границам и по уникальным леммам.

Параметры:

Параметр Тип По умолчанию Описание
lemma str - Лемма

Пример

from ruts.lexical_stats import get_rank

get_rank("и"), get_rank("кот"), get_rank("фелинолог")
# (1, 2009, None)

Лексическая плотность

Атрибут lexical_density класса LexicalStats - доля знаменательных слов (существительные, прилагательные, глаголы, наречия без местоименных и вводных слов) среди всех слов; определение знаменательного слова - is_content_word для строки и CONTENT_UD_POS для Doc с разметкой.