algo-nlp-lda について
algo-nlp-ldaは、LDAで文書コーパスから潜在トピックを抽出する教師なしトピックモデリングのスキルです。カテゴリが不明な大規模テキスト向けで、トピック数の選定と一貫性・解釈性の確認を重視します。
主な機能
- 01コーパスから潜在トピックを抽出
- 02トピック語と文書分布を出力
- 03一貫性スコアでトピックを評価
- 04ギブスサンプリングまたは変分推論
活用シーン
- 01カテゴリ不明の大規模文書を探索
- 02抽出したトピックで文書を整理
- 03ニュースコーパスの潜在テーマを調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ asgard-ai-platform/ skills --skill algo-nlp-ldaインストール後、Claude Code で/algo-nlp-ldaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/sample_scenario.mdreferences/advanced-lda.mdtopic-evaluation.md詳細
LDA トピックモデリング
概要
潜在ディリクレ配分法(LDA)は、各文書をトピックの混合として、各トピックを単語の分布としてモデル化します。教師なしでコーパスから K 個の潜在トピックを発見します。ギブスサンプリングまたは変分推論を使用します。計算量:O(N × K × iterations)。N は単語トークンの総数です。
使用する場面
使用条件:
- 大規模な文書コレクションから潜在的なテーマを発見する
- 自動的に発見したトピックで文書を整理・分類する
- カテゴリーが不明な場合に探索的なテキスト分析を行う
使用しない場面:
- カテゴリーが既知の場合(教師あり分類を使用してください)
- 短いテキスト(ツイート、タイトル)の場合 — 文書あたりの単語数が少なすぎて、信頼性の高いトピック割り当てができません
- 意味の理解が必要な場合(埋め込みを使用してください)
アルゴリズム
IRON LAW: The Number of Topics K Must Be Chosen, Not Discovered
LDA does NOT tell you how many topics exist. K is a hyperparameter.
Too few topics: overly broad, mixed themes. Too many: fragmented,
redundant topics. Use coherence score (C_v) to compare K values,
but the final choice requires human judgment on topic interpretability.
フェーズ 1:入力の検証
前処理:トークン化、ストップワードの削除、見出し語化の適用。文書・単語行列を作成します。フィルタリング:5% 未満または 50% を超える文書に出現する語を削除します。 ゲート: クリーンな DTM であり、語彙のサイズが妥当であること(1K~50K 語)。
フェーズ 2:コアアルゴリズム
- K を選択します(√(N/2) から始め、K=5,10,15,20,... の範囲を試します)
- ハイパーパラメーターを設定します:α = 50/K(文書・トピック密度)、β = 0.01(トピック・単語密度)
- LDA を実行します(ギブスサンプリング:1000 回以上の反復、または変分推論)
- 抽出します:トピック・単語分布(トピックごとに上位 10~20 語)と文書・トピック分布
フェーズ 3:検証
評価します:トピックの一貫性(C_v スコア。高いほど良好)、トピックごとの上位語の目視確認、「ジャンク」トピック(まとまりのない単語が混在したトピック)の有無。 ゲート: 一貫性スコアが許容範囲内であり、トピックを人が解釈できること。
フェーズ 4:出力
上位語と文書の割り当てを含むトピックを返します。
出力形式
{
"topics": [{"id": 0, "label": "finance", "top_words": ["revenue", "profit", "quarter", "growth"], "coherence": 0.55}],
"doc_topics": [{"doc_id": "d1", "dominant_topic": 0, "topic_distribution": [0.7, 0.1, 0.2]}],
"metadata": {"K": 10, "coherence_avg": 0.48, "documents": 5000, "vocabulary": 8000}
}
例
入出力例
入力: ニュース記事 1000 件、K=5 期待される結果: 一貫性のある上位語を持つトピック(例:{政治、スポーツ、テクノロジー、ビジネス、エンターテインメント})。
エッジケース
| 入力 | 期待される結果 | 理由 |
|---|---|---|
| 非常に短い文書 | トピックの割り当て精度が低い | 信頼性の高い混合比率の推定には単語数が少なすぎます |
| 均質なコーパス | 1~2 個のトピックが支配的になる | すべての文書が類似しており、トピックの多様性が限られています |
| K=1 | 単一のトピック=コーパスの語彙 | 退化ケースであり、識別ができません |
注意点
- ストップワードは必ず削除してください:ストップワードが残っていると、LDA は一般的な単語(「the」「is」「and」)が支配的な「ジャンク」トピックを作成します。
- トピックのラベル付けは手動です:LDA が出力するのは単語の分布であり、トピック名ではありません。上位語に基づいてトピックを解釈し、ラベルを付ける必要があります。
- 再現性:ギブスサンプリングは確率的です。乱数シードが異なると、異なるトピックが得られます。複数回実行し、結果が安定しているか確認してください。
- 動的なトピック:標準の LDA ではトピックが静的であると仮定します。時間とともに変化するコーパス(複数年にわたるニュースなど)には、動的トピックモデルを使用してください。
- ハイパーパラメーターへの感度:α を小さくすると、文書ごとのトピック数が少なくなり、トピックがより明確になります。β を小さくすると、トピックごとの語数が少なくなり、より具体的な単語が得られます。パラメーターを調整するか、自動手法を使用してください。
参考資料
- 一貫性の指標と K の選択については、
references/topic-evaluation.mdを参照してください - 動的トピックモデルと相関トピックモデルについては、
references/advanced-lda.mdを参照してください
コメント
Markdown 対応