- 이 저장소는 보이니치 필사본이 실제 언어처럼 행동하는 구조적 패턴을 갖는지 확인하기 위해 번역 추측 없이 클러스터링, 품사 추론, Markov 전이, 섹션별 패턴을 적용함
- 분석 파이프라인은 반복 접미사처럼 보이는
aiin,dy,chy등을 제거한 뒤 multilingual SBERT로 어근을 임베딩하고 클러스터를 만들며, 필사본 각 줄을 클러스터 시퀀스로 매핑함 - 결과는 Cluster 8이 고빈도·저다양성·줄 시작 위치 빈도가 높아 기능어 그룹처럼 보이고, Cluster 3은 다양성과 위치 유연성이 높아 내용어 어근 클래스처럼 보인다는 식의 구조 차이를 제시함
- 접미사 제거는 유사 어간을 더 촘촘히 묶고 전이 행렬을 더 깔끔하게 만들었지만, 실제 형태 정보를 제거하거나 의미 있는 굴절 변이를 가리거나 기능 중심 편향을 만들 수 있는 강한 전처리 선택임
- 이 프로젝트는 의미 번역을 시도하지 않고, 보이니치 필사본이 구문, 기능어/내용어 분리, 섹션별 언어 변화 같은 언어 유사 구조를 보이는지 데이터 기반으로 검토하는 데 초점을 둠
프로젝트의 목적
- 보이니치 필사본은 아직 해독되지 않았고, 합의된 언어학적·암호학적 해법이 없음
- 이 프로젝트는 통계적 엔트로피 검사와 근거 없는 해석 사이의 중간 경로로, 계산언어학 기법을 사용해 필사본이 구조화된 언어 유사 행동을 인코딩하는지 평가함
- 번역이나 GPT식 추측은 하지 않고, 언어처럼 행동하는 구조가 있는지에만 집중함
분석 파이프라인과 파일 구성
/data/에는 전체 전사본, 어근 단어 파일, 제거된 어근 목록, 클러스터 조회표, 줄별 클러스터 시퀀스가 들어 있음/scripts/는 분석 단계를 나눠 실행함cluster_roots.py: SBERT 클러스터링과 접미사 제거map_lines_to_clusters.py: 필사본 줄을 클러스터 ID로 매핑pos_model.py: 클러스터 행동을 기반으로 문법적 역할 추론transition_matrix.py: 클러스터 전이를 만들고 시각화lexicon_builder.py: 섹션과 역할별 후보 어휘표 생성cluster_language_similarity.py: 선택적으로 실제 언어와 클러스터를 비교
/results/에는 PCA 축소 클러스터 그림, Markov 전이 행렬 히트맵, 클러스터 역할 요약, 전이 행렬 CSV, 후보 어휘 CSV가 저장됨
핵심 기여
- multilingual SBERT를 사용해 접미사 제거 어근을 클러스터링함
- 기능어처럼 보이는 클러스터와 내용어처럼 보이는 클러스터를 구분함
- 클러스터 시퀀스에 대해 Markov 방식 전이 모델링을 수행함
- Botanical, Biological 등 필사본 섹션에 따라 구문 구조를 매핑함
- 섹션과 역할을 기준으로 데이터 기반 어휘 가설표를 생성함
전처리 선택과 그 영향
- 반복되는 접미사처럼 보이는
aiin,dy,chy및 유사 변형을 각 단어에서 제거함 - 이 선택의 목적은 변형과 함께 반복되는 어근 형태를 분리하는 것이었음
- 접미사는 다음 중 하나일 가능성이 있다고 봄
- 음성적 패딩
- 문법적 입자
- 주문이나 기억술 같은 반복
- 잡음
- 접미사 제거 후 유사 어간이 더 촘촘히 묶이고, 전이 행렬에서 더 깔끔한 구조 패턴이 나타남
- 다만 이 전처리는 중립적이지 않음
- 실제 형태 정보를 제거했을 수 있음
- 의미 있는 굴절 변이를 가렸을 수 있음
- 내용보다 기능 중심으로 결과를 편향시켰을 수 있음
- 접미사를 제거하지 않거나, 접미사를 별도 토큰 클래스로 처리해 파이프라인을 다시 실행하는 비교가 가능함
관찰된 구조
- Cluster 8은 고빈도, 낮은 다양성, 잦은 줄 시작 위치를 보이며 기능어 그룹일 가능성이 있음
- Cluster 3은 높은 다양성과 유연한 위치를 보여 어근 내용어 클래스일 가능성이 있음
- 전이 행렬은 무작위와 거리가 먼 강한 내부 구조를 보임
- 클러스터 사용과 품사 패턴은 Biological, Botanical 같은 필사본 섹션별로 달라짐
가설과 한계
- 필사본은 음절 패딩과 위치 반복을 사용하는 구조화된 구성 언어 또는 기억술 언어를 인코딩한다는 가설을 둠
- 직접 번역 없이도 구문, 기능어/내용어 분리, 섹션 인식형 언어 변화가 나타난다고 봄
- 한계도 명시됨
- 클러스터와 단어 매핑은 간접적이라 빈도 추정이 겹칠 수 있음
- 접미사 제거는 휴리스틱이며 의미 있는 어미를 제거했을 수 있음
- 의미 번역은 시도하지 않고 구조 모델링만 수행함
재현과 최근 변경
- 재현 절차는 의존성 설치 후 각 스크립트를 순서대로 실행하는 방식임
pip install -r requirements.txtpython scripts/cluster_roots.pypython scripts/map_lines_to_clusters.pypython scripts/pos_model.pypython scripts/transition_matrix.pypython scripts/lexicon_builder.py
- 시각화는 PCA 외에 UMAP, PaCMAP, LocalMAP 지원이 추가됨
- CLI 리듀서는 인자 없음이 PCA이며,
--reducer umap,--reducer pacmap을 처리함 - 프로젝트는 Windows에서는 동작했지만 MacOS에서는 제대로 동작하게 만들지 못했다는 제한이 있음
- 모델은
all-MiniLM-L6-v2에서 더 큰paraphrase-multilingual-mpnet-base-v2로 변경됨- README에는 크기 비교가
22M vs 110M으로 적혀 있음
- README에는 크기 비교가