콘텐츠로 이동

사용자 사전 우선순위

사용자 사전과 내장 사전의 우선순위

바른은 우리말샘 약 100만 건을 비롯한 풍부한 내장 사전을 갖고 있습니다. 그런데 사용자 사전에 같은 단어를 등록하면 어느 쪽이 적용될까요? 결론부터 말하면, 분석 요청에 지정한 사용자 사전이 우선합니다.

이 문서는 사용자 사전과 내장 사전의 우선순위, 그리고 어느 사전에서 단어가 왔는지 확인하는 방법을 설명합니다.

우선순위 한눈에

형태소의 출처는 out_of_vocab 값으로 구분됩니다. 사용자 사전에서 온 단어는 IN_CUSTOM_DICT로 표시됩니다.

출처 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 세 출처는 맞춤법 검사 빌드에서만 표시됩니다. 형태소 분석기만 단독으로 쓸 때는 이 값이 나타나지 않습니다.

왜 사용자 사전이 우선인가요?

내장 사전은 일반적인 한국어를 폭넓게 다루지만, 특정 회사·도메인의 의도까지 알 수는 없습니다. 사용자가 "이 단어는 이렇게 인식하라"고 명시한 의도가 가장 구체적이므로, 분석 요청에 지정한 사용자 사전을 우선 적용합니다.

같은 단어가 양쪽에 있을 때

바른네네치킨을 내장 지식으로는 "네네/NNG + 치킨/NNG"로 쪼개더라도, 사용자 사전에 네네치킨(고유명사)을 등록하고 분석 요청에 그 도메인을 지정하면 네네치킨/NNP 한 덩어리로 인식됩니다.

graph TD
  W[입력 단어] --> C{지정한 사용자 사전에<br>있나?};
  C -- 예 --> CD[사용자 사전 우선<br>IN_CUSTOM_DICT];
  C -- 아니오 --> B[내장 사전·우리말샘 등<br>으로 분석];

사용자 사전은 지정해야 우선됩니다

사용자 사전이 우선이라는 것은, 분석 요청에 그 사전을 지정했을 때의 이야기입니다. custom_dict_names(또는 set_domain)로 지정하지 않으면 사용자 사전은 적용되지 않고 내장 지식만으로 분석됩니다.

출처 확인하기

등록한 단어가 정말 사용자 사전에서 왔는지는 out_of_vocabcustom_dict_name으로 확인합니다.

from bareunpy import Tagger

my_tagger = Tagger('YOUR-API-KEY', 'localhost', port=5656)

my_tagger.set_domain('brand')   # 사용자 사전 지정
res = my_tagger.tags(['네네치킨을 먹었다.'])
for tok in res.msg().sentences[0].tokens:
    for m in tok.morphemes:
        print(m.text.content, m.tag, m.out_of_vocab, m.custom_dict_name)
네네치킨 NNP IN_CUSTOM_DICT brand
을 JKO IN_BUILTIN_DICT
먹 VV IN_WORD_EMBEDDING
었 EP IN_WORD_EMBEDDING
다 EF IN_WORD_EMBEDDING
. SF

네네치킨out_of_vocabIN_CUSTOM_DICT이고 custom_dict_namebrand이므로, 내장 지식 대신 brand 사용자 사전이 우선 적용됐음을 알 수 있습니다.

자주 묻는 질문

Q. 사용자 사전과 내장 사전 중 무엇이 우선인가요?

분석 요청에 지정한 사용자 사전이 우선합니다. 같은 단어가 내장 사전에 다르게 들어 있어도, 지정한 사용자 사전의 등록 내용대로 인식됩니다.

Q. 어느 사전에서 단어가 왔는지 어떻게 아나요?

형태소의 out_of_vocab 값으로 확인합니다. IN_CUSTOM_DICT이면 사용자 사전, IN_BUILTIN_DICT이면 기본 사전, IN_URIMALSAEM이면 우리말샘에서 온 것입니다. 사용자 사전이면 custom_dict_name에 도메인 이름까지 들어 있습니다.

Q. 등록했는데 내장 사전 결과가 그대로 나옵니다.

분석 요청에 해당 도메인을 지정했는지(custom_dict_names/set_domain) 확인하세요. 지정하지 않으면 사용자 사전이 적용되지 않습니다.

Q. 우리말샘·위키백과·온용어 출처는 항상 표시되나요?

IN_URIMALSAEM·IN_WIKI_DICT·IN_ON_DICT 세 출처는 맞춤법 검사 빌드에서만 표시됩니다. 형태소 분석기만 단독으로 쓸 때는 나타나지 않습니다. 사용자 사전 출처 IN_CUSTOM_DICT와 미등록단어 OUT_OF_VOCAB은 모든 구성에서 확인할 수 있습니다.

도움이 되었나요?