大模型训练中的数据清洗流程
在大模型微调过程中,数据质量直接决定了模型性能。本文将分享一套可复现的数据清洗流程,帮助ML工程师构建高质量训练数据集。
数据清洗核心步骤
1. 噪声数据检测 使用文本相似度计算检测重复内容:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
def detect_duplicates(texts, threshold=0.95):
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(texts)
similarity_matrix = cosine_similarity(tfidf_matrix)
duplicates = []
for i in range(len(similarity_matrix)):
for j in range(i+1, len(similarity_matrix)):
if similarity_matrix[i][j] > threshold:
duplicates.append((i, j))
return duplicates
2. 质量过滤 根据文本长度、词汇多样性等指标过滤低质量数据:
import re
def quality_filter(texts, min_length=10, max_length=1000):
filtered_texts = []
for text in texts:
# 过滤过短或过长文本
if len(text) < min_length or len(text) > max_length:
continue
# 检查是否包含有效字符
if re.search(r'[a-zA-Z]', text):
filtered_texts.append(text)
return filtered_texts
3. 标注一致性检查 对于有标注的数据集,验证标签一致性:
from collections import Counter
def check_label_consistency(labels):
label_counts = Counter(labels)
most_common = label_counts.most_common(1)
if most_common and most_common[0][1] > len(labels) * 0.8:
print(f"标签一致性高: {most_common[0][0]}")
else:
print("标签分布不均,需重新标注")
实践建议
- 建议采用多轮清洗策略
- 保留清洗日志便于回溯
- 结合领域专家进行人工抽检
该流程已在多个开源项目中验证有效,可直接复用到生产环境。

讨论