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

如何将主题、词汇、得分输出保存为三列结构的DataFrame

实现方法

你拿到的主题模型输出不管是结构化的接口返回对象,还是控制台打印的文本,都可以通过打平嵌套结构的方式快速转成要求的三列DataFrame,具体操作如下:

场景1:原始输出是结构化的字典/列表格式(直接调用模型接口返回的结果)

这类结果一般是「主题编号: [(词汇1, 得分1), (词汇2, 得分2)...]」的嵌套结构,直接遍历打平即可:

import pandas as pd

# 替换成你自己的主题输出结果
topic_result = {
    0: [("算法", 0.045), ("模型", 0.032), ("训练", 0.028), ("数据", 0.021)],
    1: [("产品", 0.039), ("用户", 0.034), ("需求", 0.026), ("运营", 0.022)],
    2: [("性能", 0.041), ("功耗", 0.030), ("散热", 0.025), ("配置", 0.019)]
}

data_list = []
for topic_id, word_score_pairs in topic_result.items():
    # 主题名可以按需调整命名规则,这里默认按「主题+序号」生成
    topic_name = f"主题{topic_id + 1}"
    for word, score in word_score_pairs:
        data_list.append({
            "a列:主题名": topic_name,
            "b列:词汇": word,
            "c列:得分": score
        })

df = pd.DataFrame(data_list)

场景2:原始输出是控制台打印的文本格式(和参考示例的打印样式一致)

如果是复制的控制台打印结果,用正则提取对应字段即可,不需要手动整理:

import pandas as pd
import re

# 替换成你复制的原始打印文本
raw_print_text = """
0  0.032*"订单" + 0.028*"配送" + 0.021*"客服" + 0.019*"物流"
1  0.041*"价格" + 0.035*"优惠" + 0.027*"性价比" + 0.022*"活动"
2  0.038*"质量" + 0.029*"做工" + 0.024*"材质" + 0.018*"瑕疵"
"""

data_list = []
for line in raw_print_text.strip().split("\n"):
    if not line:
        continue
    # 拆分主题编号和后续词汇得分段
    topic_id, content_part = line.split(maxsplit=1)
    topic_name = f"主题{int(topic_id) + 1}"
    # 正则匹配所有「得分*"词汇"」格式的片段
    match_pairs = re.findall(r'(\d+\.\d+)\*"([^"]+)"', content_part)
    for score, word in match_pairs:
        data_list.append({
            "a列:主题名": topic_name,
            "b列:词汇": word,
            "c列:得分": float(score)
        })

df = pd.DataFrame(data_list)
  • 生成的df直接满足三列要求,每一行对应单个主题下的一个词汇及其权重,后续排序、筛选、导出都可以直接基于这个DataFrame操作。
  • 如果主题名需要自定义命名,只要把代码里生成topic_name的部分替换成你自己的命名映射规则就行。

内容的提问来源于stack exchange,提问作者Noob Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:24:25