python 处理json数据集

功能概述

这个数据处理脚本用于将原始 JSON 数据转换为统一的格式,确保数据的一致性和可用性,以便于后续的数据分析或机器学习模型的训练。具体功能包括:

  1. 读取原始数据: 从指定的 JSON 文件路径读取数据。
  2. 统一数据格式: 将不同的键映射到一个标准键,以简化数据处理。
  3. 过滤空值: 去除值为空的条目,确保只处理有效数据。
  4. 保存处理后的数据: 将转换和过滤后的数据保存到新的 JSON 文件中。

为什么需要这么处理数据

  1. 提高数据一致性: 不同的数据源或格式可能导致数据处理复杂且不一致。将所有数据统一到一个标准格式,能确保数据在后续处理和分析中保持一致性。
  2. 简化处理流程: 标准化的数据格式简化了数据预处理过程,减少了处理数据时的复杂性。这使得模型训练和数据分析变得更加高效和可靠。
  3. 避免数据丢失: 统一键名和格式能避免因键名不同导致的数据丢失或解析错误,确保数据的完整性和准确性。
  4. 提升训练效果: 统一的输入格式能使模型更好地理解和处理数据,从而提高模型的训练效果和性能。

JSON 数据标准

  • 每个 JSON 对象中的键名必须唯一: 在同一个对象内,每个键名只能出现一次。
  • 数据格式应统一: 将所有相关的信息映射到一个标准键中,以便于模型训练或数据分析。

示范 JSON 数据集

  1. 基本单键数据集:
 [
       {"text": "This is the first entry."},
       {"text": "This is the second entry."}
   ]

说明: 每个对象都包含一个标准的 "text" 键。

  1. 多键数据集:
[
       {"description": "This is a description.", "details": "Additional details here."},
       {"description": "Another description.", "details": "More additional details."}
   ]

说明: 每个对象有多个键,处理时可以选择统一成一个标准键(如 "text")。

  1. 包含空值的多键数据集:
 [
       {"title": "Title 1", "content": "Content 1"},
       {"title": "Title 2", "content": ""},
       {"title": "Title 3", "content": "Content 3"}
   ]

说明: 在处理时,可以过滤掉内容为空的条目。

  1. 具有不同数据结构的混合数据集:
   [
       {"summary": "Summary of the first entry.", "details": "Details here."},
       {"text": "Text for the second entry."},
       {"notes": "Notes about the third entry."}
   ]

说明: 将所有不同的键映射到一个统一的键(如 "text"),以保持格式的一致性。

  1. 带有可选键的数据集:
[
       {"content": "Content with primary key."},
       {"content": "Another content.", "metadata": "Optional metadata."}
   ]

说明: 只处理主要键 "content",忽略其他可选的键。

通过以上示例,你可以了解如何根据实际数据格式选择和处理 JSON 数据,确保数据的一致性和有效性,以便进行更高效的数据分析或模型训练。

demo:

import json

def filter_and_standardize_comments(input_path, output_path):
    # 读取JSON文件
    with open(input_path, 'r', encoding='utf-8') as file:
        data = json.load(file)

    # 映射键名从中文到英文
    key_mapping = ["文本", "文本1", "文本2", "文本3", "文本4", "文本5"]

    # 过滤掉包含空值的评论并转换键名
    filtered_data = []
    for entry in data:
        # 获取所有非空文本值
        text_values = [entry.get(key) for key in key_mapping if entry.get(key)]
        if text_values:
            # 保留所有非空文本字段
            for i, text in enumerate(text_values):
                filtered_entry = {"text": text}
                filtered_data.append(filtered_entry)

    # 将过滤后的数据写入新的JSON文件
    with open(output_path, 'w', encoding='utf-8') as file:
        json.dump(filtered_data, file, ensure_ascii=False, indent=4)

if __name__ == "__main__":
    input_path = "D:/data/待处理.json"
    output_path = "D:/data/已处理.json"
    filter_and_standardize_comments(input_path, output_path)

因为采集的语料如下格式:

	"文本": "信息",
	"文本1": "信息1",
	"文本2": "信息2",
	"文本3": "信息3",
	"文本4": "",
	"文本5": ""

处理过后:

	"text": "信息",
	"text": "信息1",
	"text": "信息2",
	"text": "信息3",

更新,处理后,每一个键应该独立而不是嵌套在一个对象中。

为接下来的模型训练做准备。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注