사전 간 우선순위
사전 간 우선순위와 결합 정책 — 내장 사전과 사용자 사전이 충돌할 때
바른은 여러 내장 사전과 사용자 사전을 함께 사용합니다.
같은 단어가 여러 사전에 들어 있을 때 무엇을 따를지, 그리고 어떤 사전에서 인식했는지를
어떻게 추적하는지가 분석 결과를 이해하는 데 중요합니다.
custom_dict_names — 먼저 지정한 사전이 우선
형태소 분석 요청에서 custom_dict_names로 여러 사용자 사전을 지정할 수 있습니다.
이때 먼저 나온 사전이 우선합니다. 같은 표제어가 여러 사전에 있으면 앞에 지정한 사전을 따릅니다.
- 위 예에서 같은 단어가 두 사전에 있으면
medical-terms가 우선합니다. - 우선순위를 바꾸려면 지정 순서를 바꾸시면 됩니다.
왜 순서로 우선순위를 정하나요
상황마다 우선해야 할 사전이 다릅니다. 의료 문서에서는 의료 용어 사전이, 법률 문서에서는 법률 용어 사전이 앞서야 합니다. 바른은 고정된 서열 대신 요청마다 순서를 지정하게 해서, 같은 단어라도 문서 성격에 맞는 사전을 따르도록 합니다.
내장 사전과 사용자 사전의 관계
내장 사전은 폭넓은 일반 어휘를, 사용자 사전은 특정 도메인이나 조직 고유의 어휘를 담습니다. 사용자가 사전을 지정하면, 그 사전에 등록된 단어는 사용자 의도대로 인식됩니다.
| 사전 종류 | 담는 어휘 | 출처 표시 |
|---|---|---|
| 사용자 사전 | 도메인·조직 고유 어휘 | IN_CUSTOM_DICT |
| 기본 빌트인 | 학습 어휘 | IN_BUILTIN_DICT |
| 우리말샘 | 국어 일반 어휘 | IN_URIMALSAEM |
| 온용어 | 전문용어·신조어 | IN_ON_DICT |
| 위키 | 외부 고유명사 | IN_WIKI_DICT |
OutOfVocab로 출처를 추적한다
어떤 단어가 어느 사전에서 인식되었는지는 형태소의 out_of_vocab 값으로 추적할 수 있습니다.
사용자 사전에서 왔다면 custom_dict_name으로 정확히 어느 사전인지까지 확인할 수 있습니다.
graph TD
M[형태소 결과] --> O{out_of_vocab};
O -- IN_CUSTOM_DICT --> CN[custom_dict_name 확인];
O -- IN_BUILTIN_DICT --> B[기본 사전];
O -- IN_URIMALSAEM --> U[우리말샘];
O -- OUT_OF_VOCAB --> G[미등록 추측];
결과를 신뢰하는 근거
출처 추적 덕분에 "이 단어는 내가 등록한 사전에서 인식됐다", "이건 추측이라 검토가 필요하다"를 구분할 수 있습니다. 사용자 사전을 어디에 보강해야 할지 판단할 때도 이 정보가 길잡이가 됩니다.
자주 묻는 질문
Q. 같은 단어가 여러 사용자 사전에 있으면 어떻게 되나요?
custom_dict_names에 먼저 지정한 사전이 우선합니다. 우선순위를 바꾸려면
사전 이름의 지정 순서를 바꾸시면 됩니다.
Q. 어떤 사전에서 단어를 인식했는지 알 수 있나요?
각 형태소의 out_of_vocab 값으로 출처를 알 수 있고, 사용자 사전에서 왔다면
custom_dict_name으로 어느 사전인지까지 확인할 수 있습니다.
Q. 내장 사전에 있는 단어를 사용자 사전으로 덮어쓸 수 있나요?
사용자 사전을 지정하면 그 사전의 등록 내용이 분석에 반영됩니다. 여러 사전을 함께 쓸 때는 먼저 지정한 사전이 우선하므로, 의도한 사전을 앞에 두시면 됩니다.
Q. 사용자 사전은 어떻게 등록·관리하나요?
사용자 사전은 CustomDictionaryService API로 관리합니다.
서버에 저장되는 사전 파일은 바이너리 형식이라 텍스트로 직접 편집하지 않습니다.
보유한 단어 목록 소스를 Git으로 관리하다가 UpdateCustomDictionary API로 반영하는 흐름이 안전합니다.
Q. 미등록단어로 나온 단어를 사전에서 인식시키려면?
자주 쓰는 단어가 미등록단어(OUT_OF_VOCAB)로 추측된다면 사용자 사전에 등록하면 됩니다.
등록한 단어는 IN_CUSTOM_DICT로 인식되어 추측보다 안정적으로 처리되고,
custom_dict_name으로 어느 사전에서 왔는지도 확인할 수 있습니다.
도움이 되었나요?