OOV 줄이기
OOV 줄이기 — 미등록단어 모니터링·개선 사이클
아무리 사전이 풍부해도 새 문장에는 늘 모르는 단어가 등장합니다. 바른은 이런 단어를
미등록단어(OOV, Out of Vocabulary)로 표시해줍니다. 이 표시를 모아 사용자 사전에 등록하는
사이클을 돌리면, 도메인 분석 품질을 꾸준히 끌어올릴 수 있습니다.
이 문서는 out_of_vocab이 OUT_OF_VOCAB인 어절을 추출해 사전에 등록하는 개선 루프를
설명합니다.
미등록단어란 무엇인가
형태소 분석 결과의 각 형태소에는 출처를 나타내는 out_of_vocab이 붙습니다.
이 값이 OUT_OF_VOCAB이면, 바른이 어느 사전에서도 찾지 못해 자동으로 추측한 단어입니다.
out_of_vocab |
의미 |
|---|---|
OUT_OF_VOCAB |
미등록단어 — 어디에도 없어 추측한 단어 (개선 대상) |
IN_CUSTOM_DICT |
사용자 사전에 등록됨 (목표 상태) |
IN_BUILTIN_DICT / IN_URIMALSAEM 등 |
내장 사전에서 인식됨 |
OOV가 왜 품질의 신호인가요?
바른은 워드 임베딩을 통해 미등록단어를 추출하고, 저빈도 토큰은 모두 UNKNOWN으로
처리합니다. 즉 미등록단어는 바른이 자신 없이 추측한 부분입니다. 도메인 문서에서 같은 단어가
반복해서 OUT_OF_VOCAB으로 나온다면, 그 단어는 사용자 사전에 등록할 1순위 후보입니다.
OOV를 줄이는 것이 곧 도메인 분석 정확도를 높이는 것입니다.
개선 사이클
graph LR
A[실제 문장 분석] --> B[OUT_OF_VOCAB 추출];
B --> C[빈도순 후보 정리];
C --> D[5종 사전에 분류·등록];
D --> E[재분석·검증];
E --> A;
- 분석: 운영 중 들어오는 실제 문장을 형태소 분석합니다.
- 추출:
out_of_vocab이OUT_OF_VOCAB인 어절을 모읍니다. - 정리: 자주 나오는 순서로 정렬해 영향이 큰 단어부터 처리합니다.
- 분류·등록: 이름은 고유명사, 굳어진 명사는 복합명사, 활용어는 동사·형용사 사전에 넣습니다.
- 검증: 다시 분석해
IN_CUSTOM_DICT로 바뀌었는지 확인하고, 새 미등록단어를 다음 사이클로 넘깁니다.
미등록단어 추출 예시
분석 결과에서 미등록단어만 골라 후보 목록을 만드는 예시입니다.
import json
from collections import Counter
from bareunpy import Tagger
my_tagger = Tagger('YOUR-API-KEY', 'localhost', port=5656)
sentences = [ '...', '...' ] # 도메인 문서 문장들
oov_counter = Counter()
for s in sentences:
res = json.loads(my_tagger.tags([s]).as_json_str())
for tok in res['sentences'][0]['tokens']:
for m in tok['morphemes']:
if m.get('outOfVocab') == 'OUT_OF_VOCAB':
oov_counter[m['text']['content']] += 1
# 자주 나온 미등록단어부터 사전 등록 후보로
for word, cnt in oov_counter.most_common(20):
print(f'{word}\t{cnt}')
이 목록을 보고 여신심사는 복합명사, 민식이법은 고유명사로 분류해 등록하면 됩니다.
사이클을 돌릴수록 좋아집니다
OOV 추출 → 등록 → 재분석을 반복하면 도메인에서 자주 나오는 단어부터 차례로 사라집니다. 정기적으로 미등록단어 목록을 점검하는 것을 운영 루틴으로 삼으세요.
빈도 높은 단어부터
모든 미등록단어를 한꺼번에 등록할 필요는 없어요. 자주 등장하는 단어부터 처리하면 적은 노력으로 가장 큰 품질 개선을 얻을 수 있어요.
자주 묻는 질문
Q. 미등록단어(OOV)는 어떻게 찾나요?
형태소 분석 결과에서 out_of_vocab이 OUT_OF_VOCAB인 형태소를 모으면 됩니다.
이 단어들이 바른이 사전에서 찾지 못해 추측한, 사용자 사전 등록 후보입니다.
Q. 미등록단어를 등록하면 무엇이 좋아지나요?
해당 단어가 추측이 아니라 의도한 품사로 정확히 인식됩니다. 등록 후 그 형태소의
out_of_vocab은 IN_CUSTOM_DICT로 바뀝니다. 반복하면 도메인 분석 정확도가 꾸준히 오릅니다.
Q. 모든 미등록단어를 다 등록해야 하나요?
아닙니다. 자주 나오는 단어부터 처리하는 것이 효율적입니다. 한 번 스쳐가는 오타나 일회성 표현까지 등록할 필요는 없습니다.
도움이 되었나요?