five

KameshRsk/flan_cot

收藏
Hugging Face2024-06-11 更新2024-06-29 收录
下载链接:
https://hf-mirror.com/datasets/KameshRsk/flan_cot
下载链接
链接失效反馈
官方服务:
资源简介:
Cleaned FLAN v2 Dataset 8K数据集是一个经过清洗和处理的FLAN v2数据集,包含四个JSONL文件。数据集通过合并文件、过滤短响应(少于100个token的响应被移除)、以及使用余弦相似度进行去重(相似度大于0.95的条目被移除)等步骤进行处理。数据处理过程中使用了`bert-base-uncased`分词器和TF-IDF向量化器。

Cleaned FLAN v2 Dataset 8K数据集是一个经过清洗和处理的FLAN v2数据集,包含四个JSONL文件。数据集通过合并文件、过滤短响应(少于100个token的响应被移除)、以及使用余弦相似度进行去重(相似度大于0.95的条目被移除)等步骤进行处理。数据处理过程中使用了`bert-base-uncased`分词器和TF-IDF向量化器。
提供机构:
KameshRsk
原始信息汇总

Cleaned FLAN v2 Dataset 8K

数据集名称: Cleaned FLAN v2 Dataset
来源: SirNeural/flan_v2
包含文件:

  • cot_fs_noopt_train.jsonl
  • cot_fs_opt_train.jsonl
  • cot_zs_noopt_train.jsonl
  • cot_zs_opt_train.jsonl

数据处理与清洗

数据集的处理和清洗步骤如下:

  1. 合并JSONL文件:

    • 原始数据集包含四个独立的JSONL文件:
      • cot_fs_noopt_train.jsonl
      • cot_fs_opt_train.jsonl
      • cot_zs_noopt_train.jsonl
      • cot_zs_opt_train.jsonl
    • 这些文件被合并成一个名为cot_fs_noopt_train.jsonl的文件。
  2. 过滤短响应的指令:

    • 删除响应少于100个token的指令。
    • 使用bert-base-uncased分词器计算token数量。
  3. 基于余弦相似度的数据去重:

    • 使用输入和目标的组合文本识别并删除重复条目。
    • 使用TF-IDF向量化器将组合文本转换为向量。
    • 计算向量之间的余弦相似度,识别相似度大于0.95的重复条目。
    • 基于此阈值删除重复条目。

数据清洗代码

以下Python代码用于数据清洗:

python import json import pandas as pd from transformers import AutoTokenizer from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity import numpy as np

步骤1: 逐行读取JSONL文件

json_list = [] with open(/kaggle/input/arakooai-data/cot_fs_noopt_train.jsonl, r) as file: for line in file: json_obj = json.loads(line) json_list.append(json_obj)

步骤2: 规范化JSON数据

df = pd.json_normalize(json_list, sep=_)

如果存在task列,则删除

if task in df.columns: df.drop(task, axis=1, inplace=True)

初始化分词器

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

步骤2: 删除响应少于100个token的指令

def filter_long_responses(row): response_tokens = tokenizer(row[targets], truncation=False)[input_ids] return len(response_tokens) >= 100

filtered_df = df[df.apply(filter_long_responses, axis=1)]

步骤3: 基于余弦相似度的数据去重

将输入和目标组合成单个字符串进行去重

filtered_df[combined] = filtered_df[inputs] + " " + filtered_df[targets]

使用TF-IDF向量化器进行余弦相似度计算

vectorizer = TfidfVectorizer().fit_transform(filtered_df[combined]) vectors = vectorizer.toarray()

计算余弦相似度矩阵

cosine_sim_matrix = cosine_similarity(vectors)

创建去重掩码(阈值>0.95)

threshold = 0.95 similar_pairs = np.argwhere(cosine_sim_matrix > threshold) to_remove = set()

for i, j in similar_pairs: if i != j and i not in to_remove and j not in to_remove: to_remove.add(j) # 删除重复项

删除重复项

indices_to_keep = [i for i in range(len(filtered_df)) if i not in to_remove] deduplicated_df = filtered_df.iloc[indices_to_keep]

步骤4: 将清洗后的数据集保存到本地

deduplicated_df.drop(columns=[combined], inplace=True) deduplicated_df.to_csv(/kaggle/working/cleaned_output.csv, index=False)

print("数据集已清洗并保存为CSV")

致谢

  • 原始数据集由SirNeural/flan_v2提供。
  • 使用的分词器:bert-base-uncased来自Hugging Face。
二维码
社区交流群
二维码
科研交流群
商业服务