포터 알고리즘(Porter’s Stemming Algorithm)

by SL

정보검색(Information Retrieval; IR)과 관련된 구현을 시작하면서 가장 처음 맞닥뜨리게 되는 현실적인 어려움은 아마도 키워드의 어근 추출 문제일 것이다. 예를 들어 TF-IDF 알고리즘을 구현한다고 해보자. 문서에 포함된 각 단어에 대하여 그 단어와 문서의 연관성을 계산해야 하는데, 어근이 제대로 추출되지 않는다면 최종 구현물의 정확도는 떨어질 수밖에 없다. ability와 abilities가 서로 다른 단어로 처리되기 때문이다.

한국어는 잘 모르겠지만, 영어의 경우에는 일반적으로 잘 알려진 어근 추출 방법이 있다. 개발자인 Martin Porter의 이름을 따서 포터 알고리즘(Porter’s Algorithm)이라고 불리는 방식으로, 최초로 소개된 것이 1979년이니까 벌써 30년이나 숙성된 것이다.

포터 알고리즘을 가져다 쓰기 위해서 내부적인 내용을 반드시 이해할 필요는 없다. 저자가 직접 구현한 C 언어 버전, 그리고 그밖의 많은 사람들이 여러 언어로 포팅한 버전을 여기에서 내려받을 수 있다. 이 알고리즘을 최초로 소개한 논문도 같은 페이지에서 구할 수 있으니 관심있는 분들은 한 번 읽어봐도 좋을 것이다.