github ilyautov/humanizer-ru v3.16.0
v3.16.0 — Формулы 2026, гейты честности и жанровый фильтр

latest releases: v3.31.3, v3.31.2, v3.31.1...
one month ago

v3.16.0 — Формулы 2026 и два гейта честности

Каталог вырос до 58 паттернов (13 категорий, новая M), плюс два CI-гейта,
которые проверяют не чужой текст, а наш собственный.

  • Категория M «Формулы и артефакты 2026» (паттерны 55-58). Источники:
    обновления проекта Wikipedia AI Cleanup и его русского аналога за 2026 год.
    • 55. Неодушевлённый субъект действия. «Исследование подчёркивает
      важность», «Платформа обеспечивает удобство»: подлежащим становится
      предмет, а автор решения исчезает. Английские источники описывают то же
      как смену AI-словаря на emphasizing / highlighting / showcasing.
    • 56. Заголовки в Title Case. «Ранняя Жизнь и Образование»: в русском
      так не пишут, это калька интерфейса. Считается структурно, имена
      собственные и брендовые написания исключены через словарь pymorphy3.
    • 57. Обрыв на полуслове. Текст кончается посреди предложения: модель
      упёрлась в лимит токенов, а человек скопировал как есть.
    • 58. Триада-отрицание. Формула 2026 года «No X. No Y. Just Z» в русском
      изводе: «Без пафоса. Без воды. Просто факты».
  • Движок. Две новые лексические категории сканера (#55, #58) и две
    структурные метрики в structure.py (#56, #57) с выводом в scan.py.
    Ложных срабатываний на человеческом корпусе ноль, regression-гейт eval
    зелёный. На нашем AI-корпусе новые маркеры пока не срабатывают: корпус
    старше этих формул, валидация ждёт свежих текстов.
  • Артефакты копипасты 2026. Добавлены :::writing{variant=...} (замечен с
    июня 2026), [cite: N] и [span_N](start_span) у Gemini,
    grok_render_citation_card_json.
  • Гейт честности примеров (scripts/check_examples.py). В паре «До/После»
    половина «После» не может содержать числа, даты, имени или названия, которых
    нет в исходнике: пример учит модель сильнее инструкции. Пять собственных
    примеров нарушали Факт-замок. Четыре помечены явной меткой
    После (факты автора):, один переписан.
  • Self-scan витрины (scripts/self_scan.py). README, страницы сайта,
    SKILL.md и команды прогоняются через собственные 20 HARD BANS. Нашлось два
    нарушения: открывающая строка SKILL.md была построена по бану «не просто X,
    а Y», в README жило «важно понимать». Оба переписаны.
  • scripts/test_gates.py. 26 проверок на то, что оба гейта ловят заведомо
    плохой материал и молчат на чистом.
  • Жанровый фильтр, и он измерен. Прогон каталога по внешнему размеченному
    корпусу AINL-Eval 2025 (35 158 русских научных аннотаций, разметка human /
    gpt-4-turbo / gemma-2-27b / llama-3.3-70b) показал, что на научном тексте
    строгий режим не разделяет классы вообще: бан оставался в 35,9% человеческих
    документов против 26,1-35,8% машинных. «Является» срабатывало на 8,0%
    человеческих аннотаций и 0,1-3,0% машинных, длинное тире на 4,8% и 0-0,9%.
    Теперь scan.py --genre academic|legal|fiction снимает маркеры, законные для
    регистра, и на том же корпусе человеческие срабатывания падают до 4,2%.
    Фильтр учитывается и в score, и в вердикте по тире. Умолчание не изменилось:
    без флага режим прежний, строгий, под маркетинг и блоги.
  • То же правило поднято в скилл. В таблице классификации появилась строка
    «Научный / академический», в разделе про ложные срабатывания жёсткое правило
    с цифрами вместо мягкой оговорки.
  • eval/ainl_calibration.py и eval/AINL-CALIBRATION.md. Скрипт качает
    корпус во временную папку и считает ложные срабатывания по каждому маркеру.
    Машинные агрегаты ложатся в gitignored eval/out/, в репозиторий едет только
    человекочитаемый отчёт с числами. В CI не гоняется: внешний источник и
    48 МБ трафика.

Don't miss a new humanizer-ru release

NewReleases is sending notifications on new releases.