콘텐츠로 이동

복합명사 분리(^) 사전

복합명사 분리(^) 사전으로 토큰화 미세조정

형태소분석을 그대로 분석하면 한 덩어리 명사로 묶일 수 있습니다. 하지만 검색 색인이나 RAG 임베딩에서는 형태소분석을 따로 토큰으로 잡아야 검색이 잘 됩니다. 바른복합명사 분리 사전(cp_caret_set)^ 기호로 분리 지점을 지정해, 붙여 쓴 단어를 의도한 위치에서 둘 이상으로 나눠 토큰화하도록 미세조정합니다.

이 문서는 ^ 표기법과 분리 사전의 동작, 그리고 검색·RAG에서의 활용을 설명합니다.

^로 분리 지점을 표시한다

복합명사 분리 사전의 표제어는 일반 단어와 달리 ^ 기호로 끊을 자리를 표시합니다. 국립국어원 규정상 띄어 써야 하지만 실무에서 자주 붙여 쓰는 단어에 적합합니다.

입력 표기 등록 표제어 토큰화 결과
형태소분석 형태소^분석 형태소 + 분석
디지털인문학 디지털^인문학 디지털 + 인문학
데이터산업 데이터^산업 데이터 + 산업
코로나백신 코로나^백신 코로나 + 백신

복합명사(CP)와 복합명사 분리(CP^)의 차이

복합명사 사전(cp_set)은 코로나19처럼 통째로 한 단어(NNG)로 묶습니다. 복합명사 분리 사전(cp_caret_set)은 정반대로, 붙여 쓴 글자를 의도한 지점에서 나눕니다. "한 단어로 보고 싶다 → CP", "단어 단위로 쪼개 색인하고 싶다 → CP^"로 기억하세요.

등록 예시

^ 기호는 복합명사 분리 사전에서만 허용되는 예외 기호입니다. 다른 사전 항목에는 기호를 넣을 수 없습니다.

from bareunpy import Tagger

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

cust_dic = my_tagger.custom_dict("search_index")
cust_dic.copy_cp_caret_set({'형태소^분석', '디지털^인문학', '데이터^산업'})
cust_dic.update()

분리되는 모습

등록 후 분석하면 두 개의 일반명사로 나뉘고, 각 형태소가 사용자 사전에서 왔다고 표시됩니다.

디지털인문학 강좌에서 형태소분석을 배웠다.
디지털/NNG, IN_CUSTOM_DICT
인문학/NNG, IN_CUSTOM_DICT
형태소/NNG, IN_CUSTOM_DICT
분석/NNG, IN_CUSTOM_DICT

검색·RAG 토큰화에서의 활용

검색 엔진과 RAG 파이프라인은 보통 명사 단위 토큰으로 색인·임베딩합니다. 복합어가 한 덩어리로 묶이면 "형태소"로 검색했을 때 "형태소분석" 문서가 걸리지 않을 수 있습니다. 복합명사 분리 사전으로 끊어 두면 부분 단어 검색이 자연스럽게 동작합니다.

이럴 때 복합명사 분리 사전을 쓰세요

  • 사내 문서 검색에서 "데이터", "산업" 각각으로도 "데이터산업"이 검색되게 하고 싶을 때
  • RAG 임베딩 입력을 의미 있는 명사 단위로 잘게 나누고 싶을 때
  • 자동 띄어쓰기에만 맡기기 어려운 도메인 합성어를 일관되게 끊고 싶을 때

분리 지점은 신중하게

^는 의미가 살아 있는 경계에만 넣으세요. 무리하게 쪼개면 오히려 검색 품질이 떨어질 수 있습니다. 한 단어로 굳어진 신조어라면 분리 사전이 아니라 복합명사 사전(cp_set)이 맞습니다.

자주 묻는 질문

Q. ^는 어느 사전에서만 쓸 수 있나요?

복합명사 분리 사전(cp_caret_set)에서만 쓸 수 있는 예외 기호입니다. 고유명사·복합명사·동사·형용사 사전을 비롯한 다른 사전 항목에는 기호를 넣을 수 없습니다.

Q. 세 개 이상으로 나눌 수도 있나요?

네. ^를 여러 번 넣어 분리 지점을 추가하면 됩니다. 다만 의미가 살아 있는 명사 경계에만 표시하는 것이 검색 품질에 유리합니다.

Q. 자동 띄어쓰기와 무엇이 다른가요?

자동 띄어쓰기(auto_spacing)는 일반 규칙으로 어절 경계를 보정합니다. 복합명사 분리 사전은 특정 도메인 합성어를 항상 같은 지점에서 끊도록 보장한다는 점에서 더 결정적입니다.

도움이 되었나요?