BERTopic 알고리즘 — 단계별 파이프라인
BERTopic 알고리즘 — 단계별 파이프라인
BERTopic 은 문장 임베딩 → 차원 축소 → 클러스터링 → 토픽 표현 순서로 동작하는 토픽 모델링 파이프라인이에요. 각 단계가 어떤 일을 하는지 볼게요.
1. 문장 임베딩
각 문서를 사전학습된 SBERT 계열 모델로 변환해 의미 벡터를 만들어요. 이 예로 sentence-transformers 의 all-MiniLM-L6-v2 가 자주 쓰여요.
2. 차원 축소 (UMAP)
임베딩 공간이 너무 고차원이라 클러스터링이 어려울 수 있어요. UMAP 으로 차원을 줄여 클러스터링 성능을 높이고 속도도 개선해요.
3. 클러스터링 (HDBSCAN)
HDBSCAN 은 밀도 기반 클러스터링으로, 클러스터 개수를 미리 정하지 않아도 밀도가 높은 영역을 스스로 찾아요. 밀도가 낮은 점은 이상치(-1)로 처리해요.
4. 토픽 표현 (c-TF-IDF)
각 클러스터를 하나의 "문서"로 합친 뒤 c-TF-IDF(class-based TF-IDF) 로 클러스터를 대표하는 단어를 뽑아요. 이 단어들이 곧 토픽 이름이 돼요.
각 단계 교체 가능
BERTopic 의 장점은 각 단계를 원하는 모델로 갈아끼울 수 있는 것이에요. 예를 들어:
from bertopic import BERTopic
from umap import UMAP
from hdbscan import HDBSCAN
umap = UMAP(n_neighbors=15, n_components=5, metric='cosine')
hdbscan = HDBSCAN(min_cluster_size=10, metric='euclidean', cluster_selection_method='eom')
topic_model = BERTopic(umap_model=umap, hdbscan_model=hdbscan)