← 모두의 툴

TF-IDF 돌리기 전에 불용어부터 지우는 이유

가이드 · 2026.08.21 최종 확인

텍스트에서 핵심 키워드를 뽑아내는 작업을 해본 적이 있다면, 결과 상위권에 "the", "and", "is" 같은 단어가 잔뜩 올라와서 당황한 경험이 있을 겁니다. 이건 알고리즘이 고장난 게 아니라, 통계적으로 지극히 당연한 결과입니다. 불용어(stopword) 제거가 왜 키워드 추출·문서 유사도 분석 같은 통계 기법 앞에 반드시 와야 하는 전처리 단계인지, 그 이유를 계산 구조로 짚어봅니다.

1. TF(단어빈도)는 "많이 나오면 중요하다"는 가정에서 출발한다

TF-IDF 같은 텍스트 분석 기법의 첫 단계는 TF, 즉 한 문서 안에서 어떤 단어가 몇 번 등장했는지 세는 것입니다. 이 값이 높을수록 그 단어가 문서의 주제를 대표한다고 가정합니다. 문제는 이 가정이 문법적으로 필수인 단어들, 즉 관사·전치사·be동사 같은 것들에는 전혀 맞지 않는다는 점입니다. "the"나 "is"는 어떤 주제의 글이든 거의 빠짐없이 높은 빈도로 등장하지만, 그 자체로는 아무 의미도 담고 있지 않습니다. 그런데도 TF는 그저 "많이 등장했다"는 사실만 보고 높은 점수를 줍니다.

2. 왜곡의 구조: 고빈도인데 무의미한 단어가 순위를 오염시킨다

IDF(역문서빈도)는 여러 문서에 고루 등장하는 단어의 가중치를 낮춰서 TF의 왜곡을 어느 정도 보정하도록 설계됐습니다. 하지만 불용어는 이 보정을 적용하기도 전에 이미 TF 단계에서 너무 큰 원시 값을 갖고 시작하기 때문에, 짧은 문서나 단순 빈도 기반 키워드 추출에서는 IDF 보정만으로 완전히 걸러지지 않는 경우가 흔합니다. 결과적으로 진짜 주제를 나타내는 단어들(예: "climate", "algorithm" 같은 도메인 특화 단어)이 상대적으로 낮은 빈도 때문에 순위에서 밀려나고, 문법적 접착제 역할만 하는 단어가 상위를 차지하는 왜곡이 생깁니다. 불용어 제거는 이 오염원을 통계 계산에 들어가기 전에 아예 잘라내는 방법입니다.

숫자로 보는 예시: "The cat sat on the mat"라는 6단어 문장에서 "the"는 2번 등장해 전체의 33%를 차지합니다. 반면 이 문장에서 실제 주제를 담은 단어인 "cat", "sat", "mat"는 각각 1번씩, 16.7%에 불과합니다. 불용어를 제거하지 않은 채 이 문장을 TF 기준으로 정렬하면 1위 키워드는 "the"가 되어버립니다. 실제로 modoohub 불용어 제거기의 결과 통계(입력/결과/제거됨 단어 수)를 확인해 보면, 짧은 문장일수록 불용어가 차지하는 비중이 눈에 띄게 크다는 걸 바로 확인할 수 있습니다.

3. 도구가 내장한 불용어 목록: 실제로는 몇 개일까

modoohub 불용어 제거기는 도구 자체 설명에서 "약 70개의 영어 불용어"를 내장했다고 안내하지만, 실제 소스 코드의 기본 목록(BASE_STOP)을 직접 세어 보면 a, an, the부터 also, now, own, same, too까지 총 95개 단어가 들어 있습니다. 관사·전치사·접속사류(a, an, the, and, or, but, in, on...)뿐 아니라 인칭대명사(i, you, he, she, it...)와 소유격(my, your, his, its...), 의문사(what, who, which, how...)까지 폭넓게 포함되어 있어 실제 커버리지는 안내 문구보다 넉넉합니다. 목록에 없는 단어(브랜드명, 반복 등장하는 인사말 등)는 쉼표로 구분해 커스텀 불용어 입력란에 추가하면 기본 목록에 그대로 합쳐집니다.

4. 대소문자 처리와 판정 대상 문자: 놓치기 쉬운 디테일

이 도구는 "대소문자 무시" 옵션이 기본으로 켜져 있어, 비교 전에 단어를 소문자로 바꾼 뒤 목록과 대조합니다. 옵션을 끄면 정확히 같은 대소문자로 쓰인 경우만 걸러지므로, 문장 맨 앞에 오는 대문자 "The"가 걸러지지 않을 수 있습니다. 또한 대조 시에는 알파벳(및 일부 라틴 확장 문자)만 남기고 마침표·쉼표 같은 구두점은 임시로 무시하지만, 실제 출력 결과에는 구두점이 원래 위치 그대로 남습니다. 즉 판정 로직과 최종 출력 로직이 분리되어 있어, "구두점까지 같이 지워지는 것 아니냐"는 오해가 흔한데 실제로는 그렇지 않습니다.

5. 어디에 쓰이나: 워드클라우드부터 임베딩 전처리까지

불용어 제거는 워드클라우드나 키워드 빈도 분석처럼 시각적으로 결과가 바로 드러나는 작업뿐 아니라, TF-IDF 벡터화나 워드 임베딩 학습 데이터를 준비할 때도 표준적인 전처리 단계로 쓰입니다. 통계적으로 의미 없는 고빈도 단어를 미리 걸러내면, 모델이나 분석 알고리즘이 실제로 주제를 구분하는 단어에 계산 자원을 집중할 수 있습니다. 전처리 후 남은 텍스트에서 실제 등장 빈도를 다시 확인하고 싶다면 단어 빈도 카운터로, 문서 간 유사도까지 비교하고 싶다면 텍스트 유사도 검사기로 이어서 분석하는 흐름이 일반적입니다.

자주 묻는 질문

Q. 불용어를 제거하지 않고 TF-IDF를 돌리면 어떻게 되나요?

IDF 보정이 어느 정도 감쇠시키긴 하지만, the·a·is 같은 단어는 원시 TF 값 자체가 매우 크기 때문에 짧은 문서나 단순 빈도 기반 분석에서는 여전히 상위권을 오염시킬 수 있습니다. 불용어 제거는 이 오염원을 계산 전에 미리 차단하는 방법입니다.

Q. modoohub 불용어 제거기의 기본 목록에는 정확히 몇 개 단어가 있나요?

도구 자체 안내 문구는 "약 70개"라고 되어 있지만, 실제 소스 코드의 기본 목록을 직접 세어 보면 95개입니다. 관사·전치사·접속사뿐 아니라 인칭대명사, 소유격, 의문사까지 폭넓게 포함되어 있습니다.

Q. 한국어 조사(은/는/이/가)도 이 도구로 제거할 수 있나요?

기본 내장 목록은 영어 단어로만 구성돼 있어 한국어 조사나 접속사는 자동으로 걸러지지 않습니다. 다만 커스텀 불용어 입력란에 원하는 한국어 단어를 쉼표로 나열하면 동일하게 제거 대상에 포함됩니다.

Q. 불용어를 지우면 구두점도 같이 없어지나요?

아니요. 이 도구는 단어를 불용어 목록과 대조할 때만 구두점을 임시로 무시할 뿐, 실제 출력 결과에는 마침표·쉼표 등 구두점이 원래 위치에 그대로 남습니다.