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の前処理 – クラスタリング、推薦、トピックモデルパイプラインにキーワードを供給。
- 迅速なプロトタイピング – カスタムキーフレーズモデルの学習は不要;1行で即座に動作。
制限事項
- 品質は埋め込みモデルに依存 – 性能が低い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埋め込みと古典的なキーワード抽出タスクの間を実用的かつ低コードでつなぐ橋渡しであり、テキストから迅速かつ解釈可能なタグを必要とする誰にでも便利なツールです。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト