TF-IDF
1. 검색 관련성 산출 알고리즘의 발전¶
사용자의 검색 쿼리에 대해 가장 관련성이 높은 문서를 찾기 위해 알고리즘은 다음과 같은 단계로 개선됩니다.
① 단순 단어 횟수 카운팅¶
- 방법: 문서 내에 검색어가 등장하는 절대적인 횟수를 합산하여 점수 부여.
- 문제점: 문서의 길이에 영향을 받음. 관련 없는 긴 문서가 관련 있는 짧은 기사보다 점수가 높게 나오는 오류 발생.
② 단어 빈도 (Term Frequency, TF)¶
- 방법: (검색어 등장 횟수) / (문서의 총 단어 수).
- 효과: 문서 길이에 따른 불공정함을 해소하고 단어의 밀도를 측정함.
- 문제점: '그', '이', '것' 등 의미 없는 흔한 단어에 높은 가중치가 쏠리는 현상 발생.
③ TF-IDF (Term Frequency - Inverse Document Frequency)¶
- 개념: 단어의 빈도(TF)에 해당 단어의 '희귀성'을 나타내는 역문서 빈도(IDF)를 곱함.
- 공식:
- $TF$: 특정 문서 내 단어의 출현 빈도
- $IDF = \log_{10}(\frac{\text{전체 문서 수}}{\text{특정 단어가 포함된 문서 수}})$
- 최종 점수: $\sum (TF \times IDF)$
- 특징: * 모든 문서에 흔하게 등장하는 단어는 IDF가 0에 수렴하여 무시됨.
- 특정 문서에만 집중적으로 등장하는 희귀하고 중요한 단어에 높은 가중치를 부여함.
- 통계적 알고리즘이므로 데이터(문서)의 양이 많을수록 정확도가 높아짐.
2. 분산 검색 시스템 아키텍처 정의¶
대규모 문서를 효율적으로 처리하기 위해 시스템을 다음과 같이 구성합니다.
시스템 구성 요소 및 흐름¶
- 데이터 저장소: 모든 노드가 접근 가능한 공유 파일 시스템 또는 각 노드에 복제된 형태.
- 리더(코디네이터) 선출: 클러스터 노드 중 하나를 리더로 선출하여 전체 작업을 조율.
- 사용자 인터페이스: 프런트엔드 서버를 통해 웹 페이지 제공 및 사용자 쿼리 수신.
- 작업 분산 (Parallel Processing):
- 사용자가 쿼리를 던지면 프런트엔드 → 코디네이터로 전달.
- 코디네이터는 작업을 쪼개어 여러 워커 노드(Worker Nodes)에 병렬로 배분.
- 각 워커 노드는 자신에게 할당된 문서 세트에 대해 TF-IDF 점수를 계산.
- 결과 취합 및 응답:
- 코디네이터가 워커 노드들의 결과를 수집 및 정렬(내림차순).
- 최종 결과 목록을 프런트엔드를 통해 사용자에게 전달.
3. 요약 및 결론¶
- 알고리즘: 단순 카운팅의 한계를 극복하기 위해 단어의 중요도(가중치)를 고려하는 TF-IDF를 채택함.
- 확장성: TF-IDF는 각 문서별 계산이 독립적이어서 병렬화가 매우 용이하며, 분산 시스템 구현에 적합함.
- 목표: 방대한 문서 저장소에서 사용자의 실시간 쿼리에 대해 가장 관련성 높은 순서로 정렬된 결과를 빠르게 제공하는 분산 검색 엔진 완성.