Сравнение корпусов¶
compare_texts(a=[], b=[], a_paths=[], b_paths=[], window=null, whole_texts=false, top_n=15)
Сравнение двух корпусов по признакам стиля - для атрибуции авторства, сравнения жанров и переводов, текстов человека и модели. Тексты режутся на окна по window слов, у каждого окна считаются около 150 признаков ruTS, и распределения каждого признака в корпусах A и B сравниваются. С whole_texts сравниваются тексты целиком, без окон. Признаки и статистики сравнения - на странице ruTS Сравнение корпусов.
Текст режется подряд на окна ровно по window слов; остаток короче окна и текст короче окна в сравнение не входят. Ответ предупреждает о таких текстах и о потере больше 10 % слов корпуса на остатках, а окно поменьше теряет меньше текста. При сравнении текстов целиком ответ предупреждает, если средняя длина текстов в корпусах заметно различается: признаки, которые зависят от длины текста, различаются и из-за нее.
В каждом корпусе нужно хотя бы по два окна. Надежнее, когда в корпусах по нескольку текстов: окна одного текста не независимы, и p_holm при малом числе текстов занижено.
Ошибки - общие для инструментов и:
- корпус пуст или в его текстах нет слов;
- в корпусе меньше двух окон;
- корпус длиннее лимита
RUTS_MCP_MAX_TEXT_LENGTH: лимит действует на сумму длин его текстов.
{
"name": "compare_texts",
"arguments": {
"a": [
"Кот сидел на окне и смотрел на птиц. Птицы улетели, и кот уснул на окне. Завтра кот снова будет сидеть на окне и смотреть на птиц.",
"Кот лежал на диване и смотрел в окно. Потом кот уснул."
],
"b": [
"Собака лежала у двери и ждала хозяина. Хозяин пришел поздно.",
"Собака бегала по двору и лаяла на прохожих. Вечером собака уснула."
],
"whole_texts": true,
"top_n": 3
}
}
{
"window": null,
"n_windows": {"a": 2, "b": 2},
"n_texts": {"a": 2, "b": 2},
"features": [
{
"feature": "readability_flesch_kincaid_grade",
"mean_a": -6.079,
"mean_b": 4.281,
"median_diff": -10.36,
"ci_low": -11.62,
"ci_high": -9.102,
"cliff_delta": -1.0,
"p_holm": 1.0
},
{
"feature": "readability_consensus_grade",
"mean_a": -2.0,
"mean_b": 1.25,
"median_diff": -3.25,
"ci_low": -4.0,
"ci_high": -2.5,
"cliff_delta": -1.0,
"p_holm": 1.0
},
{
"feature": "readability_automated_readability_index",
"mean_a": -4.943,
"mean_b": 1.135,
"median_diff": -6.078,
"ci_low": -6.829,
"ci_high": -5.328,
"cliff_delta": -1.0,
"p_holm": 1.0
}
],
"warnings": [
"Средняя длина текста в A - 18 слов, в B - 10: признаки, которые зависят от длины текста (лексическое разнообразие, доли и частоты слов), различаются и из-за нее; чтобы сравнивать отрывки одной длины, сравнивайте окнами (whole_texts=false)",
"Ни одно различие не значимо после поправки Холма (p_holm < 0.05): окон в A - 2, в B - 2. Нужно больше текстов; дельта Клиффа на таком числе окон - грубая оценка",
"Еще 18 признаков с тем же модулем дельты Клиффа 1.0 - за пределами top_n: при равной дельте признаки упорядочены по относительной разности медиан; больше признаков дает top_n"
]
}
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
a |
array[string] |
[] |
Тексты первого корпуса, до 1000 |
b |
array[string] |
[] |
Тексты второго корпуса, до 1000 |
a_paths |
array[string] |
[] |
Абсолютные пути к файлам с текстами первого корпуса, вместе с a или вместо |
b_paths |
array[string] |
[] |
Абсолютные пути к файлам с текстами второго корпуса, вместе с b или вместо |
window |
integer |
null |
Размер окна в словах, от 100 до 10 000; не задано - не больше 1000 и такой, чтобы самый короткий текст делился хотя бы на два окна |
whole_texts |
boolean |
false |
Сравнивать тексты целиком, без окон; нужно хотя бы по два текста |
top_n |
integer |
15 |
Число признаков с наибольшим различием, до 200 |
Признаки¶
| Префикс | Признаки |
|---|---|
basic_ |
Доли длинных, сложных, одно- и многосложных слов, букв, пробелов и знаков, буквы и слоги на слово |
readability_ |
Формулы удобочитаемости |
diversity_ |
Меры лексического разнообразия |
morph_ |
Доли частей речи, отрицаний и кратких форм от слов (morph_pos_NOUN, morph_polarity_Neg) и значений остальных признаков внутри признака (morph_case_Gen, morph_tense_Past) |
sents_ |
Средняя длина предложения в словах, ее стандартное отклонение, коэффициент вариации и автокорреляция соседних длин |
punct_ |
Знаки по типам на 1000 слов и доля буквы ё |
cohesion_ |
Статистики связности: повторы между предложениями, местоимения, данность, повтор времени и вида, коннекторы на 1000 слов |
Результат¶
| Поле | Тип | Описание |
|---|---|---|
window |
integer |
Размер окна; null - тексты целиком |
n_windows |
object |
Число окон в A и B |
n_texts |
object |
Число текстов в A и B |
features |
array[object] |
Признаки по убыванию модуля дельты Клиффа, при равной дельте - по относительной разности медиан, с полями ниже |
warnings |
array[string] |
Корпус не на русском языке, тексты корпусов разной длины, тексты или их остатки не вошли в сравнение, в корпусе один текст, ни одно различие не значимо, признаки с той же дельтой Клиффа, что у последнего показанного, за пределами top_n |
| Поле признака | Описание |
|---|---|
feature |
Имя признака |
mean_a, mean_b |
Средние по окнам A и B |
median_diff |
Разность медиан A - B |
ci_low, ci_high |
95% бутстрэп-интервал разности медиан; бутстрэп берет целые тексты, и при одном тексте в корпусе интервал null |
cliff_delta |
Дельта Клиффа от -1 до 1: доля пар окон, где в A больше, минус доля, где меньше; по модулю от 0,147 - малый, от 0,33 - средний, от 0,474 - большой эффект |
p_holm |
p-значение U-критерия Манна-Уитни с поправкой Холма на число признаков |