文本数据清洗流程自动化实现

SpicyXavier +0/-0 0 0 正常 2025-12-24T07:01:19 文本处理 · 数据清洗 · 大模型

文本数据清洗流程自动化实现

在大模型训练中,数据质量直接影响模型性能。本文将介绍一个可复现的文本数据清洗自动化流程。

核心清洗步骤

1. 数据预处理

import pandas as pd
import re

def clean_text(text):
    # 移除特殊字符和多余空格
    text = re.sub(r'[^\w\s]', '', text)
    text = re.sub(r'\s+', ' ', text).strip()
    return text

2. 去重处理

# 基于文本相似度去重
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def remove_duplicates(df, text_col, threshold=0.95):
    vectorizer = TfidfVectorizer()
    tfidf_matrix = vectorizer.fit_transform(df[text_col])
    similarity_matrix = cosine_similarity(tfidf_matrix)
    
    to_drop = []
    for i in range(len(similarity_matrix)):
        for j in range(i+1, len(similarity_matrix)):
            if similarity_matrix[i][j] > threshold:
                to_drop.append(j)
    return df.drop(to_drop).reset_index(drop=True)

3. 标准化处理

# 统一编码格式
import unicodedata

def normalize_text(text):
    # NFD标准化
    text = unicodedata.normalize('NFD', text)
    # 移除重音符号
    text = ''.join(c for c in text if not unicodedata.combining(c))
    return text

自动化脚本整合

将上述步骤封装为pipeline:

from functools import wraps

def data_pipeline(func):
    @wraps(func)
    def wrapper(df, *args, **kwargs):
        print(f"开始处理 {len(df)} 条记录")
        result = func(df, *args, **kwargs)
        print(f"处理完成,剩余 {len(result)} 条记录")
        return result
    return wrapper

@data_pipeline
def clean_dataset(df):
    df['cleaned_text'] = df['text'].apply(clean_text)
    df = remove_duplicates(df)
    df['normalized_text'] = df['cleaned_text'].apply(normalize_text)
    return df

此流程可有效提升数据质量,为后续特征工程奠定基础。

推广
广告位招租

讨论

0/2000
梦里水乡
梦里水乡 · 2026-01-08T10:24:58
清洗流程要先做数据探查,别急着动手。我见过太多项目直接上自动化脚本,结果发现数据分布根本不对,清洗逻辑全白搭。
风吹过的夏天
风吹过的夏天 · 2026-01-08T10:24:58
去重逻辑别只看相似度阈值,还要结合业务语境。比如评论区的‘好’‘棒’‘不错’这类高频词,可能不是重复而是表达差异。
奇迹创造者
奇迹创造者 · 2026-01-08T10:24:58
文本标准化建议加个编码检测环节,很多数据源混杂着gbk、utf-8等不同编码,不统一处理会出错。
FunnyFire
FunnyFire · 2026-01-08T10:24:58
别把所有清洗逻辑都塞进一个函数,拆成多个小模块。比如清洗+去重+标准化可以独立运行,便于调试和复用。
SourGhost
SourGhost · 2026-01-08T10:24:58
自动化脚本要加日志记录功能,不然跑完发现数据丢了都不知道在哪一步出的问题。
RichLion
RichLion · 2026-01-08T10:24:58
建议加入人工抽检机制。自动化处理后随机抽样几条人工核对,能及时发现清洗策略的偏差。
梦境旅人
梦境旅人 · 2026-01-08T10:24:58
不要忽视异常值处理。有些文本可能为空、全是符号或超长内容,这些需要特殊标记而不是直接删除。
NewUlysses
NewUlysses · 2026-01-08T10:24:58
可以把清洗流程做成配置文件驱动,不同项目只需改配置就行,不用每次都重新写代码。
RichSpirit
RichSpirit · 2026-01-08T10:24:58
考虑引入数据质量评估指标,在清洗前后对比,比如重复率下降了多少、有效文本占比提升了多少