【问题标题】:Read and manipulate Sagemaker Json Output读取和操作 Sagemaker Json 输出
【发布时间】:2021-09-28 22:10:42
【问题描述】:

我将 HuggingFace Transformer 模型作为批处理部署在 Sagemaker 上。我的输出文件是一个 .jsonl.out 文件,如下所示:

{"SageMakerOutput":[{"label":"LABEL_8","score":0.9152628183364868}],"inputs":"test"}
{"SageMakerOutput":[{"label":"LABEL_8","score":0.9769203066825867}],"inputs":"Alles OK"}

现在的问题是我只想要以下输出:

LABEL_8, test
LABEL_8, Alles OK

并以 .csv 或 .xlsx 格式返回!我试过这样的东西:

batch_transform_result = []
with open(output_file) as f:
    for line in f:
        # converts jsonline array to normal array
        line = "[" + line.replace("[","").replace("]","") + "]"
        batch_transform_result = literal_eval(line) 

并尝试添加更多 .replace() 函数来清理读取的文本,但没有奏效。有什么建议吗?

【问题讨论】:

  • 嗨@soulwreckedyouth!您的 final 输出应该如何? “转换为普通数组”是怎么回事?
  • 这对我有用!在第二次迭代中,我想将输出转换为具有 2 列(标签和文本)的数据框

标签: python json


【解决方案1】:

我认为以下内容对你有用

lst = [
    {"SageMakerOutput": [{"label": "LABEL_8", "score": 0.9152628183364868}], "inputs": "test"},
    {"SageMakerOutput": [{"label": "LABEL_8", "score": 0.9769203066825867}], "inputs": "Alles OK"}
]

result = [(entry['SageMakerOutput'][0]['label'],entry['inputs']) for entry in lst]

print(result)

输出

[('LABEL_8', 'test'), ('LABEL_8', 'Alles OK')]

【讨论】:

  • 感谢@balderman,它引发了以下错误:TypeError:字符串索引必须是整数。这可能是导致它在列表中的列表吗? ['[{"SageMakerOutput":{"label":"LABEL_8","score":0.9152628183364868},"inputs":"test"}\n]', '[{"SageMakerOutput":{"label":"LABEL_8","score":0.9769203066825867},"inputs":"Alles OK"}\n]']
  • 是的。您正在使用列表中的列表。这就是异常的原因。
猜你喜欢
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多