콘텐츠로 이동

동형이의어 분석 자원 비교

한국어 동형이의어 분석 — 자원·도구 비교

"형태소 분석기는 많은데, 왜 뜻은 알려 주지 않을까?" 이 질문에 답하려면 한국어에서 동형이의어 판별(같은 표기, 다른 뜻을 문맥으로 가리는 일)이 어떤 자원 위에서 어떻게 다뤄져 왔는지를 보아야 합니다.

이 문제는 새로 등장한 과제가 아닙니다. 울산대 연구실의 UTagger 계열이 오래전부터 의미 주석 자원과 도구를 만들어 왔고, ETRI 의 공개 언어 분석 API 도 어휘 의미 분석 항목으로 동형이의어· 다의어 판별을 제공해 왔습니다. 다만 널리 쓰이는 상용·오픈소스 형태소 분석기의 표준 출력에는 사전 의미 번호가 없어, 실무에서 그대로 받아 쓰기가 어려웠습니다.

이 문서는 바른 팀이 이 기능을 만들기 전에 정리한 국내 자원·도구 조사를 사용자 관점으로 요약한 것입니다. 바른의 구현 원리는 동형이의어 구분 원리, 사용법은 동형이의어 의미 구분 API를 참고하세요.

바른의 이 기능은 베타입니다

바른의 동형이의어 의미 구분은 베타이며 3.1.0 정식 릴리스에 포함됩니다. 아래 비교는 "무엇을 제공하는가"에 초점을 둡니다. 시스템 간 정확도를 같은 조건에서 맞대어 측정한 공개 벤치마크는 정식 릴리스와 함께 공개할 예정입니다.

먼저 — 사전과 말뭉치가 갈라져 있습니다

의미 번호(어깨번호)는 어느 사전을 기준으로 하느냐에 따라 값이 달라집니다. 한국어에는 널리 쓰이는 기준이 둘 있습니다.

사전 성격 규모 감각 어깨번호
표준국어대사전 규범 사전(표준어 중심) 표제어 수가 상대적으로 적음 2자리 표기 관례
우리말샘 개방형·기술(記述) 사전, 신어·방언·전문어 포함 표제어·의미 수가 훨씬 많음 3자리 표기 관례

두 사전은 의미를 나누는 경계 자체가 다릅니다. 그래서 한쪽 번호를 다른 쪽에 그대로 옮길 수 없습니다. 이것이 한국어 동형이의어 처리에서 가장 먼저 만나는 벽입니다.

의미 주석이 붙은 말뭉치도 기준이 갈립니다.

말뭉치 의미 주석 기준 사전
세종 말뭉치(문어·구어) 주요 단어에 어깨번호 부착 표준국어대사전
모두의 말뭉치(뉴스 등) 원본에는 의미 번호 없음
국립국어원 어휘 의미 분석 자료 사람이 부착한 의미 번호 우리말샘
울산대 동형이의어 주석 자원(UTagger 계열) 사람이 부착한 의미 번호 자체·표준국어대사전 계열

바른의 선택

바른은 학습 자료 전체를 우리말샘 기준 한 공간으로 통일했습니다. 표제어·의미가 가장 많아 실제 글을 담아내고, 공개 자료로 뜻풀이까지 연결할 수 있기 때문입니다. 자세한 배경은 동형이의어 구분 원리에 있습니다.

형태소 분석기들은 의미 번호를 돌려주지 않습니다

널리 쓰이는 한국어 형태소 분석기 대부분은 형태와 품사까지 알려 줍니다. 뜻이 다른 동형이의어를 가려 사전 의미 번호를 함께 주는 기능은 표준 출력에 없습니다.

도구 형태·품사 사전 의미 번호(어깨번호)
Mecab-ko / KoNLPy 계열 O 제공하지 않음
Khaiii O 제공하지 않음
Kiwi O 제공하지 않음 (결과 항목에 의미 번호 필드가 없습니다)
바른 3.1.0(베타) O O — 어깨번호 + 뜻풀이 + 선택 확률

'동형이의어 구분'이라는 말이 두 가지로 쓰입니다

분석기 설명에서 "동형이의어를 구분한다"는 말은 보통 형태·품사 수준의 구분을 뜻합니다. 예를 들어 가는을 '가늘다(형용사)'·'가다(동사)'·'갈다(동사)' 중에서 고르는 일입니다. 바른도 이 작업을 오래 해 왔습니다(중의성 데이터셋).

이 문서에서 말하는 동형이의어 판별은 그다음 단계 — 품사까지 같은데 뜻이 다른 경우 (다리(橋)/다리(脚), 둘 다 NNG)를 사전 항목 단위로 가르는 일입니다. 두 층을 구분해 읽으셔야 비교가 정확해집니다.

동형이의어 판별을 실제로 하는 도구들

구분 방식 특징
울산대 UTagger 계열 사전·통계 기반 + 자체 동형이의어 주석 자원 국내에서 가장 오래 이 문제를 다뤄 온 계열입니다. 의미 주석 자원(UTagger-HG 등)과 도구를 함께 배포하며, 이 분야의 기반 자원으로 널리 쓰여 왔습니다. 사용 조건·최신 정확도는 배포처 안내를 확인하세요.
ETRI 공개 언어 분석 API 형태소 분석·어휘 의미 분석(동형이의어·다의어) 등을 묶은 공개 API 어휘 의미 분석 항목으로 동형이의어·다의어 판별을 제공해 왔습니다. 연구·공공 목적의 공개 API 로, 신청·이용 조건은 ETRI 공개 API 안내를 따릅니다.
오픈소스 통계 기반 도구 의미별 공기어(함께 나오는 단어) 통계 + 최빈 의미 되돌림 학습 분류기가 아니라 사전·빈도표 기반이라 가볍고 결과가 설명적입니다. 창(窓) 밖 문맥·긴 거리 단서·관측되지 않은 공기어에는 약하고, 드문 의미는 최빈 의미로 떨어집니다. 라이선스가 비상업(연구) 조건인 경우가 있어 상업적 사용 전 확인이 필요합니다.
사전 기반 매칭 + 규칙 표제어 후보 중 규칙·우선순위로 선택 구현이 단순하고 빠릅니다. 문맥을 모델로 읽지 않으므로 사실상 최빈 의미에 가깝게 동작합니다.
거대 언어모델(LLM)에 직접 질의 프롬프트로 "이 문장에서 이 단어의 뜻은?" 도입이 쉽고 설명도 잘합니다. 다만 호출 비용·지연이 크고, 같은 문장에 대해 답이 흔들릴 수 있으며, 사전 의미 번호로 정확히 맞추기가 어렵습니다.
바른(베타) 형태소 분석과 문맥 표현을 공유하는 의미 판정 + 사전 후보 제한 형태소 분석 응답에 어깨번호·뜻풀이·확률이 함께 실립니다. 사전 후보 안에서만 고르므로 엉뚱한 뜻이 붙지 않습니다. 용언·반복 출현은 아직 약합니다.

연구 흐름에서 확인된 것들

바른이 방향을 정할 때 근거로 삼은 선행 연구입니다. 사용자 문서라 요점만 옮깁니다.

연구 요점
세종 의미 주석 + 사전학습 언어모델 미세조정 (2025) 토큰화 불일치를 해소하면 기존 대비 3~5% 정확도 개선. 사람이 붙인 의미 주석이 여전히 가장 강한 재료입니다.
뜻풀이(gloss)를 함께 인코딩하는 방식 사전 뜻풀이를 의미 표현으로 활용하면 드문 의미에 도움이 됩니다. 바른은 뜻풀이 연결을 먼저 갖춰 두어 이 확장을 열어 두었습니다.
단어 뜻 벡터(정의문 임베딩) 연구 세종 의미 말뭉치에서 높은 F1을 보고. 다만 평가 대상·의미 입도가 달라 시스템 간 수치 직접 비교는 어렵습니다.
"LLM 시대에 WSD는 끝났는가" (2025) 거대 모델의 무학습(zero-shot) 판별보다 작더라도 이 과제로 학습된 모델이 더 정확했습니다. 특히 드문 의미에서 격차가 큽니다.

공개된 정확도 수치를 그대로 비교하지 마세요

한국어 동형이의어 정확도는 조건에 따라 크게 달라집니다.

  • 기준 사전(표준국어대사전 vs 우리말샘)에 따라 구분해야 할 의미 수가 몇 배 차이 납니다.
  • 평가 대상이 '모든 단어'인지 '동형이의어인 단어만'인지에 따라 수치가 크게 벌어집니다.
  • 최빈 의미만 고르는 규칙도 이미 높은 점수를 냅니다. 그 기준선 대비 얼마나 나은지가 실제 실력입니다.

바른의 내부 보류 평가에서는 동형이의어 형태소 기준 약 92%, 같은 조건의 최빈 의미 규칙이 약 85% 였습니다(우리말샘 기준, 3만 이상 의미). 다른 발표 수치와 조건이 다르므로 같은 표에 올려 비교할 수 없습니다.

바른이 다른 점

앞서 보았듯 동형이의어 판별 자체는 바른이 처음 시도하는 일이 아닙니다. 바른의 차별점은 "정확도가 몇 %"보다 어디에 붙어서 나오는가에 있습니다.

  • 형태소 분석 응답에 그대로 실립니다. 별도 서비스·별도 호출·별도 정렬 작업이 없습니다. 이미 쓰던 API 에 옵션 하나(with_sense)를 켜면 됩니다.
  • 뜻풀이가 함께 옵니다. 사전을 따로 설치하거나 조회하지 않아도 사람이 읽을 수 있는 뜻이 응답에 있습니다. 형태소 분석만 설치한 환경에서도 동일합니다.
  • 사전 항목으로 후보를 제한합니다. 그 표제어·품사의 사전 후보 안에서만 고르므로, 다른 단어의 뜻이 붙는 사고가 구조적으로 발생하지 않습니다.
  • 확률이 해석 가능합니다. 후보 집합 안의 확률이라 임계값을 정해 자동/검수 흐름을 나눌 수 있습니다.
  • 상용 이용에 제약이 없습니다. 라이선스 조건 때문에 상업 서비스에 넣기 어려운 자원·도구가 있는 영역에서, 바른은 상용 제품으로 제공됩니다.

그리고 정직하게 적어 둘 점 — 베타 시점의 바른은 명사에서 안정적이고 용언에서 약합니다. 한 문장에 같은 표기가 여러 번 나오면 같은 의미로 몰리는 문제도 남아 있습니다. 자세한 실측 사례는 정확도와 한계에 열어 두었습니다.

어떤 선택이 맞을까

상황 권장
이미 바른으로 형태소 분석을 하고 있다 with_sense 를 켜는 것이 가장 저렴합니다. 파이프라인 변화가 없습니다.
명사 중심의 검색·색인·키워드 분석 바른의 베타 품질로도 효과가 분명합니다.
사전 뜻풀이를 사용자에게 보여 줘야 한다 응답의 뜻풀이·우리말샘 번호를 그대로 쓰면 됩니다.
소수 문장에 대해 아주 정밀한 판정이 필요하다 바른 결과를 1차로 쓰고, 확률이 낮은 건만 사람이나 LLM 으로 확인하는 2단 구성을 권합니다.
연구 목적으로 여러 시스템을 비교해야 한다 기준 사전과 평가 대상을 먼저 고정하세요. 그러지 않으면 수치가 비교되지 않습니다.

자주 묻는 질문

Q. 다른 한국어 형태소 분석기도 동형이의어의 뜻을 알려 주나요?

A. 널리 쓰이는 오픈소스 분석기(Mecab-ko, KoNLPy 계열, Khaiii, Kiwi)는 형태와 품사까지 알려 주며, 결과에 사전 의미 번호를 담는 항목이 없습니다. 사전 의미 번호를 다루는 것은 울산대 UTagger 계열, ETRI 공개 언어 분석 API 의 어휘 의미 분석처럼 이 문제를 전문으로 다뤄 온 자원·도구와, 바른(3.1.0 베타)입니다.

Q. 그냥 LLM 에 물어보면 되지 않나요?

A. 가능하지만 비용·지연이 크고 답이 흔들릴 수 있으며, 사전 의미 번호로 정확히 맞추기가 어렵습니다. 2025년 연구에서도 무학습 거대 모델보다 이 과제로 학습된 모델이 더 정확했고, 특히 드문 의미에서 격차가 컸습니다. 대량 처리에는 학습된 모델이, 소수의 어려운 사례에는 LLM 확인이 어울립니다.

Q. 바른의 어깨번호를 표준국어대사전 번호로 바꿀 수 있나요?

A. 두 사전은 의미 경계가 달라 번호를 1:1로 옮길 수 없습니다. 바른은 우리말샘 기준으로 제공하며, 응답의 우리말샘 표제어 번호로 사전 화면을 직접 확인할 수 있습니다.

Q. 다른 시스템과의 정확도 비교표는 언제 공개되나요?

A. 같은 기준 사전·같은 평가 대상으로 맞춘 비교는 바른 3.1.0 정식 릴리스와 함께 공개할 예정입니다. 조건이 다른 수치를 나란히 놓는 것은 오해를 낳기 때문입니다.

도움이 되었나요?