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 嵌入与经典关键词提取任务之间的实用、低代码桥梁,是任何需要从文本中快速获取可解释标签的人的得力工具。

相关

  • 项目
  • 项目
  • 项目
  • 项目