BERTopic 소개 — 클러스터링 기반 토픽 모델링
BERTopic 소개 — 클러스터링 기반 토픽 모델링
BERTopic은 사전학습 문장 임베딩 모델(주로 SBERT 계열)로 문서를 벡터화하고, 이를 클러스터링한 뒤 각 클러스터의 토픽 표현을 만들어내는 파이썬 라이브러리예요. LDA 같은 전통적인 토픽 모델링이 단어 빈도에 의존하는 것과 달리, BERTopic 은 문장의 의미를 반영해서 더 정확한 토픽을 찾을 수 있어요.
핵심 아이디어
- 문장 임베딩:
all-MiniLM-L6-v2같은 SBERT 모델로 각 문서를 벡터로 변환해요. - 차원 축소: UMAP 을 써서 고차원 임베딩을 저차원으로 줄여요.
- 클러스터링: HDBSCAN 으로 밀도 기반 클러스터(토픽)를 찾아요.
- 토픽 표현: TF-IDF 기반 변형(c-TF-IDF)으로 각 클러스터를 대표하는 단어를 뽑아요.
특징
- 동적 토픽 모델링: 시간에 따라 토픽이 어떻게 변하는지 추적할 수 있어요.
- 온라인/반지도 토픽: 실시간으로 업데이트하거나 일부 라벨을 알려줄 수 있어요.
- 다국어·다모달: 여러 언어와 다양한 임베딩 모델을 지원해요.
- 시각화: 토픽 간 관계, 변화, 키워드 네트워크를 그려줘요.
시작 방법
from bertopic import BERTopic
from sklearn.datasets import fetch_20newsgroups
docs = fetch_20newsgroups(subset='all')['data']
topic_model = BERTopic()
topics, probs = topic_model.fit_transform(docs)
topic_model.get_topic_info().head()
더 알아보기 (Learn more)
출처: BERTopic 공식 문서