К содержимому
LoveStat

Методика: как LoveStat считает метрики переписки

LoveStat разбирает переписку двумя разными механизмами. Все числа и даты — сообщения, признания, скорость ответа, ссоры, примирения — считает наш код прямо в вашем браузере: словари ищут точные формы слов, а пороги и формулы записаны заранее и одинаковы для всех. Языковая модель участвует только в платном разборе и только как автор формулировок: считать ей не доверяют, все цифры она получает готовыми. Ниже — конкретные правила, пороги и то, чего эти метрики не означают.

Что считает движок, а что пишет нейросеть

Разделение жёсткое, и это главное обещание продукта. Числа порождает программа на вашем устройстве — тот же самый код, что мы гоняем в тестах. Один и тот же файл всегда даёт один и тот же результат: в расчётах нет ни случайности, ни температуры, ни подбора формулировок. Бесплатный анализ чата модель не трогает вообще — он работает даже с выключенным интернетом.

Считает код

  • Сколько сообщений, слов и символов у каждого
  • Скорость ответа: медиана и девяностый процентиль
  • Инициатива, последнее слово, повисшие сообщения
  • Попадания в словарные категории и по смайликам
  • Даты первых признаний, ссор, примирений и тёплых дней
  • Тяжесть каждой ссоры и уровень каждого счастливого дня

Пишет модель — только в психологическом разборе (сейчас не оказывается)

  • Портрет пары и профили обоих словами
  • Разбор конкретных эпизодов: что происходило и как это читается
  • Цитаты, выбранные из переписки как показательные
  • Флаги, вопросы паре и рекомендации
  • Названия и подводки — то, что человек читает как текст

В разборе психологом работают две модели каскадом. Дешёвая читает переписку кусками по четырнадцать тысяч знаков и возвращает выжимки: наблюдения, кандидатов в цитаты, вехи вроде переезда или свадьбы. Сильная модель переписку уже не видит — она получает только эти выжимки и блок фактов от движка. Первое правило её задания звучит буквально так: все числа и даты брать только из блока фактов, самому не считать и не выдумывать. Каждый флаг обязан сослаться на конкретный факт или эпизод.

Перед отправкой текст обезличивается в браузере: имена участников и их формы заменяются на «Имя1» и «Имя2», телефоны, почты, ссылки, юзернеймы и длинные числа — на плейсхолдеры. Что именно уйдёт, вы видите заранее. Как устроена приватность целиком, написано на отдельной странице — что происходит с вашей перепиской.

Как устроены словари

Слова ищутся по точным формам и по явно заданным началам слов — «солнышк» плюс что угодно дальше, но не короче четырёх букв. Никакого приведения к основе на этом уровне нет, и это осознанный откат назад. Стеммер Портера, которым принято нормализовать русский текст, склеивает «прости» с «просто», «зайку» с предлогом «за», а «попку» с «попить»: на реальных переписках такие категории считались в разы выше правды. Стеммер у нас остался ровно в одном месте — в топе частых слов, где «люблю», «любит» и «любимая» честно должны быть одним словом.

Буква «ё» приводится к «е», устойчивые выражения ищутся отдельно — целой фразой по всему сообщению, потому что «доброе утро» словом «утро» не поймать. Сообщение засчитывается в категорию один раз, сколько бы слов из неё в нём ни было: иначе одно эмоциональное сообщение перевесило бы неделю спокойного общения. Плата за точность — недосчёт: редкая форма, которой нет в словаре, проходит мимо. Лучше недосчитать своё, чем посчитать чужое.

Четырнадцать словарных категорий

  • Признания

    «люблю», «обожаю», «родная» — 28 форм и 2 фразы

  • Ласковые обращения

    «солнышко», «зайка», «котик» — 41 форма; самая надёжная категория, так почти не говорят с посторонними

  • Восхищение

    комплименты и восторги, 22 формы; «круто» и «супер» часто относятся к новости, а не к человеку

  • Благодарность

    «спасибо», «спс», «выручил» — 11 форм, включая сокращения

  • Поддержка

    14 форм и 8 фраз: «я рядом», «всё будет хорошо», «не переживай»

  • Скучаю

    4 формы и 5 фраз; одиночное «жду» не считаем — оно чаще про доставку и автобус

  • Флирт и секс

    самый большой список: 191 форма и 44 фразы. Сам список не показывается нигде — ни в отчёте, ни в выгрузке

  • Доброе утро и спокойной ночи

    ловится целыми фразами: слово «утро» само по себе чаще про планы, чем про пожелание

  • Язык «мы»

    «мы», «нам», «наше» — 25 форм; считается точно, эффект в исследованиях слабый, но метрика честная

  • Планы и быт

    24 формы: магазин, ужин, ключи, счёт. Фон, на котором видно всё остальное

  • Претензии

    «достал», «сколько можно»; «всегда» и «никогда» засчитываются только в связке с «ты»

  • Извинения

    19 форм; ради них словарь и построен на формах: «прости» и «просто» здесь разные слова

  • Ревность

    самая ненадёжная категория: 5 форм и 4 связки. «Покажи» и «ты где» намеренно не берём

  • Крепкое словцо

    18 форм; наружу отдаётся только доля сообщений, сам список не показывается

Рядом со словарями

28 слов-паразитов, 181 служебное слово в стоп-листе, 16 частей тела и 5 групп смайликов: любовь, флирт, смех, нейтральные, негатив. Скобки тоже считаются: «)))» идут в смех, «(((» — в грусть. В отчёт попадают двадцать самых частых смайликов пары.

Части тела — только про партнёра

Обычные слова засчитываются, лишь если рядом стоит обращение на «ты»: три слова до и два после. «Твои глаза» — да, «болит спина» — нет. Ласковые и откровенные формы считаются сами по себе: они и так почти всегда про партнёра. Оценка заведомо заниженная.

Признание — отдельное правило

Дата первого «люблю» считается строже категории: нужно обращение к партнёру не дальше трёх слов. «Не люблю» и «люблю тебя целовать» не в счёт. Короткое «Люблю» засчитывается только с сердечком — на живой переписке оно оказалось ответом про еду.

Как определяются ссоры

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

Претензии

вес 1,6

«достал», «сколько можно», «ты вечно», «опять ты»

Оправдания

вес 1,4

«я не виноват», «а ты сам», «это не я», «неправда»

Обида

вес 1,8

«мне обидно», «ты меня обидел», «до слёз»

Уход из разговора

вес 2,2

«отстань», «проехали», «делай что хочешь», «мне всё равно»

Резкость

вес 3

переход на личности, «что за бред», «как маленький»

Угрозы расстаться

вес 4

«расстанемся», «всё кончено», «ухожу», «так больше нельзя»

Когда день становится ссорой

Достаточно любого из трёх условий. Главное в них — взаимность: спор нужен вдвоём.

  1. 1

    Четыре маркера и оба голоса

    За день набралось четыре сообщения с маркерами, и они есть у обоих. Односторонний всплеск ссорой не считается: это плохое настроение у одного.

  2. 2

    Короткий злой день

    Сообщений за день мало, но маркеров хотя бы по два с каждой стороны и они плотнее, чем два на сотню сообщений. Так ловится вечер, когда просто перестали разговаривать.

  3. 3

    Прозвучало тяжёлое

    Два и больше сообщений с угрозой расстаться или резкостью при трёх маркерах за день. Здесь взаимность не нужна: такие слова весят сами по себе.

Соседние дни склеиваются в один эпизод: ссора редко умещается в календарные сутки. Тип эпизода — не первый маркер, а самая весомая группа за все его дни: количество сообщений умножается на вес группы. Поэтому три «отстань» проигрывают одному «всё кончено», и эпизод называется «Угрозы расстаться».

Вес дня складывается из суммы маркеров плюс сорок процентов веса за каждый грустный смайлик и каждое сообщение капсом — капсом считается текст длиннее трёх букв, где семь из десяти заглавные. Дальше начинается самое важное: тяжесть эпизода относительная. Вес делится на медиану веса ваших же ссор. Меньше медианы — лёгкая, до двух медиан — заметная, выше — крупная.

Абсолютной шкалы напряжения не существует. Одна пара ругается словом «ну ладно» и неделю не разговаривает, другая перебрасывается «дурак» по три раза в день и через час идёт в кино. Если бы мы поставили общий порог, первая пара выглядела бы идеальной, а вторая — катастрофой, и обе оценки были бы неправдой. Сравнение с собственной медианой отвечает на честный вопрос: этот эпизод для вас обычный или выбивающийся.

Примирение ищется в семи днях после эпизода: берётся первый день, когда вернулись любовные смайлики или прозвучали извинения. Первым помирился тот, у кого этого в тот день больше. Разрешение здесь — сутки, не часы: «12 часов до примирения» означает половину дня, а не замер по минутам.

Если за неделю не вернулось ничего, у эпизода нет исхода — так и написано: «чем закончился эпизод, по переписке не видно». Раньше в этом месте стояло значение по умолчанию, и ненайденное примирение показывалось как измеренное («вернулись через 24 часа, первой — она»). Теперь такие эпизоды не попадают ни в медиану времени до примирения, ни в доли «кто мирится первым», ни в счёт эмоциональных качелей, а их количество показывается рядом с этими цифрами. Помириться вы могли голосом или при встрече — мы про это просто ничего не знаем и не станем додумывать.

Скорость ответа: что вообще считается ответом

Считается не каждый ответ подряд, а ответ на «зов» — сообщение, которым один написал в тихий чат после перерыва больше часа. Внутри живой переписки ответ за двадцать секунд не говорит ни о чём, кроме того, что человек сейчас в телефоне, и такой пинг-понг в скорость не идёт.

Ответа ждём шесть часов — тот же порог, по которому сообщение считается повисшим. Всё, что пришло внутри этих шести часов, идёт в счёт целиком: ответ через три часа так и остаётся тремя часами, никакого потолка сверху нет. Если ответа не было вовсе, зов не превращается в «очень медленный ответ» — это уже не ответ, а новый разговор, поэтому такой зов уходит в отдельный счёт «остались без ответа», и его число стоит прямо под скоростью.

Разделение это не косметическое. Пока длинные паузы обрезались получасом, а ответ позже часа движок вообще переставал считать ответом, в выборку попадали почти одни быстрые ответы: человек, отвечающий через пять часов, выглядел отвечающим за тридцать минут, а занижена скорость была сразу у всех. Правило простое — то, что портит картину, не выбрасывается, а называется своим именем.

В разборе показываются медиана и девяностый процентиль. Медиана — это «обычно»: половина ответов приходит быстрее неё, половина дольше. Среднее слишком чувствительно к одной ночной паузе, поэтому им подписана только плитка за выбранный период — медиану по произвольному куску из дневных сумм не собрать, и мы пишем прямо, что там среднее. Если за выбранный период ответов на зов не набралось ни одного, вместо числа стоит «нет данных»: ноль секунд читался бы как мгновенный ответ, то есть ровно наоборот.

Как определяются счастливые дни

Это зеркало ссор, и устроено оно похоже, только через долю. Для каждой из десяти тёплых категорий сначала считается обычная доля этой пары: сколько таких сообщений приходится на все активные дни. Потом для каждого дня берётся его собственная доля, из неё вычитается обычная, разница умножается на вес категории. Сумма превышений и есть градус радости дня.

  • Смешной день

    вес 3,2

    партнёр ответил смехом в течение десяти минут

  • День комплиментов

    вес 2,6

    восхищение

  • День благодарности

    вес 2,4

    благодарность

  • День флирта

    вес 2,4

    флирт и секс

  • День признаний

    вес 2,1

    любовные смайлики

  • День планов вдвоём

    вес 1,7

    планы и быт

  • День поддержки

    вес 1,6

    поддержка

  • День общих фото

    вес 1,6

    фотографии

  • День нежности

    вес 1,5

    ласковые обращения

  • День тоски друг по другу

    вес 1,4

    «скучаю»

Доля, а не количество — принципиально. Если считать по количеству, весь список заберёт медовый месяц: тогда сообщений просто больше, и тёплых слов в штуках тоже больше. День, когда вы написали друг другу четыреста сообщений, — это активный день, а не обязательно счастливый. А вот вторник на третьем году, где каждое пятое сообщение оказалось благодарностью, — событие, и его стоит заметить.

Слишком тихие дни выбрасываются: нужно хотя бы восемь сообщений и не меньше половины от вашего обычного дня, иначе три ласковых слова из пяти дадут стопроцентную долю. Дни с тремя и более маркерами ссоры не рассматриваются вовсе. Из оставшихся берутся двадцать два лучших, соседние склеиваются в эпизод, а уровень дня — снова относительный: сравнение с медианой ваших же тёплых дней. Название дню даёт та категория, что выбилась сильнее прочих, а ведущим считается тот, чей вклад в этот день по весам оказался больше.

Чего эти метрики не значат

Самый важный раздел на странице. Всё описанное выше — это подсчёт слов в текстовом файле, и у него есть жёсткая граница. За ней начинаются вещи, которых в переписке нет и которые мы не измеряем даже приблизительно.

Силу чувств измерить нельзя

Всё, что здесь считается, — это слова в одном чате. Ни одна цифра не говорит, кто любит сильнее: она говорит, кто чаще пишет об этом текстом.

Кто-то любит молча

Голосом, делом, присутствием рядом. Человек с двадцатью признаниями за год может быть тем, кто три года чинит, возит и ждёт. Черта в отчёте — про переписку, а не про характер.

Робот не слышит интонацию

«Отстань» в шутку он засчитает всерьёз, а ссору, где оба демонстративно молчали, не увидит вовсе: маркеров нет — значит, дня нет.

Это снимок, а не наблюдение

Разбор строится один раз по файлу, который вы открыли сами. Мы не сравниваем чаты между собой и не помогаем проверять партнёра. Истории отчётов у нас нет: разбор остаётся только в вашем браузере, а ссылка для передачи хранится 30 дней, у полного разбора — год, и потом удаляется.

Это не диагностика

Ни диагнозов, ни прогнозов, ни поиска «точки, где всё сломалось». В платном разборе слова «абьюз» и «токсичный», как и названия расстройств, запрещены прямо в задании модели.

Маленький перекос — это шум

Если разница между двумя меньше десятой доли, победителя мы не назначаем. Половина «побед» в таких сравнениях — случайность, и честнее сказать «поровну».

Поэтому в отчёте рядом с числами стоят оговорки, а к каждому флагу приложено другое объяснение и вопрос, который стоит задать друг другу. Флаг — это наблюдение, а не приговор: «мирится всегда один и тот же» может значить и то, что второму нужно больше времени остыть, и что обоих это устраивает. Цифра называет повод для разговора, а разговариваете вы сами.

Ограничения метода

Где разбор ломается или становится хуже — по-честному, до того как вы загрузите файл. Инструкции по выгрузке для каждого мессенджера собраны на странице как выгрузить чат.

  • Короткая переписка

    Файл принимается от пятидесяти сообщений, но данных достаточно мы считаем от 90 дней и 2000 сообщений. На коротком чате медианы прыгают, ссор может не набраться совсем, а тёплые дни не с чем сравнивать: точка отсчёта берётся из вашей же переписки.

  • Групповые чаты

    Не анализируем принципиально: продукт про двоих. Третий участник в выгрузке отмечается как «не учитывать», и его сообщения выпадают из всех расчётов — включая ритм и паузы.

  • Переезды между мессенджерами

    Разбор собирается из нескольких выгрузок сразу: Telegram, WhatsApp, ВКонтакте, Instagram — аккаунты вы сами сводите к двум людям. Но одинаковые сообщения не склеиваются: если один и тот же чат выгружен дважды, в HTML и в JSON, он посчитается дважды.

  • Голосовые вместо текста

    У голосового нет текста, и все словарные показатели у того, кто говорит, а не пишет, занижены. Мы делим попадания на число сообщений с текстом, а не на все подряд, но полностью это не лечится. Минуты голосовых считаются только в Telegram: WhatsApp отдаёт их без длительности.

  • Пересланные посты и мемы

    В экспорте Telegram текст пересланного сообщения принадлежит тому, кто переслал. Пара, которая живёт обменом постами, получит завышенное число слов и случайные попадания в словари.

  • Слова и смайлики вне словаря

    Смайлик, которого нет ни в одном из пяти списков, не учитывается вовсе. Новое ласковое прозвище, придуманное вами вдвоём, движок не поймёт — он умеет считать только то, что в него заранее записано.

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

Методика меняется вместе с кодом

Все пороги отсюда — те же, что записаны в движке. Меняем правило в коде — правим и текст здесь, с датой обновления сверху. Нашли расхождение — напишите на hello@lovestat.ru. Короткие ответы на частые вопросы — в разделе вопросов.

Проверьте методику на своей переписке

Базовый разбор бесплатный, полный — 150 ₽. Файл читается в браузере и никуда не отправляется.

LoveStat — это развлечение, а не психологическая диагностика.

Страница обновлена

Какой разбор сделать?

Четыре разных взгляда на ваши отношения

Переписка никуда не отправляется: анализ чата считается прямо в браузере.