BERT预训练数据质量评估指标详解
在大模型训练中,数据质量直接影响模型性能。本文将详细介绍BERT预训练数据的质量评估关键指标。
核心评估指标
1. 词汇覆盖率
计算文本中未登录词(UNKNOW)的比例,理想值应低于5%。
import numpy as np
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
def calculate_unk_rate(texts):
unk_count = 0
total_tokens = 0
for text in texts:
tokens = tokenizer.tokenize(text)
total_tokens += len(tokens)
unk_count += tokens.count('[UNK]')
return unk_count / total_tokens if total_tokens > 0 else 0
2. 文本长度分布
使用BERT时,建议文本长度控制在512以内。
import matplotlib.pyplot as plt
lengths = [len(tokenizer.encode(text)) for text in texts]
plt.hist(lengths, bins=50)
plt.xlabel('Token Length')
plt.ylabel('Frequency')
3. 语义一致性检查
通过计算句子间相似度评估数据一致性。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')
embeddings = model.encode(texts)
cosine_sim = np.dot(embeddings, embeddings.T) / (
np.linalg.norm(embeddings, axis=1, keepdims=True) *
np.linalg.norm(embeddings, axis=1, keepdims=True).T
)
数据清洗建议
- 过滤长度异常的文本
- 去除重复数据
- 保持语义连贯性
通过这些指标,可有效提升BERT预训练数据质量。

讨论