
80万条中文ChatGPT多轮对话数据集
【代码】80万条中文ChatGPT多轮对话数据集。
·
代码
import json
import numpy as np
from tqdm import tqdm
import re
def find_chinese_text(text):
pattern = re.compile(r'[^\u4e00-\u9fff]')
return pattern.sub('', text)
with open("E:/data_sets/multiturn_chat_0.8M.json", "r", encoding="utf-8") as f:
json_list = f.readlines()
data = [json.loads(i) for i in tqdm(json_list)]
data_list = []
basic_list = ["<|User|>", "<|Ash|>"] * 100
for one_data in tqdm(data):
ins = one_data["instruction"]
# inp=one_data["input"]
out = one_data["output"]
ins = np.hstack([i.split("Human:") for i in ins.split("Assistant:")])[1:-1].tolist()
ins_len = len(ins)
ins = np.hstack([[i, j] for i, j in zip(basic_list[:ins_len], ins)]).tolist()
ins += [basic_list[ins_len], out]
data_list.append(ins)
with open("data_set.txt","a",encoding="utf-8") as f:
voc_set=set()
for one_list in tqdm(data_list):
one_data=[]
for one in one_list:
try:
if one in ["<|User|>", "<|Ash|>"]:
one_data+=[one]
else:
if len(find_chinese_text(one))/(len(one)+1)<0.5:
one=one.split()
else:
one=list(one)
one_data+=one
except:
print()
voc_set|=set(one_data)
f.write(str(one_data)+"\n")
代码地址
代码解析
- 导入需要的库:json、numpy、tqdm、re。
- 定义函数
find_chinese_text()
,用于寻找文本中的中文字符。 - 使用
with
打开文件 “E:/data_sets/multiturn_chat_0.8M.json”,并逐行读取文件,将其转化为列表形式。 - 将读取到的json数据解析出instruction和output,并将instruction中的对话拆分成用户和Ash的对话,并将其存储到ins列表中,输出的对话存储到out列表中。
- 将ins列表中的对话合并成一整段对话,并在其中添加分割符 “<|User|>” 和 “<|Ash|>”。
- 将out列表添加到ins列表中,并将整段对话添加到data_list中。
- 使用
with
打开文件 “data_set.txt”,并迭代 data_list 中的每一段对话,将其中的每一个元素添加到 one_data 列表中,如果元素是 “<|User|>” 或者 “<|Ash|>”,则直接添加,否则将元素按空格分开,分开后的每个单词作为列表元素添加到 one_data 列表中。 - 将 one_data 列表转化为字符串,并将其写入到 “data_set.txt” 文件中。
- 使用 set() 函数将所有的词语添加到 voc_set 集合中,得到整个数据集中所有的单词。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)