github ilyautov/humanizer-ru v3.29.0
v3.29.0 «Почерк модели»

latest release: v3.30.0
6 hours ago

Скилл сам находит рабочий сканер

  • Если scan.py падает без razdel и pymorphy3, а uv установлен, агент запускает uvx ru-humanizer с теми же аргументами и получает балл, вместо того чтобы править вслепую (#129, спасибо @vdovikovva).

Сканер видит современный слоп

  • Две новые категории, «Почерк модели» и «Обвязка чата». Каталог сканера собирался на старом слопе («в современном мире», «играет ключевую роль»), и пост свежей модели получал 89-98 «чисто». Новые обороты добыты сравнением 2 110 машинных текстов (GPT-4o, o3, GigaChat-Max, YandexGPT-5, Qwen2.5, DeepSeek-R1, Llama-3.3, Gemma, Claude) с 1 900 человеческими: «подчёркивает», «свидетельствует о», «это не просто», «что делает его», «X — это Y» и ещё 17. Обвязка чата: «Хотите, чтобы я…», «[Ваше имя]», «Вариант 1», эмодзи вместо маркеров списка, подзаголовки Markdown.
  • Штраф по числу разных оборотов, а не по плотности. Один оборот бывает и у человека и стоит 3 балла, каждый следующий 10 (потолок 24); след чата 10 (потолок 20). В жанрах news, academic, legal и fiction почерк модели не считается.
  • Итог на корпусе: пойманного слопа 53% → 67%, у Claude на отложенной выборке 28% → 85%, у GPT-5.6 30% → 55%; ложных тревог на людях +1 процентный пункт. Замер и отложенная выборка: eval/MODERN-SLOP.md, корпус собирается eval/gen_modern_slop.py.
  • Сайт, расширение и scan.py считают одинаково: правила уходят в браузер экспортом, паритет 66/66. Тест паритета больше не даёт ложный разрыв, когда питоновский счёт зажат в ноль.
  • Лексическое разнообразие: штраф, когда слова почти не повторяются. MATTR по словоформам (окно 40, первые 200 кириллических слов, текст от 100 слов): у людей 0,90 ± 0,04, выше 0,955 балл за каждую тысячную, потолок 15. Ловит GigaChat-Max (пропуск «чисто» 34% → 23%) и o3 (47% → 34%); GPT-5.6 не сдвигает, его тексты внутри человеческого разброса. Ложных тревог на Пикабу +0,7 п.п., на людях LLMTrace без изменений. В жанрах news, academic и legal не считается. Токенизация повторена в браузере бит в бит, паритет MATTR проверяется точным равенством. Замер: eval/MODERN-SLOP.md.
  • Гейт на современном слопе в CI. scripts/test_modern_slop.py гоняет фикстуру eval/corpus/modern: 30 наших генераций Claude Haiku, Sonnet, GPT-5.6, Gemma3 27B и Qwen2.5 7B на обычные задания. Сборка падает, если не «чисто» меньше 60% фикстуры (сейчас 73%, прежний сканер 33%), медиана score выше 80 (сейчас 73, было 91,5) или Википедия и литературная стилизация в своём жанре перестают быть «чисто». Раньше в гейтах стоял только карикатурный eval/corpus/raw, и ослепший сканер проходил зелёным.
  • Браузер считает ритм как razdel. Делитель предложений и счёт слов в docs/scan.js перенесены из razdel правило в правило. Прежний упрощённый делитель на свежих текстах моделей принимал «НДФЛ.» за инициал, резал пункт «2.» в отдельное предложение, считал URL в ссылке одним словом, и в 5 прогонах из 90 сайт показывал другую полосу, чем scan.py. Фикстура eval/corpus/modern вошла в тест паритета, ритм теперь сверяется точно: 56 текстов × 3 жанра, разрыв score 0.

Скилл по итогам проверки на современном слопе

  • Новые категории дошли до SKILL.md. Модель не открыла каталог ни в одном из 25 прогонов, поэтому обвязка чата («Вот вариант:», «Вариант 1», предложение доработки, советы после текста) теперь в группе A таблицы приоритетов, частые обороты почерка модели в группе C. Плейсхолдер «[Имя]» не заполняется, а перечисляется пользователю.
  • Оговорки мнения и оговорки факта разведены. «Может показаться» снимается, «может быть», «обычно», «примерно», «от 5000», «не обязательно» стоят под факт-замком: три из четырёх смысловых ошибок прошлого прогона были снятой оговоркой при факте. Одной строки в промпте не хватило (5 снятых оговорок до и после), поэтому scan.py --before теперь печатает пропавшую оговорку в списке потерь: на 25 ответах прошлого прогона она находится в 6, «может показаться» не считается.
  • Тире в определении перестраивается глаголом («Антитела относятся к белкам»), а не запятой и не голым «это»: оценщики сочли «Антитела это белки» пунктуационной ошибкой. Дефис с пробелами в роли тире снимается так же. У «Вариант 1/2» снимается метка, а не варианты.
  • Сканер первым вызовом, отчёт после текста. Служебные заметки о файлах и сканере в ответ не идут; если пользователь просил только текст, строки «Чистота» нет. Для постов и писем подзаголовки «##» и строки целиком жирным становятся обычными строками.
  • Сканер: факт-замок больше не принимает первое слово пункта списка, строки после «**» и эмодзи-буллета за имя (срабатываний на 25 ответах 19 → 7). Замер: eval/MODERN-SKILL-CHECK.md, раздел «После правок».

Don't miss a new humanizer-ru release

NewReleases is sending notifications on new releases.