ToolActToolAct

문자 빈도 분석 도구

텍스트에서 각 문자의 출현 횟수와 빈도 분석

텍스트 입력

옵션

총 문자 수
0
고유 문자 수
0

排序

옵션

频率分布
데이터가 없습니다. 텍스트를 입력하세요.

문자 빈도 분석이란?

문자 빈도 분석 도구는 텍스트에서 각 문자의 출현 횟수와 빈도를 분석합니다. 암호 분석, 텍스트 특성 추출, 인코딩 탐지 등에 유용합니다. 문자 빈도를 분석하면 텍스트의 문자 분포 특성을 빠르게 파악하고, 비정상적인 문자를 발견하거나, 데이터 압축 연구에 활용할 수 있습니다. 대소문자 구분, 공백 및 줄바꿈 처리 옵션을 지원합니다. 한국어, 이모지, 결합 문자처럼 하나의 글자가 여러 코드 포인트로 표현될 수 있는 텍스트는 분석 기준에 따라 빈도 결과가 달라질 수 있습니다.

사용 방법

사용 방법

  1. 입력 영역에 텍스트를 입력하거나 붙여넣으세요
  2. 시스템이 각 문자의 출현 횟수와 빈도를 자동으로 계산합니다
  3. 정렬 옵션을 사용하여 문자 또는 횟수별로 결과를 정렬하세요
  4. 옵션을 조정하세요 (대소문자 구분, 공백, 줄바꿈)

카운팅 범위

  • 텍스트를 비교하기 전에 공백, 구두점, 대소문자, 줄바꿈을 포함할지 여부를 결정하세요.
  • 다국어 텍스트의 경우 이모지, 합성 문자, CJK 문자가 단일 라틴 문자처럼 작동하지 않을 수 있습니다.

활용 사례

혼란스러운 로그, OCR 출력, 키워드 목록 프로파일링하기복사한 로그, OCR 출력, 키워드 목록, 인코딩 문자열을 붙여넣으면 총 문자 수, 고유 문자 수, 횟수, 비율, 빈도순 시각 막대를 확인할 수 있습니다. 횟수순으로 정렬하면 지배적인 기호를 파악하고, 문자순으로 정렬하면 알파벳 순서를 스캔할 수 있습니다. 이런 분포 스냅샷은 입력을 정리, 분류, 폐기할지 결정하기 전의 첫 단계입니다.
보이지 않는 공백과 대소문자 문제 노출하기대소문자 구분, 공백 무시, 줄바꿈 무시 옵션을 토글하면 중복, 파서 실패, 레이아웃 문제가 보이지 않는 구분자나 대소문자 차이 때문인지 확인할 수 있습니다. 구분하여 카운트된 쌍과 합산된 실행을 비교하면 어떤 문자가 텍스트 크기를 조용히 두 배로 늘리고 있는지 드러납니다. 수천 행에 걸쳐 하나의 non-breaking space가 있으면 테이블에 작지만 실제 비율로 나타납니다.
정리 규칙과 검증기를 위한 근거 준비하기교체 규칙, 검증 로직, 언어 학습 자료, 퍼즐 검증, 말뭉치 정리 노트를 작성하기 전에 문자 또는 횟수순으로 정렬하면 정확한 문자 분포에 의존하는 작업에 측정 가능한 근거를 제공합니다. 빈도 테이블을 리뷰어와 공유하면 규칙과 대상 데이터가 정렬된 상태를 유지합니다.
깨진 문자, 스마트 따옴표, BOM 마커 발견하기의심 문자열에 대해 분석을 실행하면 잘못된 인코딩, 스마트 따옴표 치환, 복사된 텍스트의 stray BOM 마커를 의미하는 비정상적인 클러스터의 치환 문자, 결합 마커, 비인쇄 바이트를 발견할 수 있습니다. U+FFFD의 급격한 증가나 짧은 샘플에서 이상한 빈도를 가진 단일 문자는 보통 상위 문자셋 불일치를 의미합니다.
코드 포인트, 서로게이트 쌍, ZWJ 이모지 구분하기단순 횟수를 넘어, 분석기는 코드 포인트와 그래핌 클러스터의 차이를 보여줍니다. 깃발 이모지인 🏳️‍🌈는 ZWJ로 결합된 여러 코드 포인트로 렌더링되고, 수학 기호는 단일 코드 포인트이거나 서로게이트 쌍일 수 있습니다. 합계를 코드 포인트 합계로 취급하면 ZWJ 시퀀스와 서로게이트 쌍이 주변 텍스트로 합쳐지지 않고 테이블에서 보이게 됩니다.

기술 원리

문자 빈도 분석은 텍스트에서 각 문자의 출현 횟수를 셈합니다. 구현은 해시 테이블(JavaScript에서는 보통 Map)을 사용합니다: 1) 텍스트를 한 문자씩 순회, 2) 각 문자에 대해 맵의 카운트를 증가, 3) 카운트를 기준으로 내림차순 정렬, 4) 히스토그램 렌더링(상위 10-20개 문자, 나머지는 꼬리 버킷). 알고리즘은 텍스트 길이 N에 대해 O(N)이며, 주요 비용은 맵 조회와 증가(V8과 SpiderMonkey에서 일반적인 경우 거의 무료)입니다. 중요한 세부 사항: 무엇이 하나의 문자인가? JavaScript에서 .length는 유니코드 코드 포인트가 아닌 UTF-16 코드 단위 수를 반환합니다. 기본 다국어 평면(BMP) 외부의 문자(이모지, 희한한 한자)는 서로게이트 쌍(코드 단위 2개)으로 인코딩되며, 코드 단위 단위의 단순 카운트는 각 서로게이트 절반을 별도 문자로 취급하여 과대 집계됩니다. 이 페이지는 Array.from(text) 또는 Intl.Segmenter를 사용하여 코드 포인트(또는 그래프임 클러스터)를 순회하며, 이것이 대부분의 사용 사례에서 올바른 문자 정의입니다. 유용한 활용: 빈도 분석은 치환 암호(시저, 비제네르, 단순 치환)를 깨는 고전적 기법입니다. 영어 문자 빈도 분포는 잘 알려져 있으며(E, T, A, O, I, N, S, H, R 순으로 빈도가 높음), 치환 암호는 빈도 분포를 보존하므로 가장 빈번한 암호문 문자는 E에, 두 번째는 T에 대응될 가능성이 높습니다. 이 페이지는 암호 분석 도구가 아닌 교육 도구이지만 기법은 동일합니다. 유니코드 관련 주의점: CJK 언어의 경우 문자 빈도 분포는 말뭉치(현대 소설, 고전 시, 기술 문서)와 분석 수준(문자, 단어, 바이그램, 트라이그램)에 따라 달라집니다. 현대 중국어 소설의 빈도 분석과 논어의 빈도 분석은 다른 분포를 보여줍니다. 이 페이지는 말뭉치에 구애받지 않으므로 사용자가 임의의 텍스트에 대해 실행할 수 있습니다.

  • 해시 테이블(JS의 Map): 텍스트를 순회하고 카운트를 증가시킨 뒤 카운트 내림차순으로 정렬하여 히스토그램 렌더링; 텍스트 길이에 대해 O(N)이며 문자당 비용이 매우 빠름.
  • 서로게이트 쌍: BMP 외부 문자(이모지, 희한한 CJK)는 UTF-16 코드 단위 2개; 코드 단위 단위의 단순 카운트는 과대 집계; Array.from 또는 Intl.Segmenter를 사용해야 함.
  • 치환 암호 분석: 영어 문자 빈도 E, T, A, O, I, N, S, H, R (이 순서로 빈도 높음); 치환 암호는 분포를 보존함.
  • CJK 빈도: 말뭉치(현대 소설, 고전 시, 기술 문서)와 분석 수준(문자, 단어, 바이그램)에 따라 달라짐; 이 페이지는 말뭉치에 구애받지 않음.
  • 상위 N 및 꼬리: 페이지는 기본적으로 빈도 상위 10-20개 문자를 렌더링하고 나머지는 꼬리 버킷에 표시; 밀집 텍스트에서 패턴을 발견하는 데 유용.
  • 대소문자 구분: 페이지는 대소문자 구분/무시 토글을 제공; 영어는 일반적으로 대소문자 무시(E와 e는 같은 문자, 다른 모양), CJK는 항상 대소문자 무시(대문자 개념 없음).
  • 성능: 카운팅에 O(N), K개 고유 문자 정렬에 O(K log K); 이 페이지는 100만 문자 텍스트를 1초 이내에 처리하며, 이것이 프로덕션 패턴입니다.

예시

영문 텍스트 분석

입력 "hello world" → 결과: 'l' 3회 등장 (27.3%), 'o' 2회 등장 (18.2%)

중문 텍스트 분석

입력 "我爱中国我爱北京" → 결과: '我'와 '爱' 각 2회 등장 (25%)

빈도 분포 비교

영문: 'e'가 약 12.7%로 최고 빈도; 중문: '的'가 약 4%로 최고 빈도

자주 묻는 질문

이 분석기는 무엇을 카운트하나요?

고유한 각 문자와 그 등장 빈도를 빈도순으로 정렬해 보여줍니다. 암호 분석(영어 텍스트는 E, T, A, O 순으로 예측 가능한 문자 빈도를 가짐), 텍스트 프로파일링, 복사·붙여넣기한 문서에서 예상치 못한 문자를 찾을 때 유용합니다.

공백 문자도 카운트되나요?

기본적으로는 카운트됩니다. 스페이스, 탭, 줄바꿈이 각각 별도의 행으로 표시됩니다. 출력 가능한 문자만 보고 싶다면 '공백 무시' 옵션을 켜세요. 자연어 텍스트에서는 일반적으로 공백이 가장 흔한 '문자'이며 약 20%를 차지합니다.

대소문자를 구분하나요?

기본적으로 구분합니다. 'A'와 'a'는 별개로 처리됩니다. '대소문자 무시' 옵션을 켜면 합쳐서 카운트되며, 이는 자연어 분석에서 흔히 사용됩니다. 코드나 해시값을 검사할 때는 대소문자 구분이 중요합니다.

한국어, 일본어, 중국어도 처리되나요?

네. CJK 문자는 각각 개별적으로 카운트됩니다. 중국어 문단의 빈도표에는 수백 개의 서로 다른 문자가 표시되는 것이 자연스러운데, 중국어는 공통 알파벳이 없기 때문이죠. 이 도구는 그래핀 클러스터 단위로 카운트하여 유니코드를 올바르게 처리합니다.

빈도를 백분율로 볼 수 있나요?

네. 일반적으로 카운트와 전체 대비 백분율이 함께 표시됩니다. 단순 치환 암호를 풀 때 알려진 기준 분포와 비교하기에 유용합니다.

백분율 합계가 100%가 안 되는 이유는 뭔가요?

반올림 때문입니다. 각 셀은 정해진 소수점 자리수로 반올림되기 때문에 백분율의 합이 100%에서 0.몇 % 정도 차이가 날 수 있습니다. 정확한 합계를 원한다면 원본 카운트 값을 더하세요.

입력한 텍스트가 서버로 업로드되나요?

아니요. 빈도 분석은 브라우저에서 실행되며 붙여넣은 텍스트는 전송되지 않습니다.