You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的stm包中输出准确的主题占比数据?

获取主题占比并生成表格的解决方案

针对BERTopic的实现示例

如果你用BERTopic做主题建模,可直接通过模型内置属性提取主题占比和高频词:

import pandas as pd
from bertopic import BERTopic

# 假设已训练好的模型为topic_model
topic_model = BERTopic.load("your_trained_model")

# 获取各主题的文档数量
topic_sizes = topic_model.get_topic_sizes()
topic_df = pd.DataFrame(topic_sizes.items(), columns=["主题标签", "文档数量"])

# 计算主题占比百分比
total_docs = topic_df["文档数量"].sum()
topic_df["主题占比(%)"] = round((topic_df["文档数量"] / total_docs) * 100, 2)

# 获取每个主题的高频词(取前5个为例)
topic_info = topic_model.get_topic_info()
topic_info["高频词"] = topic_info["Representation"].apply(lambda x: ", ".join(x[:5]))

# 合并并整理最终表格
final_table = pd.merge(topic_df, topic_info[["Topic", "高频词"]], left_on="主题标签", right_on="Topic")
final_table = final_table[["主题标签", "主题占比(%)", "高频词"]]

# 输出表格
print(final_table)
# 保存为CSV文件
final_table.to_csv("主题汇总表.csv", index=False, encoding="utf-8-sig")

针对Gensim LDA的实现示例

如果用Gensim的LDA模型,需从文档-主题分布中统计占比:

import pandas as pd
from gensim.models import LdaModel

# 假设已训练好的LDA模型为lda_model,训练语料为corpus
lda_model = LdaModel.load("your_lda_model")
corpus = ... # 你的训练语料

# 统计每个文档的主导主题
dominant_topics = []
for doc in corpus:
    # 取概率最高的主题作为文档的主导主题
    topic_probs = sorted(doc, key=lambda x: -x[1])
    dominant_topics.append(topic_probs[0][0])

# 计算各主题的文档数量与占比
topic_counts = pd.Series(dominant_topics).value_counts().sort_index()
topic_df = pd.DataFrame({
    "主题标签": topic_counts.index,
    "文档数量": topic_counts.values
})
total_docs = len(corpus)
topic_df["主题占比(%)"] = round((topic_df["文档数量"] / total_docs) * 100, 2)

# 获取每个主题的高频词(取前5个为例)
topic_terms = []
for topic_id in range(lda_model.num_topics):
    terms = lda_model.show_topic(topic_id, topn=5)
    topic_terms.append(", ".join([term for term, prob in terms]))
topic_df["高频词"] = topic_terms

# 输出表格
print(topic_df)
# 保存为CSV文件
topic_df.to_csv("主题汇总表.csv", index=False, encoding="utf-8-sig")

关键说明

  • 主题占比的核心逻辑是统计每个主题对应的文档数量,再除以总文档数得到百分比;
  • 高频词可通过调整topn参数,按需获取不同数量的关键词;
  • 若使用其他建模工具,只需提取主题与文档的映射关系,即可用类似逻辑计算占比。

内容的提问来源于stack exchange,提问作者Hank Zuo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 04:06:26