KG_Complexity_Filter — анализатор сложности текстаСкрипт для Tampermonkey, предназначенный для детального анализа сложности текстов.Позволяет оценить сложность текста ещё до начала заезда, определить потенциально проблемные места, проанализировать распределение нагрузки между руками и пальцами, а также получить подробную статистику по используемой раскладке.
На данный момент поддерживается анализ для следующих раскладок:
•
ЙЦУКЕН (русский язык)
•
QWERTY (английский язык)
Поддерживается:
• Русский и английский интерфейс
• Светлая и тёмная темы оформления
• Свободное перемещение панели по экрану
• Автоматическое сохранение положения панели
• Автоматическое определение языка текста с выбором соответствующей раскладки (ЙЦУКЕН/QWERTY)
═══════════════════════════════════════════1. Общая оценка сложности текста═══════════════════════════════════════════После анализа текста скрипт вычисляет итоговый рейтинг сложности и отображает его в виде числовой оценки и текстовой категории.
Оценка формируется на основании множества факторов и позволяет быстро понять, насколько комфортным будет набор данного текста.
На скриншоте анализируемый текст получил оценку
57 и относится к категории
«Средне».
═══════════════════════════════════════════2. Основные показатели анализа═══════════════════════════════════════════В верхней части панели отображается сводная статистика:
•
Средняя стоимость символа — средняя сложность набора одного символа
•
Количество символов — размер анализируемого текста
•
Сложные зоны — процент проблемных участков
•
Длинные слова — доля длинных слов в тексте
•
Раскладка анализа — автоматически выбранная раскладка для текущего языка текста
•
Цифровой ряд — количество символов, требующих использования верхнего цифрового ряда
Эти показатели позволяют быстро оценить характер текста без изучения детальной статистики.
═══════════════════════════════════════════3. Распределение уровней сложности═══════════════════════════════════════════Цветовая диаграмма показывает соотношение лёгких, средних и сложных фрагментов в анализируемом тексте.
По ней можно быстро оценить общий характер текста и понять, преобладают ли в нём простые участки или большое количество сложных сочетаний.
═══════════════════════════════════════════4. Баланс между руками═══════════════════════════════════════════Отдельная шкала отображает распределение нагрузки между левой и правой рукой.
Это позволяет увидеть:
• Насколько равномерно используется клавиатура
• Есть ли сильный перекос в сторону одной руки
• Насколько комфортным будет длительный набор текста
На приведённом примере нагрузка распределена примерно как
47% / 53%.
═══════════════════════════════════════════5. Система штрафов сложности═══════════════════════════════════════════Скрипт показывает вклад различных факторов в итоговую сложность текста.
Среди них:
• Набор одним пальцем
• Внешние перекаты
• Прыжки по рядам клавиатуры
• Базовая стоимость сочетаний
Каждый фактор отображается в процентах относительно общей оценки сложности.
Это помогает понять, почему конкретный текст оказался сложнее или проще ожидаемого.
═══════════════════════════════════════════6. Нагрузка на пальцы═══════════════════════════════════════════Диаграмма показывает нагрузку на каждый палец обеих рук.
С помощью неё можно определить:
• Какие пальцы используются чаще всего
• Какие зоны клавиатуры перегружены
• Насколько равномерно распределён набор
Высота столбцов напрямую отражает интенсивность использования соответствующих пальцев.
═══════════════════════════════════════════7. Сложные биграммы═══════════════════════════════════════════В отдельном блоке выводятся наиболее затратные двухбуквенные сочетания, обнаруженные в тексте.
Для каждой биграммы отображается её суммарный вклад в сложность.
Это позволяет быстро выявить сочетания букв, которые чаще всего становятся причиной снижения скорости набора.
═══════════════════════════════════════════8. Сложные слова═══════════════════════════════════════════Отдельный список содержит слова с наибольшей стоимостью набора.
Для каждого слова выводится его рассчитанная сложность.
Такие слова обычно оказывают наибольшее влияние на результат заезда и чаще приводят к ошибкам или потере темпа.
═══════════════════════════════════════════9. Цветовая разметка текста═══════════════════════════════════════════В нижней части панели отображается полный текст с подсветкой сложности отдельных фрагментов.
● Лёгкие участки● Средняя сложность● Наиболее сложные сочетания и словаБлагодаря этому можно мгновенно определить проблемные места текста ещё до начала заезда.
═══════════════════════════════════════════10. Демонстрация работы и установка═══════════════════════════════════════════10.1. Видео демонстрацияЕсли не хочется читать всё описание, можно посмотреть короткую демонстрацию работы скрипта:
Видео: Демонстрация KG_Complexity_Filter10.2. Установка скриптаДля установки необходим браузер с расширением Tampermonkey.
Ссылки для установки:GitHubGreasyFork═══════════════════════════════════════════11. Как работает алгоритм оценки сложности═══════════════════════════════════════════Этот раздел объясняет, из чего складывается итоговая оценка и почему два внешне похожих текста могут получить совершенно разные баллы.
11.1. Стоимость одного символаКаждый символ текста получает числовую стоимость, складывающуюся из нескольких независимых слагаемых:
•
Ряд клавиатуры — домашний ряд даётся легче всего (×1.0), верхний сложнее (×1.5), нижний ещё сложнее (×2.5), цифровой ряд — наиболее затратный (×2.5 + отдельная надбавка за цифру).
•
Палец — указательные пальцы самые ловкие, мизинцы — нет. Стоимость нарастает от указательного (0.5) к мизинцу (2.0).
•
Редкость буквы — редко встречающиеся в языке буквы стоят дороже: для них слабее выработан автоматизм. Пенальти вычисляется через нормированную частоту относительно самой распространённой буквы (для русского — «о», для английского — «e»).
•
Пробел / перевод строки — фиксированная стоимость 0.5 (короткий отдых для рук).
•
Знак препинания — добавляется надбавка за «ритмический разрыв»: пунктуация ломает равномерный ритм набора.
•
Shift — удержание Shift одновременно с нажатием клавиши стоит 3.0. Исключение: если подряд идёт 4 и более заглавных — алгоритм считает, что включён Caps Lock, и надбавка снимается.
•
Неизвестный символ — символ, которого нет в раскладке, получает максимальный штраф (3.5 + надбавки за Shift и ритмический разрыв).
Сумма этих компонентов и есть «сырая» стоимость символа.
11.2. Биграммная надбавкаПосле вычисления стоимости самого символа к нему добавляется стоимость его
перехода от предыдущего символа — биграммный компонент. Он состоит из нескольких частей:
•
Одним пальцем (same-finger) — два разных символа на одном физическом пальце подряд: самый дорогой переход (+3.0). Растяжки указательного (4-я и 5-я позиции) считаются одним пальцем.
•
Одна рука (same-hand) — переход внутри одной руки дороже, чем чередование рук. Базовая надбавка +0.8, плюс небольшой штраф за каждую колонку расстояния между пальцами (+0.15 на колонку).
•
Внешний перекат (outward roll) — движение от указательного к мизинцу (для левой руки — вправо-влево, для правой — влево-вправо) менее естественно, чем внутренний перекат. Надбавка +0.5.
•
Ножницы (scissor) — соседние пальцы одной руки одновременно задействуют ряды с разницей ≥2 (например, указательный на домашнем ряду, средний на цифровом): физически неудобное движение. Штраф +0.8.
•
Прыжок по рядам (row jump) — чем дальше ряды двух клавиш в биграмме, тем больше надбавка (+0.6 × количество рядов между ними).
•
Чередование Shift — если следующий символ требует Shift, а клавиша находится на той же стороне, что и Shift (например, правый Shift + правая клавиша) — это неудобно, штраф +0.4. Обратная ситуация (разные стороны) поощряется небольшим вычетом −0.3.
11.3. Триграммная надбавка (редирект)Для каждого символа, начиная с третьего, анализируется тройка предшествующих символов. Если все три расположены на одной руке и направление движения пальцев меняется («рука пошла вправо, потом развернулась влево») — это называется
редиректом. Редиректы нарушают плавность и добавляют +0.6 к стоимости третьего символа.
11.4. Надбавки за накопленную нагрузкуНекоторые факторы влияют не на отдельный символ, а на серию:
•
Серия одной рукой (hand run) — если одна рука работает непрерывно более 4 символов подряд, каждый следующий символ получает нарастающую надбавку (+0.12 за каждый сверхнормативный символ). Переключение на другую руку сбрасывает счётчик.
•
Кластер пунктуации — несколько знаков препинания подряд (кавычка-дефис, многоточие и т. п.) дороже, чем по одному: каждый последующий получает +0.3 к предыдущей надбавке.
•
Усталость пальца (fatigue) — отслеживается количество нажатий на каждый палец в скользящем окне последних ~36 символов. Если палец нажат более 12 раз в этом окне — каждое следующее нажатие дороже на +0.08. Окно скользящее: как только палец отдыхает, накопленная «усталость» убывает.
11.5. Множитель длинного словаПосле обработки всех символов слова алгоритм проверяет его длину. Слова длиннее 8 букв получают мультипликативный штраф: каждая буква сверх нормы добавляет +10% к стоимости всего слова (не только хвоста). Множитель ограничен сверху значением 2.0, то есть очень длинное слово стоит не более чем вдвое дороже нормального.
Именно эти символы подсвечиваются в текстовом виде как
«длинное слово».
11.6. Итоговый балл: от суммы к процентуПосле того как стоимость каждого символа посчитана с учётом всех надбавок и множителей:
1. Вычисляется
средняя стоимость символа (avg) — сумма всех стоимостей делится на число символов.
2. К средней добавляется поправка на
разброс: avg + 0.25 × √дисперсия. Это делает оценку чувствительной к всплескам сложности — текст с равномерной средней трудностью будет лучше оцениваться, чем текст с такой же средней, но редкими тяжёлыми вспышками.
3. Прибавляется
штраф за дисбаланс рук: если одна рука загружена значительно сильнее другой, к сумме добавляется до 0.6 × степень перекоса.
4. Результат нормируется к шкале 0–100 (делится на внутренний максимум 9.0 и умножается на 100, значения выше 100 обрезаются).
Итог: 0–34 — «Легко», 35–64 — «Средне», 65–100 — «Сложно».
11.7. Что значат «Сложные зоны» в статистикеДля цветовой разметки текста и расчёта процента сложных зон используется
скользящее окно ±4 символа. Для каждого символа берётся средняя стоимость его ближайших соседей — это сглаживает одиночные всплески и позволяет выделять реально плотные сложные участки, а не отдельные случайные клавиши.
• Сглаженная стоимость < 3.0 →
лёгкий участок
• 3.0 ≤ стоимость < 5.5 →
средний участок
• Стоимость ≥ 5.5 →
сложный участок
Процент «сложных зон» в шапке панели — это доля символов, попавших в красную категорию.
11.8. Наихудшая зонаИз всех красных участков выбирается один с наибольшей
суммарной стоимостью (при минимальной длине 4 символа). Именно он выделяется в тексте дополнительной обводкой. Если красных участков нет — берётся лучший жёлтый участок.
11.9. Разбивка по факторам (штрафная диаграмма)Все накопленные биграммные надбавки суммируются по типам и показываются в виде пропорциональной полосы. «Базовая стоимость» (other) включает стоимость ряда, пальца, частоты, ритмических разрывов, серий одной рукой и усталости пальца — то есть всё, что не относится к биграммным взаимодействиям. Так можно понять, чем именно «тяжёл» конкретный текст: одной рукой, неудобными биграммами или просто непривычными клавишами.
═══════════════════════════════════════════Обратная связь═══════════════════════════════════════════Проект разрабатывался с использованием
Claude AI. Все промпты, требования к функционалу, алгоритмам анализа и логике работы скрипта были подготовлены мной.
Поскольку проект ещё находится в стадии развития, приветствуются любые замечания, предложения и сообщения о найденных недостатках.
Конструктивная обратная связь поможет улучшить существующие алгоритмы анализа, скорректировать неточности и определить направления дальнейшего развития проекта. На основе полученных замечаний будут формироваться новые задачи и промпты для доработки и расширения функционала скрипта.
Последний раз отредактировано 12 июня 2026 в 00:26 пользователем ПОТРОШИТЕЛЬЧАТА