更新时间:2026-01-07 GMT+08:00
分享

文本数据清洗

应用场景

在人工智能与大数据技术深度融合的当下,高质量文本数据是训练高性能模型、支撑业务决策的核心基础。然而,原始文本数据常存在格式混乱、冗余重复、敏感信息泄露、质量参差不齐等问题,严重影响模型训练效果与数据安全合规性。华为云盘古大模型提供的文本类加工算子,涵盖数据提取、转换、过滤、打标四大核心能力,为文本数据清洗提供了系统化解决方案。本文结合实际业务场景,从数据清洗全流程出发,梳理基于该算子体系的最佳实践,助力企业与开发者高效完成文本数据净化,为后续模型训练与业务应用奠定坚实基础。

约束限制

  • 数据导入:本教程使用“本地导入”的方式获取数据,单文件/压缩包最大不超过10MB。若超过10MB,需要使用OBS导入。

订购盘古大模型服务

  1. 使用主账户登录ModelArts Studio大模型开发平台,单击“立即订购”进入“订购”页面。
  2. 在“开发场景”中勾选NLP大模型。
    图1 NLP大模型

    开发场景为必选,如果不需要使用模型资源,不选择模型资源即可。

  3. 在“数据资源”中选择数据托管单元数据智算单元数据通算单元,并选择对应的计费模式、购买数量和购买时长,本案例均保持默认选项。
    图2 数据资源
    • 数据通算单元:适用于数据加工,用于正则类算子加工,支持常规数据加工与正则表达式计算,适用于数据处理的基础运算需求;
    • 数据智算单元:适用于数据加工,用于AI类算子加工,支持AI模型辅助处理,应用人工智能技术为数据加工提供支持;
    • 数据托管单元:适用于数据工程,用于存储数据集,依托OBS对象存储技术,提供数据集存储与管理服务,是数据工程的基础支撑组件。
  4. 单击“立即购买”,购买成功后即可使用平台。

数据清洗流程

在进行数据清洗之前需要用户提前做好数据准备。数据清洗的过程主要包括:数据提取数据转换数据过滤数据打标与质量评估。数据清洗完成后可以对数据进行清洗后的数据验收与迭代优化

  1. 数据准备

    数据准备需要考虑如下几点:

    • 数据来源与格式梳理:明确待清洗文本数据的来源(如文档库、网页爬取、用户问答记录等),统计数据格式分布(WORD、TXT、PDF、CSV、HTML、电子书等),参考华为云算子支持的数据集类型,确认各格式数据对应的处理算子匹配度,例如PDF需重点关注“PDF内容提取”算子的表格、公式提取能力,网页数据则优先关联“HTML内容提取”算子的标签路径配置。
    • 数据存储与路径配置:将原始文本数据按格式分类存储至华为云OBS(对象存储服务),并记录各数据集的OBS路径。针对“数据合并算子”、“自定义关键词过滤”等需读取外部数据的算子,提前配置OBS访问权限,确保算子能正常读取合并数据、关键词列表等辅助文件。
    • 清洗目标与合规要求明确:结合业务场景定义清洗目标,如“为SFT模型训练提供无重复、无敏感信息的问答数据”“为预训练任务筛选流畅度达标、无广告冗余的文本”;同时对标数据合规标准,明确敏感信息处理要求(如手机号、身份证号需脱敏)、违禁内容过滤边界(如涉政、色情文本需拦截),为后续算子选择提供依据。
  2. 数据提取:从多格式文件中获取结构化文本
    • 办公文档(WORD/TXT/CSV):对WORD文件使用“WORD内容提取”算子,保留目录、标题、正文结构,剔除图片、表格(非嵌套)、公式等非文本元素;TXT文件通过“TXT内容提取”算子,根据需求选择“全文提取”或“按段落提取”(配置分隔符如“\n”“。”);CSV文件针对问答类数据,用“CSV内容提取”算子按模板KEY值生成`{"context":"问题","target":"答案"}`格式的JSON数据,适配单轮问答数据集要求。
    • PDF与网页(PDF/HTML):PDF文件启用“PDF内容提取”算子的“精细化内容提取”功能,按需选择保留文本、表格、公式、标题,对扫描件类PDF可通过版面二次分析提升提取精度;HTML文件使用“HTML内容提取”算子,默认提取BODY标签内容,如需定向获取特定模块(如新闻正文),可自定义标签路径(如“div.article-content,p”),删除无关广告、导航标签内容。
    • 电子书(mobi/epub):直接调用“电子书内容提取”算子,无需额外配置,批量提取全文字符,适用于图书类预训练数据清洗。
    • 提取后校验与异常处理:对提取结果抽样检查,若出现文本截断(如PDF长文本未完整提取),需调整算子“提取范围”参数;若存在乱码(如HTML编码非UTF-8),通过“HTML内容提取”算子切换文件编码格式(如GB2312),确保提取文本完整性与可读性。
  3. 数据转换:标准化处理与敏感信息保护
    • 符号与编码统一:调用“符号标准化”算子,完成三大核心转换:将Unicode空格(U+00A0)转为标准空格(U+0020)、全角字符(如“123”)转为半角(“123”)、特殊标点(如“〖〗”)归一为通用格式(“[]”),数字符号(如“①”“⓪”)统一为“1.”“0.”,解决格式混乱导致的分词误差问题。
    • 日期时间与简繁统一:使用“日期时间格式转换”算子,自动识别文本中的“2025年3月3号”“周一”等表述,统一转为“2025-03-03”“星期一”“HH:MM:SS”格式;对港澳台地区繁体文本,通过“中文简繁互转”算子实现“繁体转简体”(默认),确保文本语言一致性。
    • 自定义正则修复:针对特定格式问题(如PDF页眉页脚残留、参考文献前缀),用“自定义正则替换”算子批量处理,例如用`\n参考文献[\s\S]*`删除“参考文献”及后续内容,用`[\s\S]{0,10000}0 引言`保留“0 引言”后的有效知识内容。
    • 敏感信息脱敏与隐私保护:启动“个人数据脱敏”算子,默认勾选手机号码、身份证件、邮箱、URL、车牌号、IP地址等敏感项,按业务需求选择“脱敏替换”(如手机号转为“138****5678”)或“直接删除”;对医疗、金融等场景的高敏感数据(如病历中的车架号、护照号),需额外校验脱敏效果,避免隐私泄露风险。
  4. 数据过滤:剔除低质量与冗余数据
    • 异常与低质量数据过滤:
      • 异常字符清除:调用“异常字符过滤”算子,批量删除不可见字符(U+0000-U+001F)、表情符(如“”)、网页标签(如`<style></style>`)、特殊符号(如“● █”)、乱码(如“�����”),避免此类字符干扰模型分词与语义理解。
      • 长度与质量阈值控制:用“文本长度过滤”算子设置合理长度范围(如预训练文本保留100-10000字符,避免过短无意义文本、过长冗余文本);通过“句子特征过滤”(平均句长≥10字符)、“词语特征过滤”(词个数50-100000、平均词长度≥2字符),剔除句子破碎、词汇量不足的低质量文本。
      • 冗余信息剔除:启用“冗余信息过滤”算子,按段落粒度删除图注表注(如“图1 设备结构示意图”)、参考文献(如“[1] 作者. 文章名[J]. 期刊, 2025.”);对含广告内容的文本,用“广告数据移除”算子按句子粒度删除“全场5折”“点击链接购买”等广告语句,用“广告文本检测算子”辅助校验广告过滤完整性。
    • 重复数据去重:
      • 精确与相似去重结合:先用“全局文本去重”算子删除完全重复或高度相似的文档(如重复上传的WORD文件);再对问答类数据,用“问答对去重”算子按“问题+回复”字段,通过n-gram特征(默认n=1)与相似度阈值(默认0.7)过滤相似问答对(如“卡波姆眼用凝胶治什么病?”与“卡波姆眼用凝胶用于哪些眼部疾病?”);对语义相似但表述不同的文本,启用“Embedding相似去重”算子,基于文本Embedding相似度(阈值0.2)去重,减少重复数据对模型泛化性的影响。
      • 去重后数据保留策略:对相似数据组,按“特征保留依据字段”(如text字段长度)保留最长记录,确保去重后数据的信息完整性。
      • 合规与安全过滤:调用“敏感词过滤”算子,基于预置敏感词库过滤黄色、暴力、政治敏感内容;用“违禁文本检测算子”“涉政文本检测算子”“色情文本检测算子”等打标类算子,对文本进行合规性检测,将“suggestion: block”的违规文本直接剔除;对多语种混合数据,用“语种过滤”算子保留目标语种(如中文),删除非目标语种文本(如英文、日语),避免语种混乱影响模型训练。
  5. 数据打标与质量评估:筛选高价值数据
    • SFT数据质量评估:针对单轮问答、问答排序类SFT数据,用“SFT通用语义质量评分”算子(基于Pangu-NLP模型)从语义准确性、逻辑连贯性等维度打分(0-10分),过滤评分低于阈值(如6分)的数据;用“SFT思维链质量评分”算子评估思维链完整性与合理性,对“score<6”的样本进行剔除或人工修正;通过“SFT规则质检过滤”算子,检查数据是否存在“中英文混杂”“括号不对齐”“数学答案不正确”等问题,确保SFT数据符合训练标准。
    • 通用质量与分类打标:对预训练文本,用“通用质量评估”算子从流畅度、丰富度、教育价值等维度打分(1-5分),保留“综合得分≥4”的文本;用“预训练文本分类”、“文本分类标签v2算子”对文本按行业(如金融、医疗、教育)、主题(如汽车、体育、肿瘤学)分类,为后续分领域模型训练提供标签支持;对泛理科数据(如金融报表分析、医疗技术研究),用“泛理科文本检测算子”标注“行业类别”与“是否为理科数据”,便于定向筛选理科领域训练数据。
    • 时效性与回答质量校验:对含时间维度的问题(如“2025年中国GDP是多少?”),用“问题时效性评估”算子标注是否具有时效性(1=有,0=无),为模型处理时效性问题提供依据;对问答数据的回复,用“回答质量评分”算子从事实正确性、满足用户需求、完备性等维度打分(0-10分),过滤“综合得分<8”的低质量回复;用“语法质量评估”算子检查回复是否存在“事实错误”“语言不规范”等问题,确保问答数据的高质量。
  6. 清洗后的数据验收与迭代优化
    • 清洗后数据验收标准与流程
      • 验收指标定义:明确数据验收的核心指标,包括:数据完整性(提取成功率≥98%)、格式标准化率(符号/日期/简繁统一率≥99%)、敏感信息脱敏率(100%)、重复数据去除率(重复率≤1%)、合规性(违规文本剔除率100%)、质量达标率(SFT数据评分≥6分占比≥90%,预训练文本综合得分≥4分占比≥85%)。
      • 验收流程落地:采用“抽样检查+全量统计”结合的方式,先对各格式、各场景数据按10%比例抽样,人工校验清洗效果(如敏感信息是否脱敏、重复数据是否去除);再通过华为云算子的统计功能,全量计算验收指标(如“全局文本去重”算子输出的去重后数据量、“敏感词过滤”算子的过滤数据量),若指标不达标,回溯至对应清洗环节优化算子参数(如调整“Embedding相似去重”的相似度阈值)。
    • 清洗流程的迭代优化
      • 场景化优化案例:针对医疗文本清洗,需额外配置“泛理科文本检测算子”的医疗行业模型,提升行业分类准确率;针对金融问答数据,需在“自定义关键词过滤”中导入金融领域特殊关键词(如“内幕交易”“非法集资”),强化合规过滤;针对古籍繁体文本,需将“中文简繁互转”算子的转换方式改为“简体转繁体”,避免语义丢失。
      • 算子组合策略优化:根据数据特点调整算子执行顺序,例如:对含广告的PDF数据,先执行“PDF内容提取”,再用“广告数据移除”,最后进行“全局文本去重”;对SFT问答数据,先“问答对去重”,再“SFT通用语义质量评分”,减少无效评分计算;定期总结高频问题(如某类PDF提取乱码),形成算子参数配置模板,提升清洗效率。

典型业务场景清洗实践案例

  1. SFT微调数据清洗案例(问答类)
    • 场景需求:为盘古大模型SFT训练提供“医疗领域单轮问答数据”,将提供的文本转化成QA数据,并过滤掉回答为空、无意义的QA对,要求无敏感信息、无重复。
    • 数据导入:
      • 登录ModelArts Studio大模型开发平台,在“我的空间”模块,单击空间名称进入操作空间。
        图3 我的空间
      • 在左侧导航栏中选择“数据工程 > 数据获取 > 导入任务”,单击界面右上角“创建导入任务”。
      • 在“创建导入任务”页面,选择“数据集类型”和“文件格式”。此案例中“数据集类型”“文本”“文件格式”“jsonl”
        图4 创建导入任务
      • 导入来源选择“本地上传”,单击“添加文件”,选择需要导入的文件。

        图2 本地上传

      • 填写“数据集名称”和“描述”,可选择填写“扩展信息”。

        扩展信息包括“数据集属性”与“数据集版权”:

        数据集属性。可以给数据集添加行业、语言和自定义信息。

        数据集版权。训练模型的数据集除用户自行构建外,也可能会使用开源的数据集。数据集版权功能主要用于记录和管理数据集的版权信息,确保数据的使用合法合规,并清晰地了解数据集的来源和相关的版权授权。通过填写这些信息,可以追溯数据的来源,明确数据使用的限制和许可,从而保护数据版权并避免版权纠纷。

      • 单击页面右下角“立即创建”,回退至“导入任务”页面,在该页面可以查看数据集的任务状态,若状态为“运行成功”,则数据导入成功。
      • 导入后的数据集可在“数据工程 > 数据管理 > 数据集 > 原始数据集”中查看。
        如果任务状态为“运行失败”,可能由以下原因导致:
        • 文件后缀校验不通过,需要检查文件后缀是否一致。例如,选择创建csv格式的数据集时,文件后缀应为“.csv”。
        • 文件内容校验不通过,需要检查上传的文件数据格式是否正确。可以在“创建导入任务”页面下载数据样例进行比对。
    • 清洗流程:
      • 在左侧导航栏中选择“数据工程 > 数据加工 > 加工任务”,单击界面右上角“创建加工任务”。
      • 在“创建加工任务”页面,选择需要加工的文本类数据集,单击“下一步”。
        图5 选择数据集

      • 在算子编排界面添加算子:

        用“文本生成QA算子”将医疗JSONL数据转化为`{"context":"问题","target":"回复"}`格式数据;

        用“个人数据脱敏”算子,脱敏患者身份证号、手机号、病历号;

        用“QA对过滤”算子,过滤问题不是string格式、回答为空、回答无意义的QA对;

        用“问答对去重”算子(n-gram=1,相似度阈值=0.7)过滤相似问答对;

        图6 添加算子

      • 加工步骤编排完成后,单击“下一步”进入“任务配置界面”,保持默认值即可。
      • 单击“启动加工”后,启动加工任务。当数据加工任务运行成功后,状态将从“运行中”变为“运行成功”,表示数据已经完成加工。
      • 在完成数据加工后,如果无需使用数据标注、数据合成功能,可直接在“加工任务”页面单击操作列“生成”,生成加工数据集。
        • 加工后的数据集可在“数据工程 > 数据管理 > 数据集 > 加工数据集”中查看。
  2. 预训练模型文本清洗案例(文档类)
    • 场景需求:为预训练模型筛选“中文科技类预训练数据”,要求无冗余、语言流畅。
    • 数据导入:参考SFT微调数据清洗案例中的数据导入操作导入“预训练文本”数据即可。
      图7 创建导入任务

    • 清洗流程:
      • 在左侧导航栏中选择“数据工程 > 数据加工 > 加工任务”,单击界面右上角“创建加工任务”。
      • 在“创建加工任务”页面,选择需要加工的文本类数据集,单击“下一步”。
        图8 选择数据集
      • 在算子编排界面添加算子:

        调用“符号标准化”算子统一数字符号与标点;

        用“冗余信息过滤”算子删除图注与参考文献;

        用“全局文本去重”和“Embedding相似去重”(阈值=0.3)双重去重;

        通过“预训练文本分类”算子筛选“科技”类别文本;

        图9 添加算子
      • 加工步骤编排完成后,单击“下一步”进入“任务配置界面”,保持默认值即可。
      • 单击“启动加工”后,启动加工任务。当数据加工任务运行成功后,状态将从“运行中”变为“运行成功”,表示数据已经完成加工。
      • 在完成数据加工后,如果无需使用数据标注、数据合成功能,可直接在“加工任务”页面单击操作列“生成”,生成加工数据集。
        • 加工后的数据集可在“数据工程 > 数据管理 > 数据集 > 加工数据集”中查看。

相关文档