텍스트에서 베른포드와 지프 법칙의 동시 발생
초록
본 연구는 영어·러시아어·우크라이나어와 C++, Java 같은 프로그래밍 언어 텍스트를 대상으로, 단어 빈도와 전체 출현 횟수가 각각 지프 법칙과 베른포드‑유사 분포를 따르는지를 실증적으로 검증한다. 가장 빈번한 단어를 제외하면 지프 법칙과의 상관계수가 크게 향상되지만, 베른포드 분포는 이러한 제외에 거의 영향을 받지 않는다. 인공 언어는 인간 언어에 비해 로그‑로그 플롯의 기울기 절댓값이 현저히 크다.
상세 분석
이 논문은 두 가지 유명한 통계적 법칙, 즉 지프 법칙과 베른포드 법칙이 인간 언어와 인공 언어 텍스트에서 동시에 나타나는 현상을 정량적으로 분석한다. 지프 법칙은 “단어의 빈도는 그 순위의 역수에 비례한다”는 간단한 관계식 f(r) ∝ 1/r 로 표현되며, 대규모 코퍼스에서 흔히 관찰된다. 반면 베른포드 법칙은 자연수 집합에서 첫 자릿수의 분포가 P(d) = log10(1+1/d) 형태를 보인다는 것으로, 여기서는 각 단어가 텍스트 전체에 등장한 총 횟수(즉, 단어의 전체 빈도)에서 첫 자릿수를 추출해 그 분포가 베른포드‑유사 형태를 따르는지를 검증한다.
연구자는 영어, 러시아어, 우크라이나어의 소설·뉴스·위키피디아 등 다양한 장르의 대규모 텍스트와 C++·Java 소스 코드 파일을 수집하였다. 각 텍스트에 대해 (1) 단어별 등장 횟수를 계산하고, (2) 등장 횟수의 첫 자릿수를 추출해 빈도 히스토그램을 만든다. 지프 법칙 검증을 위해서는 단어를 등장 횟수 기준으로 내림차순 정렬한 뒤 로그‑로그 플롯을 그리고, 선형 회귀를 통해 기울기 α와 결정계수 R²를 추정한다. 베른포드 검증은 첫 자릿수별 관측 비율을 이론적 베른포드 확률과 비교하고, 카이제곱 적합도 검정을 수행한다.
핵심 결과는 다음과 같다. 첫 번째, 인간 언어와 인공 언어 모두에서 전체 단어 빈도의 첫 자릿수 분포가 베른포드‑유사 형태를 보였으며, 카이제곱 검정에서 p값이 0.05보다 크게 나와 통계적으로 유의미하게 일치한다. 두 번째, 가장 빈번한 상위 10~20개의 단어를 데이터셋에서 제외하면 지프 법칙의 R²가 현저히 상승한다. 이는 고빈도 단어가 실제 지프 직선에서 벗어나 “핵심어” 효과를 일으키는 것으로 해석된다. 반면 베른포드 분포는 동일한 제외 작업을 수행해도 거의 변하지 않아, 첫 자릿수 분포가 전체 빈도 규모에 대해 보다 강인함을 보여준다.
세 번째, 인공 언어(C++, Java)의 지프 기울기 |α|가 인간 언어에 비해 약 1.5~2배 크게 나타났다. 이는 프로그래밍 언어에서 특정 키워드(예: for, if, while, class 등)의 사용 빈도가 인간 언어의 일반 단어보다 더 급격히 감소한다는 점을 반영한다. 베른포드 기울기(첫 자릿수 로그‑로그 기울기) 역시 인공 언어에서 더 큰 절댓값을 보였으며, 이는 코드 내 변수명·함수명 등 고유 명사가 상대적으로 적고, 숫자 리터럴이 특정 패턴을 갖는 데 기인한다는 가설을 뒷받침한다.
이러한 발견은 두 법칙이 서로 독립적인 현상이 아니라, 텍스트 전체의 규모와 구조적 특성에 의해 동시에 나타날 수 있음을 시사한다. 특히 베른포드‑유사 분포는 데이터 정제나 고빈도 단어 제거와 무관하게 유지되는 강인한 통계적 신호로, 텍스트 무결성 검증이나 이상 탐지에 활용될 가능성을 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기