mcpField
A
algo-nlp-lda

algo-nlp-lda

github.com/asgard-ai-platform数据与数据库24336 次安装21 周前更新
代码仓库

关于 algo-nlp-lda

algo-nlp-lda 是用于无监督主题建模的技能,通过 LDA 从文档语料中提取潜在主题,适合主题类别未知的大型文本集合。它强调选择主题数并结合一致性分数和人工检查评估结果。

主要功能

  1. 01从语料中发现潜在主题
  2. 02输出主题词与文档主题分布
  3. 03用一致性分数评估主题
  4. 04支持 Gibbs 采样或变分推断

适用场景

  1. 01探索类别未知的大型文档集合
  2. 02按自动发现的主题整理文档
  3. 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.md
references/
advanced-lda.md
topic-evaluation.md

详细介绍

LDA 主题建模

概述

潜在狄利克雷分配将每篇文档建模为多个主题的混合,并将每个主题建模为词语上的概率分布。无需监督即可从语料库中发现 K 个潜在主题。使用 Gibbs 抽样或变分推断。复杂度: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:核心算法
  1. 选择 K(从 √(N/2) 开始,尝试 K=5、10、15、20……)
  2. 设置超参数:α = 50/K(文档-主题密度),β = 0.01(主题-词语密度)
  3. 运行 LDA(Gibbs 抽样:1000 次以上迭代,或使用变分推断)
  4. 提取:主题-词语分布(每个主题排名前 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 给出的是词语分布,而不是主题名称。你必须根据高频词语解读并标注主题。
  • 可复现性:Gibbs 抽样具有随机性。不同随机种子会得到不同主题。请多次运行并检查稳定性。
  • 动态主题:标准 LDA 假设主题是静态的。对于不断演变的语料库(例如多年来的新闻),请使用动态主题模型。
  • 超参数敏感性:较低的 α 会使每篇文档包含更少且更明确的主题。较低的 β 会使每个主题包含更少且更具体的词语。请调整参数或使用自动方法。

参考资料

  • 有关连贯性指标和 K 的选择,请参阅 references/topic-evaluation.md
  • 有关动态主题模型和相关主题模型,请参阅 references/advanced-lda.md

评论

支持 Markdown