MaartenGr/KeyBERT

Minimal keyword extraction with BERT

KeyBERT – 使用 BERT 嵌入的關鍵字提取

是什麼 – 一個極小的 Python 庫,可將任意文字文件轉換為最具代表性的詞語或短語清單。它透過以下方式運作:

  1. 從 BERT 風格的模型(例如 Sentence-Transformer)取得 文件 嵌入。
  2. 取得文字中每個候選 n-gram 的嵌入。
  3. 根據候選項目與文件嵌入的餘弦相似度進行排序。

由於繁重的工作由預訓練語言模型完成,您只需幾行程式碼,無需模型訓練即可使用。


核心功能

功能 說明
零訓練關鍵字提取 使用現成的 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 的預處理 – 將關鍵字輸入聚類、推薦或主題模型管道。
  • 快速原型開發 – 無需訓練自訂關鍵字模型;一行程式碼即可開箱即用。

局限性

  • 品質取決於嵌入模型 – 性能不佳的 Transformer 會產生雜訊關鍵字。
  • Max-sum / MMR 是組合性的 – 為確保合理執行時間,nr_candidates 必須保持較小。
  • LLM 模式需要外部 API 金鑰並產生費用
  • 無內建多語言分詞 – 需要多語言嵌入模型(例如 paraphrase-multilingual-MiniLM-L12-v2)。

進一步閱讀與資源

KeyBERT 是現代 BERT 嵌入與經典關鍵字提取任務之間的實用、低程式碼橋樑,是任何需要從文字中快速取得可解釋標籤的人的得力工具。

相關

  • 專案
  • 專案
  • 專案
  • 專案