通用文本数据处理算子
2021 字约 7 分钟
2025-06-09
概览
DataFlow目前支持的文本数据处理主要针对于数据点层面,可以分为以下三种类型,分别是数据改写器、数据去重器和数据过滤器。
类型 | 数量 | 描述 |
---|---|---|
数据改写器 | 16 | 通过数据处理、数据增强等方式改善数据点内容(不改变总数量) |
数据去重器 | 6 | 通过哈希等方法进行数据点去重 |
数据过滤器 | 42 | 通过设置阈值等方式过滤数据点 |
数据改写器
名称 | 适用类型 | 简介 | 官方仓库或论文 |
---|---|---|---|
CondorRefiner | SFT | 利用大模型API生成对SFT回复的评价并改写,提升QA对质量 | paper |
LowercaseRefiner | NLP | 将文本字段中的内容转换为小写 | - |
PIIAnonymizeRefiner | 预训练 | 通过识别和匿名化个人身份信息(PII),如姓名、位置等,来保护隐私 | Code |
RemovePunctuationRefiner | NLP | 移除文本中的标点符号 | - |
RemoveNumberRefiner | NLP | 移除文本中的数字字符 | - |
RemoveExtraSpacesRefiner | NLP、预训练 | 移除文本中的多余空格,将连续的多个空格替换为单个空格,并去除文本前后空格 | - |
RemoveRepetitionsPunctuationRefiner | NLP | 移除重复的标点符号,例如“!!!”变为“!” | - |
RemoveEmojiRefiner | 预训练 | 移除文本中的表情符号,例如"😀" | Code |
RemoveEmoticonsRefiner | 预训练 | 移除文本中的表情符号,例如“:‑)”,使用预定义的表情符号列表 | Code |
RemoveContractionsRefiner | NLP | 扩展文本中的缩写词(例如将“can't”扩展为“cannot”) | Code |
HtmlUrlRemoverRefiner | 预训练 | 移除文本中的URL和HTML标签 | - |
TextNormalizationRefiner | NLP | 规范化文本中的日期格式、货币格式等 | - |
NERRefiner | NLP | 使用命名实体识别(NER)技术识别并屏蔽文本中的特定实体 | Code |
StemmingLemmatizationRefiner | NLP | 对文本进行词干提取或词形还原 | Code |
SpellingCorrectionRefiner | NLP、预训练 | 通过SymSpell对文本中的拼写错误进行纠正 | Code |
RemoveStopwordsRefiner | NLP | 移除文本中的停用词(如“the”,“is”) | Code |
数据去重器
名称 | 类别 | 简介 | 官方仓库或论文 |
---|---|---|---|
HashDeduplicator | 精确去重 | 使用多种哈希函数(如MD5、SHA256、XXH3_128)对文本进行哈希处理,通过精确的比较哈希值来识别和移除重复数据,适用于小规模简单去重场景。 | - |
CCNetDeduplicator | 精确去重 | 基于SHA-1哈希算法的前64位进行比较,以识别重复文本。旨在平衡哈希安全性和计算效率。 | - |
NgramHashDeduplicator | 近似去重 | 结合n-gram技术与哈希算法,将文本分割为多个n-gram片段并分别进行哈希处理。通过多个哈希值的比较来识别相似或重复的文本,适用于处理具有细微差异的重复数据。 | Paper |
SemDeduplicator | 近似去重 | 基于BERT模型的语义相似度计算,通过生成文本的嵌入向量并计算余弦相似度来识别重复内容。适用于需要语义理解的高级去重场景,能够识别语义上相似但表述不同的文本。 | Paper Code |
SimHashDeduplicator | 近似去重 | 采用SimHash算法,通过生成文本的SimHash指纹并计算汉明距离来判断文本的相似度。适用于高效的相似文本检测,能够快速处理大规模数据集中的重复或相似文本。 | Paper |
MinHashDeduplicator | 近似去重 | 结合MinHash与LSH,通过将集合中的元素哈希成一个较小的签名(通常是一个固定长度的整数或比特串),从而以很小的内存占用和低计算成本比较两个集合之间的相似度。 | Paper |
数据过滤器
名称 | 适用类型 | 简介 | 官方仓库或论文 |
---|---|---|---|
LanguageFilter | 预训练、SFT | 使用fasttext语言识别模型过滤特定语言 | Huggingface |
BlocklistFilter | 预训练、SFT | 设置阈值,根据List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words屏蔽词表过滤数据点 | Code |
同时,作为配套工作,我们支持了Open-DataFlow-Eval文本数据评估模块中基于单个数据点打分器评分的过滤。共18种。
DeitaQualityFilter:
min_score: 1
max_score: 5
scorer_args:
device: 'cuda:0'
model_name: 'hkust-nlp/deita-quality-scorer'
max_length: 512
可通过设置需要保留的min/max
分数并在scorer_args
中设置打分器参数实现。
支持的打分器,详见评估算法文档(除Diversity部分)。
此外,启发式规则过滤在预训练数据的筛选方面占有很大的比重,在这一方面,Dingo数据质量评估工具对我们的开发带来了很大的启发。我们在dataflow/process/text/filters/heuristics.py
中整合了部分Dingo中使用的规则过滤算法,共22种。详见规则文档,过滤器名称可参考dataflow/process/text/filters/heuristics.py
文件。
需要说明的是,以上提到的42种数据过滤器具有相同的Yaml
调用方式。