humanizer-ru 3.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.en.md +207 -0
- package/README.md +340 -0
- package/cordis.patch.yml +14 -0
- package/package.json +16 -0
- package/skills/humanizer-ru/SKILL.md +320 -0
- package/skills/humanizer-ru/agents/openai.yaml +5 -0
- package/skills/humanizer-ru/edit-log.md +40 -0
- package/skills/humanizer-ru/references/catalog.md +354 -0
- package/skills/humanizer-ru/scripts/humanizer_metrics/__init__.py +80 -0
- package/skills/humanizer-ru/scripts/humanizer_metrics/burstiness.py +92 -0
- package/skills/humanizer-ru/scripts/humanizer_metrics/markers.py +439 -0
- package/skills/humanizer-ru/scripts/humanizer_metrics/morphology.py +78 -0
- package/skills/humanizer-ru/scripts/humanizer_metrics/score.py +182 -0
- package/skills/humanizer-ru/scripts/humanizer_metrics/structure.py +154 -0
- package/skills/humanizer-ru/scripts/scan.py +177 -0
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
# Каталог паттернов и маркеров humanizer-ru
|
|
2
|
+
|
|
3
|
+
Справочник, который скилл читает по требованию (режимы «Полное редактирование»
|
|
4
|
+
и «Аудит»). Лежит ОТДЕЛЬНО от SKILL.md, чтобы рабочий промпт оставался тонким и
|
|
5
|
+
не тащил весь каталог в контекст на каждый вызов. По числу паттернов и категорий
|
|
6
|
+
сканера источник истины именно этот файл: его парсят гейты
|
|
7
|
+
`scripts/bump_release.py` и `scripts/lint_skill.py`.
|
|
8
|
+
|
|
9
|
+
Нумерация сквозная 1-64, категории A-N. Сначала каталог паттернов, затем списки
|
|
10
|
+
слов-маркеров для быстрого сканера.
|
|
11
|
+
|
|
12
|
+
## Что здесь проверено корпусом, а что нет
|
|
13
|
+
|
|
14
|
+
Каталог собирался вручную по наблюдениям, и до 2026 года ни один его пункт не
|
|
15
|
+
проверялся на главный вопрос: отличает ли он вообще человека от машины. Теперь
|
|
16
|
+
часть проверена, и разница между «измерено» и «выглядит убедительно» слишком
|
|
17
|
+
велика, чтобы её прятать.
|
|
18
|
+
|
|
19
|
+
**Держится в двух разных доменах сразу.** Число это лифт, отношение частоты у
|
|
20
|
+
машины к частоте у человека; всё, что ниже единицы, работает против нас.
|
|
21
|
+
|
|
22
|
+
| маркер | научные аннотации | смешанный регистр |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| Играет важную/ключевую роль | 5.7 | 9.4 |
|
|
25
|
+
| Мотивационные клише | 2.8 | 4.0 |
|
|
26
|
+
| Неодушевлённый субъект (55) | 4.4 | 2.7 |
|
|
27
|
+
| Комплексный подход/решение | 3.0 | 2.8 | <!-- self-scan: ok, цитируем имя бана -->
|
|
28
|
+
| Модальные хеджи | 2.6 | 2.9 |
|
|
29
|
+
| Раздувание значимости | 1.8 | 1.4 |
|
|
30
|
+
|
|
31
|
+
Корпуса: AINL-Eval 2025 (35 158 научных аннотаций, генераторы gpt-4-turbo,
|
|
32
|
+
gemma-2-27b, llama-3.3-70b) и M4-ru (11 518 текстов, gpt-3.5-turbo и
|
|
33
|
+
davinci-003). Метод и полные таблицы: `eval/AINL-CALIBRATION.md`,
|
|
34
|
+
`eval/M4-CALIBRATION.md`.
|
|
35
|
+
|
|
36
|
+
**Переворачивается при смене домена.** «Является» даёт 0.1 на научном тексте и
|
|
37
|
+
4.5 на смешанном, «Данный» 0.9 и 3.1, кальки 0.3 и 2.0. Это не ошибка каталога,
|
|
38
|
+
а свойство самих маркеров: без указания домена маркер бессмыслен. Отсюда
|
|
39
|
+
жанровый фильтр `scan.py --genre`.
|
|
40
|
+
|
|
41
|
+
**Не разделяет нигде.** Канцелярит: 1.1 на научном, 1.2 на смешанном, при том
|
|
42
|
+
что ниже он назван главным маркером. Пункт оставлен, потому что он про качество
|
|
43
|
+
письма, а не про происхождение текста, но выдавать его за детектор нельзя.
|
|
44
|
+
|
|
45
|
+
**Не проверялось.** Всё остальное. Это не значит «неверно», это значит, что
|
|
46
|
+
корпусной проверки под пункт у нас пока нет, и он держится на наблюдении.
|
|
47
|
+
|
|
48
|
+
Общая граница у всех замеров одна: генераторы 2023-2024 годов. Ни одной модели
|
|
49
|
+
2025-2026 годов по-русски не измерено.
|
|
50
|
+
|
|
51
|
+
## Каталог: 64 паттерна AI-генерации в русском
|
|
52
|
+
|
|
53
|
+
### A. Контентные (1-5)
|
|
54
|
+
|
|
55
|
+
**1. Пустые открытия.** AI начинает с космических обобщений: «В современном мире...», «В эпоху цифровых технологий...», «Не секрет, что...», «Данная тема отличается повышенной актуальностью». Удали первый абзац целиком. Настоящий текст начинается со второго. Или начни с факта, истории, вопроса.
|
|
56
|
+
|
|
57
|
+
До: «В современном динамично развивающемся мире искусственный интеллект играет всё более важную роль в различных сферах жизнедеятельности человека.»
|
|
58
|
+
После (факты автора): «GPT-4 вышел в марте 2023-го. Через полгода его использовали 92% компаний из Fortune 500.» (числа и даты здесь дал автор; если их нет, НЕ выдумывай, см. «Факт-замок»)
|
|
59
|
+
|
|
60
|
+
**2. Размытые авторитеты.** «По мнению экспертов...», «Специалисты рекомендуют...», «Исследования показывают...», «Многие считают...». Либо назови конкретного эксперта, либо убери ссылку и утверждай от своего лица. «Я считаю» честнее, чем «многие считают».
|
|
61
|
+
|
|
62
|
+
До: «Исследования показывают, что удалёнка повышает продуктивность.»
|
|
63
|
+
После (факты автора): «Стэнфорд гонял эксперимент два года: удалёнщики на 13% продуктивнее. У себя в команде вижу примерно то же.» (источник и цифру дал автор; нет источника: убери ссылку и утверждай от своего лица, НЕ изобретай исследование)
|
|
64
|
+
|
|
65
|
+
**3. Раздувание значимости.** Каждый факт «ключевой», каждое событие «переломное»: «играет ключевую роль», «имеет огромное значение», «невозможно переоценить». Сбрось пафос. Если что-то важно, покажи почему через данные, а не прилагательные.
|
|
66
|
+
|
|
67
|
+
**4. Формульные выводы.** Заключения, которые клеятся к любому тексту: «Таким образом, можно сделать вывод...», «Подводя итог...». Вывод должен добавлять новое. Если его можно удалить без потери смысла, удали.
|
|
68
|
+
|
|
69
|
+
**5. Принудительная структура.** AI натягивает «введение, основная часть, заключение» даже на пост в Telegram. Для коротких текстов (до 500 слов) структура часто не нужна. Начни с сути.
|
|
70
|
+
|
|
71
|
+
**Подтип: «Подзаголовок на каждые 2-3 предложения».** AI любит дробить короткий текст на множество секций с заголовками. Если в посте 500 слов и 6 подзаголовков по 2-3 предложения каждый, это AI-почерк. Человек либо пишет сплошным текстом, либо использует подзаголовки осмысленно: один раздел = одна крупная мысль.
|
|
72
|
+
|
|
73
|
+
### B. Языковые (6-14)
|
|
74
|
+
|
|
75
|
+
**6. Канцелярит.** Главный маркер. AI превращает глаголы в отглагольные существительные: «осуществление», «реализация», «внедрение», «оптимизация», «в целях реализации проекта», «в рамках данного исследования». Верни глаголы. «Осуществили внедрение системы» значит «внедрили систему». «Реализация проекта завершена» значит «проект завершён». Глагол почти всегда лучше существительного.
|
|
76
|
+
|
|
77
|
+
До: «Осуществление процесса оптимизации рабочих процессов способствует повышению эффективности деятельности организации.»
|
|
78
|
+
После: «Навели порядок в процессах, стало быстрее работать.»
|
|
79
|
+
|
|
80
|
+
**7. Кальки с английского.** Модели обучены на английском, конструкции просачиваются: «Стоит отметить, что...» (It's worth noting), «Важно помнить, что...» (It's important to remember), «Можно сказать, что...» (One could say), «является» в каждом втором предложении (is). Переформулируй по-русски. Русский предпочитает активные конструкции и позволяет опускать подлежащее. English-biased representations в LLM означают, что русский текст генерируется через внутренний «перевод»: translationese-паттерны неизбежны (2502.11806).
|
|
81
|
+
|
|
82
|
+
**7б. Пунктуационные кальки.** AI расставляет запятые по английским правилам. «Однако,» в начале предложения (в английском "However," обособляется, в русском нет). «Благодаря этому, результаты» (лишняя запятая). «Инструменты, такие как Python» (калька с "such as"). «В 2024 году, компания выросла» (лишнее обособление обстоятельства). Проверь каждую запятую после вводного оборота: в русском многие обороты НЕ обособляются, которые в английском обособляются.
|
|
83
|
+
|
|
84
|
+
**8. «Является».** AI использует связку «является» в 2-3 раза чаще людей. Русский обходится без «быть» в настоящем времени. «Python является языком программирования» пиши как «Python, язык программирования,...» или просто перестрой предложение.
|
|
85
|
+
|
|
86
|
+
**9. Избыточные подлежащие.** Русский позволяет опускать подлежащее (pro-drop), AI вставляет его всегда, потому что в английском subject обязателен. «Он встал и он пошёл к двери» лучше как «Встал, пошёл к двери».
|
|
87
|
+
|
|
88
|
+
**10. Нагромождение причастий.** AI строит многоэтажные причастные обороты: «Анализируя данные, учитывая результаты, рассматривая возможности, мы пришли к выводу...». Причастные обороты в AI-текстах встречаются заметно чаще, чем у людей. Разбей на короткие предложения. Один причастный оборот максимум. Лучше обычное придаточное.
|
|
89
|
+
|
|
90
|
+
**11. Однообразие синтаксиса.** AI пишет предложения одинаковой длины (15-20 слов) и одинаковой структуры. Также **избегает инверсий и разговорных конструкций**: предпочитает прямой порядок слов «подлежащее → сказуемое → дополнение». Чередуй. Короткое. Потом длинное, с запятыми, с уточнениями, с отступлениями в скобках. Вопрос? Можно и так. Используй инверсии («Хорошо это или плохо, не знаю»). Варьируй начала абзацев.
|
|
91
|
+
|
|
92
|
+
**12. Правило трёх.** AI обожает перечисления из трёх: «важный, значительный и ключевой». Если три синонима, оставь один. Если перечисление искусственное, перестрой фразу. Иногда хватит двух элементов. Иногда нужно четыре.
|
|
93
|
+
|
|
94
|
+
**13. Синонимическая карусель.** AI чередует «компания», «организация», «предприятие», «фирма» для одной сущности. Выбери одно слово. Повтор в русском нормален. Неестественное чередование хуже повтора.
|
|
95
|
+
|
|
96
|
+
**14. Перекос в существительные.** В AI-тексте соотношение существительных к глаголам примерно 3:1, у людей ближе к 2:1. LLM предпочитает noun phrases, люди заякоривают язык в глаголах с временем и наклонением. Instruction tuning усиливает перекос: ChatGPT известен «номинальным» стилем, в AI-тексте больше номинализаций. Если в абзаце мало глаголов, ищи номинализации и разворачивай. Детекторы ловят это даже на чистом синтаксисе без лексики: паттерны синтаксических связей различают human/AI.
|
|
97
|
+
|
|
98
|
+
### C. Стилистические (15-21)
|
|
99
|
+
|
|
100
|
+
**15. Тире.** Длинное тире «—» и короткое «–» в HARD BANS, оба. Живой неформальный русский длинное тире почти не ставит: с телефона печатают дефис «-». Замени ВСЕ длинные и короткие тире на: запятую, двоеточие, точку, дефис «-» или перестрой фразу. Дефис допустим, тире нет. Короткое тире законно только в числовом диапазоне («10–15»), там его не трогай.
|
|
101
|
+
|
|
102
|
+
Замер парный, на одних и тех же постах: доля пар, где у человека тире не было, а модель его поставила.
|
|
103
|
+
|
|
104
|
+
| генератор | человек | машина | добавила там, где не было |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| Qwen3-4B (тюн) | 10% | 100% | 45 из 45 |
|
|
107
|
+
| qwen2.5:7b | 11% | 66% | 19 из 31 |
|
|
108
|
+
| qwen3-vl:4b | 10% | 60% | 5 из 9 |
|
|
109
|
+
| Opus 5 | 0% | 27% | 4 из 15 |
|
|
110
|
+
| gemma3:27b | 10% | 14% | 4 из 45 |
|
|
111
|
+
|
|
112
|
+
Семейство gemma длинное тире почти не добавляет, но подменяет его коротким: человек 6% против 80% у gemma3:4b и gemma3:27b, 64% у gemma3:1b. Поэтому коротким тире отдельный бан, иначе оно проходит мимо регулярки.
|
|
113
|
+
|
|
114
|
+
> **Почему нельзя верить доле документов.** Если считать частоту в несопряжённых корпусах, картина переворачивается: AINL человек 4.8% против 0.0-0.9% у моделей, M4 человек 42.3% против 3.3%. Обе цифры честные и обе вводят в заблуждение, потому что человеческие половины там это изданная вычитанная проза, где тире ставит редактор, а машинные половины сделаны генераторами 2023-2024 годов. Продуктовый вопрос звучит иначе: пользователь отдаёт модели свой текст, и важно, что она с ним делает. Это и есть парный замер выше.
|
|
115
|
+
|
|
116
|
+
> **Ложные срабатывания на изданной прозе реальны** и снимаются жанровым фильтром, а не отменой бана: в `--genre academic` и `legal` оба тире уже глушатся.
|
|
117
|
+
|
|
118
|
+
> **Правь тире по умолчанию, но уступай пользователю.** Если он говорит, что он редактор и нужна издательская типографика, оставляй. САМ это исключение не включай.
|
|
119
|
+
|
|
120
|
+
**16. Болд.** AI выделяет жирным каждое ключевое слово. Убери или оставь для 1-2 мест на весь текст.
|
|
121
|
+
|
|
122
|
+
**17-18. Орфографические мелочи.** После двоеточия строчная (не «Решение: Следующий шаг», а «Решение: следующий шаг»). В заголовках не Title Case (не «Как Создать Отличный Продукт», а «Как создать отличный продукт»).
|
|
123
|
+
|
|
124
|
+
**19. Навязчивые списки.** AI превращает всё в нумерованные списки. Если мысли связаны, перепиши сплошным текстом. Списки хороши для инструкций, не для рассуждений.
|
|
125
|
+
|
|
126
|
+
**Подтип: «двоеточия-дублёры».** AI пишет списки в формате «Слово: Развёрнутое повторение слова» (например, «Эффективность: Повышает эффективность работы»). Три сигнала: (1) двоеточие после одного слова в каждом пункте, (2) текст после двоеточия дублирует смысл, (3) заглавная буква после двоеточия. Увидев такой список, перепиши сплошным текстом или сделай каждый пункт содержательным.
|
|
127
|
+
|
|
128
|
+
**20. Бедная пунктуация.** AI ставит только точки и запятые. Нет многоточий (пауза, размышление), нет скобок (ремарка в сторону), нет риторических вопросов. Добавь разнообразие. Скобки отлично работают (вот как сейчас). Многоточие... иногда тоже к месту.
|
|
129
|
+
|
|
130
|
+
**21. Кавычки.** Зависит от контекста. Для статей, документов, официальных текстов русский стандарт: «ёлочки», вложенные: „лапки". Но для постов в соцсетях, Telegram, чатов используй прямые "кавычки" как с телефона. Это выглядит естественнее, потому что 90% людей печатают с мобильного и не заморачиваются переключением на «ёлочки». Типографски правильные кавычки в неформальном тексте выдают не человека, а робота с идеальной типографикой.
|
|
131
|
+
|
|
132
|
+
### D. Коммуникативные (22-26)
|
|
133
|
+
|
|
134
|
+
**22. Артефакты чатбота.** «Конечно! Давайте разберёмся...», «Отличный вопрос!», «Рад помочь!», «Надеюсь, это было полезно». Удали полностью. Автор статьи не «рад помочь».
|
|
135
|
+
|
|
136
|
+
До: «Отличный вопрос! Давайте разберёмся, как работает кэш.»
|
|
137
|
+
После: «Кэш работает так.»
|
|
138
|
+
|
|
139
|
+
**23. Заискивание.** AI соглашается со всем. Автор имеет право не соглашаться, сомневаться, спорить. Sycophancy документирован: модели обучены давать ответы, которые нравятся пользователю, не обязательно правильные. GPT-4o до отката весной 2025 поддерживал навязчивые мысли пользователей и хвалил абсурдные планы.
|
|
140
|
+
|
|
141
|
+
**24. Шаблонные переходы.** «Давайте рассмотрим подробнее...», «Перейдём к следующему аспекту...», «Не менее важным является...». Убери (читатель видит новый абзац) или сделай содержательным: через вопрос, контраст, связку с предыдущей мыслью.
|
|
142
|
+
|
|
143
|
+
До: «Давайте рассмотрим подробнее следующий аспект. Не менее важным является масштабирование.»
|
|
144
|
+
После: «Хорошо, допустим, прототип работает. А что будет под нагрузкой?»
|
|
145
|
+
|
|
146
|
+
**25. Избыточные оговорки.** «В определённом смысле...», «В той или иной степени...», «Можно предположить, что возможно...». Если уверен, утверждай. Если нет, скажи конкретно в чём сомнение. «В определённом смысле это работает» ничего не значит. «Работает для малых выборок, на больших не проверяли» содержит информацию.
|
|
147
|
+
|
|
148
|
+
**26. Водянистость.** AI-текст можно сократить на 40-60% без потери смысла. Одна мысль размазана на 3-5 предложений, тезис повторяется разными словами, абзацы не добавляют нового. Сожми. Тест: если текст можно сократить вдвое и смысл не пострадает, оригинал водянистый.
|
|
149
|
+
|
|
150
|
+
### E. Морфологические (27-30)
|
|
151
|
+
|
|
152
|
+
**27. Падежи.** AI путает падежные окончания: именительный вместо родительного («для различных платформ: социальные сети» вместо «социальных сетей»), неправильный род («Компания заявил»). Вычитай каждое согласование.
|
|
153
|
+
|
|
154
|
+
**28. Вид глагола.** Совершенный/несовершенный вид путаются: «Он будет делать работу и сделает её». Проверь на соответствие контексту.
|
|
155
|
+
|
|
156
|
+
**29. Деепричастия не к тому подлежащему.** «Проанализировав данные, результаты были получены» (деепричастие относится к «мы», а подлежащее «результаты»). Деепричастие должно относиться к подлежащему предложения. Не относится? Перестрой.
|
|
157
|
+
|
|
158
|
+
**30. «Данный», «определённый», «соответствующий».** AI вставляет эти слова всюду: «данный метод», «определённые аспекты», «соответствующие меры». Замени на «этот» или убери. «Определённые аспекты» значит «я не знаю какие конкретно».
|
|
159
|
+
|
|
160
|
+
**Важно для морфологии:** RuBERT-детекторы специально анализируют падежные цепочки и согласования. AI ошибается в длинных конструкциях: неправильный падеж после предлога, несогласованный род в причастных оборотах. Человек ошибается иначе: путает -тся/-ться, ставит лишнюю запятую. При переписывании проверяй каждую цепочку согласований в новых фразах. Морфологическая ошибка, характерная для AI, хуже, чем «человеческая» небрежность.
|
|
161
|
+
|
|
162
|
+
### F. Тональные (31-33)
|
|
163
|
+
|
|
164
|
+
**31. Эмоциональная стерильность.** AI-текст как дистиллированная вода: чистый, но безвкусный. AI держит ровный эмоциональный фон: почти нет негатива, резких оценок, раздражения. Вместо осторожных формулировок идут усилители, создающие overconfident тон, уверенный даже там, где основания шаткие. Мат и резкая брань почти не встречаются. Глаголы восприятия («смотреть», «слышать», «чувствовать»), слова страха, гнева, ненависти редки.
|
|
165
|
+
|
|
166
|
+
Четыре подтипа:
|
|
167
|
+
|
|
168
|
+
- **Позитивный перекос.** Каждый вывод «позитивный» или «сбалансированный». Нет текстов, где автор просто зол, разочарован или скептичен. Человек не боится сказать «полгода мучились, результат ноль». AI скажет «несмотря на определённые сложности, данный подход открывает новые перспективы». Если тема предполагает негативный опыт, а текст всё равно оптимистичен, это маркер.
|
|
169
|
+
- **Отсутствие сомнений.** Человек сомневается и исправляет себя: «может я и ошибаюсь», «ну, тут спорно», «хотя, нет, подожди». AI утверждает безапелляционно. LLM не генерируют epistemic markers, а когда генерируют, предпочитают strengtheners. Это не та же проблема, что паттерн 25 (избыточные оговорки): паттерн 25 про ЛИШНИЕ оговорки, этот про НОРМАЛЬНЫЕ человеческие сомнения, которых нет.
|
|
170
|
+
- **Эмоциональная динамика.** Человек внутри одного текста переключается: восторг от находки, раздражение от бага, скепсис к решению, облегчение что заработало. AI держит ровный тон. Если весь текст на одной эмоциональной ноте, это маркер. Проверяй «эмоциональную кардиограмму» наряду с информационной (паттерн 43).
|
|
171
|
+
- **Авторская риторика.** Человек убеждает через личный опыт и ошибки («я попробовал X, не сработало, потом нашёл Y»). AI убеждает через перечисление преимуществ. Если текст убеждает как каталог, а не как рассказ, это маркер.
|
|
172
|
+
|
|
173
|
+
Добавь авторскую позицию. «Это работает» можно усилить до «Это работает, и это удивляет, учитывая какой это костыль». Мнение делает текст человеческим.
|
|
174
|
+
|
|
175
|
+
**32. Нет частиц и речевых привычек.** Русский живой текст полон частиц: же, ведь, вот, -то, ли, ну. AI их не использует или ставит не к месту. «Это важно» можно превратить в «Это ведь важно» или «Это-то и важно». Не переборщи: 1-2 на абзац для неформального текста. Помимо частиц, у человека есть слова-паразиты (ну, короче, типа), личные обороты, характерные начала фраз. LLM не могут имитировать неформальный стиль повседневных авторов (40000+ генераций, 400+ авторов, LLM проваливаются на blogs/forums). В неформальных текстах 1-2 «паразита» = признак живого текста.
|
|
176
|
+
|
|
177
|
+
**33. Нет иронии, метафор и фигуративного языка.** Русскоязычная культура письма пропитана иронией. LLM плохо распознают и порождают сарказм и иронию, а метафоры обрабатывают по поверхностным признакам, не схватывая глубинный смысл. Подтекст через выбор формулировки (manner implicature) им тоже даётся плохо. Человек может сказать «ну, неплохо» и подразумевать «плохо». LLM скажет буквально. Отсутствие фигуративного языка: один из сильнейших маркеров. Если тон текста допускает, добавь подколку, преуменьшение, абсурдное сравнение, метафору из жизни, аналогию из другой области. Не насильно, но если текст про что-то нелепое, пусть автор это заметит. LLM не скажет «архитектура микросервисов это как конструктор LEGO» или «дебаг это как искать иголку в стоге сена, где стог тоже из иголок». А человек скажет.
|
|
178
|
+
|
|
179
|
+
### G. Структурные (34-35)
|
|
180
|
+
|
|
181
|
+
**34. Разорванные абзацы.** Абзацы AI слабо связаны. Можно переставить местами, и ничего не изменится. Нет обратных ссылок, нет причинно-следственных связок. AI предпочитает дискурсивные связи Elaboration и Explanation, люди чаще используют Contrast и Concession (2510.26124). Практически: добавлять «но», «с другой стороны», «впрочем»: это меняет дискурсивную структуру, а не только стилистику. Свяжи: каждый следующий абзац должен вытекать из предыдущего. Для длинных текстов (>500 слов) обязательны обратные ссылки: «Как уже говорил выше...», «Повторюсь, но...», «К этому вернёмся через минуту», «Помните, в начале я упоминал...», «Вот тут-то и пригодится то, что...». AI теряет coherence в длинных нарративах: «narrative drift» документированная проблема. Человек помнит начало истории, AI забывает.
|
|
182
|
+
|
|
183
|
+
**35. Галлюцинации.** AI уверенно утверждает ложное: несуществующие цитаты, неправильные даты, выдуманные факты. Проверь каждый конкретный факт. Не можешь подтвердить? Убери или пометь как неподтверждённое.
|
|
184
|
+
|
|
185
|
+
### H. Человеческие мелочи (36-37)
|
|
186
|
+
|
|
187
|
+
**36. Идеальная грамотность.** Живой текст, написанный с телефона или в спешке, содержит мелкие огрехи: пропущенную запятую, "тся/ться" в неформальном контексте, слипшиеся слова. AI выдаёт стерильно чистый текст, чем и палится. Для неформальных текстов (посты, чаты, соцсети) оставь 1-2 мелкие "опечатки" или пропущенные запятые. Не в каждом абзаце, не грубые ошибки, а ровно столько, сколько сделал бы человек, печатающий на ходу. Для статей и документов этот пункт не применяй.
|
|
188
|
+
|
|
189
|
+
**37. Вылизанная типографика.** AI ставит все тире, кавычки, пробелы идеально по ГОСТу. Человек в мессенджере пишет дефис вместо тире, не ставит пробел перед скобкой, забывает точку в конце. Для неформальных текстов не исправляй типографику до идеала. Пусть местами будет дефис вместо тире, пусть скобка прижмётся к слову. Это не ошибка, это почерк.
|
|
190
|
+
|
|
191
|
+
### I. Паттерны убеждения (38-42)
|
|
192
|
+
|
|
193
|
+
**38. Негативные параллелизмы.** «Не просто инструмент, а партнёр». «Не только ускоряет, но и трансформирует». AI обожает эту конструкцию, она есть в 80%+ текстов GPT. HARD BAN. Скажи прямо что имеешь в виду: «Это партнёр» или «Ускоряет и трансформирует». Без «не просто / не только».
|
|
194
|
+
|
|
195
|
+
**39. Ложные диапазоны.** «От стартапов до корпораций», «от новичков до профессионалов», «от маркетинга до разработки». AI соединяет несвязанные понятия через «от X до Y», создавая иллюзию полноты. Либо перечисли конкретно (кому это реально нужно?), либо убери.
|
|
196
|
+
|
|
197
|
+
**40. Авторитетные трюизмы.** «По своей сути...», «В конечном счёте, самое главное, это...», «На самом деле...», «Вот ключевой вывод», «Самое важное — это…», «Первый шаг — это признаться себе». Конструкции, которые создают видимость глубины без содержания. Если утверждение верно без этой преамбулы, преамбула лишняя. Удали.
|
|
198
|
+
|
|
199
|
+
**41. Отказы от ответственности.** «Хотя информация может быть неполной...», «Несмотря на ограниченность данных...», «Трудно сказать наверняка, но...». Если данных мало, скажи конкретно каких. Если уверен, утверждай. Размытая оговорка хуже конкретного незнания.
|
|
200
|
+
|
|
201
|
+
**42. Навязчивая сигнализация.** «Давайте разберёмся», «Рассмотрим подробнее», «Поговорим о том, как...». Автор не анонсирует что будет делать, он делает. Метакомментарии к собственному тексту: верный признак AI. Убери и начни с сути.
|
|
202
|
+
|
|
203
|
+
### J. Информационный ритм (43-45)
|
|
204
|
+
|
|
205
|
+
Детекторы нового поколения (DivEye, 2025) ловят не отдельные слова, а статистику последовательности: насколько равномерно распределена «неожиданность» по тексту. LLM стремятся к Uniform Information Density, то есть равномерной плотности информации. Человек пишет всплесками: плотно → легко → плотно. AI держит ровную линию.
|
|
206
|
+
|
|
207
|
+
**43. Равномерная информационная плотность.** AI распределяет факты ровно: каждое предложение несёт примерно одинаковый «вес». Человек чередует: предложение с тремя фактами → лёгкая связка → личное отступление → снова удар. Создай «кардиограмму»: абзац с цифрами → абзац с одной метафорой → короткий вопрос → снова плотный абзац. Если каждое предложение одинаково «информативно», текст выглядит синтетическим.
|
|
208
|
+
|
|
209
|
+
До: «AI увеличивает производительность на 40%. Он также снижает количество ошибок на 25%. Кроме того, он ускоряет время вывода продукта на рынок на 30%.»
|
|
210
|
+
После: «Производительность выросла на 40%, ошибок стало на четверть меньше. Это на бумаге. На практике половина команды не доверяет модели и перепроверяет вручную. Но те, кто доверился, выкатывают на 30% быстрее.»
|
|
211
|
+
|
|
212
|
+
**44. Гладкие переходы между предложениями.** AI делает каждый переход плавным: «Кроме того...», «Также...», «Не менее важным является...». Человек прыгает: заканчивает мысль, начинает следующую без мостика. Или возвращается к тому, что сказал два абзаца назад. Допусти 20-30% «жёстких склеек»: где следующее предложение связано с предыдущим не союзом, а общим контекстом, который читатель восстановит сам.
|
|
213
|
+
|
|
214
|
+
До: «Команда выросла вдвое. Кроме того, мы открыли второй офис. Также важно отметить, что выручка удвоилась.»
|
|
215
|
+
После: «Команда выросла вдвое, открыли второй офис. Выручка, кстати, тоже удвоилась, хотя я ждал этого только к концу года.»
|
|
216
|
+
|
|
217
|
+
**45. Шаблонная структура блоков (macro-burstiness).** Самый незаметный и самый палевный паттерн. AI пишет нумерованные списки, где каждый пункт построен по одному скелету: название, объяснение в 2 строки, пример. Одинаковая длина блоков, одинаковые зачины («Один... второй...», «Для X...», «Подходит для...»), одинаковый тип объяснения. Человек так не пишет: один пункт в три строки с примером, следующий в одно предложение, третий начинается с вопроса, четвёртый с личной ремарки.
|
|
218
|
+
|
|
219
|
+
Проверка: прочитай ТОЛЬКО первые строки каждого пункта подряд. Звучат как шаблон? Ломай. Минимум 3 из 5 пунктов должны начинаться принципиально по-разному: факт / аналогия / антипример / вопрос / личный опыт. Варьируй длину блоков: один короткий (1-2 строки), один длинный (4-5 строк).
|
|
220
|
+
|
|
221
|
+
До: «1. X: один делает, второй проверяет. Подходит для... 2. Y: один раздаёт, остальные делают. Подходит для... 3. Z: передаёт по цепочке. Подходит для...»
|
|
222
|
+
После: «1. X: один пишет, второй ловит косяки. Берёте туда, где цена ошибки высокая. 2. Y: тут проще, конвейер. 3. Z: а вот это для хаоса. Задачи сыпятся, кто свободен, тот и хватает.»
|
|
223
|
+
|
|
224
|
+
### K. Хеджирование и специфика (46-48)
|
|
225
|
+
|
|
226
|
+
**46. Модальная неопределённость.** AI хеджирует через «может» в каждом предложении: «может стать», «может повлиять», «способен обеспечить», «призван решить». Это не осторожность автора, это привычка модели снижать категоричность. Если утверждение верно, утверждай. Если неверно, не пиши. «Может быть полезным» не несёт информации. «Ускорило вдвое» несёт. Порог: больше 1 «может/способен/призван» на 100 слов вне контекста прогнозов = маркер. Не путать с паттерном 25 (избыточные оговорки типа «в определённом смысле») и паттерном 41 (отказы от ответственности типа «хотя информация может быть неполной»). Модальное «может»: систематическое хеджирование КАЖДОГО утверждения через одну конструкцию.
|
|
227
|
+
|
|
228
|
+
До: «Инструмент может стать полезным и способен повлиять на скорость работы команды.»
|
|
229
|
+
После: «Инструмент ускорил сборку вдвое. На юнит-тестах выигрыша не дал.»
|
|
230
|
+
|
|
231
|
+
**47. Семантические сдвиги (translationese).** AI заменяет слова близкими, но не точными по значению, потому что генерирует русский через English-biased representations. «Основание науки» вместо «основы науки». «Уточните маркетинговые усилия» (калька с «refine your marketing efforts»). LLM предпочитают translationese-формулировки, особенно маленькие и multilingual модели. Русский человек так не скажет. Проверяй: если слово формально правильное, но «не то», скорее всего, это калька с английского семантического поля.
|
|
232
|
+
|
|
233
|
+
**48. Нет идиом и пословиц.** AI-текст лишён идиоматических выражений, пословиц, поговорок, устойчивых фраз. LLM struggle с идиоматическими выражениями. «Как в воду глядел», «гладко было на бумаге», «не в свои сани не садись», «кто не рискует, тот не пьёт шампанское»: в AI-тексте такого не встретишь. Для неформальных текстов 1-2 уместные идиомы на 500 слов = сильный маркер живого текста.
|
|
234
|
+
|
|
235
|
+
### L. Стилистические фингерпринты 2025-2026 (49-54)
|
|
236
|
+
|
|
237
|
+
Это новейшие паттерны, которые проявились в Claude/GPT/Gemini 2025-2026 как ответ на критику «текст звучит сухо». Модели стали имитировать «глубокомысленность», «вовлечённость», «эмпатию». Имитация считывается читателем мгновенно и стала отдельным маркером.
|
|
238
|
+
|
|
239
|
+
**49. Рваная медитативность.** Стилизация под глубокомысленность через цепочку коротких отдельных предложений-кивков: «Короткие. Точные. Отдельные. Рефлексивные.» Это не то же самое, что #11 (однообразие длины): там вариативность, а здесь намеренная имитация «вдумчивости». Сигнал: 3+ односоставных предложения подряд, каждое из 1-3 слов, каждое как «откровение». Лечится восстановлением нормального предложения: «Хорошие тексты: короткие, точные, отдельные предложения работают лучше длинных периодов» вместо «Короткие. Точные. Отдельные.»
|
|
240
|
+
|
|
241
|
+
**50. Контрастные вопросы с короткими ответами.** Псевдо-сократический ритм: «Зачем? Потому что. И для чего? Для этого.» Имитация «диалога с читателем». Если в тексте 3+ риторических вопроса с 2-3-словными ответами, это AI-паттерн 2025-2026. Лечится: либо вопросы реальные (с развёрнутыми ответами), либо без вопросов вообще, утверждениями.
|
|
242
|
+
|
|
243
|
+
**51. Эмодзи как структурный декор.** ⚡ / ✨ / 🎯 / 🔥 в начале каждого пункта списка или заголовка. Не одиночный эмодзи в эмоциональной фразе («ну я в шоке 😂»), а декоративный: каждый пункт начинается с эмодзи. Особенно палевно: ⚡ перед «ключевым выводом», 🎯 перед «целью», 💡 перед «инсайтом». Источник: модели обучены на маркетинговых материалах и SMM-постах, где так пишут. Убери все, кроме случаев, где эмодзи действительно несёт эмоцию.
|
|
244
|
+
|
|
245
|
+
**52. Псевдо-терапевтическая забота.** «Ты не ошибаешься, что так чувствуешь», «сам факт этого — тихое подтверждение», «ты имеешь право», «это не слабость, это сила», «ты всё ещё здесь, ты настоящий». Регистр коуча/терапевта, которым модели стали злоупотреблять в личных контекстах. GPT-4o особенно перегрел этот режим до отката весной 2025. Шире, чем #22 артефакты чатбота: это отдельный жанровый сигнал. Если текст звучит как страница из книги по селф-хелпу, переписать в обычный регистр совета или удалить.
|
|
246
|
+
|
|
247
|
+
**53. Пустой образ (тест на обналичивание).** Живой глагол или яркая метафора, за которой читатель не может найти конкретный референт. Не путать с #33: там образности не хватает, здесь она есть, но полая. Хуже канцелярита: канцелярит палит стиль, а пустой образ создаёт ложное чувство понимания (конкретно звучащее читается как более истинное, документированный когнитивный эффект). Тест. Шаг 0, регистр ТЕКСТА, не образа: перед тобой художественная проза, поэзия, мемуар? Стоп, правило не применяется целиком: там образ и есть содержание, внутренние состояния героев ничего не утверждают о механизмах, обналичишь: убьёшь текст. Только в тексте, который объясняет, как что-то устроено или работает (статья, разбор, документация), иди дальше: спроси «что именно физически происходит?». Три исхода. (а) Ответа нет = пустой образ: «модель думает молча», «цель просвечивает», «рынок чует разворот». Переписать в механизм («за три дня до отчёта объём торгов удвоился») или удалить. (б) Ответ есть, но механизм неверный = ложная точность: «нейронные паттерны» там, где нейронов нет. Самый вредный исход, уверенно уводит не туда. Не путать с #35: там выдуман факт, здесь реальная вещь описана через чужую онтологию. Исправлять механизм, не украшение. (в) Ответ есть, но термин введён поздно или гуляет между двумя смыслами («сознательный доступ» ↔ «сознание доступа»). Зеркало #13: там одну сущность зовут разными словами, здесь одним словом зовут разные вещи. Определи термин один раз в точке ввода и сведи к одной форме. Anchor-once: опорный образ текста (3+ употреблений) не выпиливай, определи один раз, дальше употребляй свободно.
|
|
248
|
+
|
|
249
|
+
**54. Самомаркировка честности.** Текст называет себя честным вместо того, чтобы быть: «вот честный список», «буду с вами откровенен», «скажу без прикрас», «без воды и маркетинга», «объективный разбор». Сюда же анти-хайп поза: «это не очередной кликбейт про X». Классическая ловушка excusatio non petita: непрошеное заверение выдаёт сомнение, читатель слышит «обычно мне верить нельзя». RLHF-модели этим злоупотребляют: они обучены перформить прозрачность, а ярлык добродетели дешевле её предъявления. Не путать с #42 (там текст анонсирует свои действия, тут присваивает себе добродетель), с #40 (там видимость глубины, тут видимость честности) и с #23 (там угождение собеседнику, тут самопрезентация). Сигнал: 2+ самомаркировки на текст или маркировка в шапке/заголовке секции. Лечение: убрать ярлык, оговорки и факты говорят сами за себя. Ложные срабатывания: одиночное разговорное «честно говоря» в живой речи это частица (см. #32), не маркер; жанровый заголовок «честный обзор» у блогеров это человеческая конвенция кликбейта, не AI.
|
|
250
|
+
|
|
251
|
+
### M. Формулы и артефакты 2026 (55-58)
|
|
252
|
+
|
|
253
|
+
Зафиксированы в 2026 году: часть пришла из обновлений проекта Wikipedia AI Cleanup и его русского аналога, часть из наблюдений за моделями поколения GPT-5. Прежний словарь эпохи 2023 («delve», «boasts», «в мире, где») из свежих моделей ушёл, на его место встали конструкции ниже. Все четыре грепаются, три из четырёх ловит сканер `scripts/scan.py`.
|
|
254
|
+
|
|
255
|
+
**55. Неодушевлённый субъект действия.** Подлежащим становится предмет или абстракция, а сказуемым глагол намерения: «Исследование подчёркивает важность тестирования», «Проект демонстрирует приверженность качеству», «Здание отражает эпоху», «Платформа обеспечивает удобство». Действие приписано тому, кто действовать не может: текст выглядит содержательным, ничего не утверждая, и заодно прячет автора решения. Английские источники описывают то же явление как смену AI-словаря на «emphasizing, highlighting, showcasing, enhance». Верни человека: кто подчеркнул, кто решил, кто построил. Не путать с #10 (там нагромождение причастий, здесь подлежащее). Ложное срабатывание: в научном регистре «работа показывает» это принятая формула, считать признаком только вместе с другими.
|
|
256
|
+
|
|
257
|
+
До: «Исследование подчёркивает важность регулярного тестирования.»
|
|
258
|
+
После: «Авторы исследования пишут: без регулярных тестов ломается всё.»
|
|
259
|
+
|
|
260
|
+
**56. Заголовки в Title Case.** «Ранняя Жизнь и Образование», «Основные Принципы Работы», «Как Выбрать Подрядчика». В английском заглавные во всех знаменательных словах заголовка это норма, в русском так не пишут: с заглавной только первое слово и имена собственные. Прямая калька интерфейса, один из самых надёжных структурных маркеров: человек, пишущий по-русски, так не оформляет. Опусти лишние заглавные. Ложное срабатывание: заголовок целиком из имён собственных («Москва и Петербург») и брендовые написания («Яндекс Практикум»).
|
|
261
|
+
|
|
262
|
+
**57. Обрыв на полуслове.** Текст кончается посреди предложения: модель упёрлась в лимит токенов, а человек скопировал в документ как есть, не дочитав. Пары с #22 (остатки реплик) не образует и живёт отдельно: там лишнее в начале, тут недостающее в конце. Проверяй последнее предложение всегда, даже если начало вычищено. Ложное срабатывание: обрыв как приём в художественном тексте и подпись без точки в конце письма.
|
|
263
|
+
|
|
264
|
+
**58. Триада-отрицание.** Формула 2026 года: два отрицания и вывод, всё короткими предложениями. «Без пафоса. Без воды. Просто факты», «Ни созвонов. Ни отчётов. Только работа». Английский первоисточник описан как «No X. No Y. Just Z». Родня #12 (правило трёх) и #49 (рваная медитативность), но узнаётся отдельно по ритму рекламного слогана: два отказа создают ожидание, третья фраза его закрывает. Оставь одно утверждение вместо трёх, либо разверни в обычное предложение. Ложное срабатывание: настоящее перечисление ограничений в списке требований.
|
|
265
|
+
|
|
266
|
+
### N. Дискурсный слой (59-64)
|
|
267
|
+
|
|
268
|
+
Слой выше слов: ЧТО рассказано и как устроено, а не какими словами. Категории A-M правят стиль, и стиль сам по себе сигнал сильный: в StoryScope (arXiv:2604.03136v6, COLM 2026: 10 272 промпта, человек и пять LLM, 61 608 историй по ~5000 слов, 304 фичи на текст) классификатор на одних только 39 стилевых фичах даёт 85.8 macro-F1, а сырые стилометрические бейзлайны на ручных признаках и вовсе 99.8. Слабое место стиля не в силе, а в хрупкости: раздел 4.2 статьи прямо исходит из того, что стилевые детекторы ломаются от перефраза и лёгкой правки, то есть ровно от того, что делает каталог выше. Ценность дискурсного слоя в другом: он не зависит от стиля и переживает стилевую перезапись. Нарративный классификатор статьи держит 93.9% macro-F1 после полной span-level перезаписи 278 историй (клише, избыточная экспозиция, «фиолетовая проза») против 95.5% на тех же историях до правки: минус 1.6 пункта, потому что правка прозы не трогает структурных решений - каузальной линейности, явной проговорённости темы, избытка сенсорики. Отсюда практический вывод, ради которого категория и добавлена: одна стилевая правка текст не очищает, слой формы остаётся нетронутым. Раскладка фич: из 304 фич 39 относятся к стилевому измерению и ещё 8 помечены как связанные со стилем, всего исключено 47; нарративная модель работает на оставшихся 257 и даёт 93.2% macro-F1 в задаче человек/ИИ, в 2.8 пункта от полной модели на 304 фичах (96.0). Категория дополняет A-M, не заменяет: сначала стилевой слой, потом дискурсный. Граница применимости: статья мерила беллетристику ~5000 слов; перенос на посты, кейсы и письма - экстраполяция механизма, статьёй не проверенная. Шесть паттернов ниже - выборка дискурсных признаков, пригодных для правки руками; ранжирования «самых сильных» статья не даёт, и весь дискурс (257 фич) они не покрывают. Паттерны 61 и 64 - предложения автору, не автоправки.
|
|
269
|
+
|
|
270
|
+
**59. Явная мораль в финале.** ИИ-нарратор проговаривает тему истории прямым текстом в 77% случаев, человек в 52%. Финал с уроком отдельным предложением: «эта история учит нас...», «мораль проста...», «и тогда она поняла, что главное...». Смысл уже виден из событий, а финал его всё равно озвучивает. Вырежи озвучку: закончи действием, деталью или репликой, читатель соберёт вывод сам. Не то же, что #4 (формульные выводы): там клише-фразы, здесь смысловой уровень, мораль палит и без клише. Шаблонные формулы морали ловит сканер (категория «Финальная мораль»); мораль без шаблонных слов оценивай по прочтении.
|
|
271
|
+
|
|
272
|
+
До: «Мы всё же успели к дедлайну. Эта история учит нас, что планирование и командная работа решают всё.»
|
|
273
|
+
После: «Мы всё же успели к дедлайну. Никто не сказал вслух, чего это стоило.»
|
|
274
|
+
|
|
275
|
+
До: «Она закрыла ноутбук. Три месяца работы ушли в стол. Эта история научила её главному: нельзя строить продукт, не проверив спрос.»
|
|
276
|
+
После: «Она закрыла ноутбук. Три месяца работы ушли в стол.»
|
|
277
|
+
|
|
278
|
+
**60. Портретное введение героя.** ИИ вводит персонажа внешним описанием в 52% историй, человек в 30%: рост, возраст, причёска и характер анкетой при первом появлении. Человек чаще знакомит через поступок или реплику, а портрет раздаёт по ходу, если он вообще нужен. За пределами беллетристики не измерялось: на клиента в кейсе и знакомого в посте переносится как гипотеза, не как замер. Проверь первое появление каждого героя: характеристику-анкету перепиши в конкретное действие или прямую речь. Ввод через реплику или действие - устойчивый человеческий признак; ранжирования признаков по силе статья не даёт, «топ-1» здесь не заявляй.
|
|
279
|
+
|
|
280
|
+
До: «Анна была высокой женщиной сорока лет, с усталыми глазами и строгим пучком тёмных волос.»
|
|
281
|
+
После: «Анна не поздоровалась и сразу спросила, кто перенёс срок.»
|
|
282
|
+
|
|
283
|
+
До: «Игорь — опытный, методичный разработчик, привыкший всё держать под контролем.»
|
|
284
|
+
После: «Игорь откатил релиз, никого не спросив.»
|
|
285
|
+
|
|
286
|
+
**61. Эмоция только через тело.** Контринтуитивный маркер: телесной метафорой злоупотребляет ИИ, не человек. Меряется это одной фичей с четырьмя взаимоисключающими вариантами («доминирующий способ подачи эмоции»), то есть речь о том, какой способ в истории ГЛАВНЫЙ, а не о доле эмоций. Телесная подача доминирует в 81% историй ИИ и в 38% человеческих: «сердце сжалось», «ком в горле», «холодок по спине». Прямое называние чувства доминирует, наоборот, чаще у людей: 29% против 8% у ИИ. Писать «почти каждая эмоция подана через тело» из этих цифр нельзя, они про другое. Люди спокойно пишут «мне было страшно» и «до сих пор стыдно»; модель прячет эмоцию в тело; похоже на переусердствование с правилом «show, don't tell», но причин статья не разбирает. Сигнал: по всему тексту чувства поданы исключительно телом и ни разу не названы. Это предложение автору, не автоправка: что именно чувствовал герой, знает автор. Предложи назвать одну-две эмоции прямо, решение за ним.
|
|
287
|
+
|
|
288
|
+
**62. Бесшовная причинная цепь.** У ИИ события чаще плотно вытекают одно из другого: непрерывность каузальной цепи 4.20 против 3.92 у человека. Это средние по шкале 1-5, сдвиг на 0.28 пункта, а не два разных мира: признак вспомогательный, «ИИ всегда пишет без швов» отсюда не следует. Живая история содержит швы: совпадение, случайность, ветку, которая никуда не привела. Проследи цепь событий целиком; если на весь текст ни одного провисания и ни одной случайности, это сигнал. Лечится одним швом: событие без подготовки, деталь, которая не выстрелила. Родня #44, но зеркально: там гладкость фраз-связок, здесь гладкость самих событий. С #34 не конфликтует: там абзацы рассуждения связаны слабо, здесь события истории связаны слишком хорошо. Автосканером не ловится, оценка только по прочтении.
|
|
289
|
+
|
|
290
|
+
**63. Строго линейная хронология.** Человек прыгает во времени несколько чаще ИИ: хронологическая прерывистость 2.40 против 2.12, средние по шкале 1-5, тот же сдвиг на 0.28 пункта. Флешбек, забегание вперёд («забегая вперёд: клиент вернулся»), возврат к предыстории в середине. ИИ склоняется к календарному порядку, но это склонность, а не закон. На длинном тексте подача строго по порядку, без единого сдвига - сигнал, и сам по себе слабый: взвешивай вместе с остальными пятью. Предложи один сдвиг таймлайна там, где он усиливает: начать с развязки, вспомнить предысторию в середине. Короткий текст не трогай: на нём линейность нормальна.
|
|
291
|
+
|
|
292
|
+
**64. Нет обращения к читателю.** Человек говорит с читателем напрямую чаще ИИ: порядковое среднее 0.28 против 0.07 (собственная проза статьи передаёт это как «28% против 7%»). В абсолютных числах это один из НАИМЕНЬШИХ разрывов таблицы, так что признак вспомогательный: сам по себе он ничего не доказывает. Вопрос в лоб, «представьте», «вы наверняка такое видели». Сигнал здесь - отсутствие, поэтому сканер его не считает: смотри глазами. Применяй только там, где формат обращение допускает: пост, рассылка, колонка, лендинг. В новость, документацию и научный текст не тащи. Это предложение автору, не автоправка: обращение меняет интонацию всего текста, вставлять его молча нельзя. Предложи одно-два места, решает автор.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Быстрый сканер: слова-маркеры AI
|
|
297
|
+
|
|
298
|
+
Для режима «Аудит» или быстрой проверки ищи эти слова/фразы. Наличие 3+ из списка = высокая вероятность AI-генерации.
|
|
299
|
+
|
|
300
|
+
**Канцелярит-маркеры:** осуществление, реализация, внедрение, оптимизация, функционирование, взаимодействие, в рамках, в целях, в контексте, на основе, посредством, в соответствии с, внимание уделяется, внимание уделено, посвящена анализу/изучению/разработке
|
|
301
|
+
|
|
302
|
+
**Кальки-маркеры:** является, стоит отметить, важно понимать, можно сказать, что касается, в то время как, с другой стороны, тем не менее, несмотря на то что, исследование фокусируется на (this study focuses on)
|
|
303
|
+
|
|
304
|
+
**Раздувание-маркеры:** ключевой, важнейший, значительный, огромный, колоссальный, переломный, фундаментальный, невозможно переоценить, играет роль
|
|
305
|
+
|
|
306
|
+
**Формула-маркеры:** таким образом, подводя итог, в заключение, можно сделать вывод, суммируя вышесказанное, на основании вышеизложенного
|
|
307
|
+
|
|
308
|
+
**Чатбот-маркеры:** конечно!, отличный вопрос, давайте разберёмся, рад помочь, надеюсь это было полезно, с удовольствием
|
|
309
|
+
|
|
310
|
+
**Параллелизм-маркеры:** не просто... а, не только... но и, «это не X — это Y»
|
|
311
|
+
|
|
312
|
+
**Вводные-маркеры:** в современном мире, в эпоху, не секрет что, всё чаще, по мнению экспертов, специалисты отмечают
|
|
313
|
+
|
|
314
|
+
**Ритм-маркеры (DivEye):** все предложения примерно одной длины (±5 слов), каждый переход через союз/вводное, нет ни одного резкого переключения темы, ни одного предложения короче 5 слов или длиннее 25
|
|
315
|
+
|
|
316
|
+
**Структурные маркеры (macro):** все пункты списка одной длины, одинаковые зачины пунктов («Один... второй», «Для X...», «Подходит для...»), один тип объяснения во всех блоках
|
|
317
|
+
|
|
318
|
+
**Модальные хеджи:** может стать, может повлиять, может быть полезным, способен обеспечить, призван решить, позволяет достичь
|
|
319
|
+
|
|
320
|
+
**Мотивационные клише:** раскрыть потенциал, погрузимся, вывести на новый уровень, открывает новые горизонты, открывает новые возможности, расширить границы, комплексный подход
|
|
321
|
+
|
|
322
|
+
**Контекстуализаторы:** в условиях, в свете, на фоне, с учётом, принимая во внимание, в связи с этим
|
|
323
|
+
|
|
324
|
+
**Маркетинговые штампы:** связь с аудиторией, доверительные отношения, ключевой момент, ключевая роль, индивидуальный подход, инновационное решение
|
|
325
|
+
|
|
326
|
+
**Псевдо-сократические маркеры:** «Зачем? Потому что.», «И что? А то», «Почему? Сейчас расскажу.», цепочки коротких вопросов-ответов
|
|
327
|
+
|
|
328
|
+
**Авторитетные трюизмы:** вот ключевой вывод, «самое важное — это», «первый шаг — это», по своей сути, в конечном счёте
|
|
329
|
+
|
|
330
|
+
**Псевдо-терапевтические маркеры:** ты не ошибаешься, ты имеешь право, тихое подтверждение, это не слабость, ты настоящий, сам факт этого
|
|
331
|
+
|
|
332
|
+
**Эмодзи-маркеры:** ⚡/✨/🎯/🔥/💡 в начале каждого пункта списка или заголовка
|
|
333
|
+
|
|
334
|
+
**Фигуративный ноль:** проверь наличие метафор, идиом, пословиц, аналогий из другой области. Если в тексте >300 слов НИ ОДНОЙ, подозрительно
|
|
335
|
+
|
|
336
|
+
**Пустая образность:** яркие глаголы-образы без референта («думает молча», «загорается», «чует», «просвечивает», «схватывает суть»): проверь, что каждый обналичивается в конкретный механизм; образ, обналиченный в неверный механизм, хуже пустого
|
|
337
|
+
|
|
338
|
+
**Самомаркировка честности:** «вот честный список», «буду откровенен», «скажу без прикрас», «без воды», «объективный разбор» о собственном тексте, 2+ на текст; одиночное разговорное «честно говоря» и жанровый заголовок «честный обзор» не считать
|
|
339
|
+
|
|
340
|
+
**Неодушевлённый субъект:** «исследование подчёркивает», «проект демонстрирует», «платформа обеспечивает», «здание отражает»: предмет или абстракция при глаголе намерения
|
|
341
|
+
|
|
342
|
+
**Триада-отрицание:** «Без X. Без Y. Просто Z», «Ни X. Ни Y. Только Z»: два отрицания и вывод короткими предложениями
|
|
343
|
+
|
|
344
|
+
**Финальная мораль:** «мораль этой истории», «эта история учит нас», «эта история о том, что», а также «мораль проста»/«мораль такова» последней фразой текста: нарратор проговаривает вывод за читателя (паттерн #59). Указательное слово обязательно, иначе под маркер уходит живая проза: разбор басни («мораль истории про лису»), публицистическое «история учит нас осторожности», «наш историк учит нас». Сканер ловит только шаблонные формулы; мораль, изложенную без них, оценивай по прочтении
|
|
345
|
+
|
|
346
|
+
**Title Case в заголовках:** «Ранняя Жизнь и Образование»: два и больше нарицательных слова заголовка с заглавной буквы
|
|
347
|
+
|
|
348
|
+
**Обрыв на полуслове:** последнее предложение не закончено, текст упёрся в лимит токенов
|
|
349
|
+
|
|
350
|
+
**Технические маркеры:** латинские символы вместо кириллических (c, o, a, e, p), «невидимые» символы (zero-width, word joiner, bidi-метки: клавиатурой не набираются), идеальная типографика в неформальном тексте
|
|
351
|
+
|
|
352
|
+
**Артефакты копипасты:** технические следы копирования из интерфейса чат-бота, однозначные улики: `:contentReference[oaicite:N]`, `oai_citation`, `?utm_source=chatgpt.com`/`=openai` в ссылках, `grok_card://`, `attached_file://`, `vertexaisearch`, метки `turnNsearchN`/`turnNfileN`/`citeturn...`, `【N†source】`, `[citation:N]`, ссылки `](sandbox:/mnt/data/...)`, невидимые символы U+E200-E204, остатки `</think>`. В человеческом тексте не встречаются: нашёл хотя бы один = текст вставлен из чат-бота, проверяй целиком
|
|
353
|
+
|
|
354
|
+
Подсчёт: 0-2 маркера = скорее всего чистый текст. 3-5 = подозрительно. 6+ = AI-генерация с высокой вероятностью. Артефакт копипасты = однозначный вердикт сразу.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""humanizer_metrics — детерминированные метрики живости текста.
|
|
2
|
+
|
|
3
|
+
Это грепабельная половина режима «Аудит» из SKILL.md: то, что считается
|
|
4
|
+
машиной, а не LLM. Используется и как локальный буст для Claude Code, и как
|
|
5
|
+
движок eval-харнеса (eval/run_eval.py), и как self-test самого скилла
|
|
6
|
+
(scripts/lint_skill.py).
|
|
7
|
+
|
|
8
|
+
Семантику (кальки, ирония, translationese, голос) тут не ловим — для этого
|
|
9
|
+
нужен сам скилл. Скрипты не работают в claude.ai web; скилл от них не зависит.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from dataclasses import dataclass
|
|
15
|
+
|
|
16
|
+
from .burstiness import RhythmStats, rhythm, rhythm_verdict
|
|
17
|
+
from .markers import (
|
|
18
|
+
MarkerHit,
|
|
19
|
+
marker_verdict,
|
|
20
|
+
scan_hard_bans,
|
|
21
|
+
scan_markers,
|
|
22
|
+
)
|
|
23
|
+
from .morphology import MorphStats, morph_stats, morph_verdict
|
|
24
|
+
from .structure import StructureStats, structure_stats, structure_verdict
|
|
25
|
+
from .score import ScoreResult, cleanliness_score
|
|
26
|
+
|
|
27
|
+
__all__ = [
|
|
28
|
+
"Report",
|
|
29
|
+
"analyze",
|
|
30
|
+
"RhythmStats",
|
|
31
|
+
"MorphStats",
|
|
32
|
+
"StructureStats",
|
|
33
|
+
"MarkerHit",
|
|
34
|
+
"ScoreResult",
|
|
35
|
+
"cleanliness_score",
|
|
36
|
+
"rhythm",
|
|
37
|
+
"morph_stats",
|
|
38
|
+
"structure_stats",
|
|
39
|
+
"scan_hard_bans",
|
|
40
|
+
"scan_markers",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@dataclass
|
|
45
|
+
class Report:
|
|
46
|
+
hard_bans: list[MarkerHit]
|
|
47
|
+
markers: list[MarkerHit]
|
|
48
|
+
rhythm: RhythmStats
|
|
49
|
+
morph: MorphStats
|
|
50
|
+
structure: StructureStats
|
|
51
|
+
|
|
52
|
+
@property
|
|
53
|
+
def hard_ban_count(self) -> int:
|
|
54
|
+
return sum(h.count for h in self.hard_bans)
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def marker_count(self) -> int:
|
|
58
|
+
return sum(h.count for h in self.markers)
|
|
59
|
+
|
|
60
|
+
def as_dict(self) -> dict:
|
|
61
|
+
return {
|
|
62
|
+
"hard_ban_count": self.hard_ban_count,
|
|
63
|
+
"hard_bans": [(h.marker, h.count) for h in self.hard_bans],
|
|
64
|
+
"marker_count": self.marker_count,
|
|
65
|
+
"markers": [(h.category, h.marker, h.count) for h in self.markers],
|
|
66
|
+
"rhythm": self.rhythm.as_dict(),
|
|
67
|
+
"morph": self.morph.as_dict(),
|
|
68
|
+
"structure": self.structure.as_dict(),
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def analyze(text: str) -> Report:
|
|
73
|
+
"""Полный детерминированный прогон текста."""
|
|
74
|
+
return Report(
|
|
75
|
+
hard_bans=scan_hard_bans(text),
|
|
76
|
+
markers=scan_markers(text),
|
|
77
|
+
rhythm=rhythm(text),
|
|
78
|
+
morph=morph_stats(text),
|
|
79
|
+
structure=structure_stats(text),
|
|
80
|
+
)
|