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 的預處理 – 將關鍵字輸入聚類、推薦或主題模型管道。
- 快速原型開發 – 無需訓練自訂關鍵字模型;一行程式碼即可開箱即用。
局限性
- 品質取決於嵌入模型 – 性能不佳的 Transformer 會產生雜訊關鍵字。
- 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 嵌入與經典關鍵字提取任務之間的實用、低程式碼橋樑,是任何需要從文字中快速取得可解釋標籤的人的得力工具。
相關
- 專案
- 專案
- 專案
- 專案