MaartenGr/KeyBERT

Minimal keyword extraction with BERT

KeyBERT – BERT 임베딩을 사용한 키워드 추출

무엇인가요 – 어떤 텍스트 문서를 가장 대표적인 단어나 구로 변환하는 매우 작고 가벼운 Python 라이브러리입니다. 다음과 같은 방식으로 작동합니다:

  1. BERT 스타일 모델(예: Sentence-Transformer)에서 문서 임베딩을 가져옵니다.
  2. 텍스트 내 모든 후보 n-gram의 임베딩을 가져옵니다.
  3. 문서 임베딩과의 코사인 유사도로 후보를 순위 매깁니다.

사전 훈련된 언어 모델이 대부분의 작업을 수행하므로, 몇 줄의 코드만으로도 모델 훈련 없이 사용할 수 있습니다.


핵심 기능

기능 설명
제로 트레이닝 키워드 추출 시중에 있는 BERT 임베딩을 사용; pip install keybertextract_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)이 필요합니다.

추가 리소스

KeyBERT는 현대적인 BERT 임베딩과 전통적인 키워드 추출 작업 사이를 실용적이고 저코드로 연결하는 다리로, 텍스트에서 빠르고 해석 가능한 태그가 필요한 누구에게나 유용한 도구입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트