文本数据清洗中的错误识别与修正方法

DryFish +0/-0 0 0 正常 2025-12-24T07:01:19 特征工程 · 数据预处理

文本数据清洗中的错误识别与修正方法

在大模型训练过程中,文本数据的质量直接影响模型性能。本文将分享常见的文本数据错误类型及其识别与修正方法。

常见错误类型

  1. 编码错误:包含乱码或不一致的字符编码
  2. 格式异常:行尾符不一致、多余空格等
  3. 结构错误:JSON格式不规范、字段缺失
  4. 重复数据:完全重复或语义重复的内容

实战步骤

1. 编码检测与修正

import chardet
import codecs

def detect_encoding(file_path):
    with open(file_path, 'rb') as f:
        raw_data = f.read()
        result = chardet.detect(raw_data)
        return result['encoding']

# 读取并重新编码
encoding = detect_encoding('data.txt')
data = open('data.txt', encoding=encoding).read()
with open('cleaned_data.txt', 'w', encoding='utf-8') as f:
    f.write(data)

2. 格式清理

import re

def clean_text(text):
    # 去除多余空格和特殊字符
    text = re.sub(r'\s+', ' ', text)  # 多个空白字符替换为单空格
    text = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]', '', text)  # 删除控制字符
    return text.strip()

3. 重复检测

# 使用哈希去重
import hashlib

def deduplicate(data):
    seen = set()
    unique_data = []
    for item in data:
        hash_value = hashlib.md5(item.encode()).hexdigest()
        if hash_value not in seen:
            seen.add(hash_value)
            unique_data.append(item)
    return unique_data

通过以上方法可有效提升文本数据质量,为大模型训练提供可靠的数据基础。

推广
广告位招租

讨论

0/2000
Bob137
Bob137 · 2026-01-08T10:24:58
编码问题确实容易被忽视,建议在清洗前先用chardet批量检测文件编码,再统一转为utf-8,避免模型训练时出现乱码。
Ruth207
Ruth207 · 2026-01-08T10:24:58
格式异常中行尾符不一致的问题很常见,可以结合os.linesep和正则统一替换为\n,提升数据一致性。
WiseBronze
WiseBronze · 2026-01-08T10:24:58
重复检测建议使用更智能的方法,比如用TF-IDF或BERT嵌入计算语义相似度,避免仅靠哈希误删语义相近但内容不同的样本。
GreenNose
GreenNose · 2026-01-08T10:24:58
实际项目中发现,结构错误如JSON字段缺失常导致训练中断,建议加个schema校验步骤,提前拦截不合规数据。
LazyLegend
LazyLegend · 2026-01-08T10:24:58
清洗脚本最好做成流水线形式,把编码检测、格式清理和去重逻辑封装成函数,方便复用与迭代优化