MaartenGr/KeyBERT
Minimal keyword extraction with BERT
KeyBERT – BERT 임베딩을 사용한 키워드 추출
무엇인가요 – 어떤 텍스트 문서를 가장 대표적인 단어나 구로 변환하는 매우 작고 가벼운 Python 라이브러리입니다. 다음과 같은 방식으로 작동합니다:
- BERT 스타일 모델(예: Sentence-Transformer)에서 문서 임베딩을 가져옵니다.
- 텍스트 내 모든 후보 n-gram의 임베딩을 가져옵니다.
- 문서 임베딩과의 코사인 유사도로 후보를 순위 매깁니다.
사전 훈련된 언어 모델이 대부분의 작업을 수행하므로, 몇 줄의 코드만으로도 모델 훈련 없이 사용할 수 있습니다.
핵심 기능
| 기능 | 설명 |
|---|---|
| 제로 트레이닝 키워드 추출 | 시중에 있는 BERT 임베딩을 사용; pip install keybert 후 extract_keywords 호출만 하면 됩니다. |
| 사용자 정의 n-gram 길이 | keyphrase_ngram_range를 통해 단어, 2-gram, 3-gram 등을 지정할 수 있습니다. |
| 다양성 제어 | use_maxsum (최대 합 거리) 및 use_mmr (최대 경계 관련성)를 통해 관련성과 다양성 사이의 균형을 조절할 수 있습니다. |
| 다양한 임베딩 백엔드 지원 | Sentence-Transformers, Flair, spaCy, Gensim, TensorFlow-Hub의 Universal Sentence Encoder, 또는 가벼운 Model2Vec 기반 설정을 지원합니다. |
| LLM 기반 추출 (KeyLLM) | 선택적 래퍼로 텍스트를 OpenAI 챗 모델에 전송하고 키워드 제안을 반환합니다. |
| 하이라이트 기능 | 원본 문서 내에서 추출된 키워드를 빠르게 시각화할 수 있습니다. |
빠른 시작
pip install keybert # 핵심 패키지
pip install keybert[flair] # 선택적 백엔드 (flair, spacy, gensim, use)
from keybert import KeyBERT
doc = "Supervised learning is the machine learning task of learning a function …"
kw_model = KeyBERT() # 기본값은 소규모 영어 Sentence-Transformer
keywords = kw_model.extract_keywords(doc)
print(keywords) # [('learning', 0.46), ('algorithm', 0.45), …]
n-gram 크기 변경: kw_model.extract_keywords(doc, keyphrase_ngram_range=(1,2))
다양성 추가: kw_model.extract_keywords(doc, use_mmr=True, diversity=0.7)
하이라이트: kw_model.extract_keywords(doc, highlight=True)
언제 사용할까?
- 문서 요약 – 보고서, 기사, 연구 논문에서 가장 중요한 용어를 추출.
- 검색 엔진 인덱싱 – 빠른 검색을 위한 태그 생성.
- 하류 NLP 전처리 – 클러스터링, 추천, 토픽 모델링 파이프라인에 키워드를 공급.
- 빠른 프로토타이핑 – 맞춤형 키워드 모델을 훈련할 필요 없이, 한 줄 코드로 즉시 사용 가능.
제한 사항
- 품질은 임베딩 모델에 달려 있음 – 성능이 낮은 트랜스포머는 노이즈가 많은 키워드를 생성합니다.
- Max-sum / MMR는 조합적임 – 실행 시간을 고려해
nr_candidates는 작게 유지해야 합니다. - LLM 모드는 외부 API 키 필요 및 비용 발생.
- 내장된 다국어 토크나이저 없음 – 다국어 임베딩 모델(예:
paraphrase-multilingual-MiniLM-L12-v2)이 필요합니다.
추가 리소스
- Medium 포스트: Keyword extraction with BERT (README 내 링크).
- 전체 문서: https://maartengr.github.io/KeyBERT/
- 인용:
@misc{grootendorst2020keybert, …}
KeyBERT는 현대적인 BERT 임베딩과 전통적인 키워드 추출 작업 사이를 실용적이고 저코드로 연결하는 다리로, 텍스트에서 빠르고 해석 가능한 태그가 필요한 누구에게나 유용한 도구입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트