# macOS 는 단어의 모욕성을 식별하는 기능이 있습니다.

> https://bookfactory.kr/board/news/26160
> 게시판: 뉴스
> 작성자: tachikoma43
> 작성일: 2026-11-09T05:50:29.297Z

---

개발자 헬게 스베르 (Helge Sverre) 는 macOS 의 프라이빗 프레임워크 'Lexicon.framework'에 접근하여, Apple 의 시스템 사전이 단어를 어떻게 분류하는지, 그리고 그것이 키보드 예측 입력 및 자동 수정에 어떤 영향을 미치는지 조사했습니다.

macOS 에는 '~/Library/Keyboard/VulgarWordUsage.db'라는 데이터베이스가 존재하며, 사용자가 '어떤 앱에서', '누구에게', '어떤' 욕설을 사용했는지 기록하고 있습니다.

데이터베이스의 스키마는 다음과 같습니다.

$ sqlite3 -readonly ~/Library/Keyboard/VulgarWordUsage.db .

스키마
CREATE TABLE properties (ROWID INTEGER PRIMARY KEY, key, value, UNIQUE (key));
CREATE TABLE IF NOT EXISTS "vword_usage" (
    ROWID INTEGER PRIMARY KEY AUTOINCREMENT,
    app                          TEXT, -- 앱 식별자
    recipient                    TEXT, -- 수신자 식별자
    vword                        TEXT, -- 욕설어
    word_reading                 TEXT, -- 단어의 발음 형태 (일본어와 관련됨)
    usage_count                  INTEGER DEFAULT 0,
    last_use_timestamp           REAL DEFAULT 0, -- 마지막 사용 시간戳 (참고일로부터의 초 단위)
    journaled
);
CREATE UNIQUE INDEX app_recipient_vword_word_reading_idx ON vword_usage(app, recipient, vword, word_reading);테이블 레이아웃을 통해 예를 들어 'fuck'이라는 단어가 '친구에게 보낸 메시지'로 사용되었는지 '상사에게 보낸 이메일'로 사용되었는지 식별할 수 있다는 점을 알 수 있습니다.

또한 유니크 인덱스가 '앱 수신자 모욕적 단어 단어 발음'으로 구성되어 있으므로, 이러한 정보를 '粒度'로 처리할 수 있음을 알 수 있습니다.

그러나 스베레 씨의 Mac 이나 이 데이터베이스는 비어 있었으며, 네이티브 앱으로 모욕적인 단어를 입력하더라도 기록되지 않았습니다.

또한 위 테이블 레이아웃에서는 단어가 모욕적인지 여부를 알 수 없으며, 이미 다른 곳에서 모욕적인 단어로 표시된 단어를 카운트할 수 밖에 없습니다.

스베레 씨는 단서를 찾기 위해 dyld 의 공유 캐시에서 'vulgar' 문자열을 검색한 결과, 'LX' 접두사를 가진 API 'LXVulgarWordUsageDatabaseCreate', 'LXVulgarWordUsageDatabaseCanAutocorrect' 등을 발견했습니다.

추가 조사 결과, 사전 항목에 관한 두 가지 함수를 찾을 수 있었습니다.

_LXEntryGetCategoryFlags
_LXEntryGetMetaFlags 'LX' 는 'Lexicon.framework'를 의미하며, '/System/Library/LinguisticData/' 아래에서 언어별 사전 파일을 읽는 프라이빗 프레임워크입니다.

사전에 포함된 모든 단어는 32 비트 플래그 필드를 두 개 갖는 'LXEntry' 구조체와 대응하며, 단어가 얼마나 모욕적인지를 어디 nors 가 저장되어 있다면 LXEntry 의 비트 내에 있다는 뜻입니다.

비트에 접근 가능한 공개 API 는 존재하지 않았으나, C 함수는 수출되었으며 CoreFoundation 의 규정을 따랐기 때문에, 스베레氏は 시그니처를 추측하고 플래그를 읽는 프로그램을 작성했습니다.

// lx.c — 시스템 사전의 모든 단어를 플래그와 함께 출력합니다.
// clang -O1 -o lx lx.c -F/System/Library/PrivateFrameworks -framework Lexicon -framework CoreFoundation
#include 
#include 
#include 

typedef const void *LXLexiconRef, *LXCursorRef, *LXEntryRef;
extern CFStringRef kLXLexiconLocaleKey;
LXLexiconRef LXLexiconCreate(CFDictionaryRef options, CFErrorRef *error);
LXCursorRef  LXLexiconCreateRootCursor(LXLexiconRef);
void         LXCursorEnumerateEntriesRecursively(LXCursorRef, void (^)(LXEntryRef, bool *stop));
CFStringRef  LXEntryCopyString(LXEntryRef);
uint32_t     LXEntryGetCategoryFlags(LXEntryRef);
uint32_t     LXEntryGetMetaFlags(LXEntryRef);

LXCursorEnumerateEntriesRecursively(LXLexiconCreateRootCursor(lexicon), ^(LXEntryRef entry, bool *stop) {
    char word[512] = "";
    CFStringRef s = LXEntryCopyString(entry);
    if (s) { CFStringGetCString(s, word, sizeof word, kCFStringEncodingUTF8); CFRelease(s); }
    printf("%08x\t%08x\t%s\n", LXEntryGetCategoryFlags(entry), LXEntryGetMetaFlags(entry), word);
  });
}위 코드는 지정된 로케일의 사전의 모든 엔트리를 스캔하여 LXEntry 의 두 가지 플래그 필드를 출력합니다.

$ .

/lx en_US | wc -l
  199019
$ .

/lx en_US | awk -F'\t' '$3 == "fuck" || $3 == "table" || $3 == "Trump"'
00000000	00800002	fuck
00000000	00000000	table
00002000	02000081	TrumpApple 는 이러한 플래그를 문서화하지는 않았으나, 읽은 두 개의 플래그 필드에서 단어가 어느 '계층'에 속하며 어떤 '주제'와 관련이 있는지 추측할 수 있었습니다.

플래그 필드 중 하나는 계층을 나타냅니다.

비트 계층 en_US 단어 수 예시 0x00800000 비속어 1,050 fuck·shit·cunt·cock·crap·wtf·fml·bullshitting·fucktard·shizzle·merde0x01000000 공격적 663 kike·wop·dago·fag·Paki·japs·Klansman·retard·Oriental·ass·asshole0x02000000 민감 2,558 damn·bitch·idiot·LSD·abortion·gun·suicide·anus·pee·poo두 번째 플래그 필드는 주제 비트 마스크이며, 하나의 단어에 여러 주제를 가질 수 있습니다.

비트토픽 en_US 단어 수 예시: 0x00100 배설물 123 feces·barf·capper·piddle·pooped 0x00200 신체 부위 958 nipples·navel·buttock·perineum·triceps 0x00400 모욕·아이덴티티를 조장하는 823 idiot·cretin·hick·pleb·sexist·homophobic·blacklist 0x00800 질병 93 Covid·herpes·PTSD·leprosy·monkeypox 0x01000 약물 222 heroin·shroom·crackhead·hotbox·OD 0x02000 정치·극단주의 266 Hamas·Goebbels·Leninism·democrat·swastikas·Trump 0x04000 종교·파멸 420 Sikhism·jihadi·Beelzebub·damn·hell·jeez 0x08000 성 473 nude·nookie·lecher·harlots·Pornhub·Hooters 0x10000 폭력·죽음 373 suicide·lynch·murders·hangings·slave·slaveholder 0x20000 무기·테러리즘 268 AK-47·grenadier·jihad·sarin·kamikaze·yellowcake 0x40000 기타 민감한 컨텍스트 1,080 God·Allah·Jews·gay·trans·bi·crazy·fat·ugly·sex·die 흥미롭게도, 'Oedipus(에디푸스)'는 선정적이며, 'Tom(トム)'이나 'Mick(ミック)'은 공격적으로 분류됩니다.

int main(int argc, char **argv) {
  CFStringRef locale = CFStringCreateWithCString(NULL, argc > 1 ? argv[1] : "en_US", kCFStringEncodingUTF8);
  const void *keys[] = {kLXLexiconLocaleKey}, *values[] = {locale};
  CFDictionaryRef options = CFDictionaryCreate(NULL, keys, values, 1, &kCFTypeDictionaryKeyCallBacks,
                                               &kCFTypeDictionaryValueCallBacks);
  LXLexiconRef lexicon = LXLexiconCreate(options, NULL);
  if (!lexicon) return 1;

또한 '트럼프'는 다른 이름 대부분이 나치 관련자나 테러리스트인 사망한 인물로 나열된 환경에서 유일하게 현직 정치인으로 분류되어 민감하고 정치적 주제에 속합니다.

반면 "Biden(바이던)", "Obama(오바마)", "Putin(푸틴)"은 모두 계층 플래그가 설정되지 않아 "클린"으로 분류됩니다.

그러나 로케일에 따라 차이가 있으며, 예를 들어 독일어 사전에서는 트럼프가 클린으로 분류되고 스웨덴어 사전에서는 푸틴이 민감으로 분류됩니다.

주의해야 할 점은 플래그가 설정되어 검열 대상이 되는 것은 아니라는 점이며, 플래그는 "제안하지 않아야 하는" 단어를 결정하기 위해 사용된다는 것이 스베레의 추측입니다.

예를 들어, 민감한 단어는 사용자가 직접 입력하더라도 자동 수정되지 않지만, QuickType 바에서 표시되기 어렵다는 것입니다.

Google 우선 소스 설정 Clipboard 기사 제목과 URL 을 복사 X Facebook Bluesky Discord Threads

테이블 레이아웃을 통해 예를 들어 'fuck'이라는 단어가 '친구에게 보내는 메시지'로 사용되었는지 '상사에게 보내는 이메일'로 사용되었는지 식별할 수 있다는 점을 알 수 있습니다. 또한 유니크 인덱스가 '앱·수신자·비방어·단어 발음'으로 구성되어 있으므로 이러한 정보를 '정밀도'로 처리할 수 있음을 알 수 있습니다. 그러나 스베레 씨의 Mac 이나 이 데이터베이스는 비어 있었으며, 네이티브 앱에서 비방어를 입력하더라도 기록되지 않았습니다. 또한 위 테이블 레이아웃에서는 단어가 비방어인지 알 수 없으며, 다른 곳에서 이미 비방어로 표시된 단어를 카운트할 수만 있습니다. 스베레 씨는 단서를 찾기 위해 dyld 의 공유 캐시에서 'vulgar' 문자열을 검색한 결과, 'LX' 접두사를 가진 API 'LXVulgarWordUsageDatabaseCreate', 'LXVulgarWordUsageDatabaseCanAutocorrect' 등을 발견했습니다.

추가 조사를 통해 사전 항목과 관련된 두 가지 함수를 발견했습니다. _LXEntryGetCategoryFlags 와 _LXEntryGetMetaFlags 입니다. "LX" 는 "Lexicon.framework"를 의미하며, "/System/Library/LinguisticData/" 하위 디렉토리에 있는 언어별 사전 파일을 로드하는 프라이빗 프레임워크입니다. 사전에 포함된 모든 단어는 32 비트 플래그 필드를 두 개 갖는 "LXEntry" 구조체와 대응하며, 단어가 얼마나 모욕적인지 어떤 형태로든 저장하고 있다면 LXEntry 의 비트에 해당한다는 뜻입니다. 비트에 접근할 수 있는 공개 API 는 존재하지 않았으나 C 함수는 수출되었으며 CoreFoundation 의 규정을 따랐기 때문에, 스베레는 서명 (signature) 을 추측하고 플래그를 읽는 프로그램을 작성했습니다. // lx.c — 시스템 사전의 모든 단어와 해당 플래그를 덤프합니다. // clang -O1 -o lx lx.c -F/System/Library/PrivateFrameworks -framework Lexicon -framework CoreFoundation #include  #include  #include 

typedef const void *LXLexiconRef, *LXCursorRef, *LXEntryRef;
extern CFStringRef kLXLexiconLocaleKey;
LXLexiconRef LXLexiconCreate(CFDictionaryRef options, CFErrorRef *error);
LXCursorRef  LXLexiconCreateRootCursor(LXLexiconRef);
void         LXCursorEnumerateEntriesRecursively(LXCursorRef, void (^)(LXEntryRef, bool *stop));
CFStringRef  LXEntryCopyString(LXEntryRef);
uint32_t     LXEntryGetCategoryFlags(LXEntryRef);
uint32_t     LXEntryGetMetaFlags(LXEntryRef);

LXCursorEnumerateEntriesRecursively(LXLexiconCreateRootCursor(lexicon), ^(LXEntryRef entry, bool *stop) {
    char word[512] = "";
    CFStringRef s = LXEntryCopyString(entry);
    if (s) { CFStringGetCString(s, word, sizeof word, kCFStringEncodingUTF8); CFRelease(s); }
    printf("%08x\t%08x\t%s\n", LXEntryGetCategoryFlags(entry), LXEntryGetMetaFlags(entry), word);
  });
}위 코드는 지정된 로케일의 사전의 모든 엔트리를 스캔하여 LXEntry 의 두 가지 플래그 필드를 출력합니다.

$ .

/lx en_US | wc -l
  199019
$ .

/lx en_US | awk -F'\t' '$3 == "fuck" || $3 == "table" || $3 == "Trump"'
00000000	00800002	fuck
00000000	00000000	table
00002000	02000081	TrumpApple 는 이러한 플래그를 문서화하지 않았으나, 읽은 두 개의 플래그 필드에서 단어가 어느 '계층'에 속하며 어떤 '주제'와 관련이 있는지 추측할 수 있었습니다.

플래그 필드 중 하나는 계층을 나타냅니다.

비트 계층 en_US 단어 수 예시 0x00800000 비속어 1,050 fuck, shit, cunt, cock, crap, wtf, fml, bullshitting, fucktard, shizzle, merde0x01000000 공격적 663 kike, wop, dago, fag, Paki, japs, Klansman, retard, Oriental, ass, asshole0x02000000 민감한 2,558 damn, bitch, idiot, LSD, abortion, gun, suicide, anus, pee, poo두 번째 플래그 필드는 주제 비트 마스크이며, 하나의 단어에 여러 주제를 가질 수 있습니다.

비트토픽 en_US 단어 수 예시: 0x00100 배설물 123 feces·barf·capper·piddle·pooped 0x00200 신체 부위 958 nipples·navel·buttock·perineum·triceps 0x00400 모욕·아이덴티티를 조장하는 823 idiot·cretin·hick·pleb·sexist·homophobic·blacklist 0x00800 질병 93 Covid·herpes·PTSD·leprosy·monkeypox 0x01000 약물 222 heroin·shroom·crackhead·hotbox·OD 0x02000 정치·극단주의 266 Hamas·Goebbels·Leninism·democrat·swastikas·Trump 0x04000 종교·파멸 420 Sikhism·jihadi·Beelzebub·damn·hell·jeez 0x08000 성 473 nude·nookie·lecher·harlots·Pornhub·Hooters 0x10000 폭력·죽음 373 suicide·lynch·murders·hangings·slave·slaveholder 0x20000 무기·테러리즘 268 AK-47·grenadier·jihad·sarin·kamikaze·yellowcake 0x40000 기타 민감한 컨텍스트 1,080 God·Allah·Jews·gay·trans·bi·crazy·fat·ugly·sex·die. 흥미롭게도, 'Oedipus(에디프스)'는 선정적이며, 'Tom(トム)'이나 'Mick(ミック)'은 공격적으로 분류됩니다.

int main(int argc, char **argv) {
  CFStringRef locale = CFStringCreateWithCString(NULL, argc > 1 ? argv[1] : "en_US", kCFStringEncodingUTF8);
  const void *keys[] = {kLXLexiconLocaleKey}, *values[] = {locale};
  CFDictionaryRef options = CFDictionaryCreate(NULL, keys, values, 1, &kCFTypeDictionaryKeyCallBacks,
                                               &kCFTypeDictionaryValueCallBacks);
  LXLexiconRef lexicon = LXLexiconCreate(options, NULL);
  if (!lexicon) return 1;

또한 '트럼프'는 다른 이름 대부분이 나치 관련자나 테러리스트인 사망한 인물로 나열된 환경에서 유일하게 현직 정치인으로 분류되어 민감하고 정치적 주제에 속합니다.

반면 "Biden(바이든)", "Obama(오바마)", "Putin(푸틴)"은 모두 계층 플래그가 설정되지 않아 "클린"으로 분류됩니다.

그러나 로케일에 따라 차이가 있으며, 예를 들어 독일어 사전에서는 트럼프가 클린으로 분류되고 스웨덴어 사전에서는 푸틴이 민감으로 분류됩니다.

주의할 점은 플래그가 설정되어 검열 대상이 되는 것은 아니라는 점이며, 플래그는 "제안하지 않아야 하는" 단어를 결정하기 위해 사용된다는 것이 스베레의 추측입니다.

예를 들어, 민감한 단어는 사용자가 직접 입력하더라도 자동 수정되지 않지만, QuickType 바에서 표시되기 어렵다는 것입니다.

Google 우선 소스 설정 Clipboard 기사 제목과 URL 을 복사 X Facebook Bluesky Discord Threads

"LX"은 "Lexicon.framework"을 의미하며, "/System/Library/LinguisticData/" 하위에 있는 언어별 사전 파일을 읽는 프라이빗 프레임워크입니다. 사전에 포함된 모든 단어는 두 개의 32비트 플래그 필드를 갖는 "LXEntry" 구조체와 대응하며, 만약 단어의 모욕적 정도가 어디 nors 저장되어 있다면 LXEntry의 비트 내에 해당된다는 뜻입니다. 공개 API는 존재하지 않았으나 C 함수는 내보내어져 있었으며 CoreFoundation 규정을 따랐기 때문에, 스베레는 서명 (signature) 을 추측하고 플래그를 읽는 프로그램을 작성했습니다. // lx.c — 시스템 사전의 모든 단어와 해당 플래그를 모두 출력합니다. // clang -O1 -o lx lx.c -F/System/Library/PrivateFrameworks -framework Lexicon -framework CoreFoundation #include  #include  #include 

typedef const void *LXLexiconRef, *LXCursorRef, *LXEntryRef;
extern CFStringRef kLXLexiconLocaleKey;
LXLexiconRef LXLexiconCreate(CFDictionaryRef options, CFErrorRef *error);
LXCursorRef  LXLexiconCreateRootCursor(LXLexiconRef);
void         LXCursorEnumerateEntriesRecursively(LXCursorRef, void (^)(LXEntryRef, bool *stop));
CFStringRef  LXEntryCopyString(LXEntryRef);
uint32_t     LXEntryGetCategoryFlags(LXEntryRef);
uint32_t     LXEntryGetMetaFlags(LXEntryRef);

LXCursorEnumerateEntriesRecursively(LXLexiconCreateRootCursor(lexicon), ^(LXEntryRef entry, bool *stop) {
    char word[512] = "";
    CFStringRef s = LXEntryCopyString(entry);
    if (s) { CFStringGetCString(s, word, sizeof word, kCFStringEncodingUTF8); CFRelease(s); }
    printf("%08x\t%08x\t%s\n", LXEntryGetCategoryFlags(entry), LXEntryGetMetaFlags(entry), word);
  });
}위 코드는 지정된 로케일의 사전의 모든 엔트리를 스캔하여 LXEntry 의 두 가지 플래그 필드를 출력합니다.

$ .

/lx en_US | wc -l
  199019
$ .

/lx en_US | awk -F'\t' '$3 == "fuck" || $3 == "table" || $3 == "Trump"'
00000000	00800002	fuck
00000000	00000000	table
00002000	02000081	TrumpApple 는 이러한 플래그를 문서화하지 않았지만, 읽은 두 개의 플래그 필드에서 단어가 어느 "계층"에 속하고 어떤 "주제"와 관련이 있는지 추측할 수 있었습니다.

플래그 필드 중 하나는 계층을 나타냅니다.

비트 계층 en_US 단어 수 예시 0x00800000 비속어 1,050fuck·shit·cunt·cock·crap·wtf·fml·bullshitting·fucktard·shizzle·merde0x01000000 공격적 663kike·wop·dago·fag·Paki·japs·Klansman·retard·Oriental·ass·asshole0x02000000 민감 2,558damn·bitch·idiot·LSD·abortion·gun·suicide·anus·pee·poo또 다른 플래그 필드는 주제 비트 마스크이며, 하나의 단어에 여러 주제를 가질 수 있습니다.

비트토픽 en_US 단어 수 예시: 0x00100 배설물 123 feces·barf·capper·piddle·pooped 0x00200 신체 부위 958 nipples·navel·buttock·perineum·triceps 0x00400 모욕·아이덴티티를 조장하는 823 idiot·cretin·hick·pleb·sexist·homophobic·blacklist 0x00800 질병 93 Covid·herpes·PTSD·leprosy·monkeypox 0x01000 약물 222 heroin·shroom·crackhead·hotbox·OD 0x02000 정치·극단주의 266 Hamas·Goebbels·Leninism·democrat·swastikas·Trump 0x04000 종교·파멸 420 Sikhism·jihadi·Beelzebub·damn·hell·jeez 0x08000 성 473 nude·nookie·lecher·harlots·Pornhub·Hooters 0x10000 폭력·죽음 373 suicide·lynch·murders·hangings·slave·slaveholder 0x20000 무기·테러리즘 268 AK-47·grenadier·jihad·sarin·kamikaze·yellowcake 0x40000 기타 민감한 컨텍스트 1,080 God·Allah·Jews·gay·trans·bi·crazy·fat·ugly·sex·die 흥미롭게도, 'Oedipus(에디푸스)'는 선정적이며, 'Tom(トム)'이나 'Mick(ミック)'은 공격적으로 분류됩니다.

위 프로그램은 지정된 로케일의 사전의 모든 엔트리를 스캔하여 LXEntry 의 두 개의 플래그 필드를 출력합니다.

$ .

/lx en_US | wc -l
  199019
$ .

/lx en_US | awk -F'\t' '$3 == "fuck" || $3 == "table" || $3 == "Trump"'
00000000	00800002	fuck
00000000	00000000	table
00002000	02000081	Trump

Apple 은 이러한 플래그를 문서화하지는 않았지만, 읽은 두 개의 플래그 필드보다 단어가 어떤 '계층'에 속하고 어떤 '주제'와 관련이 있는지 추측할 수 있었습니다.

플래그 필드 중 하나는 계층을 나타냅니다.

비트 계층 en_US 단어 수 예시: 0x00800000 - 하품 1,050 개 (fuck, shit, cunt, cock, crap, wtf, fml, bullshitting, fucktard, shizzle, merde), 0x01000000 - 공격적 663 개 (kike, wop, dago, fag, Paki, japs, Klansman, retard, Oriental, ass, asshole), 0x02000000 - 민감 2,558 개 (damn, bitch, idiot, LSD, abortion, gun, suicide, anus, pee, poo). 또 다른 플래그 필드는 주제 비트 마스크이며, 하나의 단어에 여러 주제를 할당할 수 있습니다.

비트토픽 en_US 단어 수 예시: 0x00100 배설물 123 feces, barf, crapper, piddle, pooped 0x00200 신체 부위 958 nipples, navel, buttock, perineum, triceps 0x00400 모욕, 정체성을 조장하는 823 idiot, cretin, hick, pleb, sexist, homophobic, blacklist 0x00800 질병 93 Covid, herpes, PTSD, leprosy, monkeypox 0x01000 약물 222 heroin, shroom, crackhead, hotbox, OD 0x02000 정치, 극단주의 266 Hamas, Goebbels, Leninism, democrat, swastikas, Trump 0x04000 종교, 파멸 420 Sikhism, jihadi, Beelzebub, damn, hell, jeez 0x08000 성 473 nude, nookie, lecher, harlots, Pornhub, Hooters 0x10000 폭력, 죽음 373 suicide, lynch, murders, hangings, slave, slaveholder 0x20000 무기, 테러리즘 268 AK-47, grenadier, jihad, sarin, kamikaze, yellowcake 0x40000 기타 민감한 컨텍스트 1,080 God, Allah, Jews, gay, trans, bi, crazy, fat, ugly, sex, die. 흥미롭게도 'Oedipus(에디프스)'는 선정적, 'Tom(トム)'과 'Mick(ミック)'은 공격적으로 분류됩니다.

int main(int argc, char **argv) {
  CFStringRef locale = CFStringCreateWithCString(NULL, argc > 1 ? argv[1] : "en_US", kCFStringEncodingUTF8);
  const void *keys[] = {kLXLexiconLocaleKey}, *values[] = {locale};
  CFDictionaryRef options = CFDictionaryCreate(NULL, keys, values, 1, &kCFTypeDictionaryKeyCallBacks,
                                               &kCFTypeDictionaryValueCallBacks);
  LXLexiconRef lexicon = LXLexiconCreate(options, NULL);
  if (!lexicon) return 1;

또한 "Trump(트럼프)"은 다른 이름들 대부분이故人인 나치 관련자나 테러리스트 이름이 나열된 가운데, 유일한 현직 정치인으로 민감하고 정치 토픽으로 분류됩니다.

반면 "Biden(바이든)", "Obama(오바마)", "Putin(푸틴)"은 모두 계층 플래그가 설정되지 않은 "클린"으로 분류됩니다.

하지만 로케일에 따라 차이가 있으며, 예를 들어 독일어 사전에서는 트럼프가 클린으로 분류되고, 스웨덴어 사전에서는 푸틴이 민감한 것으로 분류됩니다.

주의할 점은 플래그가 설정되어 있어도 검열 대상이 되는 것은 아니라는 점이며, 플래그는 "제안하지 않아야 하는" 단어를 결정하기 위해 사용된다는 것이 스베레氏の 추측입니다.

예를 들어, 민감한 단어는 사용자가 직접 입력하더라도 자동 수정되지 않지만, QuickType 바에 잘 표시되지 않는다는 것입니다.

Google 우선 소스 설정 Clipboard 기사 제목과 URL 복사 X Facebook Bluesky Discord Threads

Apple 는 이러한 플래그를 문서화하지는 않았으나, 읽은 두 개의 플래그 필드에서 단어가 어느 '계층'에 속하며 어떤 '주제'와 관련이 있는지 추측할 수 있었습니다. 플래그 필드 중 하나는 계층을 나타냅니다.

다른 하나의 플래그 필드는 주제 비트 마스크이며, 하나의 단어에 여러 주제를 할당할 수 있습니다.

이상하게도, 'Oedipus(에디프스)'는 선정적, 'Tom(トム)'과 'Mick(ミック)'은 공격적으로 분류되었습니다. 또한 'Trump(트럼프)'는 다른 대부분의 경우로 분류된 전직 나치 관련자나 테러리스트 이름들 사이에서 유일하게 현직 정치인으로 분류되어 민감하고 정치적 주제에 속한다고 분류되었습니다. 반면 'Biden(바이든)', 'Obama(오바마)', 'Putin(푸틴)'은 모두 계층 플래그가 없는 '클린'으로 분류되었습니다. 그러나 로케일에 따라 차이가 있으며, 예를 들어 독일어 사전에서는 트럼프를 클린으로 분류하고, 스웨덴어 사전에서는 푸틴을 선정적으로 분류합니다.

주의할 점은 플래그가 설정되더라도 검열 대상이 되는 것은 아니라는 점이며, 스베레氏は 플래그는 "제안하지 않아야 할" 단어를 결정하기 위해 사용된다고 추측하고 있습니다. 예를 들어, 민감한 단어는 사용자가 직접 입력하더라도 자동 수정되지 않지만, QuickType 바에서 표시되기 어렵다고 합니다.

[원문 보기](https://gigazine.net/news/20261105-macos-vulgar-word-flags/) | 출처: Gigazine