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

Сравнение корпусов

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-критерия Манна-Уитни с поправкой Холма на число признаков