Функции вычисления статистик¶
Функции повторов принимают множества или списки лемм каждого предложения в порядке текста; признаки слов для класса CohesionStats дают word_info и token_info. В скобках указаны названия индексов Coh-Metrix.
Бинарный повтор¶
ruts.cohesion_stats.calc_overlap()
Вычисление доли пар предложений с общим элементом: леммой существительного (CRFNO1, CRFNOa), аргумента (CRFAO1, CRFAOa) или знаменательного слова (CRFSO1, CRFSOa). По умолчанию считаются пары соседних предложений, при adjacent=False - все пары. Для текста короче двух предложений возвращается nan.
Формула:
где \(S_i\) - множество лемм предложения \(i\), пары \((i, j)\) - соседние или все.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sets |
list[set[str]] | - |
Множества элементов каждого предложения |
adjacent |
bool | True |
Считать только соседние пары, иначе все пары |
Пример
from ruts.cohesion_stats import calc_overlap
sets = [{"кот", "окно"}, {"птица"}, {"птица", "кот"}, {"окно"}]
calc_overlap(sets)
# 0.3333333333333333
calc_overlap(sets, adjacent=False)
# 0.5
Пропорциональный повтор¶
ruts.cohesion_stats.calc_proportional_overlap()
Вычисление средней доли общих элементов в парах предложений (CRFCWO1, CRFCWOa): коэффициент Дайса множеств лемм, усредненный по соседним или всем парам; пара без элементов получает 0.
Формула:
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sets |
list[set[str]] | - |
Множества элементов каждого предложения |
adjacent |
bool | True |
Считать только соседние пары, иначе все пары |
Все повторы за один расчет¶
ruts.cohesion_stats.calc_overlaps(), ruts.cohesion_stats.dice(), ruts.cohesion_stats.Overlap
Вычисление бинарного и пропорционального повторов по соседним и всем парам предложений; возвращает Overlap(adjacent, all, prop_adjacent, prop_all) с теми же значениями, что calc_overlap и calc_proportional_overlap. Соседние пары обходятся напрямую. Число всех пар с общим элементом считается по битовым маскам вхождений элементов в предложения (блоками по 4096 предложений), сумма коэффициентов Дайса - по гистограммам длин предложений для каждого элемента: \((h W h - h \cdot \mathrm{diag}(W)) / 2\), где \(h\) - гистограмма длин предложений с элементом, \(W_{kl} = 2/(k+l)\). Время линейно по числу вхождений. Функция dice считает коэффициент Дайса двух множеств.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sets |
list[set[str]] | - |
Множества элементов каждого предложения |
Данность¶
ruts.cohesion_stats.count_given()
Вычисление количества данных элементов - лемм, уже встречавшихся раньше в тексте, включая текущее предложение. Класс CohesionStats делит количество данных знаменательных слов на их общее число (p_given); доля местоимений p_pronouns, отношение местоимений к существительным pronoun_noun_ratio и доля указательных p_demonstratives считаются по счетчикам класса.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sents |
list[list[str]] | - |
Леммы каждого предложения в порядке текста |
Повтор времени и вида¶
ruts.cohesion_stats.calc_repetition(), ruts.cohesion_stats.dominant()
Вычисление доли пар соседних предложений с одинаковым преобладающим значением признака глаголов - времени или вида (SMTEMP). dominant берет самое частое значение (при равенстве - первое); пары, где у одного из предложений нет глаголов с признаком, пропускаются, без таких пар возвращается nan. Класс CohesionStats считает tense_repetition, aspect_repetition и их среднее temporal_cohesion.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sents |
list[list[str]] | - |
Значения признака глаголов каждого предложения |
Признаки слова¶
ruts.cohesion_stats.word_info(), ruts.cohesion_stats.token_info(), ruts.cohesion_stats.WordInfo
Получение признаков слова для статистик связности - именованного кортежа WordInfo: лемма, существительное, местоимение, указательное, аргумент, знаменательное слово, время и вид. word_info берет их из первого разбора pymorphy3, token_info - из разметки spaCy (token.lemma_, token.pos_, Tense, Aspect); у токена без леммы она берется из разбора pymorphy3 с частью речи токена (ruts.utils.lemmatize).
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
word / token |
str / Token | - |
Слово или токен spaCy |
Местоимение¶
ruts.cohesion_stats.is_pronoun()
Проверка, является ли слово местоимением: NPRO (он, себя, кто) или Apro (этот, который, мой, весь) по разметке pymorphy3.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
word |
str | - |
Слово |
Знаменательное слово¶
ruts.cohesion_stats.is_content_word()
Проверка, является ли слово знаменательным: часть речи из CONTENT_POS (существительные, прилагательные, глаголы во всех формах, наречия) без граммем STOPWORD_GRAMMEMES (местоименные и вводные слова).
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
word |
str | - |
Слово |