KameshRsk/flan_cot
收藏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
数据处理与清洗
数据集的处理和清洗步骤如下:
-
合并JSONL文件:
- 原始数据集包含四个独立的JSONL文件:
cot_fs_noopt_train.jsonlcot_fs_opt_train.jsonlcot_zs_noopt_train.jsonlcot_zs_opt_train.jsonl
- 这些文件被合并成一个名为
cot_fs_noopt_train.jsonl的文件。
- 原始数据集包含四个独立的JSONL文件:
-
过滤短响应的指令:
- 删除响应少于100个token的指令。
- 使用
bert-base-uncased分词器计算token数量。
-
基于余弦相似度的数据去重:
- 使用输入和目标的组合文本识别并删除重复条目。
- 使用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。



