当前位置:   article > 正文

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")

  • 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

代码地址

数据地址

代码解析

  1. 导入需要的库:json、numpy、tqdm、re。
  2. 定义函数 find_chinese_text(),用于寻找文本中的中文字符。
  3. 使用 with 打开文件 “E:/data_sets/multiturn_chat_0.8M.json”,并逐行读取文件,将其转化为列表形式。
  4. 将读取到的json数据解析出instruction和output,并将instruction中的对话拆分成用户和Ash的对话,并将其存储到ins列表中,输出的对话存储到out列表中。
  5. 将ins列表中的对话合并成一整段对话,并在其中添加分割符 “<|User|>” 和 “<|Ash|>”。
  6. 将out列表添加到ins列表中,并将整段对话添加到data_list中。
  7. 使用 with 打开文件 “data_set.txt”,并迭代 data_list 中的每一段对话,将其中的每一个元素添加到 one_data 列表中,如果元素是 “<|User|>” 或者 “<|Ash|>”,则直接添加,否则将元素按空格分开,分开后的每个单词作为列表元素添加到 one_data 列表中。
  8. 将 one_data 列表转化为字符串,并将其写入到 “data_set.txt” 文件中。
  9. 使用 set() 函数将所有的词语添加到 voc_set 集合中,得到整个数据集中所有的单词。
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号