UNK 토큰이 자주 나올 때 점검할 5가지
분석 결과에 UNK가 자꾸 보이나요? UNK는 바른이 형태소를 어떤 품사로도 분류하지 못한
미분류(tag=0) 상태를 뜻합니다. 이 문서는 UNK가 잦을 때 차례로 점검할 다섯 가지를 정리합니다.
증상
형태소 태그가 UNK로 나오거나, 형태소의 out_of_vocab 값이 OUT_OF_VOCAB(미등록, 자동 추측)으로
표시됩니다. 특히 도메인 특화 텍스트(의학·법률·게임·신조어)에서 자주 나타나요.
원인
바른은 형태소마다 그 단어가 어디에서 왔는지를 out_of_vocab 값으로 알려줍니다.
| 값 | 의미 |
|---|---|
IN_WORD_EMBEDDING | 학습된 워드 임베딩에 포함 |
OUT_OF_VOCAB | 미등록단어, 자동 추측 |
IN_CUSTOM_DICT | 사용자 사전에 등록됨 |
IN_BUILTIN_DICT | 기본 사전에 포함 |
IN_URIMALSAEM | 우리말샘 |
IN_WIKI_DICT | 위키백과 사전 |
IN_ON_DICT | 온용어 사전 |
뒤쪽 세 출처는 맞춤법 검사기에서만 나옵니다
IN_URIMALSAEM·IN_WIKI_DICT·IN_ON_DICT 는 맞춤법 검사기(교정 기능이 포함된 배포본)가
쓰는 사전입니다. 형태소 분석기만 쓰실 때는 이 세 값이 나타나지 않습니다.
UNK가 잦다는 건 OUT_OF_VOCAB 형태소가 많다는 뜻이고, 곧 학습 데이터와 내장 사전에 없는
단어가 입력에 많다는 의미예요.
해결 — 점검할 5가지
-
out_of_vocab값을 먼저 확인하세요.OUT_OF_VOCAB이면 미등록단어,IN_*이면 사전에서 온 정상 단어입니다. 정상 단어인데 태그만 어색하다면 기대와 다른 결과 문서를 보세요. -
고유명사·전문용어를 사용자 사전에 등록하세요. 가장 효과가 큰 방법입니다.
UpdateCustomDictionary로 표제어를 추가하면 해당 형태소가IN_CUSTOM_DICT로 바뀝니다. -
복합명사는
cp_set/cp_caret_set을 쓰세요. 여러 명사가 붙은 긴 단어는 복합명사 사전에 넣고, 분리 지점을^로 표시하는cp_caret_set을 활용하면 분해가 정확해집니다. -
띄어쓰기를 점검하세요. 어절 경계가 깨지면 멀쩡한 단어도
UNK가 됩니다.auto_spacing을 켜서 보정을 맡겨보세요. -
입력 인코딩·정제를 확인하세요. 깨진 문자, 제어문자, 섞인 외국어가 있으면
UNK가 늘어납니다.encoding_type(UTF8/UTF16/UTF32)을 입력과 맞췄는지도 확인하세요.
한눈에 보는 점검표
-
out_of_vocab가OUT_OF_VOCAB인가 - 고유명사/전문용어를 사전에 등록했는가
- 복합명사를
cp_set/cp_caret_set으로 넣었는가 - 띄어쓰기(
auto_spacing)를 점검했는가 - 인코딩·입력 정제를 확인했는가
예방·팁
- 도메인 사전을 미리 구축해두면
UNK비율이 눈에 띄게 떨어집니다. 사전은 여러 개를 두고custom_dict_names에 우선순위 순서대로 지정할 수 있어요(먼저 지정한 사전이 우선). - 사용자 사전은 파일 변경을 실시간으로 감지해 무중단 갱신됩니다. 운영 중에도 단어를 보강할 수 있어요.
자주 묻는 질문
Q. UNK와 OUT_OF_VOCAB는 어떻게 다른가요?
UNK는 형태소가 어떤 품사로도 분류되지 않은 태그(tag=0)이고, OUT_OF_VOCAB는 그 단어의
출처가 "미등록·자동 추측"이라는 표시(out_of_vocab 값)입니다. 둘 다 미등록단어에서 비롯되는
경우가 많습니다.
Q. UNK를 가장 빨리 줄이는 방법은 무엇인가요?
자주 나오는 고유명사·전문용어를 사용자 사전에 등록하는 것입니다. 등록 후 분석 요청에
custom_dict_names를 지정하면 해당 단어가 IN_CUSTOM_DICT로 인식됩니다.
Q. 도메인 용어가 자꾸 UNK로 떠요, 어떻게 하나요?
의학·법률·게임 같은 도메인 특화 텍스트는 학습 데이터·내장 사전에 없는 미등록단어가 많아 UNK가
잦습니다. 해당 용어를 사용자 사전(np_set, 복합명사면 cp_set/cp_caret_set)에 등록하고
custom_dict_names로 지정하세요. 사전은 여러 개를 우선순위 순으로 줄 수 있어요.
Q. UNK 단어를 사전에 넣으면 서버를 재시작해야 하나요?
아니요. 사용자 사전은 CustomDictionaryService API로 관리하며 바른이 사전 디렉토리의 파일 변경을
실시간으로 감지해 무중단으로 즉시 반영합니다. 운영 중에도 단어를 보강하면 다음 요청부터 적용됩니다.