어간추출 (Stemming)
쉽게 풀면
'달리다', '달렸다', '달리는'처럼 형태가 조금씩 다른 단어들을 같은 뿌리 단어로 묶어서 검색이 더 잘 되게 하는 기법이다.
왜 중요한가
형태가 다른 단어를 동일한 색인어로 취급해 검색 재현율을 높이는 자연어처리 전처리 기법으로, 정보검색시스템의 색인 파이프라인 설계에서 표준적으로 다뤄집니다. 검색엔진에 어간추출을 적용하면 '달리다'와 '달렸다'처럼 활용형이 다른 단어를 한 번의 검색으로 함께 찾을 수 있다.
어떤 절차인가
어간추출은 단어 끝의 접미사를 규칙으로 잘라 내 같은 어간으로 묶는 알고리즘입니다. 대표인 포터(Porter) 알고리즘은 5단계로 접미사를 차례로 처리하며, 어간에 모음과 자음이 번갈아 나오는 횟수(‘measure’)가 일정 이상일 때만 접미사를 자르도록 조건을 둡니다(Porter, 1980). 첫 단계 규칙의 예는 다음과 같습니다.
- caresses → caress (SSES → SS)
- ponies → poni (IES → I)
- caress → caress (SS → SS)
- cats → cat (S → 제거)
결과가 사전에 있는 단어일 필요는 없습니다. ‘poni’처럼 색인에서 같은 표지로 쓰일 문자열이면 됩니다. 이 점이 사전을 이용해 기본형으로 되돌리는 표제어화와 다릅니다.
언제 쓰고 무엇을 얻나
정보검색에서 어간추출은 색인어를 줄이고, 활용형이 다른 단어를 한 번의 검색으로 찾아 주어 재현율을 높이는 데 쓰입니다(Manning et al., 2008). 대신 서로 다른 뜻의 단어를 같은 어간으로 묶어 정확률을 떨어뜨릴 수 있습니다. 예컨대 포터 알고리즘은 universe, university, universal 계열을 같은 어간 univers 부근으로 묶는 것으로 자주 거론되는데, 이런 현상을 과잉절단(overstemming)이라 합니다. 그 반대로 같은 뜻의 단어를 서로 다른 어간으로 남기는 것이 과소절단(understemming)입니다.
알고리즘 선택도 비교 대상입니다. 러빈스(Lovins, 1968)는 한 번에 가장 긴 접미사를 제거하는 초기 알고리즘이고, 페이스(Paice, 1990)의 스테머는 반복 규칙 방식입니다.
한국어는 어미가 풍부한 교착어라서 영어 규칙을 그대로 쓸 수 없고, 형태소 분석으로 용언의 어간과 어미를 가르는 방식이 쓰입니다.
논문에는 이렇게 적는다
- 어떤 스테머를 썼는지(알고리즘과 구현 버전)와 언어를 적습니다. 구현마다 결과가 다를 수 있습니다.
- 어간추출을 적용한 경우와 하지 않은 경우를 같은 질의·문서집합으로 비교하고, 재현율과 정확률(또는 평균정밀도)을 함께 보고합니다.
- 불용어 제거, 대소문자 처리 같은 다른 전처리와 함께 적용했다면 순서를 밝힙니다.
- 과잉절단·과소절단 오류 사례를 몇 개 제시하면 해석에 도움이 됩니다.
논문에서는 이렇게 쓰입니다
실제 논문에서
이 용어를 직접 쓴 국내 논문 문장을 아직 수집하지 못했습니다. 수집되는 대로 출처와 함께 싣겠습니다.
예시 문장
아래는 용어의 쓰임을 보여 주려고 만든 예시로, 실제 논문에서 가져온 문장이 아닙니다.
영어권 정보검색에서 대표적인 Porter 알고리즘을 이용해 어간추출을 적용한 사례를 보여주는 문장이다.
이 문장은 어간추출을 아예 안 하면 검색이 놓치는 문서가 많아지고, 반대로 너무 심하게 적용하면 관련 없는 문서까지 걸려 들어와 검색 품질이 떨어지는 절충 문제가 있다는 것을 보여줍니다.
조금 더 깊게 보면
포터 스테머 같은 규칙 기반 알고리즘은 때로 의미상 무관한 단어를 같은 어간으로 묶는 과잉절단(overstemming)이나 반대로 같은 의미의 단어를 다르게 처리하는 과소절단(understemming) 문제를 일으킬 수 있어, 언어와 도메인에 따라 적절성이 달라집니다.
어간추출은 단어의 활용형을 하나의 어간으로 통합해 색인 크기를 줄이고 재현율을 높이지만, 서로 다른 의미의 단어가 같은 어간으로 뭉뚱그려질 경우 정확률이 떨어질 위험도 함께 지닌다. Porter 알고리즘처럼 규칙 기반으로 접미사를 제거하는 방식과, 사전을 참조해 표준형으로 환원하는 표제어추출 방식이 구분된다.
한국어처럼 교착어 특성이 강한 언어는 형태소 분석기를 활용한 별도의 처리가 필요해 영어권 알고리즘을 그대로 적용하기 어렵다.
주의할 점
과도한 어간추출은 서로 다른 의미의 단어를 동일하게 처리하여 오히려 정밀률을 떨어뜨리는 부작용(overstemming)을 낳을 수 있다. 규칙 기반 어간추출은 언어별 예외가 많아, 알고리즘을 그대로 다른 언어에 적용하면 부정확한 어간이 산출될 수 있다는 점에 유의해야 한다.
헷갈리기 쉬운 용어
텍스트 정규화 용어는 서로 다른 작업을 가리킵니다.
| 용어 | 하는 일 | 결과 예 |
|---|---|---|
| 어간추출 | 규칙으로 접미사를 잘라 같은 어간으로 묶음 | caresses → caress |
| 표제어화 | 품사와 사전을 이용해 기본형(lemma)으로 환원 | running → run, better → good |
| 토큰화 | 텍스트를 단어·부분단어 단위로 쪼갬 | 문장 → 토큰 목록 |
참고 문헌
- Porter, M. F. (1980). An algorithm for suffix stripping. Program, 14(3), 130–137.
- Lovins, J. B. (1968). Development of a stemming algorithm. Mechanical Translation and Computational Linguistics, 11(1–2), 22–31.
- Paice, C. D. (1990). Another stemmer. ACM SIGIR Forum, 24(3), 56–61.
- Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press.
표의 기준값은 위 문헌에 근거한 관례이며, 분야·학술지마다 다른 기준을 쓸 수 있습니다.