애플 기기를 쓰는 사람이라면 한 번쯤 키보드가 욕설을 자동으로 고쳐버리는 경험을 했을 것이다. 한 개발자가 맥OS 내부를 파고들어, 애플이 단어마다 '저속(vulgar)·모욕(offensive)·민감(sensitive)'이라는 등급을 매겨 저장해 둔 구조를 공개했다. 그는 영어 단어 19만 9,019개와 10여 개 언어의 사전을 덤프해, 그동안 문서화되지 않았던 이 분류 체계의 윤곽을 드러냈다.
두 개의 서로 다른 장치
핵심은 크게 두 가지다. 하나는 VulgarWordUsage.db라는 사용 기록 데이터베이스이고, 다른 하나는 언어별 사전 자체에 박혀 있는 등급 플래그다. 전자는 사용자가 어떤 앱에서 누구에게 어떤 단어를 썼는지를 (앱, 수신자, 단어, 읽기) 단위로 기록하도록 설계돼 있다. 즉 메시지 앱에서 특정 친구에게는 욕설을 쓰지만 메일로 상사에게는 쓰지 않는다는 식의 맥락까지 구분하는 구조다. 이는 2023년 WWDC에서 크레이그 페더리기가 iOS 17 자동수정 개편을 소개하며 "키보드가 당신이 치려던 그 단어도 학습할 것"이라고 말한 기능의 실제 구현으로 보인다. 기기 간 동기화를 암시하는 심볼도 발견됐다.
다만 저자 본인의 기록 데이터베이스는 비어 있었다. 행이 하나도 없었고, 속성 테이블에는 버전 번호만 남아 있었으며 파일의 마지막 수정 시점은 2024년 4월이었다. 그는 텍스트에디트에서 직접 욕설을 입력하거나 개별 키 입력으로 쳐 넣어 봤지만 아무 행도 생기지 않았다고 전한다. 왜 비어 있는지, 어떤 조건에서만 기록되는지는 결국 밝혀내지 못했다.
등급은 누가 정하는가
더 흥미로운 쪽은 사용 기록이 아니라 '어떤 단어가 애초에 저속한가'를 정의하는 사전이다. 이 사전은 비공개 프레임워크 Lexicon이 /System/Library/LinguisticData/ 아래에서 읽어 들이며, 모든 단어는 두 개의 32비트 플래그 필드를 가진다. 애플의 공개 API(맞춤법 검사기, 자연어 처리 등)는 이 정보를 노출하지 않기 때문에, 저자는 CoreFoundation 관례를 따르는 비공개 C 함수를 런타임에 불러오는 방식으로 접근했다. 읽기 전용으로 사전을 열어 플래그를 출력하는 코드였다.
분석 결과 영어 사전의 19만여 단어 중 4,271개만이 세 등급 가운데 하나를 달고 있었고, 한 단어가 둘 이상의 등급을 겹쳐 갖는 경우는 없었다. 대략 저속은 욕설과 성적 속어, 모욕은 특정 집단을 향한 멸칭, 민감은 키보드가 먼저 권하지 말아야 할 완곡한 욕설·마약·무기·질병·신체 기능 등을 포괄한다. 등급과 별개로 '주제' 비트마스크도 있는데, gay·fat·God·Allah·sex처럼 주제 태그만 붙고 등급은 없는 단어가 2,052개였다. 저자는 주제가 '순위를 조심해서 매기라'는 힌트고 등급이 실제 규칙이라고 추정한다.
고유명사가 드러내는 편집의 흔적
민감 등급에 들어간 대문자 단어 109개 목록이 특히 눈길을 끈다. 알카에다, 하마스, 헤즈볼라, 히틀러, 괴벨스, 아우슈비츠 같은 나치 관련 어휘와 독재자·테러리스트가 대부분인데, 그 사이에 'Trump'가 섞여 있다. 언어마다 기준이 달라 독일어 사전은 Trump를 등급 없이 두고 Hitler를 모욕 등급에 넣으며, 스웨덴어는 Putin을 민감으로 분류한다. 저자는 2025년 2월 아이폰 받아쓰기가 '인종차별주의자'를 말했을 때 잠깐 'Trump'를 표시해 화제가 됐고 애플이 하루 만에 수정한 사건을 언급하며, 민감 플래그가 이런 자동 제안을 억제하려는 조치일 수 있다고 본다. 다만 증명할 수는 없다고 선을 긋는다. 여기서 중요한 점은 민감 등급이 '금지'가 아니라는 것이다. 사용자가 직접 치면 입력되고 수정으로 지워지지도 않으며, 다만 키보드가 먼저 추천 막대에 올리지 않을 뿐이다.
언어별로 경계가 달라진다는 점도 흥미롭다. 영어가 idiot을 민감으로 두는 반면 노르웨이어는 모욕으로 분류한다. 유럽 언어 사전들은 키릴 문자까지 포함해 같은 세 등급 체계를 쓰지만, 집계 단위가 표제어가 아니라 활용형이라 폴란드어·러시아어처럼 어형 변화가 많은 언어는 수치상 과장돼 보인다. 아랍어·히브리어는 수십만 개가 민감으로 나와 비트 의미가 다를 가능성이 크고, 한국어·카탈루냐어·헝가리어는 아무것도 반환하지 않았으며 일본어는 덤프 도구를 멈추게 했다.
실무자에게 남는 질문
이 외에도 영어 모델마다 별도의 blocklist.bundle과 스와이프 키보드용 차단 목록이 존재한다. 토큰 ID와 클래스 ID 쌍으로 2,544개 단어가 930개 클래스에 묶여 있고, 트라이 구조로 단어가 아니라 특정 연쇄(예: '부정'+'홀로코스트')를 차단하는 것으로 보인다. 다만 실제 문구를 읽어내는 작업은 아직 미완이다.
이 분석은 입력기나 콘텐츠 필터를 다루는 실무자에게 두 가지 시사점을 준다. 첫째, 겉으로는 중립적인 자동완성 뒤에 사람이 손으로 편집한 가치 판단 목록이 깔려 있고, 그 기준은 언어권마다 다르다는 사실이다. 둘째, 애플조차 이 플래그를 문서화하지 않기 때문에 여기서 추론된 등급 의미는 모두 저자의 해석이며 버전에 따라 바뀔 수 있다는 한계다. 공개된 자료는 맥OS 15.6 기준 15개 로케일의 스냅숏일 뿐 갱신되지 않으므로, 실제 동작을 다루려면 자신의 기기에서 직접 확인하는 편이 안전하다.