Анализатор частоты символов
Подсчёт частоты каждого символа в тексте
Настройки
排序
Что такое частотный анализ символов?
Анализ частоты символов считает, сколько раз каждый символ встречается в тексте и какую долю занимает. В зависимости от ввода учитываются буквы, цифры, знаки пунктуации, пробелы, CJK-символы, специальные знаки и скрытые управляющие символы. Это полезно для криптографических упражнений, простого анализа подстановки, извлечения текстовых признаков, очистки данных, проверки кодировки, идей сжатия и контроля качества импортированного контента. Необычные частоты могут показать невидимые форматные символы, неверную декодировку, повторяющиеся разделители, неожиданный язык или следы копирования. Инструмент не объясняет причину автоматически, но дает измеримую картину распределения. Для опубликованного или многоязычного контента результат нужно проверить по языку, charset, контексту и edge cases.
Как использовать
Как использовать
- Введите или вставьте текст в поле ввода
- Система автоматически подсчитывает количество вхождений и частоту каждого символа
- Используйте параметры сортировки, чтобы упорядочить результаты по символу или количеству
- Настройте параметры (учёт регистра, пробелов, переносов строк)
Область подсчёта
- Перед сравнением текстов решите, нужно ли учитывать пробелы, знаки препинания, регистр и переносы строк.
- В многоязычных текстах учитывайте, что эмодзи, составные символы и иероглифы CJK могут вести себя иначе, чем одиночные латинские буквы.
Применение
Технический принцип
Частотный анализ символов подсчитывает количество вхождений каждого символа в тексте. Реализация использует хеш-таблицу (обычно Map в JavaScript): 1) обход текста посимвольно, 2) для каждого символа увеличивается счётчик в карте, 3) записи сортируются по убыванию количества, 4) рендерится гистограмма (первые 10–20 символов, остальные в хвостовой группе). Алгоритм имеет сложность O(N) по длине текста, где N — количество символов, а основные затраты приходятся на поиск и инкремент в карте (фактически бесплатно в V8 и SpiderMonkey для типичного случая). Важный нюанс: что считается символом? В JavaScript .length возвращает количество кодовых единиц UTF-16, а не Unicode-кодовых точек. Символ за пределами базовой многоязычной плоскости (эмодзи, редкие CJK-идеограммы) кодируется суррогатной парой (две кодовые единицы), и наивный подсчёт по кодовым единицам завысит результат, treating каждую половину суррогата как отдельный символ. Страница использует Array.from(text) или Intl.Segmenter для итерации по кодовым точкам (или графемным кластерам), что является правильным определением символа для большинства случаев. Полезное применение: частотный анализ — классическая техника взлома подстановочных шифров (шифр Цезаря, Виженера, простая подстановка). Распределение частот английских букв хорошо известно (E, T, A, O, I, N, S, H, R — самые частые, в этом приблизительном порядке), а подстановочный шифр сохраняет частотное распределение, поэтому самая частая буква шифротекста, вероятно, соответствует E, вторая — T и так далее. Страница — учебный инструмент, а не инструмент криптоанализа, но техника та же. Оговорка по Unicode: для CJK-языков распределение частот символов зависит от корпуса (современный роман, классическая поэзия, технический текст) и уровня анализа (символ, слово, биграмма, триграмма). Частотный анализ современного китайского романа даёт одно распределение; частотный анализ «Бесед и суждений» — другое. Страница не зависит от корпуса, поэтому пользователь может запустить её на любом тексте.
- Хеш-таблица (Map в JS): обход текста, инкремент счётчика, сортировка по убыванию, рендер гистограммы; O(N) по длине текста с очень быстрой стоимостью на символ.
- Суррогатные пары: символ за пределами BMP (эмодзи, редкие CJK) — это две кодовые единицы UTF-16; наивный подсчёт по кодовым единицам завышает; используйте Array.from или Intl.Segmenter.
- Криптоанализ подстановочных шифров: частоты английских букв E, T, A, O, I, N, S, H, R (самые частые в этом порядке); подстановочный шифр сохраняет распределение.
- Частота CJK: зависит от корпуса (современный роман, классическая поэзия, технический текст) и уровня анализа (символ, слово, биграмма); страница не зависит от корпуса.
- Первые N и хвост: страница по умолчанию рендерит первые 10–20 символов по частоте, с хвостовой группой для остальных; полезно для выявления паттернов в плотном тексте.
- Учёт регистра: страница предоставляет переключение регистрозависимости/регистронезависимости; английский обычно регистронезависим (E и e — одна буква, просто разные начертания), CJK всегда регистронезависим (нет понятия регистра).
- Производительность: O(N) для подсчёта, O(K log K) для сортировки K различных символов; страница обрабатывает тексты в 1 млн символов значительно быстрее секунды, что является production-паттерном.
Примеры
Анализ английского текста
Вход "hello world" → Результат: 'l' встречается 3 раза (27.3 %), 'o' встречается 2 раза (18.2 %)Анализ китайского текста
Вход "我爱中国我爱北京" → Результат: '我' и '爱' встречаются по 2 раза каждый (25 %)Сравнение распределения частот
Английский текст: 'e' максимально ~12.7 %; китайский: '的' максимально ~4 %Часто задаваемые вопросы
Что считает анализатор?
Каждый уникальный символ и сколько раз он встречается, отсортированные по частоте. Полезно для криптоанализа (английский текст имеет предсказуемую частотность букв, начиная с E, T, A, O), для профилирования текста и для поиска неожиданных символов в скопированном документе.
Учитываются ли пробельные символы?
По умолчанию да — пробелы, табуляции и переводы строк получают свои строки в таблице. Включите «игнорировать пробельные символы», если вам нужны только печатаемые символы. Пробельные символы обычно — самый частый «символ» в тексте на естественном языке (~20%).
Учитывается ли регистр?
По умолчанию да — «A» и «a» считаются разными. Включите «игнорировать регистр», чтобы объединить их, что обычно используется для анализа естественного языка. Для анализа кода или хешей регистр имеет значение.
Работает ли это с китайским, японским, корейским?
Да. Каждый CJK-иероглиф считается отдельно. В таблице частот для китайского абзаца естественным образом окажутся сотни различных иероглифов, поскольку у китайского нет общего алфавита. Инструмент корректно работает с Unicode через подсчёт графемных кластеров.
Можно ли увидеть частоту в процентах?
Да, страница обычно показывает количество и процент от общего числа. Это удобно для сравнения распределения букв с известными эталонными распределениями при взломе простых шифров замены.
Почему сумма процентов не равна 100?
Округление. Каждое значение округляется до фиксированного числа знаков после запятой; сумма округлённых процентов может отличаться от 100% на десятые доли. Для точного итога суммируйте сами счётчики.
Загружается ли мой текст куда-либо?
Нет. Частотный анализ выполняется в вашем браузере. Вставленный текст никуда не передаётся.