关于 algo-nlp-lda
algo-nlp-lda 是用于无监督主题建模的技能,通过 LDA 从文档语料中提取潜在主题,适合主题类别未知的大型文本集合。它强调选择主题数并结合一致性分数和人工检查评估结果。
主要功能
- 01从语料中发现潜在主题
- 02输出主题词与文档主题分布
- 03用一致性分数评估主题
- 04支持 Gibbs 采样或变分推断
适用场景
- 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 主题建模
概述
潜在狄利克雷分配将每篇文档建模为多个主题的混合,并将每个主题建模为词语上的概率分布。无需监督即可从语料库中发现 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:核心算法
- 选择 K(从 √(N/2) 开始,尝试 K=5、10、15、20……)
- 设置超参数:α = 50/K(文档-主题密度),β = 0.01(主题-词语密度)
- 运行 LDA(Gibbs 抽样: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 给出的是词语分布,而不是主题名称。你必须根据高频词语解读并标注主题。
- 可复现性:Gibbs 抽样具有随机性。不同随机种子会得到不同主题。请多次运行并检查稳定性。
- 动态主题:标准 LDA 假设主题是静态的。对于不断演变的语料库(例如多年来的新闻),请使用动态主题模型。
- 超参数敏感性:较低的 α 会使每篇文档包含更少且更明确的主题。较低的 β 会使每个主题包含更少且更具体的词语。请调整参数或使用自动方法。
参考资料
- 有关连贯性指标和 K 的选择,请参阅
references/topic-evaluation.md - 有关动态主题模型和相关主题模型,请参阅
references/advanced-lda.md
评论
支持 Markdown