BERTopic 알고리즘 — 단계별 파이프라인

BERTopic 알고리즘 — 단계별 파이프라인

BERTopic 은 문장 임베딩 → 차원 축소 → 클러스터링 → 토픽 표현 순서로 동작하는 토픽 모델링 파이프라인이에요. 각 단계가 어떤 일을 하는지 볼게요.

1. 문장 임베딩

각 문서를 사전학습된 SBERT 계열 모델로 변환해 의미 벡터를 만들어요. 이 예로 sentence-transformersall-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)

더 알아보기 (Learn more)

출처: BERTopic Algorithm