-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmake_data.py
More file actions
50 lines (40 loc) · 1.8 KB
/
Copy pathmake_data.py
File metadata and controls
50 lines (40 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import json
import random
import os
# 文件路径
file_path = os.path.join(os.path.dirname(__file__), 'Qwen2.5-7B-Instruct_data', 'Qwen2.5-7B-Instruct_data.jsonl')
success_samples = []
fail_samples = []
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
try:
entry = json.loads(line)
label = entry.get("label")
if label == "success":
success_samples.append(entry)
elif label == "fail":
fail_samples.append(entry)
except Exception:
continue
num = len(success_samples)
# 随机选取等量fail
fail_samples_selected = random.sample(fail_samples, num) if len(fail_samples) >= num else fail_samples
def split_data(samples, train_ratio=0.6):
random.shuffle(samples)
split_idx = int(len(samples)*train_ratio)
return samples[:split_idx], samples[split_idx:]
success_train, success_test = split_data(success_samples)
fail_train, fail_test = split_data(fail_samples_selected)
output_dir = os.path.join(os.path.dirname(__file__), 'Qwen2.5-7B-Instruct_data')
os.makedirs(output_dir, exist_ok=True)
def save_jsonl(lst, path):
with open(path, 'w', encoding='utf-8') as f:
for item in lst:
f.write(json.dumps(item, ensure_ascii=False) + '\n')
save_jsonl(success_train, os.path.join(output_dir, 'success_train.jsonl'))
save_jsonl(success_test, os.path.join(output_dir, 'success_test.jsonl'))
save_jsonl(fail_train, os.path.join(output_dir, 'fail_train.jsonl'))
save_jsonl(fail_test, os.path.join(output_dir, 'fail_test.jsonl'))
print(f"数据已保存到 {output_dir}\nSuccess总数={len(success_samples)}, Fail选中={len(fail_samples_selected)}")
print(f"Success: train={len(success_train)}, test={len(success_test)}")
print(f"Fail: train={len(fail_train)}, test={len(fail_test)}")